Initial commit

This commit is contained in:
Robert Nasarek 2026-06-25 09:11:23 +02:00
commit 05c65aad4d
155 changed files with 93617 additions and 0 deletions

48
viewer/i18n-utils.js Normal file
View file

@ -0,0 +1,48 @@
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}}`;
});
}