dfg_3dviewer_js_library/viewer/i18n-utils.js
2026-06-25 09:11:23 +02:00

48 lines
1.2 KiB
JavaScript

import { VIEWER_I18N } from "./i18n.js";
import { core } from './core.js';
const DEFAULT_LANG = "en";
export const t=function(key, varsOrFallback = {}, maybeFallback = "") {
const lang = ["pl", "de"].includes(core.currentLanguage)
? core.currentLanguage
: "en";
const dictionary = VIEWER_I18N[lang] || VIEWER_I18N.en;
const value = String(key || "")
.split(".")
.reduce(
(acc, part) =>
acc && typeof acc === "object" ? acc[part] : undefined,
dictionary
);
let vars = {};
let fallback = "";
if (typeof varsOrFallback === "string") {
fallback = varsOrFallback;
} else {
vars = varsOrFallback || {};
fallback = maybeFallback;
}
const template = typeof value === "string" ? value : fallback || key;
return template.replace(/\{(\w+)\}/g, (_, v) => {
let val = vars[v];
if (typeof val === "boolean") {
val = t(`state.${val ? "enabled" : "disabled"}`);
} else if (typeof val === "string") {
if (val === "enabled" || val === "disabled") {
val = t(`state.${val}`);
} else if (val.startsWith("state.")) {
val = t(val);
}
}
return val ?? `{${v}}`;
});
}