[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problemas al traduicir una web con gettext y UTF-8



Estoy traduciendo una web del Inglés al español. Para ello he usado gettext,
pero tengo problemas con la codificación UTF-8.

El problema es que todas las páginas traducidas con gettext se declaran a
sí mismas como UTF-8 pero en realidad las frases generadas son iso-8859-1 (latin-1).
He llegado a esta conclusión forzando la codificación tanto en Firefox como en mi editor de textos.
En ambos, se selecciona de forma automática la codificación UTF-8 pero en vez de los
caracteres especiales se muestran cuadros. Si fuerzo la codificación a iso-8859-1 los caracteres se
muestran correctamente.

Las partes de las páginas web que no han sido traducidas mediante gettext
se muestran bien en UTF-8, por lo que deduzco que es un problema de gettext.

La pregunta es: ¿Por qué msgfmt genera el archivo .mo en iso-8859-1 y no en UTF-8?
¿como puedo forzarlo para que genere el archivo binario en UTF-8?

Por si ayuda, estas son las precauciones que he tomado para asegurame compatibilidad con UTF-8:

    * Todos mis archivos de fuentes (*.php) están en UTF-8.
    * APACHE está configurado para usar UTF-8 por defecto (AddDefaultCharset UTF-8)
    * Mi archivo con las frases traducidas (.po) está en UTF-8:
      # file locale/es_ES/messages.po
       locale/es_ES/messages.po: UTF-8 Unicode PO (gettext message catalogue) text

    * He indicado en la cabecerda del archivo con las frases traducidas (.po) que el texto se encuentra en UTF-8:
      # grep charset locale/es_ES/messages.po
      "Content-Type: text/plain; charset=UTF-8\n"

Y estos son los comandos que he usado para generar los archivos .pot, .po y .mo:
# mkdir -p locale/es_ES/LC_MESSAGES/
# xgettext --indent --no-wrap --sort-by-file --from-code=UTF-8 --output locale/messages.pot *.php
# cp locale/messages.pot locale/es_ES/messages.po
# msgfmt --verbose --output-file locale/es_ES/LC_MESSAGES/messages.mo locale/es_ES/messages.po

Gracias de antemano.

Un saludo



Reply to: