有关如何在中间有数据库时处理国际化的建议

时间:2014-11-27 09:33:10

标签: java spring internationalization

我的网站允许用户选择语言。网站上显示的所有文本都由Spring的ReloadableResourceBundleMessageSource处理,它从一些属性文件中读取文本。

我有一个包含许多链接的菜单,取自数据库。

我的问题是:我应该在哪里为链接文本编写不同的语言?什么是最佳做法?

1)写下dabatase中的所有语言?例如这样?

--------------------------------------------------
| id_link |   url  | italian | english | spanish |
--------------------------------------------------
| 1       |  /url  | Ciao    | Hello   | Hola    |
--------------------------------------------------

2)绑定dabatase和属性文件?例如这样?

---------------------------------
| id_link |   url  | description| 
--------------------------------
| 1       |  /url  | link1      |
---------------------------------
                          |              __ language_it.properties
                          |             |   link1= ciao
                          |             |
                          |-------------|__ language_en.properties
                                        |   link1= hello
                                        |
                                        |__ language_es.properties
                                            link1= hola

2 个答案:

答案 0 :(得分:1)

我建议使用第二种方法,将密钥存储在数据库中,将i18n密钥存储在属性中。

这将允许将来添加更多语言,而无需修改表结构。

答案 1 :(得分:1)

应该小心低估数据库能力,因为在Java端做所有事情似乎是如此直接。使用嵌入式数据库,可以读/只,O / R映射将bean中的所有东西都保存得很快。

然而,维护更成问题。可以在真实VCS中对属性进行版本控制。使用不同的翻译机构/公司的其他国家分支机构。

通常重要的是,应保持属性:对语言歧义进行评论。 对文本进行排序,可以使用词汇表来实现术语的一致翻译。 文本格式的文件最简单。

对于属性,我们仍然应该对翻译做一些支持:默认情况下,编码是ISO-8859-1,即使是英语也不够(逗号像引号)。用于检查完整性的小脚本,与其他语言的比较等都是必需的。