Solaris 8 製品では、選択したロケールにおいて、ISO-10646 で定義されている Unicode 3.0 をサポートしています。Solaris 8 は、Sun の国際市場向けのメジャーリリースです。このリリースには新機能が数多く含まれています。現在では、日本語ロケールのような複数バイトロケールを含むすべての部分ロケールが、基本 (英語版) の Solaris 8 製品で使用できます。
簡体字中国語 UTF-8 ロケール。この UTF-8 ロケールの追加により、Unicode がより広範囲にサポートされます。Unicode は、複数の言語からのテキストを単一の環境に表示する必要がある混合スクリプト環境でしばしば使用されます。
繁体字中国語 UTF-8 ロケール
アジアでの印刷環境
基本 (英語版) Solaris CD での 90 個のロケールのサポート。これは、汎用言語カバレージへのパッケージの新しい手法です。
Sdtudctool の拡張 - Microsoft Windows からの UDC (ユーザー定義文字)の移行をサポートしています。すべてのアジア地域のロケール用に地域対応されています。
3 種類の追加ロケールが、アイスランド (ISO8859-1)、U.S.A.(ISO8859-15)、ロシア (ANSI1251) 用に追加されました。新しい U.S.A. 用ロケールには、ユーロ通貨グリフのサポートが追加されています。新しいロシア用ロケールは、既存の ISO8859-5 と KOI8-R ロケールへの追加です。これによって、Microsoft の内蔵データエンコーディングをサポートできます。アイスランド用の新しい ISO8859-1 ロケールでは、Solaris 環境にアイスランド語のサポートが初めて導入されました。
ユーザーが拡張できるコードセット変換。geniconvtbl ユーティリティを使うと、新しいコードセットの変換を追加したり、既存のコードセット変換を修正したりできます。
ヨーロッパ用ロケールの再パッケージ
ユーロフォント
日本語 iconv モジュールの追加 - IBM メインフレームのコードセット用の変換と、Microsoft のコードセット用の Unicode と Shift-JIS の間の変換。
ユーロ通貨単位のサポート。為替業務、銀行業務、融資などを含む EC 加盟国の各業界団体では、各国の独自通貨からユーロへの使用通貨の移行が現在進行中です。ユーロ通貨のサポートは、Solaris 8 環境では U.S. とエストニア語の ISO8859-15 ロケールに追加によって拡張されました。
複数バイト部分ロケール - 複数バイトロケールのサポートのフレームワークは、Solaris の基本製品に入っています。
Unicode iconv の拡張モジュール。この iconv モジュールは、さまざまな Unicode コード化形式と、国際的で業界標準のコードセットについて拡張されました。
各国語対応 (localization) とはソフトウェアを特定の言語や地域に適応させる処理であるのに対し、国際化とはソフトウェアを異なる言語や地域の間で移植可能にする処理のことを指します。国際化ソフトウェアは、特定の文化の要件に応じて実行時にプログラムの動作を変化させるインタフェースを使用して開発します。各国語対応には、「ロケール」と呼ばれる言語や地域をサポートするためのオンライン情報を確立する処理が含まれます。
異なる言語や慣習に従って動作させるために完全に書き直す必要のあるソフトウェアとは異なり、国際化されたソフトウェアはそのような作業を必要としません。あるロケールから別のロケールへそのまま移植できます。Solaris システムは国際化に対応しており、国際化ソフトウェアを作成する際に必要な基本構造やインタフェースを備えています。
国際化はソフトウェアを任意のロケールに依存しないようにする処理です。国際化されたソフトウェアは特定のロケールに容易に適応させることができます。
国際化されたアプリケーションの実行可能イメージは、異なる言語や地域の間で共有することができます。ソフトウェアを国際化する手順を次に示します。
このマニュアルに記載されているインタフェースを使用して、再コンパイルしなくても異なる環境に動的に対応できるソフトウェアを作成します。
ソフトウェアを実行可能イメージとメッセージに分離します。メッセージには、操作中に印刷または表示されるすべてのメッセージが含まれます。メッセージ文字列はメッセージカタログに格納します。
メッセージ文字列は、言語や地域に合わせて翻訳します。ロケールには、メッセージ文字列やソートで使用される手続きなどが含まれます。
ロケールは言語と同じではありません。言語には複数の地域が含まれる場合があります。たとえば、フランス語はフランスおよびカナダで話されていますが、通貨や時間の表示方法は各国で異なります。
ある製品の言語対応されたバージョンを使用する場合、ユーザーは環境変数を設定します。これにより、ユーザーメッセージは翻訳された形式で表示されます。日付、時刻、通貨、およびその他の情報は、ロケール固有の規約に従ってフォーマットおよび表示されます。
ロケールは、基本言語、使用国 (地域) と、通常想定されるコードセットから構成されています。たとえばドイツ語は Deutsch の略語である de です。一方、スイス系ドイツ語は de_CH です。CH は Confederation Helvetica の略語です。これによって、通貨単位の指定のような国ごとに固有の差異に対応することができます。
言語によっては複数のロケールを持つものもあり、地域によって異なることがあります。たとえば、アメリカ英語を使う場合は en_US ロケール (アメリカ英語) を、イギリス英語を使う場合は en_GB (イギリス英語) を選択できます。
アプリケーションプログラムの主要な概念は、プログラムのロケールの概念です。ロケールとは、自国語環境の明示的なモデルであり、定義です。ロケールの指定は、ANSI C 言語規格のライブラリ定義で明示的に定義され、組み込まれます。
ロケールは、国ごとの書式やその他の指定に関する多くのカテゴリから構成されています。プログラムのロケールは、コードセット、日付と時間の形式の規定、通貨の規定、10 進数の書式の規定、照合 (ソート) 順を定義します。
通常、ロケール名は環境変数 LANG で指定します。ロケールのカテゴリは LANG に依存しますが、カテゴリ別に設定することも可能です (例、LC-TIME)。この場合、ロケールのカテゴリは LANG の設定に優先します。LC_ALL が設定されている場合、LC_ALL の設定は LANG だけでなく、ロケールの個別のカテゴリに優先します。
Solaris の「完全ロケール」は、ロケールとしてのすべての機能を備え、言語に対応した翻訳メッセージを含んでいます。翻訳メッセージがインストールされていない場合、そのロケールは「部分ロケール」に分類されます。関連する言語のサポートがインストールされている場合、Solaris 環境の多くのロケールは、翻訳メッセージを表示できます。たとえば、ドイツ語のメッセージを表示できる、以下のようないくつかのロケールがあります。
de_DE.ISO8859-1
de_DE.ISO8859-15
de_DE.UTF-8
de_AT.ISO8859-1
de_AT.ISO8859-15
de_CH.ISO8859-1
LANGUAGES CD を使ってドイツ語のメッセージがインストールされている場合、上記のすべてのロケールは、完全に翻訳されたデスクトップにアクセスするので、「完全ロケール」になります。この LANGUAGES CD には、以下の言語に関する翻訳メッセージが入っています。
ドイツ語
フランス語
スペイン語
スウェーデン語
イタリア語
日本語
韓国語
簡体字中国語
繁体字中国語
すべての部分ロケールは、基本 (英語版) 製品でも使用できますが、翻訳メッセージは多国語対応の Solaris 製品でのみ使用できます。
文化が異なると、日付、時間、数値、通貨、語句の区切り、引用符などの表記も異なります。
ロケールは、言語や文化的な地域の規則に従って実行時のプログラムの動作を定義します。システム全体では、ロケールは次の動作を指定します。
テキストデータのエンコーディングと処理
リソースファイルとそのテキストの値の言語とエンコーディングの識別
テキスト文字列の描画および配置
クライアント間のテキスト通信で使用されるテキストの相互変換
クライアント間のテキスト通信のエンコーディングとデコーディング
入力方式 (つまり、生成されるコードセット) の選択およびテキストデータの処理
文化的に固有なフォントおよびアイコンファイル
アクションおよびファイル形式
ユーザーインタフェース定義 (UID) ファイル
日付および時間の形式
数値の形式
通貨の形式
照合の順序
情報および診断メッセージと対話形式の応答の形式
Solaris 環境は、言語と文化に依存する情報をアプリケーションから分離し、アプリケーションとは別に保存します。
言語と文化に依存する情報をアプリケーションから分離することにより、開発者は各市場に合わせて、アプリケーションを翻訳、書き直し、または再コンパイルする必要はありません。新規市場に参入するには、各言語および慣習に合わせて外部情報を言語対応するだけで済みます。
以下にロケールのカテゴリを示します。
通貨形式を指定します。SunOS のコマンドやライブラリルーチンで実際にこのカテゴリを使用するものはほとんどありません。
言語のレンダリングに関する情報を提供する、配置エンジンを指定します。言語のレンダリング (またはテキストのレンダリング) は、テキストのシェイピングと方向設定から成ります。
製品の各国語対応は、対象となる言語や地域に密着したユーザーとともに進める必要があります。特定のスタイルや情報の形式が、開発者にとっては非常に明確であり、普遍的に見える場合でも、実際のユーザーにとっては奇妙であったり、正しくなかったり、状況によっては不快感を与えることもあるかもしれません。ここでは、製品を正しく国際化するために、Solaris オペレーティング環境により制御および指定できる各要素について説明します。
表 1-1 に、午後 11 時 59 分を表すいくつかの方法を示します。
表 1-1 国際的な時間の表記形式
ロケール |
表記形式 |
---|---|
カナダ (英語またはフランス語) |
23:59 |
フィンランド語 |
23.59 |
ドイツ語 |
23.59 Uhr |
ノルウェー語 |
Kl 23.59 |
タイ語 |
11:59 PM |
イギリス英語 |
11.59 PM |
時間は、12 時間単位および 24 時間単位のどちらでも表すことができます。時間と分はコロン (:) またはピリオド (.) で区切ります。
国が異なる場合、または国によっては国内でも時間帯が異なることがあります。時間帯は通常、グリニッジ標準時 (GMT) との時差で表現されますが、この時差は必ずしも整数であるとは限りません。たとえば、ニューファンドランド島の時間帯と隣接する時間帯との時差は 0.5 時間です。
表 1-2 は世界中で使用されている日付の表示形式の一部を示しています。ただし、各国内でさまざまな形式がある場合もあります。
表 1-2 国際的な日付の表記形式
ロケール |
表記 |
例 |
---|---|---|
カナダ (英語およびフランス語) |
yyyy-mm-dd |
1998-08-13 |
デンマーク語 |
yyyy-mm-dd |
1999-08-24 |
フィンランド語 |
dd.mm.yyyy |
13.08.1998 |
フランス語 |
dd/mm/yyyy |
13/08/1999 |
ドイツ語 |
yyyy-mm-dd |
1999-09-18 |
イタリア語 |
dd.mm.yy |
13.08.98 |
ノルウェー語 |
dd.mm.yy |
13.08.98 |
スペイン語 |
dd-mm-yy |
13-08-98 |
スウェーデン語 |
yyyy-mm-dd |
1998-08-13 |
イギリス英語 |
dd/mm/yy |
13/08/98 |
アメリカ英語 |
mm-dd-yy |
08-13-98 |
タイ語 |
dd/mm/yyyy |
10/12/2009 |
イギリスと米国では小数位を表すのにピリオドを使用しますが、その他の多くの国々ではピリオドの代わりにコンマを使用しています。小数位の区切り文字は小数点とも呼ばれます。同様に、イギリスと米国では千単位をコンマで区切るのに対し、他の国々では代わりにピリオドを用いたり、狭い空白文字で区切ったりしています。表 1-3 に、一般的な数値の表記形式を示します。
表 1-3 国際的な数値の表記形式
ロケール |
大きな数値の表記 |
---|---|
カナダ (英語およびフランス語) |
4 294 967 295,000 |
デンマーク語 |
4.294.967.295,000 |
フィンランド語 |
4.294.967.295,000 |
フランス語 |
4.294.967.295,000 |
ドイツ語 |
4 294 967 295,000 |
イタリア語 |
4.294.967.295,000 |
ノルウェー語 |
4.294.967.295,000 |
スペイン語 |
4.294.967.295,000 |
スウェーデン語 |
4.294.967.295,00 |
イギリス英語 |
4,294,967,295.00 |
アメリカ英語 |
4,294,967,295.00 |
タイ語 |
4,294,967,295.00 |
データファイルにロケール固有の形式で格納されている場合、ロケールの異なるシステムに転送したときに正しく解釈されない可能性があります。たとえば、フランスの形式で数値を格納したファイルは、イギリス向けのプログラムでは使用できません。
並んでいる数を区切る方法を指定する特別なロケールの規則はありません。並んでいる数は、イギリスや米国ではコンマで区切られますが、空白文字やセミコロンを使って区切るほうが一般的です。
通貨の単位や表記は世界中で大きく異なっています。表 1-4 にいくつかの国の通貨形式を示します。
表 1-4 国際的な通貨の表記規則
ロケール |
通貨 |
例 |
---|---|---|
カナダ (英語) |
ドル ($) |
$1 234.56 |
カナダ (フランス語) |
ドル ($) |
1 234.56$ |
デンマーク語 |
クローネ (kr) |
kr 1.234,56 |
フィンランド語 |
マルッカ (mk) |
1 234,56 mk |
フランス語 |
フラン (F) |
1.234,56 F |
ドイツ語 |
ドイツマルク (DM) |
DM 1.234,56 |
イタリア語 |
リラ (L) |
L1.234,56 |
日本語 |
41,234 Yen |
|
ノルウェー語 |
クローネ (kr) |
kr 1.234,56 |
スペイン語 |
ペセタ (Pts) |
1.234,56Pts |
スウェーデン語 |
クローナ (Kr) |
1.234,56 Kr |
イギリス英語 |
ポンド |
31,234.56 pounds |
アメリカ英語 |
ドル ($) |
$1,234.56 |
タイ語 |
バーツ |
2539 Baht |
ユーロ |
EUR |
400,00 |
国内での通貨記号と国際的に使われる通貨記号が異なっている場合があります。たとえば、フランスの通貨フランはフランス国内では F で示しますが、国際的にはスイスフランやポリネシアフランと区別するために FRF と表記される場合があります。
ユーロロケールは、ISO8859-15 文字セットに基づいています。使用可能なロケールについては、「ヨーロッパの地域対応」を参照してください。
また、通貨を他の通貨に換算すると、金額の桁数が元の桁数と異なる場合があるので注意が必要です。たとえば、$1,000 をリラに換算すると L1.307.000 になります。
英語では、語は空白文字で区切ります。ただし、中国語、日本語、タイ語などの言語では多くの場合、語を区切りません。
特定の文字をソートする順序は言語によって異なります。たとえば、ドイツ語の文字 旦 は普通の o と一緒にソートされますが、スウェーデン語ではアルファベットの最後の文字として別にソートされます。言語によっては、文字の優先順位を決めるために重みが定められています。たとえば、タイ語の辞書では、文字に異なる重みを与えることによってソート順序が決定されます。
英語のアルファベットは 26 文字しかありませんが、256 以上の文字を使用する言語もあります。たとえば、日本語には 40,000 以上の文字があり、中国語にはそれ以上の文字があります。
西ヨーロッパ諸国のほとんどのアルファベットは英語圏の国で使用される 26 文字の標準アルファベットに類似しています。ただし、基本的な文字が追加されていたり、記号 (またはアクセント) の付いた文字や合字が使用される場合もあります。
日本語の文章には 3 種類の文字が混在しています。中国の漢字に由来する表意文字である漢字と、ひらがなとカタカナという 2 つの表音文字 (音節文字) です。
ひらがなとカタカナはそれぞれ対になっていますが、ひらがなのほうがより一般的で、丸みのある形をしています。漢字は語幹となる語を書くのに使用され、カタカナは主に外来語を書き記すのに使用されます。
漢字の数は数万もありますが、使用される漢字の数は徐々に減ってきています。現在、頻繁に使用される漢字の数は 3,500 字程度ですが、一般的な日本人の語彙に使用される漢字はおよそ 2,000 字ほどです。ただし、コンピュータシステムは日本工業規格 (JIS) で定められた 7,000 字以上の漢字に対応しなければなりません。また、170 文字ほどのひらがなとカタカナも必要です。日本語の文章の平均的な文字別構成は、ひらがな 55%、漢字 35%、カタカナ 10% となっています。また日本語の文章にはアラビア数字やローマ字も使用されます。
漢字をまったく使用しないことも可能ですが、ほとんどの日本人にとっては漢字かな混じり文のほうが容易に理解できます。
韓国語は、ハングルと呼ばれる表音文字で表されます。ハングルには 11,000 以上の文字があり、19 の子音と 21 の母音で構成されます。これ以外に、27 のオプションの子音があります。通常、韓国語のコンピュータシステムでは、全ハングル文字の内約 3,000 文字が使用されています。韓国語にはまた、ハンジャと呼ばれる中国の漢字から派生した表意文字があります。韓国語では 6,000 以上のハンジャ文字が必要です。ハンジャは主に、ハングルだけでは意味があいまいになる場合に使用されます。ハングル文字では子音と母音を組み合わせて 1 つの音節を構成します。ハングル文字は通常、四角く配列されており、ハンジャ文字と同じスペースを必要とします。韓国語では、アラビア数字、ローマ字、および特殊記号も表示されます。
タイ語の文字は、4 つの表示セルを持つディスプレイ上のカラム位置として定義されます。各カラム位置に表示できるのは最大 3 文字です。表示セルの構成内容はタイ文字の分類に基づいています。タイ文字の一部は、別の分類の文字と組み合わせることができます。組み合わされた文字は、同じセルに入ります。それ以外の場合は、別のセルに入ります。
中国語は通常、表意文字である漢字ですべてを表記します。中華人民共和国 (PRC) では、GB2312 (zh ロケール) にある約 7,000 の漢字が一般的に使用されており、この他にも GBK (zh.GBK ロケールにある 20,000 を超える文字があります。台湾では、現在の規格で必要とされる漢字の数は 13,000 文字以上で、さらに 6,000 の漢字が最近規格化されましたが、頻繁に使用されることはありません。
語幹文字でない限り、通常 1 つの文字は 2 つ以上の部分で形成されます。最も一般的なのは 2 つの部分で形成されるものです。2 つの部分で構成される文字では、1 つが意味を表し、もう 1 つは発音を表すのが普通ですが、両方とも意味を表すこともあります。漢字では部首が最も重要な要素です。漢字は伝統的に部首によって分類され、部首の数は数百にものぼります。異なる文字で同じ読み方をするものも多数ありますが、使用する際は明確に区別されます。同じ文字で異なる読み方をするものもあります。
中国語には四声と呼ばれる声調があり、文脈の中で適切な文字を音声によって区別します。一方、日本語と韓国語には声調はありません。
中国語の発音を表す表音体系にはいくつかの種類があります。中華人民共和国で最も普及しているのはピンイン方式です。これはローマ字を使用するもので、広く西部で採用されており、たとえば北京を Beijing と表します。ウェードガイル方式は旧式のもので、北京を Peking と表すなど地名の表現に以前は使用されていました。台湾では、独特の字体を持った表音用のアルファベットである zhuyin (bopomofo) がよく使用されています。
商用アプリケーション、特に人名を扱うアプリケーションでは、コードセットの拡張の影響を考慮する必要があります。中国語の多くの名前には、標準コードセットに存在しない文字が含まれています。この問題に対応するために、割り当てられていないコードセット用に、スペースを提供する必要があります。
U.S. キーボードにあるすべての文字が他のキーボードにあるとは限りません。同様に、U.S. キーボードにはない文字のキーが他のキーボードに付いている場合もあります。
ただし、SPARC マシンで Compose キーを使用すると、Compose キーを持つすべてのキーボードから ISO Latin-1 の任意の文字を生成できます。
Compose キーは、英語およびヨーロッパ言語ロケールで使用できますが、韓国語、中国語、日本語ロケールでは UTF-8 ロケールを除き使用できません。
各国にはよく使用される紙のサイズがいくつかあり、通常はそのうちの 1 つが頻繁に使用されます。ほとんどの国は ISO 216 規格の「筆記用紙および印刷物の分類 -- A 版と B 版の定型サイズ」に従っています。
国際化アプリケーションでは、使用可能なページサイズをあらかじめ想定するべきではありません。Solaris には出力のページサイズを保持する機能はなく、これはアプリケーションプログラムが行わなければなりません。表 1-5 に一般的な国際ページサイズを示します。
表 1-5 一般的な国際ページサイズ
用紙の種類 |
寸法 |
採用している国 |
---|---|---|
ISO A4 |
21.0 cm × 29.7 cm |
米国以外 |
ISO A5 |
14.8 cm × 21.0 cm |
米国以外 |
JIS B4 |
25.9 cm × 36.65 cm |
日本 |
JIS B5 |
18.36 cm × 25.9 cm |
日本 |
US レター |
8.5 インチ * 11 インチ |
米国、カナダ |
US リーガル |
8.5 インチ * 14 インチ |
米国、カナダ |
『Creating Worldwide Software』(第 2 版、Bill Tuthill、David A. Smallberg 共著、SunSoft Press、1997 年) は、Solaris プラットフォームでの各国語対応の手引きです。Solaris システムで作業をしている開発者にはこの本を推奨します。その他の参考マニュアルについては、「関連マニュアル」を参照してください。