Languages: the rest of Europe, which finishes the continent #118
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Postulo/postulo#118
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision
#70 asked this as its own open question — the rest of the European continent was phase 2 in
#43, was named in no milestone, and would have fallen behind Asia and South America by
default. It is answered here: Europe finishes in 0.3.0, Africa moves to 0.4.0.
The languages
Ukrainian, Turkish, Norwegian, Icelandic, Serbian, Bosnian, Albanian, Macedonian, Georgian,
Armenian, Basque, Catalan, Galician, Welsh, Luxembourgish.
With the 24 from 0.2.0 and Brazilian Portuguese from #110, that is the continent.
Why this one is cheaper than it looks
Several are a short step from a catalogue that already exists, and #110 proved the
method on Brazilian Portuguese: seed from the sibling rather than translate from English
again, because every string has already been translated once by somebody thinking about
this application, and what a near neighbour wants is that work carried across.
The rest are genuine first translations.
And #110 also proved the hazard, which is worth repeating here rather than rediscovering:
a mechanical pass over a seeded catalogue must be word-boundary anchored. Substituting
without one produced "Contmouse a termo" from contrato, and that is now a test.
What has to be checked per language, not assumed
rule is not
n != 1.scripts/messages.pywrites the slots from its own table andcheckinsists they are filled, so the table is what has to be right — and it is the one place
where copying a neighbour's line without looking makes every count on every page
ungrammatical, as nearly happened for
pt-br.Armenian its own. Serbian is written in both Cyrillic and Latin, which is a decision
about which one
srmeans before it is a translation. The bundled font stack has to drawall of them, in the browser and in the PDF WeasyPrint renders: a missing glyph is a box,
and a box on somebody's CV is worse than English.
USE_L10N, and nobody looksat them until they are wrong.
so every built-in theme carries the section titles for every language here.
marked with the language it is in, so a screen reader pronounces it properly rather than
reading Georgian with English rules.
What it does not cost
Every user-facing string is already wrapped, and
scripts/messages.py extractwrites a slotin every catalogue. A language is a catalogue and nothing else — no code path changes. First
drafts are machine-assisted and flagged
draftuntil a speaker has read them(
docs/TRANSLATING.md), on the principle that a wrong translation somebody can fix beats anEnglish gap nobody notices.
Right-to-left is not needed here: every language on this list is written left to right.
#67 is closed regardless, so Arabic is not blocked when it arrives with #70 in 0.4.0.
Classification
Enhancement. Not breaking: more catalogues, no code path changes.