2012-04-03 190 views
12

我使用的gettext在MAMP環境添加一個區域。我有語言文件爲es_ESca_ESen_USgl_ES。前三名沒有問題,但是對於第四種,我試圖將語言環境翻譯文件綁定到gl_ES語言(西班牙加利西亞語)時出現錯誤。這不是一個問題與Apache或PHP,因爲其他人的工作(並在我的CentOS服務器,我有gl_ES包,工作正常)在Mac OSX上

所以我意識到我的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/ 

我不知道如何將加利西亞支持(或任何其他)添加到Mac OSX。我嘗試了安裝盤(添加語言包),但沒有成功:它們只是操作系統的翻譯。

我發現this similar question,但沒有儘可能多的信息,並沒有很好的答案。

我來到localedef作爲一個選項,但它似乎只是爲創建.UTF-8或類似的,當你已經擁有的基礎文件。

所以問題是:如何在MacOSX中添加新的語言環境。謝謝!

回答

6

這應該做的伎倆:

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

然後打開一個新的終端會話並再次列出的語言環境。加利西亞應該有:)

+0

謝謝!所以obvoius ... :-)其實我也是這樣做的: \t sudo cp -R es_ES.ISO8859-1 gl_ES.ISO8859-1 \t sudo cp -R es_ES.ISO8859-15 gl_ES.ISO8859 -15 \t須藤CP -R es_ES.UTF-8 gl_ES.UTF-8 – Natxet 2012-04-03 11:09:57

+8

這並不安裝一個新的語言環境,這份語言環境中已存在的系統上。 – 2012-05-22 22:34:29

+5

正如@GarciaWebDev指出,這並沒有回答添加新的語言環境的Mac OSX – AndyPerlitch 2013-02-05 18:31:28

8

字面上小時的搜索後,澆在Perl代碼,和頭部劃傷,我在蘋果的結論是epically未能在現場創作和定義部門。這裏的交易: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 

您可能需要改變其他相關值取決於您使用新的區域設置。 Here是我能夠在網上找到的語言環境信息的最佳集合。如果我是一個更好的程序員,我會製作一個腳本,將該網站的「glibc」導出格式重新格式化,以便在Mac OSX中使用localedef命令。

P.S.儘管他的迴應並沒有回答真正的問題,但我並沒有意識到以其他方式做這件事非常困難。

+0

任何人誰可以_can_解釋使用glibc .txt來創建一個OSX語言環境? – 2015-05-13 19:22:33

+0

我一直在爭取與此有關埃爾卡皮坦小時,也沒有辦法在'在/ usr /共享/本地/'因爲新的無根的東西來寫。 – fedeisas 2016-07-09 01:55:18

+1

@fedeisas一位同事向我發送了關於如何修改/ usr/share/local的消息:禁用「無根」模式(又稱系統完整性保護,「SIP」)的正確方法是暫時啓動進入恢復模式(保持在啓動過程中使用Command + R)並使用終端上的csrutil disable命令(或csrutil enable以重新啓用)。終端可通過在恢復模式下啓動的安裝程序菜單訪問。 – kstevens715 2016-08-11 20:06:13

3

展望這個發現,因爲Mac OS X 10.10.3的,整理仍然是打破了西班牙和大多數歐洲語言。這些語言環境的排序規則定義鏈接到ASCII定義。這最終會破壞PostgreSQL上的ORDER BY子句。

+0

剛剛遇到這個權利。好極了! – sevenseacat 2015-09-18 11:31:35

+0

10.10.5仍然碎.. – bodman 2015-12-08 08:01:45

+0

10.12.6仍然碎 – 2017-07-28 14:29:14