NLS (Native Language System) は、システムの各コマンドを多言語対応にするための仕組み(XPG4 準拠)です。 特に、シェル上で起動されるコマンドのエラーメッセージに使用されます (X Window Syetem 上のアプリケーションはリソースで管理する方が多い)。特徴は、
などです。
- 環境変数 LANG, LC_ALL, LC_CTYPE, LC_MESSAGES> で言語(ロケール)の切替えが可能。
- NLS カタログと呼ばれるファイルを言語(ロケール)ごとに用意する。
通常、 PREFIX/share/locale/ロケール/LC_MESSAGES、 PREFIX/lib/locale/ロケール/LC_MESSAGES や PREFIX/share/nls/ロケール などに置かれます。- 各コマンド内部では NLS 用の関数 catopen(), catgets(), catclose() を呼ぶため対応が比較的簡単。
例えば、fprintf(stderr, "No such file.\n");であれば、catd = catopen(COMMAND, 1) fprintf(stderr, cargets(catd, 3, 2, "No such file.\n"));の様にすれば良い。- 複数のコマンド間で NLS カタログを共有できる。
いわゆる 商用UNIX と呼ばれるものは対応していることが多いのですが、 いわゆる フリーUNIX と呼ばれるもの(FreeBSD/Linux 等)はほとんど対応していません。 理由は人手不足が大きいのでしょう。 より重要度が高い機能的な日本語対応(多言語対応) -- 日本語入力/表示/編集、正規表現の `[あ-を]' など -- やマニュアルの日本語訳でさえ、 多くの方々の努力にもかかわらずまだ完全でないため、 NLS にまで手が回っていないと思われます。
しかし、今後英語圏以外で フリーUNIX が普及するためには NLS の整備は非常に重要だと思います。 ただ問題なのは、NLS カタログを作るのは面白くない(-o-) ということがあります (たぶんマニュアルよりも)。 作る人は英語のメッセージを(ある程度は)理解出来ないといけないんですが、 理解出来るならその人には必要ないわけで…
ところが、このあまり面白くない NLS カタログ作りを とっても楽しい作業にしてしまった方々がいます。 tcsh の NLS カタログ を標準語にするのでなく「萌えているキャラ」や「方言」風の NLS カタログを作ってしまった人達です (znc HomePage を見てください)。 私も、故郷の「土佐弁」風カタログ を作ってみましたが、 作る時も楽しかったですし使っていても楽しいです。 だって私にとっては `Native' とは 「土佐弁」ですもん。
『めざせ、土佐弁 UNIX!』ちや(笑)