i18next-頁面層語言國際化js框架介紹


    因為工作需要,最近研究了下網站語言國際化的問題,根據當前項目架構,尋求一種較好的解決方案。
首先總結下項目中語言切換實現方式大概有以下幾種:


1,一種語言一套頁面,如:index_CN.html,index_TN.html,index_EN.html
   根據用戶當前使用語言來展示對應的頁面。
   這種方式比較常用,也比較理想,性能不錯,但是開發使用的時間就多,每個頁面要多做幾遍。


2,后台定義變量,根據當前語言返回對應語言信息
   這種方式不好使,麻煩,頁面所有靜態顯示文本處都需要定義變量,從后台讀取。
   后台變量的定義可以根據語言分不同的屬性文件,如message_cn.properties,message_tn.properties,message_en.properties
   注:這種方式不適應處理頁面靜態文本,但是可以結合第1種方式,這里專門處理頁面動態的信息提示。


3,js定義語言變量,全文替換,如:
   

    var dbi = document.body.innerHTML;
    var TOLAN = eval(LAN);
    for(var n=0;n<CN.length;n++){   
        dbi=  dbi.replace(eval("/"+CN[n]+"/g"), TOLAN[n]);
    }
    document.body.innerHTML = dbi;

    這種方式不推薦使用,處理性能低下,如果頁面有事件綁定等內容,還會導致很多問題。

 

4,采用i18next頁面層框架,js框架地址:http://i18next.com/;
   i18next的原理是根據標簽里聲明的變量,綁定語言資源文件內容,再呈現結果頁面。

   page source:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="[PATH]/jquery.js"></script>
    <script type="text/javascript" src="[PATH]/i18next.js"></script>
  </head>
  <body>
    <ul class="nav">
      <li><a href="#" data-i18n="nav.home"></a></li>
      <li><a href="#" data-i18n="nav.page1"></a></li>
      <li><a href="#" data-i18n="nav.page2"></a></li>
    </ul>
  </body>
</html>

 

loaded resource file (locales/en/translation.json):

{  
"app": { "name": "i18next" }, "nav": { "home": "Home", "page1": "Page One", "page2": "Page Two" } }

 

 

javascript code:

i18n.init(function(err, t) {
  // translate nav
  $(".nav").i18n();

  // programatical access
  var appName = t("app.name");
});

 


免責聲明!

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



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