この質問は、次の質問から来ました。
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に設定する必要がありますか?これには欠点がありますか?
また見なさい:LC_COLLATE(必ず)が文字範囲に影響しますか?
答え1
ロケール設定は、あなたの文化に関連するユーザーの好みです。
ロケール名
私が知っている現在のUnixの亜種(いくつかのアンティークではない)では、ロケール名は同じパターンに従います。
- 一つISO 639-1小文字の2桁の言語コード、またはISO 639-2言語に2文字のコードがない場合は、3文字の言語コードが使用されます。たとえば、
en
英語、ドイツ語de
、ja
日本語、uk
ウクライナ語、ber
ベルベル語... - すべての言語ではありませんが、多くの言語では下線
_
の後に下線が続きます。ISO 3166大文字の2桁の国コード。例:en_US
アメリカ英語、en_UK
英国英語、fr_CA
カナダ(ケベック)フランス語、de_DE
ドイツ語ドイツ語、de_AT
オーストリアドイツ語、ja_JP
日本語(日本語)など。 - オプションで、ドット
.
の後に名前が続きます。文字エンコーディングUTF-8
少なくともGNU libc(ISO-8859-1
これがどれくらい一般的なのかわかりません)では、名前をエンコードするときに大文字KOI8-U
とGB2312
小文字が無視されます。Big5
たとえば、簡体字zh_CN.UTF-8
中国語はUTF-8でエンコードされ、zh_CN
中国語はGB2312でエンコードされ、台湾語zh_TW
(繁体字)中国語はBig5でエンコードされます。 - (オプション)at 記号
@
の後にバリアント名が続きます。バリエーションの意味はロケールによって異なります。たとえば、ヨーロッパの多くの国では、@euro
通貨記号が€で、エンコードが通常の通貨記号バリアントではなく、対応する文字(ISO 8859-15またはISO 8859-16)を含むロケールバリアントがあります。たとえばen_IE
、(英語、アイルランド)は、latin1(ISO 8859-1)エンコーディングと£を通貨記号として使用し、en_IE@euro
latin9(ISO 8859-15)エンコーディングと€を通貨記号として使用します。
C
さらに、すべてのUNIXシリーズシステムには2つのロケール名がありますPOSIX
。これらの名前は同義語であり、コンピュータ用語でコンピュータプログラムから解析されるデータに適したデフォルト設定を意味します。
地域設定
次のロケールカテゴリは、次のように定義されます。POSIX:
LC_CTYPE
:端末アプリケーションで使用される文字セット:カテゴリデータ(文字、句読点、スペース、無効な文字など)と大文字と小文字の変換。テキストユーティリティは通常、LC_CTYPE
文字の境界を決定することに注意を払います。LC_COLLATE
:照合順序(つまりソート)の順序。この設定は、次のようなさまざまな理由で非常に制限的に使用されます。- ほとんどの言語には、順序に依存する複雑な規則があります(辞書の単語と識別名は同じ順序を使用しない可能性があります)、表現的には使用できません
LC_COLLATE
。 - 正しいソート順序を必要とするアプリケーションはほとんどなく、これらの操作はロケールを使用するソフトウェアによって実行されます。たとえば、ワードプロセッサはファイル自体にファイルの言語とエンコーディングを保存します(そうしないと、ファイルが別のロケールを使用しているシステムでは正しく処理されません)、環境で指定されたロケールを気にしません。
LC_COLLATE
特に、ソート順A < a < B < ...が発生し、「AとZの間」に小文字aからyまで含まれるため、不快な副作用がある可能性があります。特に非常に一般的な正規表現[A-Z]
いくつかのアプリケーションを壊すようなものです。。
- ほとんどの言語には、順序に依存する複雑な規則があります(辞書の単語と識別名は同じ順序を使用しない可能性があります)、表現的には使用できません
LC_MESSAGES
:情報とエラーメッセージの言語。LC_NUMERIC
:数値形式:小数点と千単位の区切り記号。
多くのアプリケーションには、.
小数点区切り文字がハードコードされています。これはLC_NUMERIC
それほど有用ではなく、潜在的に危険になる可能性があります。- 設定しても、デフォルトのフォーマットが表示されることがよくあります。
.
あるアプリケーションではロケール依存出力を生成し、他のアプリケーションでは小数点またはフィールド区切り文字の出力を期待する,
状況が発生する可能性があります。
LC_MONETARY
A:似てLC_NUMERIC
いますが、現地通貨の金額に対応しています。
これを使用するアプリケーションはほとんどありません。LC_TIME
:日付と時刻の形式:曜日と月の名前、12時間制または24時間制、日付部分順、句読点など
追加のロケールカテゴリを定義する非埋め込みLinuxでGNU libcを見つけることができます。
LC_PAPER
:デフォルトの用紙サイズ(高さと幅で定義)。LC_NAME
、、、、、:これを使用するアプリケーションがあるかどうかわかりませんLC_ADDRESS
。LC_TELEPHONE
LC_MEASUREMENT
LC_IDENTIFICATION
環境変数
ロケールを使用するアプリケーションは、環境変数に基づいてロケールを決定します。
LANG
これにより、他の設定で上書きされない限り、環境変数の値が使用されます。設定しない場合、LANG
デフォルトのロケールはですC
。- この
LC_xxx
名前は環境変数として使用できます。 - 設定すると、
LC_ALL
他のすべての値は無視されます。これはLC_ALL=C
、実行位置に関係なく同じ出力を生成する必要があるアプリケーションを設定するのに役立ちます。 - また、GNU libc使用
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
メッセージを表示する言語を設定してください。- デフォルトの用紙サイズとして使用するにはUS Letterに設定し、
LC_PAPER
A4として使用するには別のサイズ(たとえば)に設定します。en_US
en_GB
- (オプション)
LC_TIME
希望の時間形式に設定します。
上記のようにLC_COLLATE
とLC_NUMERIC
。を使用する場合は、両方のLANG
カテゴリをに設定して明示的に上書きしますC
。