2015-07-10 47 views
1

我的應用程序將被翻譯成幾種語言。是否有.net函數來枚舉語言後備文件擴展名

我可以包含各種支持語言(strings.fr-BE.resx,strings.nl.resx等)的字符串。

我也有一些外部文件(myfile.nl.txt等)需要以相同的方式拾取,包括後備,如果沒有找到。

顯然,我可以編寫一個相當簡單的函數來枚舉所選語言(MyFile.fr-BE.tx - > MyFile.fr.txt - > MyFile.txt)的語言擴展,但想知道是否有任何部分這個機制是由.net框架公開的,所以我可以重新使用現有的約定。

回答

1

沒有什麼內置的,我所知道的,但它是很容易建立,一旦你意識到CultureInfoParent屬性:

public static class CultureInfoExtensions 
{ 
    public static IEnumerable<CultureInfo> WithParents(this CultureInfo culture) 
    { 
     while (true) 
     { 
      yield return culture; 
      if (culture.Parent == culture) yield break; 
      culture = culture.Parent; 
     } 

    } 
} 

和測試:

var test = new CultureInfo("fr-BE"); 
foreach(var culture in test.WithParents()) 
{ 
    Console.WriteLine(culture); 
} 

產量:

 
    fr-BE 
    fr 

(最後一行是空字符串)

+0

我不知道父項屬性。這真的很有幫助,謝謝Damien。 – Neil