ASP.net C#使用下拉选择器进行本地化 - 不改变语言

时间:2013-02-12 00:01:37

标签: asp.net localization

我已经用我的两个资源文件实现了以下内容:一个用于英语(LocalStrings),另一个用于德语(de-DE)。当我更改下拉列表时,它不会更改语言。没有错误,不是Visual Studio或Firebug。 任何建议?


    <%@ 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();

            }
        }

1 个答案:

答案 0 :(得分:0)

解决

资源文件的格式为ResourceName.culture.resx

在名为Main.resx的App_GlobalResources文件夹中创建资源文件。这是默认文化(即不变量)

然后创建一个资源文件Main.en-US.resx

这是恩美文化的所有资源都将存在的地方,等等。

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),父母的父(Invariant)。

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