首页 .NET/Web ASP.NET如何实现中英文双语言切换国际化效果

ASP.NET如何实现中英文双语言切换国际化效果

作者:胡同里的砖头 围观群众:2066 更新于:2013-12-19

全局方案:

在资源方案视图中选中网站,右键,点击[添加ASP.NET 文件夹]->[App_GlobalResources]

建完之后,项目之下多了这一个文件夹

再选中App_GlobalResources文件夹,右键,点击[添加新项],在弹出的对话框中选中“资源文件”,命名为“LocalizedText.resx”,点击[ 添加],如图所示:

双击LocalizedText.resx进行编辑,添加一条新的字符串资源,如图所示:

复制LocalizedText.resx,粘贴到App_GlobalResources目录,重命名为LocalizedText.en-us.resx,双击进行编辑,添加一条新的字符串资源 ,如图所示:

打开Default.aspx,切换到[设计]视图,从工具箱拖一个Label控件到页面上。切换到[源]视图,修改代码:

<asp:Label ID="Label1" runat="server" Text='<%$ Resources:LocalizedText,Name %>'></asp:Label>

动态切换语言设置

以上的介绍都是通过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>
3)当然还有一种就是通过编程动态切换语言设置啦,这也是实际项目中经常用到的方式

打开Default.aspx,切换到[源]视图,添加如下代码

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

 

        打开Default.aspx.cs,添加如下代码

String s;

    protected override void InitializeCulture()
    {
        s = Request.QueryString["currentculture"];
        if (!String.IsNullOrEmpty(s))
        {
            //UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言
            //Culture - 决定各种数据类型是如何组织,如数字与日期
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);
        }
    }

 

    记得添上这个引用

using System.Threading;

using System.Globalization;

 

运行程序,切换语言设置,可以看到全局资源的使用效果了,如图所示:
中文(中国)

英语(美国)

 

 

Default.aspx全整示例代码:

前台:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <a href="?currentculture=zh-cn">中文(中国)</a>
       
      <a href="?currentculture=en-us">English(USA)</a>
        <asp:Label ID="Label1" runat="server" Text='<%$ Resources:LocalizedText,Name %>'></asp:Label>
    </div>
    </form>
</body>
</html>

后台:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Threading;
using System.Globalization;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

     String s;

    protected override void InitializeCulture()
    {
        s = Request.QueryString["currentculture"];
        if (!String.IsNullOrEmpty(s))
        {
            //UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言
            //Culture - 决定各种数据类型是如何组织,如数字与日期
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);
        }
    }
}

示例下载:完整示例下载

  • 本文标题: ASP.NET如何实现中英文双语言切换国际化效果
  • 文章分类:【.NET/Web】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8