Index: head/ja_JP.eucJP/books/handbook/l10n/chapter.xml =================================================================== --- head/ja_JP.eucJP/books/handbook/l10n/chapter.xml (revision 54500) +++ head/ja_JP.eucJP/books/handbook/l10n/chapter.xml (revision 54501) @@ -1,978 +1,995 @@ 地域化 (localization) - I18N/L10N の利用と設定 AndreyChernov寄稿: Michael C.Wu改訂: この章では FreeBSD は、ユーザーおよび貢献者が世界中にいる、非常に分散した プロジェクトです。この章では、英語以外の言語を使うユーザーの実用に 耐えられるようにする FreeBSD の国際化 (internationalization) と 地域化 (localization) 機能について解説します。 システムレベルでもアプリケーションレベルでも、国際化の実装には 様々な側面があるので、必要に応じて読者に対してより専門的な文書情報を 示すことにします。 この章では、以下の分野について説明します。 近代的なオペレーティングシステムで、異なる言語および ロケールがどのように符号化されているか。 ログインシェルでロケールを設定するには どうするか。 コンソールを英語以外の言語用に設定するには どうするか。 様々な言語で効率的に X Window System を使うには どうすればよいか。 国際化されたアプリケーションを書くための 情報はどこにあるか。 この章を読む前に、以下のことを理解しておく必要があります。 サードパーティ製アプリケーションのインストール方法 ()。 基礎知識 I18N/L10N とは? - - 国際化 (internationalization) - 地域化 (localization) - - 地域化(localization) + + 国際化 (internationalization) + 地域化 (localization) + + 地域化(localization) 開発者たちはしばしば、internationalization を縮めて I18N と表記します。18 は internationalization の最初と最後の間の 文字数です。L10N も同じ命名法を用いて localization を縮めたものです。 これらを合わせて、I18N/L10N された (すなわち国際化/地域化された) 手法、プロトコル、アプリケーションは、自分達の好みの言語を 使うことを可能にしてくれます。 国際化されたアプリケーションはライブラリとして国際化キット を用いてプログラミングされています。 これは開発者が単純なファイルを書いて、 表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。 プログラマのみなさんには、 これらの方法を利用することを強く推奨します。 なぜ I18N/L10N を使わなければいけないの? 英語以外の言語を見たり、入力したり、処理したりする場合はいつでも、 I18N/L10N が使われます。 I18N で使えるようになる言語には何があるの? I18N や L10N は FreeBSD に限った話題ではありません。 現在では、世界中の主要な言語のほとんどから選ぶことができます。 たとえば中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、 ベトナム語などがありますが、これらに限定されるわけではありません。 ロケール(locale) 地域化の利用 I18N は FreeBSD に特有のものではなく、一つの考え方です。 以下の慣習にしたがって FreeBSD を利用するようにしてください。 地域化の設定は言語コード、 国コード、エンコーディングという三つの用語を基本とします。 ロケール名はこれらから以下のように構成されます。 言語コード_国コード.エンコーディング 言語コードと国コード + 言語コード 国コード FreeBSD (やその他の国際化をサポートした &unix;-like なシステム) を特定の言語に地域化するには、 国と言語を特定するためのコードを知る必要があります (国コードはアプリケーションに指定された言語のどの変種 (variation) を用いれば良いかを教えてくれます)。 加えて、ウェブブラウザ、SMTP/POP サーバ、 ウェブサーバなどもこれらを元に様々な選択を行います。 以下は言語/国コードの例です。 言語/国コード 説明 en_US 英語 (合衆国) ru_RU ロシア語 (ロシア) zh_TW 繁体字中国語 (台湾) 以下を実行すると、 利用可能なすべてのロケールが表示されます。 &prompt.user; locale -a エンコーディング + エンコーディング ASCII いくつかの言語では、8-bit やワイド文字、 多バイト文字など ASCII とは異なったエンコード法を用います (&man.multibyte.3; 参照)。 古いアプリケーションはこれらを認識せず、 誤ってコントロール文字として認識してしまいます。 最近のアプリケーションは、大抵 8-bit 文字を認識します。 実装方法にも依りますが、アプリケーションのコンパイル時もしくは configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。 ワイド/多バイト文字を入力したり処理したりすることを可能にするために、 FreeBSD Ports Collection では各言語向けに異なったプログラムを提供しています。 各 FreeBSD Port の国際化文書を参照してください。 特に、正しく configure したり、configure/Makefile/ コンパイラに適切な値を渡すために、アプリケーションの 文書を良く読む必要があります。 次のことを心に留めておいてください。 言語固有の、C 言語の char で表現できる シングルバイトの文字セット (&man.multibyte.3; を参照)、たとえば ISO8859-1, ISO8859-15, KOI8-R, CP437。 ワイド、多バイトのエンコーディング、たとえば EUC, Big5。 現在有効な文字セットのリストに関しては - IANA Registry + IANA Registry をチェックしてください。 - &os; - では、X11 互換のロケール符号を用いています。 + &os; では、X11 互換のロケール符号を用いています。 国際化アプリケーション FreeBSD の ports/packages システムでは、 それとひと目でわかるように国際化アプリケーションには名前に I18N という文字が含まれています。 ただし、それらのアプリケーションが常にあなたの望む言語を サポートしているとは限りません。 ロケールの設定 通常は、ログインシェルで環境変数 LANG に ロケール名を設定し export すれば十分です。これは、ユーザーの ~/.login_conf ファイル、またはユーザーの シェルの初期設定ファイル (~/.profile, ~/.bashrc, ~/.cshrc) でできます。 LC_CTYPELC_CTIME のような ロケールのサブセットを設定する必要はありません。 詳細に関しては、各言語向けの FreeBSD 文書を参照してください。 以下の二つの環境変数を設定ファイルで指定する必要があります。 POSIX - &posix; &man.setlocale.3; 関連の関数のための LANG MIME アプリケーション用の MIME 文字セットのための MM_CHARSET これにはユーザのシェルの設定、アプリケーション固有の設定、 X11 の設定などが含まれます。 ロケールを設定する方法 + ロケール (locale) ログインクラス ロケールを設定するには以下で説明するように、二つの方法があります。 一つは推奨される方法で、ログインクラス (login class) において環境変数に割り当てる方法。 もう一つはシステムのシェル 初期化ファイル において環境変数の指定を追加する方法です。 ログインクラスを用いる方法 この方法では、 各シェルの初期化ファイルに特定のシェル設定を追加する代わりに、 すべてのシェルにおいて一度に必要なロケール名と MIME 文字セットを環境変数に割り当てることができます。 ユーザの設定はユーザ自身で行なえますが、 管理者の設定にはスーパユーザの権限が必要となります。 ユーザの設定 ユーザのホームディレクトリの .login_conf ファイルを用いて、 両方の変数に Latin-1 エンコーディングを設定する 簡単な例は次の通りです。 me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: - 繁体字中国語 (Traditional Chinese)BIG-5 エンコーディング - これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定する + 繁体字中国語 (Traditional Chinese) + BIG-5 エンコーディング + これは、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:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server 詳細に関しては 管理者の設定 と &man.login.conf.5; を参照してください。 管理者の設定 /etc/login.conf において、 正しい言語がユーザのクラスに指定されていることを確認してください。 /etc/login.conf は、このようになります。 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: ユーザのログインクラスを変更する前に次のコマンドを実行して、 /etc/login.conf の新たな設定がシステムに見えるようにしてください。 &prompt.root; cap_mkdb /etc/login.conf - ログインクラスを &man.vipw.8; で変更する + ログインクラスを + &man.vipw.8; で変更する vipw 新しいユーザを追加するために vipw を用います。そして以下のようなエントリを作成します。 user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh - ログインクラスを &man.adduser.8; で変更する + ログインクラスを + &man.adduser.8; で変更する adduser ログインクラス 新しいユーザを追加するために adduser を用います。そして以下の手順を踏みます。 /etc/adduser.confdefaultclass = language と設定します。 この場合、他の言語のユーザには default クラスを指定することを 忘れないでください。 もうひとつの方法は、&man.adduser.8; が -Enter login class: default []: + Enter login class: default []: と聞いてきたときに、毎回言語を指定するやり方です。 さらに別の方法は、異なる言語を利用するユーザを 追加する際に、以下のようにするやり方です。 &prompt.root; adduser -class language - ログインクラスを &man.pw.8; で変更する + ログインクラスを + &man.pw.8; で変更する pw 新しいユーザを追加するために &man.pw.8; を 用いる場合、以下の形式で実行します。 &prompt.root; pw useradd user_name -L language シェルの初期化ファイルによる方法 シェルごとに異なった設定が必要なため、 この方法は推奨されません。 代わりに ログインクラスを用いる方法を使ってください。 MIME ロケール(locale) ロケール名と MIME 文字コードを追加するには、 /etc/profile/etc/csh.login などのシェル初期化ファイル に以下の二つの環境変数を設定します。 以下に示す例は、ドイツ語の設定です。 /etc/profile では 次のように設定します。 LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET また /etc/csh.login では 次のように設定します。 setenv LANG de_DE.ISO8859-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.ISO8859-1; export LANG もしくは、 setenv LANG de_DE.ISO8859-1 と指定します。 コンソールの設定 C 言語の char で表現できるシングルバイトの文字セット用に、 /etc/rc.conf でその言語に対応した適切なコンソールフォントを指定してください。 font8x16=フォント名 font8x14=フォント名 font8x8=フォント名 ここで フォント名/usr/share/syscons/fonts ディレクトリ にあるフォントファイルから .fnt という拡張子を除いたものです。 sysinstall keymap screenmap 必要に応じて、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" moused 設定省略時には、&man.syscons.4; ドライバのマウスカーソルは キャラクタセット中の 0xd0-0xd3 の範囲を占めています。そのため、 利用している言語がこの範囲のキャラクタセットを使っている場合、 カーソルの占める範囲を重ならないように移動させなければなりません。 &os; でこれを回避するには、次の行を /etc/rc.conf に追加してください。 mousechar_start=3 キーマップ名/usr/share/syscons/keymaps ディレクトリにあるキーマップファイルから .kbd という拡張子を除いたものです。 どのキーマップを使うかよくわからないなら、&man.kbdmap.1; で再起動せずにキーマップを試すことができます。 ファンクションキーの並びはキーマップにより定義されてはいないため、 端末タイプに合わせたファンクションキーを設定するために keychange が必要となります。 また、/etc/ttys の中のすべての ttyv* において、 正しいコンソール端末タイプを設定するようにしてください。 現在の定義済の値は以下の通りです。 文字セット 端末タイプ ISO8859-1 もしくは ISO8859-15 cons25l1 ISO8859-2 cons25l2 ISO8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (VGA のデフォルト) cons25 US-ASCII cons25w ワイド/多バイト文字の言語については、 /usr/ports/language 内の適切な FreeBSD port を利用してください。 いくつかの ports はシステムからシリアルの vtty のように見えるようにコンソールとして振る舞います。 したがって、X11 と疑似シリアルコンソール用に充分な vtty を確保しておかなければなりません。 コンソールで他の言語を使うためのアプリケーションのリストの 一部です。 言語 ports の位置 繁体字中国語 (BIG-5) chinese/big5con 日本語 japanese/kon2-16dot または japanese/mule-freewnn 韓国語 korean/han X11 の設定 X11 は FreeBSD プロジェクトの一部ではありませんが、 FreeBSD ユーザのための情報を記しておきます。 詳細に関しては、&xorg; ウェブサイトや、あなたの使っている X11 サーバのサイトを参照してください。 ~/.Xresources を使うことで、 アプリケーション固有の国際化の設定 (フォント、メニューなど) を追加することができます。 フォントの表示 - X11 True Type フォントサーバ + X11 True Type + フォントサーバ &xorg; サーバ (x11-servers/xorg-server) をインストールし、言語の &truetype; フォントをインストールします。 ロケールを正しく設定すれば、 選んだ言語がメニューなどに表示されるはずです。 非英語の文字を入力する X11 Input Method (XIM) X11 Input Method (XIM) プロトコルはすべての X11 クライアント用の新たな標準規格です。 すべての X11 アプリケーションは XIM 入力サーバからの入力を受け取る XIM クライアントとして書かれるべきです。 様々な言語用の XIM サーバが存在します。 プリンタの設定 プリンタにはいくつかの C 言語の char で表現できる シングルバイトの文字セットがハードウェアに組み込まれています。 ワイド/多バイトの文字セットでは特殊な設定が必要であり、 apsfilter を使うことをお勧めします。 言語固有のコンバータを用いて、&postscript; か PDF フォーマット に文書をコンバートする場合もあるでしょう。 カーネルとファイルシステム FreeBSD の高速ファイルシステム (FFS) は 8-bit 透過であり、 C 言語の char で表現できるいかなる文字セットも使うことが できます (&man.multibyte.3; を参照)。 しかし、ファイルシステム中には文字セットの名前は記録されていません。 したがって、これは単なる 8-bit であり、 エンコーディングに関しては何の情報もないのです。 公式には、FFS はまだいかなるワイド/マルチバイトの文字セットもサポートしていません。 しかし FFS でそのようなサポートを行うためのパッチが、 多くのワイド/マルチバイトの文字セットに存在します。 それらは単に一時的で汎用性のない解決策であり、 わたしたちはそれらをソースツリーに含めないことを決めています。 これらのパッチに関しては、各言語のウェブサイトを参照してください。 DOS Unicode FreeBSD の &ms-dos; ファイルシステムでは、 &ms-dos;, Unicode 文字セット、FreeBSD ファイルシステムの 文字セットの間で変換を行うことが可能です。 詳細は &man.mount.msdosfs.8; を参照してください。 国際化に対応したプログラムのコンパイル FreeBSD ports の多くはすでに国際化されています。 いくつかには port の名前に -I18N と付いています。 これらはもちろんのこと、他のプログラムも国際化への対応を組み込んだものがあり、 コンパイルに際して特別な注意を払う必要はありません。 MySQL しかし、MySQL のようなアプリケーションでは、 特定の文字セットを使うように Makefile を設定する必要があります。 これは大抵 Makefile の中で 対処されているか、ソース中の configure に値を渡すことで対応しています。 FreeBSD を特定の言語に地域化する - ロシア語 (KOI8-R エンコーディング) + + ロシア語 (KOI8-R エンコーディング) + AndreyChernov原作: 地域化 ロシア語 KOI8-R エンコーディングの詳細については、 KOI8-R References (Russian Net Character Set) を参照してください。 ロケールの設定 以下の行を ~/.login_conf に追加してください。 me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: ロケール を 設定する際の例については、この章の前の方を参照してください。 コンソールの設定 /etc/rc.conf ファイルに次の行を追加してください。 mousechar_start=3 また、/etc/rc.conf で以下の設定を使ってください。 keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" /etc/ttys の各 ttyv* エントリにおいて、 端末タイプとして cons25r を指定してください。 コンソールを設定する際の例については、この章の前の方を参照してください。 プリンタの設定 プリンタ ロシア語用の文字を搭載したプリンタはほとんど ハードウェアコードページ CP866 を使っているため、 KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。 このフィルタはデフォルトで /usr/libexec/lpr/ru/koi2alt に インストールされています。 ロシア語用のプリンタの /etc/printcap エントリは以下のようになります。 lp|Russian local line printer:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: 記述の詳細については &man.printcap.5; を参照してください。 &ms-dos; ファイルシステムとロシア語ファイル名 以下の &man.fstab.5; エントリの例は、マウントされた &ms-dos; ファイルシステムにおいてロシア語ファイル名を 使えるようにします。 /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0 オプションは利用するロケール名を選択し、 オプションは文字変換表を設定します。 オプションを使う時は、変換表が /usr/libdata/msdosfs にあるので、 /usr を &ms-dos; パーティションより前に マウントするようにしてください。詳しくは、 &man.mount.msdosfs.8; のマニュアルを参照してください。 X11 の設定 - まず X 以外のロケールの設定を行ってください。 + まず X + 以外のロケールの設定を行ってください。 &xorg; を使っているなら、 x11-fonts/xorg-fonts-cyrillic パッケージをインストールしてください。 /etc/X11/xorg.conf ファイルの "Files" セクションをチェックしてください。 既存の FontPath エントリの前に以下の行を追加しなければなりません。 FontPath "/usr/local/lib/X11/fonts/cyrillic" 他の cyrillic フォントについては、 - ports を参照してください。 + ports を参照してください。 + ロシア語のキーボードを使えるようにするには、 以下の行を xorg.conf ファイルの "Keyboard" セクションに追加します。 Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle" また、XkbDisable が無効 (コメントアウト) になっていることを確認してください。 grp:toggle については、ロシア語/ラテン文字の切り替えは Right Alt で行います。 grp:ctrl_shift_toggle - の切り替えは - CtrlShift + の切り替えは CtrlShift で行います。 grp:caps_toggle については、ロシア語/ラテン文字の切り替えは CapsLock で行います。 従来の CapsLock の機能は - ShiftCapsLock + ShiftCapsLock で使うことができます (ラテン文字モードの時のみ)。 &xorg; では、理由は不明ですが grp:caps_toggle は動作しません。 キーボードに &windows; キーがあり、 ロシア語モードでそのキーにいくつかの非英字キーが 割り当てられているようなら、xorg.conf ファイルに以下の行を追加してください。 Option "XkbVariant" ",winkeys" ロシア語の XKB キーボードは、 地域化されていないアプリケーションではうまく動かないかも知れません。 地域化がされたアプリケーションは少なくともプログラムの最初の方で XtSetLanguageProc (NULL, NULL, NULL); を呼び出すべきです。 X11 アプリケーションを地域化する方法については、 - KOI8-R for X Window + KOI8-R for X Window を参照してください。 台湾向けの繁体字中国語への地域化 + 地域化 繁体字中国語 FreeBSD-Taiwan プロジェクトは、多くの 中国語 ports を利用した、 - FreeBSD を中国語化するための手引き - http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/ + FreeBSD を中国語化するための手引き http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/ を提供しています。 FreeBSD Chinese HOWTO の現在の編集者は Shen Chuan-Hsing statue@freebsd.sinica.edu.tw です。 Chuan-Hsing Shen statue@freebsd.sinica.edu.tw は FreeBSD-Taiwan の zh-L10N-tut を使って Chinese FreeBSD Collection (CFC) を作成しました。 - パッケージとスクリプトは - ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/ + パッケージとスクリプトは ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/ から入手できます。 ドイツ語への地域化 (すべての ISO 8859-1 言語向け) + 地域化 ドイツ語 Slaven Rezic eserte@cs.tu-berlin.de は FreeBSD マシン上でウムラウトを使うためのチュートリアルを書きました。 - チュートリアルはドイツ語で書かれており、 - + チュートリアルはドイツ語で書かれており、 から入手できます。 ギリシャ語への地域化 地域化 Greek Nikos Kokkalis nickkokkalis@gmail.com は、 &os; におけるギリシャ語のサポートについての記事を書きました。 これは、公式の &os; ギリシャ語ドキュメンテーションの一部として http://www.freebsd.org/doc/el_GR.ISO8859-7/articles/greek-language-support/index.html から読むことができます。 この文書は、ギリシャ語 のみ で書かれています。 日本語/韓国語への地域化 + 地域化 日本語 地域化 韓国語 日本語に関しては http://www.jp.FreeBSD.org/ を、韓国語に関しては http://www.kr.FreeBSD.org/ を参照してください。 英語以外の FreeBSD ドキュメント FreeBSD の文書の一部を他の言語に翻訳してくれている人たちがいます。 - これらは メインサイトのリンクを辿るか - /usr/share/doc + これらは メインサイト + のリンクを辿るか /usr/share/doc から入手できます。