У меня есть простой класс перевода (модуль), который обрабатывает локализацию для моего приложения. Внутри класса translate я загружаю необходимые языковые модули с требуемой функцией.Требование: Ожидание выполнения функции внутри модуля
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 выполняется до того, как загружен нужный язык. Я поместил класс перевода в требуемую прокладку, чтобы загрузить его перед другими модулями, но это тоже не сработало.
вы должны проверить [i18n requirejs плагин] (https://github.com/requirejs/i18n) это сделает вашу жизнь легко – sergiofbsilva
Спасибо. Я это проверю. – 3rfan