2013-08-20 29 views
1

我使用的.resx国土资源文件在一个全球化的项目。我有一些回退逻辑,以防用户选择的语言没有resx文件。有没有办法找到一种语言相同但文化不同的文化?寻找文化与同一语言

回答

3

资源所特有的语言,而不是特定的文化,应该在自己的文件,例如如果你有以下的资源文件:

Resources.resx 
Resources.en.resx 
Resources.fr.resx 
Resources.fr-FR.resx 

(语言不变字符串Resources.resx,法国字符串Resources.fr.resx,并在Resources.fr-FR.resx法国特有的法国字符串)

和用户的文化是fr-CA(加拿大法语),那么它将使用资源,从下面的文件,按以下顺序:

Resources.fr.resx 
Resources.resx 

这是默认的资源行为。

+0

会不会有实际上是从'FR-FR'回退到'FR-CA'这个,对这个问题(“不同地区”)的暗示? –

+0

谢谢!我将不得不重写一些代码,使它像这样工作。 – GPinskiy

+0

@ O.R.Mapper没有,也不会。相反,您应该设置您的资源文件,以便适用于两者的文件位于'fr'文件中。如果你的文化是'fr-CA',你不需要在'fr-FR'找任何东西。 –

1

如果我理解正确的话,那么你正在寻找类似的文化与语言相同

var culture = new CultureInfo("fr"); 
var sameLanguageCultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures) 
    .Where(x => x.ThreeLetterISOLanguageName == culture.ThreeLetterISOLanguageName && x.Name != culture.Name) 
    .ToArray(); 

foreach (var c in sameLanguageCultures) 
{ 
    Console.WriteLine(c.Name); 
} 

这将输出

 
fr-FR 
fr-BE 
fr-CA 
fr-CH 
fr-LU 
fr-MC 

说清楚,如果我错了。