我在App_GlobalResources文件夹中有一个名为“TestResourceApp”的Web项目,其中包含Labels.resx。我想通过创建一个附属程序集来添加另一种语言。
以下是我创建附属程序集的步骤。始终显示默认文本。我做错了什么?
1)在另一个文件夹中创建Labels.fr.resx。
2)生成资源文件:
Resgen Labels.fr.resx TestResourceApp.App_GlobalResources.Labels.fr.resources
3)生成附属装配:
AL / t:lib /embed:TestResourceApp.App_GlobalResources.Labels.fr.resources /out:french.dll / c:fr
4)将french.dll复制到TestResourceApp / bin / fr
我在web.config中将uiculture设置为auto,我在浏览器中更改了语言。
答案 0 :(得分:3)
我能够使用此页面解决我遇到的一些卫星装配问题。我会再提几件事来检查。
反编译“中性”程序集并查看它是如何组合在一起的。像ILDASM.exe
这样的工具有助于实现此目的。一旦你得到反编译,看看文本输出“.mresource”,你应该看到一个与你的命名。例如,如果将资源添加到Visual Studio项目,则将它们命名为MyAssemblyName +“.Properties.Resources”+一种语言(如果有)+“。resources”示例:
MyAssembly.Properties.Resources.resources(中性语言) MyAssembly.Properties.Resources.en-US.resources(英语(美国))
就我而言,我的文件命名正确,并且在相应的文件夹中(例如Bin \ en-US)。我能够通过使用ProcMon.exe
(由SysInternals人员)验证这一点,并且可以看到工作进程在我的DLL文件中查找和读取(而不是仅仅说“未找到路径”)。但是,它没有找到它所期望的名称的资源。那时某些反汇编有助于解决命名问题。
因此,请使用ProcMon.exe
缩小您可能遇到的问题范围。希望这对某人有帮助。
答案 1 :(得分:1)
这很复杂但是对于遇到这个问题的人来说,这里有一些提示:
答案 2 :(得分:0)
您是否在全球化中将enableClientBasedCulture
设置为true
?