我的项目中有一个翻译库,我正在尝试显示一些翻译,但似乎无法使gettext正常工作。
当前结构如下:
Project
test.php
translations
iso-3166-1
ja.po
因此,在Project / translations / iso-3166-1内存储了所有.po文件。
在test.php中,我得到了:
<?php
$locale = "ja";
$dir = "translations";
putenv("LANGUAGE=$locale");
bindtextdomain("iso-3166-1", $dir);
textdomain("iso-3166-1");
echo gettext("Australia")."\n";
但是,无论我尝试什么,它似乎都不会显示任何翻译。使用此方法不应该能够在我提供的路径中查找翻译。.我已经阅读了几次文档,但是似乎找不到任何解决方法。
答案 0 :(得分:0)
环境变量LANGUAGE
可以保存语言的优先级列表,例如ja:fr:es
,但是在您的情况下,LANG
仍必须将环境变量ja
设置为主要语言1}}。
但是其余的设置也看起来不正确:
translations/ja/LC_MESSAGES
中。.mo
个文件中读取翻译。您必须使用程序ja.po
将ja.mo
编译成msgfmt
,然后将(!)安装为translations/ja/LC_MESSAGES/iso-3166-1.mo
。
setlocale(LC_ALL, 'ja')
的呼叫。然后,您也不需要修改环境变量。本教程可能会帮助您入门:https://www.codeandweb.com/babeledit/tutorials/translation-with-gettext-and-php