2013-08-20 26 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 

說清楚,如果我錯了。