Gerichtnamen, Essenszeiten und Allergen-/Zusatzstoff-Bezeichnungen sind jetzt genauso dynamisch mehrsprachig wie die Bedienoberfläche aus v1.10.0, statt fest auf Englisch/Polnisch begrenzt zu sein. Neue Übersetzungstabellen ersetzen die alten name_en/name_pl-Spalten, DeepL-Auto-Übersetzung und CSV-Import/-Export unterstützen jetzt beliebig viele aktive Sprachen.
72 lines
3.6 KiB
SQL
72 lines
3.6 KiB
SQL
-- Teil 2 des "mehrsprachig variabel"-Umbaus: Speiseplan-Inhalte
|
||
-- (Gerichte, Essenszeiten, Allergene, Zusatzstoffe) bekommen eine
|
||
-- Übersetzungstabelle je Ressource statt fester name_en/name_pl-
|
||
-- Spalten (Teil 1, v1.10.0, hat dasselbe schon für die
|
||
-- Bedienoberfläche gemacht). Deutsch bleibt die Basis-Spalte
|
||
-- (name/label) auf der jeweiligen Haupttabelle.
|
||
--
|
||
-- WICHTIG bei Deployments mit echten Daten: vor dem Einspielen ein
|
||
-- Backup ziehen (siehe DEPLOYMENT.md, Abschnitt "Backup") – Schritt 3
|
||
-- entfernt die alten name_en/name_pl-Spalten unwiderruflich, nachdem
|
||
-- Schritt 2 ihren Inhalt in die neuen Tabellen übernommen hat.
|
||
|
||
-- ---------- Schritt 1: neue Tabellen ----------
|
||
create table dish_translations (
|
||
dish_id uuid not null references dishes(id) on delete cascade,
|
||
language_code text not null references languages(code) on delete cascade,
|
||
name text not null,
|
||
primary key (dish_id, language_code)
|
||
);
|
||
|
||
create table section_translations (
|
||
section_key text not null references sections(key) on delete cascade,
|
||
language_code text not null references languages(code) on delete cascade,
|
||
name text not null,
|
||
primary key (section_key, language_code)
|
||
);
|
||
|
||
-- allergens.code/additives.code sind vom Admin umbenennbar (Primary
|
||
-- Key), anders als dishes.id/sections.key – "on update cascade" nötig,
|
||
-- damit eine Umbenennung des Kürzels nicht die Übersetzungszeilen
|
||
-- verwaist.
|
||
create table allergen_translations (
|
||
allergen_code text not null references allergens(code) on delete cascade on update cascade,
|
||
language_code text not null references languages(code) on delete cascade,
|
||
name text not null,
|
||
primary key (allergen_code, language_code)
|
||
);
|
||
|
||
create table additive_translations (
|
||
additive_code text not null references additives(code) on delete cascade on update cascade,
|
||
language_code text not null references languages(code) on delete cascade,
|
||
name text not null,
|
||
primary key (additive_code, language_code)
|
||
);
|
||
|
||
-- ---------- Schritt 2: bestehende Übersetzungen übernehmen ----------
|
||
insert into dish_translations (dish_id, language_code, name)
|
||
select id, 'en', name_en from dishes where name_en is not null and trim(name_en) != '';
|
||
insert into dish_translations (dish_id, language_code, name)
|
||
select id, 'pl', name_pl from dishes where name_pl is not null and trim(name_pl) != '';
|
||
|
||
insert into section_translations (section_key, language_code, name)
|
||
select key, 'en', label_en from sections where label_en is not null and trim(label_en) != '';
|
||
insert into section_translations (section_key, language_code, name)
|
||
select key, 'pl', label_pl from sections where label_pl is not null and trim(label_pl) != '';
|
||
|
||
insert into allergen_translations (allergen_code, language_code, name)
|
||
select code, 'en', name_en from allergens where name_en is not null and trim(name_en) != '';
|
||
insert into allergen_translations (allergen_code, language_code, name)
|
||
select code, 'pl', name_pl from allergens where name_pl is not null and trim(name_pl) != '';
|
||
|
||
insert into additive_translations (additive_code, language_code, name)
|
||
select code, 'en', name_en from additives where name_en is not null and trim(name_en) != '';
|
||
insert into additive_translations (additive_code, language_code, name)
|
||
select code, 'pl', name_pl from additives where name_pl is not null and trim(name_pl) != '';
|
||
|
||
-- ---------- Schritt 3: alte Spalten entfernen ----------
|
||
alter table dishes drop column name_en, drop column name_pl;
|
||
alter table sections drop column label_en, drop column label_pl;
|
||
alter table allergens drop column name_en, drop column name_pl;
|
||
alter table additives drop column name_en, drop column name_pl;
|