JViews Framework が提供するグローバリゼーション・サポートには、ロケールとコンポーネント方向を基本とする多文化サービス、およびベース・テキスト方向を指定する機能を介した双方向テキストが含まれます。
ロケールとコンポーネント方向
JViews Framework の機能を使用すると、さまざまな言語や文化をサポートするアプリケーションを実装することができます。JViews Framework は多文化サポートを提供します。Swing オブジェクトと同じように、IlvGraphic オブジェクトのロケールとコンポーネント方向を設定することができます。
この機能を使用して、コンポーネント方向またはロケールへのアクセスを必要とする独自のサブクラスを実装することができます。
ロケールとコンポーネント方向にアクセスするには、以下のメソッドを使用します。
- public Locale getLocale()
- public ULocale getULoacle()
- public ComponentOrientation getComponentOrientation()
クラス com.ibm.icu.util.ULocale はロケールの拡張メカニズムであり、java.util.Locale と同じ目的で使用されます。
ロケールとコンポーネント方向は、デフォルトでは、グラフィック・オブジェクトを表示する Swing コンポーネント (通常は IlvManagerView のインスタンス) から継承されます。
いくつかのグラフィック・オブジェクト (IlvManager、IlvGrapher) を使用して、ロケールとコンポーネント方向を明示的に指定することができます。
これを行うと、それらのグラフィック・オブジェクト内に入れ子にされたグラフィック・オブジェクトは、明示的に指定された設定を継承します。
JViews Framework でのベース・テキスト方向
Rogue Wave® JViews 製品は、テキストを表示できるグラフィック・オブジェクト (IlvLabel、IlvZoomableLabel、IlvText) を提供します。
独自のグラフィック・オブジェクトを実装してテキストを表示することもできます。
さまざまな言語からなる混合テキストを表示する場合は、左から右に向って書く英語などのテキストと、右から左に向って書くアラビア語やヘブライ語などのテキストを混合することがあります。
このような混合テキストの場合はベース・テキスト方向が重要となります。というのも、1 つのセンテンス内における同一言語のセグメントの順序を規定するのがベース・テキスト方向だからです。
その順序がセンテンス内でのセグメントの配置を決定します。
「ベース・テキスト方向」を参照してください。
例えば、アラビア語の単語を少ししか含まない長い英語のテキストはおそらく左から右のベース・テキスト方向を使用します。一方、英語の単語を少ししか含まない長いアラビア語のテキストはおそらく右から左のベース・テキスト方向を使用します。
次の図は 4 つの IlvText オブジェクトを示しています。
左側のオブジェクトは、英語のテキストの中にアラビア語の単語が混じった「One ... Two ... Three」という英語のテキストを示しています。
右側のオブジェクトは、アラビア語のテキストの中に英語の単語が混じった「one ... two ... three」というアラビア語のテキストを示しています。
上の行にあるオブジェクトは左から右のベース・テキスト方向を持ち、下の行にあるオブジェクトは右から左のベース・テキスト方向を持っています。
英語ユーザーの場合は、テキストの大部分が英語であり、左から右の読み取り方向を当然のことと思っているので、左上のテキストが正しく見えます。
アラビア語ユーザーの場合は、テキストの大部分がアラビア語であり、右から左の読み取り方向を当然のことと思っているので、右下のテキストが正しく見えます。
基本クラス IlvGraphic には、ベース・テキスト方向のプロパティーが含まれています。
IlvGraphic の事前定義サブクラスは、それらのプロパティーを使用します。
テキストを表示する独自のクラスを実装して、かつさまざまな言語の混合をサポートしたい場合は、その実装がベース・テキスト方向の設定にも従うようにしてください。
ベース・テキスト方向のサポートを無効にするには、Java システム・プロパティー ilog.jviews.bidi.support.on を
false
に設定します。
このプロパティーは、デフォルトではオンになっています。
ベース・テキスト方向サポートが有効になっているかどうかをテストするには、次のものを使用します。
ilog.views.util.text.IlvBidiUtil.isAdvancedBidiOn()
クラス IlvGraphic では、以下のメソッドがベース・テキスト方向を制御します。
public void setBaseTextDirection(int direction)
public int getBaseTextDirection()
可能な値は以下のとおりです。
- IlvBidiUtil.COMPONENT_DIRECTION: ベース・テキスト方向は、グラフィック・オブジェクトのコンポーネント方向から計算されます。
- IlvBidiUtil.INHERITED_DIRECTION: グラフィック・オブジェクトが別のグラフィック・オブジェクト (例えば、マネージャー) に含まれている場合は、そのグラフィック・オブジェクトは親グラフィック・オブジェクトから設定を継承します。
- IlvBidiUtil.LEFT_TO_RIGHT: ベース・テキスト方向は左から右です。
- IlvBidiUtil.RIGHT_TO_LEFT: ベース・テキスト方向は右から左です。
- IlvBidiUtil.CONTEXTUAL_DIRECTION: ベース・テキスト方向は、表示されるテキストから計算されます。 これは、ヒューリスティックを使用して、表示される Unicode 文字を分析することによってベース・テキスト方向を決定します。 「IlvBidiUtil.isStringRTL(java.lang.String, int)」を参照してください。
ストリングの表示方法を決定するとき、コンポーネント方向と継承方向が適切でないことがあります。
そのため、次のメソッドが提供されます。
public int getResolvedBaseTextDirection()
このメソッドはコンポーネント方向と継承方向を解決し、次の 3 つの選択肢のみを返します。
- IlvBidiUtil.LEFT_TO_RIGHT
- IlvBidiUtil.RIGHT_TO_LEFT
- IlvBidiUtil.CONTEXTUAL_DIRECTION.
さらに、異なるベース・テキスト方向を持つテキストを検出して処理するユーティリティーが IlvBidiUtil にあります。