0

我已经用我的两个资源文件实现了以下内容,一个用于英语(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();

            }
        }
4

1 回答 1

0

解决了

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

在 App_GlobalResources 文件夹中创建一个名为 Main.resx 的资源文件。这是用于默认文化(即 Invariant )

然后创建资源文件 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 )进行匹配。

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

于 2013-02-12T09:52:30.020 回答