地域化/ガイド

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

タイムゾーン

現在位置に応じて、システム時間を維持するために、時間帯を設定する必要があります。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の中に説明があります。

コード ロケールを/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 を優先して使うのがベストです。

ファイル /etc/env.d/02locale/etc/env.d/02locale でシステムのデフォルトのロケールを設定
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 ロケール) にしておくことも可能です。それでもユーザは、自分のシェルの設定ファイルで自分の優先ロケールを指定することが可能です:

ファイル ~/.bashrcユーザ用ロケールの設定
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"
ファイル ~/.profileXアプリケーション用のユーザ用ロケールの設定
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"

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

コード UTF-8を指定しながらの伝統的なCロケールの使用
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/)。さまざまなオプションの、どれがニーズに対して最高に適合しているかの決定を試みるため、いくつかの言語には複数のオプションがあります。

ファイル /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

Native Language Support

nlsUSEフラグを持っていてメッセージベースのローカライゼーションに対応しているプログラムでこれを使うためには、このフラグをセットしてプログラムをコンパイルしてください。メッセージ文字列は /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_" を付けます:

ファイル /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の値のリストは /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

関連項目

外部資料

参照


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.