我的 php 项目中有下一个文件:
libraries/locale/es_ES/LC_MESSAGES/messages.po
libraries/locale/es_ES/LC_MESSAGES/messages.mo
libraries/locale/es/LC_MESSAGES/messages.po
libraries/locale/es/LC_MESSAGES/messages.mo
两者都是用 PoEdit 编辑的同一个文件,只是目录->属性->语言不同(分别为 es 和 es_ES)
并将这段代码放入localization.php文件
$language = "es_ES.UTF-8";
putenv("LANG=$language");
setlocale(LC_ALL, $language);
bindtextdomain(STRING_DOMAIN, LOCALE_PATH);
textdomain(STRING_DOMAIN);
echo "Test translation: "._('string to translate');
此代码工作正常,并且“要翻译的字符串”正确显示。但是,如果我尝试使用通用的“es”代码:
$language = "es.UTF-8";
...字符串未翻译。似乎与我的 ubuntu 中安装的语言环境有关(es_ES.utf8 存在但不存在 es.utf8)
我可以强制 gettext 使用 es.UTF-8 文件吗?