Every menu has an original language (source_locale) — the language the
source texts are entered in. Under the hood it works like this:
{warning} A special case after an AI scan: if the paper menu was a mix of languages (say, English names with Vietnamese descriptions), the menu has no single original. Tidy up the texts and add the languages you need via translation — from there everything works as usual.
{info} Every rule below follows from this model: a field never has "two originals", and a translation can't exist without an original — which is why new items are created only in the original language.
The editor header has the content language switcher: it decides which language you're currently viewing and editing the menu texts in. The list is split into two groups:

Tap a language under "Other languages" and confirm — the menu's entire current content goes off for a background AI translation (queued). The editor does not switch into an empty language: the language is born already filled in, once the translation is ready.
{info} An AI translation is a good-quality draft, not a guarantee: proofread terminology and brand names. Any string can be fixed by hand — see below.
Switch the active language to the target one and edit a dish's name/description —
a translation is saved in that language without touching the original. On the
guest menu, ?lang=<locale> shows the translation.
If a field isn't translated into the requested language, the original-language
text is shown. Example: the name is translated to vi but the description
isn't → on ?lang=vi the name is Vietnamese, the description is the original.
There are never empty holes in the menu.
New sections, dishes, modifier groups and options can only be created while the editor is switched to the original language. In a translation language the add buttons are disabled, and the hint names the original language.
Why: an item created "inside a translation" would have no source string — in every other language (and on the kitchen ticket, which freezes names at order time) it would come out nameless.
{warning} Only creating is blocked. Renaming and editing existing texts works in any language — that's what translating is.
The action menu of a translated language has "Make this the original language". Condition: the target language must be fully translated (every source field) — otherwise the operation is rejected. After the change, existing translations are kept, and new items are written in the new original.