mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-05 23:30:36 +01:00
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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user