バックグラウンド
データベースに格納されているフィールド ラベルの従来の国際化がいくつかあるため、"マージされた" messageSource を作成しようとしました。コードがデータベースに存在する場合は戻ります。存在しない場合は、PluginAwareResourceBundleMessageSource を使用して i18n を調べます。
問題
何らかの理由で、cachedMergedPluginProperties がロケールに対して間違ったファイルをキャッシュしています。たとえば、en_US を検索すると、pt_BR メッセージを受信します (マップのキーは en_US ですが、プロパティは pt_BR です)。
次のように messageSource を宣言しました。
messageSource(DatabaseMessageSource) {
messageBundleMessageSource = { org.codehaus.groovy.grails.context.support.PluginAwareResourceBundleMessageSource m ->
basenames = "WEB-INF/grails-app/i18n/messages"
}
}
内側の Bean は、Grails が type の 2 つの Bean を許可しないためですMessageSource
。
PluginAwareResourceBundleMessageSource
Grails のデフォルトとは異なる宣言をしていますか? この Bean 宣言を確認できる Grails のファイルはどれですか?