高度なカスタマイズ > サービスおよびインフラストラクチャのカスタマイズ > 現地化とローカリゼーション > Windchill のアプローチ
  
Windchill のアプローチ
アプリケーションの開発時に前述のすべての要因に留意して要因ごとに対処するのではなく、言語またはロケール依存のコードを言語独立のコード (アプリケーションの実行可能コード) と分離することが最善の方法です。Windchill は、それが可能なように設計されています。
Windchill では、国際的なアプリケーションをサポートするさまざまな Java 機能を利用しています。
Locale クラス
各ロケール依存オブジェクトには、独自のロケール固有情報が含まれています。デフォルトのロケールはシステムで指定されますが、ユーザーは Web ブラウザでロケールを指定できます。
リソースバンドル
リソースバンドルでは、キーと値の組み合わせを定義します。この場合、値は文字列で、特定のロケールに対する別の言語依存オブジェクトです。コード内でキーを使用し、対応する文字列またはオブジェクトを挿入する場所を指示します。たとえば、Windchill では、オンラインヘルプでリソースバンドルを使用し、ボタン名、フィールド名、および GUI のその他の要素を識別します。デフォルトまたは指定したロケールで使用するリソースバンドルを指定します。これによって、表示する文字列とオブジェクトが決定されます (この章の後半で例を示します)。
Windchill は、構造化されたプロパティファイルフォーマットを使用してローカライズ可能なテキストの大部分を管理します。java.util.PropertyResourceBundle プロパティファイルとは異なり、これらのリソース情報ファイルは実行時には使用されません。これらのファイルを使用して情報を管理し、ファイルからランタイムリソースバンドルを構築するという点で、java.util.ListResourceBundle java ファイルに似ています。これらのリソース情報ファイルには .rbInfo ファイルの拡張子があります。EnumeratedType のローカライズ可能な情報の管理、およびメタデータの名前を表示するには、このフォーマットを使用する必要があります。これらのローカライズ可能なリソースは、生成ツールによって更新されるからです。ほかのローカライズ可能なテキストの保存にもリソース情報フォーマットを使用できますが、これは必須ではありません。
Unicode
これは 16 ビットの国際的な文字コード標準です。文字コードとは、英数字および特殊なテキスト文字を数字で表したものです。マルチバイトコードは、アジア諸国で使用されている文字を表す場合に必要です。Unicode は、現在世界に存在するすべての書き言葉を表すために作成されました。
ローカライズされたテキストの操作
Java クラスである java.io.inputStreamReader および java.io.OutputStreamWriter には、標準の文字コードと Unicode との間での変換メカニズムが組み込まれています。したがって、プラットフォームとロケール依存コード間での文字の変換が可能です。
地域的な慣習の処理
java.text パッケージには、日付および数値を地域的な慣習に準拠したフォーマットに変換するクラスが組み込まれています。このパッケージでは、文字列の並べ替えも処理します。
java.text.NumberFormat は数値、金額、および割合をフォーマットします。
java.text.DateFormat には、そのロケールの言語での月名が含まれ、その地域の慣習に従って日付をフォーマットします。このクラスは、java.util パッケージの TimeZone および Calendar クラスと併用されます。TimeZone は DateFormat に対し、日付が解釈されるタイムゾーンを通知し、Calendar は日付を年、月、週、および日に分割します。Windchill のすべての日付は、サーバーにより、グリニッジ標準時に対する変換に基づいてデータベースに格納されます。
正しい Timezone に Timestamp を表示するには、アプリケーションプログラマーは wt.util.WTContext を使用して以下のとおりに DateFormat に Timezone を設定する必要があります。
DateFormat df = DateFormat.getDateTimeInstance(
DateFormat.SHORT,
DateFormat.SHORT,WTContext.getContext().getLocale()
);
df.setTimeZone(WTContext.getContext().getTimeZone());
System.out.println("The current time is: " +
df.format(new Timestamp(current_time_millis)));
java.text.Collator は、ロケールに依存した方法で文字列の比較、並べ替え、および検索を実行できます。