3.24.0 • Published 9 months ago

use-intl v3.24.0

Weekly downloads
418
License
MIT
Repository
github
Last release
9 months ago

🌐 use-intl

Internationalization for React

Features

Internationalization (i18n) is an essential part of the user experience, therefore use-intl gives you all the parts you need to get language nuances right.

  • 🌟 ICU message syntax: Localize your messages with interpolation, cardinal & ordinal plurals, enum-based label selection and rich text.
  • 📅 Dates, times & numbers: Apply appropriate formatting without worrying about server/client differences like time zones.
  • Type-safe: Speed up development with autocompletion for message keys and catch typos early with compile-time checks.
  • 💡 Hooks-based API: Learn a single API that can be used across your code base to turn translations into plain strings or rich text.
  • ⚔️ Standards-based: Use the best parts of built-in JavaScript APIs and supplemental lower-level APIs from Format.JS.

What does it look like?

// UserProfile.tsx
import {useTranslations} from 'use-intl';
 
export default function UserProfile({user}) {
  const t = useTranslations('UserProfile');
 
  return (
    <section>
      <h1>{t('title', {firstName: user.firstName})}</h1>
      <p>{t('membership', {memberSince: user.memberSince})}</p>
      <p>{t('followers', {count: user.numFollowers})}</p>
    </section>
  );
}
// en.json
{
  "UserProfile": {
    "title": "{username}'s profile",
    "membership": "Member since {memberSince, date, short}",
    "followers": "{count, plural, ↵
                    =0 {No followers yet} ↵
                    =1 {One follower} ↵
                    other {# followers} ↵
                  }"
  }
}

Installation

  1. npm install use-intl
  2. Add the provider
  3. Use internationalization in components
import {IntlProvider, useTranslations} from 'use-intl';

// You can get the messages from anywhere you like. You can also
// fetch them from within a component and then render the provider 
// along with your app once you have the messages.
const messages = {
  "App": {
    "hello": 'Hello {username}!'
  }
};

function Root() {
  return (
    <IntlProvider messages={messages} locale="en">
      <App user={{name: 'Jane'}} />
    </IntlProvider>
  );
}

function App({user}) {
  const t = useTranslations('App');
  return <h1>{t('hello', {username: user.name})}</h1>;
}

Have a look at the minimal setup example to explore a working app.

→ Read the docs

3.24.0

9 months ago

3.23.1

9 months ago

3.23.0

9 months ago

3.23.3

9 months ago

3.23.2

9 months ago

3.23.5

9 months ago

3.23.4

9 months ago

3.22.0

9 months ago

3.19.0-canary.0

11 months ago

3.21.0-canary.0

10 months ago

3.19.4

10 months ago

3.19.3

10 months ago

3.19.5

10 months ago

3.19.0

11 months ago

3.19.2

10 months ago

3.19.1

11 months ago

3.21.2-canary.0

9 months ago

3.22.0-canary.0

10 months ago

3.20.0

10 months ago

3.18.0-canary.0

11 months ago

3.21.1

10 months ago

3.18.1

11 months ago

3.18.0

11 months ago

3.20.1-canary.0

10 months ago

3.15.3-canary.0

1 year ago

3.14.1

1 year ago

3.15.6-canary.0

1 year ago

3.15.1-canary.1

1 year ago

3.15.1-canary.0

1 year ago

3.17.6

11 months ago

3.17.5

11 months ago

3.17.0

1 year ago

3.17.2

1 year ago

3.17.1

1 year ago

3.17.4

11 months ago

3.17.3

11 months ago

3.16.0-canary.4

1 year ago

3.16.0-canary.3

1 year ago

3.16.0-canary.2

1 year ago

3.16.0-canary.1

1 year ago

3.16.0-canary.0

1 year ago

3.15.0

1 year ago

3.15.2

1 year ago

3.15.1

1 year ago

3.15.4

1 year ago

3.15.3

1 year ago

3.15.5

1 year ago

3.16.0

1 year ago

3.16.0-alpha.0

1 year ago

3.14.0

1 year ago

3.13.0

1 year ago

3.12.1

1 year ago

3.12.2

1 year ago

3.12.0

1 year ago

3.11.3

1 year ago

3.11.2

1 year ago

3.11.1

1 year ago

3.11.0

1 year ago

3.10.0

1 year ago

3.9.5

1 year ago

3.9.4

1 year ago

3.9.3

1 year ago

3.9.2

1 year ago

3.9.1

1 year ago

3.9.0

1 year ago

