我正在使用这个表单应用程序,我在C#项目中使用本地化,其中不同的文本条目存储在资源文件中(GlobalLanguages.resx和GlobalLanguages.fr.resx)。这些设置为嵌入式。
在VS 2008中的调试/发布中运行应用程序时,一切都很有效,当我从VS 2008外部的输出文件夹启动exe时它也可以工作。但是当我构建visual studio安装程序项目以获取我的安装程序时将它安装在我的机器上,本地化不起作用。即使安装文件夹中有一个.dll文件,其中包含.fr.resx值。
安装程序项目设置为包含主项目的本地化输出。将已安装应用程序的当前区域设置输出到日志文件确实会提供正确的值,但文本将以默认语言显示。
我们确实使用IlMerge在exe中合并了几个.dll文件,但由于可以找到资源的.dll,我想这应该不是问题。我真的尝试了所有的东西,但我现在已经没想到了......
希望你们能帮忙。
由于
答案 0 :(得分:0)
尝试这只是为了诊断:(你需要明显改变classnames / namespace)。
Type t = typeof(SomeClassInLanguageAssembly);
Assembly languageAssembly = t.Assembly;
Console.WriteLine("Current UI culture: "+Thread.CurrentThread.CurrentUICulture);
Console.WriteLine("Resources in assembly:");
languageAssembly.GetManifestResourceNames().ForEach(Console.WriteLine);
ResourceManager r = new ResourceManager("Language.Assembly.Namespace.ResourceName", languageAssembly);
Console.WriteLine("'YES' -> " + r.GetString("YES"));
如果我运行它输出例如:
当前的UI文化:fr
汇编中的资源:
Company.Application.Language.Resources.resources
'是' - > OUI