Zum Hauptinhalt springen

babel-plugin-formatjs

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Verarbeitet String-Nachrichten zur Übersetzung aus Modulen, die react-intl verwenden, insbesondere:

  • Analysiert und überprüft, ob Nachrichten ICU-konform sind und keine Syntaxprobleme aufweisen.

  • Entfernt description aus dem Nachrichtendeskriptor, um Bytes zu sparen, da es zur Laufzeit nicht verwendet wird.

  • Option zum Entfernen von defaultMessage aus dem Nachrichtendeskriptor, um Bytes zu sparen, da es zur Laufzeit nicht verwendet wird.

  • Injiziert automatisch eine Nachrichten-ID basierend auf einem spezifischen Muster.

Installation

npm i babel-plugin-formatjs

Verwendung

Dieses Babel-Plugin verarbeitet nur ES6-Module, die React Intl importieren.

Die Standard-Nachrichtendeskriptoren für die Standardsprache der Anwendung werden aus folgenden Quellen verarbeitet: defineMessages(), defineMessage(), intl.formatMessage und <FormattedMessage>; alle davon sind benannte Exporte des React Intl-Pakets.

Über babel.config.json (Empfohlen)

babel.config.json

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

Über die Node-API

Die extrahierten Nachrichtendeskriptoren sind über die metadata-Eigenschaft des von Babels transform()-API zurückgegebenen Objekts verfügbar:

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

Optionen

overrideIdFn

Eine Funktion mit der Signatur (id: string, defaultMessage: string, description: string|object) => string, die es ermöglicht, die ID sowohl im extrahierten JavaScript als auch in den Nachrichten zu überschreiben.

idInterpolationPattern

Falls bestimmte Nachrichtendeskriptoren keine ID haben, wird dieses pattern verwendet, um automatisch IDs für sie zu generieren. Standardmäßig [sha512:contenthash:base64:6]. Weitere Informationen zu Hash-Algorithmen finden Sie unter nodejs crypto createHash und zu Digest-Kodierungen unter nodejs buffer docs.

removeDefaultMessage

Entfernt das Feld defaultMessage im generierten JavaScript nach der Extraktion.

additionalComponentNames

Zusätzliche Komponentennamen, aus denen Nachrichten extrahiert werden sollen, z.B.: ['FormattedFooBarMessage']. HINWEIS: Standardmäßig wird überprüft, ob FormattedMessage aus moduleSourceName importiert wird, um sicherzustellen, dass Variablen-Alias funktioniert. Diese Option führt diese Prüfung nicht durch und ist daher weniger sicher.

additionalFunctionNames

Zusätzliche Funktionsnamen, aus denen Nachrichten extrahiert werden sollen, z.B.: ['$formatMessage']. Verwenden Sie dies, wenn Sie formatMessage zu etwas Kürzerem wie $t aliasen möchten.

pragma

Parst spezifische zusätzliche benutzerdefinierte Pragmas. Dies ermöglicht es, bestimmte Dateien mit Metadaten wie project zu markieren. Beispielsweise mit dieser Datei:

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

und mit der Option {pragma: "@intl-meta"} wird // @intl-meta project:my-custom-project in der Ergebnisdatei in {project: 'my-custom-project'} geparst.

ast

Parst defaultMessage vorab in einen AST für eine schnellere Laufzeitleistung. Dieses Flag hat keine Auswirkung, wenn removeDefaultMessage auf true gesetzt ist.

preserveWhitespace

Wenn auf true gesetzt, wird das Trimmen von Nachrichten deaktiviert.