deso-protocol / frontend

DeSo frontend
MIT License
266 stars 135 forks source link

What is the plan on i18n? #383

Open VickyAgravat opened 3 years ago

VickyAgravat commented 3 years ago

Do you have any plan to support locale language?

If not, So, how we can localize the site with other than english language?

maebeam commented 3 years ago

We would love to support efforts to localize the app. I've heard good things about https://crowdin.com/. Open to other suggestions

chafreaky commented 3 years ago

@maebeam I'd love to take that on (for French as an example), is there support for it already on the frontend client?

maebeam commented 3 years ago

There is not support at the moment, it would need to be added

VickyAgravat commented 3 years ago

Can we expect support of https://angular.io/guide/i18n it would be very useful for localizing.

Because, more BitClout node authors ask to support in their local language.

tsheaff commented 3 years ago

Having implemented internationalization a few times before, it seems to me there are a few parts to this (large) project:

1) Pick a vendor for actually sourcing the internationalized strings. Crowdin looks promising. I've also had great success with Smartling which is a great product (used by top apps like Spotify and Calm for localization). There's a cost associated with either, proportional to the number of words x languages we'd need 2) Restructure the frontend codebase to extract out all of the user-facing strings into a format that can be served up to one of these translatioin vendors, and then swapped in at runtime with a static file of translated strings. This includes good tokenization of all strings. 3) Build out the connection between (1) and (2), including detecting which language a user prefers (likely defaulting based on Accept-Language header, but then giving users an option to change their language as well)? 4) Figure out how the broader community of frontends beyond just bitclout.com can benefit from the same translation memory, and/or add their own strings into the memory bank and have access to the results. 5) Ongoing, there's a maintenance cost as new strings are added to the UI and need to be translated in N languages. Ideally this can be built out in the CI/CD process (e.g. fail if new strings are missing translation), but there'll be some kind of SLA on how long new translations take to come in.

The nice part is that getting it working for Language 1 is hard, but Language 2, 3, 4, 5, etc. should be nearly trivial. The only exception would be right-to-left scanning languages lke Hebrew or Arabic.

cc @maebeam @VickyAgravat

tsheaff commented 3 years ago

@maebeam beyond e.g. a discord channel, what is y'alls typical process for coordinating work on a larger project like this one? 🙏 💎

maebeam commented 3 years ago

@tysheaff Discord is best at the moment. We are in the middle of some large frontend changes that will make it very difficult to kick start this project at this time. In about two weeks we could look at starting an internationalization effort.