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
})