多模块下动态语言Vue I18N 与 I18N ALLY的共同使用
VUE-I18N,处理程序的多语言
I18N ALLY 管理开发过程中的多语言,如翻译与显示
假设有一个模块为common,下面有各个语言
文件结构
文件内容,强行在语言资源文件中添加模块名(即单文件中的多模块结构。分目录的目的只是为了方便管理。)
ALLY插件识别并显示的效果
动态加载代码
import { set } from 'lodash-es'
const modules = import.meta.globEager('./language/**/*.js')
function genMessage(langs, prefix = 'lang') {
const obj = {}
Object.keys(langs).forEach((key) => {
const mod = langs[key].default
let k = key.replace(`./${prefix}/`, '').replace(/^\.\//, '')
const lastIndex = k.lastIndexOf('.')
k = k.substring(0, lastIndex)
const keyList = k.split('/')
//const lang = keyList.shift()
//const objKey = keyList.join('.')
const lang = keyList.shift()
const s = keyList.pop()
const objKey = s + '.' + keyList.join('.') //使语言在前,使用目录路径作为模块名
const moduleName = keyList.shift()
//生成对象 language:{en.common:{},zh-cn.common:{}}
if (lang) {
set(obj, lang, obj[lang] || {})
set(obj[lang], objKey, mod[moduleName]) //为兼容I18N ALLY,JS的实现为添加一个同名节点,动态加载时取消该节点
}
})
return obj
}
const { language } = genMessage(modules)
export default language
@@#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南