2016-04-25 23 views
0

我正在寻找一种解决方案来将DB Oracle作为多语言数据库,我们的必要性就是这样,我们有一个数据库,例如某些业务操作通过存储过程执行,我们将任何消息存储在varchar列中,或者当它出现错误时(例如业务逻辑错误),我们会使用外部消息来引发应用程序错误。 现在,我们必须以三种不同的语言存储这些消息,并将这些消息也以三种不同的语言显示出来。如何使数据库Oracle成为多语言

由于我正在寻找解决方案,任何形式的建议将不胜感激。

谢谢。

+0

在错误消息表中添加一个新列,并为每一行添加一个值,说明它所处的语言。例如:'lang(EN | FR | ES)' – Phiter

回答

0

对此有很多方法。

我会列出最受欢迎的:

1)重复表格。即创建表:customer_en,customer_fr,customer_ge等

2)为每个实体表创建字典。即,你将得到带有英文文本的表格Customer(id,name,short_name,description)。和表Customer_Voc(id,customer_id,short_name,description,languages)。 Customer_Voc将比客户表大X倍。其中X是受支持的非英语语言的数量。

3)使用表中与语言相关的列。在我们的例子中: Customer(ID,short_name_en,short_name_fr,short_name_de,...,description_en,description_fr,description_de)

4)使用常用词汇表。 在这种情况下,你将有2个额外的表:

短语 - ID,eng_text phrases_translation - ID,phrases_id,translated_text,语言

而且每个文本字段,你应该通过FK上phrases.ID

+0

感谢Pavel的回答,我将创建表将所有语言的所有消息集中在一起,这是一种简单而有效的方法。 – user2705861

0
更换

同样值得检查的是,N​​LS字符集将包含您期望在表格中显示的所有消息内容。从角色子集迁移到超集很容易,但很难以其他方式进行。

Oracle网站上有一个description of a Multilingual Database Scenario,并且旧版本的Oracle也提供相同的详细信息。