El rendimiento es la razón principal. Gettext no está utilizando una base de datos porque una base de datos siempre será considerablemente más lenta que un archivo. El tiempo de carga del diccionario es muy importante y por esta razón casi todo el mundo está usando archivos para eso.
Además, los archivos gettext compilados (.mo
) están optimizados para cargarse en la memoria y por esta razón son más apropiados que los archivos de texto sin formato (como los archivos .po
no compilados).
Siempre puede utilizar la plataforma de traducción, probablemente que utiliza un servidor de base de datos, para haciendo la traducción y exportar los resultados a archivos de texto.Ejemplos: Pootle, Narro, Launchpad Rosetta, Transifex (hosted only).
No confunda sus archivos de idioma de la aplicación con la base de datos de localización. Su aplicación debe usar diccionarios basados en archivos que son rápidos de cargar y su sistema de localización probablemente tendrá que usar una base de datos y lógicamente podrá exportar datos a los archivos.
Por cierto, usar gettext
es probablemente la mejor decisión tecnológica que pueda tomar con respecto a la localización. Nunca he visto ninguna solución comercial o desarrollada internamente para poder competir con ella en características, herramientas e incluso soporte.
"una base de datos siempre será considerablemente más lenta que un archivo" [citation-needed] - esp. para las tablas en memoria y un disco ocupado por IO, esto tiende a ser falso. – Piskvor
Olvidaste tener en cuenta que este archivo también se puede cargar en la memoria. Y el archivo '.mo' es especialmente mejor porque ya contiene la tabla hash, de modo que ni siquiera tiene que manipular las cadenas cuando lo carga. – sorin