top page > L'Internationale > here

非英語環境に関する総論


概要

「総論」というのはここの一連のページの中の総論という意味です. 「そもそも」の話と,各論に共通する話,そして言語環境を変更する流れを概略説明します. 例外も多いので,対応する各論もご参照下さい. (それが未完成だという点が困りものなのですが.)

なお,以下の記述は,FreeBSD 6.2 に関するものです.


目次

1. はじめに
2. 文字コード
3. 文字の出力
4. 文字の入力
5. 補足

1. はじめに

詳しくは次節に記しますが,unix や X Window System の基幹は「英語の世界」です. それ以外の言語を使いたい場合,最も重要なことは,そもそもその言語が,使いたい文字コードも含めて [1],unix や X Window System および個々のプログラムにて使えるように整備されているか否かです. [2]

FreeBSD にてどのような言語や文字コードが使えるかは,次のようにして知ることができます.

% locale -a

表示される各々の行の最初の二文字が言語を,四文字目以降が文字コードを表わしています.

X Window System にてどの言語が使えるかに関しては文書が見つかりません. とりあえず /usr/X11R6/lib/X11/locale/ の各ファイル,特に locale.alias が参考になるでしょう. (少なくとも現時点では,FreeBSD にて使える言語,文字コードはすべて使えますので,とりあえずは心配無用です.)

個々のプログラムの対応状況は,各々のマニュアルを参照して下さい. 大雑把に分類すると,英語以外の言語には FreeBSD や X Window System の機能に依存した形で対応しているプログラムと,種々の Web Browser や mule, emacs や TeX のように,独自に種々の言語をサポートしているものとがあります. [3]
ports/packages になっているものであれば,/usr/ports/ の下にある種々の言語の directory (例えば japanese, russian 等) の中身を見てみれば,その言語をサポートしたプログラム (例えば less, grep) の有無を確認することができます.

英語以外の言語をどの程度使うかにより難易度が異なります. 平易な順に列挙すれば次のようになります. (順序は私の主観によりますが,最も難しいのが入力であることには異論はないでしょう.)

  1. 英語のアルファベット (厳密には ASCII code) にない文字を表示させる.
  2. その文字を less, grep, sed 等で処理したり,文字コードを変換したりする.
  3. その文字をエディタで入力する.(メールや TeX の文書の作成.)

さらに,文字の表示を細分類し,平易な順に列挙すれば次のようになります. (2 と 3 とは逆かも.)

  1. X Window System 上の Web Browser に文字を表示させる.
  2. xdvi, gs に文字を表示させる.
  3. console や X Window System 上の terminal 等に文字を表示させる.

また文字を入力する場合には,言語によっても難易度が変わります. すなわち,

  1. 独仏露語のように,文字をキーボードから直接入力できるような言語.
  2. 日本語のローマ字入力やかな漢字変換のように,変換を要する言語.
    (こちらの場合の話題は,日本語も含めてここでは取り扱いません.)

[1] 同じ言語でも複数の文字コードがあり得るのは日本語で経験済みでしょう. 本文で「種々の言語」のような言い方をした場合,それは「種々の言語と文字コード」の意味に解釈して下さい.

[2] 原理的には,自分で拡張すればどの言語や文字コードでも使えますが,敷居は高いでしょう. 本文中にその言語や文字コードが「使える」と書いてあった場合,「既にサポートされている」という意味に解釈して下さい.
X Window System は FreeBSD よりも多種の言語をサポートしていますので,その言語に関しては少しだけ敷居が低いでしょう.
また,Linux でのサポート状況も調べてみると良いでしょう.

[3] 従って FreeBSD, X Window System および個々のプログラムにおける言語のサポート状況や依存関係はプログラム毎に異なります.

2. 文字コード

先ず,次のようにして ASCII code には何があるかを確認します.

% man ascii

英語のアルファベットの大文字,小文字,アラビア数字,記号,そして制御コードから構成されていることがわかります. (ここでの目的は,アルファベットとして英語のそれしかないことを確認することです.)

unix を使う場合,ASCII code の入出力は不可欠です. すなわち,

また,標準の command 名の由来の多くは英語です. すなわち,unix の基幹は「英語の世界」なのです.

従って,それ以外の言語を使う場合には「英語からの置き換え」でなく「英語との共存」という形になります. しかし,日本においては,「英語のみ」か「英語 + 日本語」以外の言語環境に関する情報は得難いように思います. そこで,日本語以外の環境をどう利用するのかについて,私の使っている限りの例ですが,提示を致します.

なお,以下では「英語」と "ASCII code" とはほぼ同義で,言語の話なら前者,文字コードの話なら後者と使い分けています.

種々の言語を利用する際に問題になるのが ASCII code にない文字です. ASCII code は 0 から 127 までなので,それにない文字を使いたい場合にはそれらを 128 から 255 に入れています. ただし,所詮 128 個しかないのですべての文字をそこに入れることができず,目的別 (言語の系統別) に派生種が存在することになります.
(ちなみに,それでは仕方ないので作られたのが UTF-8 等です.)

実例として,X Window System にて,様々な派生種のフォントを見てみましょう. 先ず 1 byte 文字のフォントを見ます.

% xfd -fn -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1          ← Latin 文字
% xfd -fn -misc-fixed-medium-r-normal--14-130-75-75-c-70-koi8-r             ← Cyril 文字
% xfd -fn -misc-fixed-medium-r-normal--14-130-75-75-c-70-JISX0201.1976-0    ← 半角カナ

先述のように,上半分 (0-127) は ASCII code として同一であり [5],下半分 (128-255) は様々な言語の文字に割り当てられています.[6]

さらに,日本語の漢字のように 128 文字では収まらない場合,別体系で 2 byte 文字のフォントがあります.

% xfd -fn -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0

[4] 日本語対応の有無は,man ならば /usr/share/man/ja* の,tcsh ならば /usr/share/nls/ja*/tcsh.cat の有無を確認します.

[5] 厳密に言えば,半角カナのコード 0x5c は円マーク,それ以外のコードのそれは back slash であり,同一ではありません.

[6] 2 byte 文字と 1 byte 文字の後半との共存はできない等,種々の問題があります.
  なお,この「後半」「下半分」にも名称があると思いますが,見つけられませんでした.

3. 文字の出力

Web Browser や xdvi, gs に文字を表示させる場合は,独自に多言語環境を持つプログラム に記しました.

console や X Window System 上の terminal 等に文字を表示させる場合は,もう少し手間がかかります. すなわち,

  1. LANGLC_* などの環境変数を規定する. (環境変数の設定 もご覧下さい.)
  2. console や X Window System の terminal で出力するフォントを規定する.

console に出力するフォントは次のように規定します. (AT 互換機のみ.)
(1) (文字ベースの) GUI を用いて変更する.(再起動したら default に戻る.)

% vidfont

(2) command line にて変更する.(再起動したら default に戻る.)

# vidcontrol -f iso-8x16

(3) /etc/rc.conf を用いて起動時に変更する.

font8x16="iso-8x16"

フォントの名称は,以下ところにあるファイルから拡張子 .fnt を除いたものです.

% ls -l /usr/share/syscons/fonts

OS の起動時に表示されるフォントは,その計算機の BIOS のものです. /etc/rc.conf にてフォントを指定した場合,表示されるフォントが起動の途中で切り換わります. 一度フォントを切り換え切り換えると,OS を再起動しない限り BIOS のフォントには戻せません. (戻すやり方は用意されているような気もしますが.)

日本語を表示するためには,AT 互換機では kon2 が必要です. PC-98 では何も導入する必要はありません..

X Window System 上の terminal (kterm, xterm) に出力するフォントは次のように指定します.
kterm で出力するフォントは,~/.Xresources にて次のように指定します.

kterm*VT100*fontList:               -*-fixed-medium-r-normal--14-*
kterm*VT100*font:          a14
kterm*VT100*romanKanaFont: r14
kterm*VT100*kanjiFont:     k14

xterm も同様に ~/.Xresources を利用できますが,~/.xinitrc にて次のようにしても良いでしょう.

if [ $LANG = "ru_RU.KOI8-R" ]; then
   xterm -fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-koi8-r &
fi

以上の準備ができたら,とりあえず

% date

と実行してみれば,設定された言語で日付が表示されます. また,

% ls -l

と実行してみれば,ファイルの日付の月の部分が変わっているはずです. あるいは

% abc

のように存在しないコマンドを実行してみれば,tcsh の error message が各々の言語にて出力されるはずです. (その言語と文字コードに対応した error message が用意されている場合のみ.)

4. 文字の入力

様々な言語の環境を使う場合に最も困難なのは,やはり文字の入力でしょう. 日本において英語や日本語以外の環境を使うには,特にキーボードに関連した問題の解決が大変なように思えます. すなわち,

console では,キーマップは /usr/share/syscons/keymaps/ にあるファイル *.kbd により設定します.

(1) (文字ベースの) GUI を用いて変更する.(再起動したら default に戻る.)

% kbdmap

(2) command line にて変更する.(再起動したら default に戻る.)

# kbdcontrol -l jp.106

(3) /etc/rc.conf を用いて起動時に変更する.

keymap="jp.106"

X Window System での文字の入力に関しては 様々な言語環境を使う をご覧下さい.

5. 補足

xfd -fn の後に指定するフォント名は,次のようにして得られます.

% xlsfonts > fontlist      ← stdout のファイル名は任意.