Обнаружение токенов
«Обнаружение токенов» — это способ, которым SDK определяет, что нужно переводить: автоматически, по тому, как вы пишете свой интерфейс. Есть четыре строительных блока, каждый для своего вида контента.
t() — строка прямо в коде
Главная рабочая функция. Вызовите её с исходным текстом, и она вернёт перевод для текущей локали (или сам исходный текст, если эта локаль ещё не готова). Необязательная категория группирует связанные фразы и передаётся машинному переводчику как контекст; параметры подставляются в {placeholders}.
const t = useT();
// t(phrase, category?, params?)
t('Hello, {name}!', 'Greetings', { name }); <Translate> — блок контента
Оберните фрагмент разметки, и SDK разобьёт его на токены и превратит в контент-блок: каждый текстовый узел становится фразой. Затем при каждой смене локали весь блок переводится заново. Блок определяется стабильным идентификатором, который строится на основе его содержимого и категории, поэтому один и тот же блок распознаётся при повторных рендерах и перезагрузках.
<Translate category="Home">
<p>Welcome to our store. Browse the catalog in your language.</p>
</Translate> <Phrase> — одно предложение с разметкой
Если предложение содержит встроенную разметку или интерполяцию, <Phrase> сохраняет его как единую переводимую единицу — так что «Hi Sarah, you have 3 items» переводится как одно естественное предложение, а не как разрозненные фрагменты. Поддерживаются параметры и плюрализация.
<Phrase category="Cart" params={{ name: 'Sarah', count: 3 }}>
Hi %name%, you have %count% items in your cart.
</Phrase> Маркеры плейсхолдеров. Записывайте интерполяцию как {name}. Внутри разметки, где фигурные скобки { } уже занимает фреймворк (JSX, Vue, Svelte), пишите %name% — SDK преобразует это обратно в {name} при захвате фразы.
<DontTranslate> — оставьте как есть
Названия брендов, код, идентификаторы, адреса — отметьте область, которую никогда не нужно переводить. Она отображается как translate="no" и полностью пропускается при обнаружении.
<p>Welcome! <DontTranslate>This sentence always stays in English.</DontTranslate> Thanks for visiting!</p> Обнаружение фраз работает только с ключом для записи. В браузере вы поставляете ключ только для чтения, поэтому SDK ничего не регистрирует — он лишь загружает уже существующие переводы. Регистрация фраз выполняется на этапе разработки. См. Ключи и окружения.