El sistema gettext hace eco de cadenas de un conjunto de archivos binarios que se crean a partir de archivos de texto fuente que contienen las traducciones en diferentes idiomas para la misma oración.
La clave de búsqueda es la oración en un idioma "base".
en el código fuente va a tener algo como
echo _("Hello, world!");
para cada idioma tendrá un archivo de texto correspondiente con la llave y la versión traducida (nótese el s% que se puede utilizar con las funciones printf)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
Estos son los principales pasos que tiene que ir a través de la creación de sus localizaciones
- toda su salida de texto debe utilizar las funciones de gettext (gettext(), ngettext(), _())
- uso xgettext (* nix) para analizar sus archivos php y crear el archivo de texto .po base de
- uso poedit a añadir textos de traducción para los archivos .po
- uso msgfmt (* nix) para crear el archivo .mo binaria del archivo .po
- poner los archivos .mo en una estructura de directorios como
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/en_EN/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
entonces script php debe establecer la configuración regional que es necesario utilizar
El ejemplo de la php manual es muy claro para esa parte
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
siempre desde el manual de PHP vistazo here para un buen tutorial
Pero lo anterior El ejemplo del manual PHP no parece traducir la cadena dada. ¿Hay algo más que ver con el ejemplo? –