前へ 次へ 目次 文書セット ホーム


第 22 章

 

国際化


はじめに

Sun WorkShop Visual は、さまざまな言語で使用できるアプリケーションの開発を支援するために、X および Motif が提供している特別な機能を活用する手助けをします。国際化は複雑な問題ですが、本章では、ソフトウェ アを完全に国際化するために調べる必要のある分野に関して一定の方向性を示します。

使用言語以外の言語のテキストを入力するためには、その言語をサポートする X サーバーが必要です。X サーバーでその言語がサポートされている場合は、システムにロケールが存在します。確認方法のヒントに ついては、「ロケール名」を参照してください。

問題点

あなたと別の言語を使用するユーザーが、あなたの作成したアプリケーションを使 用する場合は (その別の言語が「米語」ではなく「イギリス英語」であっても) 、自分の言語および規約をユーザーが理解するとは考えられません。言語の違い以外にも住所の使い方や様 式、日付や時刻の形式、個人名、用紙サイズもアプリケーションの開発者とは異なっていることがあります 。

特に文字の種類の違いは、アプリケーションの外観および動作に大きな影響を与え ます。韓国語、日本語、中国語などの一部の言語は表意文字を使用します。ラテン語系の言語で使用される アルファベットは使用しません。各語が視覚的に訴えるような形式で表わされています。そのような種類の 文字 (字種) を表示するために使用するフォントは、その言語の文字を多数処理できる必要があります。この問題につい ては、「国際的テキストの作成」で説明します。

ヘブライ語、タイ語などの言語は、独自のアルファベットを使用していますが、ラ テン語系の言語の字種とはまったく異なります。文脈に応じて一部の文字が変化します。単語同士を区別す るためのスペースがないこともよくあります。また、一部の言語では右から左へ書かれ、別の言語では左か ら右へ書かれます。

フランス語、英語、ドイツ語のようによく似ている言語でも、文字とともに使用す る記号 (すなわち発音区別符) および小文字から大文字へ、または大文字から小文字への変わり方に差があります。

X11 はフォントセットを提供することによって、このような問題の処理を支援します。詳細は、「フォントセット」で説明します。さらに本章では、アルファベット以外の字種に必要な「入 力方式」をアプリケーションで使用できるようにする機能についても説明します。

本章では、大部分の例に日本語を使用していますが、どの言語でも原理は同じです 。

本章の目的は国際化という広いテーマを紹介し、Sun WorkShop Visual で国際化がサポートされている方法を説明することです。詳細については、別のマニュアルも是非参照して ください。システムマニュアル、Motif マニュアル、必要に応じて 付録 E「参考資料」に記載されている参考文献も参照することをお勧めします。

ロケール

アプリケーションに関連した国際化の問題に取り組むにあたって、特定の場所向け に環境を設定する方法を理解する必要があります。これには「ロケール」の理解も含まれます。ロケールと は、ANSI C の概念で、一連の地域的情報を識別するために使用される名前です。たとえば、ロケールが「en_UK」に設 定されている場合は、場所は英国で言語は英語という意味です。「en_US」に設定されている場合は、場所 は米国で言語は英語という意味です。「ja」の場合は、日本語が使用されているという意味です。ロケール を設定することによって、ソート順、日付形式の定義などの特定の C ライブラリ関数が異なった方法で実行されます。

ロケール名

使用したいロケールのシステム名を調べ、次にそのシステム名に応じて LANG 環境変数を設定し、アプリケーションが表示すべき言語を特定できるようにします。ロケールの名前は、使 用しているシステムに応じて異なることがあります。使用している UNIX システムがサポートしているロケール名のリストは、 /usr/lib/locale ディレクトリにあります。このディレクトリには、使用できる言語ごとのディレクトリが含まれています。 ディレクトリ名はロケール名として使用されます。この名前は、LANG 環境変数にも使用します。次にように入力すると、現在システムにインストールされているすべてのロケー ルを画面に出力することができます。

locale -a

このコマンドによって、システムに現在インストールされているロケールがすべて リストされます。

ロケールの指定

国際化サポートを使用して Sun WorkShop Visual を実行するには、正しいロケールを設定する必要があります。この設定を行うには、X サーバーを実行する前に LANG 環境変数を設定します。たとえば、次のように入力します。

