我正在尝试本地化我编写的 SSIS 转换组件。有几种形式用于与用户交互。我已将表单的 Localizable 属性设置为 true,将语言设置为德语(德国),并将提示设置为德语翻译。
然后我进行测试,但将其放入表单的 c'tor 中:
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
但我只收到默认(英文)提示。当我使用独立应用程序执行此操作时,它可以完美运行。
接下来,我想我会尝试一个字符串资源,看看我的表现是否更好。我创建了一个 VerifyLoc.resx 和一些字符串,然后创建了一个 VerifyLoc.de-DE.resx 和一些同名的德语字符串。我再次测试:
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
string str1 = VerifyLoc.Str1;
string str2 = VerifyLoc.Str2;
不走运,str1 和 str2 是默认的,不是德语。接下来我尝试用这个来强迫事情:
ComponentResourceManager resources = new ComponentResourceManager(typeof(VerifyLoc));
CultureInfo culture = new CultureInfo("de-DE");
string str1 = resources.GetString("Str1", culture);
string str2 = resources.GetString("Str2", culture);
还是不行。我已经根据默认文件检查了 de-DE.resx 文件的属性,两者都使用“内部”访问修饰符。两者都被标记为“嵌入式资源”,都通过 ResXFileCodeGenerator 运行。
不幸的是,我没有德语版本的 Windows,所以我无法将其归结为我试图强制它使用德语的问题或资源本身的生成问题。
有任何想法吗?