【发布时间】:2011-12-07 18:17:41
【问题描述】:
我目前正在致力于国际化大型 Perl/Mason Web 应用程序(Perl 5.8.0、Mason 1.48、mod_perl 和 Apache)。在选择本地化模块时,我决定使用 Locale::TextDomain 而不是 Locale::Maketext,主要是因为后者的复数形式支持不如我想的那么好。
我对 Locale::TextDomain 的困扰在于它会根据进程的语言环境来解析要用于翻译的目录。当我意识到这一点时,我担心如果我希望用户能够使用不同的语言环境,这将如何影响我的应用程序——改变语言环境以适应一个用户的设置是否会影响另一个用户的会话?例如,是否会出现这样一种情况:由于德国用户的会话更改了进程的区域设置,因此英语用户收到了德语页面?我不太了解 Apache 的线程/进程模型是如何工作的,但似乎如果多个用户可以由同一个线程提供服务,这可能会发生。
This email thread 表示这是可能的; here OP 描述了我正在考虑的情况。
如果这是真的,有没有办法可以在仍然使用 Locale::TextDomain 的同时防止这种情况?我想我总是可以破解模块以独立于语言环境(可能使用 DBD::PO)加载目录,但希望我只是错过了一些可以解决我的问题的东西......
【问题讨论】:
标签: perl internationalization mod-perl mason