Proyectos PHP multidioma: cómo gestionar varios idiomas
(2 min. de lectura) Una manera sencilla de tener un proyecto php en varios idiomas es usando las funciones gettext lo que se denomina i18n que significa internacionalización y localización, que es poder usar varios idiomas sin tener que cambiar el código por cada idioma ya que los literales están seprados del código. Voy a intentar explicarlo de una manera sencilla:Primero habrá que hacer los ficheros con los textos en los idiomas que se vayan a usar en la web. En este caso se usan ficheros con extension "po",dichos ficheros se pueden editar con la aplicación PoEdit. Estos ficheros hay que crearlos en la carpeta locale/es_ES/messages.po. Los mensajes tienen que ser escritos de la siguiente manera:
msgid "Nombre"
msgstr "Name"
msgid "buenos_dias"
msgstr "Good morning"
Fijaos que en la ruta del fichero con los literales del directorio "locale" cuelga el directorio "es_ES" que es el idioma que se ha definido para usar en la web. Si se quiere añadir el inglés americano la ruta sería locale/en_US/messages.po.
El siguiente paso es separar los literales del código para tener el mismo código para todos los idiomas y no tener que duplicar nada. Hay que usar la función gettext:
//Para inglés
echo gettext("Nombre"); // mostaría el texto Name
echo _("Nombre"); // Es un alias de la función gettext
//Para español
echo gettext("Nombre"); // mostaría el texto Nombre
echo _("Nombre");
putenv("LC_ALL=es_ES");
setlocale(LC_ALL, $language);