2012-04-03 10 views
12

私はMAMP環境でgettextを使用しています。 es_ESca_ESen_USgl_ESのロケールファイルがあります。最初の3つは問題ありませんが、その前には、ロケールの翻訳ファイルをgl_ES言語(スペインのガリシア語)にバインドしようとするとエラーが発生します。Mac OSXでロケールを追加

私のMac OS X(バージョン10.6.8)はガリシア語のサポートなしで提供されています。(これは私のCentOSサーバーではgl_ESパッケージがあり、うまく動作しますので、これはApacheやPHPの問題ではありません。それはスペイン語、カタロニア語とEuskera、スペインの他の3つの公式言語にサポートを持っているので、それは奇妙です:私は1つだけが欠落しています)。いくつかの端末が表示されます:

$ 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で新しいロケールを追加する方法。ありがとう!

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

その後、新しい端末セッションを開き、再びロケールをリスト:

答えて

6

これはトリックを行う必要があります。ガリシア人はそこにいるはずです:)

+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 sudo cp -R es_ES.UTF-8 gl_ES.UTF-8 – Natxet

+8

これは新しいロケールをインストールしません。これは、システムにすでに存在するロケールをコピーします。 –

+5

@ GarciaWebDevで述べたように、これはmac osx – AndyPerlitch

8

文字通り数時間の検索、perlコードの流し込み、頭の傷付けなど、私はAppleがロケール作成・定義部で叙事詩的に失敗していると結論づけました。 OSXは、新しいロケールを作成するためにサポートされている/usr/bin/localedefにあるperlで書かれた(* ehem * ... shoddy)ユーティリティスクリプトを提供します。 manページは使用量がこのような何か(usr/share/localeの内部で実行)であることを述べている:OPで述べたように

localedef -i base_file -f UTF-8 new_locale_name 

、このコマンドは、ちょうど現在のロケールをコピーするためです。まあ、私は働くことさえできませんでした!私はperlを知らないのですが、/usr/bin/localedefに少なくとも1つの不注意なコードエラーがあります(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.最初のdownvoteのための@alombarteへの謝罪...彼の応答は本当の質問に答えることはできませんが、私はそれが他の方法でそれを行うことは非常に信じられないほど困難であることを認識していませんでした。

+0

glibc .txtを使ってOSXのロケールを作成する方法については、誰も知りませんか? –

+0

私はエル・キャピタンでこれを数時間戦ってきましたが、新しいルートレスのもののために '/ usr/share/local /'に書く方法はありません。 – fedeisas

+1

@fedeisas/usr/share/localを変更する方法は、同僚から送られてきました。「ルートレス」モード(システムインテグリティプロテクション「SIP」とも呼ばれます)を無効にする適切な方法は、ブート時にCommand + Rキーを押して)、csrutil disableコマンド(またはcsrutil enableを使用して再度有効にする)を使用してください。ターミナルには、回復モードで起動するインストーラのメニューからアクセスできます。 – kstevens715

3

これを見ると、Mac OS X 10.10.3以降、スペイン語とほとんどのヨーロッパ言語の照合順序はまだ解消されています。これらのロケールの照合定義は、ASCII定義にリンクされています。これにより、PostgreSQLのORDER BY節などの問題が破棄されます。

+0

ちょうどこれを今すぐ見つけましたか?わーい! – sevenseacat

+0

10.10.5まだ壊れています.. – bodman

+0

10.12.6まだ壊れています –