This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
I18N は FreeBSD に特有のものではなく, 一つの考え方です. 以下の慣習にしたがって FreeBSD を利用するようにしてください.
地域化の設定は言語コード, 国コード, エンコーディングという三つの用語を基本とします. ロケール名はこれらから以下のように構成されます:
言語コード_国コード.エンコーディング
FreeBSD (やその他の国際化をサポートした Unix) を特定の言語に地域化するには, 国と言語を特定するためのコードを知る必要があります (Country Code はアプリケーションに指定された言語のどの変種 (variation) を用いれば良いかを教えてくれます). 加えて, ウェブブラウザ, SMTP/POP サーバ, ウェブサーバなどもこれらを元に様々な選択を行います. 以下は 言語/国コードの例です.
いくつかの言語では, 8-bit やワイド文字, 多バイト文字など ASCII とは異なったエンコード法を用います (multibyte(3) 参照). 古いアプリケーションはこれらを認識せず, 誤ってコントロール文字として認識してしまいます. 最近のアプリケーションは, 大抵 8-bit 文字を認識します. 実装方法にも依りますが, アプリケーションのコンパイル時もしくは configure 時に, ワイド/多バイト文字のサポートを指定する必要があるかも知れません. ワイド/多バイト文字を入力したり処理したりすることを可能にするために, FreeBSD Ports Collection では各言語向けに異なったプログラムを提供しています. 各 FreeBSD port の国際化文書を参照してください.
特に, 正しく configure したり, configure/Makefile/ コンパイラに適切な値を渡すために, アプリケーションの 文書を良く読む必要があります.
心に留めておくべきことは:
言語固有の, C 言語の char で表現できる シングルバイトの文字セット (multibyte(3) を参照), たとえば ISO-8859-1, ISO-8859-15, KOI8-R, CP437.
ワイド, 多バイトのエンコーディング, たとえば EUC, Big5.
現在有効な文字セットのリストに関しては IANA Registry をチェックしてください.
FreeBSD の ports/packages システムでは, それとひと目でわかるように国際化アプリケーションには名前に I18N という文字が含まれています. ただし, それらのアプリケーションが常にあなたの望む言語を サポートしているとは限りません.
理論的に必要なのは, 各ユーザの ~/.login_conf や, ログインシェルの設定ファイル (~/.profile, ~/.bashrc, ~/.cshrc) で LANG にロケール名を設定し, export することだけです. これによりロケールのサブセット (LC_CTYPE, LC_CTIME, など) のすべてが設定されます. 詳細に関しては, 各言語向けの FreeBSD 文書を参照してください.
以下の二つの値を設定ファイルで指定する必要があります.
POSIX setlocale(3) に属する関数のための LANG
アプリケーション用の MIME 文字セットのための MM_CHARSET
これにはユーザのシェルの設定, アプリケーション固有の設定, X11 の設定などが含まれます.
ロケールを設定するには以下で説明するように, 二つの方法があります. 一つは推奨される方法で, ログインクラス(login class) において環境変数に割り当てる方法. もう一つはシステムのシェル 初期化ファイル において環境変数の指定を追加する方法です.
この方法では, 各シェルの初期化ファイルに特定のシェル設定を追加する代わりに, すべてのシェルにおいて一度に必要なロケール名と MIME 文字セットを環境変数に割り当てることができます. ユーザの設定はユーザ自身で行なえますが, 管理者の設定にはスーパユーザの権限が必要となります.
ユーザのホームディレクトリの .login_conf ファイルを用いて, 両方の変数に Latin-1 エンコーディングを設定する簡単な例:
german:German User:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO_8859-1:
これは, BIG-5 エンコーディングされた繁体中国語用の環境変数を設定する .login_conf の一例です. 中国語, 日本語, 韓国語用の locale 変数を正しく認識しないソフトウェアに対処するため, よりたくさんの変数を設定していることに注目しください.
#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
taiwan:Taiwanese User:\
lang=zh_TW.Big5:\
lc_all=zh_TW.Big:\
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=xcin": #Setting the XIM Input Server
詳細に関しては 管理者の設定 と login.conf(5) を参照してください.
/etc/login.conf において 正しい言語がユーザのクラスに指定されていることを確認してください. /etc/login.conf は, このようになります.
language_name:accounts_title:\
:charset=MIME_charset:\
:lang=locale_name:\
:tc=default:
先ほどの例のように Latin-1 での設定はこのようになります.
german:German Users Accounts:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO_8859-1:\
:tc=default:
ログインクラスを vipw(8) で変更します.
新しいユーザを追加するために vipw を用います. そして以下のようなエントリを作成します:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
ログインクラスを adduser(8) で変更します.
新しいユーザを追加するために adduser を用います. そして以下の手順を踏みます:
/etc/adduser.conf で defaultclass = language と設定します. この場合, 他の言語のユーザには default クラスを指定することを 忘れないでください.
もうひとつの方法は, adduser(8) が
Enter login class: default []:
と聞いてきたときに,
毎回言語を指定するやり方です.さらに別の方法は, 異なる言語を利用するユーザを 追加する際に, 以下のようにするやり方です:
# adduser -class language
ログインクラスを pw(8) で変更します.
新しいユーザを追加するために pw(8) を 用いる場合, 以下の形式で実行します:
# pw useradd user_name -L language
Note: 各ログインプログラムごとに異なった設定が必要なため, この方法は推奨されません. 代わりに ログインクラスを用いる方法を使ってください.
ロケール名と MIME 文字コードを追加するには, /etc/profile や /etc/csh.login などのシェル初期化ファイル に以下の二つの環境変数を設定します. 以下に示す例は, ドイツ語の設定です.
/etc/profile では:
LANG=de_DE.ISO_8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
また /etc/csh.login では:
setenv LANG de_DE.ISO_8859-1
setenv MM_CHARSET ISO-8859-1
もしくは, 上記のやり方を /usr/share/skel/dot.profile (/etc/profile と同形式) や /usr/share/skel/dot.login (/etc/csh.login と同形式) に追加することもできます.
X11 では:
$HOME/.xinitrc に:
LANG=de_DE.ISO_8859-1; export LANG
もしくは:
setenv LANG de_DE.ISO_8859-1
を使用しているシェルに合った形式で指定します.
C 言語の char で表現できるシングルバイトの文字セット用に, /etc/rc.conf でその言語に対応した適切なコンソールフォントを指定してください:
font8x16=フォント名
font8x14=フォント名
font8x8=フォント名
ここで フォント名 は /usr/share/syscons/fonts ディレクトリ にあるフォントファイルから .fnt という拡張子を除いたものです.
また, /stand/sysinstall を使って, C 言語の char で表現できるシングルバイトの文字セット用の正しい キーマップとスクリーンマップを指定するようにしてください. sysinstall では, Configure を選択し, Console を選択します. もしくは, /etc/rc.conf に以下の行を加えてください:
scrnmap=スクリーンマップ名
keymap=キーマップ名
keychange="ファンクションキー番号の並び"
ここで スクリーンマップ名 は /usr/share/syscons/scrnmaps ディレクトリ にあるマップファイルから .scm という拡張子を除いたものです. VGA アダプタが疑似グラフィクス領域のフォント文字マトリクスで bit 8 を bit 9 に拡張することに対処するために (例えばスクリーンフォントが bit 8 列を使っている時に文字をその領域から外に移動する場合), フォントに適切にマップされたスクリーンマップが必要となります.
もし, /etc/rc.conf を以下のように設定して, moused デーモンを有効化している場合は, 次の段落に書かれているマウスカーソルに関する情報を確認してください.
moused_enable="YES"
標準設定では, syscons ドライバのマウスカーソルは キャラクタセット中の 0xd0-0xd3 の範囲を占めています. そのため, 利用している言語がこの範囲のキャラクタセットを使っている場合, カーソルの占める範囲を重ならないように移動させなければなりません. 5.0 より前のバージョンの FreeBSD では, 次の行をカーネルコンフィグレーションファイルに追加することで対処できます.
options SC_MOUSE_CHAR=0x03
FreeBSD 5.0 以降の場合は, /etc/rc.conf に次の行を追加してください.
mousechar_start=3
キーマップ名 は /usr/share/syscons/keymaps ディレクトリにあるキーマップファイルから .kbd という拡張子を除いたものです.
ファンクションキーの並びはキーマップにより定義されてはいないため, 端末タイプに合わせたファンクションキーを設定するために keychange が必要となります.
また, /etc/ttys の中のすべての ttyv* において, 正しいコンソール端末タイプを設定するようにしてください. 現在の定義済の値は以下の通りです:
| 文字セット | 端末タイプ |
|---|---|
| ISO-8859-1 もしくは ISO-8859-15 | cons25l1 |
| ISO-8859-2 | cons25l2 |
| KOI8-R | cons25r |
| KOI8-U | cons25u |
| CP437 (ハードウェアのデフォルト) | cons25 |
ワイド/多バイト文字の言語については, /usr/ports/language 内の適切な FreeBSD port を利用してください. いくつかの ports はシステムからシリアルの vtty のように見えるようにコンソールとして振る舞います. したがって, X11 と疑似シリアルコンソール用に充分な vtty を確保しておかなければなりません. コンソールで他の言語を使うためのアプリケーションのリストの 一部です:
X11 は FreeBSD プロジェクトの一部ではありませんが, FreeBSD ユーザのための情報を記しておきます. 詳細に関しては, XFree86 ウェブサイトや, あなたの使っている X11 サーバのサイトを参照してください.
~/.Xresources を使うことで, アプリケーション固有の国際化の設定 (フォント, メニューなど) を追加することができます.
X11 True Type 共通サーバ (XTT-common) をインストールし, 言語の TrueType フォントをインストールします. ロケールを正しく設定すれば, 選んだ言語がメニューなどに表示されるはずです.
X11 Input Method (XIM) プロトコルはすべての X11 クライアント用の新たな標準規格です. すべての X11 アプリケーションは XIM 入力サーバからの入力を受け取る XIM クライアントとして書かれるべきです. 様々な言語用の XIM サーバが存在します.
プリンタにはいくつかの C 言語の char で表現できる シングルバイトの文字セットがハードウェアに組み込まれています. ワイド/多バイトの文字セットでは特殊な設定が必要であり, apsfilter を使うことをお勧めします. 言語固有のコンバータを用いて, PostScript か PDF フォーマット に文書をコンバートする場合もあるでしょう.
FreeBSD の FFS ファイルシステムは 8-bit 透過であり, C 言語の char で表現できるいかなる文字セットも使うことが できます (multibyte(3) を参照). しかし, ファイルシステム中には文字セットの名前は記録されていません. したがって, これは単なる 8-bit であり, エンコーディングに関しては何の情報もないのです. 公式には, FFS はまだいかなるワイド/マルチバイトの文字セットもサポートしていません. しかし FFS でそのようなサポートを行うためのパッチが, 多くのワイド/マルチバイトの文字セットに存在します. それらは単に一時的で汎用性のない解決策であり, わたしたちはそれらをソースツリーに含めないことを決めています. これらのパッチに関しては, 各言語のウェブサイトを参照してください.
FreeBSD の MS-DOS ファイルシステムでは, MS-DOS, Unicode 文字セット, FreeBSD ファイルシステムの文字セット の間で変換を行うことが可能です. 詳細は mount_msdos(8) を参照してください.