Ship the languages the core offers, from the same list the browser extension follows #7

Open
opened 2026-10-01 07:21:57 +00:00 by tiagoagueda · 2 comments
Owner

The list asks: "Make language translations roll-out mirror the languages available with the current Postulo core server."

The skeleton ships three languages: English, French and European Portuguese. test/i18n.test.mjs holds the list as BCP 47 tags in canonical form (pt-PT), as postulo/postulo#337 decided, and derives the folder names Thunderbird demands (pt_PT). The core offers forty.

What the extension should do

  • Ship every language the core offers, from the same list the browser extension follows: postulo/postulo-chromium#10 proposes a script that writes that list from the core, and a test that holds the catalogues to it. The list should be one file, used by both.
  • The sentences shared with the browser extension are already translated. Of the skeleton's 36 sentences, 25 are postulo-chromium's own, in its forty catalogues; they can be copied as the first three were. Only Thunderbird's own sentences need translating, and a sentence copied over is reworded when it speaks of a browser: test/i18n.test.mjs refuses one that does.
  • Every catalogue complete, as the test already demands: a language joins with all its sentences, as drafts.
  • A right-to-left language brings a check that the popup and the settings page are laid out right to left; the shared stylesheet names no physical side.

Decisions

  • What "the current Postulo core server" means. Recommended, as in postulo/postulo-chromium#10: the core release this extension is released beside. Following one instance at run time would need Postulo to say which languages it offers; no call does.
  • Where shared sentences live. Recommended: copied from postulo-chromium by a script, so a correction made there reaches here. Alternative: kept by hand in both.
  • Which languages Thunderbird can show. Thunderbird picks a catalogue by its own interface language. Which of the forty it has an interface for is not checked; #8 reaches the rest.

Needs from the server

Not filed on postulo/postulo. Only the run-time reading would need anything.

Done when

  • The extension ships the languages the core offers, and npm test fails when the two lists differ.
  • Each catalogue is complete and names itself with a canonical BCP 47 tag.
  • The README's Languages section says how the list is kept.

From the list of Thunderbird extension improvements of 2026-09-30.

The list asks: "Make language translations roll-out mirror the languages available with the current Postulo core server." The skeleton ships three languages: English, French and European Portuguese. `test/i18n.test.mjs` holds the list as BCP 47 tags in canonical form (`pt-PT`), as postulo/postulo#337 decided, and derives the folder names Thunderbird demands (`pt_PT`). The core offers forty. ## What the extension should do - Ship every language the core offers, from the same list the browser extension follows: postulo/postulo-chromium#10 proposes a script that writes that list from the core, and a test that holds the catalogues to it. The list should be one file, used by both. - **The sentences shared with the browser extension are already translated.** Of the skeleton's 36 sentences, 25 are postulo-chromium's own, in its forty catalogues; they can be copied as the first three were. Only Thunderbird's own sentences need translating, and a sentence copied over is reworded when it speaks of a browser: `test/i18n.test.mjs` refuses one that does. - Every catalogue complete, as the test already demands: a language joins with all its sentences, as drafts. - A right-to-left language brings a check that the popup and the settings page are laid out right to left; the shared stylesheet names no physical side. ## Decisions - **What "the current Postulo core server" means.** Recommended, as in postulo/postulo-chromium#10: the core release this extension is released beside. Following one instance at run time would need Postulo to say which languages it offers; no call does. - **Where shared sentences live.** Recommended: copied from postulo-chromium by a script, so a correction made there reaches here. Alternative: kept by hand in both. - **Which languages Thunderbird can show.** Thunderbird picks a catalogue by its own interface language. Which of the forty it has an interface for is not checked; #8 reaches the rest. ## Needs from the server Not filed on postulo/postulo. Only the run-time reading would need anything. ## Done when - The extension ships the languages the core offers, and `npm test` fails when the two lists differ. - Each catalogue is complete and names itself with a canonical BCP 47 tag. - The README's *Languages* section says how the list is kept. From the list of Thunderbird extension improvements of 2026-09-30.
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

  • The three languages the skeleton ships, English, French and European Portuguese, are exactly the set a development build is held to. That part is done.
  • A release of the extension is held to the languages selected for that release, from the same list postulo/postulo-chromium#10 proposes; a draft counts, as this issue already says.
  • Scaffolded is not shipped: a folder only for a language the core offers.
  • Next to arrive: fr_CA and en_CA (0.5.0), then the European languages still missing, then Chinese and Arabic, the last of which brings the right-to-left check named here.
**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 - The three languages the skeleton ships, **English, French and European Portuguese**, are exactly the set a development build is held to. That part is done. - **A release** of the extension is held to the languages selected for that release, from the same list postulo/postulo-chromium#10 proposes; a draft counts, as this issue already says. - **Scaffolded is not shipped**: a folder only for a language the core offers. - **Next to arrive:** `fr_CA` and `en_CA` (0.5.0), then the European languages still missing, then Chinese and Arabic, the last of which brings the right-to-left check named here.
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.

**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.
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-thunderbird#7
No description provided.