Files
ai-control/src/i18n.ts
T
marcusH 1fa9ffcf1b i18n bis in die Terminal- und Panel-Fenster
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).
2026-07-20 22:36:19 +02:00

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);
}