我的网站语言/语言环境有一个非常烦人的问题。我一直在这里环顾四周,但没有找到类似的东西。
因此,我们支持几种不同的语言,并使用.po和.mo文件设置所有内容,这些文件在大多数情况下都能正常运行。有时它会在您加载某些内容或刷新页面时切换语言。它也没有真正的模式,有时连续6'en'然后'sv',有时每秒'sv'和'en'。
例如如果你想编辑一个用户,你会得到一个弹出窗口,首先包括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返回时,我们不会在实际的“编辑用户”页面中使用任何语言变量。所以它不应该在那里改变它。 (我还从auth返回时调试并检查了语言。每次都是瑞典语)。
我不希望任何人能够通过我给出的信息解决这个问题我只是感兴趣,如果有人经历过这个或者有任何想法为什么它有时会“切换”请告诉我,如果我能附上还有一些代码可以解决这个问题。
谢谢!
答案 0 :(得分:0)
我遇到了类似的间歇性问题PHP gettext and vagrant running ubuntu,它在第3次请求时显示了正确的文字。
尝试以下方法之一,我认为这将取决于您如何使用Apache运行PHP
sudo service php5-fpm restart
sudo service apache2 restart
我认为这源于我玩传递给setLocale()
的值