babel-plugin-formatjs
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Traite les messages texte pour la traduction dans les modules utilisant react-intl, spécifiquement :
-
Analyse et vérifie que les messages sont conformes à ICU sans problème de syntaxe.
-
Supprime la propriété
descriptiondu descripteur de message pour économiser des octets, car elle n'est pas utilisée à l'exécution. -
Option pour supprimer
defaultMessagedu descripteur de message afin d'économiser des octets, car non utilisé à l'exécution. -
Injecte automatiquement l'ID de message selon un motif spécifique.
Installation
- npm
- yarn
npm i babel-plugin-formatjs
yarn add babel-plugin-formatjs
Utilisation
Ce plugin Babel ne visite que les modules ES6 qui importent React Intl via import.
Les descripteurs de messages par défaut pour la langue principale de l'application seront traités à partir de : defineMessages(), defineMessage(), intl.formatMessage et <FormattedMessage> ; toutes ces fonctions étant des exports nommés du package React Intl.
Via babel.config.json (Recommandé)
babel.config.json
{
"plugins": [
[
"formatjs",
{
"idInterpolationPattern": "[sha512:contenthash:base64:6]",
"ast": true
}
]
]
}
Via l'API Node
Les descripteurs de messages extraits sont disponibles via la propriété metadata de l'objet retourné par l'API transform() de Babel :
require('@babel/core').transform('code', {
plugins: ['formatjs'],
}) // => { code, map, ast, metadata['formatjs'].messages, metadata['formatjs'].meta };
Options
overrideIdFn
Fonction de signature (id: string, defaultMessage: string, description: string|object) => string permettant de surcharger l'ID à la fois dans le JavaScript généré et dans les messages.
idInterpolationPattern
Si certains descripteurs de message n'ont pas d'ID, ce pattern servira à générer automatiquement leurs ID. Valeur par défaut : [sha512:contenthash:base64:6]. Voir nodejs crypto createHash pour les algorithmes de hachage & nodejs buffer docs pour les encodages.
removeDefaultMessage
Supprime le champ defaultMessage dans le JavaScript généré après extraction.
additionalComponentNames
Noms de composants supplémentaires pour extraire les messages, ex : ['FormattedFooBarMessage']. NOTE : Par défaut, nous vérifions que FormattedMessage est importé depuis moduleSourceName pour garantir le fonctionnement des alias. Cette option ne le fait pas, donc elle est moins sûre.
additionalFunctionNames
Noms de fonctions supplémentaires pour extraire les messages, ex : ['$formatMessage']. À utiliser si vous préférez aliaser formatMessage en quelque chose de plus court comme $t.
pragma
Analyse une pragma personnalisée supplémentaire spécifique. Permet d'étiqueter certains fichiers avec des métadonnées comme project. Par exemple avec ce fichier :
// @intl-meta project:my-custom-project
import {FormattedMessage} from 'react-intl'
;<FormattedMessage defaultMessage="foo" id="bar" />
et avec l'option {pragma: "@intl-meta"}, nous extrairons // @intl-meta project:my-custom-project en {project: 'my-custom-project'} dans le fichier résultat.
ast
Pré-analyse defaultMessage en AST pour de meilleures performances à l'exécution. Ce flag n'a aucun effet si removeDefaultMessage est true.
preserveWhitespace
Quand activé (true), désactive la suppression des espaces superflus dans les messages.