2013-02-12 41 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),父亲的父亲(不变)。

更改“主”的名称以满足您的需求