问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

索爱mt15i打字国际语言怎么换成中文语言高手速进

发布网友 发布时间:2024-10-12 20:52

我来回答

2个回答

热心网友 时间:2024-11-17 05:53

比较长可要仔细看哦。。
1. 简单例子
2. 进一步认识Localization
3. 语言转换
4. 解决方案

一. 简单例子

下面通过一个简单的例子来说明利用Localization来实现本地化是那么的简单,首先我们打开Visual Studio 2005,新建一个名叫Localization的工程(名字就无关紧要了,随你喜欢~~),如下所示:

然后我们在Default.aspx这张页面上放一些控件,例如我们在页面上放一个按钮,一个标签一个文本框,添加完之后的页面就好像下面的一样:

接下来的一步主要是负责生成本地资源,我们点击“工具->生成本地资源(R)”,

于是我们的项目中多了一个文件夹App_LocalResources,里面包含一个文件Default.aspx.resx,而这个文件就是用来编辑保存我们想要显示的一些文字资源

例如我们为我们添加的控件输入以下信息:

在完成以上步骤之后,我们就可以看到效果了。

在以上的步骤中,我们没有手工编写任何代码,而由.NET2.0自动实现绑定过程。而页面跟以往的不同就是HTML代码发生了变化:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>

<!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>
<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource1"></asp:TextBox>
<asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1" Text="Label"></asp:Label></div>
</form>
</body>
</html>

除了Page里面增加了Culture="auto" meta:resourcekey="PageResource1" UICulture="auto"等属性设置外,我们添加的控件也相应的多了meta:resourcekey这个属性,而.NET2.0就是根据这些属性来进行语言绑定。

在上述的简单项目中,我们只提供了一种语言,还没达到本地化的要求,于是我们向App_localresources这个目录手工增加一个资源文件Default.aspx.en-us.resx文件(其中英文[美国]的语言代码是"en-us"),我们向里面添加一些key/value对,如下所示:

然后我们去修改IE的Internet选项的语言,添加“英文(美国)[en-us]”,并且把它移动到最上面:

再运行一次我们的项目,你会发现简单的本地化已经实现

至此,通过一个简单的例子,我们已经初步认识了.NET2.0是如何实现利用Localization来实现本地化的。但是如果我们要构建一个优秀的国际化网站或软件,我们需要对Localization做进一步的认识。

二. 进一步认识Localization

到了这里,你会发现上述的页面中是每一个页面对应一些属于自己的资源文件,如果我们要求多张页面或者全部页面都要用同一个资源文件的时候,该怎么做呢?很简单,我们可以在项目中添加一个文件夹,名叫App_GlobalResources,这是系统默认的存放全局资源的目录。例如我们在全局目录中添加两个文件,分别是global.resx和global.en-us.resx,

然后我们分别在里面输入一些对应的key/value值,至于怎么应用我们的全局资源绑定到页面中,我们有两种方法:

一种是在HTML代码里面进行绑定,表达式是
<%$ resources: [applicationkey], resourcekey, [default] %>
例如我们在Default.aspx多放一个按钮,其HTML代码为:

<asp:Button ID="Button2" runat="server" Text="<%$ resources: global, String1 %>
于是我们会得到以下的效果,可以看出资源已绑定到控件上。

另一种方式则是在程序代码进行绑定,由于.NET2.0框架会将全局资源文件编译成一个类,也就是说我们刚才创建的global.resx文件将被编译成一个类global,而资源文件里面的所有key将成为类的属性,以供在程序里进行访问。例如我们可以在程序里这样写:

this.Button2.Text = Resources.global.String1;
大家等会可以下载附件尝试一下,看看效果是否一样~~~~

另外,资源文件除了可以存放一些字符串之外,还可以存放图片,声频,文件等等,

例如我们在资源文件中添加一些图片资源,你可以将图片设置为在编译时链接或者嵌入到资源文件

而在程序代码里面,我们得到的将是System.Drawing.Bitmap类型的变量,至于添加其他类型的文件,得到的是什么,这里不多说了,大家自己探讨一下吧。

三. 语言设置

大家是否觉得如果每次都要去Internet选项来进行语言的选择会很麻烦,那么如何在自己的项目中设置要显示某一种语言呢?很简单,通常我们有三种途径。首先需要讲两个属性,一个是Culture,这个决定各种数据类型是如何组织,如数字与日期;另一个是UICulture,这个就决定了采用哪一种本地化资源,也就是使用哪种语言。详细请看MSDN~~~

1. 在具体页面进行设置

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>

如上,由于将UICulture和Culture属性都设置成auto,.NET2.0会根据你的Internet语言选项来确定加载哪些资源文件,当然你也可以将UICulture和Culture都设置成"en-us",那么这张页面所加载的就是英文的资源文件了。不过这样写很麻烦,每一张页面都要写,太繁琐了,于是我们可以在web.config里面设置我们所要的语言。

2. 在web.config里面进行设置

<configuration>
<system.web>
<globalization culture="en-us" uiCulture="en-us"/>
</system.web>
</configuration>

