-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Let's translate ALL THE THINGS! #64
Comments
@maxogden Thanks. |
I think that we should check some standard environment variable such as We also might want to consider defaulting to English. My reasoning is that having a language menu pop up the first time for every user is an extra step might cause additional friction for people who are doing workshops on their own. Of course this is assuming that people randomly stumbling upon NodeSchool on their own is a thing. It's also possible that not showing language options is overall more friction if more of those users don't speak English. I'm not sure. In the context of a NodeSchool event I don't think defaulting to a language or not matters because leaders can direct attendees to run I wholeheartedly agree that forking is an undesirable solution to the i18n problem. |
@khalifenizar good feedback, thanks! I think your concerns about adding friction are definitely valid, but it seems to me like something we should build and test out and see if it ends up adding a lot of friction or not. |
I must have stored the |
@khalifenizar OH YEA I forgot about that thread. I'll update the original post in this thread to mention it |
Okay I hereby commit to (slowly) add i18n to |
@maxogden Awesome initiative! maintaining forks for i18n is definitely not optimized, on the other hand built-in i18n support is definitely a path to go. 👍 The seeds in my mind are: that a person will most likely _not_ be using different languages for different workshoppers, and we would also like to promote translations by giving them ideas that they can contribute ;). Also supporting @khalifenizar point we should minimize friction: Hence would like to propose a path in middle, instead of asking for language on each workshopper level we can ask for language once at system level. The idea is that first time the user runs any workshopper, then we can show the language menu and save the value at a common place in the system. Now there could be a case when the language set is not available in that particular workshopper, then workshopper could prompt something like Like this we can minimize friction, What are your thoughts? |
@kushal-likhi You have a point there about setting the user's language on a system level once, gracefully handling when your locale is not available and nudging the community about translating workshops in their language. My only concern is that there's a big difference in terms of user experience between choosing one of 3 locales (or however many) available for a workshop versus choosing a locale from every locale in existence. I think we should probably make the language selection workshop-specific for now just to get it out the door and think about global configuration later. |
Hey guys, As a French Node trainer, I certainly would like to see i18n land in I intend to put in the FR L10n of the website itself, too, I need to get on that. As for the workshoppers, @khalifenizar just committed to adding it, so I won't dup the effort (especially as I'm too busy in the next few weeks) but I'm certainly eager to see this land or, when I have time again for it, offer to help should it be stalled. i18n: putting the World back in World Wide Web, you know 😄 |
Setting an env variable such as LANG=ISOCODE, is something an instructor could easily explain at the very begining of a workshop. Looking forward to the i18n integration. We had to do forks for the Spanish versions of the basic workshoppers. |
Excelent idea! |
I like the idea. One thought about having multiple problems directories, like We could modify the directory structure so that we could have one For this case, would it make sense to introduce something like po files? For example:
|
Hi team, We certainly need a way to i18n the whole thing, not just parts (so any But please, for the love of all that is holy, not these old, limited PO When it comes to JS i18n we have a number of solutions available, but at Best, Christophe Porteneuve |
@linclark You are right, there are a lot of things to translate and it would be less than ideal to duplicate the verification code. The I've used JSON language files before but my second language (Spanish) doesn't have any pluralization edge cases so take that with a grain of salt. I think that it might be easier just to go with the multiple exercise folders for the first attempt at it and then iterate from there on things like not duplicating the exercise logic. I've realized that the later is going to require an i18n solution that is pervasive through each workshop project. Perhaps the second attempt should lay groundwork in |
Freedom of choice for workshop authors sounds nice, but OTOH if the So perhaps standardizing on an i18n tech would be nice. If we wish to I can try and put up a small PoC with it around, say, learnyounode, Christophe Porteneuve |
Do we need the capabilities of messageformat? I was using PO files as an example because the last project I worked on used them, but I don't think we need most of the features, like pluralization, etc. I think we could get away with just having simple string mapping and replacement, e.g:
which would then be handled like this:
This seems like it would be easier for translators to handle than the messageformat syntax. |
It would be easier, for sure. However, we may want to audit the Christophe Porteneuve |
I agree with @linclark it would be great to have just the |
Something to keep in mind with i18n is the actual code to be written. For instance, I had one participant ask me why his code wasn't passing the |
I agree with @bevacqua , we have to focus on resolutions and check with a language that is used |
This is something separate from technical concern, but down the road, it would be great to have Tone & Voice guide (i.e https://bufferapp.com/tone-guide) set. |
I am working on a completely translated workshopper here: workshopper/workshopper#74 it is now in a state where I can choose the language (yeah!) and I can get different output but there is still quite some way ahead of me and I fear I will need help in testing this monster :) |
I just created a PR for adventure to add i18n options there: workshopper/adventure#7 |
Just wanted to let everyone know that we've kicked off localization efforts for io.js. Sign up here nodejs/iojs.org#125 |
Hey guys, Just FYI, in anticipation of our first NodeSchool Paris (at Mozilla Paris, Feb 21, filled-up and with 125% waiting list already…), I'm forking every workshopper (plus workshopper itself) and adding FR translations (and upgrading to latest workshopper when necessary). So if anyone by sheer random chance is tackling FR just now, get in touch so we don't overlap. |
Hey guys, FYI, the status of g11n and FR L10n: Infrastructure
Workshops
Next in line: learn-generators, makemehapi, kick-off-koa and functional-javascript-workshop. Most of this work is scheduled for this week. Then there are plans to backport |
A comprehensive roadmap (at least a to-do list), that I'll update as I go, on the work around NodeSchool workshops and workshoppers: https://gist.github.com/tdd/d7b2b719485cdf87bd5f. Comments welcome! |
👍 Way cool! @tdd I am thinking that instead of translating adventure it might be better to switch materials to workshoppers it terms of constant maintenance Cost. workshopper/javascripting#64 |
@martinheidegger & @tdd: two reasons that workshopper has a high barrier to entry than adventure that we can fix are:
Workshopper 2+ was intended to be way more flexible than the original implementation that came from stream-adventure, which I believe it is, but that flexibility introduces challenges, such as the above, but I believe they are easily addressable and am not at all married to the particular implementation and hope for it to learn and grow from continued use. While I'd like to be able to have input on the changes proposed by others I'm very willing to defer to those who have more energy and time than me to invest in making it better and currently you two are probably at that place. |
Hey guys, A few thoughts I have on this:
Specifically, as a first order of business, I'd love to merge my PR on I would then probably migrate former workshop upgrades to the new, trivial boilerplate when applicable, and tackle the docs part of the to-do list, before pitching the result to Best, |
I am working on a API compatibility between workshopper & adventure workshopper/workshopper#106 at some point I will need help testing it but it should allow easy porting of current adventures -> workshopper. |
FYI: @sethvincent just kindly merged a PR that added translation to javascripting using workshopper-adventure |
@martinheidegger you're awesome 🎉 |
Hey @martinheidegger so lemme get this right: is At any rate: awesomeness 🎉, as this will allow me to contrib FR to Do you think this path can be take for |
Its more a |
This issue has been open for too long and needs rethinking. Closing it for now. |
Hey @nodeschool/owners, I need your help making workshop translations better!
I've recently hosted events in Taiwan and Japan, and while we were able to come up with an okay system for translating the main website, we still don't have a good system for translating the workshoppers.
The current solution is to fork
learnyounode
and publish a translated version to npm called e.g.learnyounode-zh-tw
orlearnyounode-jp
.This isn't a very good solution though as it requires forking, and that means it adds a ton of maintenance overhead. For example, if
learnyounode
gets a bugfix then that bugfix will have to get manually applied to all of the forks. That is not very nice!Some other issues I've run in to:
workshopper
noradventure
have built-in translation supportworkshopper
, for examplelevelmeup
uses[email protected]
but it needs to get upgradedI'd like to propose a solution, which is to add a feature to both
workshopper
andadventure
that adds a new menu when you first run the workshop that lets you choose your language. So when you runlearnyounode
the first time you will get a list of languages, and you select the one you want, and it sets that in config somewhere and doesn't have to ask you again (unless you specifically open up the language selection menu again by running e.g.learnyounode language
or something).Also we shouldn't fork anymore, we should instead just store all of the different translations in the original workshopper repository. For example, we currently have a problems folder, and in both
workshopper
andadventure
you can specify the problems path, but we should add a new feature to both of these that lets you pass in a map of multiple languages and multiple paths to problems folders in different languages, likeproblems-en
andproblems-jp
.So, I need all of your help! Here's a big TODO list. If you want to work on one of these, declare it in the comments.
TODO for making translations awesome
levelmeup
to latestworkshopper
workshopper
adventure
workshopper
andadventure
based workshopsOther relevant discussions
Ideas? Feedback? Comment below!
The text was updated successfully, but these errors were encountered: