【问题标题】:Aspx and aspx.cs getting strings from different resx filesAspx 和 aspx.cs 从不同的 resx 文件中获取字符串
【发布时间】:2015-07-28 12:51:21
【问题描述】:

我创建了两个资源文件,“SOSResources.en.resx”和“SOSResources.pt.resx”。

在我的 aspx 页面中,当我尝试使用以下这些文件中的字符串时,我从标准英语 resx 文件中获取它。

asp:Literal ID="btnDelete_Text" Text="<%$Resources:SOSResources, String1%>"

但是,如果我尝试在下面的代码隐藏中获取相同的字符串,我会从葡萄牙语语言文件(这是用户语言)中获取它。

btnEdit_Text.Text = Resources.SOSResources.String1

以下代码用于处理此过程。如果此信息不可用,则应该选择用户的语言或英语。但是,只有来自代码隐藏的示例才能获取用户语言。 aspx 页面中的示例总是从英文 resx 文件中获取字符串。

protected override void InitializeCulture()
    {
        string lang;

        if (ActiveUser != null && ActiveUser.Language != null)
        {
            lang = ActiveUser.Language;
        }
        else
        {
            lang = "en";
        }

        Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
        base.InitializeCulture();
    }

有人可以帮助我吗?我如何确保在这两种情况下页面都会从适当的语言中获取字符串?我也不确定这是否是在 .NET 上执行全球化的正确方法。

【问题讨论】:

  • 传递给CultureInfolang变量的值是多少?
  • 它是ActiveUser.Language的值:根据用户的不同,例如“en”、“pt”或“es”的语言代码。或者,如果数据库中不存在此信息,请使用“en”(系统的标准语言)。

标签: c# asp.net globalization resx


【解决方案1】:

经过数小时的研究,我发现这个例子对我有用:

https://msdn.microsoft.com/en-us/library/bz9tc508(v=vs.85).aspx

除此之外,还有一个问题在尝试将代码移动到 Site:Master 或 PageBase.cs 时也对我有所帮助:

ASP.NET Web Page Globalization & Localization in Master Page C# 3.0

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2023-03-07
    相关资源
    最近更新 更多