在我的應用程序中,我使用WpfLocalization在應用程序運行時提供翻譯。該庫基本上將維護一系列屬性及其分配的本地化關鍵字,並使用DependencyObject.SetValue()
在活動語言更改時更新它們的值。字符串被神祕切斷
我注意到我的問題的情況是這樣的:我有一個簡單的TextBlock
併爲Text
屬性分配了一個本地化關鍵字。現在,當我的應用程序啓動時,它會將初始值寫入其中,它將在屏幕上顯示得很好。現在我切換語言,新值被設置爲Text
屬性,但只有一半的文本實際顯示在屏幕上。來回切換語言沒有任何效果。第一種語言總是顯示正常,第二種語言被切斷(在單詞中間,但總是全字符)。
兩種語言對彼此的相對長度似乎沒有任何關係。在我的測試案例中,工作語言字符串是498字節,被截斷的是439字節,並在257字節後被截斷)。
在我通過本地化代碼更改其值之前,我檢查了的Text
屬性的當前值,它將始終具有兩種語言中的期望值(不會被截斷)。
在運行時通過WPF Inspector檢查TextBlock時,它將以第二種語言的Text屬性顯示截斷文本。
到目前爲止,這對我來說毫無意義。但現在它變得更好了。
原始WpfLocalization庫從標準資源文件讀取本地化字符串,但我們使用的修改版本也可以從Excel文件讀取這些字符串。它通過使用Microsoft OLE DB驅動程序打開OleDbConnection
並通過它讀取字符串來實現。在調試器中,我可以看到所有的值都被讀取得很好。
現在,當一位同事發現修復「cut off text」問題時,我感到非常驚訝。他重新排列了Excel工作表中的行。我不明白這可能是相關的,但在該文件的兩個版本之間切換會對問題產生影響。
現在它變得非常有意義。但爲什麼我在調試器中看到完整的字符串? –