opendash
Version:
open.DASH data visualization framework
65 lines • 2.64 kB
JavaScript
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
import i18next from "i18next";
import { initReactI18next } from "react-i18next";
export function createI18n(languages, translationResolvers) {
var i18n = i18next.createInstance();
var l = window.localStorage.getItem("opendash:language")
? JSON.parse(window.localStorage.getItem("opendash:language"))
: "en";
var fallbackLng = { default: ["en"] };
var availableLanguages = __spreadArrays(["en"], languages.map(function (l) { return l.key; }));
var availableNamespaces = Array.from(translationResolvers.keys())
.map(function (ns) { return ns.split(",")[1]; })
.filter(function (v, i, a) { return a.indexOf(v) === i; });
languages.forEach(function (lang) {
fallbackLng[lang.key] = [lang.fallback, "en"];
});
i18n
.use(initReactI18next)
.use({
type: "backend",
init: function (services, backendOptions, i18nextOptions) { },
read: function (language, namespace, callback) {
var resolver = translationResolvers.get([language, namespace].join(","));
if (!resolver) {
return callback(new Error("Missing Translation Resolver for " + language + " " + namespace));
}
Promise.resolve(resolver()).then(function (translation) {
var _a;
try {
if (((_a = translation) === null || _a === void 0 ? void 0 : _a.default) &&
(Object.keys(translation).length === 1 ||
translation.__esModule === true)) {
callback(null, translation.default);
}
else {
callback(null, translation);
}
}
catch (error) {
callback(error);
}
}, function (error) {
callback(error);
});
},
})
.init({
lng: l,
fallbackLng: fallbackLng,
debug: false,
ns: availableNamespaces,
whitelist: availableLanguages,
interpolation: {
escapeValue: false,
},
});
return i18n;
}
//# sourceMappingURL=createI18n.js.map