Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 关于调查问卷中多语言内容系统设计方法的思考_Asp.net_Content Management System_Multilingual - Fatal编程技术网

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

Asp.net 关于调查问卷中多语言内容系统设计方法的思考,asp.net,content-management-system,multilingual,Asp.net,Content Management System,Multilingual,ASP.Net中的多语言内容应用程序通常可以通过使用资源文件来克服。然而,当涉及到需要多语言的动态内容时。理想的系统设计是什么 例如,像使用调查问卷应用程序一样,每个问题文本和答案选项都需要翻译 使用资源密钥存储特定语言文本/内容是否好?通过使用问题文本或文本的主要英文版本作为关键是一个好主意 因为每当我的系统以编程方式在页面上创建问题时,我都试图减少数据库调用。资源文件应该只包含键/引用,不应该在其中放入任何特定于语言的内容 您的所有特定翻译都应驻留在数据库中。 因此,每当您的系统动态创建问题

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

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

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


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

资源文件应该只包含键/引用,不应该在其中放入任何特定于语言的内容

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

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

例如,如果您将每个单独的调查存储在一个xml文件中,并且所有的问题/答案都在该文件中编码,那么您可能不需要为每种语言生成一个新的xml文件。附加文件将仅包含翻译的问题/答案

因此,您可能需要调查IsASPAwesome.xml,并生成IsASPAweseome.enUS.xml、IsASPAwesome.frFR.xml等等。如果要使用单个文件,另一个选项是为所需的每种语言提供多个文本值,然后为该语言选择适当的文本值。类似这样的东西(请原谅糟糕的xml和更糟糕的法语)


这有多棒?
你觉得这是什么?
伟大的
不太好
太棒了!
梅德!
如果您将其存储在DB中,您应该能够处理相同数量的DB调用,因为您只需在select查询中添加一个附加条件(即select answerText,QUOTESTIONS ANSWERS中的值,其中QUOTESTID=2和lang=“frFR”)

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

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


希望这有帮助

不过xml解决方案看起来不错——目前我正在为这个多语言问题实现DB端。我不能在数据库中有动态列,因为我的客户将添加新的语言,我不想在项目启动后改变结构。
<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>