我开始尝试使用gettext
,但仍有一些问题困扰着我。如果有人能帮助我解决并填补这些空白就太好了。
通常,大多数实现都是根据语言参数调用
setlocale
。是否存在需要使用putenv
的情况,例如在Windows设置的边缘情况下?我的php框架的默认语言是英语,UTF-8格式。因此,我将把
LC_ALL
设置为en_US.utf-8
,因为en_US
是ISO-8859-1/Latin1格式,显然不如UTF-8支持得好?在调用
setlocale(LC_ALL, 'en_US.utf-8')
后,是否有任何需要注意的地方?由于它会更改所有这些:LC_COLLATE,LC_CTYPE,LC_MONETARY,LC_NUMERIC,LC_TIME和LC_MESSAGES
- 我是否需要更新生成时间等脚本的任何脚本?假设例如刚刚配置过的服务器没有配置
es_ES.utf-8
区域设置,我知道如何生成区域设置,但如果没有,则应该在数组中提供备选项吗?如果有人能提供一个实际的示例,那就太好了,例如:setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )
是否有提供此类示例的网站,或者人们通常自己想出优先级顺序?
我在某个地方读到过
locale
或i18n
文件夹的常见结构如下。结构真的很重要吗?似乎所有正在发生的事情都是当您执行
bindtextdomain('messages','locale')
时,它会递归搜索messages.mo
的目录。我可能没有注意到,但它可能会考虑目录。
我对结构应该有多严格?
locale
en_US
LC_MESSAGES
messages.po
es_ES
LC_MESSAGES
messages.po
6. 我应该尝试测试系统是否支持所需的语言环境吗?例如,如果服务器没有所需的语言环境,我使用 setlocale
设置时不会出现错误提示,而是默默地忽略它。
Zend_Translate
,但想先尝试一下底层的东西,以便基本了解它们的工作原理(就像在使用jQuery之前学习JavaScript一样)。谢谢你的建议。不过,Zend_Translate
对你来说效果如何? - meder omuraliev