zoukankan      html  css  js  c++  java
  • [原]ASP.NET MVC 3 Razor 多国语言参考解决方案 补充二

    在上两篇(1,2)中提到了如何在应用程序项目中使用资源文件的问题,还没有测试在调用其他ClassLibrary中资源文件的情况,今早起来还按照以往ASP.NET项目中的作法做个测试

    使用资源文件:

        public class Class1
        {
            public string GetTT()
            {
                return Resources.Test.TT;
            }
        }
    

    期望能像往常一样,随着浏览器中的语言选项的变换能出现自动切换效果,结果不出意料的失望了,只能显示没有带Culture信息的资源项值。

    (3月22日重要更新内容:在web.config的system.web配置节点下加入<globalization culture="auto" uiCulture="auto"/>就可以不使用下列的方法了,唉,学艺不精啊!!!)

    通过检查资源文件的Designer.cs文件,发现其内部有一个属性定义:

            [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
            internal static global::System.Globalization.CultureInfo Culture {
                get {
                    return resourceCulture;
                }
                set {
                    resourceCulture = value;
                }
            }
    

    于是猜想,如果能设置这个属性值,想必可以让ResourceManager自动选取相应的资源文件吧,但是添加在哪里呢,发现在HttpApplication中有这样一个事件:

    public event EventHandler PreRequestHandlerExecute;
    

    于是在Global里面添加了这个事件的事件处理器,并在其方法内部添加如下代码:

            protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
            {
                Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(Request.UserLanguages[0]);
                Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
            }
    

    F5运行,果然达到了预期的效果:随着浏览器语言选项的切换,页面上的语言也能自动切换了。

    英文:

    中文:

  • 相关阅读:
    机器学习笔记之K近邻算法
    [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
    POJ2709 染料贪心
    POJ2337 欧拉路径字典序输出
    POJ2337 欧拉路径字典序输出
    POJ1042 贪心钓鱼
    POJ3228二分最大流
    POJ3228二分最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
  • 原文地址:https://www.cnblogs.com/think8848/p/1988690.html
Copyright © 2011-2022 走看看