SpringMVC國際化

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頭信息中先獲取瀏覽器的語言,而後設置。

相關文章
相關標籤/搜索