2016-03-27 22 views
2

Web sitemin dilini değiştirmek için localstorage ile i18next kullanıyorum (işaretçileri olan yaprakçık haritası). Tüm dilleri lang.js. adlı bir dosyada var. Her biri bir dil için birden çok dosyaya bölmek istiyorum. Bunu nasıl yapabilirim? github dil dosyasınaDili, i18next dosyasında bir yerine birden çok dosyaya nasıl değiştiririm?

linki: https://github.com/hurtworldmap/hurtworldmap.github.io/blob/master/raw/lang.js

Benim fonksiyonu: Dilin

$(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() 
     }) 
    }) 
}); 

Örnek (aynı dosyada):

"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": "версия" 
     } 
    } 

cevap

2

emin değil hala eğer Buna bir cevap gerektirir, bu yüzden başkaları benzer bir sorunla karşılaşırsa bunu buraya koyarım. Ben benzer bir durumda ne yaptın

geçerli:

$(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() 
     }) 
    }) 
}); 

Bu, dil başına bir dosya verir ve dosyadan dil anahtarını kaldırabilirsiniz: Birden fazla varsa

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

ad alanları da kullanarak ad başına tek bir dosya kullanabilirsiniz:

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

DosyanızDaha sonraad alanı için anahtar içermemelidir:

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

Awesome! Dil dosyalarını ayırmak istediğim şey buydu! Eve vardığımda test edeceğim. Teşekkürler – RogerHN

+0

Şimdi denedim, yanlış bir şey yaptım düşünüyorum. Çeviriler işe yaramadı. Dosya şu şekilde olmalıdır: resGetPath '/js/languages/__lng__.json' ise js/languages ​​/ en.json? Ayrıca, dosya şu şekilde başlatılmalıdır: { "Çeviri": { "AddYourNote": "Notunuzu Ekleyin", ' – RogerHN

İlgili konular