關於springmvc的國際化,這篇文章已經講的很好了。它講了有如下幾種國際化方式
1:基於http的header資訊的國際化(request.getlocale())
2:基於session的國際化(設定session的sessionlocaleresolver.locale_session_attribute_name
3:基於cookie的國際化
4:基於url的國際化 (注意上面文章的第四種方法是錯誤的,因為spring的bean預設是單例,不要使用例項變數來儲存狀態,這樣乙個使用者改變狀態,所有使用者都改變狀態了)
基於session的實現方式要求有個入口的url或者沒有url中都要求加入乙個lang引數,不是很方便,有沒有一種方式我想加的時候加,不相加的是有使用前面的local 。經過實踐基於url的國際化解決我的問題。
<mvc:interceptors
>
<
bean
class
="org.springframework.web.servlet.i18n.localechangeinterceptor"
/>
mvc:interceptors
>
<
bean
id="localeresolver"
class
="com.sequoiadb.util.dbaaslocaleresolver"
/>
實現dbaaslocaleresolver的方法
新增國際化檔案
在src目錄下新增properties檔案,中文轉碼要使用native2ascii.exe工具,這個是jdk自帶的。
在這裡說下,上面提到的那篇文章的基於url的國際化**有點問題,因為如果不帶locale會報空指標異常,所以我修改了邏輯,第一次根據瀏覽器來進行國際化所以使用了request.getlocale(), 如果url中有locale引數就返回mylocale ,這個mylocale物件的構造在哪調我也不太清楚
唯一的bug就是你的locale引數填寫錯誤也會預設使用瀏覽器來進行國際化,而不是使用上一次的locale。
Spring MVC國際化配置
一 基於瀏覽器語言的國際化配置 使用spring的mvc,並且配置中有配置resource檔案 其中,message info是你的properties檔案的通用名。如 我的配置檔案叫message info.properties,message info zh cn.properties等等,只要...
SpringMVC 坑路11 國際化
靜態國際化配置 動態國際化配置 請求級別的國際化處理 session 級別的國家化處理 cookie 級別的國際化處理 1 在 spring 的配置檔案裡加入 注意 messagesource 不能隨意更改名稱。2 配置資源檔案 classpath message zh cn.properties ...
Springmvc框架本地化和國際化
springmvc的本地化和國際化 一 acceptheaderlocaleresolver 這個locale resolvers依據 accept language請求頭資訊進行解析處理,通常這個頭資訊包含客戶端操作資訊的本地標示。二 cookielocaleresolver 這個解析器通過coo...