Hello,

Je suis en train d'essayer de modifier le fichier state/modules/index.js pour importer automatiquement les fichiers json du plugins vue Vue118

J'aimerais avoir une structure object comme suit :

{
  en: {
    homepage: {...},
    article: {...},
  },
  fr: {
    homepage: {...},
    article: {...},
  }
}

Mais actuellement j'ai

{
  en: {
    messages: {
      homepage: {...},
      article: {...},
    }
  },
  fr: {
    messages: {
      homepage: {...},
      article: {...},
    }
  }
}

Est-ce que quelqu'un peu m'aider à enlever l'object "messages" ?

Structure du dossier lang

+messages
  +de
    homepage.json
    article.json
    ...
  +fr
    homepage.json
    article.json
    ...
  index.js
index.js

langs/messages/index.js

import camelCase from 'lodash/camelCase'

const requireModule = require.context('.', true, /^((?!\.unit\.).)*\.json$/)
const root = {}

requireModule.keys().forEach(fileName => {
  if (fileName === './index.js') return

  const modulePath = fileName
    .replace(/^\.\//, '')
    .replace(/\.\w+$/, '')
    .split(/\//)
    .map(camelCase)

  const { messages } = { ...getNamespace(root, modulePath) }

  messages[modulePath.pop()] = { ...requireModule(fileName) }

  function getNamespace(subtree, path) {
    if (path.length === 1) return subtree
    const namespace = path.shift()
    subtree[namespace] = { messages: {}, ...subtree[namespace] }
    return getNamespace(subtree[namespace], path)
  }
})

export default root

Actuellement j'importe de cette façon:

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from '@langs/messages'

Vue.use(VueI18n)

export default new VueI18n({
    locale: 'de',
    fallbackLocale: 'de',
    messages: {
    fr: langs.fr.messages,
    de: langs.de.messages
  }
})

Mais j'aimerais en arriver à ça

export default new VueI18n({
    locale: 'de',
    fallbackLocale: 'de',
    messages
})

Aucune réponse