[Improvement][All parts of Exercism] Translating to languages other than English

This is a big and long-term project proposal. Still, it might work with our active community, and it would broaden its size, which might mean more donors as well.

Exercism is by far the best way to learn programming, hands down, no competition. Still, it’s only available in English, which considerably limits access.

Here’s a Brazilian subreddit for developers which has over 100 000 members. Upon closer inspection, you’ll notice their suggestions for learning material are exclusively in Brazilian Portuguese. There are over 20 suggestions, and also a really long FAQ regarding mostly a developer’s career, but also plenty of other topics;

Furthermore, a quick look at the flairs (you’ll want the “Dúvida …” ones for questions) suggests the subreddit has way more beginners/enthusiasts than senior devs.

That said, there are plenty of collaborative translation platforms available, with settings for roadmaps, milestones, peer review, and so on. I believe our community can pull it off. I already translated every string for a few Android apps simply because devs were nice to me (via email), and Exercism’s collaborative culture/environment already cultivates those feelings!

Here’s how I’m envisioning this project:

  1. The initial languages are chosen. Spanish, French and Brazilian Portuguese (European Portuguese can be extremely different, and let alone the 20x bigger population, pt-BR tends to be more compatible with African and other variants) are widely spoken and plenty of those speakers also speak English (as opposed to, e.g., Mandarin, which has far more speakers, but way fewer translators, I guess);

  2. Volunteers are “recruited” to evaluate if it’s feasible to translate to that language (mostly by the number of volunteers and perhaps a “how much time do you think you can spare a week?” form). I think this shouldn’t be done on an assignment basis, but as an invitation, a spare time job (which I think is the model Exercism already follows for contributions);

  3. Priority #1 for any given language is to translate the main website, which will be the basis/entry point for the next steps;

  4. Translations are made per programming language. Python students will feel more comfortable translating what they’re working on (and improving their understanding). This means separate sibling translation projects per language per track. There are platforms which support multi-language translations (and stats etc.) for the same source. I’m not sure if those multi-language projects per track can be grouped under Exercism’s big umbrella, but that should not be a big problem;

  5. Users get to choose on their profile settings what is their preferred language and which ones they’d accept as a backup (i.e., non-native or partially understood languages);

  6. Whenever a user starts a track, they’re presented their languages’ availability (main language fully supported, percentage translated, fallbacks available, or even if none of their languages are supported and the only fallback is the English original etc.) and choose whether to enroll or not;

  7. Optionally, more language features could be implemented, such as listing programming languages by translation stats, so someone who is open for/intends to study more than 1 programming language another parameter for choosing.

Obviously, this would be a continuing, never-ending project. There will always be new text to translate, changes in original English text should somehow will also happen and may require adjustments, other languages may be added, and so on.

I don’t think it’s reasonable to ever foresee an end with a fully functional multi-language Exercism. But that’s not the goal. We should aim at making Exercism more available, not fully. People can google translate a few untranslated words or sentences if needed. The goal is to try to attract more people, and I think it could have very good results.