Перевод текста
useT() — основной composable для перевода. Возвращает два метода — t для простых строк и tm для ICU-плюрализованных строк. Оба реактивны к локали и обновляются автоматически при смене активной локали.
ts
import { useT } from 'vue-i18n-kit'
const { t, tm } = useT()Простые строки (t)
t(key, vars?) ищет ключ в файле активной локали и интерполирует именованные плейсхолдеры {placeholder}.
ts
t('buttons.submit') // → 'Submit'
t('greeting', { name: 'Alice' }) // → 'Hello, Alice!'Аргументы
key—string. Путь через точку в файле локали ('buttons.submit','greeting').vars—object, опционально. Именованные значения, подставляемые в плейсхолдеры{placeholder}.
Плюрализованные строки (tm)
tm(key, vars) ищет ключ, значение которого является ICU-шаблоном множественного числа, затем выбирает правильную форму множественного числа с помощью Intl.PluralRules для активной локали.
ts
tm('items', { count: 1 }) // → '1 item'
tm('items', { count: 5 }) // → '5 items'
tm('balance', { points: 3 }) // → '3 рубля'
tm('balance', { points: 11 }) // → '11 рублей'Синтаксис ICU-шаблона
{varName, plural, …}— селектор формы множественного числа.varNameдолжен быть ключом вvars; его числовое значение определяет CLDR-категорию.one {…}few {…}many {…}other {…}— форма для каждой CLDR-категории.otherобязательна — используется как запасной вариант.#внутри формы — заменяется числовым значением переменной.{varName}вне plural — простая интерполяция, заменяется наvars.varName.
Примеры
ts
// Отображение + множественное число в одном шаблоне
tm('balance', { points: 21 })
// locale: "{points} {points, plural, one {рубль} few {рубля} many {рублей} other {рублей}}"
// → '21 рубль'
// Несколько переменных
tm('score', { user: 'Даня', score: 21 })
// locale: "{user} набрал {score} {score, plural, one {балл} few {балла} many {баллов} other {баллов}}"
// → 'Даня набрал 21 балл'
// Несколько конструкций plural в одной строке
tm('report', { files: 2, errors: 5 })
// → '2 файла (5 ошибок)'CLDR-категории по языкам
- Английский, турецкий —
one,other - Русский, польский —
one,few,many,other - Арабский —
zero,one,two,few,many,other - Японский, китайский —
other(грамматической категории множественности нет)
Полные правила: CLDR Plural Rules