Translations
Snapshot creates a separate file for each language, such as translations/en-US.yaml and translations/fr-FR.yaml. Each file contains that language’s custom strings captured from the source instance.
translations/fr-FR.yaml:
language: fr-FRtranslations: welcome_banner: Bienvenue save_button: EnregistrerThe filename must match language. Use a language code supported by the admin app’s language picker.
Literal strings
Section titled “Literal strings”The map is flat. Dots in keys are literal characters, not nested paths. Keys may be empty and can contain up to 255 Unicode code points. Values are literal strings. Keys and values do not support environment placeholders.
An empty or omitted translations map requests removal of that language’s stored strings.
Removing strings or language files
Section titled “Removing strings or language files”When translations is listed in the manifest, apply reads all language files in translations/. A key missing from its language file requests deletion of that string. A missing language file requests deletion of all custom strings for that language. These deletions require --destructive.
Keep the other language files in the tree when deploying changes to one language. They do not need to be edited.
Rename a key
Section titled “Rename a key”The database may treat keys that differ only in case or accents as the same key. On a case-insensitive target, a case-only rename in one apply returns CONFIG_INVALID, even with --destructive.
Use two reviewed applies for that rename. First remove the old key on the source instance, capture a snapshot, and apply with --destructive. After confirming its deletion on the target, add the differently cased key on the source, capture again, and apply. The translation is absent between those runs, so coordinate that interval with its consumers.