Choose the next language by how many people speak it, not by which continent it is on #269

Closed
opened 2026-09-17 19:43:28 +00:00 by tiagoagueda · 6 comments
Owner

Final decision on translations (maintainer, 2026-10-01) changes what this issue schedules: see the comment of that date below. Where the text here and that comment disagree, the comment holds.

#71 (Languages: Asia and South America) was merged into this issue on 2026-09-29.
Its languages are placed in the tiers below (the ones this issue had not named are marked
from #71), and what it asked of those catalogues beyond translation is kept at the end
under From #71. What has changed since this was written is under Since this was
written
.

Decision

Which language Postulo learns next is decided by how many people speak it, not by which
continent it is on. #70, #71 and #72 divided the world into Africa, Asia and South America,
and the rest; that division is replaced by this ordering, and those three issues are
re-scoped below rather than closed.

Why geography failed, concretely

Russian has no catalogue. Roughly 255 million speakers, and it is named in none of the
three issues — not in Africa, not in "Asia and South America", not in "the rest of the
world". Russia straddles two continents and each list assumed the other carried it. It is not
in src/postulo/locale/ at all.

That is not an oversight to patch; it is what happens when the organising principle is a map.
A continent is also not a unit of work: #70 is 29 catalogues at about 1,790 strings each —
roughly 52,000 translations — for a milestone due in twenty-five days that holds
twenty-four other issues, while the single largest sweep this project has ever done was 110
strings across 36 languages.

Ordering by speakers spends the same effort on more people, and it cannot lose a language
between two lists.

Where the catalogues actually stand

  • 39 filled, all of Europe and the Caucasus: bg bs ca cs cy da de el es et eu fi fr_FR ga gl hr hu hy is it ka lb lt lv mk mt nb nl pl pt_BR pt_PT ro sk sl sq sr sv tr uk
  • 29 scaffolded and empty, the African set from #70: af ak am ar bm ee ff ha ig kab ln mg nr ny om rw sn so ss st sw ti tn ts ve wo xh yo zu
  • Everything else has no catalogue at all — no ru, zh, hi, bn, ja, ko, vi,
    id, ur, fa, th.

An empty catalogue costs nothing, because accounts/forms.py::language_choices does not
offer a language until somebody starts it. That is what makes this re-ordering free: no
half-finished language is ever visible to anybody.

Two gates that outrank the speaker count

Speaker order sets the priority. It does not override these, and the current plan violates
both.

Fonts (#74). Han, Devanagari, Bengali, Tamil, Thai, Khmer and Ge'ez need glyphs that ship
— #74's title says it: a declared package is not a drawn glyph. Mandarin has more speakers
than anything else here and still waits, because a page of tofu boxes is worse than the same
page in English.

Right-to-left (#73, #67). Arabic, Urdu, Persian and Hebrew need the layout before the
catalogue. ar is currently in #70 at 0.4.0, while the RTL layout work is at 0.6.0 — the
first right-to-left language is scheduled two milestones before the thing it depends on. That
is a bug in the plan regardless of which ordering wins.

The tiers

Speaker figures are approximate and include second-language speakers; they order the list,
they are not a promise.

Tier 1 — 0.4.0. Nothing blocks these.

Latin or Cyrillic, no new font work, no RTL.

  • Russian ~255M — new catalogue. Cyrillic is already proven by bg, mk, sr, uk.
  • Indonesian ~200M — new.
  • Vietnamese ~85M — new; Latin, heavy diacritics.
  • Filipino / Tagalog ~83M — new.
  • Malay, Uzbek and Kazakh (Cyrillic, with an official move to Latin under
    way) — new; from #71.
  • Quechua, Guaraní and Aymara — new; from #71, which said they may be
    pulled forward rather than wait on fonts they do not need.
  • Latin American Spanish — the regional variants as catalogues of their own; from
    #71
    . (pt-BR already exists: filled, draft.)
  • Hausa ~80M and Swahili ~72M — ha and sw already scaffolded.
  • The rest of the Latin-script African set already scaffolded: Yoruba, Igbo, Zulu, Xhosa,
    Afrikaans, Somali, Oromo, Kinyarwanda, Shona, Sesotho, Setswana, Wolof, Malagasy and the
    others.

Tier 2 — 0.5.0, gated on #74.

  • Mandarin Chinese ~1.1B — simplified and traditional are two catalogues.
  • Hindi ~610M, Bengali ~280M.
  • Japanese ~125M, Korean ~82M.
  • Marathi, Telugu, Tamil, Punjabi, Gujarati, Kannada.
  • Thai ~60M.
  • Nepali (Devanagari), Sinhala, Burmese, Khmer and Lao — from #71;
    each needs its script drawn.
  • Amharic and Tigrinya — Ge'ez script; carved out of #70, which cannot reach them
    before the fonts land.

Tier 3 — 0.6.0, gated on #73 and #67.

  • Arabic ~400M — carved out of #70, where it is currently scheduled ahead of its layout.
  • Urdu ~230M, Persian ~80M, Hebrew.
  • Tamazight / Kabyle (kab) — also carved out of #70.

1.0.0

  • #101, the PALOP national languages, unchanged — it is a commitment about honesty regarding
    machine translation, not a place in this ordering.
  • The long tail as a process rather than a list: #72's second half, which is the part of
    that issue worth keeping.

What changes on the three existing issues

  • #70 stays at 0.4.0 and narrows to the Latin-script African languages. ar, kab,
    am and ti leave it for Tiers 2 and 3, so it can close when the ones that are not
    blocked are done.
  • #71 moves to 0.5.0 — its Asian catalogues are the font-gated tier. Its RTL members
    (ur, fa, he) move to Tier 3. Quechua, Guaraní and Aymara are Latin-script and may be
    pulled into Tier 1 by whoever starts it. Merged into this issue on 2026-09-29.
  • #72 moves to 0.6.0, and should be re-read as the process issue it half already is:
    a speaker adding a language without waiting for a developer. That is what makes the tail
    reachable at all, and Weblate is already running for it.

What does not change

  • A language is draft until a speaker reviews it, and stays out of language_choices until
    somebody starts it.
  • The working set while developing is still en / fr-fr / pt-pt, with the full sweep on a
    release commit.
  • tests/test_translations.py::test_every_european_union_language_stays_complete still hard-
    gates the 24 EU languages on every commit, and its conflict with the three-language working
    rule is still unresolved. This issue does not fix that and should not be read as having
    done so.

Since this was written

Facts that changed after 2026-09-17, noted at the merge. The tiers above are left as they
were decided.

  • Fonts: #74 closed on 2026-09-28. CJK is an opt-in build argument on the image, not a
    default. manage.py check_fonts, and a row on Server settings → Overview, say which
    scripts the offered languages need and whether the running instance can draw them; the
    document themes name a per-script fallback. What a Tier 2 language waits on is its script
    showing as drawable there, not #74.
  • Right-to-left: worth a deliberate look. The layout this gate waits on is #67, which
    closed in 0.3.0, and #70's first comment says Arabic is exercised end to end. #73 is the
    phone layout, not direction; it names #67 only because both are layout work. If nothing
    else is missing, Tier 3 is not blocked the way the gate above says. Not decided here.
  • Milestones moved. 0.4.0 has nothing open, and none of Tier 1 was started: ha and sw
    are still empty, and there is no ru, id, vi or fil. #70 moved to 1.0.0 on
    2026-09-21, and its comment notes that the carved-out am, ti, ar and kab now land
    before the Latin-script set they came from. This issue moved from 0.4.0 to 0.5.0 on
    2026-09-29, the milestone #71 was already in.

From #71: what these catalogues need beyond a translation

#71's decision was "milestone for 0.4.0 - all languages from Asia and South America"; the
ordering above replaced it. Its list of what was new, with where each point stands:

  1. Right-to-left again, for Hebrew, Persian and Urdu. The layout came with #67, so these
    are catalogues (Tier 3).
  2. Scripts that need real font coverage: CJK, Devanagari, Thai, Khmer, Burmese. A glyph
    that does not draw is a box on somebody's CV. The check exists since #74 (above); each
    language still has to pass it.
  3. Languages with no plural distinction at all (Chinese, Japanese, Korean, Vietnamese,
    Thai): nplurals=1, which the tooling has to accept as readily as Arabic's six. It
    already carries one-form rules for Wolof, Igbo, Shona and Bamanankan (#70).
  4. Word wrapping and line breaking for CJK and Thai, in the browser and in WeasyPrint.
    Neither breaks on spaces, and a CV that wraps in the wrong place looks careless. Open.
  5. Regional variants as first-class catalogues — pt-BR, the Latin American Spanish
    variants, simplified and traditional Chinese — which the language picker has to present
    without turning into a list nobody can scan. "Ficheiro" and "arquivo" are not the same
    word to the person reading them. pt-BR is the first; the picker question is open.
> **Final decision on translations (maintainer, 2026-10-01)** changes what this issue schedules: see the comment of that date below. Where the text here and that comment disagree, the comment holds. > **#71 (*Languages: Asia and South America*) was merged into this issue on 2026-09-29.** > Its languages are placed in the tiers below (the ones this issue had not named are marked > *from #71*), and what it asked of those catalogues beyond translation is kept at the end > under **From #71**. What has changed since this was written is under **Since this was > written**. ## Decision Which language Postulo learns next is decided by **how many people speak it**, not by which continent it is on. #70, #71 and #72 divided the world into Africa, Asia and South America, and the rest; that division is replaced by this ordering, and those three issues are re-scoped below rather than closed. ## Why geography failed, concretely **Russian has no catalogue.** Roughly 255 million speakers, and it is named in none of the three issues — not in Africa, not in "Asia and South America", not in "the rest of the world". Russia straddles two continents and each list assumed the other carried it. It is not in `src/postulo/locale/` at all. That is not an oversight to patch; it is what happens when the organising principle is a map. A continent is also not a unit of work: #70 is 29 catalogues at about 1,790 strings each — roughly **52,000 translations** — for a milestone due in twenty-five days that holds twenty-four other issues, while the single largest sweep this project has ever done was 110 strings across 36 languages. Ordering by speakers spends the same effort on more people, and it cannot lose a language between two lists. ## Where the catalogues actually stand - **39 filled**, all of Europe and the Caucasus: `bg bs ca cs cy da de el es et eu fi fr_FR ga gl hr hu hy is it ka lb lt lv mk mt nb nl pl pt_BR pt_PT ro sk sl sq sr sv tr uk` - **29 scaffolded and empty**, the African set from #70: `af ak am ar bm ee ff ha ig kab ln mg nr ny om rw sn so ss st sw ti tn ts ve wo xh yo zu` - **Everything else has no catalogue at all** — no `ru`, `zh`, `hi`, `bn`, `ja`, `ko`, `vi`, `id`, `ur`, `fa`, `th`. An empty catalogue costs nothing, because `accounts/forms.py::language_choices` does not offer a language until somebody starts it. That is what makes this re-ordering free: no half-finished language is ever visible to anybody. ## Two gates that outrank the speaker count Speaker order sets the priority. It does not override these, and the current plan violates both. **Fonts (#74).** Han, Devanagari, Bengali, Tamil, Thai, Khmer and Ge'ez need glyphs that ship — #74's title says it: *a declared package is not a drawn glyph*. Mandarin has more speakers than anything else here and still waits, because a page of tofu boxes is worse than the same page in English. **Right-to-left (#73, #67).** Arabic, Urdu, Persian and Hebrew need the layout before the catalogue. **`ar` is currently in #70 at 0.4.0, while the RTL layout work is at 0.6.0** — the first right-to-left language is scheduled two milestones before the thing it depends on. That is a bug in the plan regardless of which ordering wins. ## The tiers Speaker figures are approximate and include second-language speakers; they order the list, they are not a promise. ### Tier 1 — 0.4.0. Nothing blocks these. Latin or Cyrillic, no new font work, no RTL. - **Russian** ~255M — new catalogue. Cyrillic is already proven by `bg`, `mk`, `sr`, `uk`. - **Indonesian** ~200M — new. - **Vietnamese** ~85M — new; Latin, heavy diacritics. - **Filipino / Tagalog** ~83M — new. - **Malay**, **Uzbek** and **Kazakh** (Cyrillic, with an official move to Latin under way) — new; *from #71*. - **Quechua**, **Guaraní** and **Aymara** — new; *from #71*, which said they may be pulled forward rather than wait on fonts they do not need. - **Latin American Spanish** — the regional variants as catalogues of their own; *from #71*. (**pt-BR** already exists: filled, `draft`.) - **Hausa** ~80M and **Swahili** ~72M — `ha` and `sw` already scaffolded. - The rest of the Latin-script African set already scaffolded: Yoruba, Igbo, Zulu, Xhosa, Afrikaans, Somali, Oromo, Kinyarwanda, Shona, Sesotho, Setswana, Wolof, Malagasy and the others. ### Tier 2 — 0.5.0, gated on #74. - **Mandarin Chinese** ~1.1B — simplified and traditional are two catalogues. - **Hindi** ~610M, **Bengali** ~280M. - **Japanese** ~125M, **Korean** ~82M. - **Marathi, Telugu, Tamil, Punjabi, Gujarati, Kannada.** - **Thai** ~60M. - **Nepali** (Devanagari), **Sinhala**, **Burmese**, **Khmer** and **Lao** — *from #71*; each needs its script drawn. - **Amharic** and **Tigrinya** — Ge'ez script; carved out of #70, which cannot reach them before the fonts land. ### Tier 3 — 0.6.0, gated on #73 and #67. - **Arabic** ~400M — carved out of #70, where it is currently scheduled ahead of its layout. - **Urdu** ~230M, **Persian** ~80M, **Hebrew**. - **Tamazight / Kabyle** (`kab`) — also carved out of #70. ### 1.0.0 - #101, the PALOP national languages, unchanged — it is a commitment about honesty regarding machine translation, not a place in this ordering. - The long tail as a *process* rather than a list: #72's second half, which is the part of that issue worth keeping. ## What changes on the three existing issues - **#70** stays at 0.4.0 and narrows to the **Latin-script** African languages. `ar`, `kab`, `am` and `ti` leave it for Tiers 2 and 3, so it can close when the ones that are not blocked are done. - **#71** moves to **0.5.0** — its Asian catalogues are the font-gated tier. Its RTL members (`ur`, `fa`, `he`) move to Tier 3. Quechua, Guaraní and Aymara are Latin-script and may be pulled into Tier 1 by whoever starts it. **Merged into this issue on 2026-09-29.** - **#72** moves to **0.6.0**, and should be re-read as the *process* issue it half already is: a speaker adding a language without waiting for a developer. That is what makes the tail reachable at all, and Weblate is already running for it. ## What does not change - A language is `draft` until a speaker reviews it, and stays out of `language_choices` until somebody starts it. - The working set while developing is still en / fr-fr / pt-pt, with the full sweep on a release commit. - `tests/test_translations.py::test_every_european_union_language_stays_complete` still hard- gates the 24 EU languages on every commit, and its conflict with the three-language working rule is still unresolved. This issue does not fix that and should not be read as having done so. ## Since this was written Facts that changed after 2026-09-17, noted at the merge. The tiers above are left as they were decided. - **Fonts: #74 closed on 2026-09-28.** CJK is an opt-in build argument on the image, not a default. `manage.py check_fonts`, and a row on *Server settings → Overview*, say which scripts the offered languages need and whether the running instance can draw them; the document themes name a per-script fallback. What a Tier 2 language waits on is its script showing as drawable there, not #74. - **Right-to-left: worth a deliberate look.** The layout this gate waits on is #67, which closed in 0.3.0, and #70's first comment says Arabic is exercised end to end. #73 is the phone layout, not direction; it names #67 only because both are layout work. If nothing else is missing, Tier 3 is not blocked the way the gate above says. Not decided here. - **Milestones moved.** 0.4.0 has nothing open, and none of Tier 1 was started: `ha` and `sw` are still empty, and there is no `ru`, `id`, `vi` or `fil`. #70 moved to 1.0.0 on 2026-09-21, and its comment notes that the carved-out `am`, `ti`, `ar` and `kab` now land *before* the Latin-script set they came from. This issue moved from 0.4.0 to 0.5.0 on 2026-09-29, the milestone #71 was already in. ## From #71: what these catalogues need beyond a translation #71's decision was *"milestone for 0.4.0 - all languages from Asia and South America"*; the ordering above replaced it. Its list of what was new, with where each point stands: 1. **Right-to-left again**, for Hebrew, Persian and Urdu. The layout came with #67, so these are catalogues (Tier 3). 2. **Scripts that need real font coverage**: CJK, Devanagari, Thai, Khmer, Burmese. A glyph that does not draw is a box on somebody's CV. The check exists since #74 (above); each language still has to pass it. 3. **Languages with no plural distinction at all** (Chinese, Japanese, Korean, Vietnamese, Thai): `nplurals=1`, which the tooling has to accept as readily as Arabic's six. It already carries one-form rules for Wolof, Igbo, Shona and Bamanankan (#70). 4. **Word wrapping and line breaking** for CJK and Thai, in the browser and in WeasyPrint. Neither breaks on spaces, and a CV that wraps in the wrong place looks careless. Open. 5. **Regional variants as first-class catalogues** — pt-BR, the Latin American Spanish variants, simplified and traditional Chinese — which the language picker has to present without turning into a list nobody can scan. "Ficheiro" and "arquivo" are not the same word to the person reading them. pt-BR is the first; the picker question is open.
tiagoagueda added this to the 0.4.0 milestone 2026-09-17 19:43:28 +00:00
tiagoagueda modified the milestone from 0.4.0 to 0.5.0 2026-09-29 18:24:12 +00:00
Author
Owner

#71 is merged into this issue. The body now opens with a note saying so, places the languages
#71 listed and this issue had not named (marked from #71), and ends with two new sections:
Since this was written (#74 closed; a question about whether the right-to-left gate still
holds; the milestone moves) and From #71 (its five points, with where each stands).

#71 is merged into this issue. The body now opens with a note saying so, places the languages #71 listed and this issue had not named (marked *from #71*), and ends with two new sections: **Since this was written** (#74 closed; a question about whether the right-to-left gate still holds; the milestone moves) and **From #71** (its five points, with where each stands).
Author
Owner

Final decision on translations (maintainer, 2026-10-01)

  1. Every language is scaffolded: each has its catalogue, with a slot for every string.
  2. A development build requires every string to be present in en-GB, fr-FR and pt-PT. A draft counts.
  3. A release requires every string to be present in the languages selected for that release. A draft counts.
  4. 0.4.0 requires no additional languages.
  5. 0.5.0 additionally requires fr-CA and en-CA; then, eventually, any language of the European continent still missing (Russian excepted); and, eventually, Chinese and Arabic. Those last two may move to 0.6.0 if the load on 0.5.0 becomes too great.

What this changes here

  • 0.5.0's languages are set by the decision, not by the speaker count. In order: fr-CA and en-CA (regional variants, seeded from fr-FR and en-GB the way pt-BR was seeded from pt-PT in #110, and flagged draft); then the European languages that still have no catalogue; then Chinese and Arabic.
  • Russian is not in 0.5.0's set. This issue began from Russian having no catalogue; the decision excepts it by name. It is scaffolded like every other language, and required by no release named so far.
  • The tiers stop being milestones. Tier 1 (Indonesian, Vietnamese, Filipino, Malay, the Latin-script African set and the rest), Tier 2 other than Chinese, and Tier 3 other than Arabic are scaffolded and wait until a release selects them. The speaker ordering remains the order to take them in when one does.
  • Chinese and Arabic keep their gates. Chinese needs its script drawn (CJK is an opt-in build argument since #74, and manage.py check_fonts says whether an instance can draw it); Arabic needs the right-to-left layout (#67, closed in 0.3.0). That is the load the decision means when it allows the two to move to 0.6.0.
  • "What does not change" is settled rather than unchanged. The body says the working set while developing is en / fr-fr / pt-pt and that its conflict with the release gate was unresolved. The decision resolves it: a development build is held to exactly those three, a release to the languages selected for it.

Left open, to settle here

  • Which European languages are "missing". The 39 started catalogues are listed above; a list of the ones still to add is needed (Russian excepted).
  • Which Chinese. Simplified, traditional, or both as two catalogues (zh-Hans, zh-Hant once #337 lands).
  • What 0.4.0's selected set is. Read here as the set 0.3.0 was released with, nothing added.
**Final decision on translations (maintainer, 2026-10-01)** 1. **Every language is scaffolded**: each has its catalogue, with a slot for every string. 2. **A development build** requires every string to be present in **en-GB, fr-FR and pt-PT**. A draft counts. 3. **A release** requires every string to be present in **the languages selected for that release**. A draft counts. 4. **0.4.0** requires no additional languages. 5. **0.5.0** additionally requires **fr-CA** and **en-CA**; then, eventually, any language of the European continent still missing (Russian excepted); and, eventually, **Chinese** and **Arabic**. Those last two may move to 0.6.0 if the load on 0.5.0 becomes too great. ## What this changes here - **0.5.0's languages are set by the decision, not by the speaker count.** In order: **fr-CA** and **en-CA** (regional variants, seeded from fr-FR and en-GB the way pt-BR was seeded from pt-PT in #110, and flagged `draft`); then the European languages that still have no catalogue; then Chinese and Arabic. - **Russian is not in 0.5.0's set.** This issue began from Russian having no catalogue; the decision excepts it by name. It is scaffolded like every other language, and required by no release named so far. - **The tiers stop being milestones.** Tier 1 (Indonesian, Vietnamese, Filipino, Malay, the Latin-script African set and the rest), Tier 2 other than Chinese, and Tier 3 other than Arabic are scaffolded and wait until a release selects them. The speaker ordering remains the order to take them in when one does. - **Chinese and Arabic keep their gates.** Chinese needs its script drawn (CJK is an opt-in build argument since #74, and `manage.py check_fonts` says whether an instance can draw it); Arabic needs the right-to-left layout (#67, closed in 0.3.0). That is the load the decision means when it allows the two to move to 0.6.0. - **"What does not change" is settled rather than unchanged.** The body says the working set while developing is en / fr-fr / pt-pt and that its conflict with the release gate was unresolved. The decision resolves it: a development build is held to exactly those three, a release to the languages selected for it. ## Left open, to settle here - **Which European languages are "missing".** The 39 started catalogues are listed above; a list of the ones still to add is needed (Russian excepted). - **Which Chinese.** Simplified, traditional, or both as two catalogues (`zh-Hans`, `zh-Hant` once #337 lands). - **What 0.4.0's selected set is.** Read here as the set 0.3.0 was released with, nothing added.
Author
Owner

Follow-up to the final decision on translations (maintainer, 2026-10-01)

  • Chinese: both. Simplified and traditional, two catalogues (zh-Hans, zh-Hant).
  • "European" means the continent, not the European Union. Turkish and Icelandic count; they are already carried.
  • Every component moves with the core, language-wise, plugins and extensions included.

The work is postulo/postulo#347.

Which languages of the continent are still missing

The 39 started catalogues already cover the Union, the 15 others that came with 0.3.0 (Ukrainian, Turkish, Norwegian bokmål, Icelandic, Serbian, Bosnian, Albanian, Macedonian, Georgian, Armenian, Basque, Catalan, Galician, Welsh, Luxembourgish) and pt-BR. Measured against the continent rather than the Union, what has no catalogue is:

  • Languages official in a European state or territory: Azerbaijani (az), Belarusian (be), Kazakh (kk), Montenegrin (cnr), Norwegian nynorsk (nn), Romansh (rm), Faroese (fo). Russian is excepted by the decision.
  • Regional and minority languages, if "any missing language" is meant to reach them: Scottish Gaelic (gd), Breton (br), Occitan (oc), Corsican (co), Sardinian (sc), West Frisian (fy), Northern Sami (se), Asturian (ast), and others of the same standing.

The first group is proposed as 0.5.0's "missing European languages"; the second needs the maintainer's word on whether it belongs to this release, a later one, or the process in #72.

This also settles the third point left open above: 0.4.0's set is the European set carried today, all 39, not the Union's 24.

**Follow-up to the final decision on translations (maintainer, 2026-10-01)** - **Chinese: both.** Simplified and traditional, two catalogues (`zh-Hans`, `zh-Hant`). - **"European" means the continent, not the European Union.** Turkish and Icelandic count; they are already carried. - **Every component moves with the core, language-wise**, plugins and extensions included. The work is postulo/postulo#347. ## Which languages of the continent are still missing The 39 started catalogues already cover the Union, the 15 others that came with 0.3.0 (Ukrainian, Turkish, Norwegian bokmål, Icelandic, Serbian, Bosnian, Albanian, Macedonian, Georgian, Armenian, Basque, Catalan, Galician, Welsh, Luxembourgish) and pt-BR. Measured against the continent rather than the Union, what has no catalogue is: - **Languages official in a European state or territory:** Azerbaijani (`az`), Belarusian (`be`), Kazakh (`kk`), Montenegrin (`cnr`), Norwegian nynorsk (`nn`), Romansh (`rm`), Faroese (`fo`). Russian is excepted by the decision. - **Regional and minority languages**, if "any missing language" is meant to reach them: Scottish Gaelic (`gd`), Breton (`br`), Occitan (`oc`), Corsican (`co`), Sardinian (`sc`), West Frisian (`fy`), Northern Sami (`se`), Asturian (`ast`), and others of the same standing. The first group is proposed as 0.5.0's "missing European languages"; the second needs the maintainer's word on whether it belongs to this release, a later one, or the process in #72. This also settles the third point left open above: 0.4.0's set is the European set carried today, all 39, not the Union's 24.
Author
Owner

Europe's missing languages, decided (maintainer, 2026-10-01)

  • The languages official in a European state or territory are 0.5.0's "missing European languages": Azerbaijani (az), Belarusian (be), Kazakh (kk), Montenegrin (cnr), Norwegian nynorsk (nn), Romansh (rm), Faroese (fo). Russian stays excepted.
  • The regional and minority languages move to 1.0.0, because each has few speakers, unless a contributed translation arrives for one of them sooner; then that language is selected for the release it arrives in. They are tracked in #348.

So 0.5.0's additions, in full: fr-CA and en-CA; the seven above; then Chinese (simplified and traditional) and Arabic, which may move to 0.6.0. Nothing is left open here from the comments above.

**Europe's missing languages, decided (maintainer, 2026-10-01)** - **The languages official in a European state or territory are 0.5.0's "missing European languages"**: Azerbaijani (`az`), Belarusian (`be`), Kazakh (`kk`), Montenegrin (`cnr`), Norwegian nynorsk (`nn`), Romansh (`rm`), Faroese (`fo`). Russian stays excepted. - **The regional and minority languages move to 1.0.0**, because each has few speakers, **unless a contributed translation arrives for one of them sooner**; then that language is selected for the release it arrives in. They are tracked in #348. So 0.5.0's additions, in full: fr-CA and en-CA; the seven above; then Chinese (simplified and traditional) and Arabic, which may move to 0.6.0. Nothing is left open here from the comments above.
Author
Owner

Superseded in part by #728 (maintainer, 2026-10-06): the 0.5.0 language list given in the comments of 2026-10-01 is replaced by the list in #728 (Mandarin Chinese, Hindi, Urdu, Modern Standard Arabic, Bengali and Indonesian, as drafts). The rest of this issue is not changed by that decision.

Superseded in part by #728 (maintainer, 2026-10-06): the 0.5.0 language list given in the comments of 2026-10-01 is replaced by the list in #728 (Mandarin Chinese, Hindi, Urdu, Modern Standard Arabic, Bengali and Indonesian, as drafts). The rest of this issue is not changed by that decision.
Author
Owner

Closing: every decision this issue held is settled, and what is left has its own issue.

Decided and done

  • Every language is scaffolded in the core, all seven plugins and the extensions (decision of 2026-10-01). A release requires complete only the languages in SELECTED for its line, and drafts count (#347).
  • 0.4 is the 39 European and Caucasus languages.
  • 0.5 is those 39 plus en-CA, es-MX, fr-CA, az, be, cnr, fo, kk, nn, rm, zh-Hans, zh-Hant and ar, and now Hindi, Urdu, Bengali and Indonesian (#1051, maintainer, 2026-10-25), which reconciles #728's list with the code. That makes 56 languages.
  • In Weblate (2026-10-27), all 56 have no empty strings.
    • The 13 that 0.5 added first were reviewed in full on 2026-10-25, and the 39 of 0.4 on 2026-10-24.
    • Hindi, Urdu and Bengali had their 60 empty strings filled. Their machine drafts are not reviewed, by choice. Many of Urdu's are known to be wrong (for example "Download" drafted as "write above").
  • Russian stays excepted.

Moved to their own issues

  • #1052: line breaking for Chinese, Japanese, Korean and Thai, in the browser and WeasyPrint ("From #71", point 4).
  • #1053: the language picker for regional variants ("From #71", point 5). Milestone 0.5.0.
  • #1054: Urdu in Nastaliq. Noto Nastaliq Urdu is already in the image; the interface and the document themes don't use it yet.
  • #1055: the speaker ordering for every release after 0.5, which replaces the tiers above.
  • #348: Europe's regional and minority languages, at 1.0.0 unless a translation is contributed sooner.

The right-to-left gate is #67, closed in 0.3.0. The font gate is #74, closed, plus manage.py check_fonts.

Closing: every decision this issue held is settled, and what is left has its own issue. **Decided and done** - **Every language is scaffolded** in the core, all seven plugins and the extensions (decision of 2026-10-01). A release requires complete only the languages in `SELECTED` for its line, and drafts count (#347). - **0.4** is the 39 European and Caucasus languages. - **0.5** is those 39 plus en-CA, es-MX, fr-CA, az, be, cnr, fo, kk, nn, rm, zh-Hans, zh-Hant and ar, and now Hindi, Urdu, Bengali and Indonesian (#1051, maintainer, 2026-10-25), which reconciles #728's list with the code. That makes 56 languages. - **In Weblate (2026-10-27), all 56 have no empty strings.** - The 13 that 0.5 added first were reviewed in full on 2026-10-25, and the 39 of 0.4 on 2026-10-24. - Hindi, Urdu and Bengali had their 60 empty strings filled. Their machine drafts are not reviewed, by choice. Many of Urdu's are known to be wrong (for example "Download" drafted as "write above"). - **Russian** stays excepted. **Moved to their own issues** - **#1052:** line breaking for Chinese, Japanese, Korean and Thai, in the browser and WeasyPrint ("From #71", point 4). - **#1053:** the language picker for regional variants ("From #71", point 5). Milestone 0.5.0. - **#1054:** Urdu in Nastaliq. Noto Nastaliq Urdu is already in the image; the interface and the document themes don't use it yet. - **#1055:** the speaker ordering for every release after 0.5, which replaces the tiers above. - **#348:** Europe's regional and minority languages, at 1.0.0 unless a translation is contributed sooner. The right-to-left gate is #67, closed in 0.3.0. The font gate is #74, closed, plus `manage.py check_fonts`.
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#269
No description provided.