Shortly after we launched our beta, we had so many amazing Diplomats volunteer from across the world to translate CodeCombat into ~20 languages before we could blink. We set up i18next to help translate our static text and also added an InternationalizationNode to Treema to help translate strings inside our levels. Cool.
But where did we put the i18next-based strings? Why, we just hardcoded them into a bunch of CoffeeScript files in app/locale and compiled them into the app, of course!
It's past time for that to change, since I can't keep manually transferring updates for all the languages from the exploding Google Spreadsheet we used to collect the initial translations into those locale files. Instead, we need:
See also #65.
We may end up keeping these in the locale files for easy collaboration with GitHub. Not yet totally decided.
I think the best way to go forward with this is to have each locale compiled into a separate JS file and then loaded dynamically, like we do now for the test and demo views. For example.
Current system is working pretty well: website i18n strings are in GitHub, in separate .coffee files loaded as needed, and database content has its /i18n interface.