1fa9ffcf1b
Uebersetzt waren bisher nur die Vue-Fenster; Terminal, Panel und Popup hatten ihre Beschriftungen hart auf Deutsch im Markup und in den Views -- ein englisches UI blieb zur Haelfte deutsch. Die Tabellen ziehen nach messages.ts um, dazu ein Vue-freier t() und ein applyI18n(), das statisches Markup ueber data-i18n-Marker beschriftet. i18n.ts bleibt der vue-i18n-Wrapper fuer die Vue-Fenster. So kommt kein Vue in die Terminal- und Panel-Bundles (Terminal 657,02 -> 657,06 kB). Neue Namensraeume: panel, popup, commands, archiveForm, search, wiki. toLocaleTimeString folgt der Sprache statt fest 'de'. Zwei Funde nebenbei: - window.localStorage wird ueber try/catch gelesen. Gesperrter Storage (privater Modus) wirft schon beim Lesen, und unter Node 22 ueberschattet ein undefiniertes globales localStorage das der Testumgebung. - Die Frontend-Tests liefen unbemerkt gegen happy-doms en-US. test-setup.ts nagelt die Sprache fest. 49 Tests (39 bestehende, 10 neue fuer Tabellen-Paritaet, t() und applyI18n).
20 lines
523 B
TypeScript
20 lines
523 B
TypeScript
/// vue-i18n-Wrapper für die Vue-Fenster (index.html). Die Tabellen liegen in
|
|
/// messages.ts und werden von der Terminal-/Panel-Schicht ohne Vue genutzt.
|
|
|
|
import { createI18n } from "vue-i18n";
|
|
|
|
import { messages, storedLocale, type Locale } from "./messages";
|
|
|
|
export const i18n = createI18n({
|
|
legacy: false,
|
|
globalInjection: true,
|
|
locale: storedLocale(),
|
|
fallbackLocale: "en",
|
|
messages,
|
|
});
|
|
|
|
export function setLocale(lang: Locale) {
|
|
i18n.global.locale.value = lang;
|
|
localStorage.setItem("lang", lang);
|
|
}
|