我想在我的ASP.NET MVC應用程序中實現Globalization
和Localization
。asp.net中的全球化MVC4
我經歷了幾個教程,如this。
但問題是他正在爲每種語言創建多個視圖。
因此,如果有10個視圖,那麼我們必須爲每種語言創建10個視圖,總計爲100個。請指導創建多語言(即8種語言)應用程序的最佳方式,即單個視圖和PO文件。
我想在我的ASP.NET MVC應用程序中實現Globalization
和Localization
。asp.net中的全球化MVC4
我經歷了幾個教程,如this。
但問題是他正在爲每種語言創建多個視圖。
因此,如果有10個視圖,那麼我們必須爲每種語言創建10個視圖,總計爲100個。請指導創建多語言(即8種語言)應用程序的最佳方式,即單個視圖和PO文件。
在我看來,做多個視圖是最好的方法。如果你發現它太多了,可能是因爲你的MVC應用程序沒有遵循適當的MVC模式。一個觀點應該總是愚蠢的。如果一個觀點是愚蠢的,它唯一的東西是寫作和佈局。
這就是說,當然你可以去做一些文化服務。所有你需要的是:
模式
@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
"Hello %s!"
從加載XML牽強編輯
哦,要允許十進制/貨幣/日期默認全球化,您還應該考慮返回當前Culture的實例的Current
屬性。這樣,你可以使用它像這樣:@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)
EDIT2
2更多的事情。
因爲這整個@String.Format(Context.CultureService.GetFormat(), "")
事情是那麼長,考慮寫一個幫手,讓您可以編寫類似@Globalize("HELLOWORLD", "World")
考慮使用枚舉歸納字符串數據。通過擺脫魔法字符串,它的視圖會更清晰,並且可以更輕鬆地進行重構。結果可能類似於@Globalize(HOME.Hello, User.Name)
我不會推薦多個視圖。我喜歡OpenCart和其他軟件如何做。他們有一個單獨的語言文件夾。所有控制器動作首先調用語言方法來獲取請求的特定語言,然後像任何其他變量一樣將其返回到視圖。當然,這適用於靜態內容。對於數據庫驅動的內容,您應該有一個單獨的函數來獲取所請求語言的特定字段。 – user1477388