0

大規模な消費者向けの小売 Web サイトの再設計に取り組んでいます。gap.comのようなものを考えてください

テクノロジー スタックは、Apache タイル、Apache 速度、Spring MVC です。

質問: I18N を正しく実装するには、ロケールごとに複数のベロシティ テンプレートを作成するか、文字列をプロパティ ファイルに外部化する必要がありますか? 後者のアプローチでは、resourcebundle.getMessage("website.title", "en_US") のようなベロシティ テンプレートが乱雑になりますが、前者の場合は、複数のテンプレートに重複したロジックが存在する可能性があります。 .

4

1 に答える 1

1

複数のテンプレート (言語ごとに 1 つ) を作成しないでください。それは逆効果です。

また、テキストを翻訳するためのある種のラッパーを定義する必要があります。Locale または Locale Identifiers を直接 ("en_US") 使用したくない場合は、代わりに、セッションに Locale を設定し、このオブジェクトを使用する必要があります (おそらく暗黙のうちに、を呼び出すたびに渡す必要がないためgetMessage()、ラッパー)。

ResourceBundleクラスのメソッドを直接呼び出すと、一部のメソッドがスローされる可能性があることに注意してくださいMissingResourceException(これはさらに悪いことに実行時例外です)。必ず確認する必要があります。

ところで。Velocity は、ローカリゼーションの目的でいくつかのツールを定義します。面白いことに、実際に使っている人を見たことがありません (正直なところ、私の Velocity の経験はかなり限られています)。

于 2011-10-05T07:33:47.177 に答える