最终用户希望动态地将语言添加到他的网站

时间:2011-04-03 19:50:30

标签: c# asp.net-mvc-3 dynamic localization razor

我们必须使用C#在ASP.NET中为我们的客户建立一个事件注册网站。 其中一个要求是客户希望使用en excel文件自己将新的外语添加到他的网站。我知道如何在Visual Studio中使网站多语言,但我不知道如何在代码中基于excel文件生成资源文件。 我还注意到VS生成了第二个名为Resource.en.designer.cs的文件,但我找不到任何文档如何生成该文件。

不过,最终用户与IT有关。虽然(显然)他知道自己在excel周围的方式。

感谢任何帮助!

Yoeri

编辑: 罗伯特·列维提供了一个很好的方法! 如何:

第1步: 阅读excel文件(使用OleDBAdapter对我来说是最好的方法,因为你可以使用列标题等) 将语言写入以下格式的txt文件: KEY =翻译 没有空格或其他任何东西

第2步: 在您的计算机上找到ResGen.exe(它随Visual Studio一起提供,所以看起来像c:\ program files \ visual studio \ sdk ...但是我找到它@ C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ BIN \ ResGen.exe)

第3步:

使用Process.Start(“resgen.exe”)调用exe 提示:使用ProcesStartInfo进行简单的参数和首选项设置

(步骤4:)

将文件移动到所需位置(我发现App_GlobalResources工作正常)

第5步:

将用户currentUIculture设置为您想要的文化!

3 个答案:

答案 0 :(得分:2)

ResGen.exe将为您编译资源文件。您可以让他以该工具使用的格式提供文本文件,也可以编写自己从excel中提取的代码来生成文本文件。然后只需调用此EXE并部署新生成的资源DLL。我假设您已经知道如何从资源文件中读取内容并根据用户偏好使用适当的文件。

http://msdn.microsoft.com/en-us/library/ccec7sz1.aspx

答案 1 :(得分:1)

这可能是您希望使用数据库中的资源而不是简单的resx文件的地方。使用Excel数据填充数据库表比将其转换为标准resx文件更容易(如果MS决定修改文件格式,将来可能会出现问题)。

所以我建议你自己编写ResourceReader which would load strings from database(它也可以直接从Excel加载它,但出于很多原因我不推荐这种方法)。

答案 2 :(得分:-1)

你应该问你的最终用户他们是否真的需要“动态”获得另一种语言以及他们希望添加多少种语言。

否则,通过电子邮件发送Excel文件并手动创建资源文件可能是迄今为止最便宜的解决方案....