All Projects → ratson → React Intl Redux

ratson / React Intl Redux

Licence: mit
Redux binding for React Intl.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to React Intl Redux

vue-i18n-manager
Internationalization plugin for Vue
Stars: ✭ 18 (-93.98%)
Mutual labels:  i18n
Loritta
💁 A multipurpose, multilanguage, customizable, modular, and very cute bot for Discord using JDA! ~Making your server more awesome~
Stars: ✭ 253 (-15.38%)
Mutual labels:  i18n
React Boilerplate Typescript
🔥 A highly scalable, offline-first foundation with the best developer experience and a focus on performance and best practices ( Typescript )
Stars: ✭ 279 (-6.69%)
Mutual labels:  i18n
labels
Bolt Labels extension - Translatable labels for Bolt
Stars: ✭ 18 (-93.98%)
Mutual labels:  i18n
Flutter i18n
This plugin create a binding between your translations from .arb files and your Flutter app.
Stars: ✭ 255 (-14.72%)
Mutual labels:  i18n
I18next Scanner
Scan your code, extract translation keys/values, and merge them into i18n resource files.
Stars: ✭ 259 (-13.38%)
Mutual labels:  i18n
i18n
Package i18n is for app Internationalization and Localization.
Stars: ✭ 79 (-73.58%)
Mutual labels:  i18n
I18n Editor
GUI for editing your i18n translation files
Stars: ✭ 290 (-3.01%)
Mutual labels:  i18n
Address Formatting
templates to format geographic addresses
Stars: ✭ 253 (-15.38%)
Mutual labels:  i18n
Vue Currency Input
Easy input of currency formatted numbers for Vue.js.
Stars: ✭ 279 (-6.69%)
Mutual labels:  i18n
vim-localorie
A Vim plugin for easy look-up of translations for Rails i18n YAML keys.
Stars: ✭ 27 (-90.97%)
Mutual labels:  i18n
wp-l10n-validator
Gettext localization validator for WordPress
Stars: ✭ 17 (-94.31%)
Mutual labels:  i18n
I18n4go
i18n tooling for Golang
Stars: ✭ 264 (-11.71%)
Mutual labels:  i18n
i18next-scanner-typescript
Typescript transform for i18next-scanner
Stars: ✭ 21 (-92.98%)
Mutual labels:  i18n
Eo Locale
🌏Internationalize js apps 👔Elegant lightweight library based on Internationalization API
Stars: ✭ 290 (-3.01%)
Mutual labels:  i18n
polib
Pure python library to manipulate, create, modify gettext files (pot, po and mo files).
Stars: ✭ 34 (-88.63%)
Mutual labels:  i18n
Mojito
An automation platform that enables continuous localization.
Stars: ✭ 256 (-14.38%)
Mutual labels:  i18n
Gotext
Go (Golang) GNU gettext utilities package
Stars: ✭ 292 (-2.34%)
Mutual labels:  i18n
Js Lingui
🌍📖 A readable, automated, and optimized (5 kb) internationalization for JavaScript
Stars: ✭ 3,249 (+986.62%)
Mutual labels:  i18n
Tower
i18n & L10n library for Clojure/Script
Stars: ✭ 264 (-11.71%)
Mutual labels:  i18n

React Intl Redux

Redux binding for React Intl.

Building idiomatic React Redux Application by having translations in store and dispatching action to update it.

Installation

npm install react-intl-redux react react-intl react-redux redux --save

Usage

import React from 'react'
import ReactDOM from 'react-dom'
import { createStore, combineReducers } from 'redux'
import { FormattedNumber } from 'react-intl'
import { Provider, intlReducer } from 'react-intl-redux'
import reducers from '<project-path>/reducers'

const reducer = combineReducers({
  ...reducers,
  intl: intlReducer,
})

const store = createStore(reducer)

const App = () => (
  <Provider store={store}>
    <FormattedNumber value={1000} />
  </Provider>
)

ReactDOM.render(<App />, document.getElementById('container'))

Provide locale and messages on load

You should provide a different locale and messages if your user is not using en locale.

const initialState = {
  intl: {
    locale: 'it',
    messages: {
      'app.greeting': 'Ciao!',
    },
  },
  // ...other initialState
}
const store = createStore(reducer, initialState)

Refer to the initial-locale example for more details.

Switch locale and messages on request

You could also switch locale on user's request by dispatching updateIntl action.

import { updateIntl } from 'react-intl-redux'

store.dispatch(updateIntl({
  locale,
  messages,
}))

React Intl in browsers only contain locale data for basic English by default, see Loading Locale Data for loading locale data in browsers.

Provider vs IntlProvider

In most cases, react-intl-redux will be wrapped immediately after Provider from react-redux. For convenient, react-intl-redux provides Provider to do that for you.

However, if you don't want it, you could do it manually via IntlProvider. For example,

import React from 'react'
import { IntlProvider } from 'react-intl-redux'
import { Provider } from 'react-redux'

const App = () => (
  <Provider store={store}>
    <IntlProvider>
      <App />
    </IntlProvider>
  </Provider>
)

Formatting Data

react-intl provides two ways to format data, see the official docs.

To change formats through React components,

import { updateIntl } from 'react-intl-redux'

store.dispatch(updateIntl({
  locale,
  formats,
  messages,
}))

Use with redux-immutable

See the usage in test.

TypeScript Support

This module does not ship with types definitions by itself, but there is community contributed @types/react-intl-redux package.

Examples

There are some examples under the examples folder for reference.

Troubleshooting

  1. Why my connected component does not update after locale change?

By default, locale is used as key for IntlProvider, which will trigger re-render when locale changes, things should just work.

If it doesn't, here are few solutions could be tried,

  • Do a forceUpdate after changing locale.
  • Mark the connecting compoent {pure: false}.
  • Pass locale in props.
  • Set key when dispatching updateIntl.
  • Provide custom intlSelector for IntlProvider.
  1. How to use intl in asynchronous action?

A simple solution would be retrive intl object using injectIntl and pass it in the action payload.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].