Nos usar gettext las traducciones de nuestro producto, pero han tenido muchos problemas con él:Los reemplazos de gettext
- No se puede utilizar un lenguaje a menos que el sistema lo soporta.
En Solaris 9 Sparc, si reiniciamos el entorno a varias configuraciones regionales en inglés, el mensaje aún no se traducirá, si la máquina no tiene la configuración regional correspondiente. El archivo de traducción está presente, pero no podemos acceder a él.
- Usos entorno para trabajar el lenguaje
Esto causa problemas en los servidores que quieren traducir los mensajes en diferentes idiomas. En teoría, esta podría ser una operación totalmente paralela y segura para subprocesos, pero gettext significa que debemos tener un bloqueo global en torno a la traducción.
- No se puede establecer un idioma por defecto
Con esto no quiero decir el texto en el código. Usamos MsgID en el código, por lo que lo que quiero es poder especificar una traducción alternativa a la que ir, si el entorno actual define el idioma no está disponible. Pero gettext no lo permite: tengo que intentarlo, luego restablecer el entorno antes de que ordene mirar una traducción diferente. (Usando MsgIDs no era mi elección - que quería seguir los estándares de gettext y el uso de Inglés como las identificaciones, pero fue invalidado, y sería mucho trabajo para cambiar ahora)
- Codificación de la SE devuelto varían entre UTF-8 y la codificación local actual.
No me refiero a los archivos .po - están todos en UTF-8 (molesto porque msgfmt no maneja la lista de materiales, pero lo que sea). Me refiero a la salida de gettext ngettext, etc., que están en UTF-8 (independientemente de la codificación local/terminal) en AIX y HPUX, pero la codificación local en Solaris/Linux/FreeBSD, aunque eso podría deberse a problemas de iconv.
En cualquier caso, sería bueno no tener que tener un código especial para diferentes plataformas - Tendré que investigar si puedo obtener bind_textdomain_codeset(domain,codepage);
para ayudar a evitar este problema.
¿Alguien sabe de una biblioteca de traducción de código abierto que proporciona una interfaz más útil?
no hubiera ver cosas traducción UCI antes - Me pareció que era simplemente la conversión de codificaciones ... sin duda interesante, ya que Creo que la UCI podría convertirse en una dependencia nuestra en algún momento de todos modos. –
sobre la dependencia del sistema de gettext - p. No se puede traducir un mensaje al japonés a menos que se admita la configuración regional del sistema ja_JP.UTF-8, incluso si se está ejecutando en un sistema UTF-8, y es muy posible que pueda mostrar japonés. –
O incluso un servidor que desea generar japonés, p. Ej.para un correo electrónico, requiere que la configuración regional esté disponible solo para obtener un mensaje de traducción. –