Languages: every official language of the European Union for 0.2.0, the rest of the world in phases #43

Closed
opened 2026-09-05 18:10:38 +00:00 by tiagoagueda · 0 comments
Owner

Decision

for the initial languages, i decided to expand the scope for the 0.2.0 target to all languages in the european union. for later releases in phases all european continent, africa, asia, remaining of the world

What exists today

English (en-GB) is the source language; French (fr-FR) and Portuguese (pt-PT) have catalogues under src/postulo/locale/, filled by contributors as docs/TRANSLATING.md describes. Every user-facing string is wrapped, so a new language is a catalogue and nothing else. The interface language is chosen per person under Settings > Language and time; the instance default is a server setting.

Shape

Phase 1, for 0.2.0: the 24 official languages of the European Union. Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Irish, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovene, Spanish and Swedish.

  1. LANGUAGES in settings lists all 24 with their native names; makemessages produces a catalogue for each; the language picker offers what has a catalogue, and shows the completion percentage beside a language that is only partly translated, so nobody is surprised by English in the gaps.
  2. Translation itself. Machine-assisted first drafts for every catalogue, marked fuzzy until a speaker has read them, so a language is usable on day one and honest about its state. The starter industries (#39) and the notification texts are part of the same catalogues. Pluralisation rules per language come from Django; dates, numbers and first day of the week from USE_L10N formats, checked for each.
  3. Right-to-left is not in phase 1 (no EU language needs it) but the stylesheet is checked now with dir="rtl" so phase 3 is a catalogue and not a redesign.
  4. Documents. A CV or letter is rendered in the document's language (CV.language), independent of the interface; the built-in themes must carry the section titles for every phase-1 language.
  5. The wiki stays in English; a README paragraph per language that says what Postulo is and links to the English wiki is the phase-1 documentation goal.

Phase 2: the rest of the European continent (Norwegian, Icelandic, Ukrainian, Serbian, Bosnian, Albanian, Macedonian, Turkish, Georgian, Armenian, Basque, Catalan, Galician, Welsh, Luxembourgish, and so on). Phase 3: Africa (Arabic, Swahili, Amharic, Hausa, Yoruba, Igbo, Zulu, Afrikaans, Somali, and so on; the first right-to-left language arrives here). Phase 4: Asia (Hindi, Bengali, Urdu, Mandarin, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Tagalog, Tamil, Telugu, Persian, Hebrew, and so on). Phase 5: the rest of the world.

Classification

Enhancement, and a scope decision recorded here so it is not lost. Not breaking: more catalogues, no code path changes.

Open questions

  1. Machine-assisted drafts for all 24 in 0.2.0, or scaffolding for all and translations for the ones a speaker is available for? Proposal: drafts for all, marked fuzzy; a wrong translation somebody can fix beats an English gap nobody notices.
  2. Which translation memory or tool for contributors: Weblate (self-hosted, fits the project), or plain .po files in pull requests? Proposal: .po files first; Weblate when there are more than a handful of translators.
## Decision > for the initial languages, i decided to expand the scope for the 0.2.0 target to all languages in the european union. for later releases in phases all european continent, africa, asia, remaining of the world ## What exists today English (en-GB) is the source language; French (fr-FR) and Portuguese (pt-PT) have catalogues under `src/postulo/locale/`, filled by contributors as `docs/TRANSLATING.md` describes. Every user-facing string is wrapped, so a new language is a catalogue and nothing else. The interface language is chosen per person under *Settings > Language and time*; the instance default is a server setting. ## Shape **Phase 1, for 0.2.0: the 24 official languages of the European Union.** Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Irish, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovene, Spanish and Swedish. 1. `LANGUAGES` in settings lists all 24 with their native names; `makemessages` produces a catalogue for each; the language picker offers what has a catalogue, and shows the completion percentage beside a language that is only partly translated, so nobody is surprised by English in the gaps. 2. **Translation itself.** Machine-assisted first drafts for every catalogue, marked `fuzzy` until a speaker has read them, so a language is usable on day one and honest about its state. The starter industries (#39) and the notification texts are part of the same catalogues. Pluralisation rules per language come from Django; dates, numbers and first day of the week from `USE_L10N` formats, checked for each. 3. **Right-to-left** is not in phase 1 (no EU language needs it) but the stylesheet is checked now with `dir="rtl"` so phase 3 is a catalogue and not a redesign. 4. **Documents.** A CV or letter is rendered in the *document's* language (`CV.language`), independent of the interface; the built-in themes must carry the section titles for every phase-1 language. 5. **The wiki** stays in English; a `README` paragraph per language that says what Postulo is and links to the English wiki is the phase-1 documentation goal. **Phase 2**: the rest of the European continent (Norwegian, Icelandic, Ukrainian, Serbian, Bosnian, Albanian, Macedonian, Turkish, Georgian, Armenian, Basque, Catalan, Galician, Welsh, Luxembourgish, and so on). **Phase 3**: Africa (Arabic, Swahili, Amharic, Hausa, Yoruba, Igbo, Zulu, Afrikaans, Somali, and so on; the first right-to-left language arrives here). **Phase 4**: Asia (Hindi, Bengali, Urdu, Mandarin, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Tagalog, Tamil, Telugu, Persian, Hebrew, and so on). **Phase 5**: the rest of the world. ## Classification Enhancement, and a scope decision recorded here so it is not lost. Not breaking: more catalogues, no code path changes. ## Open questions 1. Machine-assisted drafts for all 24 in 0.2.0, or scaffolding for all and translations for the ones a speaker is available for? Proposal: drafts for all, marked fuzzy; a wrong translation somebody can fix beats an English gap nobody notices. 2. Which translation memory or tool for contributors: Weblate (self-hosted, fits the project), or plain `.po` files in pull requests? Proposal: `.po` files first; Weblate when there are more than a handful of translators.
tiagoagueda added this to the 0.2.0 milestone 2026-09-05 18:10:38 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Postulo/postulo#43
No description provided.