多语言支持Cordova App

时间:2017-10-15 08:48:08

标签: javascript jquery cordova

您好我想将我的cordova移动应用程序设为多语言。 我在资源文件夹中有两个js文件{lang.en.js和lang.tr.js}。 在文件中,下面有一个字符串对象用于语言。

var strings = {
    app_name: "Capser",
    facebook_login_btn: "Login with Facebook",
    gmail_login_btn: "Login with Gmail"
}

现在我想选择语言取决于移动语言。我安装了全球化插件并在下面编写了函数。

function setLanguage() {
    if (typeof (localStorage.language) === 'undefined') {
        if (typeof (navigator.globalization) !== 'undefined') {
            navigator.globalization.getPreferredLanguage(function (language) {
                if (language.value.indexOf('en') != -1)
                    localStorage.language = 'en';                
                else
                    localStorage.language = 'tr';
            }, function () {
                localStorage.language = 'tr';
            }
            );
        }
        else if (typeof (navigator.language) !== 'undefined') {
            var language = navigator.language;

            if (language.indexOf('en') != -1)
                localStorage.language = 'en';           
            else
                localStorage.language = 'tr';
        }
        else {
            localStorage.language = 'tr';
        }
    }
}
在index.js中

首先我调用这个函数然后选择js文件。

setLanguage();
var languageScript = 'resources/lang.' + localStorage.language + '.js';

我的问题从这里开始。我想从文件中获取此字符串对象。

$.getJSON(languageScript, function (data) {
            console.log(data);
        });

我上面写的,但没有工作。如何从js文件中获取数据。

提前致谢

1 个答案:

答案 0 :(得分:0)

由于您的目标文件不是JSON,因此不应使用getJSON方法。但是如果你想要导入这个语言文件,并假设你在文件中唯一拥有的是语言翻译,那么可以选择使这些文件成为纯JSON,并按照描述使用$.getJSON导入它们。应该管用。例如,lang.en.js应该只是:

{
   app_name: "Capser",
   facebook_login_btn: "Login with Facebook",
   gmail_login_btn: "Login with Gmail"
}

然后您可以使用$.getJSON使用jQuery加载此文件,并且在其回调中,您应该获得翻译数据。