Я использую плагин vue-i18n для переводов в SPA на базе Nuxt.js. Это обеспечивает легкий доступ к сообщениям внутри компонентов, например:
$t('footer.press')
Но как мне получить переводы вне компонентов? В моем конкретном случае они мне нужны в магазине действие:
export const actions = {
async myAction({ commit, state, rootState, rootGetters }, options) {
(...)
const message = $t("example.message.key") // doesn't work, undefined
const message1 = this.$i18n.t("example.message.key") // doesn't work, undefined
(...)
})
}
Вот как я включаю плагин vue-i18n в проект:
пакет.json
…
"dependencies": {
…
"vue-i18n": "^8.18.2",
…
},
…
nuxt.config.js
…
plugins: [
…
'~/plugins/i18n',
…
],
…
После некоторых исследований я нашел рабочее решение на форуме Vue здесь:
const message = this.app.i18n.t("example.message.key")
Работает для меня как шарм!
@Osify Я добавил больше информации к вопросу, надеюсь, это поможет.
спасибо за обновление, я думаю, это не соответствует моему случаю, я использую модуль nuxt-i18n, я пишу какой-то javascript-помощник в качестве утилиты вне компонента, и который предполагает вызывать его, когда это необходимо в материалах компонента Vue, я все еще не могу сделать перевод, сделанный в вспомогательном js, либо через this.app, через Vue.i18n и т. д.
@Osify Чтобы использовать систему реактивности, ваш помощник должен вернуть идентификатор ключа i18n, который будет использоваться внутри нижестоящего компонента. Поэтому, когда текущая локаль изменяется во время выполнения, вы мгновенно получаете новые переводы!
this.$t('logInWongCredentials')
(следующий)
Вы пропустили часть "внешнего компонента"
Необходимо объяснить, как вам удается иметь
app.i18n
доступным, так как он вылетает (ErrorType) при вызовеthis.app.i18n