我正在使用的DevExpress工具WPF應用程序和以下MVVM模式..如何使用MVVM模式在Wpf應用程序上實現本地化?
我一直在使用Locbaml工具應用上定位和它的工作完美的罰款,但只是爲了查看。
在這個應用程序我設置網格行Vlidation錯誤,並從視圖模型中彈出一些消息框,但LocBaml看起來沒有幫助轉換這些錯誤消息和其他語言的消息框消息。我怎樣才能做到這一點?
我正在使用的DevExpress工具WPF應用程序和以下MVVM模式..如何使用MVVM模式在Wpf應用程序上實現本地化?
我一直在使用Locbaml工具應用上定位和它的工作完美的罰款,但只是爲了查看。
在這個應用程序我設置網格行Vlidation錯誤,並從視圖模型中彈出一些消息框,但LocBaml看起來沒有幫助轉換這些錯誤消息和其他語言的消息框消息。我怎樣才能做到這一點?
直接從ViewModel獲取消息框是錯誤的。相反,您應該提出事件並讓視圖執行UI。否則,你不能單元測試ViewModel,這是MVVM模式的主要目標之一。
如果您使用.resx文件來管理您的翻譯,您可以簡單地讓它們生成代碼(在.resx屏幕的組合框中使用Access Modifier:Public),然後讓VM將消息直接發送到視圖。
這樣代碼生成的資源文件的底層功能將返回所需文本的翻譯版本。
很好的解釋。 – Amar
http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/10/30/wpf-localization-on-the-fly-language-selection.aspx檢查此。您可以通過調用代碼中的翻譯方法從VM發送本地化文本。例如
LanguageDictionary.Current.Translate( 「獲取ResourceKey」, 「數值名稱」)
LocBaml只能從BAML,這是你的XAML文件的編譯形式提取的東西。任何沒有在xaml中定義的東西(例如,在代碼隱藏中定義的字符串)永遠不會被它看到。解決這個問題的唯一方法就是將所有可能需要本地化爲字符串資源的字符串定義在xaml中。這些可以很容易地從代碼隱藏引用,所以它沒有聽起來那麼糟糕。完全動態生成的字符串將不可本地化,但通過一些工作,您可以從xaml資源中定義的片段構建它們。
雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – oers
我不直接從視圖模型pooping它我已經在視圖中保留了messanger助手類,我只是在viewmodel中調用它,並在其中傳遞消息。我的問題是,我如何轉換消息文本,我從視圖模型中傳遞的選定語言自動像BamTool視圖部分。 – Syeda
好的,那麼你可以直接從ViewModel傳遞消息,但是允許視圖找到正確的消息並進行本地化。 –