高度なカスタマイズ > サービスおよびインフラストラクチャのカスタマイズ > システム生成 > ビジネスオブジェクトのモデル化 > ローカライズ済みテキスト
  
ローカライズ済みテキスト
ローカライズ済みテキストの例は、すでに示しました。ComputerTypeRB.rbInfo には、ComputerType の (デフォルトの英語の) テキストが含まれています。列挙タイプのローカライズ済みテキストを提供するだけではなく、クラス、フィールド名、およびメッセージ (例外メッセージなど) のローカライズも行います。
クラス名と属性名
イントロスペクションにより、クラスおよびプロパティの (ローカライズ済み) 表示名を取得するための API が提供されます。デフォルトの表示名は、次の Simple Example.Name を生成する例が示すように、値が明示的に指定されていない場合に計算されます。
リスト 22: SimpleExample の表示名
01 from wt.introspection import WTIntrospector
02 from com.acme.example import SimpleExample
03
04 snci = WTIntrospector.getClassInfo(SimpleExample)
05 print "%s.%s" % (snci.getDisplayName(), snci.getPropertyDisplayName
(snci.getPropertyDescriptor('name'), None))
SimpleName を Simple と表示し、SimpleName.name を aka と表示するとします。これを行うには、次のように、同じディレクトリに MetadataResourceInfo を作成します。
リスト 23: exampleModelRB.rbInfo
01 ResourceInfo.class=wt.tools.resource.MetadataResourceInfo
02
03 # Entry Format (values equal to default value are not included)
04 # <key>.value=
05 # <key>.category=
06 # <key>.comment=
07 # <key>.argComment<n>=
08 # <key>.constant=
09 # <key>.customizable=
10 # <key>.deprecated=
11 # <key>.abbreviatedDisplay=
12 # <key>.fullDisplay=
13 # <key>.shortDescription=
14 # <key>.longDescription=
15
16 # Entry Contents
17 SimpleExample.value=Simple
18 SimpleExample.name.value=aka
これらのバンドルは、列挙タイプに使用されるバンドルスタイルと似ており、同じ方法でコンパイルされます。コンパイルが完了すると、Jython スクリプトによって Simple.aka が生成されます。
メッセージ
クラス名とプロパティをローカライズするだけでは十分ではありません。ユーザーへのあらゆる通知もローカライズする必要があります (開発者は必ずしもユーザーではありません)。列挙タイプ、およびクラスとそのプロパティには rbInfo フォーマットが使用されます。一般的なメッセージ (通常、サービスによって報告される例外やステータスメッセージに含まれています) の場合は、最終的に java.util.ListResourceBundle を拡張する Java ソース/クラスファイルが使用されます。ListResourceBundle の契約が難解であるため、宣言型の WTListResourceBundle を使用します。次に例を示します。
リスト 24: exampleResource.java
01 package com.acme.example;
02
03 import wt.util.resource.*;
04
05 /** This example blatantly plagiarized from the JavaDoc. **/
06 @RBUUID("com.acme.example.exampleResource")
07 public class exampleResource extends WTListResourceBundle {
08 @RBEntry("This is the localized text with a single substitution: \"{0}\".")
09 @RBComment("An example entry.")
10 @RBArgComment0("Any string...")
11 public static final String EXAMPLE_STRING = "0";
12 }
これにより、メッセージまたは例外が生成されます。
リスト 25: exampleResource を使用したメッセージ
01 from com.acme.example import exampleResource
02 from wt.util import WTException, WTMessage
03
04 print WTMessage(exampleResource.getName(), exampleResource.EXAMPLE_STRING,
['substitution']).getLocalizedMessage()
05
06 raise WTException(exampleResource.getName(), exampleResource.EXAMPLE_STRING,
['substitution'])
最初の呼び出しによって This is the localized text with a single substitution: ‘‘substitution’’ が生成され、次の呼び出しによって wt.util.WTException: (com.acme.example.exampleResource/0) wt.util.WTException: This is the localized text with a single substitution: ‘‘substitution’ というメッセージを表示する例外が発生します。
詳細については、wt.util.resource パッケージ (特に wt.util.resource.WTListResourceBundle) の Javadoc を参照してください。