Hi maintainers!
We'll soon be launching Exercism in multiple languages. This issue explains how the translation process works. I'm opening a variant of this issue around GitHub, so apologies if you see it multiple times. If there are any docs that you think need updating for this (either within tracks, or globally), please PR changes :)
New bits
There are two new repos to be aware of:
- i18n: This is where the translations live
- translator: This is the machinery behind the translations
There are also some new scripts that will be coming from org-wide-files, which will be PR'd and auto-merged soon (for non-track repos, these will be added directly to the repo)
I am manually generating translations of all content in this repo, so all you need to consider is new changes.
Methodology for new content
When a PR opens, a script will check whether the new git blobs exist in the i18n repo for all locales. If they don't, the PR will fail CI.
You (a maintainer) can add a new label ready-to-translate to the PR, which will open a new issue in the i18n repo with details. That new issue then triggers a workflow that causes the files to be translated and pushed to the i18n repo. Once that happens, the PR in this repo will have its check re-triggered and it should go green, at which point you can merge. For most situations this whole thing should take ~10 minutes end-to-end.
If someone pushes more copy changes to the PR, the label will automatically be removed and you will need to add it again to retranslate. So I recommend only adding the label once the PR is signed off to avoid churn. Each translation also costs us money, so this approach also saves us real cash!
A PR with more than 3,000 untranslated words gets held for manual approval. Please ping me if you hit this.
Existing Pull Requests
Any PRs that predate this will need action before they can be merged. Any of the following will run the relevant i18n GitHub Action:
- "Update Branch" button if available
- Rebasing/pushing to the PR
- Closing/Reopening the PR
If the PR changes English, add the ready-to-translate label once the check has run.
What's translated?
On a track, these files are treated as English and get translated:
exercises/*/*/.docs/instructions.md
exercises/*/*/.docs/instructions.append.md
exercises/*/*/.docs/introduction.md
exercises/*/*/.docs/introduction.append.md
exercises/*/*/.docs/hints.md
exercises/shared/.docs/*.md (help, tests, debug)
concepts/*/about.md
concepts/*/introduction.md
docs/*.md (the track's own documentation pages)
Plus a few text fields, rather than whole files:
- Exercise and concept names from
config.json
- Exercise and concept blurbs from each exercise's or concept's
.meta/config.json
- Track doc titles and blurbs from
docs/config.json
Everything else in the repository is left along. Nothing is ever written to track repositiories. The workflows only read a PR, and the translations are stored in exercism/i18n.
Viewing Translations
There are indexes for each language/repo here at https://github.com/exercism/i18n/blob/main/index/markdown/$LOCALE/$REPO.md where you can get links to all the translations. For example: Hungarian Python.
(Fixes to translations will happen via the forum, but I think that's a different discussion from this issue as it's org-wide and not your (direct!) responsibility as maintainers so I don't want to burden you with more information).
I intend to push Hungarian live today, and then start rolling other (natural) languages out over the next week.
Hi maintainers!
We'll soon be launching Exercism in multiple languages. This issue explains how the translation process works. I'm opening a variant of this issue around GitHub, so apologies if you see it multiple times. If there are any docs that you think need updating for this (either within tracks, or globally), please PR changes :)
New bits
There are two new repos to be aware of:
There are also some new scripts that will be coming from org-wide-files, which will be PR'd and auto-merged soon (for non-track repos, these will be added directly to the repo)
I am manually generating translations of all content in this repo, so all you need to consider is new changes.
Methodology for new content
When a PR opens, a script will check whether the new git blobs exist in the i18n repo for all locales. If they don't, the PR will fail CI.
You (a maintainer) can add a new label
ready-to-translateto the PR, which will open a new issue in the i18n repo with details. That new issue then triggers a workflow that causes the files to be translated and pushed to the i18n repo. Once that happens, the PR in this repo will have its check re-triggered and it should go green, at which point you can merge. For most situations this whole thing should take ~10 minutes end-to-end.If someone pushes more copy changes to the PR, the label will automatically be removed and you will need to add it again to retranslate. So I recommend only adding the label once the PR is signed off to avoid churn. Each translation also costs us money, so this approach also saves us real cash!
A PR with more than 3,000 untranslated words gets held for manual approval. Please ping me if you hit this.
Existing Pull Requests
Any PRs that predate this will need action before they can be merged. Any of the following will run the relevant i18n GitHub Action:
If the PR changes English, add the
ready-to-translatelabel once the check has run.What's translated?
On a track, these files are treated as English and get translated:
exercises/*/*/.docs/instructions.mdexercises/*/*/.docs/instructions.append.mdexercises/*/*/.docs/introduction.mdexercises/*/*/.docs/introduction.append.mdexercises/*/*/.docs/hints.mdexercises/shared/.docs/*.md(help, tests, debug)concepts/*/about.mdconcepts/*/introduction.mddocs/*.md(the track's own documentation pages)Plus a few text fields, rather than whole files:
config.json.meta/config.jsondocs/config.jsonEverything else in the repository is left along. Nothing is ever written to track repositiories. The workflows only read a PR, and the translations are stored in exercism/i18n.
Viewing Translations
There are indexes for each language/repo here at https://github.com/exercism/i18n/blob/main/index/markdown/$LOCALE/$REPO.md where you can get links to all the translations. For example: Hungarian Python.
(Fixes to translations will happen via the forum, but I think that's a different discussion from this issue as it's org-wide and not your (direct!) responsibility as maintainers so I don't want to burden you with more information).
I intend to push Hungarian live today, and then start rolling other (natural) languages out over the next week.