Vai al contenuto principale

babel-plugin-formatjs

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Elabora i messaggi stringa per la traduzione da moduli che utilizzano react-intl, nello specifico:

  • Analizza e verifica che i messaggi siano conformi allo standard ICU senza problemi di sintassi.

  • Rimuove description dal descrittore del messaggio per risparmiare byte poiché non utilizzato a runtime.

  • Opzione per rimuovere defaultMessage dal descrittore del messaggio per risparmiare byte poiché non utilizzato a runtime.

  • Inietta automaticamente l'ID messaggio in base a uno schema specifico.

Installazione

npm i babel-plugin-formatjs

Utilizzo

Questo plugin Babel visita solo moduli ES6 che importano React Intl.

I descrittori dei messaggi predefiniti per la lingua predefinita dell'app saranno elaborati da: defineMessages(), defineMessage(), intl.formatMessage e <FormattedMessage>; tutti esportazioni denominate del pacchetto React Intl.

Tramite babel.config.json (Consigliato)

babel.config.json

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

Tramite Node API

I descrittori dei messaggi estratti sono disponibili tramite la proprietà metadata sull'oggetto restituito dall'API transform() di Babel:

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

Opzioni

overrideIdFn

Funzione con firma (id: string, defaultMessage: string, description: string|object) => string che consente di sovrascrivere l'ID sia nel javascript estratto che nei messaggi.

idInterpolationPattern

Se alcuni descrittori di messaggi non hanno un ID, questo pattern verrà usato per generare automaticamente gli ID. Predefinito: [sha512:contenthash:base64:6]. Consulta nodejs crypto createHash per algoritmi hash e nodejs buffer docs per codifiche digest.

removeDefaultMessage

Rimuove il campo defaultMessage nel javascript generato dopo l'estrazione.

additionalComponentNames

Nomi aggiuntivi di componenti da cui estrarre messaggi, es: ['FormattedFooBarMessage']. NOTA: Di default verifichiamo che FormattedMessage sia importato da moduleSourceName per garantire il funzionamento degli alias. Questa opzione non effettua tale verifica ed è quindi meno sicura.

additionalFunctionNames

Nomi aggiuntivi di funzioni da cui estrarre messaggi, es: ['$formatMessage']. Usa questa opzione se preferisci aliasare formatMessage con nomi più brevi come $t.

pragma

Analizza pragma personalizzati aggiuntivi specifici. Consente di taggare file con metadati come project. Esempio con questo file:

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

e con l'opzione {pragma: "@intl-meta"}, analizzeremo // @intl-meta project:my-custom-project in {project: 'my-custom-project'} nel file risultante.

ast

Pre-analizza defaultMessage in AST per prestazioni runtime migliorate. Questo flag non ha effetto quando removeDefaultMessage è true.

preserveWhitespace

Se impostato a true, il trimming dei messaggi è disabilitato.