我有一个非常恼人的问题与语言/地区为我们的网站。我已经在这附近找过了,但没有发现类似的东西。
因此,我们支持几种不同的语言,并在.po和.mo文件中设置了一切,这些文件在大多数情况下都能正常工作。有时,当您加载某些内容或刷新页面时,它会切换语言。也没有真正的模式,有时6 'en‘在一排,然后'sv’,有时每秒钟'sv‘和'en’。
Ex.如果您想编辑一个用户,您就会得到一个弹出窗口,它首先包括authorize.php,我们在其中检查语言并使用以下函数相应地设置它:
function _set_locale ($lang){
switch($lang) {
case 'sv': $locale = "sv_SE"; break;
case 'en': $locale = "en_SG"; break;
case 'nl': $locale = "nl_NL"; break;
case 'dk': $locale = "da_DK"; break;
case 'vi': $locale = "vi_VN"; break;
case 'zh': $locale = "zh_CN"; break;
default: $locale = "en_SG"; break;
}
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, "$locale.UTF-8");
bindtextdomain("messages", "./locale/");
textdomain("messages");我运行一个瑞典帐户,'sv‘集,刷新编辑用户弹出10次,并调试此功能,$lang是'sv’和我登录setlocale(LC_ALL,0),它返回'sv_SE.UTF-8‘,但该页面显示英文5-6次。
它似乎只是从现在的语言转向英语,这是原始语言,所以我认为它没有被翻译。它看起来不是我们设置的错误/默认语言,它只是忽略/没有时间?来设定语言。
语言没有保存在cookie中,有些帐户只有1种语言(这不是英语),并且仍然得到这种语言。
在上面的例子中。当我们从authorize.php返回时,我们不会在实际的“编辑用户”页面中使用任何语言变量。所以它不应该在那里改变它。(我也在从奥斯丁回来的时候调试并检查了语言。每次都是瑞典语)。
我不期望任何人能够通过我给出的信息来解决这个问题,我只是感兴趣的是,如果有人经历过这个问题,或者知道为什么有时会出现“开关”,请告诉我是否可以附加更多代码来解决这个问题。
谢谢!
发布于 2015-08-28 10:49:46
我也有一个类似的间歇性问题,PHP gettext and vagrant running ubuntu,它在第三个请求中显示了正确的文本。
尝试以下之一,我认为这将取决于您如何在Apache中运行PHP
sudo service php5-fpm restart
sudo service apache2 restart我认为这是因为我在玩弄传递给setLocale()的值。
https://stackoverflow.com/questions/8882680
复制相似问题