# Справочник API
# Расширение прототипа Vue
# Опции конструктора Vue
# i18n
- Тип:
I18nOptions
Опция локализации на основе компонентов.
- См. также: Опции конструктора класса
VueI18n
# Внедряемые методы
# $t
Аргументы:
{Path} key
: обязательный{Locale} locale
: опционально{Array | Object} values
: опционально
Возвращает:
TranslateResult
Получение переведённого сообщения по ключу key
. Сообщения локализации в компоненте имеют приоритет над глобальными сообщениями. Если сообщений локализации в компоненте нет, то локализация осуществляется с помощью глобальных сообщений локализации. Если указана locale
, то используются сообщения локализации из locale
. Если был указан key
именованного формата / формата списков сообщений локализации, то необходимо указывать также values
. Подробнее про значения values
можно изучить в разделе Формат сообщений локализации.
Совет
Обратите внимание, что в хуках жизненного цикла контекст должен быть экземпляром компонента (например в опции data
, const $t = this.$t.bind(this)
).
# $tc
Аргументы:
{Path} key
: обязательный{number} choice
: опционально, по умолчанию1
{Locale} locale
: опционально{string | Array | Object} values
: опционально
Возвращает:
TranslateResult
Получение переведённого сообщения по ключу key
с использованием плюрализации. Сообщения локализации компонента имеют приоритет над глобальными сообщениями. Если сообщений локализации в компоненте нет, то локализация осуществляется с помощью глобальных сообщений локализации. Если указана locale
, то используются сообщения локализации из locale
. Если указано строковое значение для values
, то локализация выполняется для этого значения. Если указано значение Array или Object в values
, то необходимо указывать с values
из $t.
Если вам не подходит реализация плюрализации по умолчанию, смотрите pluralization rules в опциях конструктора и пользовательскую плюрализацию.
Совет
Обратите внимание, что в хуках жизненного цикла контекст должен быть экземпляром компонента (например в опции data
, const $tc = this.$tc.bind(this)
).
# $te
Аргументы:
{Path} key
: обязательный{Locale} locale
: опционально
Возвращает:
boolean
Проверяет существует ли перевод для ключа в сообщениях локализации. Если нет сообщений локализации в компоненте, то проверяет в глобальных сообщениях локализации. Если указана locale
, то проверяется наличие в сообщениях локализации locale
.
Совет
Обратите внимание, что в хуках жизненного цикла контекст должен быть экземпляром компонента (например в опции data
, const $te = this.$te.bind(this)
).
# $d
🆕 Добавлено в версии 7.0+
Аргументы:
{number | Date} value
: обязательный{Path | Object} key
: опционально{Locale | Object} locale
: опционально
Возвращает:
DateTimeFormatResult
Локализация даты из value
по указанному формату даты из key
. Формат указанный в key
должен быть зарегистрирован в опции dateTimeFormats
класса VueI18n
, и зависит от опции locale
конструктора VueI18n
. Если указать аргумент locale
, то он будет иметь приоритет над опцией locale
конструктора VueI18n
.
Если формата даты для key
нет в опции dateTimeFormats
, то будет использован запасной формат, основываясь на опции fallbackLocale
конструктора VueI18n
.
Совет
Обратите внимание, что в хуках жизненного цикла контекст должен быть экземпляром компонента (например в опции data
, const $d = this.$d.bind(this)
).
# $n
🆕 Добавлено в версии 7.0+
Аргументы:
{number} value
: обязательный{Path | Object} format
: опционально{Locale} locale
: опционально
Возвращает:
NumberFormatResult
Локализация числа value
с помощью формата чисел format
. Числовой формат из format
должен быть зарегистрирован в опции numberFormats
класса VueI18n
, и зависит от опции locale
конструктора VueI18n
. Если указать аргумент locale
, то он будет иметь приоритет над опцией locale
конструктора VueI18n
.
Если формат чисел для format
не указан в опции numberFormats
, будет использован запасной формат, основываясь на опции fallbackLocale
конструктора VueI18n
.
Если второй аргумент format
указан объектом, то в нём должны быть следующие свойства:
key {Path}
: опционально, форматируемое числоlocale {Locale}
: опционально, локализацияcompactDisplay {string}
: опционально, опция форматирования чиселcurrency {string}
: опционально, опция форматирования чиселcurrencyDisplay {string}
: опционально, опция форматирования чиселcurrencySign {string}
: опционально, опция форматирования чиселlocaleMatcher {string}
: опционально, опция форматирования чиселnotation {string}
: опционально, опция форматирования чиселnumberingSystem {string}
: опционально, опция форматирования чиселsignDisplay {string}
: опционально, опция форматирования чиселstyle {string}
: опционально, опция форматирования чиселunit {string}
: опционально, опция форматирования чиселunitDisplay {string}
: опционально, опция форматирования чиселuseGrouping {boolean}
: опционально, опция форматирования чиселminimumIntegerDigits {string}
: опционально, опция форматирования чиселminimumFractionDigits {string}
: опционально, опция форматирования чиселmaximumFractionDigits {string}
: опционально, опция форматирования чиселminimumSignificantDigits {string}
: опционально, опция форматирования чиселmaximumSignificantDigits {string}
: опционально, опция форматирования чисел
Любые указанные опции форматирования числа будут иметь приоритет над значениями numberFormats
из конструктора VueI18n
.
Совет
Обратите внимание, что в хуках жизненного цикла контекст должен быть экземпляром компонента (например в опции data
, const $n = this.$n.bind(this)
).
# Внедряемые свойства
# $i18n
Тип:
I18n
Только для чтения
Получение экземпляра VueI18n
, если был определён.
Если в компоненте указана опция i18n
, то получение экземпляра VueI18n
компонента. В противном случае, получение корневого экземпляра VueI18n
.
# Класс VueI18n
Класс VueI18n
реализует интерфейс I18n
из определений flowtype (opens new window)
# Статические свойства
# version
- Тип:
string
Версия vue-i18n
.
# availabilities
🆕 Добавлено в версии 7.0+
- Тип:
IntlAvailability
Проверка доступности следующих возможностей интернационализации:
{boolean} dateTimeFormat
: форматирование дат для локалей{boolean} numberFormat
: форматирование чисел для локалей
Указанные выше возможности интернационализации зависят от окружения браузера (opens new window), в котором реализован ECMAScript Internationalization API (ECMA-402).
# Опции конструктора
Можно указывать некоторые опции конструктора I18nOptions
, основываясь на определениях flowtype (opens new window)
# locale
Тип:
Locale
По умолчанию:
'en-US'
Локаль используемая для локализации. Если локаль содержит территорию и диалект, то эта локаль явно определяет запасную локализацию.
# fallbackLocale
Тип:
FallbackLocale
По умолчанию:
false
Запасная локаль для локализации. Подробнее в разделе Запасная локализация.
# messages
Тип:
LocaleMessages
По умолчанию:
{}
Сообщения локализации для локали.
# dateTimeFormats
🆕 Добавлено в версии 7.0+
Тип:
DateTimeFormats
По умолчанию:
{}
Форматы дат для локализации.
- См. также: тип
DateTimeFormats
в определениях flowtype (opens new window)
# numberFormats
🆕 Добавлено в версии 7.0+
Тип:
NumberFormats
По умолчанию:
{}
Форматы чисел для локализации.
- См. также: тип
NumberFormats
в определениях flowtype (opens new window)
# availableLocales
🆕 Добавлено в версии 8.9.0+
Тип:
Locale[]
По умолчанию:
[]
Примеры:
["en", "ru"]
Список доступных локалей в messages
в лексическом порядке.
# formatter
Тип:
Formatter
По умолчанию: Встроенный formatter
Метод форматирования, реализующий интерфейс Formatter
.
# modifiers
🆕 Добавлено в версии 8.15.0+
Тип:
Modifiers
По умолчанию: модификаторы
lower
иupper
Функции модификаторов для связанных сообщений
# missing
Тип:
MissingHandler
По умолчанию:
null
Обработчик для отсутствующих сообщений локализации. Обработчик будет вызван с локалью, ключом сообщения локализации и значениями values.
Если указан этот обработчик и произойдёт попытка доступа к отсутствующему сообщению локализации, то предупреждения в консоли не будет.
# fallbackRoot
Тип:
Boolean
По умолчанию:
true
При использовании локализации в компонентах определяет обращаться ли к локализации корневого уровня (глобальной) при неудаче.
При значении false
будет выбрасываться предупреждение и возвращаться ключ.
# fallbackRootWithEmptyString
🆕 Добавлено в версии 8.26+
Тип:
Boolean
По умолчанию:
true
В локализации компонента укажите, следует ли вернуться к локализации корневого уровня (глобальной), если локальное сообщение представляет собой пустую строку.
Обратите внимание, что поведение по умолчанию в vue-i18n 9.x заключается в том, чтобы не возвращаться к корневому каталогу для локального сообщения, которое является пустой строкой.
Если false
, пустое локальное сообщение не будет возвращено в корень и будет храниться как пустая строка.
# sync
Тип:
Boolean
По умолчанию:
true
Синхронизировать ли локализацию корневого уровня с локализацией компонента.
При значении false
, независимо от локали определённой на корневом уровне, будет использоваться локаль установленная в компоненте.
# silentTranslationWarn
6.1+, 🆙 8.13
Тип:
Boolean | RegExp
По умолчанию:
false
Отключение предупреждений, отображаемых при неудаче локализации.
При значении true
, отключаются предупреждения об ошибках локализации. Если использовать регулярное выражение, то можно отключать предупреждения об ошибках, которые будут соответствовать key
(например, $t
).
# silentFallbackWarn
🆕 Добавлено в версии 8.8+, 🆙 8.13
Тип:
Boolean | RegExp
По умолчанию:
false
Отключение предупреждений при использовании запасной локали из fallbackLocale
или root
.
При значении true
предупреждения будут генерироваться только если недоступна локализация вообще, а не для случаев использования запасной локали. При использовании регулярного выражения можно отключать предупреждения которые будут соответствовать key
(например, $t
).
# pluralizationRules
8.5+
Тип:
PluralizationRules
По умолчанию:
{}
Набор правил для плюрализации в следующем формате:
{
// Ключ - локаль для которой будет применяться правило.
// Value - функция для получения индекса варианта плюрализации от текущего числа и заданного количества вариантов. (См. функцию getChoiceIndex)
'pt': function(choice, choiceIndex) => Number/* index of the plural word */;
'ru': function(choice, choiceIndex) => Number/* index of the plural word */;
'en': function(choice, choiceIndex) => Number/* index of the plural word */;
'jp': function(choice, choiceIndex) => Number/* index of the plural word */;
}
# preserveDirectiveContent
Добавлено в версии 8.7+
Тип:
Boolean
По умолчанию:
false
Определяет должен ли элемент директивы v-t
сохранять textContent
после того как директива будет снята с элемента.
# warnHtmlInMessage
Добавлено в версии 8.11+
Тип:
WarnHtmlInMessageLevel
По умолчанию:
off
Разрешить ли использование HTML-форматирования в сообщениях локализации. См. также свойство warnHtmlInMessage
.
Внимание!
Со следующей мажорной версии значение по умолчанию warnHtmlInMessage
будет warn
.
# sharedMessages
Добавлено в версии 8.12+
Тип:
LocaleMessages
По умолчанию:
undefined
Общие сообщения локализации при локализации в компонентах. Подробнее в разделе Локализация на основе компонентов.
# postTranslation
Добавлено в версии 8.16+
Тип:
PostTranslationHandler
По умолчанию:
null
Пост-обработчик локализации. Выполняется после вызова $t
, t
, $tc
и tc
.
Может пригодиться при необходимости дополнительно обработать итоговый текст перевода, например избавиться от висящих пробелов.
# componentInstanceCreatedListener
Добавлено в версии 8.18+
Тип:
ComponentInstanceCreatedListener
По умолчанию:
null
Обработчик получения уведомления о создании локального экземпляра компонента. Вызывается с новым и старым (корневыми) экземплярами VueI18n.
Обработчик может потребоваться при расширении корневого экземпляра VueI18n и необходимости ожидания для применения этих расширений к локальному экземпляру компонента.
# escapeParameterHtml
Добавлено в версии 8.22+
Тип:
Boolean
По умолчанию:
false
Если escapeParameterHtml
установлен в значение true
, то параметры интерполяции будут экранированы перед переводом сообщения. Это полезно, когда результат перевода используется в v-html
и текст для перевода содержит HTML-разметку (например, <b>
вокруг предоставленного пользователем значения). Этот шаблон в основном предназначен для случаев, когда передаются предварительно скомпилированные текстовые строки в компоненты UI.
Процесс экранирования включает в себя замену следующих символов на соответствующие HTML-сущности: <
, >
, "
, '
.
Установка escapeParameterHtml
в значение true
не должна нарушать существующую функциональность, а предоставит защиту от векторов атаки типа XSS.
# Свойства
# locale
Тип:
Locale
Чтение/Запись
Локаль используемая для локализации. Если локаль содержит территорию и диалект, то эта локаль неявно указывает на запасные варианты.
# fallbackLocale
Тип:
FallbackLocale
Чтение/Запись
Локаль используемая для запасной локализации. Способы определения и переключения на запасную локализацию можно изучить в разделе Запасная локализация.
# messages
Тип:
LocaleMessages
Только для чтения
Переведённые сообщения используемые для локализации.
# dateTimeFormats
🆕 Добавлено в версии 7.0+
Тип:
DateTimeFormats
Только для чтения
Форматы форматирования дат для локализации.
# numberFormats
🆕 Добавлено в версии 7.0+
Тип:
NumberFormats
Только для чтения
Форматы форматирования чисел для локализации.
# missing
Тип:
MissingHandler
Чтение/Запись
Обработчик для отсутствующих ключей локализаций.
# formatter
Тип:
Formatter
Чтение/Запись
Метод форматирования, который реализует интерфейс Formatter
.
# silentTranslationWarn
6.1+, 🆙 8.13
Тип:
Boolean | RegExp
Чтение/Запись
Отключение предупреждений выводимых при ошибке локализации.
# silentFallbackWarn
🆕 Добавлено в версии 8.8+, 🆙 8.13
Тип:
Boolean | RegExp
Чтение/Запись
Отключение предупреждений выводимых при ошибке использования запасной локализации.
# pluralizationRules
8.5+
Тип:
PluralizationRules
Чтение/Запись
Набор зависимых от локали правил плюрализации.
# preserveDirectiveContent
Добавлено в версии 8.7+
Тип:
Boolean
Чтение/Запись
Должен ли элемент директивы v-t
сохранять textContent
после того как директива снята с элемента.
# warnHtmlInMessage
Добавлено в версии 8.11+
Тип:
WarnHtmlInMessageLevel
Чтение/Запись
Разрешить ли использование HTML-форматирования в сообщениях локализации.
При установке warn
или error
проверяются сообщения локализации экземпляра VueI18n.
При установке warn
выводятся предупреждения в консоль.
При установке error
генерируется Error.
В качестве значения по умолчанию в экземпляре VueI18n установлено off
.
# postTranslation
Добавлено в версии 8.16+
Тип:
PostTranslationHandler
Чтение/Запись
Обработчик для пост-обработки перевода.
# Методы
# getChoiceIndex
Аргументы:
{number} choice
{number} choicesLength
Возвращает:
finalChoice {number}
Получение индекса для плюрализации текущего числа и заданного количества вариантов. Реализация может быть переопределена через изменение прототипа:
VueI18n.prototype.getChoiceIndex = /* пользовательская реализация */
Однако в большинстве случаев достаточно передать нужную функцию в pluralizationRules опцию конструктора.
# getLocaleMessage( locale )
Аргументы:
{Locale} locale
Возвращает:
LocaleMessageObject
Получение сообщений локализации для локали.
# setLocaleMessage( locale, message )
Аргументы:
{Locale} locale
{LocaleMessageObject} message
Установка сообщений локализации для локали.
ПРИМЕЧАНИЕ
Добавлено в версии 8.11+
При использовании warn
или error
в свойстве warnHtmlInMessage
, при выполнении этого метода будет проверено используется ли HTML-форматирование для сообщения локализации.
# mergeLocaleMessage( locale, message )
6.1+
Аргументы:
{Locale} locale
{LocaleMessageObject} message
Объединение указанных сообщений локализации с сообщениями локализации локали.
ПРИМЕЧАНИЕ
Добавлено в версии 8.11+
При использовании warn
или error
в свойстве warnHtmlInMessage
, при выполнении этого метода будет проверено используется ли HTML-форматирование для сообщения локализации.
# t( key, [locale], [values] )
Аргументы:
{Path} key
: обязательный{Locale} locale
: опционально{Array | Object} values
: опционально
Возвращает: :
TranslateResult
Аналогично функции возвращаемой методом $t
. Подробнее см. $t.
# tc( key, [choice], [values] )
Аргументы:
{Path} key
: обязательный{number} choice
: опционально, по умолчанию1
{string | Array | Object} values
: опционально
Возвращает:
TranslateResult
Аналогично функции возвращаемой методом $tc
. Подробнее см. $tc.
# te( key, [locale] )
Аргументы:
{string} key
: обязательный{Locale} locale
: опционально
Возвращает:
boolean
Проверяет существует ли указанный ключ в глобальных сообщениях локализации. Если указать locale
, проверка будет осуществляться в сообщениях локализации locale
.
# getDateTimeFormat ( locale )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
Возвращает:
DateTimeFormat
Получение форматов форматирования дат локализации.
# setDateTimeFormat ( locale, format )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
{DateTimeFormat} format
Установка форматов форматирования дат для локализации.
# mergeDateTimeFormat ( locale, format )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
{DateTimeFormat} format
Объединение указанных форматов форматирования дат с форматами локализации.
# d( value, [key], [locale] )
🆕 Добавлено в версии 7.0+
Аргументы:
{number | Date} value
: обязательный{Path | Object} key
: опционально{Locale | Object} locale
: опционально
Возвращает:
DateTimeFormatResult
Аналогично функции возвращаемой методом $d
. Подробнее см. $d.
# getNumberFormat ( locale )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
Возвращает:
NumberFormat
Получение форматов форматирования чисел для локализации.
# setNumberFormat ( locale, format )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
{NumberFormat} format
Установка форматов форматирования чисел для локализации.
# mergeNumberFormat ( locale, format )
🆕 Добавлено в версии 7.0+
Аргументы:
{Locale} locale
{NumberFormat} format
Объединение указанных форматов форматирования чисел с форматами локализации.
# n( value, [format], [locale] )
🆕 Добавлено в версии 7.0+
Аргументы:
{number} value
: обязательный{Path | Object} format
: опционально{Locale} locale
: опционально
Возвращает:
NumberFormatResult
Аналогично функции возвращаемой методом $n
. Подробнее см. $n.
# Директивы
🆕 Добавлено в версии 7.3+
# v-t
Ожидает:
string | Object
Модификаторы:
.preserve
: (8.7.0+) сохраняетtextContent
элемента при снятии директивы с элемента.
Подробности:
Обновление textContent
элемента, который был переведён с помощью сообщений локализации. Можно использовать строковый или объектный синтаксис. Строковый синтаксис может быть задан в качестве пути к сообщению локализации. При использовании объектного синтаксиса необходимо указать следующие свойства:
path
: обязательный, ключ сообщения локализацииlocale
: опционально, локализацияargs
: опционально, для списка или именованного форматирования
ПРИМЕЧАНИЕ
По умолчанию значение textContent
элемента удаляется при снятии директивы v-t
. Это может быть нежелательной ситуацией например при анимировании списков (opens new window). Для сохранения данных textContent
после снятия директивы следует использовать модификатор .preserve
или глобальную опцию preserveDirectiveContent
.
- Примеры:
<!-- строковый синтаксис: литерал -->
<p v-t="'foo.bar'"></p>
<!-- строковый синтаксис: привязка к данным -->
<p v-t="msg"></p>
<!-- объектный синтаксис: литерал -->
<p v-t="{ path: 'hi', локализация: 'ru', args: { name: 'kazupon' } }"></p>
<!-- объектный синтаксис: привязка к данным -->
<p v-t="{ path: greeting, args: { name: fullName } }"></p>
<!-- с модификатором preserve -->
<p v-t.preserve="'foo.bar'"></p>
- См. также: Пользовательская директива для локализации
# Компоненты
# Функциональный компонент i18n
🆕 Добавлено в версии 7.0+
# Входные параметры:
path {Path}
: обязательный, путь к сообщению локализацииlocale {Locale}
: опционально, локализацияtag {string | boolean | Object}
: опционально, по умолчанию'span'
places {Array | Object}
: опционально (7.2+)
Внимание!
Со следующей мажорной версии опция places
будет удалена. Используйте синтаксис слотов.
# Использование:
<div id="app">
<!-- ... -->
<i18n path="term" tag="label" for="tos">
<a :href="url" target="_blank">{{ $t('tos') }}</a>
</i18n>
<!-- ... -->
</div>
const messages = {
en: {
tos: 'Term of Service',
term: 'I accept xxx {0}.'
},
ru: {
tos: 'Условия обслуживания',
term: 'Я соглашаюсь с xxx {0}.'
}
}
const i18n = new VueI18n({
locale: 'en',
messages
})
new Vue({
i18n,
data: {
url: '/term'
}
}).$mount('#app')
# См. также:
# Функциональный компонент i18n-n
🆕 Добавлено в версии 8.10+
# Входные параметры:
value {number}
: обязательный, число для форматированияformat {string | NumberFormatOptions}
: опционально, форматируемое число или объект с указанными опциями форматированияlocale {Locale}
: опционально, локализацияtag {string | boolean | Object}
: опционально, по умолчанию'span'
# Использование:
<div id="app">
<!-- ... -->
<i18n-n :value="money" format="currency" tag="label">
<span v-slot:currency="slotProps" class="font-weight: bold">
{{ slotProps.currency }}
<span>
</i18n-n>
<!-- ... -->
</div>
var numberFormats = {
'en-US': {
currency: {
style: 'currency',
currency: 'USD'
}
},
'ru-RU': {
currency: {
style: 'currency',
currency: 'RUB'
}
}
}
const i18n = new VueI18n({
locale: 'en-US',
numberFormats
})
new Vue({
i18n,
data: {
money: 10234
}
}).$mount('#app')
# Слоты с ограниченной областью видимости
Функциональный компонент <i18n-n>
может принимать различные слоты с ограниченной областью видимости. Список поддерживаемых имён слотов основан на выходных типах Intl.NumberFormat.formatToParts()
(opens new window):
currency
decimal
fraction
group
infinity
integer
literal
minusSign
nan
plusSign
percentSign
Каждый из слотов предоставляет доступ к значениям трёх параметров:
[slotName] {FormattedNumberPartType}
: параметр с тем же именем, что и имя слота (например,integer
)index {Number}
: индекс конкретной части в массиве частей числаparts {Array}
: массив со всеми отформатированными частями числа
# См. также:
# Специальные атрибуты
# place
🆕 Добавлено в версии 7.2+
# Ожидает: {number | string}
Используется при интерполяции компонента для указания индекса при форматировании списком или ключа при именованном форматировании.
Подробнее об использовании в разделе по ссылке ниже.