16.2. 地域化の利用
戻る〓 | 第16章 地域化 (localization) - i18n/L10n の利用と設定 | 〓次へ

## 16.2. 地域化の利用

地域化の設定は、言語コード、 国コード、エンコーディングという三つの要素を基本とします。 ロケール名はこれらから以下のように構成されます。

    言語コード_国コード.エンコーディング

`言語コード` および `国コード` は、 国と言語を特定するために用いられます。 表16.1「言語および国コード」 では、 `言語コード`_`国コード` の例を示します

表16.1 言語および国コード

言語_国コード | 説明
--- | ---
en_US | 英語、合衆国
ru_RU | ロシア語、ロシア
zh_TW | 繁体字中国語、台湾

利用可能なすべてのロケールを調べるには、 以下のように実行してください。

    % locale -a | more

現在のロケールの設定を調べるには、 以下のコマンドを実行してください。

    % locale

言語固有の、C 言語の char で表現できる ISO8859-1, ISO8859-15, KOI8-R, CP437 といったシングルバイトの文字セットについては、 multibyte(3) を参照してください。 現在有効な文字セットのリストは、IANA Registry で確認できます。

いくつかの言語 (例えば中国語や日本語) は、 ASCII 文字では表すことができないので、 ワイド文字や多バイト文字を用いた拡張された言語のエンコードが必要となります。 ワイド/多バイトのエンコーディングの例は、EUC および Big5 です。 古いアプリケーションの中には、 これらのエンコードを誤ってコントロール文字として認識するものがありますが、 最近のアプリケーションは、大抵これらの文字を認識します。 実装方法にも依りますが、アプリケーションのコンパイル時もしくは configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。

### 注記:

FreeBSD では、Xorg 互換のロケール符号を用いています。

以下では、FreeBSD システムにおいてロケールを設定する方法について説明します。 次の節では、i18n に対応するアプリケーションの見つけ方およびコンパイル方法について説明します。

### 16.2.1. ログインシェルでロケールを設定する

ロケールの設定は、ユーザの `~/.login_conf`、 またはユーザのシェルの初期設定ファイルである `~/.profile`, `~/.bashrc` または `~/.cshrc` で行います。

以下の二つの環境変数を設定する必要があります。

- `LANG`: ロケールを設定します。

- `MM_CHARSET`: アプリケーションで使用される MIME 文字セットを指定します。

これらの変数は、ユーザのシェルの設定ファイルに加え、 アプリケーション固有の設定ファイル、 および Xorg の設定ファイルにおいても指定される必要があります。

必要な変数を割り当てるには、二つの方法があります。 ログインクラス において割り当てる方法 (推奨される方法です)、および 初期化ファイル で指定する方法です。 次の 2 つの節では、この両方の方法について説明します。

#### 16.2.1.1. ログインクラスを用いる方法

最初に説明する方法は、 すべてのシェルにおいて必要なロケール名と MIME 文字セットを環境変数に割り当てます。 これは推奨される方法です。 この割り当て方法としては、各ユーザが行う方法と、 スーパーユーザがすべてのユーザに対して設定する 2 つの方法があります。

以下の簡単な例では、 各ユーザのホームディレクトリの `.login_conf` で、両方の変数に Latin-1 エンコーディングを設定します。

    me:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:

これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定するユーザの `~/.login_conf` の一例です。 中国語、日本語、 韓国語用のロケール変数を正しく認識しないソフトウェアに対応するため、 より多くの変数に対する設定が行われています。

    #Users who do not wish to use monetary units or time formats
    #of Taiwan can manually change each variable
    me:\
    	:lang=zh_TW.Big5:\
    	:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\
    	:charset=big5:\
    	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

もう一つの方法では、 スーパーユーザがシステム上のすべてのユーザに対する地域化を設定します。 `/etc/login.conf` の以下の変数により、ロケールおよび MIME 文字セットを設定します。

    language_name|Account Type Description:\
    	:charset=MIME_charset:\
    	:lang=locale_name:\
    	:tc=default:

よって、先ほどの例における Latin-1 に対する設定は、 以下のようになります。

    german|German Users Accounts:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:\
    	:tc=default:

詳細に関しては login.conf(5) を参照してください。 なお、`russian` クラスはあらかじめ定義されています。

`/etc/login.conf` を編集したら、 忘れずに以下のコマンドを実行してケイパビリティデータベースをアップデートしてください。

    # cap_mkdb /etc/login.conf

### 注記:

エンドユーザは、変更を反映させるために、各自の `~/.login_conf` に対して `cap_mkdb` コマンドを実行する必要があります。

##### 16.2.1.1.1. ログインクラスを変更するユーティリティ

`/etc/login.conf` を手動により編集する方法に加え、 新たに作成するユーザのロケールを設定するためのユーティリティがあります。

`vipw` を使って新しいユーザを追加する際には、使用する言語を `language` に指定してください。

    user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

`adduser` を使って新しいユーザを追加する場合に、 すべてのユーザに対するデフォルトの言語は事前に設定でき、 個々のユーザに対する言語を指定できます。

新しく追加するすべてのユーザが同じ言語を使う場合には、 `/etc/adduser.conf` で `defaultclass=`language`` と設定してください。

新しいユーザを作成するときに、この設定を変更するには、 以下のプロンプトにおいて希望するロケールを指定してください。

    Enter login class: default []:

もしくは、`adduser` を実行する際にロケールを指定してください。

    # adduser -class language

`pw` を使って新しいユーザを追加する場合には、 以下のようにしてロケールを指定してください。

    # pw useradd user_name -L language

すでに存在するユーザのログインクラスを変更するには、 `chpass` を使用してください。 引数として変更するユーザ名を与えて、 スーパーユーザの権限で実行してください。

    # chpass user_name

#### 16.2.1.2. シェルの初期化ファイルによる方法

この 2 番目の方法は、 使用するシェルごとに手動での設定が必要なため、推奨されません。 シェル毎に設定ファイルが存在し、その構文はシェルに依存します。 たとえば、`sh` シェルに対するドイツ語の設定では、 そのユーザのシェルを設定するためだけに、 `~/.profile` に以下の行を追加ます。 これらの行を `/etc/profile` または、 `/usr/share/skel/dot.profile` に追加すると、 すべてのユーザのシェルを設定することが可能です。

    LANG=de_DE.ISO8859-1; export LANG
    MM_CHARSET=ISO-8859-1; export MM_CHARSET

しかしながら、`csh` シェルでは、 設定ファイルの名前や構文は異なります。 `~/.csh.login`, `/etc/csh.login` または `/usr/share/skel/dot.login` では同じ設定です。

    setenv LANG de_DE.ISO8859-1
    setenv MM_CHARSET ISO-8859-1

さらに面倒なことに、 Xorg を設定するための `~/.xinitrc` における構文は、 使用しているシェルに依存します。 以下の例において、最初は `sh` シェルに対するもので、2 番目が `csh` シェルに対するものです。

    LANG=de_DE.ISO8859-1; export LANG

    setenv LANG de_DE.ISO8859-1

### 16.2.2. コンソールの設定

コンソールで利用可能な地域化されたフォントがあります。 利用できるフォントの一覧を調べるには、 `ls /usr/share/syscons/fonts` と入力してください。 コンソールのフォントを設定するには、 `.fnt` という拡張子を除いた `フォント名` を、 `/etc/rc.conf` に設定してください。

    font8x16=フォント名
    font8x14=フォント名
    font8x8=フォント名

以下を `/etc/rc.conf` に追加することで、 キーマップおよびスクリーンマップを指定できます。

    scrnmap=スクリーンマップ名
    keymap=キーマップ名
    keychange="ファンクションキー番号の並び"

利用可能なスクリーンマップの一覧を調べるには、 `ls /usr/share/syscons/scrnmaps` と入力してください。 `/etc/rc.conf` で `スクリーンマップ名` を指定する時は、 `.csm` という拡張子を除いてください。 スクリーンフォントが bit 8 列を使っている時に文字を疑似グラフィクス領域から外に移動するように、 VGA アダプタがフォント文字マトリクスで bit 8 を bit 9 に拡張することに対処するため、 フォントに適切にマップされたスクリーンマップが必要となります。

利用可能なキーマップの一覧を調べるには、 `ls /usr/share/syscons/keymaps` と入力してください。 `/etc/rc.conf` で `キーマップ名` を指定する時には、 `.kbd` という拡張子を除いてください。 再起動せずにキーマップを試すには、 kbdmap(1) を使ってください。

