-- Multi-language menu support (PRD §13). Translations are stored inline as -- JSONB keyed by language code rather than a separate table — menu content -- is small and always read/written as a whole category+items tree, so a -- join-free read matches how the public page already fetches it. alter table restaurants add column if not exists enabled_languages text[] not null default array['tr']; alter table menu_categories add column if not exists translations jsonb not null default '{}'::jsonb; -- shape: { "en": { "name": "...", "description": "..." }, "de": {...} } alter table menu_items add column if not exists translations jsonb not null default '{}'::jsonb; -- shape: { "en": { "name": "...", "description": "..." }, "de": {...} }