我们正在开发一个旅游门户网站和一个旅游门户网站,其内容和详细信息是我们的心脏。我们计划将其置于多个区域设置中,这意味着我们需要处理每个区域设置的动态数据。
目前我们有以下表格
Destination
Transport
Places of Interests
user comments etc.
每个表都包含很多字段,如
Name
ShortDescription
LongDescription
以及许多其他可能包含大量数据的字段,我们需要以特定于语言环境的方式处理数据。
我不确定我们如何最好地设计应用程序来处理这种情况,我想到的一件事就是为每个表中的每个语言环境添加额外的列,但这意味着需要从数据库更改新的语言环境代码级别,并不是很好。
由于每个表都包含很多列,这些列可以包含符合国际化条件的数据,所以我的问题是处理这种情况的最佳方法
EDIT1 在做了一些分析和一些令人难以置信的方法后,我想到了如下..
我打算为每个表创建一个转换表 喜欢目的地我有以下设计
table languages
-- uuid (varchar)
-- language_id(varchar)
-- name (varchar)
table Destination
--uuid (varchar)
other fields which are not part of internationalization.
table Destination_translation
-- id (int)
-- destination_id (int)
-- language_id (int)
-- name (text)
-- description(text)
对上述方法的任何有价值的建议都是最受欢迎的......
答案 0 :(得分:1)
以前国际化应用程序时,我们有一个基于区域设置的值表。所以,我们做了类似的事情:
创建一个名为local_strings的表,由string_code,locale_code,value组成。这包含各种值的翻译。因此,如果您已翻译成三种语言,则每个string_code将有三个具有不同locale_codes的条目。
然后,每个主表(在您的案例目的地,传输等)都引用了local_strings表中的string_code。
最后,在从数据库中查询值时,只需确保始终加入local_strings表并始终使用用户的当前语言环境。或者,您可以将这些值缓存在内存中,这样您就不会总是与此表连接。但是,根据我的经验,表格永远不会那么大,所以加入它的开销并不大。
答案 1 :(得分:0)
有几种方法可以解决这个问题:
我绝对赞成选项1,因为它使表格看起来仍然像真实的东西,他们仍然可以通过直接查看数据来阅读。它还可以防止您进行子选择或连接,这有助于提高性能。 选项2的优点是管理界面的程序员(如果有的话)更容易。