Nachrichtenformatierung
18ways verwendet standardmäßig waysParser. Dieser Parser ermöglicht es Ihnen, die Quellkopie lesbar zu halten,
und gleichzeitig Variablen und lokalisierte Formatierungen zu verarbeiten.
Variablen
Verwenden Sie geschweifte Klammern für Variablen. Mit <T> können Sie den Wert inline neben der Nachricht behalten.
const label = await engine.t('Welcome back, {name}', {
vars: { name: 'Ada' },
});Pluralisierung
Verwenden Sie ICU-Style-Pluralblöcke, wenn sich der Satz tatsächlich verändert.
const summary = await engine.t(
'{count, plural, =0{No messages} =1{One message} other{{count} messages}}',
{
vars: { count: 3 },
}
);Daten und Geld
Wenn Sie ein echtes Date oder ein geldähnliches Objekt mit amount und currency übergeben, wird 18ways es automatisch formatieren, selbst mit einem einfachen Platzhalter wie {publishedAt} oder {renewalTotal}.
Verwenden Sie den expliziten Formatter nur, wenn Sie die Ausgabe steuern möchten, wie z.B. dateStyle:long oder einen
benutzerdefinierten Geldteiler.
const publishedAt = new Date('2026-03-14T09:00:00Z');
const renewalTotal = {
amount: 1900,
currency: 'USD',
};
const updatedLabel = await engine.t('Last updated {publishedAt}', {
vars: { publishedAt },
});
const totalLabel = await engine.t('Renewal total {renewalTotal}', {
vars: { renewalTotal },
});
const detailedDate = await engine.t('Detailed date: {publishedAt, date, dateStyle:long}', {
vars: { publishedAt },
});Standardmäßig werden Geldbeträge als kleine Einheiten behandelt. Wenn Sie bereits große Einheiten haben, verwenden Sie den expliziten Geldformatierer mit divisor: 1.
Auswahlblöcke
Verwenden Sie select, wenn der Text von einer kleinen Menge diskreter Werte abhängt.
const banner = await engine.t(
'{isSignedIn, select, true{Welcome back, {name}} false{Sign in to continue} other{Sign in to continue}}',
{
vars: {
isSignedIn: true,
name: 'Ada',
},
}
);Komponentenkomposition
@18ways/core gibt Strings zurück. Wenn Sie Rich Text benötigen, halten Sie den Satz ganz und behandeln Sie das Markup in Ihrem eigenen Renderer.
const cta = await engine.t('Click here to see more');Wenn Ihre App eine automatische JSX-Zusammensetzung benötigt, wechseln Sie zu @18ways/react oder @18ways/next.
Praktische Regel
Wenn der Satz als vollständige Phrase mit einigen Variablen formuliert werden kann, halten Sie ihn in einer Nachricht. Das verbessert die Übersetzungsqualität erheblich im Vergleich zum Zusammenfügen von Fragmenten im Code.