目次
アプリケーションソフトの多言語化(M17N)とかネイティブ言語サポートは2段階で行います。
![]() |
ティップ |
---|---|
M17N、I18N、L10Nに対応する英語のmultilingualization、internationalization、localizationの中の"m"と"n"、"i"と"n"、"l"と"n"の間には17、18、10の文字があります。 |
GNOMEやKDE等の現代的なソフトは多言語化されています。UTF-8データーを扱えるようにすることで国際化され、gettext
(1)インフラで翻訳されたメッセージを提供することで地域化されています。翻訳されたメッセージは別の地域化パッケージとして供給されているかもしれません。該当する環境変数を適切なロケールに設定することだけで翻訳されたメッセージが選ばれます。
最も簡単なテキストデーターの表現法はASCIIです。これは英語では十分で(7ビットで表現できる)127文字以下しか使いません。国際化サポートのためにより多くの文字をサポートするために多くの文字の符号化(エンコーディング)システムが発明されています。現代的かつ賢明な符号化システムは、人類が知っている事実上全ての文字が扱えるUTF-8です(「符号化方式の基本」参照)。
詳細はIntroduction to i18nを参照下さい。
国際化ハードウエアーサポートは地域化した設定データーを使って実現されています。
Debianシステムは多くのキーボード配列で機能するように設定できます。
表8.1 キーボード再設定方法のリスト
環境 | コマンド |
---|---|
Linuxコンソール |
dpkg-reconfigure --priority=low console-data
|
X Window |
dpkg-reconfigure --priority=low xserver-xorg
|
こうすることでデッドキー機能付きで多くの欧州言語に関してアクセント付き文字のキーボード入力をサポートするようにします。アジア言語に関しては次に記すSCIMのようなより複雑なインプットメソッドが必要です。
Debianシステムための多言語入力の設定は、im-switch
パッケージとともにスマート共通インプットメソッド(SCIM)ファミリーのパッケージを使うことで簡素化されました。SCIMパッケージのリストは次です。
表8.2 SCIMを用いるインプットメソッドサポートのリスト
パッケージ | ポプコン | サイズ | サポートされたロケール |
---|---|---|---|
scim-anthy * | V:0.2, I:0.6 | 2996 | 日本語 |
scim-canna * | V:0.07, I:0.3 | 376 | , , |
scim-skk * | V:0.05, I:0.2 | 1060 | , , |
scim-prime * | V:0.04, I:0.2 | 912 | , , |
scim-tables-ja * | I:0.5 | 380 | , , (実用性無し) |
scim-tables-zh * | I:0.7 | 11676 | 中国語(zh_*用) |
scim-pinyin * | V:0.3, I:0.7 | 5324 | , , (zh_CN用) |
scim-chewing * | V:0.13, I:0.4 | 264 | , , (zh_TW用) |
scim-hangul * | V:0.04, I:0.08 | 288 | 韓国語 |
scim-tables-ko * | I:0.08 | 472 | , , |
scim-thai * | V:0.01, I:0.04 | 140 | タイ |
scim-m17n * | V:0.06, I:0.13 | 92 | 多言語: インド系言語、アラビア語、他 |
scim-tables-additional * | I:0.17 | 336 | , , |
scim-uim * | V:0.06, I:0.2 | 140 | , , |
kinput2法や他のロケール依存のアジアの古典的インプットメソッドはまだありますが、現代的なUTF-8のX環境下ではお勧めできません。現代的なUTF-8のX環境下でのインプットメソッドの代替アプローチとしては、非X環境下でも実行できるuimツールチェインがあります。
日本語インプットメソッドを英語環境
("en_US.UTF-8
")下で起動すると非常に便利です。SCIMを使ってこの環境をどう実現したかを以下に記します。
scim-anthy
をim-switch
等の推奨(recommended)されたパッケージとともにインストールします。
im-switch
-c
"を実行して"scim
"を選択します。
im-switch -l
"として設定を確認します。
![]() |
注記 |
---|---|
non-CJKかつnon-en_USのロケールの下でSCIMを起動するには、
" |
/SupportedUnicodeLocales = en_US.UTF-8,en_GB.UTF_8,fr_FR.UTF-8
以下に注意下さい。
im-switch
(8)は実行されるのがrootからかどうかによって違った挙動をします。
im-switch
によって起動されるインプットメソッドはロケールに依存します。
$GTK_IM_MODULE
"とか"$QT_IM_MODULE
"の設定による)immoduleメカニズムを使うと、unstable
ではライブラリー移行の期間に不安定性に会うかもしれません。
設定の詳細は、"/usr/share/doc/im-switch/README.Debian.gz
"か"/usr/share/doc/scim/README.Debian.gz
"か"/usr/share/doc/uim/README.Debian.gz
"を参照下さい。要点をここに記します。
Linuxコンソールは限定された文字しか表示できません。(非Xコンソール上で非ヨーロッパ言語を表示するにはjfbterm
(1)のような特別なターミナルプログラムを使う必要があります。)
X Windowは必要なフォントデーターがあればUTF-8中の全ての文字を表示できます。(オリジナルフォントデーターで使われた符号化方式はX Windowシステムが面倒を見るのでユーザーからは直接見えません。)
以下ではgdm
(1)から起動されたX
Window環境下で実行されるアプリケーションのためのロケールに焦点を当てます。
環境変数"LANG=xx_YY.ZZZZ
"は、ロケールを言語コード"xx
"と国コード"yy
"と符号化方式(エンコーディング)"ZZZZ
"に設定します(「"$LANG
"変数」参照)。
現在のDebianシステムは通常ロケールを"LANG=xx_YY.UTF-8
"と設定します。これはUnicode文字セットとともにUTF-8符号化方式を使用します。このUTF-8符号化システムはマルチバイトコードシステムでコードポイントを上手に使います。ASCIIデーターは、7ビットのコード域のみで構成されてい、1文字1バイトのみからなる常に有効なUTF-8データーです。
以前のDebianシステムはロケールを"LANG=C
"か"LANG=xx_YY
"(".UTF-8
"は無しで)設定していました。
LANG=C
"か"LANG=POSIX
"の場合に使われます。
LANG=xx_YY
"の場合に使われます。
"LANG=xx_YY
"の場合に実際に使われる符号化方式は"/usr/share/i18n/SUPPORTED
"を確認することで識別できます。例えば、"en_US
"は"ISO-8859-1
"符号化方式を使い、"fr_FR@euro
"は"ISO-8859-15
"符号化方式を使います。
![]() |
ティップ |
---|---|
符号化方式の値の意味に関しては、表11.2「符号化方式値とその使い方リスト」を参照下さい。 |
UTF-8符号化方式はI18Nのための現代的で気の利いた符号化方式で、Unicode文字である人類が知る実質的に全ての文字を表せます。UTFとはUnicode変換フォーマット(Unicode Transformation Format: UTF)方式のことです。
私は例えば"LANG=en_US.UTF-8
"というUTF-8ロケールをあなたのデスクトップで使うことをお薦めします。ロケールの最初の部分がアプリケーションが提示するメッセージを決めます。例えば、"LANG=fr_FR.UTF-8
"ロケールの下のgedit
(1)
(GNOMEデスクトップのテキストエディター)は、必要なフォントとインプットメソッドがインストールされていれば、メニューをフランス語で提示しながら中国語の文字データーを表示し編集できます。
ロケールを"$LANG
"環境変数のみを用いて設定する事をお薦めします。UTF-8ロケールの下で"LC_*
"変数(locale
(1)参照)の複雑な組み合わせ設定する意味はあまり無いと考えます。
プレーンな英語のテキストですら非ASCII文字を含んでいるかもしれません、例えば左右のクオーテーションマークはASCIIの中にはありません。
“double quoted text” ‘single quoted text’
ASCIIのプレーンテキストをUTF-8のテキストに変換した時には、オリジナルのASCIIのテキストとまったく同じ内容とサイズとなります。ですから、UTF-8ロケールを採用して何ら失うものはありません。
一部のプログラムはI18Nをサポートした後でより多くのメモリーを消費するようになります。それらのプログラムは、実行速度最適化のために内部的にUTF-32(UCS4)でUnicodeのサポートをコードされていて、選ばれたロケールに無関係にそれぞれのASCII文字データー毎に4バイトを消費するからです。ここでも、UTF-8ロケールを使ったからといって何も失うわけではありません。
ベンダー固有の旧式非UTF-8の符号化システムは、多くの国でグラフィック文字のような一部文字に関して仔細だが困惑する相違がありがちでした。現代的なOSがUTF-8システムを採用したことはこのような符号化方式(エンコーディング)の問題を実質的に解決しました。
システムが特定のロケールにアクセスするために、ロケールデーターはロケールデーターベースにコンパイルされなければいけません。(locales-all
パッケージをインストールしない限り、Debianシステムは全てのロケールを事前にコンパイルして提供されません。)コンパイルすることができようにサポートされているロケールの全リストは"/usr/share/i18n/SUPPORTED
"中にリストされています。このファイルは全ての適切なロケール名をリストします。次のようにすると全ての既にバイナリー形式にコンパイルされ使えるUTF-8ロケールがリストされます。
$ locale -a | grep utf8
次のコマンド実行をするとlocales
パッケージが再設定されます。
# dpkg-reconfigure locales
このプロセスは3段階あります。
/etc/defaults/locale
"中のシステム全体のデフォールトのロケール値を設定
使えるロケールには、"en_US.UTF-8
"と"UTF-8
"付きの全ての関心のある言語が含まれているべきです。
米国英語での推奨のデフォールトロケールは"en_US.UTF-8
"です。他の言語では"UTF-8
"付きのロケールを選ぶようにして下さい。これらの設定の内のいずれを使おうとも、いかなる国際化文字でも扱えます。
![]() |
注記 |
---|---|
ロケールを" |
"$LANG
"環境変数の値は多くのアプリケーションによって設定や変更されます。
login
(1)のPAM機構によって初期設定
ssh
(1)のPAM機構によって初期設定
gdm
(1)のような一部ディスプレーマネージャーによって変更
~/.xsessionrc
"を経由するXセッションの起動コードによって変更(lenny
の機能)
~/.bashrc
"等のシェルの起動コードによって変更
![]() |
ティップ |
---|---|
互換性を最大限に考えると、システムワイドのデフォールトロケールを" |
PAMのカスタム化(「PAM と NSS」参照)を使えば、システムワイドのデフォールトロケールに関わらず、特定のロケールをX Windowの下だけで選ぶ事ができます。
この環境は安定度を確保したままあなたに最良のデスクトップ経験を提供します。X Windowシステムが機能していないときでも読めるメッセージを表示する機能する文字ターミナルに常にアクセス出きます。中国語や日本語や韓国語のように非ローマ文字を使う言語では、これは非常に重要です。
![]() |
注記 |
---|---|
Xセッションマネージャーパッケージが改良されれば別の方法が使えるようになるかもしれませんが、ロケールの一般的かつ基本的なロケールの設定方法として以下をお読み下さい。 |
"/etc/pam.d/gdm
"のようなPAM設定ファイル中で言語の環境変数を定義する場所は次の行が定義します。
auth required pam_env.so read_env=1 envfile=/etc/default/locale
これを次のように変更します。
auth required pam_env.so read_env=1 envfile=/etc/default/locale-x
日本語の場合、"-rw-r--r-- 1 root
root
"パーミッションで次のように"/etc/defaults/locale-gdm
"ファイルを作成します。
LANG="ja_JP.UTF-8"
他のプログラムのためにデフォールトの"/etc/defaults/locale
"ファイルは次のように元のままにします。
LANG="en_US.UTF-8"
これはロケールをカスタム化する最も一般的なテクニックで、gdm
(1)自身のメニュー選択ダイアローグを地域化します。
この場合の代策として、"~/.xsessionrc
"ファイル使って簡単にロケールを変更してもいいです。
クロスプラットフォームのデーター交換(「リムーバブルストレージデバイス」参照)のために、特定の符号化方式(エンコーディング)でファイルシステムをマウントする必要があるかもしれません。例えば、vfatファイルシステムに関してmount
(8)はオプション無しの場合CP437とみなします。ファイル名にUTF-8とかCP932を使うためには明示的にマウントオプションを提供する必要があります。
![]() |
注記 |
---|---|
GNOMEのような現代的なデスクトップ環境の下では、デスクトップアイコンを右クリックし"Drive"タブをクリックし"Setting"を開くようにクリックし"Mount options:"に"utf8"を入力すれば、ホットプラグできるUSBメモリーを自動マウントする時のマウントオプションを設定できます。このメモリースティックを次にマウントする機会にはUTF-8でのマウントが有効です。 |
![]() |
注記 |
---|---|
もしシステムをアップグレードしたり旧式非UTF-8システムからディスクを移動したりする場合には、非ASCII文字のファイル名はISO-8859-1とかeucJP等の歴史的な今はお薦めできない符号化方式で符号化をしているかもしれません。テキスト変換ツールの助力を得て、ファイル名をUTF-8に変換します。「テキストデーター変換ツール」を参照下さい。 |
Sambaは新規クライアント(Windows
NT、200x、XP)にはUnicodeを使いますが、旧式クライアント(DOS、Windows 9x/Me)にはCP850をデフォールトで使います。この旧式クライアントへのデフォールトは"/etc/samba/smb.conf
"ファイル中の"dos
charset
"を使って例えば日本語ならCP932等と変更できます。
Debianシステム中で表示されるエラーメッセージや標準のプログラムの出力やメニューやマニュアルページ等のテキストメッセージや文書の多くに翻訳があります。ほとんどの翻訳行為のバックエンドツールとしてGNU gettext(1)コマンドツールチェインが使われています。
"Tasks" →
"Localization"の下のaptitude
(8)リストは地域化されたメッセージをアプリケーションに追加したり翻訳された文書を提供する有用なバイナリーパッケージの徹底的なリストを提供します。
例えば、manpages-<LANG>
パッケージをインストールするとマンページで地域化したメッセージに使えるようになります。<programname>に関するイタリア語のマンページを"/usr/share/man/it/
"から読むには、次を実行します。
LANG=it_IT.UTF-8 man <programname>
sort
(1)を使う際のソートオーダー(並べ替え順序)はロケールの言語選択に影響されます。スペイン語と英語のロケールでは異なる並べ替えが違います。
ls
(1)の日付フォーマットはロケールに影響されます。"LANG=C ls
-l
"と"LANG=en_US.UTF-8
"の日付フォーマットは違います(「時間と日付のカスタム化表示」参照)。
数字の区切り方はロケール毎に異なります。例えば、英語のロケールでは一千一百一点一は"1,000.1
"と表示されますが、ドイツ語のロケールでは"1.000,1
"と表示されます。スプレッドシートプログラムでこの違いに出会うかもしれません。