PEXA Supportについて

PEXAプロパティ

トランスレータ

印刷フレームワーク

AETフレームワーク

ワークフロー

動的フォーム

変換フレームワーク

テンプレートエンジン

カレンダー

タスクスケジューラー

目次

  1. はじめに
  2. 概説
    1. トランスレータの種類
    2. トランスレータ名について
    3. デフォルトトランスレータ
    4. 国際化対応


はじめに

このドキュメントは、PEXAのサポート機能であるトランスレータについて解説するものです。

トランスレータとは、値オブジェクトやデータモデルオブジェクト等を別のオブジェクト(文字列表現等)に変換する仕組みです。
Dateオブジェクトを画面で表示するためのフォーマットで文字列に変換したり、データモデルの内容をHTML形式の文字列表現に変換したりといった事ができます。

この仕組みを利用する場面としては、

  • 画面上のLabelにjava.util.Date型の日付情報をスラッシュ区切りの西暦表示にフォーマットして表示する
  • 画面上のTableで金額を表示するために、BigDecimalの値を3桁毎にカンマ区切りした文字列として表示する
  • 検索結果のデータモデルをHTMLデータに変換して、画面のHTML表示領域に表示する


概説

トランスレータについての基本的な部分について、以下で解説します。

トランスレータの種類

Translatorは大きく分けて3種類があります。

モデルトランスレータと現象型トランスレータはペアで使用されることがほとんどで、データの検索結果をHTMLデータや特定の文字列データに変換する場合に使用します。
クラストランスレータは、各GUIコンポーネントが個々で扱う値を変換したり、テーブルコンポーネントの各カラム毎に表示する値の変換を行ったりします。

指定されたトランスレータの設定ファイル中に、変換対象のモデル、現象型、値に該当する変換ルール設定が存在しない場合は無視されてそのオブジェクトに対してtoString()した結果が返されます。
null値が渡された場合は空文字(lengthが0のString)に変換されます。


トランスレータ名について

各トランスレータには、定義ファイル中のtranslator_nameというパラメータでユニークな名称を付ける必要があります。
ユニークとなる範囲は、translator_location毎になります。これは言い換えると、translator_locationが違えば同じ名称の物があっても良いと言うことになります。 その代わり、トランスレータ定義ファイル名は必ず別々にしてください。

なお、"default"というトランスレータ名があらかじめPEXA側で予約されています。
これは個別のトランスレータ定義に該当しなかった場合に最後に適用されるデフォルトトランスレータで、translator_typeは必ず"class"となります。
ユニーク性の条件と合わせると、client側とserver側でそれぞれデフォルトトランスレータを用意することが可能です。

なお、後述する国際化対応を行う必要がある場合は、トランスレータ名がユニークとなる範囲はさらにlocale設定毎ということになります。


デフォルトトランスレータ

上記で解説した"default"という名前を持つトランスレータは、デフォルトトランスレータという特別な扱いになります。
このトランスレータは、クラストランスレータとして定義され、 個別に定義された現象型トランスレータもしくはクラストランスレータ内に、該当する定義がなかった場合に最終的に適用されるトランスレータとなります。

ここにあらかじめ日付、数値、特定の区分値等について定義をしておくことで、全体的に共通で適用したいトランスレータを一カ所で定義しておくことが出来ます。 もしここで定義された変換規則とは違う形で表示を行いたい場合にのみ、個別のトランスレータを定義すれば良いと言うことになります。


国際化対応

画面表示を複数の言語に対応させる必要がある場合、トランスレータのセットを対応言語の種類に応じて作成する必要があります。 その場合、ある名前のトランスレータを対応する言語の種類分作成し、それぞれの変換規則を定義することになります。

あるトランスレータ定義ファイルがどの言語対応のものであるかは、localeというセクションを記述することで指定できます。
ロケールは、lang属性とcountry属性の組み合わせで指定することになります。
lang属性は言語(日本語、英語など)を表し、country属性は国(日本、アメリカ、イギリスなど)を表します。

lang属性は必須ですが、countryは省略可能です。
countryを省略した場合は、実行時の環境におけるcountryがなんであれlanguageが一致すればその定義ファイルが適用されます。

例えば、有効性区分というcategory項目がある場合に、日本語の英語の2言語に対応する場合は以下のようなファイルを作成します。

例:日本語対応のトランスレータの場合
ファイル:src/translator/class/ja/JP/ValidityFlag_ja_JP.trans

;;定義の記述例
;------------------------
; 識別情報
;------------------------
translator_name     ValidityFlag
translator_type     class
translator_location client
;------------------------
; 対応locale指定
;------------------------
(locale
    lang   ja
    contry JP
)
;------------------------
; 変換規則の指定
;------------------------
(class
    (pexa.share.util.business.ValidityFlag
        (static
            VALID      有効
            INVALID    無効
        )
    )
)

例:英語対応のトランスレータ(country指定無し)
ファイル:src/translator/class/en/ValidityFlag_en_US.trans

;;定義の記述例
;------------------------
; 識別情報
;------------------------
translator_name     ValidityFlag
translator_type     class
translator_location client
;------------------------
; 対応locale指定
;------------------------
(locale
    lang   en
)
;------------------------
; 変換規則の指定
;------------------------
(class
    (pexa.share.util.business.ValidityFlag
        (static
            VALID      Valid
            INVALID    InValid
        )
    )
)



更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2009-03-03 14:19:47 #$
  • バージョン : $Revision: 3275 $



Copyright © 2006, Atrris Corporation