ASP.Net 中的多语言内容应用程序通常可以通过使用资源文件来克服。但是,当涉及需要多语言的动态内容时。什么是理想的系统设计?
例如,有一个问卷应用程序,每个问题文本和答案选项都需要翻译。
使用资源关键思想存储特定语言文本/内容是否好?通过使用问题文本或文本的主要英文版本作为关键好主意?
因为每当我的系统以编程方式在页面上创建问题时,我都会尝试减少数据库调用。
ASP.Net 中的多语言内容应用程序通常可以通过使用资源文件来克服。但是,当涉及需要多语言的动态内容时。什么是理想的系统设计?
例如,有一个问卷应用程序,每个问题文本和答案选项都需要翻译。
使用资源关键思想存储特定语言文本/内容是否好?通过使用问题文本或文本的主要英文版本作为关键好主意?
因为每当我的系统以编程方式在页面上创建问题时,我都会尝试减少数据库调用。
资源文件应该只保存键/引用,并且不应该在其中放置任何特定于语言的内容。
您所有的特定翻译都应保存在数据库中。因此,每当您的系统动态创建问题时,都会有一个且只有一个DB 调用...使用区域设置标识符,并且将加载问题的适当语言版本。
这在很大程度上取决于您的调查系统设计,您有几个选择。
例如,如果您将每个单独的调查存储在一个 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 文件”方法,这已经足够了,而且还允许翻译人员同时工作,并且在一种情况下,出于文化原因,建议对问题进行更适当的排序。
希望这可以帮助!