setenv LANG ja

日本語がシステムにインストールされている場合は、このコマンドで X に対して表示フォントおよびキーボード入力に日本語を使用するよう指定します。環境変数の値は、システ ムによって異なる場合があります。詳細は、上記の「ロケール名」を参照してください。

キーボードとテキストウィジェットの間に入力方式を使用する日本語などの言語の 場合は、正しいバージョンの Sun WorkShop Visual (この場合は日本語版) を実行していることを確認してください。LANG 環境変数とともに日本語フォントが存在することによって、入力方式が必要であることが初めて X サーバーに対して指定されるためです。

フォントセット

ロケールの定義の一部に、表示できるすべてのテキストを表示するために必要なフ ォントのコード化の指定が含まれます。たとえば、日本語ロケールでは、日本語のすべてのテキストを表示 するには、コードセット ISO 8859-1、JIS X0208-1983、JIS X0201-1976 を持つフォントが必要です。これは、日本語にはローマ字、五十音字 (かな)、表意文字 (漢字) が含まれているためです。フォントセットはフォントの集まりで、現在のロケールに必要な文字セットがす べて含まれています。

フォントリスト

フォントリストはフォントの集まりで、ラベルを複数のフォントやスタイルで描画 するために使用されます。フォントリストは Motif 固有のものであるのに対し、フォントセットは X によって定義されます。

たとえば、文字列にボールド体とイタリック体の両方を含めるよう指定するには、 使用するフォント (ボールド体またはイタリック体) と使用する場所を指定したマーカーを持つコンパウンド文字列を作成します。これは、Sun WorkShop Visual の XmString エディタを使用すると、簡単に作成することができます (詳細は 「コンパウンド文字列」を参照してください)。ただし、そのためには、フォントエディタで フォントのリスト (1 つはボールド体でもう 1 つはイタリック体) を含むフォントオブジェクトを定義する必要があります (詳細は 「フォントの設定」を参照してください)。こうして独自のフォントリストを作成します。リ スト内の各フォントには、フォントエディタで指定した名前付きのタグが付けられています。これらのタグ がコンパウンド文字列に組み込まれて、X サーバーに使用するフォントを指示します。

フォントセットとフォントリストの関係

フォントセットを組み込むために Motif のフォントリストの定義が拡張された結果、フォントリスト内の各項目が単独のフォント (フォント構造体) にも、フォントセットにもなることができます。

Sun WorkShop Visual は、フォントセット中のフォントを単純にフォントリストの直接のメンバーとして表示することによって、 事態を単純化します。ただし、「フォント選択」ダイアログでフォントセットトグルを設定する場合は、Su n WorkShop Visual に対してこのフォントはフォントセットのメンバーであることを告げていることになります。Sun WorkShop Visual は内部では、フォントセットのすべてのメンバーに同じフォントリストタグを設定しています。次に Motif は、同じフォントリストタグを持つフォントをすべてフォントセットのメンバーとして処理します。

フォントオブジェクトについては、「単純フォントオブジェクト」を参照してください。フォントリストについては、「複合フォントオブジェクトの作成」を参照してください。

フォントセットの使用例

次の例題で、フォントの使用方法を説明します。

前述の日本語ロケールには、以下の 3 つのコード化形式が必要です。

  • ラテン文字 (ローマ字) 用の ISO 8859-1
  • 表意文字 (漢字) 用の JIS X0208-1983
  • 五十音字 (かな) 用の JIS X0201-1976
  • 1. 「フォント選択」ダイアログをポップアップします。

    2. フォントオブジェクト (例: f1 ) およびタグ名 (例: t1 ) を入力します。

    3. 「フォントセット」トグルをオンにします。

    4. フィルタメニューを使用して、ISO 8859-1 フォントをすべて表示します。

    5. 該当する ISO 8859-1 フォントを選択して「バインド」を押します。

    このフォントセットをデフォルトとして使用したい場合は、「デフォルト」ボタン を押して必ずタグ名を <Default> にしてください。このボタンを押さない場合は、ウィジェット内で必ずこのフォントセットが使用されるよ うに、コードを記述する必要があります。

    この段階では、フォントセットが現在のロケールでテキストを表示するために必要 な文字セットを十分持っていないことを警告するメッセージが Xlib から表示されます。これは、まだ 2 つのフォントをバインドしていないためです。

 

    図 22-1 文字セット不足の警告

 

    図 22-2 フォントセットの初期フォント

    6. JIS X0208-1983 レジストリを持つフォントを選択し、バインドします。

    Xlib から文字セット不足を警告するメッセージが再度表示されます。

    7. JIS X0201-1976 レジストリを持つフォントを選択し、バインドします。

    これでフォントセットが完全に揃ったので、今回は Xlib からの警告メッセージはありません。

