Develop with formatjs
Aside from a strong focus on facilitating i18n production pipeline, formatjs
also aims to improve i18n DevEx with our eslint-plugin-formatjs.
Linter Installation
- npm
- yarn
npm i -D eslint-plugin-formatjs eslint
yarn add -D eslint-plugin-formatjs eslint
Then in your eslint config:
{
"plugins": ["formatjs"],
"rules": {
"formatjs/no-offset": "error"
}
}
Head over to eslint-plugin-formatjs for more details on our rules.
Error Codes
react-intl
is designed to fail fast when there's a configuration issue but fall back to defaultLocale
when there's a translation issues. Below are the list of errors that we emit out that can be caught during testing:
FORMAT_ERROR
Issue when we try to format a sentence but some of the placeholder values are malformed, e.g passing in a string
for a Date
or such.
UNSUPPORTED_FORMATTER
We trigger this error when a custom format is being declared but there's no corresponding formatter with it. For example:
intl.formatMessage({
defaultMessage: 'the price is {p, number, customCurrency}',
})
and there's no formatter for customCurrency
.
INVALID_CONFIG
When some config values are misconfigured such as missing locale
.
MISSING_DATA
When some native Intl APIs don't support certain locales, or missing locale-data
when polyfills are setup. This typically happens when you're running on an older browsers/Node, or try to use newer APIs in browsers that have not supported them.
MISSING_TRANSLATION
This gets triggered whenever we try to look up a translated message in messages
for a given id
and it's not there and there is no fallback defaultMessage
for the given id
.
This error will be triggered very often since it happens for every message that does not have a translation. Therefore if you do log it remotely there should be throttling in place.