Text属性中的全局资源

时间:2012-04-18 18:03:39

标签: c# asp.net globalization

当我想更改网站的语言时,我遇到了问题。我使用全球资源。 当我使用默认语言时,它会显示正确的文本。没问题。

但是当我更改Culture时,它不会更新ASP.NET Control属性中的文本。 我不明白为什么。

此代码完美无缺

<h1><%= Resources.Default.Register %></h1>

但是这段代码不幸地改变了它的语言

<asp:Button ID="Button2" runat="server" Text="<%$ Resources:Default, Register %>" />

我通过单击LinkBut​​ton更改语言,就像这样

protected void lbNL_Click(object sender, EventArgs e)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-BE");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE");

            Page.Culture = "nl-BE";
            Page.UICulture = "nl-BE";

        }

你能帮我吗

文森特

1 个答案:

答案 0 :(得分:2)

这就是我将我的语言从英语(默认)改为法语的方式。

<h3><asp:Label runat="server" ID="lblWelcome" Text="<%$ Resources:Resource, Welcome %>" /></h3>

我被迫使用控件,如asp:Label或asp:Literal。

此外,我的全局资源文件位于App_GlobalResources文件夹中,名为 Resource.fr.resx 。 Welcome是资源文件中密钥的名称。

此外,当我将文化信息更改为法语时,我只使用两个字母代码 fr

** * ** ** *编辑* * * * * * * * *

这可能是你的问题。您可能需要覆盖InitializeCulture。

protected override void InitializeCulture()
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-BE");
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE");

    base.InitializeCulture();
}