You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.0 KiB
82 lines
3.0 KiB
export function warn() {
|
|
if (console && console.warn) {
|
|
var _console;
|
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
if (typeof args[0] === 'string') args[0] = "react-i18next:: ".concat(args[0]);
|
|
|
|
(_console = console).warn.apply(_console, args);
|
|
}
|
|
}
|
|
var alreadyWarned = {};
|
|
export function warnOnce() {
|
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
args[_key2] = arguments[_key2];
|
|
}
|
|
|
|
if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;
|
|
if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();
|
|
warn.apply(void 0, args);
|
|
}
|
|
export function loadNamespaces(i18n, ns, cb) {
|
|
i18n.loadNamespaces(ns, function () {
|
|
if (i18n.isInitialized) {
|
|
cb();
|
|
} else {
|
|
var initialized = function initialized() {
|
|
setTimeout(function () {
|
|
i18n.off('initialized', initialized);
|
|
}, 0);
|
|
cb();
|
|
};
|
|
|
|
i18n.on('initialized', initialized);
|
|
}
|
|
});
|
|
}
|
|
|
|
function oldI18nextHasLoadedNamespace(ns, i18n) {
|
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
var lng = i18n.languages[0];
|
|
var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
|
|
var lastLng = i18n.languages[i18n.languages.length - 1];
|
|
if (lng.toLowerCase() === 'cimode') return true;
|
|
|
|
var loadNotPending = function loadNotPending(l, n) {
|
|
var loadState = i18n.services.backendConnector.state["".concat(l, "|").concat(n)];
|
|
return loadState === -1 || loadState === 2;
|
|
};
|
|
|
|
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
|
|
if (i18n.hasResourceBundle(lng, ns)) return true;
|
|
if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
|
|
if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
|
|
return false;
|
|
}
|
|
|
|
export function hasLoadedNamespace(ns, i18n) {
|
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
|
|
if (!i18n.languages || !i18n.languages.length) {
|
|
warnOnce('i18n.languages were undefined or empty', i18n.languages);
|
|
return true;
|
|
}
|
|
|
|
var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
|
|
|
|
if (!isNewerI18next) {
|
|
return oldI18nextHasLoadedNamespace(ns, i18n, options);
|
|
}
|
|
|
|
return i18n.hasLoadedNamespace(ns, {
|
|
precheck: function precheck(i18nInstance, loadNotPending) {
|
|
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
|
|
}
|
|
});
|
|
}
|
|
export function getDisplayName(Component) {
|
|
return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');
|
|
} |