2014-05-02 24 views
0

我正在將現有的WinForms應用程序重構爲WPF和MVVM(除了MVVM中的理論外,還有一點知識)。應用程序需要完全本地化。就用戶界面而言,我可以這樣做(存儲資源並根據枚舉和其他結構綁定到它們)。在業務邏輯中的MVVM本地化

應用程序必須向用戶呈現動態生成的PDF。該定位信息應該去哪裏:

  1. 在後臺與PDF創建邏輯

    優點:更容易邏輯流

    缺點:對MVVM理論,作爲後端不應該知道什麼它如何顯示。還可維護性較差(2個帶本地化數據的地方)

  2. 將對象傳遞給視圖進行轉換。這意味着PDF生成代碼需要進入視圖。

    臨:只有一個點,以保持本地化

    缺點:同樣是在MVVM理論,如視圖不應該有邏輯,它

既不解決方案似乎真的理想的我。有任何想法嗎?

回答

0

你的問題是相當不理解,但實用的解決方案本地化:

1.創建項目,.resx文件(項目名稱例如可以是本地化)

2.添加命名空間到你的XAML文件,例如:以這種方式

Text="{x:Static localPresentation:PresentationResources.SomeResourceKey}" 

這種定位

xmlns:localPresentation="clr-namespace:Localization.Presentation;assembly=Localization" 

3.Localize UI文本不是動態的。當您更改應用程序的語言時,您必須重新啓動它。動態本地化更棘手,但一切皆有可能。

+0

我的問題不在於本地化UI。我的問題是關於本地化在後端生成的文件。如果我必須向用戶展示翻譯後的.pdf文件,是否將對象傳遞給視圖進行翻譯,然後返回到視圖模型以生成PDF?或者,我是否使用pdf邏輯將翻譯信息存儲在後端? – SeeMoreGain

+0

我編輯了這個問題,希望能讓你更容易理解我。 – SeeMoreGain

+1

你說得對。我沒有正確理解問題。從我的角度來看,你必須在後端做到這一點。將數據傳遞給用戶界面進行翻譯並不是一個好的解決方案,它沒有意義。但是,也許我還是不明白你有什麼問題。如果你設置Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture它應該工作。 –