Java SE 7における国際化の拡張機能

Java SE 7における国際化の拡張機能には、次の内容が含まれます。

Unicode 6.0.0のスクリプトと文字の追加

Java SE 7リリースの初期バージョンでは、Unicode 5.1.0のサポートが追加されましたが、Java SE 7リリースの最終バージョンでは、Unicode 6.0.0がサポートされます。Unicode 6.0.0は、Unicode標準規格のメジャー・バージョンであり、新たに2000以上の文字のサポートや、プロパティおよびデータ・ファイルのサポートが追加されています。

Javaチュートリアルに、Unicodeについて説明する項が追加されています。

ISO 4217通貨コードに対する拡張サポート

通貨は、ISO 4217の通貨コードによって識別されます。 この通貨コードは外部機関が管理しており、Java SEプラットフォームとは独立してリリースされます。 Java SE 7では、JDKの新しいリリースを必要とせずに、新しい通貨に対応できます。

実行時にデフォルト以外の通貨を使用するには、<JAVA_HOME>/lib/currency.propertiesというプロパティ・ファイルを作成します。 このファイルには、ISO 3166の国コードと、ISO 4217の通貨データによるキーと値のペアが含まれます。 値部分は、ISO 4217の3つの通貨の値 (英字コード、数値コード、補助単位)をカンマ区切りで入力したものです。 ハッシュ文字(#)で始まる行はすべて、コメント行として扱われます。 次に例を示します。

# Sample currency property for Japan
JP=JPZ,999,0

この機能の新規APIには、次のメソッドが含まれます。これらのメソッドはすべてCurrencyクラスにあります。

  • getAvailableCurrencies – 利用できる通貨のセットを返します。
  • getNumericCode – この通貨のISO 4217数値コードを返します。
  • getDisplayName – デフォルト・ロケールでのこの通貨の表示に適した通貨名を取得します。
  • getDisplayName(Locale) – 指定したロケールでの表示に適した通貨名を取得します。

カテゴリ・ロケールのサポート

デフォルト・ロケールでは、次の2種類の使用法をそれぞれ設定できます。 フォーマット(FORMAT)設定は、リソースのフォーマットに使用されます。表示(DISPLAY)設定は、メニューおよびダイアログで使用されます。 新規のgetDefault(Locale.Category)メソッドは、Locale.Categoryパラメータを受け取ります。 このメソッドにFORMAT列挙値を渡すと、リソースのフォーマットのためのデフォルト・ロケールが返されます。 同様に、DISPLAY列挙値を渡すと、UIで使用されるデフォルト・ロケールが返されます。 setDefault(Locale.Category, Locale)メソッドは、指定したカテゴリでのロケールを設定するために使用されます。 引数なしのgetDefaultメソッドでは、DISPLAYのデフォルト値が返されます。

Microsoft Windowsでは、これらのデフォルト値は、Windowsコントロール・パネルの"標準と形式"設定および"表示言語"設定に従って初期化されます。

LocaleクラスでのBCP47とUTR35のサポート

Localeクラスが、BCP 47(IETF BCP 47 "Tags for Identifying Languages")との互換性がある識別子を実装するよう更新されました。また、ロケールのデータ交換のための、LDML(UTS#35 "Unicode Locale Data Markup Language")のBCP 47互換拡張がサポートされています。

このリリースでは、Localeクラスに次のネスト・クラスが追加されました。

  • Locale.Builder:Localeインスタンスを作成し、setterメソッドを使用してそのインスタンスを設定するために使用できます。

Localeクラスに次のメソッドが追加されました。

LOCALEクラスに次の定数が追加されました。

詳細は、JavaチュートリアルCreating a LocaleBCP 47 Extensionsを参照してください。

NumericShaperの新規メソッド

NumericShaperクラスは、Latin-1(ヨーロッパ言語)の数字をほかのUnicode10進数に変換するために使用されます。 Java SE 7リリースでは、NumericShaper.Range列挙型が追加されました。この列挙型は、独自の10進数を持つスクリプトのUnicodeの範囲を表します。 Java SE 7リリースには、このNumericShaper.Range列挙型を使用する次のメソッドが追加されています。

  • getShaper(NumericShaper.Range) - 指定したUnicodeの範囲に対するシェイパを返します。
  • getContextualShaper(Set<NumericShaper.Range>) - 指定したUnicodeの範囲(複数可)に対する、コンテキスト依存のシェイパを返します。 シェイパはヨーロッパ言語を最初のコンテキストとして想定します。
  • getContextualShaper(Set<NumericShaper.Range> NumericShaper.Range) - 指定したUnicodeの範囲(複数可)に対する、コンテキスト依存のシェイパを返します。 シェイパはdefaultContextを最初のコンテキストとして想定します。
  • shape(char[], int, int, NumericShaper.Range) - 指定したコンテキストを使用して、startとstart + countの間に出現する、text内の数字を変換します。

詳細は、JavaチュートリアルConverting Latin Digits to Other Unicode Digitsを参照してください。

正規表現APIでのUnicode 6.0サポート

正規表現のパターン・マッチング機能が、Unicode 6.0をサポートするよう拡張されました。 \uまたは\xのエスケープ・シーケンスを使用して、Unicodeコード・ポイントのマッチングを実行できます。

詳細は、JavaチュートリアルUnicode Supportページを参照してください。