SpringMVC國際化


一、java后台國際化

1、app-resources.xml配置國際化信息

<!-- add by fengzf 2016-10-25 -->

  <!-- 定義國際化消息 -->  

   <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">  

     <property name="basename" value="messages.Messages"/> 

      <!-- 如果在國際化資源文件中找不到對應代碼的信息,就用這個代碼作為名稱  -->              

    <property name="useCodeAsDefaultMessage" value="true" />   

   </bean>  

 

      <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文件目錄結構

以中文文件為例

其他語言代碼一致,內容不同,代碼不要重復定義

 

2、配置國際化監聽(web.xml)

監聽內容

 

3、國際化工具類MessageUtil

4、調用:1、直接在BaseAction中定義,以后在Action中調用時getMessage(code)

code為資源包里的編碼,會根據不同的語言環境選擇不同資源下的內容

2、不在BaseAction定義,可直接使用MessageUtil.getMessage(code,request)

 

二、jsp國際化(利用spring標簽)

1、要有上面第一步的配置(同上)

2、需要spring標簽工具文件

目錄結構

3、調用:

1)

2)

3)若js寫在jsp中也可用

注意單引號

三、純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頭信息中先獲取瀏覽器的語言,然后設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM