use-intl 🌐
A minimal, but complete solution for managing translations, date, time and number formatting in React apps.
Features
- 🌟 I18n is an essential part of the user experience, therefore this library doesn't compromise on flexibility and never leaves you behind when you need to fine tune a translation. Messages use the proven ICU syntax which covers interpolation, plurals, ordinal pluralization, label selection based on enums and rich text.
- 📅 Built-in date, time and number formatting provides all the necessary parts you need for localisation. You can use global formats for a consistent look & feel of your app and integrate them with translations.
- 💡 A hooks-only API ensures that you can use the same API for
children
as well as for attributes which expect strings. - ⚔️ Based on battle-tested building blocks from Format.JS (used by
react-intl
), this library is a thin wrapper around high-quality, lower-level APIs for i18n.
What does it look like?
This library is based on the premise that messages can be grouped by namespaces (typically a component name).
{
"LatestFollower": {
"latestFollower": "{username} started following you",
"followBack": "Follow back"
}
}
function LatestFollower({user}) {
const t = useTranslations('LatestFollower');
return (
<>
<Text>{t('latestFollower', {username: user.name})}</Text>
<IconButton aria-label={t('followBack')} icon={<FollowIcon />} />
</>
);
}
Installation
- Install
use-intl
in your project - Add the provider
import {IntlProvider} from 'use-intl';
const messages = {
App: {
hello: 'Hello'
}
};
ReactDOM.render(
<IntlProvider messages={messages} locale="en">
<App />
</IntlProvider>
)
- Based on the features you need and the browsers you support, you might have to provide polyfills.
- Use translations in your components!
Usage
Please refer to the docs of next-intl
.