c# - 为运行时语言更改 WPF 加载所有可用的附属程序集
问题描述
我尝试获取可用文化信息的列表,将它们添加到组合框并在运行时更改语言。我的实现在不同的环境下表现不同。有一些 PC 可以按预期工作,所有附属程序集都可以识别,但在其他 PC 上,相同的应用程序无法识别可用语言,只能识别默认语言(英语)。
这是我尝试查找可用资源的代码:
public static IEnumerable<CultureInfo> GetAvailableCultures()
{
List<CultureInfo> result = new List<CultureInfo>();
ResourceManager rm = new ResourceManager(typeof(PresentationResources));
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (CultureInfo culture in cultures)
{
try
{
if (culture.Equals(CultureInfo.InvariantCulture))
{
continue;
}
ResourceSet rs = rm.GetResourceSet(culture, true, false);
if (rs != null)
{
result.Add(culture);
}
}
catch (CultureNotFoundException)
{
//NOP
}
}
return result;
}
还有来自我尝试更改语言的xaml的代码:
<ComboBox Name="LanguageComboBox"
SelectedIndex="{Binding SelectedLanguageIndex}"
ItemsSource="{Binding AvailableLanguages}"
DisplayMemberPath="NativeName"
SelectedItem="{Binding Source={x:Static lex:LocalizeDictionary.Instance},
Path=Culture}"
SelectionChanged="LanguageComboBox_OnSelectionChanged">
</ComboBox>
我真的不明白为什么在某些环境中完全相同的应用程序可以按预期工作,而在其他环境中则不能。
解决方案
推荐阅读
- python - 将 RSA 解密从 PyCrypto 迁移到 PyCryptodome
- python - 似乎无法将我从另一个文件导入的图形打印到 pdf 中
- angular - 如何选择要导入的图像以使用 `cropper.js` 插件进行操作?
- asp.net - 来自 ASP.Net (VB.Net) 贝宝的 CURL
- javascript - 如何将分治策略应用于最大和子数组问题(JavaScript)
- python - 用于获取电子邮件地址并在谷歌中搜索的 Python 代码
- javascript - 你如何处理 Angular 中的函数顺序?
- delphi - DevExpress 打印预览 RightToLeft
- javascript - 使用 Chrome 中的控制台命令在 Salesforce Lightning 中填写表单
- r - 是否有一个 R 函数可以用相同长度的字符串替换匹配的 RegEx?