1

我正在开发这个表单应用程序,我在 C# 项目中使用本地化,其中不同的文本条目存储在资源文件(GlobalLanguages.resx 和 GlobalLanguages.fr.resx)中。这些设置为嵌入式。

在 VS 2008 的调试/发布中运行应用程序时一切正常,当我从 VS 2008 之外的输出文件夹启动 exe 时,它​​也能正常工作。但是当我构建 Visual Studio 安装程序项目以获取我的安装程序并将其安装在我的机器,本地化不工作。即使安装文件夹中有一个包含 .fr.resx 值的 .dll 文件。

安装程序项目设置为包含主项目的本地化输出。并将已安装应用程序的当前语言环境输出到日志文件确实给出了正确的值,但文本以默认语言显示。

我们确实使用 IlMerge 来合并 exe 中的几个 .dll 文件,但是由于可以找到资源的 .dll,我想这应该不是问题。我真的尝试了一切,但我现在不知道...

希望大家能帮忙。

谢谢

4

1 回答 1

0

试试这个只是为了诊断:(你显然需要更改类名/命名空间)。

 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

装配资源:

公司.应用程序.语言.资源.资源

'是' -> Oui

于 2011-08-12T10:34:26.680 回答