Translate a JSON i18n file into Portuguese (Portugal or Brazil)
Manuce translates the values in your JSON i18n file into European or Brazilian Portuguese, offered as two separate languages, and never touches the keys. Placeholders and ICU messages are checked string by string, the many plural category is added, and you get the same file back, ready to drop into your project, with a report.
What it costs
For a JSON i18n file with about 2,000 words of values, into Portuguese:
To understand, internal use.
Ready to send, by the technical specialist.
Cross-checked. For documents that commit you.
Price for one language, original layout included. VAT not applicable — article 293 B of the French General Tax Code (CGI). The exact quote, based on your file's word count, is shown before you pay.
European or Brazilian Portuguese: two files, not one
Manuce offers Portuguese from Portugal and from Brazil as separate languages, and for UI strings the difference is real: the same keys often need different values.
"save": Guardar (Portugal) / Salvar (Brazil)"file": Ficheiro / Arquivo"password": Palavra-passe / Senha"download": Transferir / Baixar
Register differs too. Brazilian interfaces address the user as você with third-person verbs: "Digite sua senha". In Portugal you would rather see "Introduza a sua palavra-passe", with an article before the possessive. A single pt.json served to both audiences will read as foreign to one of them.
If you target both markets, order both variants together and the −20% two-language discount applies. In your project, name the files after the locale your library expects, such as pt-PT.json and pt-BR.json, and check which one acts as the fallback.
Plurals: one, many, other, and the zero trap
Portuguese has three CLDR plural categories: one, many and other. The many category covers round millions, where Portuguese inserts de: "1 000 000 de ficheiros", but "25 ficheiros". Manuce adds the categories the target language requires to ICU messages:
{count, plural, one {# ficheiro} many {# de ficheiros} other {# ficheiros}}
The second trap is zero. Under CLDR rules, Brazilian Portuguese puts 0 in one ("0 arquivo"), whereas in European Portuguese one covers only 1. If you want "Nenhum arquivo" ("No files"), the =0 case must already exist in your source message.
With i18next-style suffixed keys (item_one, item_other), plurals live in the keys, which Manuce never translates. After delivery, make sure an item_many key exists for Portuguese; the category handling described here applies to ICU messages.
Placeholders, gender agreement and concatenation
Every placeholder, whether {name}, {{count}} or %s, is checked: same placeholders, same number of occurrences as the source. Inline tags too: <b>{count}</b> new messages becomes <b>{count}</b> novas mensagens, with the adjective moving before the noun.
Portuguese marks gender far more than English, which raises issues translation alone cannot fix:
"{name} was added": foi adicionado or foi adicionada depending on the person. An ICUselecton gender in the source lets both forms be translated; Manuce checks them just as it checks plurals."Welcome to {appName}": "Bem-vindo ao {appName}" assumes both a masculine app name and a male user. A neutral wording such as "Boas-vindas" avoids both agreements.- Fragments joined in code ("Excluir" + "{item}") break contractions such as do, da, no, na. One full sentence per key works far better.
What Manuce returns, and what it leaves alone
Flat or nested JSON, including string arrays (i18next, react-intl, vue-i18n, next-intl, ngx-translate), comes back identical: indentation, key order, quotes, comments, line endings, encoding and BOM are preserved. Only the values change.
Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable. In practice, "dateFormat": "MM/DD/YYYY" stays as it is. Portugal and Brazil both put the day first, so switching that value to DD/MM/YYYY is up to you.
Each translated value is compared with its source. If a placeholder or tag still does not match, the source value is kept and the report says so, alongside the list of strings translated and those left as they were, with the reason. Manuce does not change your code or library configuration, does not test on-screen rendering and does not provide sworn translation. Pricing is based on the words in the values, with keys and tags excluded; Portuguese is at the base rate.
Preparing the file and checking the result
Before uploading:
- Save the file as UTF-8: ã, ç, õ and ê appear everywhere in Portuguese.
- Add
=0cases and genderselectmessages to the source wherever you need them. - Pick the right variant, Portugal or Brazil, when you upload.
Short strings lack context: "Open" may become Abrir (a button) or Aberto (a status). Read the free sample, then the translation, looking for such cases and for brand terms that must stay unchanged.
After delivery:
- Validate the JSON and run the app in Portuguese.
- Watch string length: "Sign in" becomes "Iniciar sessão" in Portugal, and narrow buttons can overflow.
- Test plurals with 0, 1, 2 and 1 000 000.
- Check capitalisation: months and weekdays are lower case ("janeiro", "segunda-feira"), and titles do not capitalise every word.
In practice
- Upload your JSON i18n file and choose European Portuguese, Brazilian Portuguese, or both.
- Check the quote, based on the words in the values, and read the free sample.
- Pay and download the same file translated, with the report of strings translated and left unchanged.
- Adjust date formats, validate the JSON and test plurals and string lengths in your app.
Frequently asked questions
Do I have to choose between European and Brazilian Portuguese?
Yes. Manuce treats them as two separate languages, because vocabulary (ficheiro/arquivo, palavra-passe/senha) and register differ. You can order both in one go, in which case the −20% two-language discount applies.
Will my keys be translated?
No, never. Only values are translated; key order, indentation, quotes, encoding and BOM stay identical, so the file can go straight back into your project.
What happens to the many plural category?
Portuguese needs it for round millions ("1 000 000 de ficheiros"). Manuce adds it to ICU plural messages. If you use i18next-style suffixed keys, check that a _many key exists, as keys are not modified.
What if a placeholder goes missing in the translation?
Every value is compared with its source, placeholders and tags included. If a mismatch persists, the source value is kept and the report flags it, so your app does not break.
Are date formats adapted for Portuguese?
No. Date formats, numbers and identifiers are not translated, so a value such as MM/DD/YYYY stays as it is. Change it yourself to DD/MM/YYYY, the order used in both Portugal and Brazil.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Portuguese, other files
See also
Try it on your own file, free
A sample of your file translated at the level you choose, before any payment. You judge, then you decide.