之前设计动态字典国际化的时候,只考虑了 中/英 两种语言,但是最近有提出计划的需求,就是需要添加一些小语种的本地化,比如说可能会有法语、西班牙语...
基本上会出现这样的情况:
- A组管理员,维护了中文和英语;B组管理员维护了英语和法语;C组管理员维护中文、英语和法语。
- 又有一些数据是共通的通用字典,比如说一些当地的法律条款,系统统一维护一次所有语言版本之后开放给所有的组。
所以数据隔离了但是又没有完全隔离。
同时用户组之间的成员可能会有借调,本来在A组的人调动到B组了,但是B组并没有维护中文,就会出现要么显示为空白文本,要么就是英语文本。
这个时候要么管理员去维护中文,要么就让借调的用户切换到英文环境去操作。
如果是固定字典其实很简单粗暴直接穷举一下就好了,但是因为是用户维护的动态字典,字典的 Key
、value
和 语言类型并不是固定的。只能说先预设好一些固定的语言可选项,让他们去选择然后维护。
就很头疼,起初只是添加字段的方式来解决,比如说默认是中文(DESC
),然后添加了一个 DESC_EN
的字段,让用户选择性的维护字典数据。现在肯定不能使用这样的方式了,因为有些数据表的可自定义的字段会很多,增加字段的方式就会显得很蠢。
所以想来各位佬有什么好的解决思路?
比较主要的问题
很多的字典内容,其实不受限于开发者的,项目上线之后由拥有管理权限的用户去手动维护。随时都有可能由于用户的增删改查而改变。
现在是给字典表增加了列分别对应 中文
/英语
/法语
,但是这样的话,后续每次增加一种语言都需要再给字典表增加字段。
而且有一些的字典表用户维护的内容是有多个字段的,比如说 4个自定义文本列
,那么就是说现在已经有的 三种语言
,这个表光自定义维护内容的字段就是 12
个,未来增加更多的语言就要变得越来越多,就会显得比较蠢。
所以就想着把增加字段列的形式,改编成增加数据行的形式,按照 lang
字段去区分不同的语言。只不过这样的话,之前通过字典id去关联的历史数据都得调整。
比如说改用为使用自定义的 key
或者其他的方式,不然切换了语言之后依旧是当时关联的字典ID对应的文本内容。就会出现英文环境下历史数据的文本是中文的(其实需要按照各种语言环境去展示对应语言的字典内容)。
https://crowdin.com 这个工具应该能满足你的需求