数据库字典表如何国际化

数据库码表如何国际化
一些码值是需要维护在数据表中,比如客户类型,VIP,高级等。
这些如何做国际化

你好,
你说的码表指的是字典表吧?一般有两个字段,代码和名称。

就是字典表中的名称如何国际化。
根据选择的语言自动显示不同的字典名称翻译。

字典实体的使用场景一般有以下几种:

  1. 显示在一个表格列中,这种情况下一般给这列绑定的是关联的字典实例
  2. 显示在一个PickerField中,这种情况下这个PickerField的Value也是字典实例

这两种情况下CUBA都是取的实例的“实例名称”, 而实例名称都是通过 MetadataTools 类的 getInstanceName 方法获取的。

所以基本思路是:

  1. 创建一个基础字典实体(BaseDic),包括代码属性、默认名称属性、及各种语言环境下的名称属性,比如:code,name,nameZH_cn,nameEn等。
  2. 扩展 MetadataTools 类,重写 public String getInstanceName(Instance instance) 方法,在此方法中判断 instance 参数值类型,如果是 BaseDic类型,则从 UserSession 中 getLocale ,根据local属性来确认获取哪个语言的名称,如果是英文,则返回 ((BaseDIc)instance).getNameEn()

这样可以解决上述两种情况下的本地化问题。

你可以先尝试一下,有问题再讨论。

1 个赞