日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
この章では,国際化ソフトウェアの典型的な機能と,国際化ソフトウェアを設計および実装するために HP C Run-Time Library (RTL) で提供される機能について説明します。
この章で説明する関数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』「リファレンス・セクション」を参照してください。
10.1 国際化のサポート
HP C RTL では,アプリケーション開発者が国際化ソフトウェアを作成するための機能が追加されました。 HP C RTL は,ロケール・ファイルから言語とカルチャーに関する情報を読み込んで取得します。
これらの HP C RTL 機能を使用する場合は,システムにこれらのファイルを提供するために別のキットをインストールする必要があります。『OpenVMS Upgrade and Installation Guide』の付録「Installing OpenVMS Internationalization data kit」を参照してください。
OpenVMS Alpha システムでは,セーブ・セットは Layered Product CD で提供されます。名前は,VMSI18N0nn または ALPVMSI18N0n_07nn です。
このセーブ・セットをインストールするには,このセーブ・セット名をキットの名前として使用して,標準的な OpenVMS のインストール手順に従います。複数のロケール・カテゴリをインストールのために選択できます。次のプロンプトに応答することにより,必要な数だけロケールを選択できます。
10.1.1 インストール
* Do you want European and US support? [YES]? * Do you want Chinese GB18030 support (locale and Unicode converters) [YES]? * Do you want Chinese support? [YES]? * Do you want Japanese support? [YES]? * Do you want Korean support? [YES]? * Do you want Thai support? [YES]? * Do you want the Unicode converters? [YES]? |
このキットには Installation Verification Procedure も含まれています。キットが正しくインストールされたかどうかを検証するには,このプロシージャを実行することをお勧めします。
OpenVMS Version 7.2 で, HP C ランタイム・ライブラリに Universal Unicode ロケールが追加されました。このロケールは VMSI18N0nn キットではなく, OpenVMS システムに付属しています。 Unicode ロケールの名前は次のとおりです。
10.1.2 Unicode のサポート
UTF8-20 |
VMSI18N0nn キットに付属しているロケールと同様に, Unicode ロケールは SYS$I18N_LOCALE 論理名によって参照される標準的なディレクトリにあります。
UTF8-20 Unicode は,Unicode 標準 V2.0 をベースにしています。 Unicode ロケールでは,ワイド文字エンコーディングとして UCS-4 を使用し,マルチバイト文字エンコーディングとして UTF-8 を使用します。
HP C RTL には,Unicode と他のサポートされる文字セットの間の変換を実行するコンバータも含まれています。コンバータの拡張セットには,UCS-2,UCS-4, UTF-8 の Unicode エンコーディングのためのコンバータが含まれています。 Unicode コンバータは ICONV CONVERT ユーティリティで使用することができ, HP C ランタイム・ライブラリの iconv関数ファミリで使用することもできます。
OpenVMS Version 7.2 では, HP C ランタイム・ライブラリで Microsoft Code Page 437 のための Unicode 文字セット・コンバータが追加されました。
10.2 国際化ソフトウェアの機能
国際化ソフトウェアとは,複数の言語とカルチャーをサポートできるソフトウェアです。国際化プログラムは次のことができなければなりません。
上記の要件を満たすには,アプリケーションで言語,各国の習慣,使用される文字セットに関する何らかの仮定を行うべきではありません。このような各国対応データはすべて,プログラムとは別に定義し,実行時に割り当てるようにしなければなりません。
この章では, HP C を使用して国際化ソフトウェアを作成する方法について説明します。
HP C 環境では,国際化ソフトウェアを開発するために次の機能が提供されます。
ロケールは異なるカテゴリで構成されており,各カテゴリは国際化環境の 1 つの要素を定義します。 表 10-1 はロケールのカテゴリと,各カテゴリの説明を示しています。
10.3 HP C を使用した国際化ソフトウェアの開発
各国対応データは,ロケールというデータベースに格納されます。このデータベースには,プログラムで必要とされるすべての言語情報とカルチャー情報が格納されます。ロケールの構造体の詳細については, 第 10.4 節 を参照してください。
プログラムでは
setlocale関数を呼び出すことにより,使用するロケールを指定します。詳細については, 第 10.5 節 を参照してください。
メッセージ・テキストとプログラム・ソースを分離するために,アプリケーションのすべてのメッセージが格納された
メッセージ・カタログを使用します。メッセージ・カタログは実行時にアプリケーションにリンクされます。つまり,メッセージを複数の言語に翻訳した後,必要な言語バージョンを実行時に選択することができます。 第 10.6 節 を参照してください。
HP C RTL には次の機能を実行する関数が含まれています。
10.4 ロケール
カテゴリ | 説明 |
---|---|
LC_COLLATE | 照合順序に関する情報が格納されている。 |
LC_CTYPE | 文字の分類に関する情報が格納されている。 |
LC_MESSAGES | yes/no プロンプトに対する応答として期待される応答を定義する。 |
LC_MONETARY | 通貨の書式情報が格納されている。 |
LC_NUMERIC | 数値の書式情報が格納されている。 |
LC_TIME | 時刻と日付の情報が格納されている。 |
提供されるロケールは, SYS$I18N_LOCALE 論理名によって定義されるディレクトリにあります。ロケールのファイル命名規則は次のとおりです。
language_country_codeset.locale |
ただし,
アプリケーションでは,実行時に setlocaleを呼び出すことにより国際化環境を設定します。国際化環境は次のいずれかの方法で設定します。
setlocale関数の構文は次のとおりです。
char *setlocale(int category, const char *locale) |
ただし,
language_country.codeset[@modifier] |
たとえば,
setlocale(LC_COLLATE, "en_US.ISO8859-1")は,LC_COLLATE カテゴリに対してロケール en_US.ISO8859-1 を選択します。
アプリケーションで setlocale関数を呼び出さなかった場合は,デフォルト・ロケールは C ロケールになります。この場合,このようなアプリケーションは現在のロケールで情報を使用する関数を呼び出すことができます。
setlocale関数を呼び出すときに, locale 引数として "" を指定した場合,関数はいくつか論理名を調べて,指定されたカテゴリのロケール名を判断します。
国際化環境を定義するためにユーザが設定できる論理名は数多くあります。
ユーザが定義する論理名の他に,システム・スタートアップ時に設定される多くのシステム単位の論理名があり,これらの論理名はシステムのすべてのユーザのデフォルトの国際化環境を定義します。
setlocale関数は,最初にユーザ定義論理名を確認し,そのような論理名が定義されていない場合は,システム論理名を確認します。
10.6 メッセージ・カタログの使用
国際化ソフトウェアの重要な要件は,ユーザの独自の言語でユーザと通信できなければならないということです。メッセージング・システムを導入することにより,プログラム・メッセージをプログラム・ソースと別に作成し,実行時にプログラムにリンクすることができます。
メッセージはメッセージ・テキスト・ソース・ファイルに定義され, GENCAT コマンドを使用してメッセージ・カタログにコンパイルされます。メッセージ・カタログは, HP C RTL で提供される関数を使用してプログラムからアクセスできます。
カタログに格納されているメッセージにアクセスするために提供される関数は次のとおりです。
メッセージ・カタログの作成の詳細については, OpenVMS システムのドキュメントの GENCAT コマンドの説明を参照してください。
10.7 異なる文字セットの取り扱い
HP C RTL では,ASCII でエンコーディングされた Portable Character Set を含む数多くの状態独立コードセットおよびコードセット・エンコード方式がサポートされます。状態依存コードセットはサポートされません。サポートされるコードセットは次のとおりです。
コードセット内の文字は charmap ファイルに定義されています。弊社が提供する charmap ファイルは, SYS$I18N_LOCALE 論理名によって定義されるディレクトリにあります。 charmap ファイルのファイル・タイプは .CMAP です。
HP C RTL では異なる文字セットをサポートするだけでなく,文字をあるコードセットから別のコードセットに変換するための次のコンバータ関数も提供しています。
10.7.1 charmap ファイル
10.7.2 コンバータ関数
fromcode_tocode.iconv |
ただし,fromcode はソース・コードセットの名前であり, tocode は文字の変換先のコードセットの名前です。
コードセット・コンバータをシステムに追加するには, SYS$I18N_ICONV という論理名によって示されるディレクトリにコンバータ・ファイルをインストールします。
コードセット・コンバータ・ファイルは,テーブル・ベースの変換ファイルとして実装することができ, OpenVMS 共用可能イメージとして作成されたアルゴリズム・ベースのコンバータ・ファイルとして実装することもできます。
テーブル・ベースのコードセット・コンバータ・ファイルを作成するには,次の手順を実行します。
共用可能イメージとして実装されたアルゴリズム・ベースのコードセット・コンバータ・ファイルを作成するには,次の操作を実行します。
デフォルト設定では,SYS$I18N_ICONV は検索リストであり,リスト SYS$SYSROOT:[SYS$I18N.ICONV.USER] 内の最初のディレクトリは, iconvコードセット・コンバータのサイト固有のリポジトリとして使用されます。
目次 | 索引 |
|