簡體   English   中英

我應該如何使用MVVM模式在Wpf應用程序上實現本地化?

[英]How should I Implement Localization on Wpf Application using MVVM pattern?

我正在使用Devexpress工具和跟隨MVVM模式的wpf應用程序。

我已經使用Locbaml工具在其上應用了本地化,它工作得非常好,但僅適用於View。

在這個應用程序中我設置網格行Vlidation錯誤,並從視圖模型彈出一些MessageBoxes但LocBaml看起來沒有幫助轉換這些錯誤消息和消息框消息在其他語言。 我怎么能做到這一點?

LocBaml只從baml中提取東西,baml是你的xaml文件的編譯形式。 xaml中未定義的任何內容(例如,代碼隱藏中定義的字符串)將永遠不會被它看到。 我知道的唯一解決方法是定義您可能希望在xaml中本地化為字符串資源的所有字符串。 這些可以很容易地從代碼隱藏中引用,因此它沒有聲音那么糟糕。 完全動態生成的字符串將不可本地化,但通過某些工作,您可以從xaml資源中定義的片段構建它們。

直接從ViewModel獲取消息框是錯誤的。 相反,您應該引發事件並讓視圖執行UI。 否則你無法對ViewModel進行單元測試,這是MVVM模式的主要目標之一。

如果您使用.resx文件來管理翻譯,您只需讓它們生成代碼(在.resx屏幕的組合框中使用Access Modifier:Public),然后讓VM直接將消息發送到視圖。

這樣,代碼生成的資源文件的基礎功能將返回所需文本的翻譯版本。

http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/10/30/wpf-localization-on-the-fly-language-selection.aspx檢查一下。 您可以通過從代碼中調用translate方法從VM發送本地化文本。 例如

LanguageDictionary.Current.Translate(“resourceKey”,“value Name”)

您可以查看我編寫的一些軟件來執行此操作:

http://tap-source.com/?p=232

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM