目次
アプリケーションソフトの多言語化 (M17N) とかネイティブ言語サポートは2段階で行います。
国際化 (I18N): ソフトが複数のロケール (地域) を扱えるようにします。
地域化 (L10N): 特定のロケール (地域) を扱えるようにします。
ヒント | |
---|---|
M17N、I18N、L10N に対応する英語の multilingualization、internationalization、localization の中の "m" と "n"、"i" と "n"、"l" と "n" の間には 17、18、10 の文字があります。詳細は、国際化と地域化 を参照下さい。 |
国際化をサポートするプログラムの挙動は、ローカル化をサポートする環境変数 "$LANG
"
を使って設定されます。libc
ライブラリーによるロカール依存機能の実際のサポートには、locales
か
locales-all
パッケージをインストールする必要があります。locales
パッケージは適切に初期化する必要があります。
locales
と locales-all
パッケージのいずれもインストールされない場合、ロカール機能のサポートは失われ、システムは US 英語のメッセージ使い、データーを ASCII として取り扱います。この挙動は "$LANG
" が
"LANG=
" か "LANG=C
" か
"LANG=POSIX
" と設定されたのと同様です。
GNOME や KDE 等の現代的なソフトは多言語化されています。UTF-8
データーを扱えるようにすることで国際化され、gettext
(1)
インフラで翻訳されたメッセージを提供することで地域化されています。翻訳されたメッセージは別の地域化パッケージとして供給されているかもしれません。
現行の Debian デスクトップ GUI システムは普通 GUI 環境下のロカールを
"LANG=xx_YY.UTF-8
" と設定します。ここで、"xx
" は
ISO 639 言語コード で
"YY
" は ISO 3166
国コード です。これらの値はデスクトップ設定 GUI ダイアログで設定されプログラムの挙動を変えます。「"$LANG
" 変数」を参照下さい
テキストデータの最も単純な表現は ASCII で、英語には十分で 127 未満の文字 (7 ビットで表現可能) を使います。
プレーンな英語のテキストですら非 ASCII 文字を含んでいるかもしれません。例えば微妙に曲がった左右のクォテーションマークは ASCII 内では利用できません。
“double quoted text” is not "double quoted ASCII" ‘single quoted text’ is not 'single quoted ASCII'
より多くの文字をサポートするために、多くの言語をサポートする多数の文字集合とエンコーディング体系が使用されてきました (表11.2「符号化方式値とその使い方リスト」 を参照下さい)。
ユニコード 文字セットは実質的に人類が知り得る全ての文字を21ビットのコードポイント範囲 (16進表記で 0 から 10FFFF まで) で表記できます。
テキスト エンコーディング システム UTF-8 は、ASCII データー処理システムとほぼ互換な賢明な 8 ビット データー ストリームにユニコード コードポイントを当てはめます。これが UTF-8 を現代的な好ましい選択肢にします。UTF はユニコード変換フォーマット (Unicode Transformation Format) の意味です。 ASCII プレーンテキスト データーが UTF-8 データーに変換されるとき、最初の ASCII データーと全く同じ内容とサイズです。UTF-8 ロケールを採用することで失いものはありません。
UTF-8
ロカールの下の互換アプリケーションプログラムを使うと、必要なフォントとインプットメソッドが導入され有効化されていれば、いかなる外国語のテキストデーターの表示や編集ができます。例えば、"LANG=fr_FR.UTF-8
"
ロケールの下で、gedit
(1) (GNOME デスクトップ用のテキストエディター)
は、メニューをフランス語で表示しながら中国語の文字の表示や編集ができます。
ヒント | |
---|---|
新標準の " |
注記 | |
---|---|
一部のプログラムは I18N をサポートした後でより多くのメモリーを消費するようになります。それらのプログラムは、実行速度最適化のために内部的に UTF-32 (UCS4) で Unicode のサポートをコードされていて、選ばれたロケールに無関係にそれぞれの ASCII 文字データー毎に4バイトを消費するからです。ここでも、UTF-8 ロケールを使ったからといって何も失うわけではありません。 |
システムが特定のロケールにアクセスできるように、ロケールデータをロケールデータベースからコンパイルする必要が有ります。
locales
パッケージには、事前にコンパイルしたロケールデーターは同梱されていません。以下のようにして設定する必要があります:
# dpkg-reconfigure locales
このプロセスは2段階あります。
バイナリー形式にコンパイルしたい全ての必要なロケールデーターを選択します。(少なくとも1つの UTF-8 ロケールが含めて下さい)
PAM (「PAM と NSS」を参照下さい) によって使われるように
"/etc/default/locale
" を作成しシステム全体のデフォールトのロケール値を設定。
"/etc/default/locale
" 中に設定されたシステム全体のデフォルトロケール値は GUI
アプリケーション用の GUI 設定によりオーバーライドされるかもしれません。
注記 | |
---|---|
実際に使われる符号化方式は " |
locales-all
パッケージには、全てのロケールデーター用に事前にコンパイルしたロケールデーターが同梱されています。"/etc/default/locale
"
を作成しないので、locales
パッケージもまだインストール必要があるかもしれません。
ヒント | |
---|---|
いくつかの Debian 派生のディストリビューションの |
クロスプラットフォームのデーター交換 (「リムーバブルストレージデバイス」を参照下さい)
のために、特定の符号化方式 (エンコーディング) でファイルシステムをマウントする必要があるかもしれません。例えば、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
GNU gettext は $LANGUAGE
環境変数を使って翻訳言語の優先順位をつけるようにできます。例えば:
$ export LANGUAGE="pt:pt_BR:es:it:fr"
詳しくは、info gettext
を参照して "The LANGUAGE variable"
セクションを読んで下さい。
sort
(1) や ls
(1)
での並べ替え順はロケールの影響を受けます。LANG=en_US.UTF-8
をエクスポートすると辞書順
A->a->B->b...->Z->z
で並べ替えられ、一方
LANG=C.UTF-8
をエクスポートすると ASCII バイナーリー順
A->B->...->Z->a->b...
で並べ替えられます。
ls
(1) の日付形式はロケールに影響されます。literal>" の日付形式は違います (「時間と日付のカスタム化表示」を参照下さい)。
date
(1) の日付形式はロケールに影響されます。例えば以下です:
$ unset LC_ALL $ LANG=en_US.UTF-8 date Thu Dec 24 08:30:00 PM JST 2023 $ LANG=en_GB.UTF-8 date Thu 24 Dec 20:30:10 JST 2023 $ LANG=es_ES.UTF-8 date jue 24 dic 2023 20:30:20 JST $ LC_TIME=en_DK.UTF-8 date 2023-12-24T20:30:30 JST
数字の区切り方はロケール毎に異なります。例えば、英語のロケールでは一千点一は "1,000.1
"
と表示されますが、ドイツ語のロケールでは "1.000,1
"
と表示されます。スプレッドシートプログラムでこの違いを目にするしれません。
"$LANG
" 環境変数の各詳細機能は、"$LC_*
"
変数の設定でオーバーライドされます。これらの環境変数は更に "$LC_ALL
"
変数の設定でオーバーライドされます。詳細は locale
(7)
マンページを参照下さい。複雑な設定をするよほどの理由がない限り、これらは使わずただ "$LANG
" 変数だけを
UTF-8 ロカールの 1 つに設定して使いましょう。
Debian システムは keyboard-configuration
と
console-setup
パッケージを使い多くの国際キーボード配列として機能するように設定できます。
# dpkg-reconfigure keyboard-configuration # dpkg-reconfigure console-setup
Linux コンソールや X Window システムでは、これは "/etc/default/keyboard
"
と "/etc/default/console-setup
" 内の設定パラメーターを更新します。これは Linux
コンソールのフォントも設定します。多くの欧州言語で用いられるアクセント付き文字を含めた多くの非 ASCII 文字は デッドキーや AltGr
キーやコンポーズキーを用い提供されます。
Wayland 上の GNOME デスクトップシステムでは、「Linux コンソールと X Window 用のキーボード インプット」は非英語の欧州言語をサポートできません。IBus がアジア言語のみならず欧州言語もサポートします。GNOME デスクトップ環境のパッケージ依存関係が
"gnome-shell
" 経由で "ibus
"
を推薦します。"ibus
" のコードは setxkbmap
と XKB
オプション機能を統合するように更新されています。多言語キーボード入力には "GNOME Settings" か "GNOME Tweaks" から
ibus
を設定する必要があります。
注記 | |
---|---|
もし ibus がアクティブな場合、たとえ古典的 X 上のデスクトップ環境下でも、あなたの |
GNOME デスクトップ環境が "gnome-shell
" 経由で
"ibus
" を推薦するので、"ibus
"
はインプットメソッドの良い選択肢です。
アプリケーションへの多言語入力は以下のように処理されます。
Keyboard Application | ^ | | +-> Linux kernel -> Input method (ibus) -> Gtk, Qt, X, Wayland +-- Engine--+
IBus とそのエンジンパッケージのリストは以下の通りです。
表8.1 IBusとエンジンパッケージのリスト
パッケージ | ポプコン | サイズ | サポートされたロケール |
---|---|---|---|
ibus | V:198, I:245 | 1723 | dbus を用いるインプットメソッドのフレームワーク |
ibus-mozc | V:1, I:3 | 944 | 日本語 |
ibus-anthy | V:0, I:1 | 8856 | , , |
ibus-skk | V:0, I:0 | 242 | , , |
ibus-kkc | V:0, I:0 | 210 | , , |
ibus-libpinyin | V:1, I:3 | 2761 | 中国語 (zh_CN 用) |
ibus-chewing | V:0, I:0 | 247 | , , (zh_TW 用) |
ibus-libzhuyin | V:0, I:0 | 40995 | , , (zh_TW 用) |
ibus-rime | V:0, I:0 | 73 | , , (zh_CN/zh_TW 用) |
ibus-cangjie | V:0, I:0 | 119 | , , (zh_HK 用) |
ibus-hangul | V:0, I:2 | 264 | 韓国語 |
ibus-libthai | I:0 | 90 | タイ語 |
ibus-table-thai | I:0 | 58 | タイ語 |
ibus-unikey | V:0, I:0 | 318 | ベトナム語 |
ibus-keyman | V:0, I:0 | 161 | 多言語: 2000 語以上のための Keyman エンジン |
ibus-table | V:0, I:1 | 2176 | IBus 用のテーブルエンジン |
ibus-m17n | V:0, I:1 | 395 | 多言語: インド系言語、アラビア語、他 |
plasma-widgets-addons | V:50, I:100 | 1992 | キーボード インジケーターを含む Plasma 5 用の追加ウイジェット |
注記 | |
---|---|
中国語にとっては、" |
日本語インプットメソッドを英語環境 ("en_US.UTF-8
") 下で起動するのが非常に便利です。Wayland
環境下で IBus を使ってどう実現したかを以下に記します。
日本語インプットツールパッケージの ibus-mozc
(または
ibus-anthy
) を im-config
等の推奨
(recommended) されたパッケージとともにインストールします。
アクティベートされていない場合は "Settings" → "Keyboard" → "Input Sources" → click
"+
" in "Input Sources" → "Japanese" → "Japanese mozc (or
anthy)" を選択し "Add" をクリックします。
インプットソースはいくつ選んでも構いません。
ユーザーアカウントに再ログインします。
GUI ツールバーアイコンを右クリックして各インプットソースを設定します。
インプットソース間を、SUPER-SPACE を用いて切り替えます。(SUPER は普通 Windows キーです。)
ヒント | |
---|---|
シフト |
im-config
(8) のための GUI メニューエントリーは "Input method" です。
あるいは、ユーザのシェルから "im-config
" を実行します。
im-config
(8) は実行されるのが root からかどうかによって違った挙動をします。
im-config
(8)
はユーザーからのアクション無しにシステム上で最も好ましいインプットメソッドを有効にします。
Linux コンソールは限定された文字しか表示できません。(非 GUI コンソール上で非ヨーロッパ言語を表示するには
jfbterm
(1) のような特別なターミナルプログラムを使う必要があります。)
GUI 環境(7章GUI システム)は、必要なフォントデーターがあれば UTF-8 中の全ての文字を表示できます。(オリジナルフォントデーターで使われた符号化方式は面倒を見られているのでユーザーからは見えません。)
東アジアのロケールでは、箱描画文字やギリシャ文字やキリル文字はあなたが望むよりも広い幅で表示されて、ターミナル出力が揃わなくなるかもしれません(Unicode標準附属書 #11 参照)。
この問題は回避可能です:
gnome-terminal
: Preferences → Profiles →
Profile name → Compatibility → Ambiguous-wide
characters → Narrow
ncurses
: 環境変数を export
NCURSES_NO_UTF8_ACS=0
と設定します。