地域化 (localization) -
i18n/L10n の利用と設定
AndreyChernov寄稿:
Michael C.Wu改訂:
この章では
&os; は、
ユーザーおよび貢献者が世界中に分散したプロジェクトです。
そのため、&os; は多くの言語への地域化に対応しており、
ユーザは、英語以外の言語を見たり、入力したり、処理したりできます。
現在では、主要な言語のほとんどから選ぶことができます。
たとえば中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、
ベトナム語などがありますが、これらに限定されるわけではありません。
国際化 (internationalization)
地域化 (localization)
地域化(localization)
internationalization は、i18n
と短縮して表記されます。
これは internationalization
の最初と最後の間の文字数に由来します。
L10n も同じ命名法を用いて
localization
を縮めたものです。
これらを合わせて、i18n/L10n
された (すなわち国際化/地域化された)
手法、プロトコル、アプリケーションは、
自分達の好みの言語を使うことを可能にしてくれます。
国際化 (i18n)
されたアプリケーションは、ライブラリとして i18n
化キットを用いてプログラミングされます。
これは開発者が単純なファイルを書いて、
表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。
この章では、&os; の国際化 (internationalization)
と地域化 (localization) 機能について解説します。
システムレベルでもアプリケーションレベルでも、
国際化 (i18n) の実装には様々な側面があるので、
必要に応じて可能な範囲で読者に対してより専門的な文書情報を示すことにします。
この章では、以下の分野について説明します。
近代的なオペレーティングシステムで、
異なる言語およびロケールがどのように符号化されているか。
ログインシェルでロケールを設定するにはどうするか。
コンソールを英語以外の言語用に設定するにはどうするか。
様々な言語で効率的に Xorg
を使うにはどうすればよいか。
国際化 (i18n)
されたアプリケーションを書くための情報はどこにあるか。
この章を読む前に、以下のことを理解しておく必要があります。
サードパーティ製アプリケーションのインストール方法
地域化の利用
ロケール
地域化の設定は、言語コード、
国コード、エンコーディングという三つの要素を基本とします。
ロケール名はこれらから以下のように構成されます。
言語コード_国コード.エンコーディング
言語コード
国コード
言語コード および
国コード は、
国と言語を特定するために用いられます。
では、
言語コード_国コード
の例を示します
言語および国コード
言語_国コード
説明
en_US
英語、合衆国
ru_RU
ロシア語、ロシア
zh_TW
繁体字中国語、台湾
エンコーディング
ASCII
いくつかの言語 (例えば中国語や日本語) は、
ASCII 文字では表すことができないので、
ワイド文字や多バイト文字を用いた拡張された言語のエンコードが必要となります。
古いアプリケーションの中には、
これらのエンコードを誤ってコントロール文字として認識するものがありますが、
最近のアプリケーションは、大抵 8-bit 文字を認識します。
実装方法にも依りますが、アプリケーションのコンパイル時もしくは
configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。
以下では、&os; システムにおいてロケールを設定する方法について説明します。
次の節では、i18n
に対応するアプリケーションの見つけ方やコンパイル方法について説明します。
利用可能なすべてのロケールを調べるには、
以下のように実行してください。
&prompt.user; locale -a | more
現在のロケールの設定を調べるには、
以下のコマンドを実行してください。
&prompt.user; locale
ログインシェルでロケールを設定する
ロケールの設定は、ユーザの
~/.login_conf、
またはユーザのシェルの初期設定ファイルである
~/.profile,
~/.bashrc または ~/.cshrc
で行います。
以下の二つの環境変数を設定する必要があります。
LANG: ロケールを設定します。
POSIX
MIME
MM_CHARSET: アプリケーションで使用される
MIME 文字セットを指定します。
これらの変数は、ユーザのシェルの設定ファイルに加え、
アプリケーション固有の設定ファイル、
および Xorg
の設定ファイルにおいても指定される必要があります。
ロケール (locale)
ログインクラス
必要な変数を割り当てるには、二つの方法があります。
ログインクラス
において割り当てる方法 (推奨される方法です)、および
初期化ファイル
で指定する方法です。
次の 2 つの節では、この両方の方法について説明します。
ログインクラスを用いる方法
最初に説明する方法は、
すべてのシェルにおいて必要なロケール名と MIME
文字セットを環境変数に割り当てます。
これは推奨される方法です。
この割り当て方法としては、各ユーザが行う方法と、
スーパーユーザがすべてのユーザに対して設定する
2 つの方法があります。
以下の簡単な例では、
各ユーザのホームディレクトリの
.login_conf
で、両方の変数に Latin-1 エンコーディングを設定します。
me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:
繁体字中国語 (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
もう一つの方法では、
スーパーユーザがシステム上のすべてのユーザに対する地域化を設定します。
/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:
詳細に関しては
&man.login.conf.5; を参照してください。
/etc/login.conf を編集したら、
忘れずに以下のコマンドを実行してケイパビリティデータベースをアップデートしてください。
&prompt.root; cap_mkdb /etc/login.conf
ログインクラスを変更するユーティリティ
vipw
/etc/login.conf
を手動により編集する方法に加え、
新たに作成するユーザのロケールを設定するためのユーティリティがあります。
vipw
を使って新しいユーザを追加する際には、使用する言語を
language に指定してください。
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
adduser
ログインクラス
adduser
を使って新しいユーザを追加する場合に、
すべてのユーザに対するデフォルトの言語は事前に設定でき、
個々のユーザに対する言語を指定できます。
新しく追加するすべてのユーザが同じ言語を使う場合には、
/etc/adduser.conf で
defaultclass = language
と設定してください。
新しいユーザを作成するときに、この設定を変更するには、
以下のプロンプトにおいて希望するロケールを指定してください。
Enter login class: default []:
もしくは、adduser
を実行する際にロケールを指定してください。
&prompt.root; adduser -class language
pw
pw
を使って新しいユーザを追加する場合には、
以下のようにしてロケールを指定してください。
&prompt.root; pw useradd user_name -L language
シェルの初期化ファイルによる方法
ここで説明する方法は、
使用するシェルごとに手動での設定が必要なため、推奨されません。
シェル毎に設定ファイルが存在し、その構文はシェルに依存します。
たとえば、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
コンソールの設定
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
設定省略時には、&man.syscons.4;
ドライバのマウスカーソルはキャラクタセット中の
0xd0-0xd3 の範囲を占めています。そのため、
利用している言語がこの範囲のキャラクタセットを使っている場合、
カーソルの占める範囲を移動してください。
&os; でこれを回避するには、次の行を
/etc/rc.conf に追加してください。
mousechar_start=3
上記の例の キーマップ名 は
/usr/share/syscons/keymaps
にあるキーマップファイルから .kbd
という拡張子を除いたものです。
どのキーマップを使うかよくわからないなら、&man.kbdmap.1;
で再起動せずにキーマップを試すことができます。
ファンクションキーの並びはキーマップにより定義されてはいないため、
端末タイプに合わせたファンクションキーを設定するために
keychange が必要となります。
/etc/ttys
の中のすべての仮想端末のエントリに対して、
正しいコンソール端末タイプを設定するようにしてください。
現在の定義済の値は以下の通りです。
文字セット
端末タイプ
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
内の適切な &os; port を利用してください。
いくつかのアプリケーションは、
システムに対しシリアルターミナルとして振る舞います。
/etc/ttys において、
Xorg
と疑似シリアルコンソール用に充分なターミナルを用意してください。
以下はコンソールで他の言語を使うためのアプリケーションのリストの一部です。
言語
ports の位置
繁体字中国語 (BIG-5)
chinese/big5con
日本語
japanese/kon2-16dot または
japanese/mule-freewnn
韓国語
korean/han
Xorg の設定
Xorg は &os;
とともにインストールされませんが、
Ports Collection からインストールできます。
インストール方法についての詳細は、
を参照してください。
この節では、インストールされた Xorg
をどのように地域化するかについて説明します。
フォント、メニューなどのアプリケーション固有の国際化
(i18n) の設定は、
~/.Xresources において指定できます。
フォントの表示
Xorg True Type
フォントサーバ
x11-servers/xorg-server
をインストールしたら、言語の
&truetype; フォントをインストールしてください。
ロケールを正しく設定すれば、
選んだ言語がアプリケーションのメニューに表示されるはずです。
非英語の文字を入力する
X Input Method (XIM)
X Input Method (XIM)
プロトコルは Xorg
クライアント用の標準規格です。
すべての Xorg アプリケーションは
XIM 入力サーバからの入力を受け取る
XIM クライアントとして書かれるべきです。
様々な言語用の XIM サーバが存在します。
プリンタの設定
プリンタにはいくつかの C 言語の char で表現できる
シングルバイトの文字セットがハードウェアに組み込まれています。
ワイド/多バイトの文字セットでは、apsfilter
といったユーティリティを使用する特殊な設定が必要です。
言語固有のコンバータを用いて、文書を &postscript; や PDF
フォーマットにコンバートできます。
カーネルとファイルシステム
&os; の高速ファイルシステム (FFS)
は 8-bit 透過であり、
C 言語の char で表現できるいかなる文字セットも使うことが
できます。
しかし、ファイルシステム中には文字セットの名前は記録されていません。
したがって、これは単なる 8-bit であり、
エンコーディングに関しては何の情報もないのです。
公式には、FFS
はいかなるワイド/マルチバイトの文字セットもサポートしていません。
しかし FFS
でそのようなサポートを行うためのパッチが、
多くのワイド/マルチバイトの文字セットに存在します。
これらのパッチに関しては、各言語のウェブサイトを参照してください。
DOS
Unicode
&os; の &ms-dos; ファイルシステムに対する対応については、
&ms-dos;, Unicode 文字セット、&os;
ファイルシステムの文字セットの間で変換を行うことが可能です。
詳細は &man.mount.msdosfs.8; を参照してください。
国際化 (i18n)
に対応したプログラムのコンパイル
アプリケーションがワイド/多バイト文字に対応するために、
&os; Ports
Collection では各言語向けのプログラムを提供しています。
アプリケーションを正しく configure する方法や、port
の構築時に使用するコンパイルオプションを決めるための、
より詳細な情報については、
各 &os; port の i18n 文書を参照してください。
次のことを心に留めておいてください。
言語固有の、C 言語の char で表現できる
ISO8859-1, ISO8859-15, KOI8-R, CP437
といったシングルバイトの文字セット。
&man.multibyte.3; を参照してください。
EUC および Big5 といった、
ワイド/多バイトのエンコーディング。
現在有効な文字セットのリストは、IANA
Registry で確認できます。
&os; では、Xorg 互換のロケール符号を用いています。
&os; Ports Collection では、国際化
(i18n) されたアプリケーションの名前には
容易に認識できるように、-i18n
と付いています。しかしながら、
に必要とする言語に対応しているとは限りません。
&os; Ports Collection の多くのアプリケーションはすでに国際化
(i18n) されています。
いくつかの port の名前には、-i18n
と付いています。
これらはもちろんのこと、
他のプログラムも国際化 (i18n)
への対応を組み込んだものがあり、
コンパイルに際して特別な注意を払う必要はありません。
MySQL
しかし、MySQL のようなアプリケーションでは、
特定の文字セットを使うように port の Makefile
を設定する必要があります。
これは大抵 Makefile の中で
対処されているか、ソース中の configure
に値を渡すことで対応しています。
&os; を特定の言語に地域化する
ロシア語 (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
に以下の行を追加してください。
keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
mousechar_start=3
/etc/ttys の各
ttyv エントリにおいて、
端末タイプとして cons25r
を指定してください。
プリンタの設定
プリンタ
ロシア語用の文字を搭載したプリンタはほとんど
ハードウェアコードページ CP866 を使っているため、
KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。
&os; は、デフォルトフィルタを
/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,-Lru_RU.KOI8-R 0 0
はロケール名を選択します。
詳しくは、&man.mount.msdosfs.8; を参照してください。
Xorg の設定
まず X
以外のロケールの設定 を行ってください。
&xorg; を使う際には、
x11-fonts/xorg-fonts-cyrillic
パッケージをインストールしてください。
/etc/X11/xorg.conf の
"Files"
セクションをチェックしてください。
既存の FontPath
エントリの前に以下の行を追加しなければなりません。
FontPath "/usr/local/lib/X11/fonts/cyrillic"
他の Cyrillic フォントについては、
Ports Collection を検索してください。
ロシア語のキーボードを使えるようにするには、
以下の行を xorg.conf の
"Keyboard" セクションに追加します。
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:toggle"
このファイルの中で XkbDisable
がコメントアウトされていることを確認してください。
grp:toggle
では Right Alt を使い、
grp:ctrl_shift_toggle
では CtrlShift
を使います。
grp:caps_toggle では、
CapsLock を使います。
従来の CapsLock の機能は、
ラテン文字モードの時のみ
ShiftCapsLock
で使うことができます。
&xorg; では、理由は不明ですが
grp:caps_toggle は動作しません。
キーボードに &windows;
キーがあり、
そのキーにいくつかの非英字キーが割り当てられているようなら、
xorg.conf
に以下の行を追加してください。
Option "XkbVariant" ",winkeys"
ロシア語の XKB キーボードは、
地域化されていないアプリケーションではうまく動かないかも知れません。
地域化がされたアプリケーションは少なくともプログラムの最初の方で
XtSetLanguageProc (NULL, NULL, NULL);
を呼び出すべきです。
Xorg
アプリケーションを地域化する方法については、
KOI8-R for X Window
を参照してください。
台湾向けの繁体字中国語への地域化
地域化
繁体字中国語
&os;-Taiwan プロジェクトは、多くの
中国語 ports を利用した、
&os; を中国語化するための手引き http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/
を提供しています。
&os; Chinese HOWTO の現在の編集者は
Shen Chuan-Hsing statue@freebsd.sinica.edu.tw です。
ドイツ語への地域化 (すべての ISO 8859-1 言語向け)
地域化
ドイツ語
Slaven Rezic eserte@cs.tu-berlin.de は
&os; マシン上でウムラウトを使うためのチュートリアルを書きました。
チュートリアルはドイツ語で書かれており、
から入手できます。
ギリシャ語への地域化
地域化
Greek
Nikos Kokkalis nickkokkalis@gmail.com は、
&os; におけるギリシャ語のサポートについての記事を書きました。
これは、公式の &os; ギリシャ語ドキュメンテーションの一部として
ここ で読むことができます。
この文書は、ギリシャ語で書かれています。
日本語/韓国語への地域化
地域化
日本語
地域化
韓国語
日本語に関しては http://www.jp.FreeBSD.org/
を、韓国語に関しては http://www.kr.FreeBSD.org/
を参照してください。
英語以外の &os; ドキュメント
&os; の文書の一部を他の言語に翻訳してくれている貢献者たちがいます。
これらは メインサイト
のリンクを辿るか
/usr/share/doc
から入手できます。