Translation
Anyone who could help translate our labels into other languages. Find an existing doc, or make a new one (may need some guidance), at https://drive.google.com/drive/folders/1QDCwxmTWZ8-9nLUg_b0M47UYaHXFR3n0.
Current language assignments:
- Valerie - German
- Eugene - Romanian
- Eugene - Russian
- Vi - Vietnamese
- Miguel - Portuguese
- Jason - Chinese
- Anita - French
Languages currently seeking (most commonly spoken languages in MA besides English)
- Haitian Creole
- Spanish (I believe we have someone for Spanish, too, but I don't recall who)
Language codes: http://www.loc.gov/standards/iso639-2/php/English_list.php
Google localization docs for collaborative editing: https://drive.google.com/drive/folders/1QDCwxmTWZ8-9nLUg_b0M47UYaHXFR3n0
Eugene - Romanian (and another one?)
Romanian and Russian!
Hi there, I can help translate the Chinese label. Where should I start? I saw a localization folder under src, is that all of them?
@KevinSJ: That would be amazing! All the ones we have so far are in indeed in that folder. The 'en.js' file is where the English snippets are being gathered. A warning - some of the text may go through some changes soon, but we'd be grateful for whatever you can do!
@KevinSJ: You'd copy 'en.js' and rename it to the language code for Chinese, then change the values from English phrases to Chinese phrases. If you're not familiar with programming, let us know and we'll help you get started.
@knod Thanks for the hint. I am actually a programmer, but it's my first time doing localization for a React project. :smiley: I will start working on it now, let me know when the change happens so I can update the translation.
@KevinSJ You can use these instructions as well: https://github.com/codeforboston/cliff-effects/wiki/Guide:-Help-Translate (although they're aimed at non-programmers).
Thanks!
Thoughts:
- One of the things I think could really help translators is to have them be looking at the text in an editor that has highlighting so that it's clear what is in quotes and what isn't. What if we make CodePens of 'en.j' and have people fork that and use it to create the translations.
- Does anyone have good ideas about automatically detecting when the English version has been changed to make sure that the other versions get updated appropriately? Should we give version numbers to each of the keys or something, so that the tests we write will very easily catch when something's not in sync?
- Should we use double quotes instead of single quotes so translators don't have to deal with escaping an apostrophe? Should we use template tick marks instead?
- Is there a better place to have general discussion about various aspects of localization?
Responses welcome!
knod and I discussed some ideas one day after knod wrote the previous comments. knod thought that codepen.io solution would not work and discussed other options. Based on this and a discussion with eblockwood, I wrote https://docs.google.com/document/d/1oOrynLlGSRdCjzE7bV46lp4c-cqlboaxCNFbO2qaK1I/edit#
For now, we've decided to go with writing localization files through a system using Google docs and a custom script (unpublished). The files are here: https://drive.google.com/drive/folders/1QDCwxmTWZ8-9nLUg_b0M47UYaHXFR3n0?usp=sharing
The docs automatically mark when a version is out of alignment and should mark which specific snippets are out of date.
The question of how/when to update the google docs from the github files is still up in the air. What makes the most sense right now is to edit the localization stuff in the google docs only and then copy/paste to our local files.
Also, we need to discuss a clear way to describe how to version the files and snippets correctly.
Possible language tag values: https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
~Fun project - make a site that has a table of the language values by scraping that webpage.~ Maybe this site will do: http://www.loc.gov/standards/iso639-2/php/English_list.php. Instructions are to use the ISO 639-1 version if it exists and the ISO 639-2 version if it doesn't.