3
我正在开发一个ASP.NET webapp,它具有多语言功能,允许网站管理员在运行时创建新语言。ASP.NET在运行时创建资源
,我想的方法是如下:
- 用户选择一个可用的(未创建)语言。
- 当用户确认后,应用程序会自动复制一组现有资源,用新文化替换文件名。例如:default.aspx.en-us.resx为default.aspx.es-ar.resx。
- 用户编辑最近创建的资源。
目前我遇到了第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));
}
非常感谢。
在你的项目中,有哪些特性'构建Action','复制到输出Directory','自定义Tool',和'自定义工具Namespace'设置为您的.ResX文件? – McGarnagle
默认的resx文件具有以下属性:Build acttion:“Content”,复制到输出目录:“不要复制”,自定义工具:-nothing-,自定义工具命名空间:-nothing- – Javier
为了补充我的问题,过程正常。问题是复制后,当我更改语言时,这些新的资源文件将被忽略并且不会被读取。 – Javier