枚举附属程序集支持的语言

时间:2015-10-06 05:50:12

标签: c# wpf globalization satellite-assembly

以下是帮助查找所需文化的程序集的代码行:

Assembly.GetExecutingAssembly().GetSatelliteAssembly(new CultureInfo(cultureCode))

但是如何查找应用程序存在哪些附属程序集的语言,假设是否有3种语言支持为3个不同的文件夹创建,现在我想要支持这些文件夹和语言。我在用户可以选择语言的下拉列表中使用它,并且应根据支持的附属程序集动态加载下拉值。

1 个答案:

答案 0 :(得分:0)

我用以下解决方案解决了上述问题:

这将是基于以下陈述的解决方案之一:
特定语言的每个附属程序集都命名相同,但位于以特定文化命名的子文件夹中,例如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)));
}