フォントオブジェクト項目は、フォントセットの一部であるかどうかには関係なく 、削除および再バインドを行うことができます。フォントリストには、フォントセットにも単純フォントに もなることができる項目を多数持たせることができます。これは、さまざまなフォントリストタグを指定し 、必要に応じて「フォントセット」トグルを設定して、容易に行うことができます。以下の例では、 t1 big t2 という 3 つの項目を持つ単独フォントオブジェクトを示します。 t1 および t2 は ja ロケールの完全なフォントセットで、 big は単純フォントです。

 

    図 22-3 3 つの項目を持つフォントオブジェクト

国際的テキストの作成

日本語、中国語、韓国語などの言語の場合は、キーボード上のキーの数、すなわち 8 ビットで表される数よりも多い文字数を表示することができます。さらに、日本語文字で表示されるテキス トには、ローマ数字およびローマ字のテキストも混在させる必要があります。これらの問題を解決するには 、テキストを特別な方法でコード化します。このような言語の文字より大きな文字セットを使用するために は、よく知られている ASCII マッピングではなくマルチバイトテキスト文字列を使用します。テキスト内の複数の文字が、一致するフォ ントの 1 文字を表します。1 バイト文字とマルチバイト文字を区別する方法は、コード化の方法に依存します。さらに、このような言語 は音 (キーボードに入力される音) と表意文字が一対多でマッピングします。この問題を解決するために入力方式が提供されています。

ヘブライ語、アラビア語などの言語でも入力方式が必要です。文字が単語内の位置 に応じて変化したり、母音が子音を囲んで記述されるためです。

正しく日本語化されたバージョンの Sun WorkShop Visual を実行している場合は、テキストをテキストフィールドに入力する際に特殊な一連のキー操作によって入力 方式が使用できるように切り替わります。入力方式によって、入力された文字が目的とする言語の対応する 文字に変換されます。

Sun WorkShop Visual での入力方式の使用

Sun WorkShop Visual で英語以外のテキストをあらゆるテキスト入力領域に入力するには、まず以下の必要条件を満たしているか どうかを必ず確認してください。

    1. LANG 環境変数が目的の言語の種類 (ロケール) に設定されている

    詳細は、「ロケール」を参照してください。

    2. 目的の言語をサポートする X サーバーがある

    3. 正しいバージョンの Sun WorkShop Visual である

    4. 指定言語に入力方式が必要な場合は、その入力方式がシステム上に存在し、自動的に起動されているか、ユ ーザーによって起動されている

以下の例で、入力方式が必要な言語でテキストを入力する方法を示します。使用言語は日本語です。CDE を使用している場合は、次を実行します。

    1. ログインするときにダイアログボックスでロケールを設定してから通常のログインを行います。

    CDE を使用していない場合は、次を実行します。

    1. LANG 環境変数を「ja」に設定します。

    OpenWindows を使用している場合は何もする必要はありません。ただし、Motif Window Manager を使用している場合は、コマンド行プロンプトで htt と入力して入力方式サーバーを起動します。

    2. X サーバーを起動します。

    テキストフィールドを含むウィンドウに現在のフォーカスがある場合は、必ずウィ ンドウの最下部にステータス行が表示されます。これは、現在の入力モードを表示するテキスト領域です。

    CDE の使用に関係なく、以下の手順は同じです。

    3. Sun WorkShop Visual を起動します。

    保存したデザインを読み込んでも、新規のデザインを開始しても構いません。必ず テキストウィジェットがあるものにしてください。

    4. テキストウィジェットを選択し、そのリソースパネルを呼び出して「ラベル」フィールドを選択します。

    5. Ctrl-Space を押します。入力方式のドキュメントで正しいキーを確認してください。

    ステータス行は、かな入力が可能であることを示します。

    6. Ctrl-W を押します。

    かなが漢字に変換され、候補語リストが表示されて、テキストフィールドに入力し たい漢字を選択することができます。

    7. 候補語リストから漢字を選択して、<Space> を押します。

    選択した漢字が Sun WorkShop Visual に送信されます。

