1

UI デザインに ExtJS 3.2.1 を使用してプロジェクトを開発しています。同じように国際化 (i18n) を実装したいと考えています。(プロジェクトをエクスポートせずに) ?

次のリンクを参照しました。

http://www.sencha.com/learn/Tutorial:Localizing_Ext
http://extjstutorial.org/extjs/meertalig-i18n-met-extjs-en-codeigniter/

さらに参照するために、ステップバイステップのチュートリアル/電子ブックを提案できますか?

ありがとう!

4

1 に答える 1

0

リンクに従って、Extの組み込み文字列をローカライズすることに加えて、ローカライズされた文字列を返すグローバル関数があり、文字列を表示するすべての場所でそれを呼び出します。また、ユーザーが現在選択している言語を変数とCookieに保存します。

私たちの経験から、ローカライズされた文字列をサーバーのDBに保存し、ロード時にAjax呼び出しを介してそれらを停止することをお勧めします。これにより、コードを変更せずにこれらの文字列を管理できます。

ユーザーが言語を変更すると、言語Cookieが設定され、ブラウザウィンドウ全体が再読み込みされます。

// global shortcut function for retrieving a localized string
function i18n(key, arrInsertValues) {
    return Local.getLocalizedString(key, Local.languageCode, arrInsertValues);
}

// "Local" is a simple "static" object containing methods and localization strings
Local = {

    // Default locale code - set based on cookie at the bottom of this script
    languageCode: 'en',
    languageCodeDefault: 'en',
    charset: 'utf-8',

    languages: [
        ['en', 'English', 'utf-8'],
        ['ja', '日本語', 'utf-8']
    ],

    getLocalizedString: function(key, languageCode, arrInsertValues) {
        if (!this.localizedStrings[key]) {
            // return empty string if key is undefined
            return '';
        }
        if (!this.localizedStrings[key][languageCode]) {
            // return default language string or empty string if the string for the specified language is undefined
            return this.formatString(this.localizedStrings[key][this.lcDefault] || '', arrInsertValues);
        }
        // give 'em what they asked for
        return (this.formatString(this.localizedStrings[key][languageCode], arrInsertValues));
    },


    // returns a localized string formatted to replace values {0},{1} etc with values from the passed array
    formatString: function(string, arrInsertValues) {
        var formattedString = string;
        if (arrInsertValues && arrInsertValues.constructor.toString().indexOf("Array") != -1) {
            for (var i = 0; i < arrInsertValues.length; i++) {
                formattedString = formattedString.replace('{' + i + '}', arrInsertValues[i]);
            }
        }
        return formattedString;
    },

    localizedStrings: {
        tEN: { en: 'Eng', ja: '英語' },
        tJPN: { en: 'Jpn', ja: '日本語' },            
        tYes: { en: 'Yes', ja: 'はい' },
        tNo: { en: 'No', ja: 'いいえ' },    
        tAnd: { en: 'and', ja: 'と' },
        tOr: { en: 'or', ja: 'or' },    
        tDateFormat : { en: 'Y\/m\/d - g\:iA', ja: 'G\:i - Y年m月d日' },    
        tGoodMorning: { en: 'Good morning, {0}.', ja: '{0}様、おはようございます。' }
    }
}

// this is the first script to run, so we can set default language here based on cookie
var cookie = new Ext.state.CookieProvider();
Local.languageCode = cookie.get('languageCode') ? cookie.get('languageCode') : Local.languageCodeDefault;
于 2011-07-29T06:50:13.700 に答える