ASP.net 未使用其他語言環境資源文件
我有一個
Default.aspx文件,我可以在其中獲取本地化值:預設.aspx:
<asp:Localize meta:resourcekey="lblTitle" runat="server">Welcome</asp:Localize>然後我創建一個匹配的備份資源文件:
預設.aspx.resx:
lblTitle.Text Welcome to Stackoverflow Localized這有效:
現在我想創建例如法語本地化:
Default.aspx.fr.resx:
lblTitle.Text Bienvenue Stackoverflow我更改了瀏覽器以發送法語語言環境:
(確實如此):
GET http://stackoverflow.com/ HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language: fr-CH,qps-ploc;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: stackoverflow.com除了它不起作用:
我正在關注微軟所說的:
例如,如果您在 App_LocalResources 文件夾中有一個名為 Default.aspx 的頁面,您可以創建以下文件:
Default.aspx.resx. 如果沒有找到語言匹配,這是預設的本地資源文件(備份資源文件)。Default.aspx.es.resx. 這是西班牙語的資源文件,沒有文化資訊。Default.aspx.es-mx.resx. 這是專門針對西班牙語(墨西哥)的資源文件。Default.aspx.fr.resx. 這是法語的資源文件,沒有文化資訊。為什麼 .NET 沒有做 .NET 應該做的事情?
更新:
來自 MSDN:
選擇不同語言的資源文件
ASP.NET 可以將頁面的 UICulture 和 Culture 屬性設置為瀏覽器傳遞的語言和區域性值。…有關詳細資訊,請參閱如何:為 ASP.NET 網頁全球化設置文化和 UI 文化。
如何讓 ASP.NET 將頁面的
UICulture和Culture屬性設置為瀏覽器傳遞的語言和文化值?從**如何:為 ASP.NET 網頁全球化設置文化和 UI 文化:**
使用者可以在瀏覽器中設置 UI 文化和文化。例如,在 Microsoft Internet Explorer 中,在“工具”菜單上,使用者可以點擊“Internet 選項”,在“正常”選項卡上,點擊“語言”,然後設置他們的語言首選項。如果 Web.config 文件中全球化元素的 enableClientBasedCulture 屬性設置為 true,則 ASP.NET 可以根據瀏覽器發送的值自動設置網頁的 UI 文化和文化。
以聲明方式設置 ASP.NET 網頁的區域性和 UI 區域性
- 要讓 ASP.NET 將 UI 文化和文化設置為目前瀏覽器設置中指定的第一種語言,請將 UICulture 和 Culture 設置為 auto。或者,您可以將此值設置為 auto: culture_info_name,其中culture_info_name是文化名稱。有關文化名稱的列表,請參閱CultureInfo。您可以在@ Page指令或 Web.config 文件中進行此設置。
嘗試在 .aspx 文件中的指令中設置
UICulture="auto"和。Culture="auto"``@ Page或者,您可以在 web.config 中完成相同的操作,但它適用於每個頁面:
<system.web> <globalization uiCulture="auto" culture="auto" /> </system.web>
預設情況下,瀏覽器語言不會影響應用程序區域設置。您需要添加一些程式碼來實現這一點。一種方法是在
Global.asaxHttpModule中添加一些程式碼BeginRequest。要從瀏覽器讀取語言設置,您可以使用以下內容:
var languages = Request.UserLanguages if (languages != null) { var lang = languages[0]; Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); }如果你還想影響日期時間、數字格式等,那麼還要設置
CurrentCulture.Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);


