
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
react-intl-redux
Advanced tools
Redux binding for React Intl.
Building idiomatic React Redux Application by having translations in store and dispatching action to update it.
npm install react-intl-redux react react-intl react-redux redux --save
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'))
locale and messages on loadYou 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.
locale and messages on requestYou 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 IntlProviderIn 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>
)
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,
}))
redux-immutableSee the usage in test.
This module does not ship with types definitions by itself, but there is community contributed @types/react-intl-redux package.
There are some examples under the examples folder for reference.
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,
forceUpdate after changing locale.{pure: false}.locale in props.key when dispatching updateIntl.intlSelector for IntlProvider.intl in asynchronous action?A simple solution would be retrive intl object using injectIntl and pass it in the action payload.
FAQs
Redux binding for React Intl
The npm package react-intl-redux receives a total of 9,348 weekly downloads. As such, react-intl-redux popularity was classified as popular.
We found that react-intl-redux demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.