首页 > 编程语言 >ASP.NET实现Web网站本地化

ASP.NET实现Web网站本地化

时间:2023-07-24 15:56:33浏览次数:39  
标签:Web curCulture ASP Thread cookie InitializeCulture NET 方法 页面

1、重写InitializeCulture方法。 在Global.asax中的Application_BeginRequest获取或设置语言,每次页面的请求都首先运行这个方法,然后再运行具体页面的InitializeCulture重载方法。 附上一张图,看看  

 

1、重写InitializeCulture方法。

在Global.asax中的Application_BeginRequest获取或设置语言,每次页面的请求都首先运行这个方法,然后再运行具体页面的InitializeCulture重载方法。

附上一张图,看看页面方法和事件的执行顺序

protected override void InitializeCulture()
{
    String curCulture = Request.QueryString["currentculture"];
    if (!String.IsNullOrEmpty(curCulture))
    {
        HttpCookie cookie = new HttpCookie("preferCulture", curCulture);
        cookie.Expires = DateTime.Today.AddDays(7);
        Response.SetCookie(cookie);//设置Cookie
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
    }
    else
    {
        HttpCookie cookie = new Request.Cookies["preferCulture"];//取得Cookie
        if (cookie != null)
        {
            curCulture = cookie.Value.ToString();

            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(curCulture);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(curCulture);
        }
    }
}

除了通过IE浏览器和线程获取语言设置,其实我们可以自己设置使用哪种语言。 
1)通过在每个页面里的Page节指定

<%@ Page Culture="en-us" UICulture="en-us" %>

如上所设,该页将使用en-us的语言设置。 
注意:这只是个概要式写法,实际的页面中的Page一般都包含更多的属性。 
2)通过在Web.Config里的globalization节指定

<system.web>
<globalization Culture="en-us" UICulture="en-us" />
</system.web>

2、添加资源语言文件

在项目App_GlobalResource文件夹添加Demo.resx和Demo.en-us.rex两个文件

在首页中添加:

<a href="?currentculture=zh-cn" rel="external nofollow" >中文(中国)</a>
 
<a href="?currentculture=en-us" rel="external nofollow" >English(USA)</a>

3、获取全局资源(GlobalResources)的方式:

你能从 ~\App_GlobalResources\MyMessages.resx 得到的资源通过:

1、产生的封装代码 :

string message = Resources.MyMessages.Hello;

2、资源表达式

<asp:Label Text="<%$ Resources: MyMessages, Hello %>" />

3、GetGlobalResourceObject方法

string message = GetGlobalResourceObject("MyMessages", "Hello");

4、本地资源的获取方法:

你能从 ~\App_LocalResources\default.aspx.resx 得到的资源通过:

1、资源表达式:

<asp:Label Text="<%$ Resources: Hello %>" />

2、meta:resourceKey :

<asp:Label meta:resourceKey="labelResourceKey" />

3、GetLocalResourceObject方法:

string message = GetLocalResourceObject("Hello"); "

标签:Web,curCulture,ASP,Thread,cookie,InitializeCulture,NET,方法,页面
From: https://www.cnblogs.com/skynight/p/17577434.html

相关文章

  • Kubernetes业务服务日志采集原理全方位剖析
    Kubernetes日志采集原理全方位剖析   简介作为容器编排领域的实施标准,Kubernetes(K8s)应用的场景也越来越广。日志作为可观测性建设中的重要一环,可以记录详细的访问请求以及错误信息,非常利于问题的定位。Kubernetes上的应用、Kubernetes组件本身、宿主机等都会产......
  • WEB漏洞—文件操作之文件包含漏洞
    文件包含原理 ----传递一个参数(可以是一个文件),然后PHP脚本包含这个文件,则无论这个文件是什么格式,访问PHP脚本,传递参数的文件都能以PHP格式执行。本地文件包含测试 #本地创建一个1.php和shell.txt,代码如下#访问PHP脚本并且传递1.txt文件为参数,发现txt里的内容以php代码执行......
  • AirNet使用笔记8
    摘要:SDD显示多监视源航迹;1、SDD同时显示多监视源航迹,在“DataSource”选择。.sdd_offline.conf.0不加点不是隐藏文件也行。[root@ACC-3conf]#more/home/cdatc/AirNet/bin/conf/.sdd_offline.conf.0B_OPS_IS_MAINTAIN=1......
  • RS232转Profinet网关rs232和rs485的区别
    在工业自动化领域,如何将扫码枪与PLC连接一直是一个重要的问题。而今天,我们将通过一个案例来展示如何通过RS232转Profinet网关,将X-9300扫码枪接入到PLC1200工业以太网总线上。在这个过程中,我们将会用到捷米的RS232自由协议转Profinet网关。1, 首先,我们需要了解RS232和Profinet两......
  • 【WebGL系列-01】获取WebGL上下文
    获取WebGL上下文获取上下文WebGL上下文是从<canvas>标签中获取到的,通过canvas对象的getContext()函数可以获取WebGLRenderingContext。跟据参数的不同,getContext()函数可以获取不同种类的渲染上下文。接口canvas.getContext(contextType:String,contextAttributes?:Objec......
  • 【WebGL系列-02】创建program上下文
    WebGL程序program对象的创建program对象由顶点着色器对象和片元着色器对象构成,因此,创建program对象包含了两部分,一个是着色器对象的创建,一个是program对象的创建。总体流程创建顶点着色器对象创建片元着色器对象创建program对象将顶点着色器和片元着色器添加到程序中将程......
  • 【WebGL系列-03】获取shader变量地址及赋值
    获取shader变量地址及赋值上一节创建了WebGL程序对象,创建好program对象后,对象中包含顶点着色器和片元着色器,着色器中含有变量,我们需要对其进行赋值后才能够进行绘制。着色器代码如下:constVSHADER_SOURCE=/*glsl*/`attributevec4a_Position;voidmain(){gl_P......
  • 【WebGL系列-04】清除缓冲区并绘制图形
    清除缓冲区并绘制图形前文中已经准备好了webgl程序和绘制所用的数据,但是在绘制图像之前,还要对画布进行处理。清除缓冲区由于图像的绘制是一帧一帧绘制,每一帧针对当前的状态,计算屏幕上每个像素的颜色,得到最终的绘制结果。这些状态被保存在一个叫帧缓冲区的地方。帧缓冲区不仅能......
  • C# .NET core Avalonia 11.0版本,发布linux记录
    .netcore7.0+centos7.0cetnos目前运行在hyperV虚拟机里 虚拟机部署的注意事项1需要配置网络环境,  确保在同一局域网下如果sftp无法连接ctrl+shift+f2切换到命令行,开启22端口iptables-IINPUT-ptcp--dport22-jACCEPT同时虚拟机网络也要正确配置.......
  • CTFer成长记录——CTF之Web专题·bugku-eval
    一、题目链接https://ctf.bugku.com/challenges/detail/id/75.html?id=75二、解法步骤  打开网页是一段php代码,其中include"flag.php"提示可能有文件包含漏洞,接着使用了eval函数,那么可能存在命令执行漏洞。    先用system('ls')命令看看:?hello=system('ls'):......