Skip to content

Перевод текста

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!'

Аргументы

  • keystring. Путь через точку в файле локали ('buttons.submit', 'greeting').
  • varsobject, опционально. Именованные значения, подставляемые в плейсхолдеры {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