This PR implements Internationalized Routing using formatjs / react-intl. ## Changelog - Updated formatjs to latest version - Remove deprecated babel-react-intl-plugin in favor of babel-formatjs-plugin - Remove server in favour of Internationalized Routing - Added linter with formatjs rules - Refactored JSX - Added missing types - Auto run formtjs script via before hooks - Adjusted readme docs - Added message descriptions - Removed default configs fixes #27870 ## Bug - [x] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [x] Make sure the linting passes
1.9 KiB
Example app with React Intl
This example app shows how to integrate React Intl with Next.js.
How to use
Execute create-next-app
with npm or Yarn to bootstrap the example:
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
Deploy it to the cloud with Vercel (Documentation).
Features of this example app
- React Intl integration with custom App component
<IntlProvider>
creation withlocale
,messages
props- Default message extraction via
@formatjs/cli
integration - Pre-compile messages into AST with
babel-plugin-formatjs
for performance - Translation management
Translation Management
This app stores translations and default strings in the lang/
dir. The default messages (en.json
in this example app) is also generated by the following script.
$ npm run i18n:extract
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 defaultMessage
s 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 German or French and refresh the page to see the UI update accordingly.