在Mac OSX中添加区域设置

Nat*_*xet 17 macos locale

我在MAMP环境中使用gettext.我有语言文件es_ES,ca_ES,en_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/
Run Code Online (Sandbox Code Playgroud)

回归

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

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

如何在Mac OS X中添加新的语言环境?

And*_*tch 9

经过几个小时的搜索,倾注perl代码,以及令人头疼的问题,我在Apple的结论是在语言环境创建和定义部门失败了.这是交易:OSX为您提供了一个(*ehem*... shoddy)实用程序脚本/usr/bin/localedef,该脚本位于perl ,其中包含了创建新语言环境的支持.该联机帮助页说用法应该是这样的(在里面运行usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name
Run Code Online (Sandbox Code Playgroud)

如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
Run Code Online (Sandbox Code Playgroud)

您可能需要根据新语言环境的使用情况更改其他相关值.是我能够在网上找到的最佳区域信息集合.如果我是一个更好的程序员,我会制作一个脚本,将网站"glibc"导出格式并重新格式化以使用localedefMac OSX中的命令.

PS向@alombarte道歉最初的downvote ......即使他的回答没有回答真正的问题,我也没有意识到以任何其他方式做到这一点会非常困难.

  • 我已经在 El Capitan 上为此奋斗了几个小时,并且由于新的无根内容而无法在 `/usr/share/local/` 中写入。 (2认同)

alo*_*alo 8

这应该做的伎俩:

cd /usr/share/locale
sudo cp -R es_ES gl_ES
Run Code Online (Sandbox Code Playgroud)

然后打开一个新的终端会话并再次列出语言环境.加利西亚应该在那里:)

  • 这不会安装新的区域设置,这会复制系统上已存在的区域设置. (9认同)
  • 正如@GarciaWebDev所述,这并没有回答向mac osx添加新语言环境的真正问题 (5认同)
  • 当[SIP](https://developer.apple.com/library/content/documentation/Security/引入了Conceptual / System_Integrity_Protection_Guide / Introduction / Introduction.html)。 (3认同)

小智 6

调查发现,从 Mac OS X 10.10.3 开始,西班牙语和大多数欧洲语言的排序规则仍然被破坏。这些区域设置的排序规则定义链接到 ASCII 定义。这最终会破坏ORDER BYPostgreSQL 上的子句等内容。