2013-04-15 30 views
6

我創建了必須以一種以上的語言提供一個asp.net MVC4 web項目的差異。請告訴我NeutralResourcesLanguageAttribute和的UICulture的一個asp.net MVC項目

我想爲此Web項目設置默認語言。 經過一番研究,似乎可以在兩個地方設置默認語言。

NeutralResourcesLanguageAttribute在集信息

[assembly: NeutralResourcesLanguageAttribute("en")] 

從MSDN:在web.config中

<system.web> 
    <globalization uiCulture="en"/> 

Informs the resource manager of an app's default culture. This class cannot be inherited.

全球化uiCultur從MDSN:Specifies the default culture for processing locale-dependent resource searches. For valid culture strings, see System.Globalization.CultureInfo Class.

現在我的問題:

在Web項目中設置默認語言的正確方法是什麼(NeutralResourcesLanguageAttribute或globalization uiCultur)?

回答

1

例資源文件

  • 東西。RESX(含英語,是默認的資源文件)在web.config中使用
  • Stuff.de.resx(包括德國)
  • Stuff.fr.resx(包括法國)

現在

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto:en" 
    culture="auto:en" /> 

這個(「自動」)將讓瀏覽器設置決定(德國瀏覽器獲得德國資源等)

然而(在ab OVE例子),如果瑞典的自帶瀏覽器將默認爲EN因爲沒有本身(瑞典)資源文件和回退英語(「汽車:EN」)的UICulture將被使用。

所以...然後:

[assembly: NeutralResourcesLanguageAttribute("en")] 

現在可以申請英語要求直接去找default.resx沒有其他查找的EN RESX第一。

如果英文瀏覽器正在請求它應直接轉到默認資源文件,而不先嚐試別的東西。所以NeutralResourcesLanguageAttribute設置也在這裏發揮作用。該應用程序知道直接轉到默認的resx。

+0

經過一些更多的測試,這似乎是最好的答案。 NeutralResourcesLanguageAttribute是關於程序集探測的,其中web.config uiCulture僅設置默認語言。 – Manuel

+0

我有一個後續問題:應該在哪個程序集中指定?正在執行的程序集或持有資源文件的程序集? – sondergard

0

根據this文章重要的設置(個),一個Asp.Net Web應用程序是在「全球化」的元素在web.config。文章建議將文化和uiCulture作爲最佳實踐。例如:

<globalization uiCulture="es" culture="es-MX" /> 
0

NeutralResourcesLanguageAttribute是讓應用程序的資源管理器知道你的應用程序的默認文化和資源定位的一種方式。此屬性可用於任何類型的.NET應用程序:桌面,網頁,win8,wcf等。

globalization屬性是讓Web應用程序知道您的應用程序的默認文化是什麼的另一種方式。

注意,然後他們主要的區別是,globalization屬性僅適用於Web應用程序,並且不允許您指定的資源不同的位置。

建議:對於Web項目,我會使用config屬性。

0

的NeutralResourcesLanguage屬性通知被用於顯示中性文化資源程序集的語言的ResourceManager中。當它在與中性資源語言相同的文化中查找資源時,ResourceManager會自動使用位於主要程序集中的資源。

它做的這個不是搜索具有當前線程的當前用戶界面區域性的附屬程序集。 NeutralResourcesLanguage屬性提高了您加載的第一個資源的查找性能,並且可以減少您的工作集。

http://technet.microsoft.com/en-us/subscriptions/bb385967.aspx