Pregunta

He creado un archivo de idioma en poedit para el uso de la función de PHP gettext, ahora en la página que estoy tratando de probarlo en, no puedo conseguirlo para encontrar / cargar el archivo .po o .mo creé, ¿alguien ver lo que estoy haciendo mal?

$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

//my .po ad .mo file is located here /includes/locale/en/default.mo

A pesar de que estoy tratando de cargar el archivo de Inglés lang por defecto, he cambiado un poco de texto en el archivo para asegurarse de que está leyendo un archivo de idioma y actualmente sólo está mostrando el texto predeterminado y no hacer una traducción, me creo que tengo el camino equivocado, posiblemente

¿Fue útil?

Solución

Finalmente tengo que trabajar, estoy publicando aquí así que tal vez puedo ayudar a alguien más, se está confundiendo un poco la forma en que se documenta que pienso.

Voy a utilizar FR para francés para este demo

$locale = "fr_fr";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

En el Función bindtextdomain anterior, el primer parámetro es el nombre del archivo de idioma .po menos la extensión. El segundo parámetro es la ruta de la carpeta, aquí es donde se pone un poco difícil / indocumentado ... En la carpeta que establecer aquí se tiene que crear una carpeta para cada idioma con el que es el código de país de 2 dígitos, a continuación, dentro de este código de país carpeta que tenía que agregar esta carpeta con el nombre LC_MESSAGES , en el interior LC_MESSAGES es donde su archivo default.po va.

Esta era la única manera de que pudiera conseguir que funcione, un poco confuso ya que la ruta de la carpeta lang no menciona nada sobre la parte en negrita aquí:

  

langfolder / fr_FR / LC_MESSAGES /default.po

Todavía es muy extraño, sin embargo, default.po funciona para mí, pero si lo cambio a otra cosa en el código anterior y cambie el nombre del archivo del .po y .mo archivos a su altura ya no funcionará, sólo funciona con nombre default para mí, estoy empezando a pensar que quizás gettext hace una especie de detrás de la caché de escenas

Otros consejos

Sospecho que es su camino.

Es "/ includes / locale" el directorio correcto en el host? ¿O es que en relación con algo? Nota: se necesita la ruta completa, no relativa a su directorio o el directorio de instalación. por lo que podría ser algo como:

  • C: / xampp / htdocs / include / locale
  • / var / www / incluir / locale
  • / home / usuario / include / locale
  • etc.

¿Qué es el directorio completo en el que se encuentra?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top