Next: Files, Previous: Concepts, Up: Introduction [Contents][Index]
完全な多言語ディストリビューションを配付するためには、出力メッセージの翻訳以外に多くの事柄があります。
gettext
が提供するのは、Cプログラムが出力するメッセージを翻訳するための完全なツールセットです。しかしperlスクリプトとシェルスクリプトも同様に翻訳される必要があります。現在これらを翻訳するための方法があったとしても、本来あるべき形での統合はされていません。
autoconf
やbison
のような一部のプログラムは、他のプログラム(またはスクリプト)を生成することができます。たとえプログラムを生成するプログラムがインターナショナライズされていても、生成されたプログラムは独自にインターナショナリゼーションする必要がありますが、これらの間接的に行われるインターナショナリゼーションは生成プログラムで自動化できるはずです。しかし実際は生成するプログラムと生成されるプログラムは、それぞれ独自にインターナショナライズされるのが極めて一般的です。
recode
プログラムが実行時に文字を再構築するための、文字に対応する説明的な英語名を提供します。これらの説明的な名前はRFCから機械的に取り出されるため、RFC自体を事前に翻訳する必要があります。
gcc
に識別子の文字を区別できるようにさせたり、‘rm
-i’が‘y’や‘n’ではない、翻訳された応答をユーザーから受け取れるようにしたいと思うかもしれません。最終的にプログラムのほとんどの出力が他言語によるものだったとしても、入力の構文やオプションに指定できる値などを、ローカライズ可能かそうでないかを決定したいと思うかもしれません。
すでに述べたように、翻訳とはlocaleの1つの側面に過ぎません。インターナショナリゼーションの他の側面にはシステムのサービスがあり、これは GNU
libc
により処理されます。国々の文化的な慣習を定義するための多くの属性があります。これらの属性には、国々のネイティブ言語に即した日付や、時刻書式と数値表記、通貨記号などが含まれます。これらの地域的なルールは、その国のlocaleと呼ばれます。localeとは、その国のネイティブな属性をサポートするために必要となる知識を表します。
国ごとの差異にしたがってlocaleを記述しなければならない、主要な領域がいくつかあります。以下のリストは、localeに関連したその他のタスクの適切なコンテキストにおいて、多言語メッセージを配置する手助けになるでしょう。詳細については
GNU libc
のマニュアルを参照してください。
米国や世界中の、英語を話す地域で最も一般的に使用されるコードセットは、ASCIIコードセットです。しかしこのコードセットには、様々なlocaleで必要とされる文字が含まれていません。8ビット ISO 8859-1コードセットは主要なヨーロッパの言語で処理する必要がある特殊文字をほとんど持っているにもかかわらず、主要なヨーロッパの通貨を処理することができない等、多くの場合はISO 8859-1を選択するだけでは十分ではないのです。したがってそれぞれのlocaleは、使用するコードセットの選択と、そしてそのコードセットに対処するための適切な文字列処理ルーチンが必要になります。
通貨記号は国ごとに異なり、それぞれの通貨記号の使用する位置も異なります。それぞれのlocaleにたいするネイティブモードで、ソフトウェアはそれを意識させずに通貨の数字を表示できる必要があります。
日付の書式はlocaleごとに異なります。例えば1994年のクリスマスは、米国では12/25/94と記述し、オーストラリアでは25/12/94、それ以外の国ではISO 8601の日付書式を使用する、といった具合です。
1日の中で使用される時刻も、hh:mm、hh.mm、などのように記述されます。あるlocaleでは時刻はAM/PMではなく、24時間制で指定する必要があります。しかも夏時間の補正は国ごとに大きく異なります。
数値の表記はlocaleごとに異なります。以下はそれぞれのlocaleに対応する、正しい数値表記の例です:
12,345.67 English 12.345,67 German 12345,67 French 1,2345.67 Asia
メートル法とポンドヤード法のように異なる単位系を使用したり、それらの変種で数値表記する方法を採用しているプログラムもあります。
localeによる言語サポートにおいて、最も明確な領域です。GNU
gettext
は、localeでのメッセージのサポートという領域において、ソフトウェアがユーザーとコミュニケーションするときに使用する言語を、開発者とユーザーが簡単に変更する手段を提供します。
これらの文化的な慣習の領域は、localeカテゴリー(locale categories)と呼ばれます。この用語は、localeの側面(locale aspects)やlocale機能のカテゴリー(locale feature categories)といった用語よりも劣っているのが残念です。なぜならそれぞれの“localeカテゴリー”は、ローカリゼーションが要求される、ある領域やタスクについて記述するからです。そのような領域や特定の文化にたいして、文化的な慣習を説明する具体的なデータもlocaleカテゴリーと呼ばれます。この意味では、localeとは、コードセットを定義するlocaleカテゴリー、数値の書式を定義するlocaleカテゴリー、翻訳されたメッセージを定義するlocaleカテゴリー、などのように、いくつかのlocaleカテゴリーから構成されているといえます。
メッセージ処理以外のlocaleコンポーネントは、標準ISO CとPOSIX:2001標準(SUSV3
specificationとも呼ばれる)です。GNU
libc
はこれを完全に実装しており、その他の現代的なシステムも、欠けているコンポーネントにたいする、必要最小限のより実用的なサポートを提供しています。