ファンクションキーの並びはキーマップで定義されていないので、 端末タイプに合わせたファンクションキーを設定するために `keychange` のエントリが必要となります。

次に `/etc/ttys` の中のすべての仮想端末のエントリに対して、 正しいコンソール端末タイプを設定してください。表16.2「文字セットに対する定義済みの端末タイプ」 は、 利用可能な端末タイプの一覧です。

表16.2 文字セットに対する定義済みの端末タイプ

文字セット | 端末タイプ
--- | ---
ISO8859-1 もしくは ISO8859-15 | `cons25l1`
ISO8859-2 | `cons25l2`
ISO8859-7 | `cons25l7`
KOI8-R | `cons25r`
KOI8-U | `cons25u`
CP437 (VGA のデフォルト) | `cons25`
US-ASCII | `cons25w`

ワイド/多バイト文字の言語については、 その言語に対するコンソールを FreeBSD Ports Collection からインストールしてください。 利用可能な ports は、表16.3「Ports Collection で利用可能なコンソール」 にまとめてあります。 インストール後、各 port の `pkg-message` または、マニュアルページを参照して、 設定や使用方法を調べてください。

表16.3 Ports Collection で利用可能なコンソール

言語 | port の位置
--- | ---
繁体字中国語 (BIG-5) | chinese/big5con
中国語/日本語/韓国語 | chinese/cce
中国語/日本語/韓国語 | chinese/zhcon
日本語 | chinese/kon2
日本語 | japanese/kon2-14dot
日本語 | japanese/kon2-16dot

`/etc/rc.conf` において moused を有効にしている場合には、 追加の設定が必要となるでしょう。 デフォルトでは、syscons(4) ドライバのマウスカーソルはキャラクタセット中の `0xd0`-`0xd3` の範囲を占めています。そのため、 利用している言語がこの範囲のキャラクタセットを使っている場合、 次の行を `/etc/rc.conf` に追加して カーソルの占める範囲を移動してください。

    mousechar_start=3

### 16.2.3. Xorg の設定

Xorg のインストールおよび設定方法は、 5章X Window System で説明されています。 Xorg を地域化するための追加のフォントおよび入力方法は、 FreeBSD Ports Collection から利用できます。 フォント、メニューなどのアプリケーション固有の国際化 (i18n) の設定は、 `~/.Xresources` において指定でき、 グラフィカルアプリケーションのメニューが選んだ言語で表示されます。

X Input Method (XIM) プロトコルは、Xorg で非英字文字を入力するための標準規格です。 FreeBSD Ports Collection から利用可能なインプットメソッドについては、 表16.4「利用可能なインプットメソッド」 にまとめられています。 追加の Fcitx および Uim アプリケーションも利用できます。

表16.4 利用可能なインプットメソッド

言語 | インプットメソッド
--- | ---
中国語 | chinese/gcin
中国語 | chinese/ibus-chewing
中国語 | chinese/ibus-pinyin
中国語 | chinese/oxim
中国語 | chinese/scim-fcitx
中国語 | chinese/scim-pinyin
中国語 | chinese/scim-tables
日本語 | japanese/ibus-anthy
日本語 | japanese/ibus-mozc
日本語 | japanese/ibus-skk
日本語 | japanese/im-ja
日本語 | japanese/kinput2
日本語 | japanese/scim-anthy
日本語 | japanese/scim-canna
日本語 | japanese/scim-honoka
日本語 | japanese/scim-honoka-plugin-romkan
日本語 | japanese/scim-honoka-plugin-wnn
日本語 | japanese/scim-prime
日本語 | japanese/scim-skk
日本語 | japanese/scim-tables
日本語 | japanese/scim-tomoe
日本語 | japanese/scim-uim
日本語 | japanese/skkinput
日本語 | japanese/skkinput3
日本語 | japanese/uim-anthy
韓国語 | korean/ibus-hangul
韓国語 | korean/imhangul
韓国語 | korean/nabi
韓国語 | korean/scim-hangul
韓国語 | korean/scim-tables
ベトナム語 | vietnamese/xvnkb
ベトナム語 | vietnamese/x-unikey

戻る〓 | 上に戻る | 〓次へ
第16章 地域化 (localization) - i18n/L10n の利用と設定〓 | ホーム | 〓16.3. 国際化 (i18n) に対応したアプリケーションを見つける

本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。