2016-03-27 65 views
2

我正在使用i18next和localstorage來更改我的網站的語言(帶標記的傳單地圖)。我在一個名爲lang.j的文件中擁有所有語言。我想將它分成多個文件,每個文件都是一種語言。我該怎麼做?如何將語言更改爲多個文件而不是i18next中的一個?

鏈接語言文件在GitHub上: https://github.com/hurtworldmap/hurtworldmap.github.io/blob/master/raw/lang.js

我的功能:語言的

$(document).ready(function() { 
    var language = "en"; 
    if (localStorage.getItem("language") != null) 
     language = localStorage.getItem("language"); 

    i18n.init({ 
     lng: language, 
     resStore: resources, 
     fallbackLng: "en" 
    }, function(o) { 
     $(document).i18n() 
    }), $(".lang").click(function() { 
     var o = $(this).attr("data-lang"); 

     localStorage.setItem("language", o); 

     i18n.init({ 
      lng: o 
     }, function(o) { 
      $(document).i18n() 
     }) 
    }) 
}); 

例(在同一個文件):

"ru": { 
     "translation": { 
      "locations": "Локации", 
      "showlocations": "Показать локации", 
      "animals": "Животные", 
      "shigi": "Шиги", 
      "shigiwolf": "Дикий Шиги", 
      "shigiforest": "Лесной Шиги", 
      "shigiarctic": "Арктический Шиги", 
      "bor": "Кабан", 
      "radbor": "Радиоактивный Кабан", 
      "tokar": "Токар", 
      "tokarblue": "Синий Токар", 
      "tokarparrot": "Токар-попугай", 
      "sasquatch": "Снежный", 
      "yeti": "Йети", 
      "plants": "Растения", 
      "owrong": "Апельсин", 
      "pitcherplant": "Кувшинка", 
      "succulentseeds": "семена Succulent", 
      "items": "Вещи", 
      "itemflint": "Кремень", 
      "itemwood": "Дерево", 
      "lootcrate": "Ящик", 
      "resources": "Ресурсы", 
      "woodlog": "Бревно", 
      "coal": "Уголь", 
      "limestone": "Известняк/Глина", 
      "flint": "Кремень/Камень", 
      "deadtree": "Мертвое дерево", 
      "ores": "Руды", 
      "ironore": "Железная руда", 
      "titranium": "Титраниумная руда", 
      "mondinium": "Мондиниумная руда", 
      "ultranium": "Ультраниумная руда", 
      "largerock": "Большой камень", 
      "valley" : "Valley", 
      "fortress": "Fortress", 
      "transit": "Transit", 
      "boonies": "Boonies", 
      "crossroad": "Crossroad", 
      "airfield": "Airfield", 
      "carrier": "Carrier", 
      "dome": "Dome", 
      "arch": "Arch", 
      "created": "Создано:", 
      "names": "RogerHN и LuisMika", 
      "legal": "Hurtworld и логотипы Hurtworld являются тварными знаками Bankroll Studios", 
      "website": "Официальный сайт игры", 
      "welcome": "Это первая версия карты.", 
      "welcome2": "Если вы нашли баг, то пожалуйста пришли его в наш пост на ", 
      "welcome3": "Reddit'e или в группу ВК.", 
      "settings": "настройки", 
      "languagechange": "Изменить язык", 
      "translationbr": "Португальский Бразильский перевод RogerHN", 
      "translationru": "Перевод на русский от Roofy", 
      "translationde": "Перевод на Немецкий от Valixx", 
      "translationcn": "Перевод на китайский от Smoke6", 
      "translationpl": "Польский перевод от Magiczna Huśtawka", 
      "translationro": "Румынский перевод от Blaconix", 
      "translationtr": "турецкий перевод от Vinerra", 
      "translationit": "Итальянский перевод от CHC", 
      "translationes": "Испанский перевод Yoje", 
      "version": "версия" 
     } 
    } 

回答

2

不知道,如果你還在需要一個答案,所以我只是把這裏,以防其他人面臨類似的問題。

我在類似情況下所做的是:

$(document).ready(function() { 
    var language = "en"; 
    if (localStorage.getItem("language") != null) 
     language = localStorage.getItem("language"); 

    i18n.init({ 
     lng: language, 
     resGetPath: '/languages/__lng__.min.json', 
     fallbackLng: "en" 
    }, function(o) { 
     $(document).i18n() 
    }), $(".lang").click(function() { 
     var o = $(this).attr("data-lang"); 

     localStorage.setItem("language", o); 

     i18n.init({ 
      lng: o 
     }, function(o) { 
      $(document).i18n() 
     }) 
    }) 
}); 

這給你每種語言一個文件,你可以從文件中刪除語言鍵:如果您有多個

{ 
    "translation": { 
     "help": "Help Me! 
    } 
} 

命名空間,您還可以使用每個命名空間的單個文件:

resGetPath: "/languages/__lng__/__ns__.min.json" 

您的文件/languages/en/translation.min.json應該包含沒有這樣的命名空間的密鑰:

{ 
    "help": "Help Me! 
} 
+1

太棒了!這是我想分開語言文件!當我到家時我會測試。謝謝 – RogerHN

+0

現在嘗試了,我想我做錯了什麼。翻譯沒有奏效。 如果resGetPath是'/js/languages/__lng__.json',則文件必須是:js/languages/en.json?此外,文件應該像這樣開始:'{ 「翻譯」:{ 「AddYourNote」:「添加註釋」,「 – RogerHN

相關問題