3.8.0

1 year ago

3.7.0

1 year ago

3.6.0

1 year ago

3.6.0-alpha.1

1 year ago

3.5.4

1 year ago

3.5.3

1 year ago

3.5.2

1 year ago

3.5.1

2 years ago

3.5.0

2 years ago

3.4.5

2 years ago

3.4.4

2 years ago

3.4.3

2 years ago

3.4.2

2 years ago

3.4.1

2 years ago

3.4.0

2 years ago

3.3.3

2 years ago

3.3.2

2 years ago

3.3.1

2 years ago

3.2.2

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.2.5

2 years ago

3.2.4

2 years ago

3.2.3

2 years ago

2.22.1

2 years ago

2.22.0

2 years ago

2.22.3

2 years ago

2.22.2

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.1.4

2 years ago

2.21.0

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

3.3.0

2 years ago

3.0.0-rc.6

2 years ago

3.0.0-rc.5

2 years ago

2.17.4-alpha.1

2 years ago

2.19.4

2 years ago

2.19.2

2 years ago

2.19.3

2 years ago

2.19.0

2 years ago

2.19.1

2 years ago

2.15.0

2 years ago

2.15.1

2 years ago

3.0.0-beta.1

2 years ago

3.0.0-beta.3

2 years ago

3.0.0-beta.2

2 years ago

2.17.5-alpha.1

2 years ago

2.14.6

2 years ago

2.14.3

2 years ago

2.18.0

2 years ago

2.17.2-alpha.1

2 years ago

2.17.2-alpha.2

2 years ago

2.17.2-alpha.3

2 years ago

2.17.4

2 years ago

2.17.5

2 years ago

2.17.2

2 years ago

2.17.3

2 years ago

2.17.0

2 years ago

2.17.1

2 years ago

2.20.2

2 years ago

2.20.0

2 years ago

2.20.1

2 years ago

2.16.0

2 years ago

2.11.0

2 years ago

2.13.0-beta.1

2 years ago

2.13.0-beta.2

2 years ago

2.13.4

2 years ago

2.13.2

2 years ago

2.13.0

2 years ago

2.13.1

2 years ago

2.12.0-alpha.1

2 years ago

2.12.0

2 years ago

2.14.1

2 years ago

2.14.2

2 years ago

2.10.3

2 years ago

2.14.0

2 years ago

2.10.4

2 years ago

2.8.0

3 years ago

2.9.2

3 years ago

2.9.1

3 years ago

2.7.7-alpha.0

3 years ago

2.11.0-alpha.2

3 years ago

2.11.0-alpha.1

3 years ago

2.10.1

3 years ago

2.10.2

3 years ago

2.10.0

3 years ago

2.9.0

3 years ago

2.9.2-alpha.0

3 years ago

2.10.0-alpha.3

3 years ago

2.10.0-alpha.4

3 years ago

2.7.6

3 years ago

2.7.5

3 years ago

2.7.4-alpha.2

3 years ago

2.7.4

3 years ago

2.7.3

3 years ago

2.7.3-alpha.0

3 years ago

2.7.2-alpha.1

3 years ago

2.7.1-alpha.5

3 years ago

2.7.1-alpha.4

3 years ago

2.7.1-alpha.2

3 years ago

2.7.1-alpha.1

3 years ago

2.7.1-alpha.0

3 years ago

2.7.0

3 years ago

2.7.2

3 years ago

2.7.1

3 years ago

2.4.1

3 years ago

2.6.0

3 years ago

2.4.1-alpha.1

3 years ago

2.5.0

3 years ago

2.4.1-alpha.3

3 years ago

2.4.1-alpha.2

3 years ago

2.4.1-alpha.5

3 years ago

2.4.1-alpha.4

3 years ago

2.3.2

4 years ago

2.4.0

3 years ago

2.3.1

4 years ago

2.3.4

4 years ago

2.3.3

4 years ago

2.3.5

4 years ago

2.3.0

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0-alpha.1

4 years ago

2.0.0

4 years ago

1.5.1

4 years ago

1.5.0

4 years ago

1.4.6

4 years ago

1.4.7

4 years ago

1.4.5

4 years ago

1.4.4

4 years ago

1.4.3

4 years ago

1.4.3-alpha.5

4 years ago

1.4.3-alpha.4

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.1-alpha.0

4 years ago

0.1.1-alpha.31

4 years ago

1.2.0

4 years ago

1.3.0

4 years ago

1.1.0

5 years ago

1.0.0

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago

0.0.1

5 years ago