How to use
npx create-next-app --example with-react-intl with-react-intl-app # or yarn create next-app --example with-react-intl with-react-intl-app
Download the example:
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-react-intl cd with-react-intl
Install it and run:
npm install npm run dev # or yarn yarn dev
The idea behind the example
This example app shows how to integrate React Intl with Next.
Features of this example app
- Server-side language negotiation
- React Intl locale data loading via
- React Intl integration with custom App component
- Default message extraction via
- Translation management via build script and customized Next server
- withIntl HOC for pages because injectIntl do not hoist static methods.
This app stores translations and default strings in the
lang/ dir. This dir has
.messages/ subdir which is where React Intl's Babel plugin outputs the default messages it extracts from the source code. The default messages (
en.json in this example app) is also generated by the build script. This file can then be sent to a translation service to perform localization for the other locales the app should support.
The translated messages files that exist at
lang/*.json are only used during production, and are automatically provided to the
<IntlProvider>. During development the
defaultMessages defined in the source code are used. To prepare the example app for localization and production run the build script and start the server in production mode:
$ npm run build $ npm start
You can then switch your browser's language preferences to French and refresh the page to see the UI update accordingly.