ローカライゼーション/ガイド

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Localization/Guide and the translation is 100% complete.

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎

標準時

現在位置に応じて、システム時間を維持するために、時間帯を設定する必要があります。OpenRCベースのシステムおよびsystemdベースのシステムのためにこれを行う方法手順は、システム時刻の記事で見つけることができます。

ロケールシステム

ロケールとは何ですか?

ロケールは、国や言語に特有の設定を決定するために使う情報の集合体で、大抵のプログラムがこれを利用します。ロケールとそのデータはシステムライブラリの一部であり、ほとんどのシステムにおいて /usr/share/i18n/locales/ にあります。ロケール名は一般に、ab_CDという形式で命名されます。ここでabは2 (または3) 文字の言語コード (ISO-639で規定) であり、CDは2文字の国コード (ISO-3166で規定) になります。多くの場合、@euroまたは@latinのような変形情報 (バリアント) がロケール名に追加されます。 例えば、de_DE@euronan_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の中に説明があります。

CODE ロケールを/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

もちろん、手動でファイルを編集することで、ロケール変数を様々に変化させることも可能です。

FILE /etc/env.d/02locale/etc/env.d/02locale でシステムのデフォルトのロケールを設定
LANG="de_DE.UTF-8"
LC_COLLATE="C"

特に、より伝統的なUNIX環境ではかなり一般的なのですが、グローバル設定 を不変のまま (すなわち C ロケール) にしておくことも可能です。それでもユーザは、自分のシェルのRCファイルで自分の優先ロケールを指定することが可能です:

FILE ~/.bashrcユーザ用ロケールの設定
export LANG="de_DE.UTF-8"
export LC_COLLATE="C"

システムを構成する別の方法は、既定はCロケールにしたまま、同時にUTF-8での文字表示を有効にすることです。このオプションは、/etc/env.d/02locale で下記のような設定を使用することで実現できます:

CODE UTF-8を指定しながらの伝統的なCロケールの使用
LC_CTYPE=de_DE.UTF-8

上記のスニペットを使うと、ユーザは選択した言語を全面的に使用しなくとも、ローカライズされたファイル名を適切に見ることができるようになります。

一旦、正しいロケールを設定したら、変更をシステムに認識させるため、環境変数を更新してください。

システム全体の既定ロケールならば:

root #env-update && source /etc/profile

ユーザ固有のロケールならば:

user $source ~/.bashrc

その後、Ctrl+Alt+Backspaceを押してXサーバを殺し 、ログアウトしてからユーザとしてログインしてください。

では、変更内容が反映されていることを確認してください:

user $locale

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/)。さまざまなオプションの、どれがニーズに対して最高に適合しているかの決定を試みるため、いくつかの言語には複数のオプションがあります。

FILE /etc/conf.d/keymapsコンソール用キーマップの設定
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

NLS

nls (Native Language Support) USEフラグを持っていてメッセージベースのローカライゼーションに対応しているプログラムでこれを使うためには、このフラグをセットしてプログラムをコンパイルしてください。メッセージ文字列は /usr/share/locale/<locale>/LC_MESSAGES/<package>.mo ファイルにインストールされます。NLSを使っているプログラムの大半は、ローカライズされたメッセージを展開し使用するためにgettextライブラリも必要とします。もちろん、Portageは必要なら自動でこれをインストールしてくれます。

nls USEフラグを設定した後は、いくつかのパッケージを再emergeする必要があるかもしれません:

root #emerge --ask --changed-use --deep --with-bdeps=y @world

LINGUAS

LINGUAS [1]と呼ばれるUSE_EXPANDフラグも存在し、gettextベースのプログラムでインストールされるローカライゼーションファイルに影響します。この変数は空白区切りで言語コードを持ち、変数を設定する場所としては /etc/portage/make.conf が提案されています:

root #nano -w /etc/portage/make.conf
## (LINGUAS 変数を追加する。例えばドイツ語とフィンランド語と英語:)
LINGUAS="de fi en"

LINGUAS=""のようにすると、大抵のebuildはパッケージのデフォルト言語だけをインストールし、LC_MESSAGESファイルは何もインストールしません。

LINGUAS USE_EXPANDを利用しているインストール済プログラムの一覧と、それらがサポートしている言語は、次のようにして見ることができます:

user $eix -I -U linguas

利用可能なLINGUASの値のリストは /usr/portage/profiles/desc/linguas.desc にあります:

user $grep -i french /usr/portage/profiles/desc/linguas.desc
fr - French locale
fr_CA - French locale for Canada
fr_FR - French locale for France

LINGUAS USE_EXPANDフラグを設定した後は、いくつかのパッケージを再emergeする必要があるかもしれません:

root #emerge --ask --changed-use --deep --with-bdeps=y @world
Note
USE_EXPANDされる変数としてのLINGUASは、L10N変数(下記を参照)に置き換えられているところです。これは、標準のgettextの挙動との概念的な衝突を避けるためです。パッケージが変換される移行期間の後、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_" を付けます:

FILE /etc/portage/package.use
app-text/aspell l10n_de l10n_pt_BR

一般的な2文字の言語コード(defrのようなもの)はLINGUASL10Nで等価ですが、より複雑なエントリーでは文法が異なります。これはL10NIETF language tags (BCP 47 とも呼ばれる)を使っているためです。たとえば、LINGUASでのpt_BRsr@latinは、L10Nではそれぞれpt-BRsr-Latnになります。

利用可能なL10Nの値のリストは /usr/portage/profiles/desc/l10n.desc にあります:

user $grep -i portuguese /usr/portage/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

参考

外部の情報

参照

  1. LINGUAS in Gentoo Development Guide

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, nightmorph, 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.