2012-08-15 34 views
6

Actualmente estoy desarrollando una aplicación web PHP que debe estar disponible en francés e inglés. Miré a mi alrededor y descubrí que la funcionalidad Gettext() ofrece el mejor rendimiento.Internacionalización de aplicaciones web Php con Gettext();

me genera mi archivo .pot con el comando

xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot 

y generó exitosamente un archivo .pot. he usado para generar PoEdit archivo messages.po y crearon messages.mo

Éstos son mis archivos del servidor:

/app 
    /locale 
     /en_US 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     /fr_FR 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     template.pot 

Y i establecer la configuración regional en el archivo php como esta:

$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8' 
setlocale(LC_ALL, $language); 
bindtextdomain('messages', './locale'); 
textdomain('messages'); 

pero solo veo la etiqueta y no la traducción ... He intentado poner 'fr_FR' en lugar de 'fr_FR.UTF-8' y todo tipo de cadenas, pero no está funcionando.

¿Echo de menos algo? Mi servidor es Ubuntu 12.04 Servidor con Apache y php5

Respuesta

7

Para compilar sus archivos .mo en Linux necesita tener las configuraciones regionales instaladas en el servidor y en la máquina que lo compila. Los entornos locales son los idiomas admitidos por su sistema operativo.

Como se indica en este tutorial: http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ Compruebe que ha instalado las localizaciones en su Linux

Asegúrese de que los lugares que desea utilizar están instalados en su Linux y que utilizan el .UTF-8 (desea i18n así que por favor utilice UTF):

# Example for debian 
dpkg-reconfigure locales 

- Para instalar nuevos lugares en Linux

Lista de las lenguas realidad instalados en su sistema:

locale -a 

Ejemplo instalar fr_FR:

#List the available i18n locales 
less /usr/share/i18n/SUPPORTED 

Instalar la configuración regional (aquí fr_FR.utf8)

locale-gen fr_FR.utf8 

Reconfigurar los locales en su sistema

sudo dpkg-reconfigure locales 

recompilar su archivo .mo con PoEdit y eso debería hacer truco. Asegúrate de instalar configuraciones regionales tanto en el servidor como en tu máquina compilando archivos .mo.

Espero que ayude

+1

De hecho, no tuve fr_FR.utf8 instalar en mi computadora y en mi servidor ... ¡Ahora funciona! Muchas gracias por la ayuda. –

0

Además de lo que dijo Bruno, no se olvide de recargar la configuración de Apache (por ejemplo, el servicio de recarga apache2). Perdí un tiempo buscando por qué no funcionaba, solo para encontrar que la configuración de Apache debe volver a cargarse una vez que se instaló el nuevo idioma/configuración regional.

Cuestiones relacionadas