Utility FunctionsFormatting

formatCutoff

Eigenständige Funktion zum Abschneiden von Strings mit sprachabhängigen Abschlusszeichen

Übersicht

Die eigenständige Funktion formatCutoff kürzt Strings mit passenden, locale‑spezifischen Abschlusszeichen, ohne dass eine GT‑Instanz erforderlich ist. Sie bietet locale‑bewusste Textkürzung, die die Konventionen verschiedener Sprachen für Auslassungszeichen und Leerzeichen berücksichtigt.

import { formatCutoff } from 'generaltranslation';

const formatted = formatCutoff('Hello, world!', {
  locales: 'en-US',
  maxChars: 8
});
// Gibt zurück: "Hello, w…"

Referenz

Parameters

NameTypeDescription
valuestringDer zu kürzende String
optionsCutoffFormatOptions & { locales?: string | string[] }Konfiguration für das Kürzen

CutoffFormatOptions

NameTypeDescription
locales?string | string[]Locales für die Auswahl des Terminators
maxChars?numberMaximale Anzahl anzuzeigender Zeichen. undefined bedeutet kein Cutoff. Negative Werte schneiden vom Ende her ab
style?'ellipsis' | 'none'Terminator-Stil. Standard ist 'ellipsis'
terminator?stringBenutzerdefinierter Terminator, der die Locale-Standardeinstellungen überschreibt
separator?stringBenutzerdefiniertes Trennzeichen zwischen Terminator und Text

Rückgabewert

string - Die gekürzte Zeichenfolge mit einem geeigneten Abschlusszeichen.


Verhalten

Zeichenlimit

  • Positives maxChars: Kürzt vom Anfang, hängt Abschlusszeichen an
  • Negatives maxChars: Schneidet vom Ende ab, stellt Abschlusszeichen voran
  • maxChars gleich 0: Gibt einen leeren String zurück
  • Undefiniertes maxChars: Es erfolgt keine Kürzung

Lokalspezifische Auslassungszeichen

Unterschiedliche locales verwenden unterschiedliche Ellipsen-Konventionen:

  • Französisch: mit schmalem geschützten Leerzeichen (\u202F)
  • Chinesisch/Japanisch: Doppelte Ellipse …… ohne Trennzeichen
  • Standard: Einfache Ellipse ohne Trennzeichen

Edge Cases

  • Wenn die Länge von Terminator + Separator maxChars überschreitet, wird ein leerer String zurückgegeben
  • Eine ursprüngliche Zeichenfolge, die kürzer als maxChars ist, wird unverändert zurückgegeben
  • Der 'none'-Stil kürzt ohne Terminator

Beispiele

Grundlegende Verwendung

import { formatCutoff } from 'generaltranslation';

// Einfaches Kürzen
console.log(formatCutoff('Hello, world!', {
  locales: 'en-US',
  maxChars: 8
}));
// Ausgabe: "Hello, w…"

// Kein Kürzen erforderlich
console.log(formatCutoff('Short', {
  locales: 'en-US', 
  maxChars: 10
}));
// Ausgabe: "Short"

Negative Zeichenlimits

// Ausschnitt vom Ende
console.log(formatCutoff('Hello, world!', {
  locales: 'en-US',
  maxChars: -3
}));
// Ausgabe: „…ld!"

// Größerer negativer Ausschnitt
console.log(formatCutoff('JavaScript', {
  locales: 'en-US',
  maxChars: -6
}));
// Ausgabe: „…Script"

Locale-spezifische Abschlusssymbole

// Französische Formatierung
console.log(formatCutoff('Bonjour le monde', {
  locales: 'fr-FR',
  maxChars: 10
}));
// Ausgabe: "Bonjour\u202F…" (schmales Leerzeichen vor Auslassungszeichen)

// Chinesische Formatierung
console.log(formatCutoff('你好世界', {
  locales: 'zh-CN',
  maxChars: 3
}));
// Ausgabe: "你好……"

// Japanische Formatierung  
console.log(formatCutoff('こんにちは', {
  locales: 'ja-JP',
  maxChars: 4
}));
// Ausgabe: "こん……"

Benutzerdefinierte Trennzeichen

// Benutzerdefinierter Terminator
console.log(formatCutoff('Long text here', {
  locales: 'en-US',
  maxChars: 10,
  terminator: '...'
}));
// Ausgabe: „Long te..."

// Benutzerdefinierter Terminator mit Trennzeichen
console.log(formatCutoff('Another example', {
  locales: 'en-US',
  maxChars: 12,
  terminator: '[more]',
  separator: ' '
}));
// Ausgabe: „Anoth [more]"

// Kein Terminator
console.log(formatCutoff('Clean cut', {
  locales: 'en-US',
  maxChars: 5,
  style: 'none'
}));
// Ausgabe: „Clean"

Hilfsfunktionen

import { formatCutoff } from 'generaltranslation';

// Für UI-Anzeige abschneiden
function displayText(text: string, maxLength: number, locale = 'en-US') {
  return formatCutoff(text, {
    locales: locale,
    maxChars: maxLength
  });
}

// Mehrsprachiges Abschneiden
function truncateByLocale(text: string, locale: string) {
  const limits = {
    'en': 50,
    'de': 45, // Deutsche Wörter sind tendenziell länger
    'zh': 30, // Chinesische Zeichen sind kompakter
  };
  
  return formatCutoff(text, {
    locales: locale,
    maxChars: limits[locale] || 50
  });
}

console.log(displayText('This is a very long description', 15));
// Ausgabe: "This is a ve…"

console.log(truncateByLocale('Eine sehr lange deutsche Beschreibung', 'de'));
// Ausgabe: "Eine sehr lange deutsche Besch…"

Hinweise

  • Im Gegensatz zur GT-Klassenmethode ist der Parameter locales optional und standardmäßig auf 'en' gesetzt
  • Ergebnisse werden intern zwischengespeichert, um die Performance bei wiederholten locale/options‑Kombinationen zu verbessern
  • Die Länge des Terminators wird bei der Berechnung der Zeichenobergrenze berücksichtigt
  • Benutzerdefinierte Terminatoren überschreiben locale-spezifische Standardwerte
  • Separatoren werden ignoriert, wenn kein Terminator vorhanden ist

Nächste Schritte

  • Verwende die GT-Klasse formatCutoff für die instanzbasierte Nutzung
  • Sieh dir weitere Formatierungsfunktionen wie formatMessage an
  • Nutze formatNum zur Zahlenformatierung

Wie ist diese Anleitung?