Setup with React project
If you use Create React App, even ejected, follow LinguiJS and Create React App setup guide.
This setup guide is for any project which uses React.
Install
Install
@lingui/cli
,@lingui/macro
, babel-plugin-macros and Babel core packages as a development dependencies and@lingui/react
as a runtime dependency.- npm
- Yarn
npm install --save-dev @lingui/cli @babel/core
npm install --save-dev @lingui/macro babel-plugin-macros # required for macros
npm install --save @lingui/reactyarn add --dev @lingui/cli @babel/core
yarn add --dev @lingui/macro babel-plugin-macros # required for macros
yarn add @lingui/reactIn case you get errors with
import/no-extraneous-dependencies
eslint rule feel free to add the dependencies as non-dev- npm
- Yarn
npm install --save-dev @lingui/cli @babel/core
npm install --save-dev babel-plugin-macros # required for macros
npm install --save @lingui/macro @lingui/reactyarn add --dev @lingui/cli @babel/core
yarn add --dev babel-plugin-macros # required for macros
yarn add @lingui/macro @lingui/reactAdd
macros
plugin to Babel config (e.g:.babelrc
):{
"plugins": [
"macros"
]
}infoIf you use any preset, check first if it contains
macros
plugin. These presets already includesmacros
plugin:react-scripts
Create
.linguirc
file with LinguiJS configuration in root of your project (next topackage.json
). Replacesrc
with a directory name where you have source files:.linguirc{
"locales": ["en", "cs", "fr"],
"catalogs": [{
"path": "src/locales/{locale}/messages",
"include": ["src"]
}],
"format": "po"
}PO format is recommended for message catalogs. See
format
documentation for other available formats.Add following scripts to your
package.json
:package.json{
"scripts": {
"extract": "lingui extract",
"compile": "lingui compile",
}
}Check the installation by running:
- npm
- Yarn
npm run extract
yarn extract
There should be no error and you should see output similar following:
- npm
- Yarn
> npm run extract
Catalog statistics:
┌──────────┬─────────────┬─────────┐
│ Language │ Total count │ Missing │
├──────────┼─────────────┼─────────┤
│ cs │ 0 │ 0 │
│ en │ 0 │ 0 │
│ fr │ 0 │ 0 │
└──────────┴─────────────┴─────────┘
(use "lingui extract" to update catalogs with new messages)
(use "lingui compile" to compile catalogs for production)> yarn extract
Catalog statistics:
┌──────────┬─────────────┬─────────┐
│ Language │ Total count │ Missing │
├──────────┼─────────────┼─────────┤
│ cs │ 0 │ 0 │
│ en │ 0 │ 0 │
│ fr │ 0 │ 0 │
└──────────┴─────────────┴─────────┘
(use "lingui extract" to update catalogs with new messages)
(use "lingui compile" to compile catalogs for production)
Congratulations! You've successfully set up project with LinguiJS. Now it's good time to follow React tutorial or read about ICU Message Format which is used in messages.
Further reading
Checkout these reference guides for full documentation: