Fix undefined S within translator

If you `require(['string'], function (stringLib) { S = stringLib; })` it is an async call and thus you need to ensure any usage of `S` happens when this is resolved.
This commit is contained in:
Ole R
2016-02-04 23:10:50 +01:00
parent 47c61e883a
commit 2bcd4e1e3f

View File

@@ -2,15 +2,19 @@
"use strict";
/* globals RELATIVE_PATH, config, define */
var S;
var S = null;
var stringDefer = null;
// export the class if we are in a Node-like system.
if (typeof module === 'object' && module.exports === translator) {
exports = module.exports = translator;
S = require('string');
stringDefer.resolve(S);
} else {
stringDefer = $.Deferred();
require(['string'], function(stringLib) {
S = stringLib;
stringDefer.resolve(S);
});
}
@@ -161,6 +165,12 @@
if (!count) {
return callback(text);
}
if (S === null) { // browser environment and S not yet initialized
// we need to wait for async require call
stringDefer.then(function () { translateKeys(keys, text, language, callback); });
return;
}
var data = {text: text};
keys.forEach(function(key) {