【发布时间】:2012-03-29 08:31:49
【问题描述】:
在我公司的一个项目中,有一个提供 6 种语言的网站。该网站向客户/会员发送一些电子邮件。每个短语/单词都存储在数据库中,并且在网站上都运行良好。我们的主要问题出现在电子邮件中。
在每封电子邮件中都有每日报告。我们使用 set_locale() 来定义每种语言并将日期名称(也包括月份)“显示”为正确选择的语言。这工作正常。
在某些情况下,要发送不止一封电子邮件(使用 2 种不同的语言) - 我们遇到了问题。 电子邮件中的每个信息都显示正确 - 来自数据库的文本/翻译。 日期名称(以及月份)仅以第一语言出现在两封电子邮件中。 因此,如果第一封电子邮件是德语,第二封是法语,那么法语电子邮件将包含法语的所有内容,除了日期名称将是德语(即使我们在发送第二封电子邮件之前再次执行 set_locale)
这是为什么呢?这是一些 set_locale 的不良行为吗?我们如何预防/解决这个问题?感谢您提供任何见解/提示
编辑: 我们使用的代码是:setlocale(LC_ALL, $setLocale); 其中 setLocale 看起来像“fr_FR.UTF8”
【问题讨论】:
-
由于
setLocale()不是线程安全的,在负载下可能会出现不一致。发生这种情况时,您的网络服务器是否处于高负载状态? -
您使用的是
setlocale()参数,对吗?如果没有看到一些代码,就很难说出具体是什么问题。 -
@S Morgan:我在我的问题中添加了 set locale 部分
-
@phpdev 我没有注意到服务器的负载。只是当我们以不同的语言发送 2 封电子邮件时,就会出现这个“错误”。是否可以在每个线程中设置 set_locale?如果是这样,那么我认为我们无能为力