Aller au contenu principal

babel-plugin-formatjs

Traduction Bêta Non Officielle

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é description du descripteur de message pour économiser des octets, car elle n'est pas utilisée à l'exécution.

  • Option pour supprimer defaultMessage du 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 i 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.