2009-05-07 67 views
1

我已经得到了以下非标准的设置(VS2008,.NET 3.5 SP1):棘手的问题与ASP.NET Web表单资源和本地化

有一个叫MainSite主网项目,并有几个“插件”具有不同名称的Web项目。

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

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

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

现在需要本地化。理想情况下,我想有以下几点:

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

有关如何实现此目的的任何想法?

回答

1

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