|
|
|
この章では、多言語アプリケーションの設計方法を説明します。
項 | 説明 |
---|---|
各国語サポートの概要とコンポーネント |
|
各国語サポートを使用するアプリケーションの開発方法 |
Oracleの各国語サポートでは、多言語アプリケーションを設計できます。多言語アプリケーションは、いくつかの異なる言語での利用が可能です。Oracleでは、ほとんどのヨーロッパ、中近東およびアジアの言語をサポートしています。
各国語サポートでは、次のことができます。
次のパラメータを言語環境変数として使用し、言語の設定を指定できます。
NLS_LANG言語環境変数では、Forms DeveloperおよびReports Developerが使用する言語を指定します。
NLS_LANGでは次の項目を指定します。
NLS_LANGの構文は次のとおりです。
NLS_LANG=language_territory.charset
languageでは、メッセージおよび月日を表示する言語とその表記規則を指定します。言語を指定しない場合、この値はアメリカ英語がデフォルトとなります。
territoryでは、地域と、デフォルト日付書式、数値に使用する小数点文字、通貨記号、および週と日の計算結果の表記規則を指定します。地域を指定しない場合、この値はアメリカがデフォルトとなります。
charsetでは、データを表示するキャラクタ・セットを指定します。これは使用する言語およびプラットフォームと一致するキャラクタ・セットでなくてはなりません。この引数では、メッセージの表示に使用するキャラクタ・セットも指定します。
たとえば、アプリケーションをフランス語で実行するとします。このアプリケーションが使用されるのはフランスです。データはWE8ISO8859P1キャラクタ・セットを使用して表示します。NLS_LANGを次のように設定します。
NLS_LANG=French_France.WE8ISO8859P1
今度は、アプリケーションをフランス語で実行するが、そのアプリケーションをスイスで使用するとします。NLS_LANGを次のように設定します。
NLS_LANG=French_Switzerland.WE8ISO8859P1
注意: NLS_LANGの言語パラメータおよび地域パラメータは、サーバー側とクライアント側で同じ値に設定することをお薦めします(サーバー側のchar_setパラメータの値は、データベースが作成され変更できない場合に指定します)。SQLコマンドのALTER SESSIONを使用して、サーバー側の言語パラメータと地域パラメータの値を変更します。たとえば、次の文は言語パラメータをフランス語に、地域パラメータをフランスに変更します。
ALTER SESSION SET NLS_LANGUAGE = French NLS_TERRITORY = France
リソースとメッセージ・ファイルの2つのセットを同時に使用する必要がある場合、次の2つの言語環境変数を使用できます。
DEVELOPER_NLS_LANGとUSER_NLS_LANGの構文はNLS_LANGと同じです。
これらの変数は、次のような状況においてNLS_LANGのかわりに使用されます。
これらの環境変数が特に設定されていない場合は、NLS_LANGのデフォルト値が使用されます。
言語環境変数のキャラクタ・セット・コンポーネントでは、ユーザーの環境でのデータ表示に使用するキャラクタ・セットを指定します。異なるキャラクタ・セットで異なるバイナリ値で表される文字がある場合でも、Net8では、あるキャラクタ・セットを使用して作成されたデータが正しく処理され、異なるキャラクタ・セットを使用するシステムで表示できるようにします。
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
多言語アプリケーションまたは複数のキャラクタ・セットで実行する単一言語アプリケーションを設計中の場合も、実行時に最も広範囲に使用されるキャラクタ・セットを判断し、そのキャラクタ・セットの言語環境変数セットで生成する必要があります。
あるキャラクタ・セットでアプリケーションを設計および生成し、別のキャラクタ・セットで実行すると、パフォーマンスが損なわれる可能性があります。さらに、ランタイム・キャラクタ・セットに生成キャラクタ・セットのすべての文字が含まれていないと、認識されていない文字の部分に疑問符が表示されます。
PDFでは、マルチバイト・キャラクタ・セットはサポートしていません。
注意: Form Builderの場合は、ランタイム環境で指定されたキャラクタ・セットと関係なく、生成のときに使用されるキャラクタ・セットが実行時にも使用されます。
特定のフォントでアプリケーションを作成しても、そのアプリケーションの実行時に、異なるフォントが使用されている場合があります。これは、非西欧言語環境で英語のフォントを使用する場合に発生しやすくなります。これは、Forms DeveloperおよびReports Developerでフォントに対応付けられているキャラクタ・セットが、言語環境変数で指定されているキャラクタ・セットと一致しているかどうかがチェックされるためです。この2つが一致していない場合、Forms DeveloperまたはReports Developerではそのフォントを、対応付けられたキャラクタ・セットが言語環境変数で指定されているキャラクタ・セットに一致する別のフォントに自動的に置換します。この自動置換によって、データベースから戻されたデータはそのアプリケーションで正しく表示されます。
注意: 英語フォントを使用してローカル文字を入力すると、Windowsでは別のフォントとの暗黙的対応付けを行います。
しかし、この置換を希望しない場合もあります。すべての希望するフォントを、フォント・エイリアス・ファイルにあるWE8ISO8859P1キャラクタ・セットにマッピングすれば、この置換は行われません。たとえば、作成したアプリケーションでArialフォントを使用できない場合は、フォント・エイリアス・ファイルに次の行を追加します。
Arial.....=Arial...WE8ISO8859P1
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
キャラクタ・セットは各言語に必要な個々のキャラクタが利用できることを保証し、各国規則のサポートはデータ項目を正確にローカル表示します。
指定された言語によって次の特性に対するデフォルト規則が決定します。
たとえば、言語がフランス語に設定されると、次のメッセージは、
ORA-00942:table or view does not exist FRM-10043: Cannot open file.
次のように表示されます。
ORA-00942:table ou vue inexistante FRM-10043: Ouverture de fichier impossible
指定された地域によって次のデフォルトの日付および数値書式特性の規則が決定します。
たとえば、地域をフランスに設定すると数値は小数点文字としてコンマを使用する書式になります。
両方向サポートでは、記述方向が右から左である中東および北アフリカの言語でのアプリケーションを設計できます。両方向サポートでは、次の制御ができます。
両方向アプリケーションを設計する際に、言語環境変数をNLS_LANGでなく、DEVELOPER_NLS_LANGおよびUSER_NLS_LANGを使用する場合があります。たとえば、Windows環境でアラビア語のアプリケーションを開発しながらアメリカ英語のインタフェースを使用する場合は、次のように環境変数を設定します。
DEVELOPER_NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256 USER_NLS_LANG=ARABIC_territory
.charset
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
両方向アプリケーションでのオブジェクトの表示方法を指定するには次の4つのプロパティ使用します。方向、整列、読込み順序および初期キーボード状態
方向は、各オブジェクトに可能な限りの機能性を提供する保護プロパティです。テキスト項目および表示項目以外のすべてのオブジェクトでは、方向プロパティは唯一の両方向プロパティであり、その設定によって両方向機能の他の面を制御します。(ただし、リスト項目には初期キーボード状態プロパティも含まれています)
テキスト項目および表示項目には、方向プロパティはありませんが、そのかわりに、これらの項目について整列、読込み順序および初期キーボード状態プロパティを明確に設定できます。
キーボード状態を1つの言語に制限することができます。たとえば、キーボード状態をローカルに設定するとエンド・ユーザーがキーボードを他の言語に切り替えることはできません。
両方向プロパティがデフォルトに設定されると、これらのプロパティは言語環境変数で指定されている記述方向から値を継承します。ほとんどの場合、これによって希望する機能性が提供されます。継承したデフォルト値の上書きは、両方向プロパティを指定するのみでできます。
両方向プロパティの継承は次のとおりです。
フォーム |
デフォルトの設定は言語環境変数の値から導出されます。 |
警告、ブロック、値リスト、ウィンドウ、キャンバスビューなどのすべてのオブジェクト |
デフォルト設定は、フォームの値から導出されます。 |
テキスト項目、表示項目、チェックボックス、ボタン、ラジオ・グループ、リスト項目などのすべての項目 |
デフォルト設定は、キャンバスビューの値から導出されます。 |
両方向機能に関連したほとんどのプロパティは、プログラムに基づいたフェッチおよび設定ができます。詳細は、適切なビルトイン・サブプログラムの説明を参照してください。たとえば、ボタンの方向プロパティの値の取得の詳細は、Form Builderのオンラインヘルプ GET_ITEM_PROPERTYの説明を参照してください。
両方向アプリケーションでのオブジェクトの表示方法を指定するには次の3つのプロパティを使用します。整列、方向(オブジェクトに対する)および方向(レポートに対する)。両方向プロパティは、次の階層構造にあるオブジェクトに追加されます。
このリストにないオブジェクトでは両方向サポート(たとえば、イメージ)は必要ないか、または、前述オブジェクトのプロパティのうちの1つのデフォルトになります。
Unicodeはグローバル・キャラクタ・セットで、多言語テキストを1つのアプリケーションで表示可能にします。これによって多国籍企業は、1つの多言語アプリケーションを開発し世界中に配布することが可能になります。
世界市場では次のようなキャラクタ・セットが必要です。
Forms DeveloperおよびReports Developerでは、Unicodeサポートを提供しています。Unicodeを使用する場合、西欧言語、東欧言語、両方向中東言語などの1バイト言語と、中国語、日本語、韓国語(CJK)などのマルチバイトのアジア言語との両方の複数言語を同じアプリケーション内で表示することができます。
すべての言語を網羅する1つのキャラクタ・セットを使用することで、様々な言語の様々なキャラクタ・セットを備える必要がなくなります。
たとえば、日本語などのマルチバイト言語を表示するためには、NLS_LANG環境変数を次のように設定する必要があります(Windowsプラットフォームの場合)。
Japanese_Japan.JA16SJIS
ドイツ語などの1バイト言語を表示するためには、NLS_LANG環境変数を次のように設定する必要があります(Windowsプラットフォームの場合)。
German_Germany.WE8ISO8859P1
この方法の明らかな短所は、アプリケーションが一度に1つのキャラクタ・セットの文字しか表示できない点です。複合キャラクタ・セット・データは表示できません。
Unicodeキャラクタ・セットでは、特定の言語キャラクタ・セットのかわりに、NLS_LANGのキャラクタ・セット部分をUTF8に設定することができます。これによって、異なる言語およびキャラクタ・セットの文字も同時に表示できます。
たとえば、日本語とドイツ語を画面上に表示するには、NLS_LANG変数を次のように設定します。
Japanese_Japan.UTF8
または
German_Germany.UTF8
Unicode機能によって、アプリケーション開発者およびエンド・ユーザーはフォームの多言語テキストを表示することが可能になります。これにはUnicode、多言語テキスト、GUIオブジェクトのテキスト(たとえば、ボタンのラベル)、キーボードからのテキスト入力、およびクリップボードのテキストを含む、データベースのテキストが含まれます。Forms DeveloperおよびReports Developerは現在、Windows NT 4.0およびWindows 95(限定サポート)上でUnicodeをサポートしています。
注意: Web用のアプリケーションを開発する場合は、JavaによってUnicodeサポートが提供されているためUnicodeを使用できます。
Forms DeveloperおよびReports Developerは、各言語のフォントおよび入力方法についてはWindowsオペレーテイング・システムに依存しています。特定の言語でテキストを入力および表示するには、その言語をサポートするバージョンのWindowsを実行する必要があります。フォント・サポートは制限されていますが、Windows NTオペレーティング・システムのフォント・サポートには限定されていません。
Windows NT 4.0では、True Type Big Fontsが提供されています。これらのフォントには、多言語のテキストの表示または印刷に必要なすべての文字が含まれています。多言語のテキストを入力、表示、または印刷したときに正しい文字が表れない場合は、おそらくBig Fontが使用されていません。Microsoft社がNT 4.0以前で提供しているBig Fontsは次のものです。Arial、Courier New、Lucida Console、Lucida Sans UnicodeおよびTimes New Romanです。サードパーティのUnicodeフォントも使用できます。
Unicodeサポートを使用可能にするには、次のようにNLS_LANGを設定します。
NLS_LANG=language
_territory
.UTF8
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
英語以外の言語でForm Builder、Report BuilderまたはGraphics Builderを使用する場合は、言語環境変数で正しい言語と地域を指定するのみで済みます。メッセージ、メニューとメニュー項目、ダイアログ・ボックス、プロンプトとヒント、および警告が適切な言語で表示され、デフォルトの数値と日付、範囲、およびパラメータが適切な形式で表示されます。適切なメッセージ・ファイルが使用できない場合のデフォルトは、USメッセージ・ファイルです。
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
多言語アプリケーションの日付および通貨フィールドの処理時は、テキストの変換および異なるデータ表示方法が可能になるように、すべての画面上の項目(ボイラープレート、テキスト項目、ボタンなどのインタフェース・オブジェクト、および値リスト)は、スペースを多めに取っておく必要があります。たとえば、日付を9文字のDD-MON-YYで表記するアメリカ英語のアプリケーションを開発してノルウェー語で実行する場合は、DD.MM.YYYYという10文字のノルウェーでの日付表記ができるようにフィールドのサイズを拡張する必要があります。
また、特別な書式マスクの作成に書式マスク文字を使用する必要があるかどうか、または地域コンポーネントのNLS_LANGで指定されているデフォルトの書式マスクが使用できるかどうかを考慮する必要があります。
無指定の場合のデータ型変換に対しては、PL/SQLではAmerican_Americaデフォルト書式のDD-MON-YYの項目を想定しているので、PL/S QLで地域固有の型である項目を使用する場合は、正しい書式マスクを指定する必要があります。PL/SQLの地域固有の項目を変換するには、TO_DATEを使用します。
月の名前を含む文字列は、ハードコードしないでください。ハードコードされた月の名前が不可欠な場合は、COPYビルトインは使用しないでください。COPYを使用すると、指定されている言語によっては、月の名前が誤りになる場合があります。
言語依存例(お薦めしていません):
:emp.hiredate := '30-DEC-97'; copy ('30-DEC-97','emp.hiredate');
言語非依存例(お薦めします):
:emp.hiredate := TO_DATE('30-12-1997','DD-MM-YYYY');
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
言語環境変数では、月日、数字、日付および通貨などのデータの表示に使用するデフォルトの書式マスクのセットを指定します。具体的には、Forms DeveloperおよびReports Developerでは現行の言語環境変数で指定されている地域に対応付けられたデフォルト書式マスクが使用されます。
たとえば、現在の地域がアメリカだとします。タイプDATEの項目を作成し、デフォルト値20-OCT-98を入力します。その後で地域をノルウェーに変更すると、その項目のデフォルト値は20.10.1998に変更されます。
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
次の書式マスク・キャラクタは、デフォルトの書式マスクの上書きを可能にします。
キャラクタ | 戻り値 |
---|---|
C |
国際通貨記号 |
L |
各国通貨記号 |
D |
小数点 |
G |
桁グループ・セパレータ(千単位) |
多言語アプリケーションを設計する際に、文字のバイナリ値ではなく特定の言語のアルファベット規則に従って、文字データをソートする場合があります。SQLファンクションのNLSSORTを使用すると、これが可能です。
WHERE節にある文字列は、文字のバイナリ値で比較されます。ある文字がデータベースのキャラクタ・セット内でより上位のバイナリ値を持っていると、別の文字より大きいと見なされます。しかし、バイナリ値に基づいた文字列は特定の言語のアルファベット順とは一致しないので、このような比較は誤った結果になります。
たとえば、値ABC、ABZ、BCD、およびÄBCを含むCOL1という列があるとします。データベースのキャラクタ・セットはISO 8859/1です。次の問合せを記述します。
SELECT COL1 FROM TAB1 WHERE COL1 > 'B'
ÄはBより数値が大きいため、問合せはBCDおよびÄBCを返します。
次の問合せを記述するとします。
SELECT COL1 FROM TAB1 WHERE NLSSORT(COL1) > NLSSORT('B')
言語環境変数の言語コンポーネントがドイツ語に設定されている場合、ドイツ語のアルファベットではÄはBよりも前なので、問合せはBCDを返します。言語環境変数の言語コンポーネントがスウェーデン語に設定されている場合、スウェーデン語のアルファベットではÄはZよりも後なので、問合せはBCDとÄBCを返します。
言語環境変数の言語コンポーネントが正しく設定されると、ORDER BY節でNLSSORTを使用する必要はありません。
次の問合せは正しい結果となります。
SELECT ENAME FROM EMP ORDER BY ENAME
SQLコマンドALTER SESSIONを使用してNLSデフォルトを上書きします。たとえば、パラメータ(言語や地域など)を作成し、ユーザーがその値を指定するとします。次にユーザーが指定した通りにセッションを変更することができます。
Form Builderでは、ALTER SESSIONで次のNLSパラメータのいずれかを指定することができます。ただし、Report BuilderとGraphics BuilderではNLS_SORTパラメータしか指定できません。
たとえば、この文は小数点をカンマに、桁グル−プ・セパレ−タをピリオドに変更します。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'
これらの新規文字は、数値書式要素DおよびGの使用時に戻されます。
SELECT TO_CHAR(SUM(sal), 'L999G999D99') Total FROM emp TOTAL --------------- FF29.025,00
この文では、このISO通貨記号がアメリカ地域のISO通貨記号に変更されます。
ALTER SESSION SET NLS_ISO_CURRENCY = America
アメリカ向けに定義されたISO通貨記号が使用されます。
SELECT TO_CHAR(SUM(sal), 'C999G999D99') Total FROM emp TOTAL --------------- USD29.025,00
この文では、各国通貨記号がDMに変更されます。
ALTER SESSION SET NLS_CURRENCY = 'DM'
L数値書式要素の使用時には、新しい各国通貨記号が戻されます。
SELECT TO_CHAR(SUM(sal), 'L999G999D99') Total FROM emp TOTAL --------------- DM29.025,00
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
SQLを使用する場合は、次のNLSパラメータを使用してデフォルトNLS動作を上書きすることができます。
Form Builderビルトイン・ファンクションを使用して、PL/SQLコード用に言語環境変数の現在の設定値を取得できます。
環境変数 | DEVELOPER_NLS_LANG(NLS_LANGのデフォルト) | USER_NLS_LANG(NLS_LANGのデフォルト) |
---|---|---|
ビルトイン |
GET_FORM_PROPERTY |
GET_APPLICATION_PROPERTY |
パラメータ |
MODULE_NLS_LANG |
USER_NLS_LANG |
USER_NLS_LANGおよびDEVELOPER_NLS_LANGはNLS_LANGの値のデフォルトなので、これらの変数が特に指定されていない場合は、Form Builder NLSパラメータにはNLS_LANGの値が保持されます。
両方のForm Builder NLSパラメータには4つのバリエーションがあり、これにより完全な環境変数とその特定の一部のいずれかを取り出すことができます。次の表は、USER_NLS_LANG環境変数を戻すGET_APPLICATION_PROPERTYビルトインの4つのパラメータを示しています。
パラメータ | 戻り値 |
---|---|
USER_NLS_LANG |
完全なUSER_NLS_LANG変数 |
USER_NLS_LANGUAGE |
言語部分のみ |
USER_NLS_TERRITORY |
地域部分のみ |
USER_NLS_CHARACTER_SET |
キャラクタ・セット部分のみ |
DEVELOPER_NLS_LANG環境変数を取り出すには、MODULE_NLS_LANGパラメータを使用してGET_FORM_PROPERTYをコールします。
言語環境変数の詳細は、4.1.1項「言語環境変数」を参照してください。
キャラクタ・モードでレポートを使用する場合、レポートの物理ページ幅をプリンタ定義ファイル(.PRT ファイル)で定義されているページ幅より1文字少なく定義する必要があります。そうでないと、マルチバイト・キャラクタは行の最後の文字スペースから開始し、次の行にまたがって終わることになります。たとえば、物理ページ幅が80文字でプリンタ定義の幅が80文字の場合、マルチバイト・キャラクタは80文字目から開始する可能性があります。マルチバイト・キャラクタは分けることができないため、行はマルチバイト・キャラクタを完成させるために81文字目にオーバーフローします。これを避けるには、レポートの物理ページ幅を79に設定する必要があります。
次のアラビア語およびヘブライ語固有のNLSパラメータを、プリンタ定義ファイルで設定できます。
|
Copyright © 2000 Oracle Corporation. All Rights Reserved. |
|