# generaltranslation: General Translation Core SDK: formatCutoff URL: https://generaltranslation.com/ru/docs/core/functions/formatting/format-cutoff.mdx --- title: formatCutoff description: Автономная функция для усечения строк с учетом локали при выборе терминаторов --- ## Обзор Автономная функция `formatCutoff` выполняет усечение строк, используя корректные для конкретной локали терминаторы, без необходимости создавать экземпляр GT. Она обеспечивает локалезависимое усечение текста с учетом правил разных языков для многоточий и пробелов. ```typescript import { formatCutoff } from 'generaltranslation'; const formatted = formatCutoff('Hello, world!', { locales: 'en-US', maxChars: 8 }); // Возвращает: "Hello, w…" ``` ## Справочник ### Параметры | Name | Type | Description | | --------- | -------------------------------------------------------- | --------------------------- | | `value` | `string` | Строка, которую нужно усечь | | `options` | `CutoffFormatOptions & { locales?: string \| string[] }` | Параметры усечения | ### CutoffFormatOptions | Name | Type | Description | | ------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `locales?` | `string \| string[]` | Локали для выбора терминатора | | `maxChars?` | `number` | Максимальное количество отображаемых символов. Значение `undefined` означает, что усечение не применяется. Отрицательные значения усекают с конца | | `style?` | `'ellipsis' \| 'none'` | Стиль терминатора. По умолчанию — `'ellipsis'` | | `terminator?` | `string` | Пользовательский терминатор, переопределяющий терминатор локали по умолчанию | | `separator?` | `string` | Пользовательский разделитель между терминатором и текстом | ### Возвращает `string` — Усечённая строка с добавленным подходящим терминатором. *** ## Поведение ### Ограничения по количеству символов * **Положительный `maxChars`**: Выполняет усечение с начала и добавляет терминатор * **Отрицательный `maxChars`**: Обрезает с конца и добавляет терминатор в начало * **Нулевой `maxChars`**: Возвращает пустую строку * **`maxChars` не задан**: Усечение не применяется ### Терминаторы, зависящие от локали В разных локалях используются разные правила для многоточия: * **Французский**: `…` с узким неразрывным пробелом (`\u202F`) * **Китайский/японский**: двойное многоточие `……` без разделителя * **По умолчанию**: одиночное многоточие `…` без разделителя ### Пограничные случаи * Если суммарная длина terminator и separator превышает `maxChars`, возвращается пустая строка * Если исходная строка короче `maxChars`, она возвращается без изменений * Стиль `'none'` усекает строку без terminator *** ## Примеры ### Основы использования ```typescript import { formatCutoff } from 'generaltranslation'; // Базовое усечение console.log(formatCutoff('Hello, world!', { locales: 'en-US', maxChars: 8 })); // Вывод: "Hello, w…" // Усечение не требуется console.log(formatCutoff('Short', { locales: 'en-US', maxChars: 10 })); // Вывод: "Short" ``` ### Отрицательные ограничения символов ```typescript // Срез с конца console.log(formatCutoff('Hello, world!', { locales: 'en-US', maxChars: -3 })); // Вывод: "…ld!" // Больший отрицательный срез console.log(formatCutoff('JavaScript', { locales: 'en-US', maxChars: -6 })); // Вывод: "…Script" ``` ### Терминаторы для определённой локали ```typescript // Французское форматирование console.log(formatCutoff('Bonjour le monde', { locales: 'fr-FR', maxChars: 10 })); // Вывод: "Bonjour\u202F…" (узкий пробел перед многоточием) // Китайское форматирование console.log(formatCutoff('你好世界', { locales: 'zh-CN', maxChars: 3 })); // Вывод: "你好……" // Японское форматирование console.log(formatCutoff('こんにちは', { locales: 'ja-JP', maxChars: 4 })); // Вывод: "こん……" ``` ### Пользовательские терминаторы ```typescript // Пользовательский терминатор console.log(formatCutoff('Long text here', { locales: 'en-US', maxChars: 10, terminator: '...' })); // Вывод: "Long te..." // Пользовательский терминатор с разделителем console.log(formatCutoff('Another example', { locales: 'en-US', maxChars: 12, terminator: '[more]', separator: ' ' })); // Вывод: "Anoth [more]" // Без терминатора console.log(formatCutoff('Clean cut', { locales: 'en-US', maxChars: 5, style: 'none' })); // Вывод: "Clean" ``` ### Вспомогательные функции ```typescript import { formatCutoff } from 'generaltranslation'; // Усечение для отображения в интерфейсе function displayText(text: string, maxLength: number, locale = 'en-US') { return formatCutoff(text, { locales: locale, maxChars: maxLength }); } // Усечение для нескольких локалей function truncateByLocale(text: string, locale: string) { const limits = { 'en': 50, 'de': 45, // Немецкие слова, как правило, длиннее 'zh': 30, // Китайские иероглифы занимают больше места }; return formatCutoff(text, { locales: locale, maxChars: limits[locale] || 50 }); } console.log(displayText('This is a very long description', 15)); // Вывод: "This is a ve…" console.log(truncateByLocale('Eine sehr lange deutsche Beschreibung', 'de')); // Вывод: "Eine sehr lange deutsche Besch…" ``` *** ## Примечания * В отличие от метода класса GT, параметр `locales` не является обязательным и по умолчанию имеет значение `'en'` * Для повышения производительности результаты кэшируются внутренне при повторяющихся комбинациях локалей и параметров * Длина терминатора учитывается при расчёте ограничения символов * Пользовательские терминаторы переопределяют значения по умолчанию для конкретной локали * Если терминатор отсутствует, разделители игнорируются ## Дальнейшие шаги * Для использования через экземпляр применяйте метод [`formatCutoff`](/docs/core/class/methods/formatting/format-cutoff) класса GT * Ознакомьтесь с другими функциями форматирования, например [`formatMessage`](/docs/core/functions/formatting/format-message) * Форматирование чисел описано в [`formatNum`](/docs/core/functions/formatting/format-num)