-- Dynamisches Sprachpaket-System für die Bedienoberfläche: Sprachen -- sind ab jetzt zur Laufzeit im Admin-Bereich verwaltbar (aktivieren/ -- deaktivieren, neue Sprache per Datei-Import hinzufügen) statt fest -- im Code zu stehen. Deutsch bleibt als "de"-Objekt in -- lib/i18n/dictionaries.ts die immer vollständige Basis-Sprache – sie -- braucht keine Zeilen in ui_translations, nur einen Eintrag in -- languages als Referenz für den Sprachumschalter. create table languages ( code text primary key, label text not null, is_base boolean not null default false, active boolean not null default true, -- Hash der DE-Vorlage (siehe lib/i18n/flatten.ts + lib/db/languages.ts) -- zum Zeitpunkt des letzten Imports – weicht der aktuelle Hash davon -- ab, sind seit dem Import neue Begriffe hinzugekommen ("veraltet"). -- Bei der Basis-Sprache immer null (nie veraltet, da Code = Vorlage). template_version text, updated_at timestamptz not null default now() ); -- Eine Zeile je Sprache + Übersetzungsschlüssel (z. B. -- "login.errorGeneric"), fehlende Schlüssel fallen zur Laufzeit -- automatisch auf die deutsche Vorlage zurück statt leer zu bleiben. create table ui_translations ( language_code text not null references languages(code) on delete cascade, key text not null, value text not null, primary key (language_code, key) ); insert into languages (code, label, is_base, active, template_version) values ('de', 'Deutsch', true, true, null), ('en', 'English', false, true, '2da2662b794f019f6f7dba99ef93e2035eb38d1a78bd73bdccbb6b3cab447d5d'), ('pl', 'Polski', false, true, '2da2662b794f019f6f7dba99ef93e2035eb38d1a78bd73bdccbb6b3cab447d5d');