Saltar al contenido principal

Complemento de Babel para FormatJS

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Procesa mensajes de cadena para traducción en módulos que usan react-intl, específicamente:

  • Analiza y verifica que los mensajes cumplan con ICU sin problemas de sintaxis.

  • Elimina description del descriptor de mensaje para ahorrar bytes ya que no se usa en tiempo de ejecución.

  • Opción para eliminar defaultMessage del descriptor de mensaje y ahorrar bytes, ya que no se usa en tiempo de ejecución.

  • Inyecta automáticamente IDs de mensaje basados en patrones específicos.

Instalación

npm i babel-plugin-formatjs

Uso

Este complemento de Babel solo procesa módulos ES6 que import React Intl.

Los descriptores de mensajes predeterminados para el idioma principal de la aplicación se procesarán desde: defineMessages(), defineMessage(), intl.formatMessage y <FormattedMessage>; todos ellos exportaciones nombradas del paquete React Intl.

Mediante babel.config.json (Recomendado)

babel.config.json

{
"plugins": [
[
"formatjs",
{
"idInterpolationPattern": "[sha512:contenthash:base64:6]",
"ast": true
}
]
]
}

Mediante API de Node

Los descriptores de mensaje extraídos están disponibles en la propiedad metadata del objeto devuelto por la API transform() de Babel:

require('@babel/core').transform('code', {
plugins: ['formatjs'],
}) // => { code, map, ast, metadata['formatjs'].messages, metadata['formatjs'].meta };

Opciones

overrideIdFn

Función con firma (id: string, defaultMessage: string, description: string|object) => string que permite sobrescribir el ID tanto en el JavaScript extraído como en los mensajes.

idInterpolationPattern

Si ciertos descriptores de mensaje carecen de ID, este pattern generará IDs automáticamente. Por defecto: [sha512:contenthash:base64:6]. Consulta createHash de crypto en Node.js para algoritmos hash y documentación de buffers para codificaciones digest.

removeDefaultMessage

Elimina el campo defaultMessage en el JS generado después de la extracción.

additionalComponentNames

Nombres de componentes adicionales para extraer mensajes, ej: ['FormattedFooBarMessage']. NOTA: Por defecto verificamos que FormattedMessage se importe desde moduleSourceName para garantizar aliasing seguro. Esta opción no realiza esa verificación, por lo que es menos segura.

additionalFunctionNames

Nombres de funciones adicionales para extraer mensajes, ej: ['$formatMessage']. Útil para aliases como $t en lugar de formatMessage.

pragma

Analiza pragmas personalizados adicionales específicos. Permite etiquetar archivos con metadatos como project. Ejemplo:

// @intl-meta project:my-custom-project
import {FormattedMessage} from 'react-intl'
;<FormattedMessage defaultMessage="foo" id="bar" />

Con la opción {pragma: "@intl-meta"}, parsearemos // @intl-meta project:my-custom-project en {project: 'my-custom-project'} en el archivo resultante.

ast

Pre-analiza defaultMessage en AST para mejor rendimiento en tiempo de ejecución. No tiene efecto cuando removeDefaultMessage es true.

preserveWhitespace

Cuando se establece en true, se desactiva el recorte de mensajes.