GNU/Linux >> Linux の 問題 >  >> Linux

ロケールを設定する方法とその意味は何ですか?

この質問は、質問をすることによって刺激されました。
Chromiumブラウザでは、「ファイルに印刷」のデフォルトの用紙サイズを設定できません。また、チャットで@Gillesと会話することもできます。 @don_crisstiが指摘し、私が確認したように、ロケールを変更します(少なくともLC_PAPER )選択する用紙サイズに違いがあります。

私は何を選択するかについてあまり考えたことがなく、常にen_US.UTF-8を使用していました。 妥当なデフォルトの選択のように思えたからです。

ただし、チャットの@Gillesごとに(http://chat.stackexchange.com/transcript/message/17017095#17017095で始まる会話を参照)。抜粋:

Gilles:LC_PAPERのデフォルトは$ LANG

Gilles:LANG=en_US.UTF-8が必要です。それは悪い考えです。それは
LC_COLLATEを設定し、それはほとんどの場合悪いことです

Gilles:LC_COLLATEは正しい照合を記述していません。制限が多すぎて(文字ごとに)LANGを削除し、代わりに
LC_CTYPEとLC_PAPERを設定します

Gilles:さらに
英語

以外の言語のメッセージが必要な場合はLC_MESSAGES

明らかに、ここには私が気付いていない問題があり、他にも多くの問題があると確信しています。では、ロケールを設定するときにどのような問題を考慮する必要があり、どのように設定する必要がありますか?私はいつもdpkg-reconfigure localesを実行しました Debianで、それについて二度考えなかった。

特定の質問:ロケールをen_IN.UTF-8に設定する必要がありますか?そうすることの欠点はありますか?

承認された回答:

ロケール設定は、文化に関連するユーザー設定です。

ロケール名

私が知っている現在のすべてのUNIXバリアント(一部のアンティークではありません)では、ロケール名は同じパターンに従います:

  • ISO 639-1の小文字の2文字の言語コード、または言語に2文字のコードがない場合はISO639-23文字の言語コード。たとえば、en 英語の場合、de ドイツ語の場合、ja 日本語の場合、uk ウクライナ語の場合、ber Berberの場合、…
  • すべてではありませんが多くの言語では、アンダースコア_ その後にISO3166の大文字の2文字の国コードが続きます。したがって:en_US 米国英語の場合、en_UK イギリス英語の場合、fr_CA カナダ(ケベック)フランス語、de_DE ドイツのドイツ語の場合、de_AT オーストリアのドイツ語の場合、ja_JP (日本の)日本人向けなど
  • オプションで、ドット. その後にUTF-8などの文字エンコードの名前が続きます 、ISO-8859-1KOI8-UGB2312Big5 、など。少なくともGNU libcでは(これがどれほど普及しているかはわかりませんが)、名前のエンコードでは大文字と小文字および句読点は無視されます。例:zh_CN.UTF-8 zh_CNは、UTF-8でエンコードされた北京語(簡体字)中国語です。 はGB2312でエンコードされた北京語で、zh_TW Big5でエンコードされた台湾語(繁体字)中国語です。
  • オプションで、アットマーク@ バリアントの名前が続きます。バリアントの意味はロケールによって異なります。たとえば、多くのヨーロッパ諸国には@euroがあります 通貨記号が€で、エンコーディングがこの文字を含むロケールバリアント(ISO8859-15またはISO8859-16)であり、古い通貨記号の装飾されていないバリアントとは対照的です。たとえば、en_IE (英語、アイルランド)は、latin1(ISO 8859-1)エンコーディングを使用し、通貨記号として£を使用しますが、[email protected] latin9(ISO 8859-15)エンコーディングを使用し、通貨記号として€を使用します。

さらに、すべてのUNIXライクなシステムに存在する2つのロケール名があります:C およびPOSIX 。これらの名前は同義語であり、コンピュータを意味します。つまり、コンピュータプログラムによって解析されるデータに適したデフォルト設定です。

ロケール設定

次のロケールカテゴリはPOSIXによって定義されています:

関連:いくつかのバックグラウンドプロセスの時間を計る方法は?

組み込みLinuxにないGNUlibcは、追加のロケールカテゴリを定義します:

  • LC_PAPER :デフォルトの用紙サイズ(高さと幅で定義)。
  • LC_NAMELC_ADDRESSLC_TELEPHONELC_MEASUREMENTLC_IDENTIFICATION :これらを使用するアプリケーションを知りません。

環境変数

ロケール設定を使用するアプリケーションは、環境変数からロケール設定を決定します。

  • 次に、LANGの値 別の設定で上書きされない限り、環境変数が使用されます。 LANGの場合 が設定されていない場合、デフォルトのロケールはCです。 。
  • LC_xxx 名前は環境変数として使用できます。
  • LC_ALLの場合 が設定されている場合、他のすべての値は無視されます。これは主にLC_ALL=Cを設定するのに役立ちます 実行場所に関係なく、同じ出力を生成する必要があるアプリケーションを実行します。
  • さらに、GNUlibcはLANGUAGEを使用します LC_MESSAGESのフォールバックを定義します (例:LANGUAGE=fr_BE:fr_FR:en ベルギーフランス語を好む場合、または利用できない場合はフランスフランス語、利用できない場合は英語)

ロケールのインストール

ロケールデータは大きくなる可能性があるため、一部のディストリビューションでは使用可能な形式で出荷されず、代わりに追加のインストール手順が必要になります。

  • Debianでロケールをインストールするには、dpkg-reconfigure localesを実行します ダイアログボックスのリストから選択するか、/etc/locale.genを編集します 次に、locale-genを実行します 。
  • Ubuntuでロケールをインストールするには、locale-genを実行します ロケールの名前を引数として使用します。

独自のロケールを定義できます。

推奨事項

便利な設定は次のとおりです。

  • LC_CTYPEを設定します テキストファイルをエンコードする言語とエンコーディングに合わせてください。端末がそのエンコーディングを使用していることを確認してください。
    ほとんどの言語では、エンコーディングのみが重要です。いくつかの例外があります。たとえば、大文字のi Iです ほとんどの言語で、ただしİ トルコ語(tr_TR
  • LC_MESSAGESを設定します メッセージを表示する言語に変更します。
  • LC_PAPERを設定します en_USへ US Letterをデフォルトの用紙サイズにしたい場合、およびその他のサイズ(en_GBなど) )A4が必要な場合。
  • オプションで、LC_TIMEを設定します お気に入りの時間形式に変更します。
関連:user1にパスワードなしで「su–user2」を許可しますか?

上で説明したように、LC_COLLATEの設定は避けてください およびLC_NUMERICLANGを使用する場合 、これら2つのカテゴリをCに設定して、明示的にオーバーライドします 。


Linux
  1. シェルの制御およびリダイレクト演算子とは何ですか?

  2. SELinux モードとは何か、およびその設定方法

  3. Linux での lsof と netstat の違いは何ですか?

  1. vimでjキーとkキーを切り替えるにはどうすればよいですか?

  2. man:ロケールを設定できません。 $LC_* と $LANG が正しいことを確認してください

  3. rdesktop と xfreerdp の違いは何ですか?

  1. ゾンビプロセスとは何ですか?ゾンビプロセスを見つけて殺す方法は?

  2. システムにログオンしているユーザーとそのユーザーが行っていることを確認する方法

  3. Linux で日付形式をグローバルに ISO に設定するにはどうすればよいですか?