GT ClassMethodsFormatting

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

PropertyTypeOptionalDescription
localesstring | string[]Locale(s), die für die Auswahl des Terminators verwendet werden (überschreibt Instanz-Standardwerte)
maxCharsnumberMaximale 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'
terminatorstringBenutzerdefinierter Terminator, der locale-spezifische Standardwerte überschreibt
separatorstringBenutzerdefiniertes 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 _renderingLocales der Instanz (einschließlich sourceLocale, targetLocale und Standardwert)
  • Kann mit der expliziten locales-Option überschrieben werden
  • Fällt auf die Standard-locale der 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
  • maxChars gleich 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 _renderingLocales der 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

Wie ist diese Anleitung?