Skip to content

Translating this repo: What you need to know as maintainers #2686

Description

@iHiD

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:

  1. "Update Branch" button if available
  2. Rebasing/pushing to the PR
  3. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions