The Internationalization wizard makes a project multilingual. It reads your repository, starts every step from what it found, and ends in one task that opens one pull request. You never type a language code or edit JSON; change only what you want, and nothing changes in your repository until you merge.
Owners and admins run the wizard. Start it from Localization: choose Internationalize a project, or Start the wizard on a project's row. For a project that is already multilingual, Settings → Change languages opens the same wizard to propose changes.
The steps
1. Scan
Coroid reads the default branch without running any of its code. It looks for catalogues and their languages, the frameworks in use, and text still written directly in the code, counted per file.
- Catalogues found. The wizard keeps them: Coroid adds its checks and translates what is missing. This is called adopting.
- No catalogues yet. Coroid moves the text in your code into catalogues and replaces it with lookups. This is called introducing.
- Already set up. The project already has a Coroid configuration, and the wizard proposes changes to it.
2. Source language
The language the product is written in; every other language is translated from it. The wizard detects it from your catalogues, or guesses it from the text in the code. Any language can be the source: a Swedish product translated to English and German works the same way.
3. Languages
Pick languages one by one, or add a whole market at once: Most spoken, Europe, Nordics, East Asia, The Americas or Right-to-left. Each language shows its own name, whether it is written right to left, and how many plural forms it needs.
Regional variants can be derived instead of translated. British English is derived from American English with British spelling, and Swiss German from German with Swiss spelling, so they cost nothing and stay in step with their parent.
Every step starts from what the repository already has. Change only what you want; nothing changes until the pull request is merged.
- Scan
- Source language
- Languages
- Strings
- Style and terms
- Quality and automation
- Review
Pick languages one by one or add a whole market. Regional variants such as British English can be derived by rules instead of translated.
- DeutschGerman · de · 2 plural forms
- FrançaisFrench · fr · 3 plural forms
- 日本語Japanese · ja · 1 plural form
- العربيةArabic · ar · right to left · 6 plural forms
- British Englishen-GB · 2 plural formsDerived with British spelling
The Internationalization wizard on its Languages step: each language with its script direction and plural forms, British English derived by rules, and markets to add in one go. Illustrative data.
4. Strings
When adopting, choose the catalogues Coroid keeps translated; their keys and structure stay as they are. When introducing, choose the files whose text Coroid moves into catalogues; files you leave out stay as they are.
5. Style and terms
All optional, and followed in every language:
- Formal or informal. For languages that address the reader formally or informally, such as German Sie and du. By default each follows the tone of the source text.
- Terms kept as written. Product, brand and feature names that stay the same in every language.
- About the product. A few sentences about the product and its readers, which help every translation choose the right words.
6. Quality and automation
On by default, and each can be changed later:
- Check translations on every change. The Translations check in Quality Control sends a change back when it leaves strings missing or broken.
- Translate strings merged outside Coroid. When someone merges new text without Coroid, a task translates it.
- Apply corrections every night. Approved suggestions from contributors arrive as one pull request each night.
- Let invited people suggest wording. Native readers you invite can correct translations on your site. See Maintain translations with suggestions.
The configuration file carries the last one. Coroid turns the others on the next time an owner or admin opens Localization after the pull request is merged, and only once: if you switch one off later, it stays off.
7. Review
A summary of the project, what the task will do, the source language, the languages and which of them are derived, the translation volume, the terms kept as written, and what turns on after the merge. Translation is billed as model usage, like other agent work, and capped per task.
Choose Internationalize. Coroid creates one task with a Specification and acceptance criteria and starts it at once.
What the task does
- Adopting writes the configuration file exactly as the wizard composed it, then translates every missing string.
- Introducing wires your framework, moves the text of the chosen files into catalogues, adds language routing, fallbacks and right-to-left support, then translates.
- Changing writes the new configuration and repairs the translations the change affects.
The task ends in one pull request. Once it is merged into the default branch, every language shows up in Localization.
Formats
Coroid reads catalogues in these formats:
| Format | Use it for |
|---|---|
| ICU JSON | Message files with ICU plurals and selects |
| i18next JSON | i18next and react-i18next catalogues, including plural suffixes |
| Vue i18n JSON | vue-i18n messages, including linked messages and pipe plurals |
| Rails YAML | config/locales/*.yml, with %{name} interpolation and plural keys |
| gettext PO | .po files and a .pot template, with Plural-Forms per language |
| Markdown and MDX | Documentation pages under a language folder (docs/en/…): text, image descriptions and chosen frontmatter fields; code and markup stay as written |
| Custom | Any other format, through a small adapter command in your repository |
The configuration file
The wizard writes .coroid/i18n.json. It describes your repository, so it
lives in your repository and changes through pull requests:
{
"version": 1,
"cli": { "version": "1.9.0", "sha256": "…" },
"sourceLocale": "en",
"targetLocales": ["de", "fr", "ja", "ar"],
"derivedLocales": [
{ "locale": "en-GB", "from": "en", "rules": "en-gb-spelling" }
],
"catalogs": [
{
"id": "ui",
"format": "i18next-json",
"source": "messages/{locale}.json"
}
],
"protectedTerms": ["Storefront"],
"localeInstructions": {
"de": "Address the reader informally (du)."
}
}clipins the exact engine version and its checksum. Coroid downloads and verifies that version before every run, so an update never changes your output by surprise.derivedLocaleslists the regional variants produced by rules.protectedTermsandlocaleInstructionshold what you chose under Style and terms.
The file can also hold a glossary, product context, per-language translation routes and the suggestion binding for contributors.
Settings → Configuration file in the workbench shows the exact file on the default branch. To change it there, edit the proposal and choose Propose change: Coroid opens a task that applies exactly that file and repairs any translations the change affects. For languages and style, the wizard is the easier way.