#javascript #vue.js #vuejs2 #internationalization #vue-i18n
#javascript #vue.js #vuejs2 #интернационализация #vue-i18n
Вопрос:
Я хочу связать сообщения локали в vue-i18n с параметром. Например, когда у меня есть такой файл локализации:
{
"next": "Next step {step 1}: @:steps[{step}]",
"steps": [
"Welcome", // 0
"Briefing", // 1
"Finish" // 2
]
}
Я хотел бы использовать его следующим образом:
$t('next', { step: '1' })
// which should result in: "Next step 2: Briefing"
// but instead it leads to: "Next step : Welcome, Briefing, Finish[1]"
Возможно ли как-то этого добиться?
Ответ №1:
Вы можете использовать перечисления в файле i18n. Вот краткий пример, который вы можете попробовать. Я использую его для своего проекта, и он работает должным образом:
файл i18n:
steps: {
1: "Welcome",
2: "Briefing",
3: "Finish",
},
Позже вы сможете получить доступ к перечислениям в вашем компоненте как:
{{ $t(`steps.${step}`) }}
Где step
ваш номер, который вы хотите прочитать из steps
файла i18n.
Комментарии:
1. Я вижу, вы используете строки шаблона для первой замены переменной step, чтобы передать правильную строку в i18n? Аккуратно! Но это всего лишь обходной путь, поскольку этот код работает только в среде JS, а не непосредственно в файлах локализации.
2. @winklerrr ..у меня есть мой
steps
массив в файле локализации. Возможно, я не понял вопроса. Извините, что я виноват!3. Нет проблем, ваше решение уже продвинуло меня дальше! Спасибо!
4. @winklerrr Как вы это исправили? Я ищу тот же ответ…