我在MAMP环境中使用gettext。我有es_ES
,ca_ES
,en_US
和gl_ES
的区域设置文件。前三个没问题,但是对于第四个,我在尝试将语言环境翻译文件绑定到gl_ES
语言(西班牙的加利西亚语)时遇到错误。这不是apache或PHP的问题,因为其他工作(在我的CentOS服务器中我有gl_ES包并且工作正常)
所以我意识到我的 Mac OS X版本10.6.8没有加利西亚支持。这很奇怪,因为它支持西班牙语,加泰罗尼亚语和Euskera,西班牙的其他三种官方语言。一些终端向您展示:
$ locale -a | grep _ES
ca_ES
ca_ES.ISO8859-1
ca_ES.ISO8859-15
ca_ES.UTF-8
es_ES
es_ES.ISO8859-1
es_ES.ISO8859-15
es_ES.UTF-8
eu_ES
eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8
$ ll /usr/share/locale/ | grep _ES
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-1/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-15/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.UTF-8/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-1/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-15/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.UTF-8/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-1/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-15/
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.UTF-8/
.UTF-8
或类似内容。我不知道如何将加利西亚支持(或任何其他)添加到Mac OS X.
如何在Mac OS X中添加新的区域设置?
答案 0 :(得分:8)
这应该可以解决问题:
cd /usr/share/locale
sudo cp -R es_ES gl_ES
然后打开一个新的终端会话并再次列出语言环境。加利西亚应该在那里:)
答案 1 :(得分:8)
经过几个小时的搜索,倾注perl代码,并且头疼,我在Apple的结论是在语言环境创建和定义部门中彻底失败了。这是交易:OSX为您提供了一个(* ehem * ... shoddy)实用程序脚本,该脚本位于/usr/bin/localedef
的perl中,支持创建新的语言环境。该联机帮助页说用法应该是这样的(在usr/share/locale
内部运行):
localedef -i base_file -f UTF-8 new_locale_name
如OP所述,此命令仅用于复制当前区域设置。好吧,我甚至无法工作!我不知道perl,但我发现/usr/bin/localedef
中至少有一个不小心的代码错误(第512行引用了一个名为set_escape_char
的子实际上应该是set_escape
)并且最重要的是我无法让localedef
完全工作,所以那就是了。正如@alombarte所述,您只需使用cp -R src_locale trg_locale
复制当前的语言环境目录,但他忘了提到在新语言环境目录中实际手动更改文本文件所需的源语言环境和目标语言环境之间存在差异。 / p>
例如,我想用正确的货币代码和货币信息创建区域设置es_NI.UTF-8
(尼加拉瓜),所以这就是我所做的:
cd /usr/share/locale
sudo cp -R es_MX.UTF-8 es_NI.UTF-8
sudo vim es_NI.UTF-8/LC_MONETARY
# changed MXN to NIO, $ to C$, etc...
# saved LC_MONETARY
您可能需要更改其他相关值,具体取决于您对新语言环境的使用。 Here是我能够在网上找到的最佳语言环境信息集合。如果我是一个更好的程序员,我会制作一个脚本,将网站“glibc”导出格式并重新格式化,以便在Mac OSX中使用localedef
命令。
P.S。向@alombarte道歉最初的downvote ...即使他的回答没有回答真正的问题,我也没有意识到以任何其他方式做到这一点会非常困难。
答案 2 :(得分:3)
调查结果发现,从Mac OS X 10.10.3开始,西班牙语和大多数欧洲语言的校对仍然存在。这些语言环境的排序规则定义链接到ASCII定义。这最终会破坏诸如PostgreSQL上的ORDER BY
子句之类的内容。