LinuxのLC_ *ロケール文字列は正確に何を意味しますか?


1

Linuxコマンドプロンプトで入力するとき

locale

LC_*変数などの長いリストを取得しますLC_TIME。変数の値は、次のリストの値のようになります。

en_US.8859-1
de_DE@euro
fr_FR.utf-8

個々の部品の正確な意味は何ですか?

私はそれ@euroが同一で.8859-15あり、一般的に最後の部分は実際の文字セット(バイトの実際のシンボルへのマッピング)を意味することを知っています。しかし、最初の2つのコードは正確に何を「する」のでしょうか?システムのどのような特性が影響しますか?(だけで動作するようにいくつかの例を持っている)例えば、違いは何でen_US.8859-15de_DE.8859-15de_CH.8859-15とはen_CU.8859-15?すべての文字セットはまったく同じであるため、選択したエディターで開いたすべてのテキストファイルは同じように見えます。ある「事前文字セットコード」から別の「事前文字セットコード」(from de_CHからなどen_US)に切り替えるとどうなりますか?

読みやすくて見やすい表に違いをリストした表はありますか?

回答:


2

2つの部分はISO-639言語コードを形成します。最初の部分は言語自体であり、2番目の部分は(通常)どのローカルバリアントを指定する国コードです。

LANG翻訳のあるほとんどすべてのプログラムで、変更の効果を観察できます。 プログラムLC_COLLATEの結果に影響しますsortLC_DATE出力に影響dateしてls -l。一部のロケール設定では、それらを使用するものが何もインストールされていない可能性があります。

ほとんどのシステムでは、のみLC_LANGが設定され、他のすべての設定はそれを継承するようにフォールバックします。

locale(7)のmanページからの次の引用は関連しています:

LC_COLLATE
これは、ローカルアルファベットの文字列を比較するために使用される関数strcoll(3)およびstrxfrm(3)の動作を変更するために使用されます。たとえば、ドイツのシャープsは「ss」としてソートされます。
LC_CTYPE
isupper(3)やtoupper(3)などの文字処理および分類関数、およびmblen(3)やwctomb(3)などのマルチバイト文字関数の動作を変更します。
LC_MONETARY
は、localeconv(3)によって返される情報を変更します。この情報は、小数点と小数点のコンマなどの詳細とともに、通常の数字の印刷方法を説明します。この情報は、関数strfmon(3)によって内部的に使用されます。
LC_MESSAGES
言語メッセージが表示される言語と、肯定的または否定的な答えがどのように見えるかを変更します。GNU Cライブラリには、これらの情報の使用を容易にするgettext(3)、ngettext(3)、およびrpmatch(3)関数が含まれています。GNU gettextファミリの関数は、カテゴリが「C」以外の有効なロケールに設定されている場合、環境変数LANGUAGE(ロケールのコロン区切りリストを含む)に従います。
LC_NUMERIC
は、printf(3)およびscanf(3)ファミリーの関数で使用される情報を、ロケール設定の使用が推奨される場合に変更します。この情報は、localeconv(3)関数でも読み取ることができます。
LC_TIME
strftime(3)関数の動作を変更して、現在の時刻をローカルで受け入れ可能な形式で表示します。たとえば、ヨーロッパのほとんどでは、米国で使用されている12時間制に対して24時間制が使用されています。
LC_ALL上記のすべて。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.