10.4 言語および国固有の設定

SUSE Linuxは、非常に広い範囲で国際化されており、現地の状況に合わせて柔軟に変更できます。言い換えれば、国際化(I18N)によって具体的なローカライズ(L10N)が可能になっています。I18NとL10Nという略語は、語の最初と最後の文字の間に、省略されている文字数を挟み込んだ表記です。

設定は、ファイル/etc/sysconfig/languageの変数LC_で定義します。これは、単なる現地語サポートだけでなく、Messages (メッセージ) (言語)、Character Set (文字セット)、Sort Order (ソート順)、Time and Date (時刻と日付)、Numbers (数字)およびMoney (通貨)の各カテゴリも指します。これらのカテゴリはそれぞれ、独自の変数を使用して直接定義することも、ファイルlanguageにあるマスタ変数を使用して間接的に定義することも可能です(man localeコマンドでmanページを参照)。

RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY

これらの変数は、プレフィクスRC_を付けずにシェルに渡され、前述のカテゴリを表します。関連するシェルプロファイルについては後で説明します。現在の設定は、コマンドlocaleを使用して表示できます。

RC_LC_ALL

この変数は、すでに参照された変数の値を上書きします。

RC_LANG

前述の変数がまったく設定されていない場合、これがフォールバックとなります。デフォルトでは、SUSE LinuxはRC_LANGだけを設定します。これにより、ユーザが独自の変数を入力しやすくなります。

ROOT_USES_LANG

yesまたはno変数。noに設定するとrootが常にPOSIX環境で動作します。

変数は、YaSTのsysconfigエディタで設定できます(8.3.1項 「YaSTのsysconfigエディターを使ってシステム設定を変更する」を参照)。このような変数の値には、言語コード、国コード、エンコーディング、および修飾子が入っています。個々のコンポーネントは特殊文字で接続されます。

  LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]

10.4.1 例

言語コードと国コードは必ず一緒に設定する必要があります。言語の設定は、http://www.evertype.com/standards/iso639/iso639-en.htmlおよびhttp://www.loc.gov/standards/iso639-2/で入手できる、ISO 639規格に従います。国コードは、http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.htmlで入手できる、ISO 3166にリストされています。

使用可能な説明ファイルが/usr/lib/localeに存在する場合のみ、値を設定する意味があります。追加の記述ファイルは、/usr/share/i18n のファイルを使用し、コマンド localedef を実行して作成できます。記述ファイルは、glibc-i18ndataパッケージに含まれています。en_US.UTF-8の説明ファイル(英語および米国)は以下のように作成します。

localedef -i en_US -f UTF-8 en_US.UTF-8
LANG=en_US.UTF-8

インストール時にAmerican Englishを選択すると、これがデフォルトの設定になります。他の言語を選択した場合、その言語が有効になりますが、文字コードはUTF-8が使用されます。

LANG=en_US.ISO-8859-1

これにより、言語が英語、国が米国、文字セットがISO-8859-1に設定されます。この文字セットは、ユーロ記号をサポートしませんが、UTF-8がサポートされていない、更新前のプログラムを使用する方が便利なこともあります。文字セット(この状況ではISO-8859-1)を定義する文字列は、Emacsのようなプログラムによって評価されます。

LANG=en_IE@euro

上記の例では、ユーロ記号が言語設定に明示的に組み込まれています。厳密に言うと、この設定は今では古くなっています。UTF-8もユーロ記号を扱うからです。この設定が役立つのは、アプリケーションがUTF-8ではなく、ISO-8859-15しかサポートしない場合だけです。

SuSEconfigは、/etc/sysconfig/languageにある変数を読み込み、必要な変更を/etc/SuSEconfig/profile/etc/SuSEconfig/csh.cshrcに書き込みます。/etc/SuSEconfig/profile/etc/profileによって読み込まれます。 つまり、ソースとして使用されます。/etc/SuSEconfig/csh.cshrc/etc/csh.cshrcのソースとして使用されます。これにより、設定はシステム全体に渡って使用できるようになります。

ユーザは、同様に~/.bashrcファイルを編集して、システムのデフォルトを上書きすることができます。たとえば、システム設定のen_USをプログラムメッセージに使用しない場合は、LC_MESSAGES=es_ES を指定してメッセージが英語の代わりにスペイン語で表示されるようにします。

10.4.2 ~/.i18nでのロケール設定

ロケールシステムデフォルトを変更する必要がある場合、~/.i18nで設定を変更します。~/.i18n内のエントリは、/etc/sysconfig/languageのシステムデフォルトを上書きします。同じ変数名をRC_ネームスペースプレフィクスなしで使用します。たとえば、RC_LANGではなく、LANGを使用します。

10.4.3 言語サポートの設定

カテゴリMessagesのファイルは、フォールバックを確保するため、対応する言語ディレクトリ(たとえば、en)にのみ格納されることになっています。たとえばLANGen_USに設定したが、messageファイルが/usr/share/locale/en_US/LC_MESSAGESに存在しない場合は、/usr/share/locale/en/LC_MESSAGESにフォールバックされます。

フォールバックチェーンも定義できます。 たとえば、ブルターニュ語、次いでフランス語、またはガリシア語、次いでスペイン語、次いでポルトガル語の順にフォールバックするには、次のように設定します。

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

必要に応じて、次のようにノルウェー語の方言であるニーノシクやブークモールをノルウェー語の代わりに使用できます(noへのフォールバックを追加します)。

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

または

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

ノルウェー語では、LC_TIMEの扱いも違うので注意してください。

生じる可能性のある1つの問題は、数字の桁を区切るための文字が正しく認識されないことです。このことは、LANGdeのような2文字の言語コードにのみ設定されているのに、glibcが使用している定義ファイル/usr/share/lib/de_DE/LC_NUMERICに存在している場合に生じます。それで、区切り文字の定義がシステムに認識されるようにするには、LC_NUMERICde_DEに設定する必要があります。

10.4.4 関連情報

  • 『The GNU C Library Reference Manual』の「Locales and Internationalization」の章。glibc-infoパッケージに格納されています。

  • 『UTF-8 and Unicode FAQ for Unix/Linux』、Markus Kuhn 著。 Web ページhttp://www.cl.cam.ac.uk/~mgk25/unicode.html (現在のアドレス)を参照してください。

  • 『Unicode-Howto』(Bruno Haible著)を参照してください。/usr/share/doc/howto/en/html/Unicode-HOWTO.html