他の言語の場合も手順は似ています。まず、LANG 環境変数を設定し、X サーバーを起動し、次に Sun WorkShop Visual を呼び出します。一部の言語および一部のシステムでは、さらに入力方式またはサーバーも起動する必要が あります。システムのマニュアルを参照して、この必要があるかどうかを調べてください。テキスト領域を 持つウィンドウに現在のフォーカスがあるときは、必ず入力方式が現われます。

Sun プラットフォームでの国際的テキストについての詳細は、Sun のマニュアルを参照してください。

アプリケーションへの日本語化された入力

前節では、Sun WorkShop Visual (例ではラベルリソース) に 非 ASCII テキストを入力する方法について説明しました。本節では、日本語化されたテキストを自分の生成したアプ リケーションで入力する方法について説明します。「変換後のテキスト」という用語を使用することに注意 してください。これは、標準のキーボード上のテキストとは異なって表示されている画面上のテキストを意 味します。

テキストの変換方法

X ツールキットが大部分の処理を行います。これは、特定ウィジェットが ASCII 以外のテキストを受け取ることを X ツールキットに指定するだけで、簡単に行うことができます。必要条件は以下のとおりです。

    1. ロケールが設定されている

    「ロケールの指定」を参照してください。

    2. 現在のロケールと一致するフォントセットを含むテキストウィジェットに対してフォントオブジェクトを指 定済みである

前述の 2 番目の条件が満たされている場合は、テキストウィジェットは包含しているシェルに入力方式との接続を確 立するよう要求します。次に X ツールキットがこの処理を引き継ぎ、そのテキストウィジェットに対するテキスト入力を入力方式に送り、 変換後のテキストをテキストウィジェットに返します。

テキストウィジェットによる変換テキストの受信の設定

前述したように、アプリケーション内のテキストウィジェットが入力方式を使用す るために必要な作業は、作成時に必ずテキストウィジェットに対して、ロケールと一致するフォントセット を含むフォントリストを指定させることだけです。最も簡単に行うには、Sun WorkShop Visual を使用して、該当するフォントセットを含むフォントオブジェクトを指定し、そのオブジェクトをウィジェ ットのフォントリソースとして使用します。この方法を以下の手順で説明します。

    1. テキストの子を持つダイアログを作成します。

    2. シェルをアプリケーションシェルに指定します。

    3. このテキストを選択し、リソースパネルをポップアップします。

    4. 「フォント」ボタンをクリックします。

    5. 該当するフォントセットを持つフォントオブジェクトを指定します。

    この方法については、「フォントセットの使用例」を参照してください。フォントセットのフォントには必ず「Default」タグを指定してください。指定しないと、X サーバーは入力方式が必要であることを認識できません。

    6. コードを生成し、コンパイルします。

    7. 生成されたアプリケーションを、テキストウィジェットに指定された言語をサポートする X サーバー上で実行します。

ダイナミックディスプレイでの入力方式の表示

前述の例によって、生成されたアプリケーションには入力方式が正しく設定されま すが、問題点もあります。Sun WorkShop Visual は、常にリソースが適用される前にウィジェットを作成します。これは、ウィジェットのリセットやペース トを行なった場合でも同様です。したがって、ダイナミックディスプレイウィンドウで入力方式を動作させ るには、作成時にフォントを強制的に指定する必要があります。その最適な方法は、親のブリテンボードま たはシェルウィジェット上でテキストフォントリストリソースを設定することです。ただし、この方法では 子テキストウィジェットのすべてが、入力方式を持つことになるので注意してください。

