平台多语言

当我们的系统中需要支持多种语言设置时,这时就需要将页面中的菜单选项进行多种映射

系统设置

语言的切换作为系统级别的设置,则需要将点击的语言对应的语言 lang(language) (例如 zh_CN / en_US ) 作为restful参数,加上所需要的菜单值(promptkey) 再次请求菜单列表

请求示例

从而去往数据库中获取中文值对应的英文菜单

在业务处理中,经常会有有一些数据需要做多语言支持,根据用户选择的语言来动态切换显示内容。

当遇见这种情况时我们可以自定义组件,提供的新增方法会自动join多语言表,根据传入的值实现插入

在进行查询时以order_id进行连接获取该语言对应的order_name

返回数据

英文平台

中文平台

核心逻辑(未使用框架核心组件,仿照框架源代码封装)

在进行语言切换查询时则需要自己创建的mapper接口需要自行join多语言表。

原理剖析

通过自定义组件进行当前系统语言获取

定义ThreadLocal线程安全类,以及默认语言类型

语言的切换其实本质上还是改变对象的值

组件原理剖析

定义SqlHelper类进行sql拼接实现自动连接

也就是将如下orderName中的值存入到人、其对应的多语言库中

如下为sql插入与查询代码

查询结果

其对应原理则为:将租户级别的语言进行个性化配置

值集设置

目前系统集别的菜单都采用值集设置

值集配置后通常通过值集视图映射然后以lov形式进行显示(通常独立值集是以下拉框的形式在前端展示),最后选择数据时不管显示的是什么,向后端传递的字段是由值集的valueField内容决定的,这点容易混淆(我们常常展示meaning字段而传递value字段)

在我们的业务过程中一般都只存储 valueField 进行映射 ,这样当我们的含义进行动态更新时,对业务并无影响

以 valueField 从而查出 真实的 meaning

最后修改:2022 年 10 月 13 日
如果觉得我的文章对你有用,请随意赞赏