动态内容国际化,数据库设计建议

是动态内容,从数据库加载的。

我现在有2个方案:
1。数据库需要翻译的,建2个对应的表,一个表存中文,一个表存英文。
2。需要翻译的表,里面一个中文列,一个英文列。

还有其它建议吗?

这里有好几个问题。

  1. 你问什么一定要把动态内容(新闻)和静态内容(页面的Label)放到一起控制,毫无好处吧。完全可以Label管Label,内容管内容。

  2. 就算你都用数据库管理,你的这两个方案也很不好,都没办法对应增加语言版本这个潜在的变化点。

[quote]
我现在有2个方案:
1。建2个对应的表,一个表存中文,一个表存英文。
这种方法你是准备在程序使用IF ELSE判定后然后去数据库的特定表中查找吗?那么当增加一个语种怎么办?再加一个表,然后再加IF ELSE吗?

2。需要翻译的表里面一个中文列,一个英文列。
这个方案更差,同样追加一个语言版本,再追加一列吗。这个改的就更大了, 表结构都变了。
[/quote]

以下的表结构
Table
Content language
中文 CN

CHINESE EN
中文 JP

至少可以很好的支持增加语言版本这种情况。
追加语言只需追加数据即可。

个人觉得国际化还是使用资源文件来做比较好。 就是使用Properties文件。
可以将需要国际化的那些项抽象出一个Key, 数据库里面只是存储Key。 使用SQL语句查询到Key以后,再到资源文件中取出需要的Value。

对于这种简单的多国语言的管理,没有建立关系数据表的必要。 用文本文件就可以完成了。 而且基本上主流的框架都有很好支持(Struts, Spring等)。

用文件的好处是,以后需要增加语言版本,增加一个文本文件就可以了。 如果是数据表,那么需要修改表结构。

[quote]
汗颜。
动态内容。。比如:新闻,某某东西的介绍
[/quote]

那么需要支持动态的插入是吗?
是不是可以这样理解,对于一个对象(新闻或者东西)有时候只需要一个版本即可, 比如一个中国用户那么他只会输入中文的对象, 那么对于一个英国用户只是使用英语的对象。

如果这样的话那么你可以这样建表:

Table
Content language
中文 CN

CHINESE EN
中文 JP