2009-10-15 73 views
0

ASP.Net中的多语言内容应用通常可以通过使用资源文件来克服。但是,当涉及到需要多语言的动态内容时。什么是理想的系统设计?系统设计思路调查问卷中多语言内容的方法

例如有调查问卷应用程序,每个问题文本和答案选项都需要翻译。

使用资源键的想法存储特定的语言文本/内容好吗?通过使用问题文本或文本的主要英文版本作为一个关键是一个好主意?

因为我试图减少数据库调用,只要我的系统以编程方式在页面上创建问题。

回答

2

资源文件应该只是保存键/引用,并且没有特定的语言应该放在那里。

您所有的具体翻译应该驻留在数据库中。 因此,只要您的系统动态创建问题,将会有ONE和仅有一个数据库调用...使用区域设置标识符和问题的适当语言版本将被加载。

0

这很大程度上取决于您的调查系统设计,您有几个选项。

举例来说,如果你存储在所有的问题/编码有答案的XML文件中的每个单独的调查,你可能能够产生每语言新的XML文件就完事了。额外的文件将只包含翻译的问题/答案。

因此,您可能会调查IsASPAwesome.xml,并生成IsASPAweseome.enUS.xml,IsASPAwesome.frFR.xml等等。如果您想使用单个文件,另一种选择是为每种语言设置多个文本值,然后选择适合该语言的文本。像这样的东西(借口穷人xml和糟糕的法语)

<survey> 
    <question id=1> 
     <questionText lang="enUS">how great is this?</questionText> 
     <questionText lang="frFR">Comment est ce grand?</questionText> 
     <answer value="GOOD" lang="enUS" sortOrder="1">Great!</answer> 
     <answer value="BAD" lang="enUS" sortOrder="2">Not so great</answer> 
     <answer value="GOOD" lang="frFR" sortOrder="1">Grand!</answer> 
     <answer value="BAD" lang="frFR" sortOrder="2">Merde!</answer> 
    </question> 
</survey> 

如果你在一个数据库存储这个,你应该能够用相同量DB的调用就完事了,因为你只想增加一个额外的(例如,SELECT answerText,Value FROM questionAnswers WHERE questionId = 2 AND lang =“frFR”)

对每种语言使用单独的调查可能会使结果处理有点困难,语言支持更容易一点。此外,它也使缓存更容易(如果您想限制数据库调用,这是一个好主意,因为调查不会经常改变)。

对于以前的项目,我采用了“多个XML文件”方法,这足以让翻译人员同时工作,并且在一种情况下,为了文化原因提出更合适的问题排序。

希望这会有所帮助!

+0

虽然xml解决方案看起来不错 - 至于现在我正在为这个多语言问题实现数据库端。我无法在数据库中使用动态列,因为我的客户将添加新的语言,并且我希望在项目启动后更改结构。 – 2009-10-16 23:53:04