2008-10-20 79 views

回答

2

此函數返回App_GlobalResources文件夾中所有已安裝文化的數組 - 根據您的需要更改搜索路徑。 對於不變的文化,它返回「自動」。

public static string[] GetInstalledCultures() 
{ 
    List<string> cultures = new List<string>(); 
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), \\Change folder to search in if needed. 
     "*.resx", SearchOption.TopDirectoryOnly)) 
    { 
     string name = file.Split('\\').Last(); 
     name = name.Split('.')[1]; 

     cultures.Add(name != "resx" ? name : "auto"); \\Change "auto" to something else like "en-US" if needed. 
    } 
    return cultures.ToArray(); 
} 

您也可以使用這一個更多的功能得到充分的CultureInfo實例:

public static CultureInfo[] GetInstalledCultures() 
{ 
    List<CultureInfo> cultures = new List<CultureInfo>(); 
    foreach (string file in Directory.GetFiles(HttpContext.Current.Server.MapPath("/App_GlobalResources"), "*.resx", SearchOption.TopDirectoryOnly)) 
    { 
     string name = file.Split('\\').Last(); 
     name = name.Split('.')[1]; 

    string culture = name != "resx" ? name : "en-US"; 
    cultures.Add(new CultureInfo(culture)); 
    } 
    return cultures.ToArray(); 
} 
1

對於特定語言的每個附屬程序集命名相同,但位於特定文化名稱後面的子文件夾中,例如, fr或fr-CA。
也許你可以使用這個事實,並掃描文件夾層次結構動態地建立該菜單。