Sun WorkShop Visual 内でテキストウィジェットが入力方式を使用して動作していることを確認するには、以下の作業を行います 。

    1. フォームの子を持つダイアログを作成します。

    2. シェルをアプリケーションシェルに指定します。

    3. このフォームを選択し、リソースパネルの「フォント」ページをポップアップします。

    4. 「テキスト用フォント」ボタンをクリックします。

    5. 該当するフォントセットを持つフォントオブジェクトを指定します。

    この方法については、「フォントセットの使用例」を参照してください。フォントセットのフォントには必ず「Defa ult」タグを指定してください。指定しないと、X サーバーは入力方式が必要であることを認識できません。

    6. テキストウィジェットの子を作成します。

    7. 必要に応じて別のウィジェットを追加します。

 

    図 22-4 入力方式付きの単純なダイアログ

デフォルトの main() プログラムには、ロケール処理ルーチンを初期化する XtSetLanguageProc() 呼び出しが含まれています。独自の main() プログラムを記述していて、国際化機能を使用している場合は、このルーチンへの呼び出しを追加する必要 があります。作成した main() ルーチンの最初に、次の行を追加してください。

XtSetLanguageProc ( (XtAppContext) 0, (XtLanguageProc) 0, (XtPointer) 0 );

アプリケーションのフォントリソースの設定

国際的テキストのフォントを Sun WorkShop Visual のダイナミックディスプレイまたは生成されたアプリケーション上で正しく表示するには、国際的テキスト の FontList リソースを正しく設定する必要があります。

フォントリソースをアプリケーション全体に正しく設定するには、緩い結合を使用 して FontList リソース設定を定義することをお勧めします。以下に例を示します。

XApplication*FontList:

-misc-fixed-medium-r-normal-*-14-130-75-75-c-140-

jisx0208.1983-0;

-*-*-medium-r-normal-*-14-130-75-75-c-70-jisx0201.1976-0;

-misc-fixed-medium-r-normal-*-14-110-100-100-

c-70-iso8859-1:default

XApplication は、作成するアプリケーションの名前です。この例は、日本語のフォントを設定するためのものです。この 例のリソースは、 $VISUROOT/src/examples/loose_bindings/ja_fontlist.res に用意されています。「緩い結合」ダイアログを使用して、このリソースをデザインに読み込むこともでき ます。

緩い結合を使用したリソースの設定方法の詳細は、「緩い結合」を参照してください。

シェルタイトルでの 8 ビット文字の使用

シェルウィジェットのタイトルのテキストに 8 ビットの文字を使用する場合は、 titleEncoding リソースが STRING に設定されていることを確認してください。リソースは、 Sun WorkShop Visual で緩い結合を使用して設定します。以下に例を示します。

XApplication*titleEncoding:STRING

(XApplication は、作成するアプリケーションのクラス名です。)

または、次のように設定します。

*titleEncoding:STRING

リソース設定を適用する対象が自分で作成したアプリケーションのみの場合は前者 を、すべてのアプリケーションの場合は、後者を設定してください。

詳細は 「密な結合」を参照してください。

このリソース設定をデザインに「ハードコード」したい場合は、メインシェルのマ ネージ前プレリュード次のように設定してください。

XtSetArg ( al[ac], XmNtitleEncoding, XA_STRING ); ac++;

マネージの前プレリュードの追加方法については、「シェルの作成の前プレリュード」を参照してください。

サポートされていないロケール

LANG 環境変数を使用してロケールを指定する方法を、「Sun WorkShop Visual での入力方式の使用」で説明しました。Sun WorkShop Visual の適切なバージョンを使用することで、デザインしているユーザーインタフェースの文字列にロケールの言 語を使用することが可能でした。Sun WorkShop Visual のご使用のバージョンでサポートしていないロケールに設定した場合は、起動時にメッセージが表示されて 、現在の LANG 設定がサポートされておらず、強制的に 「C」 に変換されることが通知されます。この設定はデフォルトで、米語が使用されます。ご使用の Sun WorkShop Visual がラテン語のスクリプト1 に対応している場合であれば、正しく表示して機能します。問題となる領域は、生成されたコード内の文字 列だけです。以下の場合であれば、指定したロケールでラベルやテキスト文字列などを追加できます。

ただし、上記のいずれにも当てはまらない場合は、指定した言語で文字列を入力す ることも表示することもできません。


1. この場合の 「ラテン語のスクリプト」 とは ISO ラテン 1 文字セットを意味します。


前へ 次へ 目次 文書セット ホーム

サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.