1、java後臺國際化javascript
一、app-resources.xml配置國際化信息java
<!-- add by fengzf 2016-10-25 -->web
<!-- 定義國際化消息 --> spring
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 瀏覽器
<property name="basename" value="messages.Messages"/> mvc
<!-- 若是在國際化資源文件中找不到對應代碼的信息,就用這個代碼做爲名稱 --> app
<property name="useCodeAsDefaultMessage" value="true" /> 框架
</bean> jsp
<mvc:interceptors> 函數
<!-- 國際化操做攔截器 若是採用基於(請求/Session/Cookie)則必需配置 -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<!-- 獲取本地 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="zh_CN"></property>
</bean>
代碼解析:
basename文件目錄結構
以中文文件爲例
其餘語言代碼一致,內容不一樣,代碼不要重複定義
二、配置國際化監聽(web.xml)
監聽內容
三、國際化工具類MessageUtil
四、調用:一、直接在BaseAction中定義,之後在Action中調用時getMessage(code)
code爲資源包裏的編碼,會根據不一樣的語言環境選擇不一樣資源下的內容
二、不在BaseAction定義,可直接使用MessageUtil.getMessage(code,request)
2、jsp國際化(利用spring標籤)
一、要有上面第一步的配置(同上)
二、須要spring標籤工具文件
目錄結構
三、調用:
1)
2)
3)若js寫在jsp中也可用
注意單引號
3、純js國際化(參考:http://blog.csdn.net/chonggaoing/article/details/16119887)
第一步:建立properties資源文件。
properties資源文件命名規則爲:string_瀏覽器語言簡碼.properties,例如簡體中文:string_zh-CN.properties這裏須要注意是中劃線而不是下劃線,如圖我建立了三個資源文件
js_en-US.properties(美國英語),js_ja.properties(日語),js_zh-CN.properties(簡體中文)。
第二步:在js文件中引入jQuery.i18n.properties所需js文件。
由於jQuery.i18n.properties是依賴於Jquery框架的,因此須要在你的js文件中引入jQuery.i18n.properties所需js文件。
導入紅色部分的js便可使用jQuery.i18n.properties了。
第三步:使用jQuery.i18n.properties API
<script type="text/javascript">
$(document).ready(function(){
//國際化加載屬性文件
jQuery.i18n.properties({
name:'js',
path:'<%=path%>/js/i18n/',
mode:'map',
callback: function() {// 加載成功後設置顯示內容
//alert(jQuery.i18n.prop("theme_manage.js_activity"));
}
});
});
</script>
其中:name後面的值爲你定義的資源文件中語言簡碼前面的字符串,由於個人資源文件爲js_xxx.properties,因此這個值就爲js
path後面的值爲你資源文件的相對路徑。即相對於工程結構WebContent下的路徑所在
mode後面的值爲加載模式;"vars"表示以JavaScript變量或函數的形式加載資源文件中的key值(默認爲這種),「map」表示以map的方式加載資源文件中的key值。「both表示能夠同時使用這兩種方式」。我這裏使用的是map。
callback爲回調函數。
是怎樣根據不一樣的語言環境加載不一樣的資源文件的呢?其實,jQuery.i18n.properties實現的原理就是,根據name後面的值,加上瀏覽器的語言簡碼,再加上.properties找到對應的資源文件。這個過程是自動的,只須要進行上面的配置便可。
propertites中鍵值對以下:(在properties文件中中文會自動轉換成相對應的ASCII值,固然這裏是能夠設置的,也能夠經過插件進行更改的,我這就沒作了反正這些中文是從頁面上覆製出來的,無論了),等號前的爲key,等號後的爲值(注意一點的是,不一樣的資源文件中key必須保持一致,是自定義的)。
這樣資源文件中的內容已經加載完成了。
第四步:js文件中根據key找對應的值。
紅色部分就是取值的方式,引號中的字符串對應着上面資源文件中的key值。
須要注意的地方:
此上方法在谷歌和火狐的瀏覽器中實現徹底沒有問題。但在IE瀏覽器中會出現問題,問題在使用IE瀏覽器每次獲取到的語言環境爲系統的語言,而不是瀏覽器的語言。
這個問題我也糾結了好久,網上提供了一些方法來得到瀏覽器的語言,可是在IE中卻不起做用,最後個人解決方法是:在使用jQuery.i18n.properties加載資源文件以前,在request頭信息中先獲取瀏覽器的語言,而後設置。