我看过很多其他线程有类似的问题,但没有找到适用于我的场景的任何解决方案。
我有一个Centos服务器,我试图让Gettext运行。我的问题是,无论如何,gettext方法总是返回英文翻译,它也是.po文件中的密钥。
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
$config['language_dir'] = '/var/www/.../.../application/languages';
我可以在设置确认一切正常后回显上述环境变量。我还确认了language目录的路径是正确的并且存在。
languages目录具有以下结构:
if ($this->config->item('language_dir') != '' && function_exists("gettext")) {
$domain = "messages";
$lang = "es_ES";
putenv("LC_ALL={$lang}");
setlocale(LC_ALL, $lang);
bindtextdomain($domain, $this->config->item('language_dir'));
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
echo gettext('translate');
echo _('translate');
}
我的.po文件:
es_ES/LC_MESSAGES/
messages.po
messages.mo
当我运行“locale -a | grep es_ES”时,我得到:
msgid ""
msgstr ""
"Project-Id-Version: es_ES 0.1.0\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es_ES\n"
msgid "translate"
msgstr "lalalala"
另外,我正在运行PHP 5.4,带有Codeigniter。任何帮助将不胜感激!