Интернационализация приложений Vue

preview_player
Показать описание

Таймкоды:
00:00 Интро
00:55 Установка и настройка необходимых модулей
02:35 Сохранение переводов в файлы JSON
04:35 Переводы в шаблонах (функция t)
05:50 Добавление переключателя языков
08:10 Работа со множественным числом (плюрализация)
11:05 Локализация даты и времени
12:20 Локализация валют
13:25 Добавление маршрутов (routes)
18:10 Изменение локали в URL
19:10 Создание специального плагина для интернационализации и "ленивая" загрузка переводов
24:35 Считывание предпочитаемой локали исходя из параметров пользователя
26:50 Заключение

Аккаунт Ethereum (ETH): 0x719C2d2bcC155c85190f20E1Cc3710F90FAFDa16

Рекомендации по теме
Комментарии
Автор

в итоге же логика не работает. мой язык в navigator ru-RU, а плагин выставляет en всегда по дефолту. где-то ошибка, пытаюсь найти, но пока без результатно

mr_robot_
Автор

А как добавить больше чем 2 языка?
Создал pl.json (после заполнил его как и предыдущие)
В .env сделал вот так:
VUE_APP_I18N_SUPPORTED_LOCALE=en, ru, pl
Но новой строчки под en, ru в браузере не добавилось.
Заранее спасибо

calmastia
Автор

Можно определять язык и стандартными функциями.

export default new VueI18n({
locale: (navigator.language || navigator.userLanguage).split('-')[0],
fallbackLocale: 'ru',
messages: loadLocaleMessages()
})

QuadringentiViginti
Автор

Ваш пример работает!
Но, когда пытаюсь создать приложение сам, всё заканчивается на этом этапе:
new VueI18n({
// Key - language to use the rule for, `'ru'`, in this case
// Value - function to choose right plural form
pluralizationRules: {
/**
* @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
* @param choicesLength {number} an overall amount of available choices
* @returns a final choice index to select plural word by
*/
'ru': function(choice, choicesLength) {
// this === VueI18n instance, so the locale property also exists here

if (choice === 0) {
return 0;
}

const teen = choice > 10 && choice < 20;
const endsWithOne = choice % 10 === 1;

if (choicesLength < 4) {
return (!teen && endsWithOne) ? 1 : 2;
}
if (!teen && endsWithOne) {
return 1;
}
if (!teen && choice % 10 >= 2 && choice % 10 <= 4) {
return 2;
}

return (choicesLength < 4) ? 2 : 3;
}
}
})

Viktorres
Автор

Не хватает сохранения локали, выбранной пользователем, которая устанавливается при повторном входе.

evgeniythai
Автор

А как добавить больше чем 2 языка?
Создал pl.json (после заполнил его как и предыдущие)
В .env сделал вот так:
VUE_APP_I18N_SUPPORTED_LOCALE=en, ru, pl
Но новой строчки под en, ru в браузере не добавилось.
Заранее спасибо!

calmastia
join shbcf.ru