i18n/gettext : Web 应用程序中的 setlocale 配置

2024-01-19

所以我开始乱搞gettext但我仍然对某些事情感到困惑,如果有人能帮助我并填补我的空白,那就太好了。

  1. 通常大多数实现只是调用setlocale基于语言参数。有什么情况我需要使用putenv,也许是针对 Windows 设置的边缘情况?

  2. 我的 php 框架的默认语言是英语,UTF-8 - 所以我设置LC_ALL to en_US.utf-8, since en_US是 ISO-8859-1/Latin1 ,显然它不如 UTF-8 支持?

  3. 调用后有什么我应该知道的问题吗setlocale(LC_ALL, 'en_US.utf-8')?因为它改变了所有这些:LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES- 我是否必须更新任何脚本,例如生成时间或类似内容的脚本?

  4. 举例来说,新配置的服务器没有es_ES.utf-8配置了语言环境,我知道如何生成语言环境,但如果它不可用,那么我应该在阵列中提供备份吗?如果有人能提供一个实际的例子那就太好了,例如:

    setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )

    是否有某种网站提供此类示例,或者人们通常会自己提出优先级排序?

  5. 我在某处读到,通常的结构locale or i18n文件夹如下所示。

    结构真的很重要吗?似乎所有的事情都发生在你这样做的时候bindtextdomain('messages', 'locale')它递归地搜索该目录messages.mo,我可能没有注意到,但它可能会考虑目录。

我对结构应该有多严格?

locale
  en_US
      LC_MESSAGES
         messages.po
  es_ES
      LC_MESSAGES
         messages.po


6. 我是否应该尝试测试系统是否确实支持该区域设置?因为例如,如果服务器没有区域设置并且我尝试使用setlocale它不会出错或发生任何事情,它只是默默地让它过去。


This is not对你的问题的一个合格的答案,我并不是说使用 gettext 不好 - 我从来没有足够地使用它来对它有一个真正深刻的看法 - 但我决定不去管 gettext 因为它的复杂性和在不同平台上的巨大的不可预测性与不同的语言环境。我发布了一个寻找替代方案的问题here https://stackoverflow.com/questions/1620670/i18n-with-gettext-but-without-the-locale-hassle虽然周围没有太多东西,但 Zend_translate 包似乎值得一看。我自己还没有抽出时间来做这件事。

如果您使用 gettext,请务必查看Gettext 上的 PHP 手册用户贡献注释 http://de.php.net/gettext.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

i18n/gettext : Web 应用程序中的 setlocale 配置 的相关文章

随机推荐