ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 国際化対応言語環境の利用ガイド Oracle Solaris 11.1 Information Library (日本語) |
Oracle Solaris のデフォルトインストールでは、次のコアロケールが使用可能です (言語ごとに 1 ロケールのみ)。
簡体字中国語 (zh_CN.UTF-8)
繁体字中国語 (zh_TW.UTF-8)
英語 (en_US.UTF-8)
フランス語 (fr_FR.UTF-8)
ドイツ語 (de_DE.UTF-8)
イタリア語 (it_IT.UTF-8)
日本語 (ja_JP.UTF-8)
韓国語 (ko_KR.UTF-8)
ポルトガル語 - ブラジル (pt_BR.UTF-8)
スペイン語 (es_ES.UTF-8)
以降のセクションでは、追加言語のサポートを追加するためのさまざまな方法について説明します。
Oracle Solaris 11 で言語サポートをインストールする手順を十分に理解するためには、ファセットの概念を理解する必要があります。
以前の Oracle Solaris リリースでは、ドキュメント、ローカリゼーション、デバッグファイルなどのオプションコンポーネントが個別のパッケージに分割されていました。Oracle Solaris 11の Image Packaging System では、ファセットと呼ばれる特殊なタグを使用して、Oracle でオプションコンポーネントを同じパッケージに保持できます。ファセットはパッケージ処理を単純化する一方で、追加の機能が必要でない場合にディスク容量の使用を低く抑えます。ファセットの詳細は、『Oracle Solaris 11.1 ソフトウェアパッケージの追加および更新』の「パッケージのファセットとバリアント」および『Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布』の第 5 章「バリエーションの許可」を参照してください。
ロケールファセットは、言語またはロケールに固有であるファイルまたは処理にマークを付けるために使用されます。たとえば、web/wget パッケージのマニフェストで、/usr/share/locale/ja/LC_MESSAGES/wget.mo ファイルには facet.locale.ja=true のタグが付いています。このタグは、facet.locale.ja ファセットを true に設定することによって日本語のサポートが有効にされている場合にのみ、wget メッセージの日本語翻訳を格納したファイルがインストールされることを示します。
ロケールファセットには固定の形式はありません。Oracle IPS リポジトリでは次の規則が使用されます。
facet.locale.{language}[_territory]
language は ISO 639 規格の 2 文字の言語コード、territory は ISO 3166 の 2 文字の地域コードです。
インストールされたパッケージのすべてのオプションコンポーネントは自動的に更新されます。
注 - パッケージマネージャーは、system/locale パッケージに存在する言語のみを管理します。その他の言語のサポートを追加または削除するには、コマンド行を使用します。
コマンド行から言語サポートを追加するには、pkg change-facet コマンドを使用して適切なロケールファセットを設定します。たとえば、フランスで話されるフランス語のサポートを追加するには、次のコマンドを使用します。
すべてのフランス語ロケールに共通のファイルをインストールするには
# pkg change-facet facet.locale.fr=True
フランス語 (フランス) に固有のファイルをインストールするには
# pkg change-facet facet.locale.fr_FR=True
すべての使用可能なフランス語の変種のサポートを追加するには、次のコマンドを使用します。
すべてのフランス語ロケールに共通のファイルをインストールするには
# pkg change-facet facet.locale.fr=True
すべての使用可能なフランス語の変種のサポートを追加するには、次のコマンドを使用します。
# pkg change-facet facet.locale.fr_*=True
以前の Oracle Solaris リリースでは、デフォルトのシステムロケールは /etc/default/init ファイルで構成されていました。Oracle Solaris 11 では、svc:/system/environment:init サービスの対応するプロパティーに設定が移動されています。サービスのプロパティーは svccfg(1M) コマンドを使用して編集できます。たとえば、デフォルトのシステムロケールを fr_FR.UTF-8 に変更するには、次のコマンドを実行します。
# svccfg -s svc:/system/environment:init setprop environment/LANG = astring: \ fr_FR.UTF-8
変更を有効にするには、サービスをリフレッシュする必要があります。
# svcadm refresh svc:/system/environment
サービスプロパティーの値は、次のコマンドによって検証できます。
# svccfg -s svc:/system/environment:init listprop environment/LANG
Oracle Solaris のデフォルトのシステムロケールでは UTF-8 エンコードを使用しますが、旧バージョンの多くのロケールも使用できます。
注 - GNOME デスクトップ環境は UTF-8 ロケールのみをサポートします。
旧バージョンのロケールのサポートは system/locale/extra パッケージに含まれています。旧バージョンのロケールのサポートをインストールするには、次のコマンドを実行します。
# pkg install pkg:/system/locale/extra
特定言語のサポートを有効にするには、対応するロケールファセットを true に設定します。たとえば、da_DK.ISO8859-1 ロケール (および、実際には、すべての da_DK lロケール) をインストールするには、facet.locale.da および facet.locale.da_DK を次のように有効にします。
# pkg change-facet facet.locale.da=True
# pkg change-facet facet.locale.da_DK=True
もっとも一般的なロケールは通常、主要なオペレーティングシステムでサポートされていますが、多くの場合、ロケールの名前は異なっています。例として、フランスで話されるフランス語の、UTF-8 を使用するロケールの名前として、Oracle Solaris では fr_FR.UTF-8 を使用しますが、IBM AIX では FR_FR を、HP-UX 11.11 と RHEL 5.4 では fr_FR.utf8 を使用します。この不整合は、異機種システム混在環境において、または Oracle Solaris への移行時に問題となる可能性があります。
この問題に対処するために、ロケール別名のサポートが Oracle Solaris 11 の libc で導入されました。setlocale(3C) で指定するようなロケール選択処理と、gettext(1)、catopen(3C)、および gettext(3C) のマニュアルページで指定するようなメッセージオブジェクトまたはメッセージカタログ処理の間、ロケール名の別名が受け入れられ、対応する標準的なロケール名があればその名前にマップされます。
加えて、以前の Oracle Solaris リリースとの互換性向上のために、メッセージ処理関数では、チェック対象の追加ロケール名として、fr や fr_FR のような廃止された Solaris ロケール名を使用してメッセージオブジェクトまたはカタログを検索するようになりました。詳細は、Oracle Solaris 11 - End of Feature Notices ページの「Localization」セクションの「Short Form Locales」を参照してください。
典型的な使用状況のほとんどは、ユーザーのシェル初期化ファイル内のロケール宣言で Linux スタイルのロケール名が使用される、Linux 環境でのものです。たとえば、setenv LANG ja_JP.utf8 コマンドは $HOME/.login に含まれ、ホームディレクトリは NFS マウントされます。このネットワーク環境で、ユーザーが Oracle Solaris 11 システムにログインすると、ロケール別名サポートメカニズムが内部で透過的に、対応する Oracle Solaris ロケール名 (ja_JP.UTF-8) にロケール名をマップし、ユーザー指定のロケール名を尊重し、サポートします。同じように、Solaris 以外のロケール名が ssh(1) を通してリモートの Oracle Solaris 11 マシンに渡されるとき、そのロケール名が認識、尊重、およびサポートされます。
詳細は、ロケール名マッピングの完全な一覧も収められている、locale_alias(5) のマニュアルページを参照してください。