Pergunta

Eu criei um arquivo de idioma em poedit para o uso da função PHP gettext, agora na página Estou tentando testá-lo, eu não posso obtê-lo para encontrar / carregar o .po ou .mo arquivo que eu criei, alguém vê o que estou fazendo de errado?

$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

Mesmo que eu estou tentando carregar o arquivo de Inglês lang padrão, eu mudei algum texto no arquivo para se certificar de que está lendo de um arquivo de idioma e atualmente só está mostrando o texto padrão e não fazer uma tradução, I acho que tenho o caminho errado possivelmente

Foi útil?

Solução

Eu finalmente consegui-lo para o trabalho, eu estou postando aqui para que talvez ele possa ajudar alguém, ele é um pouco confuso a maneira como ele está documentado que eu penso.

Vou usar FR para francês para esta demonstração

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

Na função bindtextdomain acima, o primeiro param é o nome do arquivo de idioma .po menos a extensão. O segundo parâmetro é o caminho para a pasta, este é o lugar onde é fica um pouco / complicada situação irregular ... Na pasta que definir aqui você tem que criar uma pasta para cada idioma com o seu 2 do país dígitos, em seguida, dentro deste código de país pasta que eu tinha para adicionar esta pasta com o nome LC_MESSAGES , LC_MESSAGES interior é onde o arquivo default.po vai.

Esta foi a única maneira que eu poderia obtê-lo para o trabalho, tipo de confundir uma vez que o caminho para a pasta lang não menciona nada sobre a parte em negrito aqui:

langfolder / fr_FR / LC_MESSAGES /default.po

Ainda é no entanto muito estranho, obras default.po para mim, mas se eu mudar para outra coisa no código acima e em seguida, mudar o nome do arquivo do .po e .mo para coincidir com ele deixará de trabalho, só funciona com nome default para mim, eu estou começando a pensar que talvez gettext faz algum tipo de nos bastidores cache

Outras dicas

Eu suspeito que é o seu caminho.

é "/ includes / locale" o diretório correto em seu host? Ou isso é relativa a alguma coisa? Nota: é necessário o caminho completo, não em relação ao seu diretório home ou o diretório de instalação. de modo que poderia ser algo como:

  • C: / xampp / htdocs / include / locale
  • / var / www / include / locale
  • / home / username / include / locale
  • etc

O que é o diretório completo onde ele é encontrado?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top