簡體   English   中英

Spring國際化:如何動態設置區域設置值

[英]Spring internationalization: How to dynamically set locale value

我試圖通過spring實現國際化。以下是我所做的配置

`<bean id="messageSource"
      class="org.springframework.context.support.ResourceBundleMessageSource">
      <property name="basenames" value="messages">
    </property>
</bean> 

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />`

現在我有三個屬性文件 - message_en.properties,message_fr.properties,message_sp.properties。 並使用JSTL標記在我的jsp中使用它。 我的問題是如何傳遞區域設置值以便它可以選擇正確的屬性文件? 一種方法是傳入請求URL,但我的應用程序太大,無法在每個URL中包含此請求參數。 有沒有其他方法可以設置區域設置值? 我有一個存儲在DB中的語言環境值,我必須從中獲取和設置。 如何用最好的方法實現這一目標?

能夠使用RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);下面的區域設置更改RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);

但是這需要編寫一個過濾器來執行每個請求並在DB中觸發查詢以獲取值。 有沒有更好的建議呢?

我猜你現在可能已經找到了一個解決方案,但是對於那些偶然發現這個問題的人來說,也許你需要擺脫LocaleResolver?

Mkyong說

如果未注冊任何“localeResolver”,將使用默認的AcceptHeaderLocaleResolver,它通過檢查HTTP請求中的accept-language標頭來解析語言環境。

允許用戶的瀏覽器自動說出它更喜歡哪種語言非常有意義,並且通過更改您的首選語言(以及可能還有其他瀏覽器)可以輕松地在Chrome中進行測試。

(Mkyong的教程非常方便,值得一試)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM