C# Silverlight 5中的资源文化问题

C# Silverlight 5中的资源文化问题,c#,resources,silverlight-5.0,culture,C#,Resources,Silverlight 5.0,Culture,对不起,提前为我的英语,这是我在这里的第一个职位。 我对RESX有一个奇怪的问题,它是Silverlight中支持的文化。 其silverlight应用程序包含1个webasp.net项目,该项目启动整个silverlight应用程序、1个主项目silverlight、sl.应用程序以及其他在主项目解决方案浏览器屏幕中用作模块的silverlight:。Sl.Application可以调用其他项目,并将其视图用作放置在Sl.Application中的主视图的一部分 var culture = S

对不起,提前为我的英语,这是我在这里的第一个职位。 我对RESX有一个奇怪的问题,它是Silverlight中支持的文化。 其silverlight应用程序包含1个webasp.net项目,该项目启动整个silverlight应用程序、1个主项目silverlight、sl.应用程序以及其他在主项目解决方案浏览器屏幕中用作模块的silverlight:。Sl.Application可以调用其他项目,并将其视图用作放置在Sl.Application中的主视图的一部分

var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
我尝试添加不同的文化,因此:

我将我的应用程序支持的区域性EN和CS添加到每个CS.proj

<SupportedCultures>pl;en;cs;de;ru;cz;sk</SupportedCultures>
为不同的区域性创建resx文件,如下所示:

在启动应用程序时,您可以通过单击特定标志来选择所需的文化。 首先让我们从PL开始——它的中立文化,所以我不需要改变任何东西。使用

var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;

var test_en = Resources.DrivesBook.ResourceManager.GetString("AdresArrival", culture);
我检查了区域性是否设置为PL,resource DriveBook.resx是否在PL中返回正确的字符串

下一步: 让我们试试EN,启动应用程序,选择EN标志-将文化更改为EN GB

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");
使用与上面相同的代码,以字符串形式返回me EN,因此仍然很好

最好的开始是我尝试使用CS。 和上面一样,我选择CS标志-将文化更改为CS CZ 在SL应用中使用

var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
它返回给我cs CZ文化,所以我想当我打电话时会有ok

var test_cs = Resources.DrivesBook.ResourceManager.GetString("AdresArrival", culture);
它从CS文化中返回字符串,仍然可以正常工作,那么问题出在哪里

当我在Common或Modules文件夹中的其他项目中尝试相同的方法时,神奇的是:

同上 在模块中使用。辅助

var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
还可以,我们有cs CZ文化,看起来效果不错,但是

var test_cs = Resources.DrivesBook.ResourceManager.GetString("AdresArrival", culture);
它从PL区域性而不是CS返回字符串

总结: 更改区域性效果很好,对于EN,整个应用程序从resx文件中获得了EN字符串,但当我更改为CS时,只有SL.Application可以解析*.CS.resx文件,其他项目似乎没有看到*.CS.resx文件。虽然添加了En和CS,但两者的效果完全相同,En的效果很好,但CS不是。cs.proj中是否可能存在某些属性限制当前项目中最大支持的区域性,或者您知道我做错了什么吗?

好的,我自己解决了 问题出在我的定制框架中,它负责差异加载资源。仅通过文件名解析dll,此处不包括文件夹cs的文件路径,不同区域性的en导致根据词法顺序覆盖文件,因此首先加载cs.resx,但后来我加载en资源并覆盖cs.resx。这个框架在加载主xap时开始工作。主sl项目可以工作,因为它是在较早的时候加载的,例如,为了加载屏幕,所以resource.cs.resx是在我的框架无法损坏它时加载的