所以試圖使用wpf本地化擴展。WPFLocalizationExtension沒有翻譯第一個控件(代碼後面)
我們的按鈕/控件的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
不知道爲什麼這些延遲加載,或者這可能是什麼原因造成的問題。但這是我現在唯一能想到的。