地域化/ガイド
タイムゾーン
現在位置に応じて、システム時間を維持するために、時間帯を設定する必要があります。OpenRC ベースのシステムおよび systemd ベースのシステムのためにこれを行う方法手順は、システム時刻の記事で見つけることができます。
ロケールシステム
ロケールとは何ですか?
ロケールは、国や言語に特有の設定を決定するために使う情報の集合体で、大抵のプログラムがこれを利用します。ロケールとそのデータはシステムライブラリの一部であり、ほとんどのシステムにおいて /usr/share/i18n/locales/ ディレクトリ下にあります。ロケール名は一般に、ab_CD
という形式で命名されます。ここで ab
は 2 (または 3) 文字の言語コード (ISO-639 で規定) であり、CD
は 2 文字の国コード (ISO-3166 で規定) になります。@euro
または @latin
のような変形情報 (バリアント) がロケール名に追加されることもよくあります。
例えば、de_DE@euro
や nan_TW@latin
です。ロケールと関連する記事をもっと読むには、Wikipedia (英語) を探してみてください。
ロケール関連の環境変数
ロケール設定の色々な側面を制御する環境変数を以下の表に示します。
これらのすべては、上記のab_CD
形式で表記されたロケール名を1つだけ設定できます。
変数名 | 説明 |
---|---|
LANG | 一度に全てのロケール設定を定義します。同時に、以下のLC_*設定を使うと、個別のカスタマイズが可能です。 |
LC_COLLATE | 文字列におけるアルファベットの順序を定義します。これは、例えば並び替えされたディレクトリ一覧の出力などに影響を与えます。 |
LC_CTYPE | そのシステムでの文字取り扱い属性を定義します。これは、どの文字がアルファベットや数値などの一部とみなすか、などを決定します。該当する場合、使用される文字集合も決定します。 |
LC_MESSAGES | プログラムで使用するローカライズ言語(/usr/share/locale/ から指定します)。メッセージベースの多言語対応手法を使ったアプリケーション (GNUプログラムの大部分) 用です。 |
LC_MONETARY | 通貨単位と通貨型の数値の書式を定義します。 |
LC_NUMERIC | 通貨ではない数値の書式を定義します。たとえば桁の区切りや小数点記号などのものに影響します。 |
LC_TIME | 日付と時刻の書式を定義します。 |
LC_PAPER | 既定の紙の大きさを定義します。 |
LC_ALL | 他のすべての設定を上書きするための特殊な環境変数です。 |
あるロケール (特にエストニアのもの) では異なる順序付けを使用しているにも関わらず、いくつかのプログラムは、アルファベットの伝統的な英語での順序付けを期待して書かれています。そのため、システム全体の設定を行う際、明確にLC_COLLATEへCを設定しておくことをお勧めします。
LC_ALLを設定するのは、(LANGを除く)他の全ての LC_*変数の設定を上書きしてしまうので、特に避けるべきです。つまり、LC_ALLをリセットしない限りは他の手段による変更が有効にならないということです。大概は、起動時にLC_ALLを設定することは最良の選択ではないでしょう。
最も一般的なのは、ユーザがLANG変数のみをグローバルに設定することです。
特定のロケールの生成
ほとんどのユーザは、おそらくシステムで1つ、もしかしたら2つのロケールを使用するでしょう。追加のロケールをどのように指定するかについては、ファイル/etc/locale.genの中に説明があります。
en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
ユーロ通貨記号 (€) を非UTF-8ベースのロケールで使う場合、/usr/share/i18n/SUPPORTED の中の
@euro
が付いた値をロケールとして使用してください。次のステップは、locale-gen を実行することです。これは、/etc/locale.gen ファイルの中で指定された全てのロケールを生成し、ロケールアーカイブ (/usr/lib/locale/locale-archive) に書き込みます。
root #
locale-gen
* Generating 4 locales (this might take a while) with 1 jobs * (1/4) Generating en_GB.ISO-8859-1 ... [ ok ] * (2/4) Generating en_GB.UTF-8 ... [ ok ] * (3/4) Generating de_DE.ISO-8859-1 ... [ ok ] * (4/4) Generating de_DE.ISO-8859-15@euro ... [ ok ] * Generation complete
locale -a を実行して、選択したロケールが使用可能かを確認してください。
user $
locale -a
C POSIX de_DE de_DE.iso88591 de_DE.iso885915@euro de_DE@euro deutsch en_GB en_GB.iso88591 en_GB.utf8 german
/usr/lib/locale/locale-archive ファイルは、localedef を使って表示できます。
user $
localedef --list-archive
その未加工の内容は、strings コマンドを使って表示可能です。
user $
strings /usr/lib/locale/locale-archive | less
ロケール設定
OpenRC
OpenRC を使用する際、ロケール設定は環境変数に格納されます。一般的には、/etc/env.d/02locale (システム全体の設定用) と ~/.bashrc (ユーザ固有の設定用) で設定します。詳細は記事 UTF-8 に記載されています。システム全体の設定 (/etc/env.d/02locale) は eselect locale を通じて管理できます。例えば、LANG 変数を C
という値に設定するには:
root #
eselect locale list
Available targets for the LANG variable: [1] C [2] POSIX [3] en_US [4] en_US.iso885915 [5] en_US.utf8 [ ] (free form)
root #
eselect locale set 1
もちろん、手動でファイルを編集することで、ロケール変数を様々に変化させることも可能です。
このコマンドは、小文字でハイフンの無い形式の接尾辞を表示します。glibc はどちらの形式も認識できますが、多くのプログラムはそうではありません。もっともよく使用される例が X です。そのため、いつでも utf8 より UTF-8 を優先して使うのがベストです。
LANG="de_DE.UTF-8"
LC_COLLATE="C.UTF-8"
いくつかの場合では、ユーザはKrusaderのような一部のアプリケーションにおいて、英語でない表記に欠陥を見つけるかもしれません(https://bugs.kde.org/show_bug.cgi?id=371582) 。/etc/env.d/02localeからLC_ALL=""
の行を取り除くかコメントアウトすることでこの問題は直るはずです。
特に、より伝統的なUNIX環境ではかなり一般的なのですが、グローバル設定
を不変のまま (すなわち C
ロケール) にしておくことも可能です。それでもユーザは、自分のシェルの設定ファイルで自分の優先ロケールを指定することが可能です:
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"
システムを構成する別の方法は、既定はC
ロケールにしたまま、同時にUTF-8での文字表示を有効にすることです。このオプションは、/etc/env.d/02locale で下記のような設定を使用することで実現できます:
LC_CTYPE=de_DE.UTF-8
上記のスニペットを使うと、ユーザは選択した言語を全面的に使用しなくとも、ローカライズされたファイル名を適切に見ることができるようになります。
一旦、正しいロケールを設定したら、変更をシステムに認識させるため、環境変数を更新してください。
システム全体の既定ロケールならば:
root #
env-update && source /etc/profile
ユーザ固有のロケールならば:
user $
source ~/.bashrc
その後、Ctrl+Alt+Backspaceを押してXサーバを殺し 、ログアウトしてからユーザとしてログインしてください。
では、変更内容が反映されていることを確認してください:
user $
locale
明示的に設定されているロケール環境変数の値、例えば export 文 (bash を使用している場合) によって設定されているものは、ダブルクォーテーション無しで表示されます。他のロケール環境変数から継承された値は、ダブルクォーテーション付きで表示されます。
systemd
systemdの場合、ロケールの設定には localectl コマンドを使います。利用可能なロケール一覧を確認するには:
root #
localectl list-locales
次に、目的のロケールを設定します:
root #
localectl set-locale LANG=de_DE.utf8
最後に結果がうまくいっているかを確認してください:
root #
localectl | grep "System Locale"
System Locale: LANG=de_DE.utf8
コンソール用のキーボードレイアウト
OpenRC
コンソールが使用するキーボードのレイアウトは、/etc/conf.d/keymapsの中のkeymap変数によって設定されています。有効な値は/usr/share/keymaps/YOUR_ARCH/に記載されています。i386は、更にレイアウトごとに細分化されています (例えばqwerty/、azerty/)。さまざまなオプションの、どれがニーズに対して最高に適合しているかの決定を試みるため、いくつかの言語には複数のオプションがあります。
keymap="de"
#keymap="de-latin1"
#keymap="de-latin1-nodeadkeys"
systemd
systemdでは、コンソールで使用されるキーマップレイアウトは localectl コマンドを使って設定できます。最初に、利用可能なキーマップレイアウトを確認します:
root #
localectl list-keymaps
次に、要求されたコンソールキーマップレイアウトを設定します:
root #
localectl set-keymap it
最後に適切にコンソールキーマップレイアウトが設定されているかを確認します:
root #
localectl | grep "VC Keymap"
VC Keymap: it
X サーバ用のキーボードレイアウト
OpenRC
X サーバが使用するキーボードレイアウトは、/etc/X11/xorg.conf.d/30-keyboard.conf の中の XkbLayout オプションで指定されています。詳細は、Xorg ガイドとキーボードレイアウトの切替えの記事を参照してください。
systemd
systemdでは、X11サーバで使用されるキーマップレイアウトは localectl コマンドを使って設定できます。最初に、利用可能なX11キーマップレイアウトを確認します:
root #
localectl list-x11-keymap-layouts
次に、要求されたX11キーマップレイアウトを設定します:
root #
localectl set-x11-keymap it
最後に適切にX11キーマップレイアウトが設定されているかを確認します:
root #
localectl | grep "X11 Layout"
X11 Layout: it
Native Language Support
nls
USEフラグを持っていてメッセージベースのローカライゼーションに対応しているプログラムでこれを使うためには、このフラグをセットしてプログラムをコンパイルしてください。メッセージ文字列は /usr/share/locale/<locale>/LC_MESSAGES/<package>.mo ファイルにインストールされます。Native Language Support (NLS)を使っているプログラムの大半は、ローカライズされたメッセージを展開し使用するためにgettextライブラリも必要とします。もちろん、Portageは必要なら自動でこれをインストールしてくれます。
nls
USEフラグを設定した後は、いくつかのパッケージを再emergeする必要があるかもしれません:
root #
emerge --ask --changed-use --deep --with-bdeps=y @world
LINGUAS
LINGUASはパッケージに、暗黙のうちにロケールをスキップさせます。この変数を使う時、パッケージマネージャはどのロケールが省略されたかを確定することができません。もしバイナリパッケージを再配布しようとしている時にはLINGUASを使用しないでください。
他にも、どのローカライゼーションファイルがビルドされインストールされたかをコントロールする、gettext をベースとする一部のビルドシステムが使用する LINGUAS 変数が存在します。この変数はスペース区切りの言語コードのリストを受け取ります。変数を設定する場所の候補は /etc/portage/make.conf です:
root #
nano -w /etc/portage/make.conf
## (LINGUAS 変数を追加する。例えばドイツ語とフィンランド語と英語:) LINGUAS="de fi en"
LINGUAS に何もセットされていないのと、LINGUAS が空の値であることには大きな違いがあることに注意してください。LINGUAS に何もセットされていないのは、利用可能な言語をすべてインストールするという意味です。対して、LINGUAS=""
のようにすると、大抵の ebuild はパッケージのデフォルト言語だけをインストールし、LC_MESSAGES
ファイルは何もインストールしません。
LINGUAS が正しく設定されていないと、KDE Plasma やそのアプリケーションなど、一部のアプリケーションで翻訳が不完全な状態になることがあります。この問題に直面したときは、LINGUAS を削除して、関連するパッケージを再ビルドしてみてください。
L10N
L10Nと呼ばれるUSE_EXPAND変数は、どの追加ローカライゼーションサポートがインストールされるかを決定します。これは一般に、パッケージによる追加の言語パックのインストールに使用されます。LINGUASと同じように、この変数は空白区切りで言語タグのリストを持ち、 /etc/portage/make.conf で設定することができます:
root #
nano -w /etc/portage/make.conf
## (L10N変数を追加する。たとえば、ドイツ語とブラジルポルトガル語:) L10N="de pt-BR"
パッケージ毎に設定するには、次の例のように、/etc/portage/package.use を編集し、要求する言語パックの先頭に "l10n_" を付けます:
app-text/aspell l10n_de l10n_pt-BR
一般的な2文字の言語コード(de
やfr
のようなもの)はLINGUASとL10Nで等価ですが、より複雑なエントリーでは文法が異なります。これはL10NがIETF language tags (BCP 47 とも呼ばれる)を使っているためです。たとえば、LINGUASでのpt_BR
とsr@latin
は、L10Nではそれぞれpt-BR
とsr-Latn
になります。
利用可能なL10Nの値のリストは /var/db/repos/gentoo/profiles/desc/l10n.desc にあります:
user $
grep -i portuguese /var/db/repos/gentoo/profiles/desc/l10n.desc
pt - Portuguese pt-BR - Portuguese (Brazil) pt-PT - Portuguese (Portugal)
L10N USE_EXPANDフラグを設定した後は、いくつかのパッケージを再emergeする必要があるかもしれません:
root #
emerge --ask --changed-use --deep --with-bdeps=y @world
関連項目
- ロケールの設定 (Gentoo ハンドブック)
- Keyboard layout (Evdev の記事内)
- X resources
- Localization/Guide/The Euro symbol — how to display the Euro symbol (€) for the console and in X.
外部資料
- Locales and Internationalization (gnu.org)
- L10N USE_EXPAND variable replacing LINGUAS
- Michał Górny: How LINGUAS are thrice wrong!
- [gentoo-dev] [RFC] How to deal with LINGUAS mess?
- [gentoo-dev] [RFC] Masterplan for solving LINGUAS problems
参照
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Alexander Holler, Steven Lucy, Benny Chuang, Lars Weiler, Tobias Scherbaum, Flammie Pirinen, , Francisco Blas Izquierdo Riera (klondike)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.