2013-09-24 24 views
0

我正致力於本地化並基於在bin中創建的文件夾來提取所有可用的文化。然後將文件夾的名稱轉換爲culturesInfo。C#WPF應用程序中可用的文化

if (!bFoundInstalledCultures) 
{ 
    //determine which cultures are available to this application 
    Debug.WriteLine("Get Installed cultures:"); 
    CultureInfo tCulture = new CultureInfo(""); 
    foreach (string dir in Directory.GetDirectories(Application.StartupPath)) 
    { 
     try 
     { 
      //see if this directory corresponds to a valid culture name 
      DirectoryInfo dirinfo = new DirectoryInfo(dir); 
      tCulture = CultureInfo.GetCultureInfo(dirinfo.Name); 

      //determine if a resources dll exists in this directory that matches the executable name 
      if (dirinfo.GetFiles(Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".resources.dll").Length > 0) 
      { 
       pSupportedCultures.Add(tCulture); 
       Debug.WriteLine(string.Format(" Found Culture: {0} [{1}]", tCulture.DisplayName, tCulture.Name)); 
      } 
     } 
     catch(ArgumentException e) //ignore exceptions generated for any unrelated directories in the bin folder 
     { 
     } 
    } 
    bFoundInstalledCultures = true; 

上面的代碼是一個運行時的本地化的一部分。例如在Codeproject.com

是有直通,我們可以得到這樣的信息,我們可以使用反射任何方法。

在此先感謝

回答

1

您可以使用CultureInfo.GetCultures獲得所有已安裝的文化:

//create an array of CultureInfo to hold all the cultures found, these include the users local cluture, and all the 
//cultures installed with the .Net Framework 
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); 

//loop through all the cultures found 
foreach (CultureInfo culture in cultures) 
{ 
    // ... 
}