如何在i18next中将语言更改为多个文件而不是一个?

时间:2016-03-27 22:44:55

标签: javascript i18next

我正在使用i18next和localstorage来更改我的网站的语言(带标记的传单地图)。我将所有语言都放在一个名为lang.js的文件中。我想将它分成多个文件,每个文件都用于一种语言。我怎么能这样做?

链接到github上的语言文件: https://github.com/hurtworldmap/hurtworldmap.github.io/blob/master/raw/lang.js

我的功能:

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

语言示例(在同一文件中):

{{1}}

1 个答案:

答案 0 :(得分:3)

不确定您是否仍然需要回答这个问题,所以我只是把它放在这里以防其他人遇到类似的问题。

我在类似情况下所做的是:

$(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!
}