• asp.net mvc 国际化(1) 国际化的基础


    国际化主要在以下几个方面

    1.  通常的文本国际化. 通过asp.net资源文件解决.

    2.  前端国际化. 通过js语言包解决.

    3.  后台输出的提示语言等的国际化.(比如说”该用户名不存在”)

    4.  状态枚举的国际化.(比如说”正常”,”停止”等状态)

    5.  数据库数据的国际化(比如说一级目录二级目录等文本)

    asp.net mvc中的资源文件

    本地文件: Views文件夹内. 用于给ASPX,ASCX,模板页等的国际化. 命名例如. Login.aspx.en-US.resx

    <%= this.GetLocalResourceObject("First") %>

    全局文件: 站点根目录. 命名规则: 类名.语言代码.resx.

    //页面
    <%= this.GetGlobalResourceObject("Test","string1") %>
    //后台
    类名.字段名

    以声明方式设置 ASP.NET 网页的区域性和 UI 区域性

    若要设置所有页的区域性和 UI 区域性,请向 Web.config 文件添加一个 globalization 节,然后设置 uiculture 和 culture 属性,如下面的示例所示:
     
    <globalization uiculture="es" culture="es-MX" />
    若要设置单个页的区域性和 UI 区域性,请设置 @ Page 指令的 Culture 和 UICulture 属性,如下面的示例所示:
     
    <%@ Page UICulture="es" Culture="es-MX" %>
    若要使 ASP.NET 将区域性和 UI 区域性设置为当前浏览器设置中指定的第一种语言,请将 UICulture 和 Culture 设置为 auto。也可以将该值设置为 auto:culture_info_name,其中 culture_info_name 是区域性名称。有关区域性名称的列表,请参见 CultureInfo。您可以在 @ Page 指令或 Web.config 文件中进行该设置。

    用编程的方式设置ASP.NET网页的区域性和UI区域性

        将页的 Culture 和 UICulture 属性设置为语言和区域性字符串(如 en-US)。这两个属性是页的内部属性,只能在页中使用。
     
        将当前线程的 CurrentUICulture 和 CurrentCulture 属性分别设置为 UI 区域性和区域性。CurrentUICulture 属性采用一个语言和区域性信息字符串。若要设置 CurrentCulture 属性,请创建 CultureInfo 类的一个实例并调用其 CreateSpecificCulture 方法。
    //在aspx页面中
    protected override void InitializeCulture()
    {
        if (Request.Form["ListBox1"] != null)
        {
            String selectedLanguage = Request.Form["ListBox1"];
            UICulture = selectedLanguage ;
            Culture = selectedLanguage ;
     
            Thread.CurrentThread.CurrentCulture = 
                CultureInfo.CreateSpecificCulture(selectedLanguage);
            Thread.CurrentThread.CurrentUICulture = new 
                CultureInfo(selectedLanguage);
        }
        base.InitializeCulture();
    }
    //在httpmodule中重新设置当前线程的CurrentUICulture和CurrentCulture属性
    public void Init(HttpApplication context)
            {
                context.PostAuthenticateRequest += new EventHandler(context_PostAuthenticateRequest);
            }
     
            void context_PostAuthenticateRequest(object sender, EventArgs e)
            {
                var httpContext = HttpContext.Current;
                try
                {
                    if (httpContext.Request.Cookies["lang"] != null)
                    {
                        System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(httpContext.Request.Cookies["lang"].Value.ToString());
                        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(httpContext.Request.Cookies["lang"].Value.ToString());
                    }
                }
                catch (Exception)
                { }
            }

    通过以上的代码. 我们可以简单地完成国际化了.

    具体操作可以看这里

    待续

  • 相关阅读:
    HTML连载29-div和span标签
    Java连载14-补码简介&浮点型整数
    Java连载13-整数型字面值的强制转换
    Java连载12-继承开发环境&long类型
    [Python] tkinter 之 Listbox & Combobox
    [Python] Tkinter command
    [java] 转型
    [Python] execl读写
    [c++] 细节
    [刷题] PTA 7-64 最长对称子串
  • 原文地址:https://www.cnblogs.com/jianjialin/p/2087001.html
Copyright © 2020-2023  润新知