Brazilian Portuguese: seeded from pt-PT, not translated again #110

Closed
opened 2026-09-07 17:59:51 +00:00 by tiagoagueda · 0 comments
Owner

Observation

target pt_BR to version 0.3.0

Why this is not the same job as #101

#101 is twenty-one national languages with little or no digital corpus, and it has moved to
1.0.0 for that reason. This is the opposite kind of work: a variant of a language Postulo
already speaks in full
. pt-pt is one of the twenty-four European Union catalogues that
are kept at 100%, so nothing here starts from nothing.

It is also, by a distance, the largest addition to Postulo's reach that a single catalogue
can buy. Brazil has more Portuguese speakers than every other country combined.

What it is not

Not a copy of pt-pt with a different code. The two are mutually intelligible and they are
not the same, and a Brazilian reading European Portuguese notices immediately — the way a
reader in Chicago notices colour and lorry. The differences that will actually show up
here are ordinary computing vocabulary, which is exactly what an interface is made of:

European Brazilian
utilizador usuário
ficheiro arquivo
ecrã tela
ligação conexão
aceder acessar
guardar salvar
eliminar excluir
candidatura candidatura or inscrição, by context
telemóvel celular
morada endereço

Grammar differs too, and more subtly than the vocabulary: Brazilian Portuguese prefers the
gerund where European uses a plus the infinitive (está carregando against está a
carregar
), places clitic pronouns differently, and addresses the reader as você where the
European catalogue's register is impersonal. A machine translation from English will produce
a Brazilian-flavoured text that is nonetheless not what the pt-PT catalogue says, which is
the wrong starting point.

Seed from pt-pt, not from English. Every string has already been translated once by
somebody thinking about this application; what is wanted is that translation adapted, not a
second independent one. The draft flag then means something precise — this came from the
European catalogue and no Brazilian speaker has read it yet
— rather than a machine wrote
this
.

What has to happen in the code

  • pt-br in NATIVE_NAMES as português (Brasil), in PLURAL_FORMS (nplurals=2; plural=(n > 1); — Brazilian Portuguese treats zero as plural, unlike the European
    catalogue's n != 1, and this is the sort of thing that is wrong in every count on every
    page if it is copied without looking), and in FLAG_COUNTRIES as BR.
  • phones.FROM_LANGUAGE gains pt-br: BR, so a telephone field starts on the right country.
  • The catalogue seeded from pt_PT with every entry flagged draft.
  • pt-br joins the set the tooling keeps at 100%, or it does not — worth deciding. A
    seeded catalogue is technically complete and substantively unreviewed, and counting it as
    finished would make the 100% figure mean less for every other language.

The variant question this settles for later

Postulo already carries en-gb, fr-fr and pt-pt — language plus region. This is the
first case where two regions of one language are both offered, and whatever is done here is
the pattern for es-419, de-AT, en-us and the rest. Doing it as seed, then diverge
rather than translate again is the part worth getting right, because the alternative is
two catalogues drifting apart with nobody noticing which is ahead.

Classification

Enhancement, internationalisation. Depends on nothing; the machinery has been in place since
0.2.0.

## Observation > target pt_BR to version 0.3.0 ## Why this is not the same job as #101 #101 is twenty-one national languages with little or no digital corpus, and it has moved to 1.0.0 for that reason. This is the opposite kind of work: **a variant of a language Postulo already speaks in full**. `pt-pt` is one of the twenty-four European Union catalogues that are kept at 100%, so nothing here starts from nothing. It is also, by a distance, the largest addition to Postulo's reach that a single catalogue can buy. Brazil has more Portuguese speakers than every other country combined. ## What it is not Not a copy of `pt-pt` with a different code. The two are mutually intelligible and they are not the same, and a Brazilian reading European Portuguese notices immediately — the way a reader in Chicago notices *colour* and *lorry*. The differences that will actually show up here are ordinary computing vocabulary, which is exactly what an interface is made of: | European | Brazilian | | --- | --- | | utilizador | usuário | | ficheiro | arquivo | | ecrã | tela | | ligação | conexão | | aceder | acessar | | guardar | salvar | | eliminar | excluir | | candidatura | candidatura *or* inscrição, by context | | telemóvel | celular | | morada | endereço | Grammar differs too, and more subtly than the vocabulary: Brazilian Portuguese prefers the gerund where European uses *a* plus the infinitive (*está carregando* against *está a carregar*), places clitic pronouns differently, and addresses the reader as *você* where the European catalogue's register is impersonal. A machine translation from English will produce a Brazilian-flavoured text that is nonetheless not what the pt-PT catalogue says, which is the wrong starting point. **Seed from `pt-pt`, not from English.** Every string has already been translated once by somebody thinking about this application; what is wanted is that translation adapted, not a second independent one. The `draft` flag then means something precise — *this came from the European catalogue and no Brazilian speaker has read it yet* — rather than *a machine wrote this*. ## What has to happen in the code - `pt-br` in `NATIVE_NAMES` as *português (Brasil)*, in `PLURAL_FORMS` (`nplurals=2; plural=(n > 1);` — Brazilian Portuguese treats zero as plural, unlike the European catalogue's `n != 1`, and this is the sort of thing that is wrong in every count on every page if it is copied without looking), and in `FLAG_COUNTRIES` as `BR`. - `phones.FROM_LANGUAGE` gains `pt-br: BR`, so a telephone field starts on the right country. - The catalogue seeded from `pt_PT` with every entry flagged `draft`. - `pt-br` joins the set the tooling keeps at 100%, or it does not — **worth deciding**. A seeded catalogue is technically complete and substantively unreviewed, and counting it as finished would make the 100% figure mean less for every other language. ## The variant question this settles for later Postulo already carries `en-gb`, `fr-fr` and `pt-pt` — language plus region. This is the first case where two regions of one language are both offered, and whatever is done here is the pattern for `es-419`, `de-AT`, `en-us` and the rest. Doing it as *seed, then diverge* rather than *translate again* is the part worth getting right, because the alternative is two catalogues drifting apart with nobody noticing which is ahead. ## Classification Enhancement, internationalisation. Depends on nothing; the machinery has been in place since 0.2.0.
tiagoagueda added this to the 0.3.0 milestone 2026-09-07 17:59:51 +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#110
No description provided.