1

プロパティをより簡単に変更するには、クラスパスの外部でi18nサポート用のSpring MessageSourcesバンドル(プロパティファイル)を外部化する必要があります。どうやってやるの ?

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="test-messages"/>

ありがとう!

4

2 に答える 2

2

DB内のメッセージを検索するメッセージソース実装を構築しました。あなたがしなければならないことは、SpringのAbstractMessageSourceから継承するMessageSource実装を作成することです(すべての機能を取得するには、javadocを参照してください)。

最小限の抽象メソッド'resolveCode(String、Locale)'を実装する必要があります(ただし、'resolveCodeWithoutArguments(String、Locale)'を実装すると、パフォーマンスが向上します)。このメソッドは、次のような定義を使用して、その単純なテーブルを指すDAOに委任します。これ:

table translation (
  translation_id number pk
  code varchar(20)
  locale varchar(5)
  translation varchar(100)
)

コードとロケールは一意のインデックスを形成します。

これで完了です。もちろん、いくつかのキャッシュ機能を追加し、daoレベルまたはMessageSourceレベルのいずれかで「ロケールの低下」動作を提供します(つまり、「en_US」が見つからない場合は「en」を試してください)。

これは完全に機能します。

于 2009-10-20T08:31:47.723 に答える
1

この問題に関する情報については、このスレッドを確認してください。ただし、アプリケーションがどこにデプロイされるかわからないため、Tomcat コンテキストの外部にファイルを配置することはお勧めできません。

ただし、必要に応じて、かなり優れたソリューションがいくつか見つかります。

于 2009-10-20T08:47:43.947 に答える