在Mac OSX中添加区域设置

时间:2012-04-03 10:41:51

标签: macos locale

我在MAMP环境中使用gettext。我有es_ESca_ESen_USgl_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/

回归

  • 我尝试了安装磁盘(添加语言包)但没有成功:它们只是操作系统的翻译。
  • 我找到this similar question,但没有太多信息,也没有好的答案。
  • 我选择localedef作为选项,但它似乎仅用于在您已有基本文件时创建.UTF-8或类似内容。

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

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

3 个答案:

答案 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子句之类的内容。