「ロケール」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (ローカリゼーションに変更) |
|||
(7人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ローカリゼーション]] |
+ | [[ar:Locale]] |
||
[[cs:Locale]] |
[[cs:Locale]] |
||
[[de:Locale]] |
[[de:Locale]] |
||
7行目: | 8行目: | ||
[[it:Locale]] |
[[it:Locale]] |
||
[[ko:Locale]] |
[[ko:Locale]] |
||
− | [[ |
+ | [[pt:Locale]] |
[[ru:Locale]] |
[[ru:Locale]] |
||
− | [[ |
+ | [[zh-hans:Locale]] |
+ | {{Related articles start}} |
||
− | [[zh-CN:Locale]] |
||
+ | {{Related|環境変数}} |
||
− | Linux では Locale を使ってユーザーがどの言語を使うか定義します。また、locale は使われる文字セットも定義するので、あなたの使っている言語が非 ASCII 文字を含んでいる場合、正しい locale を設定することは特に重要になります。 |
||
+ | {{Related|ローカリゼーション}} |
||
+ | {{Related articles end}} |
||
+ | ロケール (Locale) は {{Pkg|glibc}} などのロケールに対応しているプログラムやライブラリによって使われ、テキストのレンダリング、時刻や日付、地域通貨の正しい表示、アルファベットなどの決まり事が設定されます。 |
||
+ | == ロケールの生成 == |
||
− | Locale の名前は次のフォーマットを使って定義されます: |
||
+ | |||
− | <lang>_<territory>.<codeset>[@<modifiers>] |
||
+ | ロケール名は基本的に {{ic|language[_territory][.codeset][@modifier]}} という形式になっています。''language'' は [[w:ja:ISO 639-1コード一覧|ISO 639 言語コード]]、''territory'' は [[w:ja:ISO_3166-1|ISO 3166 国名コード]]、''codeset'' は[[w:ja:文字集合|文字集合]]または [[w:ja:ISO/IEC 8859-1|ISO-8859-1]] や [[w:ja:UTF-8|UTF-8]] などのエンコーディングです。詳しくは {{man|3|setlocale}} を参照してください。 |
||
+ | |||
+ | 利用可能なロケールのリストを確認するには、以下のコマンドを実行: |
||
− | ==必要なロケールを有効にする== |
||
− | locale は使用する前に、まずシステムで有効にする必要があります。全ての利用可能な locale を表示するには: |
||
$ locale -a |
$ locale -a |
||
+ | |||
− | 有効にするには、{{ic|/etc/locale.gen}} ファイルの中の有効にする locale をアンコメントしてください。このファイルにはシステムで使うことができる全ての locale が含まれています。locale を無効にしたいときは戻すだけです。必要な locale を有効にした後、システムをアップデートしなくてはなりません: |
||
+ | システムでロケールを利用するには、まず生成する必要があります。{{ic|/etc/locale.gen}} の中の適当なエントリをアンコメントして ''locale-gen'' を実行することで生成できます。同じく、エントリをコメントアウトするとロケールは無効になります。変更するときは、システム上の他のユーザーが必要としている言語や特定の[[#変数|変数]]にも注意してください。 |
||
+ | |||
+ | 例えば日本語の {{ic|ja_JP.UTF-8 UTF-8}} をアンコメントする場合: |
||
+ | |||
+ | {{hc|/etc/locale.gen| |
||
+ | ... |
||
+ | #ja_JP.EUC-JP EUC-JP |
||
+ | ja_JP.UTF-8 UTF-8 |
||
+ | #ka_GE.UTF-8 UTF-8 |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | ファイルを保存して、ロケールを生成: |
||
+ | |||
# locale-gen |
# locale-gen |
||
+ | {{Note|1=<nowiki></nowiki> |
||
− | 現在使っているロケールを表示するには: |
||
+ | * {{ic|locale-gen}} は {{Pkg|glibc}} のアップデート時に毎回実行されます [https://github.com/archlinux/svntogit-packages/blob/packages/glibc/trunk/glibc.install#L5]。 |
||
+ | * {{ic|UTF-8}} を使用することが推奨されています [https://utf8everywhere.org/]。}} |
||
+ | |||
+ | == ロケールの設定 == |
||
+ | |||
+ | 現在設定されているロケールと関連する環境設定を確認するには: |
||
+ | |||
$ locale |
$ locale |
||
+ | 使用するロケールは {{ic|locale.conf}} ファイルに設定します。ファイルの中では1行毎に[[環境変数]]を設定します。''locale'' の出力と同じフォーマットです。 |
||
− | {{Tip|ほとんどの場合あなたのコンピュータで使われる言語はひとつだけですが、他のロケールも有効にしておくことは役に立つだけでなく時に必須でもあります。もし英語を喋らないユーザーとマルチユーザーシステムを使っている時は、そのユーザーの locale が少なくともシステムでサポートされていたほうが良いです。}} |
||
+ | 生成済みの利用可能なロケールを確認するには: |
||
− | ===Japanese example=== |
||
+ | $ localedef --list-archive |
||
− | 初めに {{ic|/etc/locale.gen}} の次の行をアンコメントします: |
||
− | ja_JP.UTF-8 UTF-8 |
||
+ | もしくは {{man|1|localectl}} を使用: |
||
− | それからシステムを root でアップデートします: |
||
− | # locale-gen |
||
+ | $ localectl list-locales |
||
− | ==システム全体のロケールを設定する== |
||
− | システム全体の locale を定義するには、{{ic|locale.conf}} の {{ic|/etc/locale.conf}} を設定してください。 |
||
+ | === システム全体のロケールを設定する === |
||
− | {{ic|locale.conf}} では一行毎に環境変数を指定します: {{ic|LANG}} 以外にも、{{ic|LC_ALL}} を除く全ての {{ic|LC_*}} 変数をサポートしています。 |
||
+ | システム全体のロケールを設定するには {{ic|LANG}} 変数を {{ic|/etc/locale.conf}} に書き込みます。使用するロケールは {{ic|/etc/locale.gen}} でアンコメントしたエントリの最初のカラムと同じです: |
||
− | {{Note|{{ic|/etc/locale.conf}} はデフォルトでは存在しません、手動で作らなくてはなりません。}} |
||
+ | {{hc|1=/etc/locale.conf|2= |
||
− | {{Tip|インストール中 {{ic|locale}} の出力があなたにふさわしいものだったら、次を chroot 中に実行することで時間を節約できます: {{ic| # locale > /etc/locale.conf}}。}} |
||
+ | LANG=''ja_JP.UTF-8'' |
||
+ | }} |
||
+ | {{ic|/etc/locale.conf}} を修正する代わりに、以下のコマンドを実行することでも設定可能: |
||
− | {{hc|/etc/locale.conf|2= |
||
− | LANG="ja_JP.UTF-8"}} |
||
+ | # localectl set-locale LANG=''ja_JP.UTF-8'' |
||
− | 高度な設定サンプル: |
||
+ | 他の設定など詳しくは[[#変数|変数]]や {{man|5|locale.conf}} を参照。 |
||
− | {{hc|/etc/locale.conf|2= |
||
− | # 日本語の UTF-8 を有効にする |
||
− | LANG="ja_JP.UTF-8" |
||
+ | === ユーザーセッションでシステムロケールを上書き === |
||
− | # デフォルトのソート順を保つ (例えば '.' で始まるファイルは |
||
− | # ディレクトリのリストで最初に並ぶ) |
||
− | LC_COLLATE="C" |
||
+ | システム全体のロケールは {{ic|~/.config/locale.conf}} (または {{ic|$XDG_CONFIG_HOME/locale.conf}} や {{ic|$HOME/.config/locale.conf}}) を作成・編集することでユーザーセッションで上書きできます。 |
||
− | # 短い月日表示を YYYY-MM-DD に設定 ("date +%c" でテスト) |
||
− | LC_TIME="en_DK.UTF-8"}} |
||
− | + | {{ic|locale.conf}} ファイルの優先順位は {{ic|/etc/profile.d/locale.sh}} で定義されています。 |
|
+ | {{Tip| |
||
− | # localectl set-locale LANG="ja_JP.UTF-8" |
||
+ | * {{ic|/var/log}} のログは英語のままで、ユーザー環境では自分の言語を使うということが可能です。 |
||
+ | * {{ic|/etc/skel/.config/locale.conf}} ファイルを作成することで ''useradd'' と {{ic|-m}} オプションで追加された新しいユーザーの {{ic|~/.config/locale.conf}} が自動的に生成されます。}} |
||
+ | === ロケールを即座に変更する === |
||
− | 詳しくは {{ic|man 1 localectl}} や {{ic|man 5 locale.conf}} を見て下さい。 |
||
+ | システムやユーザーの {{ic|locale.conf}} ファイルを作成・編集した場合、新しく設定した値は次にログインしたときに有効になります。新しい設定をすぐに使うには {{ic|LANG}} の設定を解除して {{ic|/etc/profile.d/locale.sh}} を source してください: |
||
− | 再起動した後に設定が反映され、ログイン時の個々のセッションごとに locale が設定されます。 |
||
+ | $ unset LANG |
||
− | ==フォールバック locale を設定== |
||
+ | $ source /etc/profile.d/locale.sh |
||
− | 翻訳に gettext を使っているプログラムは、通常使われる設定と合わせて {{Ic|LANGUAGE}} オプションを使います。これによってユーザーは locale の [http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable リスト] を指定して、使われる順番を設定できます。好ましいロケールの翻訳がなされていない場合、他のロケールがデフォルトに代わって使われることになります。例えば、オーストラリアのユーザーはアメリカ流の綴りよりも英国流のほうが好ましいかもしれません: |
||
+ | |||
− | {{hc|/etc/locale.conf|2= |
||
+ | {{Note|最初に {{ic|LANG}} 変数の設定を解除しないと、{{ic|locale.sh}} は {{ic|locale.conf}} の値を反映しません。新しい、変更した変数だけが反映されます。{{ic|locale.conf}} から削除した値はセッション内で残り続けます。}} |
||
− | LANG="en_AU.UTF-8" |
||
+ | |||
− | export LANGUAGE="en_AU:en_GB:en" |
||
+ | === 他の使用方法 === |
||
+ | |||
+ | [[環境変数]]で説明されている方法でロケール変数を定義することも可能です。 |
||
+ | |||
+ | 例えば、開発中に特定のアプリケーションをテスト・デバッグしたいとき、以下のように起動することができます: |
||
+ | |||
+ | $ LANG=C ./my_application.sh |
||
+ | |||
+ | 同じく、現在のシェルから実行する全てのプロセルにロケールを設定するには (例えば、システムのインストール中などに使うと有用です): |
||
+ | |||
+ | $ export LANG=C |
||
+ | |||
+ | == 変数 == |
||
+ | |||
+ | {{ic|locale.conf}} ファイルは以下の環境変数をサポートしています: |
||
+ | |||
+ | * [[#LANG: デフォルトロケール|LANG]] |
||
+ | * [[#LANGUAGE: フォールバックロケール|LANGUAGE]] |
||
+ | * {{ic|LC_ADDRESS}} |
||
+ | * [[#LC_COLLATE: 照合順序|LC_COLLATE]] |
||
+ | * {{ic|LC_CTYPE}} |
||
+ | * {{ic|LC_IDENTIFICATION}} |
||
+ | * {{ic|LC_MEASUREMENT}} |
||
+ | * {{ic|LC_MESSAGES}} |
||
+ | * {{ic|LC_MONETARY}} |
||
+ | * {{ic|LC_NAME}} |
||
+ | * {{ic|LC_NUMERIC}} |
||
+ | * {{ic|LC_PAPER}} |
||
+ | * {{ic|LC_TELEPHONE}} |
||
+ | * [[#LC_TIME: 日付と時刻の形式|LC_TIME]] |
||
+ | |||
+ | 上記の {{ic|LC_*}} 変数の意味は {{man|7|locale}} の man ページに、詳しい説明は {{man|5|locale}} の man ページに存在します。 |
||
+ | |||
+ | {{Note|複数の環境変数が設定されている場合の優先順位は [[https://www.gnu.org/software/gettext/manual/gettext.html#Locale-Environment-Variables GNU gettext のドキュメント]]に述べられています。 |
||
+ | |||
+ | === LANG: デフォルトロケール === |
||
+ | |||
+ | この変数で設定されたロケールは {{ic|LC_*}} 変数全てで使われます (明示的に別のロケールを設定した場合はそちらが優先されます)。 |
||
+ | |||
+ | 例えば、数値や日付などはスペイン語表記にしつつメッセージを英語で表示するには、{{ic|LANG}} を {{ic|es_ES.UTF-8}} に、{{ic|LC_MESSAGES}} を {{ic|en_US.UTF-8}} に設定します。 |
||
+ | |||
+ | === LANGUAGE: フォールバックロケール === |
||
+ | |||
+ | {{Pkg|gettext}} を使って翻訳されたプログラムは通常の変数に加えて {{Ic|LANGUAGE}} オプションも認識します。ユーザーは [https://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable ロケールの使用順序] を指定することが可能です。もし一番使用したい言語が使えない場合、デフォルトのロケールの代わりに別の似たようなロケールが使われます。例えば、アメリカ流の綴りよりも英国流の綴りを好むオーストラリアのユーザーの場合: |
||
+ | |||
+ | {{hc|locale.conf|2= |
||
+ | LANG=en_AU.UTF-8 |
||
+ | LANGUAGE=en_AU:en_GB:en |
||
}} |
}} |
||
+ | === LC_TIME: 日付と時刻の形式 === |
||
− | ==ユーザーごとにロケールを設定== |
||
− | 先に触れたように、ユーザー別にシステム全体のロケールとは異なった locale を使えます。これには、{{Ic|LANG}} 変数のロケールの定義を {{ic|~/.bashrc}} ファイルに写すことで実現できます。例えば、{{Ic|ja_JP.UTF-8}} ロケールを使うには: |
||
− | export LANG=ja_JP.UTF-8 |
||
+ | 例えば {{ic|LC_TIME}} が {{ic|en_US.UTF-8}} に設定されていた場合、日付フォーマットは "MM/DD/YYYY" になります。ISO 8601 の日付フォーマットである "YYYY-MM-DD" を使いたい場合: |
||
− | ロケールは次に {{ic|~/.bashrc}} が source された時に更新されます。更新するには、ログインしなおすか、手動で source してください: |
||
− | $ source ~/.bashrc |
||
+ | {{hc|locale.conf|2= |
||
− | ==照合順序を設定== |
||
+ | LC_TIME=en_DK.UTF-8 |
||
− | 照合順序、もしくは並び替え、には少し変わったところがあります。並び替えはグーフィー(間抜け動物)でありロケール毎に異なったことをします。潜在的な問題を迂回するために、Arch では {{ic|/etc/profile}} で {{ic|1=LC_COLLATE="C"}} を設定することになっていました。しかし、現在この方法は既に使われていません。同じ挙動を有効にするには、{{ic|/etc/locale.conf}} に次を追加してください: |
||
+ | }} |
||
− | LC_COLLATE="C" |
||
+ | {{Note|1=プログラムは必ずしも変数によって指定されたフォーマットで日付を表示するとは限りません。例えば {{man|1|date}} は別のパラメータを使って指定するようになっています。また [[Firefox]] 57以降では {{ic|LC_TIME}} が考慮されていません ([https://bugzilla.mozilla.org/show_bug.cgi?id=1429578 Bug 1429578])。}} |
||
− | {{ic|ls}} コマンドは今ではドットファイルを先に並べ、その後に大文字、小文字のファイル名と続きます。{{ic|LC_COLLATE}} の設定をしないと、ロケールの設定に従うプログラムでは {{ic|LC_ALL}} や {{ic|LANG}} によってソートします。しかし {{ic|LC_COLLATE}} の設定は {{ic|LC_ALL}} がセットされると上書きされます。このことが問題になるのならば、{{ic|LC_ALL}} がセットされないように {{ic|/etc/profile}} に次を加えて下さい: |
||
− | export LC_ALL= |
||
− | {{ic|LC_ALL}} は LC 変数の中で唯一 {{ic|/etc/locale.conf}} で'''セットできません'''。 |
||
+ | === LC_COLLATE: 照合順序 === |
||
− | ==週の始まりの曜日を設定する== |
||
− | 多くの国では週の初めは月曜日です。これを変えるには、{{ic|/usr/share/i18n/locales/<your_locale>}} の {{ic|LC_TIME}} セクションに次の行を追加・変更してください: |
||
+ | ソートや正規表現で使われる照合順序を管理する変数です。 |
||
− | week 7;19971130;5 |
||
− | first_weekday 2 |
||
− | first_workday 2 |
||
+ | 例えば値を {{ic|C}} に設定することで ''ls'' コマンドはドットファイルを先に表示して、大文字・小文字のファイル名を後にします: |
||
− | それからシステムをアップデートします: |
||
− | + | {{hc|locale.conf|2= |
|
+ | LC_COLLATE=C |
||
+ | }} |
||
+ | 詳しくは [https://superuser.com/a/448294/175967] を参照してください。 |
||
− | {{Tip|もしシステムに問題が発生して、フォーラムやメーリングリスト、その他の方法で助けを求めたいときは、問題のあるプログラムから {{ic|export LC_MESSAGES=C}} で出力させたメッセージを付け加えてください。これはアウトプットメッセージ(エラーやウォーニング)を英語に設定するもので、その問題がなんなのか多くの人が理解できるようになります。勿論、英語でないフォーラムに投稿するときは関係ありません。}} |
||
+ | 潜在的な問題を回避するため、Arch では以前 {{ic|/etc/profile}} で {{ic|1=LC_COLLATE=C}} と設定していましたが、現在は使われなくなっています。 |
||
− | ==トラブルシューティング== |
||
− | ===ターミナルが UTF-8 をサポートしていません=== |
||
− | 不運なことに、ターミナルには UTF-8 をサポートしていないものがあります。違うターミナルを使ってください。UTF-8 をサポートしているターミナル: |
||
+ | === LC_ALL: トラブルシューティング === |
||
− | * vte-based terminals |
||
− | * gnustep-terminal |
||
− | * konsole |
||
− | * [[mlterm]] |
||
− | * [[rxvt-unicode]] |
||
− | * [[xterm]] |
||
+ | この変数で設定されたロケールは常に {{ic|LANG}} と他の {{ic|LC_*}} 変数よりも優先して使われます。 |
||
− | ====Xterm が UTF-8 をサポートしていません==== |
||
− | {{pkg|xterm}} は、{{Ic|uxterm}} か {{Ic|xterm -u8}} で起動した時だけ UTF-8 をサポートします。 |
||
+ | {{ic|LC_ALL}} は {{ic|locale.conf}} ファイルで設定できない唯一の {{ic|LC_*}} 変数です。あくまで {{ic|/etc/profile}} などで使うテスト用あるいはトラブルシューティング用の変数です。 |
||
− | ====Gnome-terminal や rxvt-unicode が UTF-8 をサポートしていません==== |
||
+ | |||
− | それらのアプリケーションを UTF-8 ロケールから起動してください。上の指示に従って {{ic|en_US.UTF-8}} locale (もしくはあなたの言語の UTF-8) を有効にしてからデフォルト locale に設定して、再起動します。 |
||
+ | == トラブルシューティング == |
||
+ | |||
+ | エンコードの問題については [[文字コード#トラブルシューティング]] を確認してください。 |
||
+ | |||
+ | === 設定を変更しても言語が変わらない === |
||
+ | |||
+ | {{ic|locale.conf}} 以外の他のファイルによって環境変数が再定義されている可能性があります。詳しくは[[環境変数#変数の定義]]を参照してください。 |
||
+ | |||
+ | [[GNOME]] などのデスクトップ環境を使用している場合、{{ic|locale.conf}} の設定がデスクトップ環境の言語設定で上書きされることがあります。 |
||
+ | |||
+ | [[KDE]] Plasma も UI の言語を Plsama 側で変更できます。変更後にもデフォルト言語が表示されている場合、[https://bbs.archlinux.org/viewtopic.php?pid=1435219#p1435219] にあるように {{ic|~/.config/plasma-localerc}} (以前は {{ic|~/.config/plasma-locale-settings.sh}} でした) を削除すると解決するはずです。 |
||
+ | |||
+ | ディスプレイマネージャを {{pkg|accountsservice}} と組み合わせて使っている場合、[[ディスプレイマネージャ#ユーザセッションで使う言語を設定する]] の指示に従ってください。 |
||
+ | |||
+ | [[LightDM]] は、{{pkg|accountsservice}} がインストールされている場合、自動的に {{pkg|accountsservice}} を使用してユーザのロケールを設定します。インストールされていない場合、LightDM はユーザセッションの設定を {{ic|~/.dmrc}} 内に保存します。望まないロケールの設定がそのファイルから取得されている可能性もあります。 |
||
+ | |||
+ | === カスタムのロケールを使うと問題が発生する === |
||
+ | |||
+ | 公式にサポートされていないロケール (例: {{AUR|locale-en_xx}}) をインストールすると、次のようないくつかの問題が発生する可能性があります: [https://youtrack.jetbrains.com/issue/IDEA-59679/Cannot-type-dead-keys-in-Linux#focus=Comments-27-5724886.0-0 デッドキー (compose キー) が一部のアプリケーションで機能しない]、[https://git.suckless.org/tabbed/commit/aa5f91e0d54333e4da247528f5eacb721710d16d.html#h0-0-304 ロケールが存在しないとアプリケーションが報告する]。 |
||
+ | これらの問題を解決するために、カスタムのロケールをインストールした後に手動の介入が必要になります。 |
||
+ | [https://xyne.dev/projects/locale-en_xx/#usage 2つのアプローチ]があります ({{ic|en_XX.UTF-8}} は任意のカスタムロケールに置き換えてください): |
||
+ | |||
+ | ==== LC_CTYPE を設定する ==== |
||
+ | |||
+ | {{ic|LC_CTYPE}} を公式にサポートされているロケール (例えば {{ic|en_US.UTF-8}}) に設定します。例えば: |
||
+ | |||
+ | {{hc|/etc/locale.conf|2= |
||
+ | LANG=en_XX.UTF-8 |
||
+ | LC_CTYPE=en_US.UTF-8 |
||
+ | }} |
||
+ | |||
+ | ==== Xlib データベースを修正する ==== |
||
+ | |||
+ | 以下を追加して Xlib データベースを修正します: |
||
+ | |||
+ | {{hc|/usr/share/X11/locale/locale.dir| |
||
+ | en_US.UTF-8/XLC_LOCALE en_XX.UTF-8 |
||
+ | en_US.UTF-8/XLC_LOCALE: en_XX.UTF-8 |
||
+ | }} |
||
+ | |||
+ | {{hc|/usr/share/X11/locale/compose.dir| |
||
+ | en_US.UTF-8/Compose en_XX.UTF-8 |
||
+ | en_US.UTF-8/Compose: en_XX.UTF-8 |
||
+ | }} |
||
+ | == 参照 == |
||
− | ====設定を変更しても GNOME の言語が変わらない==== |
||
− | いくつかの GUI ツールは環境変数の定義に {{ic|~/.pam_environment}} を使っています。GNOME はこのファイルを読みます。 |
||
+ | * [https://wiki.gentoo.org/wiki/Localization/Guide/ja Gentoo Linux ローカリゼーションガイド] |
||
− | ==参照== |
||
− | * [https://wiki.gentoo.org/wiki/Localization/HOWTO/ja Gentoo Linux ローカライゼーションガイド] |
||
− | * [http://www.gentoo-wiki.info/Locales Gentoo Wiki Archives: Locales] |
||
* [http://demo.icu-project.org/icu-bin/locexp?_=en_US&x=col ICU's interactive collation testing] |
* [http://demo.icu-project.org/icu-bin/locexp?_=en_US&x=col ICU's interactive collation testing] |
||
* [http://www.openi18n.org/ Free Standards Group Open Internationalisation Initiative] |
* [http://www.openi18n.org/ Free Standards Group Open Internationalisation Initiative] |
2024年8月17日 (土) 19:16時点における最新版
ロケール (Locale) は glibc などのロケールに対応しているプログラムやライブラリによって使われ、テキストのレンダリング、時刻や日付、地域通貨の正しい表示、アルファベットなどの決まり事が設定されます。
ロケールの生成
ロケール名は基本的に language[_territory][.codeset][@modifier]
という形式になっています。language は ISO 639 言語コード、territory は ISO 3166 国名コード、codeset は文字集合または ISO-8859-1 や UTF-8 などのエンコーディングです。詳しくは setlocale(3) を参照してください。
利用可能なロケールのリストを確認するには、以下のコマンドを実行:
$ locale -a
システムでロケールを利用するには、まず生成する必要があります。/etc/locale.gen
の中の適当なエントリをアンコメントして locale-gen を実行することで生成できます。同じく、エントリをコメントアウトするとロケールは無効になります。変更するときは、システム上の他のユーザーが必要としている言語や特定の変数にも注意してください。
例えば日本語の ja_JP.UTF-8 UTF-8
をアンコメントする場合:
/etc/locale.gen
... #ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8 #ka_GE.UTF-8 UTF-8 ...
ファイルを保存して、ロケールを生成:
# locale-gen
ロケールの設定
現在設定されているロケールと関連する環境設定を確認するには:
$ locale
使用するロケールは locale.conf
ファイルに設定します。ファイルの中では1行毎に環境変数を設定します。locale の出力と同じフォーマットです。
生成済みの利用可能なロケールを確認するには:
$ localedef --list-archive
もしくは localectl(1) を使用:
$ localectl list-locales
システム全体のロケールを設定する
システム全体のロケールを設定するには LANG
変数を /etc/locale.conf
に書き込みます。使用するロケールは /etc/locale.gen
でアンコメントしたエントリの最初のカラムと同じです:
/etc/locale.conf
LANG=ja_JP.UTF-8
/etc/locale.conf
を修正する代わりに、以下のコマンドを実行することでも設定可能:
# localectl set-locale LANG=ja_JP.UTF-8
他の設定など詳しくは変数や locale.conf(5) を参照。
ユーザーセッションでシステムロケールを上書き
システム全体のロケールは ~/.config/locale.conf
(または $XDG_CONFIG_HOME/locale.conf
や $HOME/.config/locale.conf
) を作成・編集することでユーザーセッションで上書きできます。
locale.conf
ファイルの優先順位は /etc/profile.d/locale.sh
で定義されています。
ロケールを即座に変更する
システムやユーザーの locale.conf
ファイルを作成・編集した場合、新しく設定した値は次にログインしたときに有効になります。新しい設定をすぐに使うには LANG
の設定を解除して /etc/profile.d/locale.sh
を source してください:
$ unset LANG $ source /etc/profile.d/locale.sh
他の使用方法
環境変数で説明されている方法でロケール変数を定義することも可能です。
例えば、開発中に特定のアプリケーションをテスト・デバッグしたいとき、以下のように起動することができます:
$ LANG=C ./my_application.sh
同じく、現在のシェルから実行する全てのプロセルにロケールを設定するには (例えば、システムのインストール中などに使うと有用です):
$ export LANG=C
変数
locale.conf
ファイルは以下の環境変数をサポートしています:
- LANG
- LANGUAGE
LC_ADDRESS
- LC_COLLATE
LC_CTYPE
LC_IDENTIFICATION
LC_MEASUREMENT
LC_MESSAGES
LC_MONETARY
LC_NAME
LC_NUMERIC
LC_PAPER
LC_TELEPHONE
- LC_TIME
上記の LC_*
変数の意味は locale(7) の man ページに、詳しい説明は locale(5) の man ページに存在します。
{{Note|複数の環境変数が設定されている場合の優先順位は [GNU gettext のドキュメント]に述べられています。
LANG: デフォルトロケール
この変数で設定されたロケールは LC_*
変数全てで使われます (明示的に別のロケールを設定した場合はそちらが優先されます)。
例えば、数値や日付などはスペイン語表記にしつつメッセージを英語で表示するには、LANG
を es_ES.UTF-8
に、LC_MESSAGES
を en_US.UTF-8
に設定します。
LANGUAGE: フォールバックロケール
gettext を使って翻訳されたプログラムは通常の変数に加えて LANGUAGE
オプションも認識します。ユーザーは ロケールの使用順序 を指定することが可能です。もし一番使用したい言語が使えない場合、デフォルトのロケールの代わりに別の似たようなロケールが使われます。例えば、アメリカ流の綴りよりも英国流の綴りを好むオーストラリアのユーザーの場合:
locale.conf
LANG=en_AU.UTF-8 LANGUAGE=en_AU:en_GB:en
LC_TIME: 日付と時刻の形式
例えば LC_TIME
が en_US.UTF-8
に設定されていた場合、日付フォーマットは "MM/DD/YYYY" になります。ISO 8601 の日付フォーマットである "YYYY-MM-DD" を使いたい場合:
locale.conf
LC_TIME=en_DK.UTF-8
LC_COLLATE: 照合順序
ソートや正規表現で使われる照合順序を管理する変数です。
例えば値を C
に設定することで ls コマンドはドットファイルを先に表示して、大文字・小文字のファイル名を後にします:
locale.conf
LC_COLLATE=C
詳しくは [3] を参照してください。
潜在的な問題を回避するため、Arch では以前 /etc/profile
で LC_COLLATE=C
と設定していましたが、現在は使われなくなっています。
LC_ALL: トラブルシューティング
この変数で設定されたロケールは常に LANG
と他の LC_*
変数よりも優先して使われます。
LC_ALL
は locale.conf
ファイルで設定できない唯一の LC_*
変数です。あくまで /etc/profile
などで使うテスト用あるいはトラブルシューティング用の変数です。
トラブルシューティング
エンコードの問題については 文字コード#トラブルシューティング を確認してください。
設定を変更しても言語が変わらない
locale.conf
以外の他のファイルによって環境変数が再定義されている可能性があります。詳しくは環境変数#変数の定義を参照してください。
GNOME などのデスクトップ環境を使用している場合、locale.conf
の設定がデスクトップ環境の言語設定で上書きされることがあります。
KDE Plasma も UI の言語を Plsama 側で変更できます。変更後にもデフォルト言語が表示されている場合、[4] にあるように ~/.config/plasma-localerc
(以前は ~/.config/plasma-locale-settings.sh
でした) を削除すると解決するはずです。
ディスプレイマネージャを accountsservice と組み合わせて使っている場合、ディスプレイマネージャ#ユーザセッションで使う言語を設定する の指示に従ってください。
LightDM は、accountsservice がインストールされている場合、自動的に accountsservice を使用してユーザのロケールを設定します。インストールされていない場合、LightDM はユーザセッションの設定を ~/.dmrc
内に保存します。望まないロケールの設定がそのファイルから取得されている可能性もあります。
カスタムのロケールを使うと問題が発生する
公式にサポートされていないロケール (例: locale-en_xxAUR) をインストールすると、次のようないくつかの問題が発生する可能性があります: デッドキー (compose キー) が一部のアプリケーションで機能しない、ロケールが存在しないとアプリケーションが報告する。
これらの問題を解決するために、カスタムのロケールをインストールした後に手動の介入が必要になります。
2つのアプローチがあります (en_XX.UTF-8
は任意のカスタムロケールに置き換えてください):
LC_CTYPE を設定する
LC_CTYPE
を公式にサポートされているロケール (例えば en_US.UTF-8
) に設定します。例えば:
/etc/locale.conf
LANG=en_XX.UTF-8 LC_CTYPE=en_US.UTF-8
Xlib データベースを修正する
以下を追加して Xlib データベースを修正します:
/usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE en_XX.UTF-8 en_US.UTF-8/XLC_LOCALE: en_XX.UTF-8
/usr/share/X11/locale/compose.dir
en_US.UTF-8/Compose en_XX.UTF-8 en_US.UTF-8/Compose: en_XX.UTF-8