formatCutoff
API-Referenz für die GT-Methode formatCutoff
Übersicht
Die formatCutoff-Methode kürzt Zeichenketten mit locale-sensitiven Abschlusssymbolen und verwendet passende Auslassungszeichen und Abstände basierend auf der jeweiligen Ziellocale.
Diese Methode ist unerlässlich für das Kürzen von UI-Texten, das die Konventionen unterschiedlicher Sprachen zur Kennzeichnung von abgeschnittenem Text respektiert.
const gt = new GT({
sourceLocale: 'en',
targetLocale: 'fr-FR'
});
const formatted = gt.formatCutoff('Hello, world!', {
maxChars: 8
});
// Gibt zurück: "Hello, w\u202F…" (mit schmalem Leerzeichen im Französischen)Referenz
Parameter
Prop
Type
Options-Objekt
| Property | Type | Optional | Description |
|---|---|---|---|
locales | string | string[] | ✓ | Locale(s), die für die Auswahl des Terminators verwendet werden (überschreibt Instanz-Standardwerte) |
maxChars | number | ✓ | Maximale Anzahl an Zeichen, die angezeigt wird. undefined bedeutet, dass nicht gekürzt wird. Negative Werte schneiden vom Ende her ab |
style | 'ellipsis' | 'none' | ✓ | Terminator-Stil. Standard ist 'ellipsis' |
terminator | string | ✓ | Benutzerdefinierter Terminator, der locale-spezifische Standardwerte überschreibt |
separator | string | ✓ | Benutzerdefiniertes Trennzeichen zwischen Terminator und Text |
CutoffFormatOptions-Typ
interface CutoffFormatOptions {
maxChars?: number;
style?: 'ellipsis' | 'none';
terminator?: string;
separator?: string;
}Rückgabewert
string - Der gekürzte String mit einem passenden Abschlusszeichen, das gemäß den Konventionen der jeweiligen locale angewendet wird.
Verhalten
Locale-Bestimmung
- Verwendet standardmäßig die
_renderingLocalesder Instanz (einschließlichsourceLocale,targetLocaleund Standardwert) - Kann mit der expliziten
locales-Option überschrieben werden - Fällt auf die Standard-
localeder Bibliothek zurück, wenn die Bestimmung fehlschlägt
Verarbeitung von Zeichenlimits
- Positives
maxChars: Kürzt vom Anfang und hängt das Trennzeichen an - Negatives
maxChars: Schneidet vom Ende und stellt das Trennzeichen voran maxCharsgleich Null: Gibt einen leeren String zurück- Undefiniertes
maxChars: Keine Kürzung, gibt den ursprünglichen String zurück
Sprachspezifisches Verhalten
Die Methode wählt automatisch geeignete Abschlusszeichen je nach Sprache aus:
- Französisch (
fr):…mit schmalem geschützten Leerzeichen (\u202F) - Chinesisch (
zh): doppelte Auslassungszeichen……ohne Leerzeichen - Japanisch (
ja): doppelte Auslassungszeichen……ohne Leerzeichen - Standard: ein Auslassungszeichen
…ohne Leerzeichen
Beispiele
Grundlegende Verwendung mit Instanz-locales
const gt = new GT({ targetLocale: 'en-US' });
const truncated = gt.formatCutoff('Hello, world!', {
maxChars: 8
});
console.log(truncated); // "Hello, w…"Überschreiben der Locale
const gt = new GT({ targetLocale: 'en-US' });
// Instanz-Locale überschreiben
const french = gt.formatCutoff('Bonjour le monde', {
locales: 'fr-FR',
maxChars: 10
});
console.log(french); // "Bonjour\u202F…"Negative Zeichenbegrenzungen
const gt = new GT({ targetLocale: 'en-US' });
// Von hinten abschneiden
const fromEnd = gt.formatCutoff('JavaScript Framework', {
maxChars: -9
});
console.log(fromEnd); // "…Framework"
// Größerer negativer Abschnitt
const moreFromEnd = gt.formatCutoff('Hello, world!', {
maxChars: -3
});
console.log(moreFromEnd); // "…ld!"Optionen für benutzerdefiniertes Styling
const gt = new GT({ targetLocale: 'en-US' });
// Benutzerdefinierter Terminator
const custom = gt.formatCutoff('Long description text', {
maxChars: 12,
terminator: '...'
});
console.log(custom); // "Long desc..."
// Benutzerdefinierter Terminator mit Trennzeichen
const customSep = gt.formatCutoff('Another example', {
maxChars: 10,
terminator: '[...]',
separator: ' '
});
console.log(customSep); // "Anot [...]"
// Kein Terminator
const none = gt.formatCutoff('Clean cut text', {
maxChars: 5,
style: 'none'
});
console.log(none); // "Clean"Mehrsprachige Anwendung
class UserInterface {
private gt: GT;
constructor(locale: string) {
this.gt = new GT({ targetLocale: locale });
}
truncateTitle(title: string, maxLength = 20): string {
return this.gt.formatCutoff(title, { maxChars: maxLength });
}
truncateDescription(description: string): string {
return this.gt.formatCutoff(description, { maxChars: 100 });
}
}
const englishUI = new UserInterface('en-US');
const chineseUI = new UserInterface('zh-CN');
console.log(englishUI.truncateTitle('Very Long English Title Here', 15));
// Ausgabe: "Very Long Engl…"
console.log(chineseUI.truncateTitle('很长的中文标题在这里', 8));
// Ausgabe: "很长的中文标题……"Dynamische Handhabung von Locales
const gt = new GT({ sourceLocale: 'en', targetLocale: 'en' });
function adaptiveText(text: string, userLocale: string, context: 'title' | 'body') {
const limits = {
title: { 'en': 50, 'fr': 45, 'de': 40, 'zh': 25 },
body: { 'en': 200, 'fr': 180, 'de': 160, 'zh': 100 }
};
const maxChars = limits[context][userLocale] || limits[context]['en'];
return gt.formatCutoff(text, {
locales: userLocale,
maxChars
});
}
// Verwendung in der Anwendung
const userPrefs = [
{ locale: 'fr-FR', text: 'Une très longue description française' },
{ locale: 'zh-CN', text: '这是一个非常长的中文描述文本' },
{ locale: 'de-DE', text: 'Eine sehr lange deutsche Beschreibung' }
];
userPrefs.forEach(({ locale, text }) => {
console.log(`${locale}: ${adaptiveText(text, locale, 'title')}`);
});Hinweise
- Die Methode verwendet die
_renderingLocalesder GT-Instanz zur automatischen locale-Erkennung - Terminator- und Separatorlängen werden bei der Berechnung des Zeichenlimits berücksichtigt
- Wenn die kombinierte Länge von Terminator und Separator
maxCharsüberschreitet, wird ein leerer String zurückgegeben - Benutzerdefinierte Terminatoren überschreiben vollständig die locale-spezifischen Standardwerte
- Die Performance wird durch internes Caching von Formatter-Instanzen optimiert
Nächste Schritte
- Verwende die eigenständige Funktion
formatCutofffür die Nutzung ohne eine GT-Instanz - Formatiere Nachrichten mit
formatMessage - Formatiere Zahlen mit
formatNum - Erfahre mehr über Locale-Eigenschaften
Wie ist diese Anleitung?