【发布时间】:2023-04-10 20:09:01
【问题描述】:
因此尝试使用 wpf 本地化扩展。
我们的按钮/控件的 ID 都存储在后面的代码中,因此我最终创建了一个翻译服务来翻译后面的代码。所以它只是绑定完成的翻译。
我们还将翻译存储在一个单独的项目中,因为外部小组负责处理翻译。因此我的翻译方法设置如下。
private string Translate(string id)
{
string uiString;
var locExtension = new LocTextExtension
{
Key = "XXX.UI.Resources",
ResourceIdentifierKey = id
};
locExtension.ResolveLocalizedValue( out uiString );
return uiString ?? id;
}
然而,当我的页面被加载时,它似乎并没有翻译页面上的第一个按钮。第一个按钮返回为 Buttun_BtnTxt 而不是翻译后的值。我尝试交换列表中的第一个按钮,但总是第一个失败。
如果我加入一些重试功能,它仍然会失败。 (将上述代码放入while循环,检查uistring == null,重试50000次)
如果我离开第一页,所有其他页面都可以正常加载,如果我返回第一页,翻译也会正常。只是我一生都无法弄清楚为什么它没有第一次翻译。
过去有没有人做过类似的事情并遇到过同样的问题?
进一步看。添加了代码来检查加载的程序集。在第一次运行时(失败的地方),这是唯一存在的资源实例。
XXX.UI.Resources, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
第一次尝试失败后,我再次检查了程序集,现在也出现了以下条目。
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=de-DE, PublicKeyToken=null
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=ja-JP, PublicKeyToken=null
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=zh-Hans, PublicKeyToken=null
不知道为什么这些会延迟加载,也不知道这是否是导致问题的原因。但这是我现在唯一能想到的。
【问题讨论】:
标签: c# wpf resx wpflocalizationextension