jquery i18n(前端國際化)

醉臥溫柔鄉發表於2017-12-12

昨天在做前端js的國際化的時候,因為遇到了需要從cookie中獲取語言資訊再進行資源載入的情況,索性就直接將判斷的條件以及i18n的初始化寫到了index頁面中,這裡是velocity的語法。

<script src="$link.contextPath/assets/javascripts/jquery/jquery.min.js?v=$appUitl.revision"></script>
<script src="$link.contextPath/assets/javascripts/jquery-i18n-properties/jquery.i18n.properties.js?v=$appUitl.revision"></script>
#foreach($gc in $request.getCookies())
    #if($gc.value=='zh_CN')
        <script src="$link.contextPath/assets/javascripts/jquery-validation-engine/js/jquery.validationEngine-zh_CN.js?v=$appUitl.revision"></script>
        <script>
            $.i18n.properties({//載入資瀏覽器語言對應的資原始檔
                name : 'messages', //資原始檔名稱
                path : '$link.contextPath/i18n/', //資原始檔路徑
                mode : 'map', //用Map的方式使用資原始檔中的值
                language : 'zh_CN',
            });
        </script>
    #elseif($gc.value=='en_US')
        <script src="$link.contextPath/assets/javascripts/jquery-validation-engine/js/jquery.validationEngine-en_US.js?v=$appUitl.revision"></script>
        <script>
            $.i18n.properties({//載入資瀏覽器語言對應的資原始檔
                name : 'messages', //資原始檔名稱
                path : '$link.contextPath/i18n/', //資原始檔路徑
                mode : 'map', //用Map的方式使用資原始檔中的值
                language : 'en_US',
            });
        </script>
    #end
#end

其中載入的資原始檔為
這裡寫圖片描述
這樣就成功了,再在js中通過prop方法呼叫配置檔案中的key值就行了

var message = $.i18n.prop('index.modal.message')

配置檔案中

  • messages_en_US.properties
index.modal.message=Choose
  • messages_zh_CN.properties
index.modal.message=請選擇專案

大功告成

相關文章