[前のページ]   [もくじ]   [次のページ]

国際化とローカライゼーション

私が公開しているソフトウェアのいくつかは、GNU gettextによる国際化に対応しており、ソフトウェアが生成するメッセージを、英語だけでなく日本語やドイツ語で表示できるようになっています。ちなみに、国際化を“i18nと”略すことがありますが、それは“internationalization”と綴ると、最初の‘i’と最後の‘n’の間に18文字あるので、こう略すのだそうです。(Linuxコミュニティでは、Linuxに係わる様々なソフトウェアの国際化のことを“Li18nux”と呼ぶこともあるようです。OS/2 WARPにも途中に“…in…”と綴る部分があればヨカッタのにね)。

国際化していないいくつかのソフトウェアは、様々な言語に対応する代わりに、単一の国語に翻訳したバージョンを用意しています。このような方法をローカライゼーション(地域化)と呼びます。

ソフトウェアが、メッセージにどの言語を使うかを判断する方法は、以下の方法があります。

  1. 環境変数LANG (か、LANGUAGE)で判断 (unix文化の影響を受けたソフトウェア)
  2. コードページで判断 (DOS 3.3文化の影響を受けたソフトウェア)
  3. DBCSベクターで判断 (DOS/Vの影響を受けたソフトウェア)
    etc...

OS/2では、言語環境をchcpコマンドで切り換えますが、これは環境変数LANGの変更を伴いません。また、環境変数LANGを変えただけでは、必ずしもその言語に適したコードページにはなりません。例えば、環境変数LANGが“ja_JP”と設定されていても、コードページが日本語に対応していない437や850であれば、ソフトウェアが日本語コードでメッセージを出力しても、それを正しく表示できません。

コードページと環境変数LANGを同時に切り換えるような、バッチファイルを作っておくと良いかもしれません。例えば、

jp.cmd
set LANG=ja_JP
chcp 932
us.cmd
set LANG=en_US
chcp 437

様々な言語に簡単に対応できるという点で、ローカライゼーションよりも国際化の方が望ましく、そのための手段のひとつがGNU gettextによる方法です。しかも、個々のOSに依存した国際化の方法と違い、様々なOSで共通して使えるのでポータビリティが高いというメリットもあります。

GNU gettextを使用したプログラムであっても、あなたが欲する言語で書かれたメッセージが用意されるとは限りません。もしあなたがスウェーデン人であり環境変数LANGを“sv_SE”と設定していたとしても、当然のことながら、スウェーデン語のメッセージが無ければ、スウェーデン語のメッセージは見られず、英語のメッセージを読まされることになるでしょう。GNU gettextでは、第1候補の言語を表示できない時の第2の言語を指定しておくことができます。もしあなたがスウェーデン人であれば、スウェーデン語が無い時、英語よりもむしろドイツ語のメッセージの方が嬉しい筈です。そのような場合には、set LANGUAGE=sv:deと設定しておけばokです。このような場合、環境変数LANGはsv_SEのままにしておいてください。環境変数LANGは、GNU gettextを使っていない多くのソフトウェアからも参照され、そのようなソフトウェアは、GNU gettextのサポートする“第1国語:第2国語”形式の指定を認識できないからです。GNU gettextは、ふたつの環境変数LANGとLANGUAGEがあった場合、GNU gettextのための環境変数LANGUAGEの指定を優先して解釈します。環境変数LANGに設定できる値は、環境変数LANGUAGEにも設定できますが、環境変数LANGUAGEに設定可能な値は、環境変数LANGには必ずしも設定できないことに注意してください。

GNU gettextは、以下のサイトと、そのミラー・サイトから取得できます。

また、これをベースにしたものを、沢田石 順さんがhttp://www2s.biglobe.ne.jp/~vtgf3mpr/indxos2.htmで公開しています。(こちらのレビジョンは、肝心のヘッダ・ファイルとライブラリがパッケージングされていないので、何かプログラムをビルドしたい時には不向きですが、msgfmtがShift_JISに対応させてあるので、nkfした後のbslashの助けは不要と言う点は便利です)。

GNU gettextにより国際化させているプログラムとしては、私の移植したGNU grepGNU wgetがあります。また、沢田石 順さんのホーム・ページにも、いくつかのソフトウェア・パッケージが公開されています。

さて、GNU gettextに対応しているプログラムであっても、必ずしも、あらゆる国語がパッケージングされているとは限りません。そのような場合には、必要な言語のメッセージを別に用意しなければなりません。様々なソフトウェアの日本語メッセージは日本語翻訳チームのwebページに集められていますので、まずそこを探してみると良いでしょう。もし見つからなければ、自分で作成しなければなりません。メッセージの作成方法に興味があれば、GNU gettextのドキュメントを参照してください。


[前のページ]   [もくじ]   [次のページ]