JFinal 项目迁移 Vue/TypeScript 前端如何复用后端国际化文档

我现在有一个老的 JFinal 后台管理系统,原来是 JFinal 后端模板页面,国际化一直使用后端 resources 里的 .properties 文件,例如:

menu.nihao=进口管理
menu.oceanTransport=海运
button.search=查询
button.add=增加
button.delete=删除

这套机制在 JFinal 模板页面里很好用,因为服务端渲染时可以直接通过 JFinal 的 I18n / Res 读取文案。

现在我准备把前端迁移成 Vue 3 + TypeScript + Vite 的单页应用。遇到的问题是:Vue/TS 跑在浏览器端,不能直接读取后端 classpath/resources 下的 JFinal 国际化 properties 文件。

如果在前端每个页面再写一套:

const zh = { search: '查询', save: '保存' }
const ja = { search: '検索', save: '保存' }
const en = { search: 'Search', save: 'Save' }

就会变成前后端维护两份国际化文案。字段、按钮、菜单、提示语很多,后期非常容易遗漏、重复、不一致。

我想请教 JFinal 社区有没有比较推荐的做法?

目前我的倾向是:

resources/i18n/frontend_zh_CN.properties
resources/i18n/frontend_ja_JP.properties
resources/i18n/frontend_en_US.properties
        ↓
Vite 构建前执行脚本
        ↓
src/generated/i18n/zh_CN.ts
src/generated/i18n/ja_JP.ts
src/generated/i18n/en_US.ts
        ↓
Vue 页面统一使用 t('button.search') / t('label.customerCode')

也就是后端 properties 仍然作为唯一文案源,前端不再手写多语言对象。

想请教这种设计在 JFinal 项目里是否合适?有没有现成工具、最佳实践或者需要避坑的地方?


评论区

热门反馈

扫码入社