在Mac OSX中添加区域设置



我在MAMP环境中使用gettext。我有es_ESca_ESen_USgl_ES的区域设置文件。前三个没有问题,但对于第四个,我在尝试将区域设置翻译文件绑定到gl_ES语言(西班牙的加利西亚语)时遇到了一个错误。这对apache或PHP来说不是问题,因为其他的都可以工作(在我的CentOS服务器上,我有gl_ES包,工作正常)

所以我意识到我的Mac OS X 10.6.8版本没有加利西亚支持。这很奇怪,因为它支持西班牙的其他三种官方语言西班牙语、加泰罗尼亚语和巴斯克语。一些终端向您展示:

$ 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/

回归

  • 我试过安装磁盘(添加语言包),但没有成功:它们只是操作系统的翻译
  • 我发现了这个类似的问题,但没有那么多信息,也没有好的答案
  • 我选择了localedef,但它似乎只是为了在您已经有了基本文件的情况下创建.UTF-8或类似的文件

我不知道如何添加加利西亚支持(或任何其他)到MacOSX.

如何在Mac OS X中添加新的区域设置?

经过几个小时的搜索、大量的perl代码和令人挠头的工作,我得出结论,苹果在区域设置创建和定义部门的工作非常失败。交易如下:OSX为您提供了一个(*ehem*…粗制滥造)实用程序脚本,该脚本是用位于/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复制当前的区域设置目录,但他忘记了提到源和目标区域设置之间存在差异,您需要手动更改新区域设置目录中的文本文件。

例如,我想用正确的货币代码和货币信息创建区域设置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

根据您对新区域设置的使用情况,您可能需要更改其他相关值。这是我能在网上找到的最好的地区信息集合。如果我是一个更好的程序员,我会制作一个脚本,采用网站"glibc"导出的格式,并将其重新格式化,以便在Mac OSX中使用localedef命令。

p.S.就最初的否决向@alumbate道歉。。。尽管他的回答没有回答真正的问题,但我没有意识到用其他方式做这件事会非常困难。

这应该可以做到:

cd /usr/share/locale
sudo cp -R es_ES gl_ES

然后打开一个新的终端会话,并再次列出区域设置。加利西亚应该在那里:)

对此进行调查发现,截至Mac OS X 10.10.3,西班牙语和大多数欧洲语言的排序规则仍然不完善。这些区域设置的排序规则定义链接到ASCII定义。这最终破坏了PostgreSQL上的ORDER BY子句。

最新更新