2

アプリのローカリゼーションを処理する単純な翻訳クラス (モジュール) があります。translate クラス内で、require 関数を使用して必要な言語モジュールをロードしています。

define(['require', 'config', 'store'],
function(require, Config, Store) {
    // Using ECMAScript 5 strict mode during development. By default r.js will ignore that.
    'use strict';

    var translation = {
        locale: null,
        name: null,
        keys: null,
        timezones: null
    };

    var languageCode = Store.getInstance().get('LanguageCode') || Config.defaultLanguageCode;

    require(['translation/' + languageCode], function(trans) {
        translation = trans;
    });

    var get = function(key) {
        return (!!translation.keys && translation.keys[key]) ? translation.keys[key] : key;
    };

    var timezone = function(key) {
        return (translation.timezones[key]) ? translation.timezones[key] : key;
    };

    return {
        _: get,
        timezone: timezone,
        timezones: function() {
            return translation.timezones;
        }
    };
});

問題は、必要な言語がロードされる前に return ステートメントが実行されることです。他のモジュールの前にロードするために、require shim に変換クラスを配置しましたが、それも機能しませんでした。

4

1 に答える 1