Next: , Previous: , Up: International   [Contents][Index]


22.2 言語環境

サポートされているすべての文字セットは、マルチバイト文字が利用可能なときは、Emacsバッファーの中でサポートされます。その文字を表示するために、特定の言語を選択する必要はありません。しかしさまざまなデフォルト値をセットするために、言語環境(language environment)を選択することは重要です。大まかに言うと、言語環境とは、言語の選択というよりも、好ましいスクリプト選択の提示です。

言語環境は、テキストを読み込むとき、それを認識するコーディングシステムを制御します(Recognize Codingを参照してください)。これはファイル、到着メール、その他のEmacsで読む任意のテキストに適用されます。これは新しくファイルを作成するときに使う、デフォルトのコーディングシステムも指定します。それぞれの言語環境は、デフォルトのインプットメソッドも指定します。

言語環境を選択するには、current-language-environmentをカスタマイズするか、コマンドM-x set-language-environmentを使います。このコマンドを使うとき、どのバッファーがカレントかで違いは生じません。なぜなら、その効果はEmacsセッションにグローバルで適用されるからです。サポートされている言語環境の一覧は、変数language-info-alistを参照してください。コマンドC-h L lang-env RET (describe-language-environment)を使うと、言語環境lang-envの、より詳細な情報が参照できます。サポートされる言語環境には、以下が含まれます:

ASCII、Arabic、 Belarusian、Bengali、 Brazilian Portuguese、Bulgarian、 Burmese、Cham、 Chinese-BIG5、Chinese-CNS、Chinese-EUC-TW、Chinese-GB、Chinese-GB18030、Chinese-GBK、 Croatian、Cyrillic-ALT、Cyrillic-ISO、Cyrillic-KOI8、 Czech、Devanagari、 Dutch、English、 Esperanto、Ethiopic、 French、Georgian、 German、Greek、Gujarati、 Hebrew、IPA、 Italian、 Japanese、Kannada、 Khmer、Korean、Lao、 Latin-1、Latin-2、Latin-3、Latin-4、Latin-5、Latin-6、Latin-7、Latin-8、Latin-9、 Latvian、Lithuanian、 Malayalam、Oriya、 Persian、Polish、 Punjabi、Romanian、 Russian、Sinhala、 Slovak、Slovenian、Spanish、 Swedish、TaiViet、 Tajik、Tamil、 Telugu、Thai、 Tibetan、Turkish、 UTF-8、Ukrainian、 Vietnamese、Welsh、 Windows-1255

グラフィカルなディスプレーでは、使用されている言語環境で使われているスクリプトを表示するために、適切なフォントをもっている必要があります。フォントのセットアップについては、Fontsetsを参照してください。

環境変数LC_ALLLC_CTYPELANGをセットすることにより、使用する文字セットのlocaleを指定するオペレーティングシステムがいくつかあります(もしこれらの1つ以上がセットされている場合、特に1番目のものが空でない場合、それは正にこの目的のためにlocaleを指定しています)。起動の間、Emacsは文字セットのlocale名を、システムのlocaleエイリアステーブルから探して、その正規化された名前(canonical name)を、変数locale-charset-language-namesおよびlocale-language-names(前者は後者をオーバーライドします)のエントリーにたいしてマッチし、マッチが見つかったら対応する言語環境を選択します。これはディスプレーテーブルと端末のコーディングシステム、localeコーディングシステム、localeに必要な好ましいコーディングシステム — そして最後に重要なのは — Emacsがキーボードから送られた非ASCII文字をデコードする方法を調整します。

Emacs実行中に、(M-x setenvを使って)環境変数LC_ALLLC_CTYPELANGを変更した場合、新しいlocaleにたいする言語環境を再調整するために、後でset-locale-environmentコマンドを呼び出したいと思うかもしれません。

set-locale-environment関数は、通常はシステムメッセージをデコードするために、言語環境により確立された優先コーディングシステムを使用します。しかしlocaleが変数locale-preferred-coding-systemsのエントリーにマッチした場合には、Emacsはかわりに対応するコーディングシステムを使用します。たとえばlocaleの‘ja_JP.PCK’がlocale-preferred-coding-systemsjapanese-shift-jisにマッチすれば、通常ならutf-8が使われるような場合でも、Emacsはエンコーディングにそのコーディングシステムを使用します。

initファイルで明示的にコマンドset-language-environmentを使うか、current-language-environmentをカスタマイズすることにより、起動時に選択された言語環境をオーバーライドできます。

特定の言語環境lang-envの効果に関する情報を表示するには、コマンドC-h L lang-env RET (describe-language-environment)を使います。これはこの言語環境に有効な言語、文字セットのリスト、コーディングシステム、インプットメソッドを表示します。これはこの言語環境で使われるスクリプトを例示する、サンプルテキストも表示します。lang-envに空の入力を与えると、このコマンドは選択されている言語環境を説明します。

ノーマルフックset-language-environment-hookにより、任意の言語環境をカスタマイズできます。コマンドset-language-environmentは、新しい言語環境をセットアップした後に、このフックを実行します。フック関数は変数current-language-environmentをチェックすることにより、特定の言語環境をテストできます。このフックはキーボード入力にたいするコーディングシステムや端末出力、デフォルトのインプットメソッドなど、特定の言語環境にたいして非デフォルトのセッティングが必要な場所に設定します

新しい言語環境のセットアップを開始する前に、set-language-environmentはまずフックexit-language-environment-hookを実行します。このフックはset-language-environment-hookによるカスタマイズを取り消すのに便利です。たとえば、特定の言語環境にたいしてset-language-environment-hookを使って特別なキーバインドをセットアップした場合は、exit-language-environment-hookで通常のキーバインドに復元するべきです。