如何动态更改Cordova PhoneGap应用程序中的内容语言?

时间:2015-06-29 11:56:12

标签: android cordova localization cordova-plugins

我想将Cordova PhoneGap应用程序的内容更改为其他语言。由于我的应用程序包含大量要加载的动态数据,我该如何应用语言更改?

2 个答案:

答案 0 :(得分:0)

是的。在本地化的帮助下使用,您可以为文本设置不同的语言。以下是几个可以帮助你的链接

  1. i18n
  2. Localize

  3. Globalize

  4. Create custom plugin

  5. Custom pages as per language

  6. phonegap-l10n

  7. 这里的关键是要知道用户所在的语言或区域,并设置语言。 希望这有帮助。!

答案 1 :(得分:0)

添加Deep Mehta提供的信息,我对i18next.js非常满意,使用他们的AMD版本here(因为我在我的cordova应用程序中使用JQuery / Backbone),您可以通过CLI添加cordova globalization plugin

cordova plugin add cordova-plugin-globalization

你需要记住的一件事是i18next的初始化和cordova全球化的初始化是异步的 - 在DeviceReady事件触发之前不要调用全球化API,并且不要尝试获取本地化的字符串直到i18next库初始化。以下是适用的代码:

        // app initialization code. Here we'll initialize localization with the current locale 
        initialize: function (options) {

            // callback function to initialize / load the localization info
            var initialize_i18n = function (locale) {
                i18n.init({
                    lng: locale,
                    debug: true,
                    fallbackLng: 'en'
                }, function () {
                    // NOW i18next can be used
                });
            };

            // get the user's locale - mobile or web
            // ASSUMES DeviceReady() HAS ALREADY FIRED
            if (typeof navigator.globalization !== 'undefined') {
                navigator.globalization.getLocaleName(
                    function (loc) {
                        locale = loc.value.split("-")[0];
                        initialize_i18n(locale);
                    },
                    function () {console.log('Error getting locale\n'); }
                );
            } else {
                // in web browser
                lang = (navigator.languages) ? navigator.languages[0] : (navigator.language || navigator.userLanguage);
                locale = lang.split("-")[0];
                initialize_i18n(locale);
            }
    },
    // etc.