ASP.NET Web表单资源和本地化的棘手问题

时间:2009-05-07 14:35:43

标签: asp.net localization webforms globalization aspnet-merge

我有以下非标准设置(VS2008,.NET 3.5 SP1):

有一个名为MainSite的主要Web项目,有几个名称不同的“插件”Web项目。

构建这些插件时,我有一个调用aspnet_compiler.exeaspnet_merge.exe的自定义构建步骤。这会生成两个.DLL文件 - plugin_name .dll和 plugin_name _deploy.dll。第一个包含代码隐藏类,第二个包含从.ascx文件生成的代码。

然后将这些插件.DLL复制到/MainSite/bin/Plugins/文件夹。在运行时(应用程序启动),MainSite应用程序在此文件夹中查找并动态加载所有.DLL文件。

我的所有表单都在.ascx文件的插件中。主要应用程序只是一个骨架,可根据需要加载这些.ascx用户控件。

现在需要进行本地化。理想情况下,我希望得到以下内容:

  • 在Visual Studio中创建资源时,每个表单(.ascx文件)都应该有一个单独的资源文件,以便人们更容易并行地本地化表单。
  • .ascx文件中的漂亮meta:resourcekey方法非常适合本地化控件;
  • .NET中的自动资源语言/文化回退机制应该是可用的;
  • 编译结果应该是所有插件中的文件都可以复制到/MainSite/bin/Plugins/文件夹中。如果每个语言/文化都有一个.DLL文件,并且它们可以放在一些特定的子文件夹中 - 只要不同插件中的.DLL没有碰撞名称就可以了。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

显然可以在.NET中实现自定义资源提供程序。 Here是一篇文章,其中包含解释整个过程的各种其他文章的链接。实际上,您从meta:resourcekey获取值并从您想要的任何位置获取值。例如,上面的文章将所有本地化信息存储在数据库中。