Gettext (i18n) 和 Smarty 运行不稳定
我正在使用 PHP 和 Smarty 开发一个网络应用程序。我使用 gettext 进行国际化,但我有一个问题:它仅有时有效,绝对随机。我使用 putenv+setlocale+bindtextdomain+textdomain 加载语言环境(例如“de_DE”),重新加载页面,然后看到“搜索”;再次重新加载,我看到“Suche”;再重新加载两次并获得“Suche”,但第三次再次给我“搜索”,然后我多次看到“搜索”,突然我可以再次看到“Suche”......随机。
我已经禁用了 Smarty 的缓存,但还是有同样的问题。我已将 Smarty 配置为针对不同的语言使用不同的目录,templates_c/en_GB、templates_c/de_DE 等。以这种方式编译工作正常。
我正在使用 smarty-gettext 进行模板翻译。
使用 gettext 和 Smarty 是否存在任何已知问题?
编辑以添加一些信息: 我正在 Linux 计算机中运行测试:
apache2 2.2.14
gettext 0.17
php 5.3.2
smarty 3-SVN$Rev: 3286
I'm developing a webapp with PHP and Smarty. I use gettext to internationalize, but I've a problem: it only works sometimes, absolutly randomly. I load a locale ('de_DE', by example) with putenv+setlocale+bindtextdomain+textdomain, reload the page, and see "Search"; reload again and I see "Suche"; two more reloads and get "Suche" but thirth give me "Search" again, then I see "Search" many time and suddenly I can see "Suche" again... randomly.
I've deactivated cache for Smarty, but same issue. I've configured Smarty to use different directories for different languages, templates_c/en_GB, templates_c/de_DE, and so on. Compiling works fine that manner.
I'm using smarty-gettext for templates translation.
Are there any known issue about using gettext and Smarty?
Edit to add some information: I'm running my tests in a Linux machine:
apache2 2.2.14
gettext 0.17
php 5.3.2
smarty 3-SVN$Rev: 3286
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您是否安装/启用了 Xcache 或任何其他操作码缓存器?尝试禁用它们。
Do you have Xcache or any other opcode cacher installed/enabled? Try disabling them.
我遇到了同样的问题 - 有时页面显示翻译,有时则不显示。
但我使用的是普通 PHP(没有 Smarty),并在 Mac OS X(不是 Linux)上运行。
我的代码如下所示:
目前正在尝试解决问题 - 如果成功,我会让您知道。
I'm experiencing the same issue - sometimes the page shows the translation, and sometimes it doesn't.
But I'm using vanilla PHP (no Smarty), and running on Mac OS X (not Linux).
My code looks like:
Currently trying to hunt the problem down - I will let you know if I succeed.
在实际使用俄语单词时,使用语言环境“pt_BR”时经常遇到类似的问题。
通过将区域设置设置为“ru_RU”解决了这个问题。
希望这可能有所帮助。
这是我实际工作的配置:
还有一个重要的注意事项:
仅在使用
msgfmt -c -v -o
后才开始工作msgfmt -o 还不够。
同样重要的是:发出格式化命令时需要 root,
也不要忘记重新启动 apache。
Used to get similar problem while using locale "pt_BR" when actually using russian words.
Solved this by setting locale to "ru_RU".
Hope this might help.
This is my configuration that actually worked:
One more important note:
started working only after using
msgfmt -c -v -o
msgfmt -o wasn't enough.
Also important: need to be root when issuing formatting commands,
also don't forget to restart apache.
我有一个类似的间歇性问题 PHP gettext 和 vagrant 运行 ubuntu
尝试以下方法之一,我认为这取决于您如何让 PHP 与 Apache 一起运行
I had a similar intermittent problem PHP gettext and vagrant running ubuntu
Try one of the following, I think it will depend how you have PHP running with Apache