formatCutoff
Referencia de API para el método formatCutoff de GT
Descripción general
El método formatCutoff trunca cadenas con terminadores adaptados al locale, aplicando los caracteres de elipsis y el espaciado apropiados según el locale de destino.
Este método es esencial para la truncación de texto en la interfaz de usuario (UI) que respeta las convenciones de distintos idiomas para indicar texto truncado.
const gt = new GT({
sourceLocale: 'en',
targetLocale: 'fr-FR'
});
const formatted = gt.formatCutoff('Hello, world!', {
maxChars: 8
});
// Devuelve: "Hello, w\u202F…" (con espacio estrecho en francés)Referencia
Parámetros
Prop
Type
Objeto options
| Propiedad | Tipo | Opcional | Descripción |
|---|---|---|---|
locales | string | string[] | ✓ | Locale(s) que se usarán para la selección del terminador (anula los valores predeterminados de la instancia) |
maxChars | number | ✓ | Número máximo de caracteres que se mostrarán. undefined significa que no hay truncamiento. Los valores negativos recortan desde el final. |
style | 'ellipsis' | 'none' | ✓ | Estilo de terminador. El valor predeterminado es 'ellipsis'. |
terminator | string | ✓ | Terminador personalizado para anular los valores predeterminados del locale. |
separator | string | ✓ | Separador personalizado entre el terminador y el texto. |
Tipo CutoffFormatOptions
interface CutoffFormatOptions {
maxChars?: number;
style?: 'ellipsis' | 'none';
terminator?: string;
separator?: string;
}Devuelve
string - Cadena truncada con el terminador adecuado aplicado según las convenciones del locale correspondiente.
Comportamiento
Resolución de locale
- Utiliza
_renderingLocalesde la instancia de forma predeterminada (incluyesourceLocale,targetLocaley contenido de respaldo predeterminado) - Puede sobrescribirse con la opción explícita
locales - Recurre al locale predeterminado de la biblioteca si falla la resolución
Procesamiento del límite de caracteres
maxCharspositivo: trunca desde el inicio y añade el terminadormaxCharsnegativo: toma desde el final y antepone el terminadormaxCharsigual a cero: devuelve una cadena vacíamaxCharsindefinido: no se aplica truncamiento y devuelve la cadena original
Comportamiento específico por locale
El método selecciona automáticamente los terminadores apropiados según el idioma:
- Francés (
fr):…con espacio de no separación fino (\u202F) - Chino (
zh): Puntos suspensivos dobles……sin separador - Japonés (
ja): Puntos suspensivos dobles……sin separador - Predeterminado: Puntos suspensivos simples
…sin separador
Ejemplos
Uso básico con los locales de la instancia
const gt = new GT({ targetLocale: 'en-US' });
const truncated = gt.formatCutoff('Hello, world!', {
maxChars: 8
});
console.log(truncated); // "Hello, w…"Sobrescritura de locale
const gt = new GT({ targetLocale: 'en-US' });
// Sobrescribir el locale de la instancia
const french = gt.formatCutoff('Bonjour le monde', {
locales: 'fr-FR',
maxChars: 10
});
console.log(french); // "Bonjour\u202F…"Límites de caracteres negativos
const gt = new GT({ targetLocale: 'en-US' });
// Cortar desde el final
const fromEnd = gt.formatCutoff('JavaScript Framework', {
maxChars: -9
});
console.log(fromEnd); // "…Framework"
// Corte negativo mayor
const moreFromEnd = gt.formatCutoff('Hello, world!', {
maxChars: -3
});
console.log(moreFromEnd); // "…ld!"Options de estilo personalizadas
const gt = new GT({ targetLocale: 'en-US' });
// Terminador personalizado
const custom = gt.formatCutoff('Long description text', {
maxChars: 12,
terminator: '...'
});
console.log(custom); // "Long desc..."
// Terminador personalizado con separador
const customSep = gt.formatCutoff('Another example', {
maxChars: 10,
terminator: '[...]',
separator: ' '
});
console.log(customSep); // "Anot [...]"
// Sin terminador
const none = gt.formatCutoff('Clean cut text', {
maxChars: 5,
style: 'none'
});
console.log(none); // "Clean"Aplicación multilingüe
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));
// Resultado: "Very Long Engl…"
console.log(chineseUI.truncateTitle('很长的中文标题在这里', 8));
// Resultado: "很长的中文标题……"Manejo dinámico de 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
});
}
// Uso en aplicación
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')}`);
});Notas
- El método usa
_renderingLocalesde la instancia de GT para la detección automática del locale - La longitud del terminador y del separador se tiene en cuenta en los cálculos del límite de caracteres
- Si la longitud de terminador + separador excede
maxChars, se devuelve una cadena vacía - Los terminadores personalizados sustituyen por completo los valores predeterminados específicos del locale
- El rendimiento se optimiza mediante el almacenamiento en caché interno de las instancias de formateadores
Próximos pasos
- Usa
formatCutoffde forma independiente para usarlo sin una instancia de GT - Aplica formato a mensajes con
formatMessage - Aplica formato a números con
formatNum - Aprende sobre las propiedades del locale
¿Qué te parece esta guía?