@ravshan01

Как указать i18n искать файлы во всех папках?

Всем привет.
Использую i18n во Vue проекте.
Структура:
/public
/src
  /locales
  /views
  /other folders
  App.vue
  main.js
  i18n.js
package.json


Я хочу чтобы-он брал файлы не только из папки locales, а из любой папки, например брал /views/HomePage/HomePage.locales.json

i18n.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

function loadLocaleMessages () {
  const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i); // делаю так ничего не работает - './' или '.' вместо './locales
  const messages = {}
  locales.keys().forEach(key => {
    const matched = key.match(/([A-Za-z0-9-_]+)\./i)
    if (matched && matched.length > 1) {
      const locale = matched[1]
      messages[locale] = locales(key)
    }
  })
  return messages
}

export default new VueI18n({
  locale: process.env.VUE_APP_I18N_LOCALE || 'ru',
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'ru',
  messages: loadLocaleMessages()
})


vue.config.js
module.exports = {
  "transpileDependencies": [
    "vuetify"
  ],

  pluginOptions: {
    i18n: {
      locale: 'ru',
      fallbackLocale: 'uz',
      localeDir: 'locales', // пробовал заменить на src не работает
      enableInSFC: true
    }
  }
}
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
У вас включена опция enableInSFC: true.
В vue файлах можете писать так:
<!-- /views/HomePage/HomePage.vue -->
<i18n src="./HomePage.locales.json"></i18n>

Таким образом в контексте этого vue файла переводы из HomePage.locales.json переопределят глобальные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы