从shell运行时,PHP gettext以错误的语言翻译

时间:2013-08-31 18:36:07

标签: php shell cron gettext

我有一个完整的PHP应用程序,带有MySQL。

所有字符串都使用gettext,我有2种翻译,西班牙语和英语。

原始字符串是用西班牙语写的。

它运作完美,但是,当我运行cron作业时,发送报告电子邮件,它是使用英语发送的,应该发送西班牙语。

问题与邮件代码无关,因为当我在浏览器上运行cron文件时它工作正常,而且,我的电子邮件系统首先将其保存到数据库然后发送它们,并且邮件已经存储DB上的英文。

所以,我知道我的问题是cron文件没有使用正确的语言。 我使用此代码在配置文件中设置语言,包含在所有文件中。

$language = "ES_AR.utf8";  //this is the locale name on the linux machine.
putenv("LANG=$language");
setlocale(LC_ALL, $language);
$domain = 'messages';
bindtextdomain($domain, APP_PATH . "/locale");
textdomain($domain);

正如我所说,它运作良好。

我将此代码放在cron文件的顶部,问题仍然存在。

所以问题是,从shell运行cron文件时,我可以做些什么来强制语言吗?

感谢!!!

1 个答案:

答案 0 :(得分:1)

我找到了修复......

我需要提出:

putenv("LANGUAGE=");

在我设置区域设置之前。

我在这里找到答案:Gettext not working through php-cli, but works in php-apache

不要以为我之前没有搜索过,我做过,但那个问题还在用其他词语!

我希望它可以帮助别人!!!