2012-09-01 33 views
3

我正在开发一个ASP.NET webapp,它具有多语言功能,允许网站管理员在运行时创建新语言。ASP.NET在运行时创建资源

,我想的方法是如下:

  1. 用户选择一个可用的(未创建)语言。
  2. 当用户确认后,应用程序会自动复制一组现有资源,用新文化替换文件名。例如:default.aspx.en-us.resx为default.aspx.es-ar.resx。
  3. 用户编辑最近创建的资源。

目前我遇到了第2步的麻烦。我已经完成了复制资源,但这些新资源被忽略。我认为发生这种情况是因为新资源未包含在正在运行的程序集中,因此被忽略。

当我在本地项目中测试以下代码时,我将不得不手动将新资源添加到解决方案,然后重新编译以使其工作。

有谁知道如何使这项工作?

这是所提到的副本的代码。

string _dir = path_ + "App_LocalResources\\\\"; 
DirectoryInfo _dirInfo = new DirectoryInfo(_dir); 

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) { 
_file.CopyTo(_dir + _file.Name.Replace("en-us", idioma_.Cultura)); 

} 

string _dir2 = path_ + "App_GlobalResources\\\\"; 
_dirInfo = new DirectoryInfo(_dir2); 

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) { 
_file.CopyTo(_dir2 + _file.Name.Replace("en-us", idioma_.Cultura)); 
} 

非常感谢。

+0

在你的项目中,有哪些特性'构建Action','复制到输出Directory','自定义Tool',和'自定义工具Namespace'设置为您的.ResX文件? – McGarnagle

+0

默认的resx文件具有以下属性:Build acttion:“Content”,复制到输出目录:“不要复制”,自定义工具:-nothing-,自定义工具命名空间:-nothing- – Javier

+0

为了补充我的问题,过程正常。问题是复制后,当我更改语言时,这些新的资源文件将被忽略并且不会被读取。 – Javier

回答

0

创建或编辑资源文件与读取数据不同。 为了创建或编辑资源文件,您应该以与创建或编辑XML文件相同的方式来执行此操作,因为资源文件具有特定的结构化XML元素。

也许这article将帮助你......