Solaris 共通デスクトップ環境 (Solaris CDE) は Solaris 8 の標準 GUI デスクトップです。システムに対するユーザーのメインインタフェースであるだけでなく、ユーザーのロケールの設定の多くが表示されるインタフェースでもあります。ドイツではドイツ語のインタフェースが表示され、フランスではフランス語のインタフェースが表示されます。
『共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)』では、アプリケーションが一貫したユーザーインタフェースでさまざまな言語や文化的慣習をサポートできるようにするデスクトップの国際化について説明されています。
Solaris CDE は完全に国際化されており、システムにインストールされたロケールを使用して任意のアプリケーションを実行できます。言語および文化に依存する情報をアプリケーションのソースコードとは別にすることにより、他の国の市場に参入するときに、アプリケーションを書き直したり、再コンパイルする必要がありません。この代わりに、外部情報を言語や慣習に合わせて言語対応するだけで済みます。
アプリケーションインタフェースは標準化されており、東アジアも含め、任意のロケールの機能を使用できます。Solaris 8 は、Portable Operating Systems for Computer Environments (POSIX および X/Open の規格、XPG4.2 とも呼ばれる) でコンパイルされています。
デスクトップの各層において、次の資料に説明されている適切な国際化インタフェースの規格を使用しなければなりません。
『X Window System, The Complete Reference to Xlib, Xprotocol, ICCM, XLFD-X Version, Release 5』, Digital Press, 1992.
『IEEE Std. 1003.1-1990. Information Technology-Portable Operating System Interface (POSIX)-Part 1: System Application Program Interface (API)』. ISO/IEC 9945-1:1990.
『OSF Motif 1.2 Programmer's Reference, Revision 1.2, Open Software Foundation』, Prentice Hall, 1992.
『X/Open CAE Specification Commands and Utilities, Issue 4』, X/Open Company Ltd., 1992.
『共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)』更新されたバージョンは AnswerBook の Solaris 8 Common Desktop Environment Developer Collection - Japanese によりオンラインで提供されています。詳細については、「関連マニュアル」を参照してください。
ほとんどの単一表示クライアントは、単一のロケールで動作します。これは、$LC_CTYPE を含む一連の LC_ 環境変数や環境変数 $LANG により設定されます。
ロケールの LC_CTYPE カテゴリは、実行時に使用されるロケール固有の機能を識別するために環境により使用されます。フォントおよび入力メソッドは、LC_TYPE カテゴリにより決定されます。
国際化が可能な Xt プログラムは XtSetLanguageProc() 関数 (デフォルトでは setlocale() と呼びます) を呼び出してロケールを設定すると想定されています。
アプリケーションは、X 端末のユーザーにより使用される場合もあれば、ネットワークを介してリモートワークステーションのユーザーにより使用される場合もあります。このような場合、ユーザーの X 端末で使用できる X ウィンドウサーバーのフォントはアプリケーションのデフォルトとは異なっている場合があり、一部のフォントが使用できない場合もあります。
Solaris CDE により定義された標準インタフェースのフォント名は、すべての Solaris CDE 準拠システムで使用できることが保証されています。フォント名は実際のフォントを指定しません。これらは別名で、各システムベンダーが使用可能で最適なフォントにマップします。アプリケーションでこれらのフォント名だけを使用する場合、任意の Solaris CDE 準拠システム上で非常に近いフォントだけを使用することを保証できます。
詳細については、『共通デスクトップ環境 プログラマ概要』および Solaris CDE の DtStdInterfaceFontNames(5) および DtStdAppFontNames(5) のマニュアルページを参照してください。
共通のオープンシステムに複数の環境を存在させて、さまざまな言語をサポートすることができます。これらをロケールと呼びます。ロケールは、データを表示するための言語、フォント、慣習を指定します。Solaris CDE は完全に国際化されており、任意のアプリケーションを任意のロケールで実行できます。アプリケーションはコードセット非依存で、任意の複数バイトコードセットをサポートしていなければなりません。
すべての構成要素は単一の、全世界共通の実行プログラムとして提供されます。これらの構成要素は、米国、ヨーロッパ (西欧および東欧)、日本、韓国、台湾、タイ、中華人民共和国、中東をサポートしています。
ロケールの文字を表示するためにさまざまなフォントセットが使用されます。特定のフォントの文字セットはロケールに依存します。この情報はロケール固有の app-defaults ファイルに記述します。このファイルには、フォントセット、フォント、フォントリストが含まれます。
XmFontSet はロケール依存のフォントを指定します。リソース名は *fontSet です。フォントの名前を具体的に指定してはいけません。XFontStruc のリソース名は *font です。フォントリストにはフォントのリストおよびフォントセットが含まれます。XFontList はフォントを指定します。
各言語のテキスト文字列は、アプリケーションとは別に、ロケール名により識別されるディレクトリに保存しなければなりません。これらの文字列は、リソースファイル、メッセージカタログ、専有ファイルの 3 つのタイプのファイルに保存されます。
リソースファイルとメッセージカタログはどちらも、テキスト文字列を提供するファイルです。リソースファイルはロード時に変換され、メッセージカタログは事前にコンパイルされてアクセスの準備が行われます。アプリケーションはコードセット非依存で、任意の複数バイトをサポートしていなければなりません。専有ファイルは、テキスト文字列を含む情報のデータベースである場合があります。理想的には、テキスト文字列はリソースファイルまたはメッセージカタログに保存してください。テキスト文字列が専有ファイルで提供される場合、ツールを開発してテキスト文字列を抽出して置換しなければなりません。
X ロケールはホスト環境で定義された 1 つまたは複数のロケールをサポートします。direct XlibTM は ANSI C ライブラリに準拠し、ロケール宣言メソッドは setlocale() 関数です。この関数はホストの C ライブラリと Xlib の両方のロケール操作を設定します。Xlib の操作は LC_CTYPE カテゴリにより管理します。これを現在のロケールと呼びます。XSupportsLocale() 関数は、現在のロケールが X によりサポートされるかどうかを判断するために使用されます。
メッセージガイドラインは、一貫した形式およびスタイルのテキストの作成に使用するために作成します。明確で簡単な英語を使用し、最低限の英語を理解できるユーザーがすべてのメッセージを理解できるようにします。『共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)』の最後には、明確かつ簡潔で、翻訳可能なメッセージを作成するためのガイドラインが数多く示されています。メッセージは問題を説明し、正確に処置を実行する方法を提案しなければなりません。翻訳担当者向けに、概要や変数などを説明するコメントも含めます。この資料には、メッセージカタログの形式やメッセージ自体のスタイルについてのアドバイスがリストされています。
翻訳されるメッセージカタログを送信する前に、メッセージカタログを英語から国際的な英語、つまり、簡単で他の言語に翻訳しやすい英語に翻訳することも役に立ちます。これにより、翻訳作業が効率化し、翻訳担当者の問い合わせが減り、コストが削減されます。
この節では、他のホスト上のアプリケーションとの情報の交換について説明します。データを転送するためには、いつかのパラメタを考慮しなければなりません。
送信側および受信側のコードセット
プロトコルが 7 ビットと 8 ビットのどちらか
プロトコルで可能なエンコーディングの交換のタイプ
リモートホストがローカルホストと同じコードセットを使用している場合で、プロトコルが 8 ビットデータを処理できる場合は、変換は必要ありません。プロトコルが 7 ビットのデータしか扱えない場合は、8 ビットコードポイントは 7 ビット ASCII 値にマップしなければなりません。変換にはさまざまな方法があります。
リモートホストのコードセットがローカルホストのコードセットと異なる場合は、つぎの 2 つのケースが当てはまります。変換は特定のプロトコルによって異なります。プロトコルが 8 ビットを処理できる場合は、プロトコルはどちら側で変換を行うかを指定する必要があります。プロトコルが 7 ビットしか処理できない場合は、文字レパートリーの識別とともに、7 ビット交換エンコーディングが必要です。
インターネットが普及し、世界中の人々との通信が容易になるにつれ、多くのプラットフォームやさまざまなロケールで電子メールが送信されるようになりました。しかし、電子メール交換の規格は、デスクトップコンピュータにより制限され、そのデフォルトの電子メール規格は SMTP (メール転送プロトコル) で、7 ビット伝送チャネルしかサポートされていません。
送信エージェントはメッセージの本文を標準形式に変換し、本文のラベルを付けます。受信エージェントは本文を見て文字エンコーディングをサポートしているか確認し、本文をローカルの文字セットに変換します。
dtmail は現在、言語変換ライブラリ (LCL) を使用しているので、Subject 行、メール本文、およびアタッチメントで複数バイトの文字をサポートしています。dtmail には、1 つのメールに複数のエンコーディングによる文字を混在させる機能もあります。たとえば、日本語 (ja) ロケールで SJIS と EUC の両方を使用できます。
Solaris 8 では、OpenWindows の国際化については何も変更されていません。以前のバージョンの Solaris 用に開発されたアプリケーションは Solaris 8 でもそのまま実行できます。
XView ツールキットは CSI 使用可能ではありません。XView ツールキットを使用するアプリケーションは、ja_JP.PCK、en_US.UTF-8、ko.UTF-8 など、非 EUC ロケールではサポートされません。
XView の国際化についての詳細は、『XView Developer's Notes』の国際化の説明を参照してください。