平台多语言
当我们的系统中需要支持多种语言设置时,这时就需要将页面中的菜单选项进行多种映射
系统设置
语言的切换作为系统级别的设置,则需要将点击的语言对应的语言 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
此处评论已关闭