답변

2

이 함수는 App_GlobalResources 폴더에 설치된 모든 문화권의 배열을 반환합니다. 필요에 따라 검색 경로를 변경합니다. 불변 문화권의 경우 "auto"를 반환합니다.

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.
아마도이 사실을 사용하고 폴더 계층을 검사하여 해당 메뉴를 동적으로 구성 할 수 있습니다.

관련 문제