我们在使用i18n的时候,数据库内取值是怎么设计的?
数据库里存储的数据一般都是汉字,要全面地国际化,数据库是多一个英文字段吗?还是说怎么做呢?
###国际化的情况分两类:
-
系统页面数据,比如系统提供的内容,包括标题、按钮、提示等,这个可以按用户设定语言进行加载展示。这个很多语言和框架都提供了支持,比如
Java
的Locale
和Spring
的MessageSource
。- 其实这里还以一种比较特殊的设计,就是页面内容有些是通过加载数据库展示的。
这种处理有一个思路就是建配置表,统一存储多语言的内容。
至于翻译转化的内容,就比较麻烦,web需要识别出哪些内容需要翻译,如果是Java应用,可以考虑通过POJO
增加Java注解识别。
- 其实这里还以一种比较特殊的设计,就是页面内容有些是通过加载数据库展示的。
- 基于用户来说,一般只有一种主语言,意思就是数据库按用户内容输入存储即可。