2013-02-12 32 views
0

我用我的兩個資源文件(一個用於英語(LocalStrings)和一個用於德語(de-DE))實現了以下內容。當我更改下拉菜單時,它不會更改語言。沒有錯誤發生,而不是Visual Studio或Firebug。 有什麼建議嗎?帶下拉選擇器的ASP.net C#本地化 - 不改變語言


<%@ Page Language="C#" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" uiculture="auto" Culture="auto:de-DE" %> 

    <!DOCTYPE html> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head id="Head1" runat="server"> 
     <title></title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 

     </div> 
      <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1" Text="<%$ Resources:LocalStrings, LastName %>"></asp:Label> 
      <br /> 
      <br /> 
      <asp:DropDownList ID="DropDownList1" runat="server"> 
       <asp:ListItem Value="LocalStrings">English</asp:ListItem> 
       <asp:ListItem Value="de-DE">German</asp:ListItem> 
      </asp:DropDownList> 
     </form> 
    </body> 
    </html> 

代碼隱藏

 using System; 
     using System.Collections.Generic; 
     using System.Linq; 
     using System.Threading; 
     using System.Web; 
     using System.Web.UI; 
     using System.Web.UI.WebControls; 
     using System.Globalization; 

     public partial class _Default : System.Web.UI.Page 
     { 
      protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     protected override void InitializeCulture() 
     { 
      string cult = Request.Form["DropDownList1"]; 

      if (cult != null) 
      { 
       String selectedLanguage = cult; 
       UICulture = selectedLanguage; 
       Culture = selectedLanguage; 

       Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture(selectedLanguage); 
       Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); 
       } 
       base.InitializeCulture(); 

      } 
     } 

回答

0

解決

的資源文件的格式是ResourceName.culture.resx

創建一個名爲在App_GlobalResources文件夾的資源文件Main.resx。這是默認的文化(即不變)

然後創建一個資源文件Main.en-US.resx

這是所有的EN-US區域性的資源將生活,等等。

Main.resx 
Main.en.resx 
Main.en-US-resx 
Main.en-AU.resx 
Main.fr.resx 
Main.fr-FR.resx 
etc. 

要訪問該從網頁使用語法

<%$ Resources:Main, Email %> 

不要圍繞文化擔心,系統會做得出來。它將確切第一(EN-US)匹配,然後工作到這是文化父(EN),父親的父親(不變)。

更改「主」的名稱以滿足您的需求