2008-08-06 90 views
64

在ASP.NET MVC應用程序中爲接口支持多種語言的最佳方式是什麼?我見過有人爲其他應用程序使用資源文件。這仍然是最好的方式嗎?ASP.NET MVC應用程序中的多種語言?

+0

可能重複:// stackoverflow.com/questions/192465/how-to-localize-asp-net-mvc-application) – Marijn 2012-02-08 11:09:33

+0

多語言網站與傳出參數,請檢查此[多語言網站在MVC 4 C#](http://lesson8.blogspot .in/2013/03/multi-language-website-in-mvc-4-c.html) – Sender 2013-03-27 06:07:01

回答

40

如果您使用默認視圖引擎,則本地資源在視圖中工作。但是,如果您需要在控制器操作中獲取資源字符串,則無法獲取本地資源,而必須使用全局資源。

當你考慮它時,這是有意義的,因爲本地資源是aspx頁面的本地資源,在控制器中,你甚至沒有選擇你的視圖。

+0

這也可以在剃刀視圖引擎中工作嗎? – 2010-11-28 11:21:10

3

是的資源仍然是在.NET環境下支持多種語言的最佳方式。因爲它們很容易引用,甚至更容易添加新的語言。

Site.resx 
Site.en.resx 
Site.en-US.resx 
Site.fr.resx 
etc... 

所以你是正確的仍然使用資源文件。

+0

這應該如何工作? – 2012-01-09 20:39:00

21

我發現this resource是非常有益

它的包裝輪HttpContext.Current.GetGlobalResourceStringHttpContext.Current.GetLocalResourceString,使您可以調用資源這樣的...

// default global resource 
Html.Resource("GlobalResource, ResourceName") 

// global resource with optional arguments for formatting 
Html.Resource("GlobalResource, ResourceName", "foo", "bar") 

// default local resource 
Html.Resource("ResourceName") 

// local resource with optional arguments for formatting 
Html.Resource("ResourceName", "foo", "bar") 

我發現的唯一問題是控制器無法訪問本地資源字符串。

1

作爲答案提到的其他一些解決方案不適用於發佈的MVC版本(它們與以前版本的alpha/beta一起使用)。

這裏描述的方式來實現定位將被強類型,並不會打破控制器和視圖的單元測試的好文章:localization guide for MVC v1

2

果園項目採用所謂的「T」的快捷方式方法做所有頁內字符串翻譯。所以你會看到帶有@T的標籤(「A String to Translate」)。

我打算看看這是如何在幕後實施的,並可能在未來的項目中使用它。短名稱保持代碼更清潔,因爲它將被用於很多

我喜歡這種方法的原始字符串(在本例中爲英文)在代碼中仍然很容易看到,並且不需要在資源工具或某個其他位置查找以解碼實際字符串應該是什麼這裏。

有關更多信息,請參閱http://orchardproject.net

0

這是另一種選擇,你將有機會獲得的CurrentUICulture控制器:

檢查MVC3-multi-language

[如何本地化ASP.NET MVC應用程序?(HTTP的