通过这样设置,项目中的全部页面就会自动加载英文资源文件了,但要注意的一点是,如果在页面中也设置了UICulture和Culture属性,那么它将覆盖web.config里面的设置。例如某张页面的这两个属性设为"zh-cn",那么这张页面将显示中文而不是英文。但还是觉得不好,因为页面要加载的语言文件都写死了,不灵活。

3. 在代码里面进行设置

using System.Globalization;
using System.Threading;

// Set the culture to the browser’s accept language
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

// Set the user interface culture to the browser’s accept language
Thread.CurrentThread.CurrentUICulture =
new CultureInfo(Request.UserLanguages[0]);

在程序代码里面进行设置,重载页面的InitializeCulture事件,注意在代码里的语言设置,会覆盖页面的HTML属性或者web.config的设置。上述的Request.UserLanguages[0]是获取Internet语言选项的第一种语言代码。

四. 解决方案

经过上述的初步和进一步的认识,相信大家已经理解了Localization的原理以及实现方法,但真要在我们的系统中实现多语言,实现本地化,我们应该怎样来架构呢?
通常我们为了减少重复代码,我们一般是建立一个基页面PageBase类,让所有的页面都继承基页面,在基页面重写InitializeCulture事件,而用户所选择的语言我们可以储存在Session,Cookie,QueryString或者.NET2.0提供的profile里面。 下面我们以存储在Session为例,构建我们的基页面,为简单起见,我只是通过一个按钮来选择语言,真正实现的时候可能会用一个下拉框:

主页面:default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Localization;

/// <summary>
/// 本地化
/// kenneth
/// 2006.07.16
/// </summary>
public partial class _Default : MyPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
this.Button2.Text = Resources.global.String1;
}
protected void Button2_Click(object sender, EventArgs e)
{
if (Session["PreferredCulture"].ToString().ToUpper() == "EN-US")
Session["PreferredCulture"]= "zh-cn";
else if (Session["PreferredCulture"].ToString().ToUpper() == "ZH-CN")
Session["PreferredCulture"] = "en-us";
//重定向页面
Response.Redirect(Request.Url.PathAndQuery);
}
}

基页面MyPageBase: myPageBase.cs

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

namespace Localization
{
/// <summary>
/// MyPageBase 基类实现本地化
/// kenneth
/// 2006.07.16
/// </summary>
public class MyPageBase : System.Web.UI.Page
{
protected override void InitializeCulture()
{
// 用Session来存储语言信息
if(Session["PreferredCulture"] == null)
Session["PreferredCulture"] = Request.UserLanguages[0];
string UserCulture = Session["PreferredCulture"].ToString();
if (UserCulture != "")
{
//根据Session的值重新绑定语言代码
Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
}
}

热心网友 时间:2024-11-17 05:54

安装个搜狗输入法。解决问题。或者在设置 --语言和键盘里设置
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 高手速进!!!有什么方法可以不花钱使用卡巴斯基吗? asp.net web服务应用程序问题 高手速进 c# 破晓传说结局是什么:剧透全解析 破晓传说结局解析:探讨破晓传说结局的深层含义 破晓传说结局解析:揭秘破晓传说结局的真相 ...骏马汽修(露笑科技股份有限公司斜对面)怎么坐公交 保时捷911车型历史 911车型历史 珠海天恒湾景在什么位置? 珠海天恒湾景容积率是多少? 在百家姓中,有'这'这个姓吗 珠海天恒湾景绿化率是多少? 洗米华涉七千亿案进展:他出庭否认有关指控,审判结果是否会迎来反转_百 ... 为什么葡萄酒开瓶久了会变酸?2019吉林公务员 没喝完的葡萄酒忘记盖上瓶盖,数天后会变酸。这是由于发生了( )。 机夹刀和整硬哪个好用 如何把两显示器设置成主显示器? 机夹式车刀结构形式 机夹式车刀有何优点 家里电脑下了传奇怎么玩不了? sm公司2016exo游戏 SM公司的游戏super star sm打开就白屏。听说需要谷歌市场和谷歌框架。但... 为什么苹果手机充电时触摸屏不能用呢? sm公司给exo制作的游戏名字是什么? ...触摸屏不灵敏怎么办(为什么苹果13充电时触屏不灵?) ap和监控在同个网络会不会影响ap的性能 苹果手机充电屏幕触摸不灵是怎么回事? 机油传感器维修站是什么意思? ...里的一首插曲叫什么?(就是开头一分多种的时候) 带鱼生活在海底多少米带鱼生活在海底几米的位置 电阻器R1和R2上分别标有“15欧1A”和“10欧1.2A”字样,将它们串联在... 现有R1、R2两个电阻,R1=10欧,R2=15欧,将它们并联后接入电池组的两端... 把5欧的电阻R1跟15欧的电阻R2和一个电流表串联起来接在电源上,电流表的... 有两电阻,R1=10欧,R2=15欧,它们并联后总电阻多少 定值电阻R1和R2分别标有10Ω 1A和20Ω 0.5A,现在把它们串联起来到电源... 电阻R1和R2并联后接入某电路,已知通过它们的电流分别为1A 黄鼠狼怎么防止 你好 我家鸡晚上在我家树上睡觉 可是黄鼠狼半夜上树吃他们 怎么办啊 黄鼠狼会不会爬上树? ...因为超速收到罚单,扣分3分。 神州租车收代办费500, 请问合理么?_百...