枚举卫星程序集支持的语言
Enumerate the languages supported by satellite assemblies
这是帮助查找所需区域性的程序集的代码行:
Assembly.GetExecutingAssembly().GetSatelliteAssembly(new CultureInfo(cultureCode))
但是如何找到应用程序存在附属程序集的语言,假设是否有 3 种语言支持创建了 3 个不同的文件夹,现在我想要其中支持的那些文件夹和语言。我在用户可以使用 select 语言的下拉列表中使用它,下拉值应该根据支持的卫星程序集动态加载。
我已经通过以下解决方案解决了上述问题:
这将是基于以下陈述的解决方案之一:
特定语言的每个附属程序集都被命名为相同的,但位于以特定文化命名的子文件夹中,例如fr 或 fr-CA.
public IEnumerable<CultureInfo> GetSupportedCulture()
{
//Get all culture
CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
//Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
//Return all culture for which satellite folder found with culture code.
return culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)));
}
这是帮助查找所需区域性的程序集的代码行:
Assembly.GetExecutingAssembly().GetSatelliteAssembly(new CultureInfo(cultureCode))
但是如何找到应用程序存在附属程序集的语言,假设是否有 3 种语言支持创建了 3 个不同的文件夹,现在我想要其中支持的那些文件夹和语言。我在用户可以使用 select 语言的下拉列表中使用它,下拉值应该根据支持的卫星程序集动态加载。
我已经通过以下解决方案解决了上述问题:
这将是基于以下陈述的解决方案之一:
特定语言的每个附属程序集都被命名为相同的,但位于以特定文化命名的子文件夹中,例如fr 或 fr-CA.
public IEnumerable<CultureInfo> GetSupportedCulture()
{
//Get all culture
CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
//Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
//Return all culture for which satellite folder found with culture code.
return culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)));
}