首页 > 解决方案 > js 文件中的 Vue-i18n 翻译而不是 json

问题描述

如何使用.js带有翻译的文件而不是.json

改变:

const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)

const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.js$/i)

不起作用。任何想法?

标签: javascriptvue.jsvue-i18n

解决方案


我找到了一个答案,它可能对将来的某些人有所帮助。从 vue-cli 3 编辑根目录 i18n.js 文件,函数 loadLocalMessages:

function loadLocaleMessages () {
  const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.js$/i)
  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).default
    }
  })

  return messages
}

locales/en.js

const translations = { /* translations here */ }
export default translations

推荐阅读