0

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

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

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

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

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

所以,我知道我的问题是 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 文件时,我能做些什么来强制使用一种语言吗?

谢谢!!!

4

1 回答 1

2

我找到了解决办法......

我需要说:

putenv("LANGUAGE=");

就在我设置语言环境之前。

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

不要以为我以前没搜过,我搜过,不过那个问题用的是别的词!

我希望它可以帮助某人!

于 2013-08-31T18:45:01.953 回答