2017-07-27 8 views
1

i18n変換されたURLパスをマップするアプローチは何ですか?例えばi18nパス部分を使用したSpring MVCリクエストマッピング

は、我々は(ロケールエンため)follwing URLの話を言うことができます:(デ)ドイツ語で

www.foo.tld/car/manufacturer 

このURLは次のようになり、私はコントローラRequestMapping私について知っていること

www.foo.tld/auto/hersteller 

これらのURLを1つのメソッドにマップするのにseverelの値を使うことができます

@GetMapping(value={"/car/manufacturer/", "/auto/hersteller/"}) 

その他のSEO最適化woおそらく

@GetMapping(value={"/en/car/manufacturer/", "/de/auto/hersteller/"}) 

のようなパスで現在のロケールを持つものになる...しかし、私は最高のURIのSEOのが賢明だろうどのような議論を開始したいいけないULD。

これは多少のロケール/言語しか使用していないとしても、これは何とか動的にしたいと思っています。以下のために、すでにそれらを使用して

uri.car=car 
uri.manufacturer=manufacturer 

messages_de.properties

uri.car=auto 
uri.manufacturer=hersteller 

イム

messages.properties: は現在のように、自分のアプリケーション内のURLを生成するためのURLパス部分をマップするmessages_xx.propertiesを使用してイムうまく動作するユーザーロケールを参照するリンクを構築します。

私が現在検索しているものは、コントローラでこれらのURLをマップするエレガントで誤りの少ないプルーニング方法です。上記の例のように私のコントローラに静的なRequestMappingを持っていれば、それを変更する必要もあります(もし忘れていなければ!)。 また、別の言語のサポートを追加したいのであれば、すべてのコントローラで検索し、別の値マッピングを追加する必要があるかどうかを確認する必要があります。

Springコントローラのi18nパス部分をマッピングする方法が理想的です。理想的にはリクエストロケールを尊重し、messages_xx.propertiesを使用してパス文字列を解決しますか? または、リクエストされたロケールに従ってパス部分を抽出し、URLをマッピングするために内部的に1つの言語のみを使用するフィルタになるでしょうか?

答えて

0

あなたはEN message.propertiesとDE というメッセージがあります。次のプロパティを持つプロパティ

url.car=/car/manufacturer/ EN

url.car=/auto/hersteller/でDE

でご@Controllerであなたが得ることができるあなたのmessageSourceを設定し、プロパティを取得するためにそれを使用して簡単にこのプロパティ:

コンフィグレーション済みのMessageSourceを注入して、Springがメッセージを解決できるようにします。

@Autowired 
private MessageSource messageSource; 

そして、あなたはmessage.propertiesファイルからすべてのプロパティを取得することができます。

String url= messageSource.getMessage("url.car", put_here_your_locale); 
関連する問題