【问题标题】:Internationalisation support for cordova 3.5.0对科尔多瓦 3.5.0 的国际化支持
【发布时间】:2014-08-12 11:38:17
【问题描述】:

我是 CORDOVA 3.5.0 的新手。我使用 Cordova 开发了一个应用程序,我想在我的应用程序上实现国际化。 请建议如何做同样的事情。

提前致谢

【问题讨论】:

标签: javascript android jquery-mobile cordova-3


【解决方案1】:

一些翻译的代码:

1.使用

app.util.I18n.translate(menu_title)

2.放在你的初始化部分

在初始化时从cordova获取默认语言:

navigator.globalization.getPreferredLanguage(
    function (language) {
        //alert(language.value);
        app.common.language=language.value.toLowerCase().substring(0,2);
        //alert(app.common.language);
        if(app.util.I18n.getTranslationsNames().indexOf(app.common.language) == -1){
            app.common.language = app.util.I18n.getDefaultLanguage();
        }

        inicializacionI18n();
    },
    function () {
        app.common.language = app.util.I18n.getDefaultLanguage();
        inicializacionI18n();
    }
 );
  1. 翻译功能:

app.util.I18n = { 单例:真的,

    config : {
        defaultLanguage : 'en',
        availableLanguages: ['en', 'es'],
        translations : {
          'en' : {
                // Menu
                'menu_title'            : 'Welcome on board {0}',
                'menu_guest'            : 'guest'
            },
          'es' : {
                // Menu
                'menu_title'            : 'Bienvenido a bordo {0}',
                'menu_guest'            : 'invitado',
            }           
        }
    },

    constructor: function(config) {
        this.initConfig(config);
        this.callParent([config]);
    },

    getDefaultLanguage: function() {
        return this.config.defaultLanguage;
    },

    getLanguage: function() {
        if(app.common.language == undefined){
            return this.config.defaultLanguage;
        }
        return app.common.language;
    },

    getTranslations: function() {
        return this.config.translations;
    },

    getTranslationsNames: function() {
        return this.config.availableLanguages;
    },

    translate: function (key) {

        // Translate
        //alert(key + "-" +app.common.language);
        if(app.common.language == undefined){
            app.common.language=this.getDefaultLanguage();
        }
        var translation = "[" + key + "]";
        if (this.getTranslations()[app.common.language][key] === undefined) {

            // Key not found in language : tries default one
            if (this.getTranslations()[this.getDefaultLanguage()][key] !== undefined) {
                translation = this.getTranslations()[this.getDefaultLanguage()][key];
            }

        } else {

            // Key found
            translation = this.getTranslations()[app.common.language][key];
        }

        // If there is more than one argument : format string
        if (arguments.length > 1) {

            var tokenCount = arguments.length - 2;
            for( var token = 0; token <= tokenCount; token++ )
            {
                translation = translation.replace( new RegExp( "\\{" + token + "\\}", "gi" ), arguments[ token + 1 ] );
            }

        }

        return translation;
    },

    format: function(text) {
        var tokenCount = arguments.length - 2;
        for( var token = 0; token <= tokenCount; token++ )
        {
            text = text.replace( new RegExp( "\\{" + token + "\\}", "gi" ), arguments[token + 1] );
        }
        return text;
    }
};

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 2019-08-13
    • 1970-01-01
    • 2020-05-16
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多