Localization SSIS组件倾向于CurrentThread.CurrentUICulture

Localization SSIS组件倾向于CurrentThread.CurrentUICulture,localization,ssis,Localization,Ssis,我正在尝试本地化我编写的SSIS转换组件。有几种表单用于与用户交互。我已经将表单的Localizable属性设置为true,将语言设置为德语(德语),并将提示设置为德语翻译 然后我进行测试,但将其放在表单的c'tor中: Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE"); 但是我只得到默认

我正在尝试本地化我编写的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,所以我无法将其归结为我试图强迫它使用德语的问题,或者资源生成本身的问题


有什么想法吗?

听起来德国卫星组件没有建造或部署到正确的位置。您是否在de文件夹中看到一个包含程序集名称的.resources.dll文件?

德国卫星程序集是否正确构建和部署?(即,您是否在de文件夹中看到带有程序集名称的.resources.dll文件?)。因为组件插入BIDS(又名VSIDE),所以它在一个完全不同的位置搜索资源DLL。进程监视器发现了这个秘密位置。把你的评论改成答案,我会把它标记为正确答案。谢谢很酷,很好地找到它使用过程监控。补充答案,谢谢!