Lingui.js
A readable, automated, and optimized (3 kb) internationalization
...It extracts messages from source code, validates messages from translators, and checks that all messages are translated before shipping to production. Use React components inside localized messages without any limitations. Writing rich-text messages is as easy as writing JSX. For AI to do great translations for you, context is critical. Translating UI copy is difficult because it's usually a list of short strings without enough context. Lingui's localization formats allow developers to write descriptions of where and how your keys are used.