Smarty和gettext插件每次都不起作用

时间:2013-04-30 13:23:46

标签: smarty gettext

我们正在使用Smarty gettext插件进行本地化,它在本地服务器上运行良好。虽然在生产服务器(Linux Debian)上,有时翻译是正确的,有时不是。

我的意思是我们在弹出的iframe中有一些内部网址,它有时可以工作,有时也不会。我已经检查了Stack Overflow上发布的所有解决方案但没有成功。

我的代码是这样的

putenv("LANGUAGE=nl_NL.UTF-8");
$domain = 'mydomain';
bindtextdomain($domain, "./locale"); 
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, array('nl_NL.UTF-8','nl_NL@euro','nl_NL','dutch'));

1 个答案:

答案 0 :(得分:1)

我怀疑你的问题是在不同页面加载时对setlocale的调用相互打断。

PHP,在许多常见的服务器设置下运行时(例如,在线程工作者模型下的Apache mod_php)本身并不是线程安全的&#34 ;;遗憾的是,setlocale包含的基础C函数也不是。

在调用setlocale并实际输出一些内容之间,同一进程中的另一个线程因此可以控制CPU并调用setlocale;一旦第一个线程重新获得控制并生成一些输出,语言环境设置就会丢失。

解决方案是将服务器配置为使用非线程执行模型(例如Apache" pre-fork MPM")或更改代码以使用不同的语言环境机制线程安全的。

相关问题