Ale*_*der 4 .net localization winforms
我有一个WinForms应用程序,可以通过卫星程序集本地化resx文件.用户可以在运行时切换应用程序语言.
所以我的问题是:有没有办法动态找出哪些文化作为我的客户端的本地化资源?
这是我使用的代码.它搜索程序子目录中的附属程序集
private static ReadOnlyCollection<CultureInfo> GetAvailableCultures()
{
List<CultureInfo> list = new List<CultureInfo>();
string startupDir = Application.StartupPath;
Assembly asm = Assembly.GetEntryAssembly();
CultureInfo neutralCulture = CultureInfo.InvariantCulture;
if (asm != null)
{
NeutralResourcesLanguageAttribute attr = Attribute.GetCustomAttribute(asm, typeof(NeutralResourcesLanguageAttribute)) as NeutralResourcesLanguageAttribute;
if (attr != null)
neutralCulture = CultureInfo.GetCultureInfo(attr.CultureName);
}
list.Add(neutralCulture);
if (asm != null)
{
string baseName = asm.GetName().Name;
foreach (string dir in Directory.GetDirectories(startupDir))
{
// Check that the directory name is a valid culture
DirectoryInfo dirinfo = new DirectoryInfo(dir);
CultureInfo tCulture = null;
try
{
tCulture = CultureInfo.GetCultureInfo(dirinfo.Name);
}
// Not a valid culture : skip that directory
catch (ArgumentException)
{
continue;
}
// Check that the directory contains satellite assemblies
if (dirinfo.GetFiles(baseName + ".resources.dll").Length > 0)
{
list.Add(tCulture);
}
}
}
return list.AsReadOnly();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |