我已经创建了两个.resx文件 - WebResources.resx和WebResources.fr-FR.resx

两者都包含ExceptionMessages_SignupWithCard。

要测试我所做的:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Response.Write("Current Culture is " + CultureInfo.CurrentCulture.EnglishName);
Response.Write("<br>Message is: " + Resources.WebResources.ExceptionMessages_SignupWithCard);

的问题是,我仍然获得从WebResources.resx的ExceptionMessages_SignupWithCard消息而不是一个从WebResources.fr-FR.resx。

有人请帮助?

感谢。

有帮助吗?

解决方案

ASP.Net(具体地,ResourceManager)使用CurrentUICulture来检索资源。

尝试设置线程的CurrentUICulture以及

CultureInfo french = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentCulture = french;
Thread.CurrentThread.CurrentUICulture = french;
Response.Write("Current Culture is " + CultureInfo.CurrentCulture.EnglishName);
Response.Write("<br>Message is: " +  
          Resources.WebResources.ExceptionMessages_SignupWithCard);

其他提示

尝试直接设置Page.Culture和Page.UICulture代替螺纹文化。

由于它是一个字符串属性,看来它不会是很不错的。但是,有大量的代码能上改变的不仅仅是线程培养,但ResourceManagers太

这似乎是标准的做法,而不是分配线程的文化。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LanugageChanger._Default"  meta:resourcekey="PageResource1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

        <asp:Label ID="Label1" runat="server" Text="Hello" 
            meta:resourcekey="Label1Resource1"></asp:Label>

        <asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label2" runat="server" Text="Goodbye" 
            meta:resourcekey="Label2Resource1"></asp:Label>

        <asp:TextBox ID="TextBox2" runat="server" meta:resourcekey="TextBox2Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label3" runat="server" Text="Welcome" 
            meta:resourcekey="Label3Resource1"></asp:Label>

        <asp:TextBox ID="TextBox3" runat="server" meta:resourcekey="TextBox3Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label4" runat="server" Text="Terminate" 
            meta:resourcekey="Label4Resource1"></asp:Label>

        <asp:TextBox ID="TextBox4" runat="server" meta:resourcekey="TextBox4Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label5" runat="server" Text="End" 
            meta:resourcekey="Label5Resource1"></asp:Label>

        <asp:TextBox ID="TextBox5" runat="server" meta:resourcekey="TextBox5Resource1"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Add new values" 
            meta:resourcekey="Button1Resource1" onclick="Button1_Click1" />

        <br />
        <asp:Button ID="Button2" runat="server" Text="Change language" 
            meta:resourcekey="Button2Resource1" onclick="Button2_Click" />

        <br />
        <br />
        <asp:Label ID="Label6" runat="server" meta:resourcekey="Label6Resource1" 
            Text="English 1"></asp:Label>
        <br />
        <asp:Label ID="Label7" runat="server" meta:resourcekey="Label7Resource1" 
            Text="English 2"></asp:Label>
        <br />
        <asp:Label ID="Label8" runat="server" meta:resourcekey="Label8Resource1" 
            Text="English 3"></asp:Label>
        <br />
        <asp:Label ID="Label9" runat="server" meta:resourcekey="Label9Resource1" 
            Text="English 4"></asp:Label>
        <br />
        <asp:Label ID="Label10" runat="server" meta:resourcekey="Label10Resource1" 
            Text="Default" />></asp:Label>

        <br />
        <asp:TextBox ID="TextBox6" runat="server" Height="153px" Width="543px"></asp:TextBox>

    </div>
    </form>
</body>
</html>

有两种方法来设定一个asp.net网页的的UICulture。

选项#1是网络浏览器可以调整UI文化(自动),通过设置在网络浏览器的当前语言。在Firefox中你走在选项中的内容选项卡,并单击语言,然后添加法语,并将其移动到列表的顶部。 IE浏览器类似,它在选项页面的语言按钮,并添加法,并将其移动到顺序的顶部。为你的网页,支持自动调节的这种风格,你必须设置“的UICulture =汽车”在网页编译如下所示: <%@页面语言= “C#” AutoEventWireup = “真” 的的UICulture = “自动” ... ... ...%> 如果您使用此方法,它会显示任何Web浏览器语言,它不理解你的默认语言。你只需要定义一个非特定区域性资源涵盖语言的所有版本,或者你可以定义特定语言(FR-CA,ES-MX等),它将退回到中性语言文件(FR-FR)如果没有定义特定的语言。 MSDN对汽车文化,以及如何更Web浏览器语言添加到IE浏览器的详细信息: http://msdn.microsoft.com/en-us/library/fw69ke6f.aspx

选项#2是在网页中编译指示将其设置为特定语言,像的UICulture =“FR-FR”,或在web.config整个站点。

MSDN解释在下面的链接,以及如何可以通过web.config文件设置为您网站上的所有网页这些设置。 http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

这是你正在使用的作品,但你注意到它只能暂时的编程方法。我用读通过查询字符串指定的语言和文化的改变这样的编程方法。您可以实现一个HttpModule来检查查询字符串并设置文化为当前页面请求这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top