动态加载RESX文件不起作用

时间:2012-02-10 23:54:25

标签: c# asp.net localization globalization

我的网页必须根据用户选择以多种不同的语言显示。为此,我正在为每个asp.net网页使用RESX文件。我不想在浏览器中使用自动检测语言,但我想再次根据用户选择设置语言。为了实现这一点,我正在做以下事情:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es-MX", false);
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-MX", false);

OR

Page.Culture = "es-MX";
Page.UICulture = "es-MX";

但这些都没有按预期工作!我正在初始化页面的Init方法中的Culture,但它将始终显示默认语言。我正在检查这些属性的值以及那些具有正确文化的属性,但仍然没有使用RESX文件进行渲染。有任何想法吗?建议?

由于

2 个答案:

答案 0 :(得分:2)

如果在使用明确本地化时有人遇到此问题,则必须完成以下操作:

protected override void InitializeCulture()
{
    Page.Culture = "en-US";
    Page.UICulture = "en-US";
}

来自net-tutorials.com网站:

  

由于Page指令只是Page类的快捷方式,因此也可以从CodeBehind完成。但是,我们必须在呈现页面之前的某个点执行此操作,以确保它具有所需的效果。这是InitializeCulture()方法发挥作用的地方,这是一种在页面生命周期中很早就被ASP.NET调用的方法,你可以覆盖它。

答案 1 :(得分:0)

试试这个     System.Resources.ResourceReader resourceReader         = new System.Resources.ResourceReader(“RES_PATH”);

现在您可以使用它来加载用户语言,例如es.resx

System.Resources.ResourceReader resourceReader 
    = new System.Resources.ResourceReader(HttpContext.Current.Request.UserLanguages[0] 
    + ".resource");