关于调查问卷中多语言内容的系统设计方法的思考

时间:2009-10-15 23:46:38

标签: asp.net content-management-system multilingual

ASP.Net中的多语言内容应用程序通常可以通过使用资源文件来克服。但是,当谈到需要多语言的动态内容时。什么是理想的系统设计?

例如,如有问卷调查申请,需要翻译每个问题文本和答案选项。

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

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

2 个答案:

答案 0 :(得分:2)

资源文件应该只包含键/引用,并且不应该放任何特定语言。

您的所有特定翻译都应驻留在数据库中。 因此,只要您的系统动态创建问题,就会有一个且只有一个数据库调用...使用区域设置标识符,并且将加载相应的问题语言版本。

答案 1 :(得分: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>

如果您将其存储在数据库中,您应该可以使用相同数量的数据库调用,因为您只需为选择查询添加一个附加条件(即SELECT answerText,Value FROM questionAnswers WHERE questionId = 2 AND lang =“frFR”)

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

我为之前的项目采用了“多XML文件”方法,这已经足够了,并且允许翻译人员同时工作,并且在一个案例中,出于文化原因建议更合适的问题排序。

希望这有帮助!