fix(l10n): translate the saved-device strings

22 keys carried the English text in every locale. Copied English does not
look unfinished — it looks shipped: the key is present and non-empty, so
`validate` passes and it reaches users as a French or Russian build that
silently speaks English. 21 came in with the saved-devices work; one was
added alongside the send-cancellation fix by copying its neighbours.

Translations follow the vocabulary already established in the file —
appareil enregistré, dispositivo guardado, Kopplung, Mémoriser/Ricorda/
Zapamiętaj, and European Portuguese ficheiros/guardado.

Only format_separated_pair and format_separated_triple still read the same
in every locale. They are pure punctuation ("{first} · {second}") with no
words to translate.

Documents the rule in the README, including why it is worse than a missing
key and the trap that spread it here: copying a neighbour's shape without
checking the neighbour was translated.
This commit is contained in:
2026-08-13 22:33:41 +02:00
parent 6b6d5f158d
commit 442a533eae
10 changed files with 360 additions and 340 deletions

View File

@@ -56,6 +56,26 @@ regenerate. Regenerated output is deterministic (sorted keys), so diffs stay sma
- **`plural`** — per language, per [CLDR category](https://cldr.unicode.org/index/cldr-spec/plural-rules)
(`zero`, `one`, `two`, `few`, `many`, `other`). `other` is always required.
### Every language gets a real translation
**Never copy the English text into another language as a placeholder.** A key is not done
until every language in `supportedLanguages` has text actually written in that language.
Copied English does not look unfinished — it looks shipped. Nothing flags it, because the
key is present and non-empty, so it passes `validate` and reaches users as a French or
Russian build that silently speaks English. It is far harder to find later than a missing
key would have been.
If you cannot produce a translation, say so in the PR and leave the key out of the release
rather than filling it with English. Two narrow exceptions, both of which must be obvious
from the text itself:
- Pure punctuation or layout templates with no words (`"{first} · {second}"`).
- Proper nouns and brand names that are identical in every language.
When adding a key next to existing ones, check that the neighbours are translated before
copying their shape — a placeholder tends to be copied into the keys added after it.
### Placeholders
Write named tokens `{count}`, `{name}` in text. The generator converts them to the right