babel-plugin-formatjs
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
descriptiondal descrittore del messaggio per risparmiare byte poiché non utilizzato a runtime. -
Opzione per rimuovere
defaultMessagedal descrittore del messaggio per risparmiare byte poiché non utilizzato a runtime. -
Inietta automaticamente l'ID messaggio in base a uno schema specifico.
Installazione
- npm
- yarn
npm i babel-plugin-formatjs
yarn add 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.