I've been in angular(.js) bubble for a pretty long time. During this, I was happily using some framework-specific tools for managing translations - mostly angular-translate. Unfortunately, those tools are limited to the framework and don't help in another context.
What I liked about the setup I had so far:
- short key names - I prefer
t('The source language message'), as it takes less space in the code
- JSON translation files. With abstract keys, they could even be scoped by adding dots to the translation keys
- tooling for automatically extracting keys from source code & adding them to all language files
On top of that, now I want framework independent solution. Internationalization (i18n) is a problem complex enough to have some serious thinking invested in it, and it's completely unrelated to problems solved by JS frameworks.
I did a quick search to see what's out there. Some libraries seemed very suspicious just by the look by the websites; others failed to point towards covering points I listed above.
i18next looks the most impressive - it looks more like a translation ecosystem than just an i18n library. I would need to experiment with it a bit to really tell how well it delivers its promises, but definitively it is at least trying to address all my considerations.
A library from Airbnb - they do well with i18n, so it's worth taking a look.
At least the documentation looks like from the current decade. It can be worth checking.
A solution that tries to cover all possible edge cases of applying genders, complex plurals for languages with less straightforward grammar - for example, Polish.
A general purpose internationalization library in 292 bytes
I want to see it in action! And how far you can get with such a minimalistic solution.
What are your thoughts about i18n in JS? Any library you would recommend me to add or remove from my list?
Interested in reading more such articles from Marcin Wosinek?
Support the author by donating an amount of your choice.