ASP.NET 2.0及以上的开发平台,为全球化本地化应用程序提供了工具,而且实现起来非常简单。以下内容是使用c#,按照帮助一步步做的,将为初学者提供详细的实现步骤。

一 几个必要概念
 (一) 支持全球化
  由于Internet使得软件更容易跨越国家边界,所以全球化也就有了格外的重要。

  1. 全球化
  全球化是为本地化准备应用程序的过程。这一步包括确定应用程序中所有能够本地化的资源,并从可执行代码中分离车它们,一方便对它们进行修改。

  2. 本地化能力
  在此准备过程的本地化能力阶段,需要检查确定转化该应用程序是否真的不需要改变程序代码。

  3. 本地化
  再后,在此准备过程的本地化阶段,为新的区域性定制该应用程序。

 (二) 区域性

  1. 理解区域性
  .NET框架通过通过指定某个区域性来标识本地化内容的目标用户。区域性是比语言更为精确的一个概念。例如:美国英语和英国英语在.NET框架中就是两个不同的区域性。要完全本地化某个应用程序,就必须依靠区域性而不能依靠语言。

  2. 区域性代码
  .NET框架通过一组缩写词来表示区域性。每个缩写词是由区域性代码后跟一个或多个次区域性代码组成。区域性代码均为小写字母,而次区域性代码则为大写字母。例如:
  ·ni-BE 标识荷兰(比利时)区域性。方便生活在比利时的荷兰用户使用。
  ·sr-SP-Latn 这是多个次区域性的示例,标识在塞尔维亚以拉丁字母蛇蝎的塞尔维亚语。
  ·es 标识西班牙区域性。这是个非特定区域性,也就是不再指定次区域性。

 (三) 区域性的属性和方法

  1. CurrentUICulture和CurrentCulture之间的区别
  两者之间的区别在于.NET框架对他们的使用。CurrentUICulture属性用于从适当的文件检索区域性特定的资源(最重要的是用户界面文本)。CurrentCulture属性用于设置日期、时间、货币和数字格式,以及其他区域性的功能,包括排序顺序、字符串比较规则和包装规则等。

  在没有看完整个本文的情况下,以下示例可以不看,以免混淆概念。
  2. 可以通过使用System.Globallization命名空间中的CultureInfo类,简单更改线程的区域性。

  具体改变一个线程的区域性
  

using System;
using System.Globalization;
using System.Threading;
class test
{public static void main(){Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");Console.WriteLine(CultureInfo.CurrentUICulture.Name);}
}

二 创建文件系统网站
  打开 vs2005, 在菜单“文件”--“新建网站”,在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。在“位置”框中输入要保存网站页面的文件夹的名称。 例如,键入文件夹名“C:\WebSites”。在“语言”列表中,单击您想使用的编程语言c#。单击“确定”。系统(Visual Web Developer) 创建该文件夹和一个名为 Default.aspx 的新页。

三 通过 ASP.NET 进行隐式本地化

 (一) 自动生成资源文件
  
  单击Default.aspx 页面底下的“设计” 或 “源”,可在 “设计”视图 和 “HTML源代码”视图 之间来回切换。

  1. 切换到“设计”视图。

  在“工具箱”中,从“标准”区域中将一个 Button控件拖动到页上。单击设计器图面或控件。
  在菜单上“工具”--“生成本地资源”,系统将在解决方案中自动创建一个 App_LocalResources 新文件夹,并在其中自动对应页面文件名称创建一个 Default.aspx.resx 新文件。使用隐式本地化时,资源文件名取决于各个页的名称。

  2. 切换到“源”视图。
  查看对控件声明的更改,系统已向控件添加了一个属性,以从新创建的资源文件检索其值。例如,Button 控件的标记具有新的 meta:resourcekey 属性。
  

<asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="Button" />

  3. 浏览器向 Web 服务器发送区域性请求
  当浏览器向 Web 服务器发送请求时,该请求可包含有关当前语言和区域性的信息。例如,一个浏览器可能会发送字符串 "en-us" 以指示它已设置为使用美国英语;而另一个浏览器可能发送字符串 "zh-cn" 以指示它已设置为使用中国中文。

  4. 回退区域性的资源文件
  该资源文件用作所有请求的默认资源文件。(它是回退区域性的资源文件。)如果浏览器未指定任何区域性,或者浏览器请求包含不支持的语言或区域性,则会从此默认文件提取资源值。

  5.使用资源编辑器编辑资源文件
  现在已创建了资源文件,您可以使用资源编辑器将本地化后的文本放入该文件中。
  在解决方案资源管理器中打开 Default.aspx.resx
  在资源编辑器的“值”下,列出了页中放置的每个控件的“Text”属性。在此处更改值会导致更改默认区域性的值。 将“ButtonResource1.Text”设置为 local-auto-english。 保存该文件。

  对页进行测试,按 Ctrl+F5 运行该页,就会看到所做的改变。

 (二) 添加其他区域性

  每种语言和区域性的组合均需要有唯一的资源文件。若要添加其他区域性,可以使用默认文件作为起点。可以为不同的区域性和区域设置创建资源文件,方法是创建新的资源文件,并在文件名中包含 ISO 语言代码(如 zh-cn、en-us、fr-ca 和 en-gb)。这些 ISO 代码位于页名和 .resx 文件扩展名之间,如 Default.aspx.en-us.resx。若要指定非区域性特定的语言,则应删除国家/地区代码,例如指定法语时应使用文件名 Default.aspx.fr.resx。

  1.
  在解决方案资源管理器中,右击 Default.aspx.resx 文件,并单击“复制”。
  右击 App_LocalResources 文件夹,然后单击“粘贴”。
  右击“副本 Default.aspx.resx”文件,单击“重命名”,然后键入“Default.aspx.zh-CN.resx”。

  仿上,再建立一个 Default.aspx.en-US.resx 文件。双击打开以上两者,将 Button控件的“ButtonResource1.Text”分别设置为  本地化-可选修改-中文  和 local-modify-english 。并分别保存文件。

  结果如下:
  

文件Default.aspx.zh-CN.resx的内容
名称
ButtonResource1.Text 本地化-可选修改-中文
文件Default.aspx.en-US.resx的内容
名称
ButtonResource1.Text local-modify-english

  对页进行测试,按 CTRL+F5 运行页。按钮将显示为: 本地-修改-中文

  2. 用备用语言设置进行测试
  若要查看 ASP.NET 是否在使用这个新的资源文件,必须先将浏览器设置更改为请求所需的区域性。

  更改IE浏览器的语言设置,在 Microsoft Internet Explorer 中,单击菜单“工具”--“Internet 选项”。
  单击下部的“语言”。在“语言首选项”对话框中单击“添加”。
  在“添加语言”对话框的“语言”下,单击“英语(美国)[en-us]”,然后单击“确定”。
  在“语言首选项”对话框的“语言”下,单击“英语(美国)[en-us]”,单击“上移”,直到首位,再单击“确定”。
  Internet Explorer 现在设置为将 en-us 作为所有请求的语言设置传递。在 Default.aspx 页中将区域性设置为 auto 时,ASP.NET 会试图根据语言和区域性首选项定位资源文件及其相应值以生成页。

  对页进行测试,按 CTRL+F5 运行页。按钮将显示为: local-modify-english

  3. 在文件web.config中的语言选择

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

  这里文件web.config中的设置,将覆盖IE浏览其中的设置,而且为所有的网页所共有。   

  4. 单独页面的语言选择
  在单独页面的语言选择,使用指令 <%@ Page  Culture="zh-CN"   UICulture="zh-CN" %>
  它将覆盖IE浏览器,以及文件web.config中的设置,为自己所用。
  例如: UICulture="zh-CN" ,不管文件web.config和IE的语言如何设置,都将显示中文的信息。

  而当指令 <%@ Page 中的语言设置为 UICulture="auto"时,将先接受文件web.config,再接受IE的语言设置顺序。

  5.Culture和UICulture区别
  Culture主要针对有关日期/货币等语言内部的,  而 UICulture针对用户界面的安钮之类的控件显示。

四 使用显式本地化

  在上面部分,您已通过使用 ASP.NET 隐式本地化让控件显示本地化的文本。您生成了一个包含属性 (Property) 值的资源文件,并且在该过程中为每个控件添加了一个属性 (Attribute),该属性 (Attribute) 指示控件从资源文件填充其属性 (Property) 值(如果有)。隐式本地化自动工作,也就是说,您不需要逐个指定每个属性从资源文件读取信息的方式。
  但是,有时可能需要对属性的设置方式进行更直接的控制。要达到这个目的,不应使用隐式本地化,而应使用显式本地化。通过显式本地化,可以使用指向资源文件的表达式设置属性值。运行页时,会对表达式进行计算,从指定的资源文件中读取该值,然后使用该值设置属性。
  如果除了控件和标签外还需要本地化大量的文本或自定义消息,则显式本地化十分有用。例如,您可以为电子商务站点开发一系列本地化的欢迎消息和感谢消息,然后使用显式声明性表达式将此文本放置在页上。此外,显式本地化允许维护一个本地化的资源文件集,而不是为每个页单独维护一个文件集。

  1. 建立任意资源名称 
  在本部分中,您将手动创建资源文件,然后使用 ASP.NET 声明性表达式语法引用这些文件。您将为一个简单的感谢消息创建一个资源文件。与使用设计器时不同,此时不需要为每个 ASP.NET 页创建一个单独的资源文件。
  为了好记,将资源文件的基名称,写为我的名称 WuchaoText ,将来是区别资源的类名。对于要本地化的每种语言,都将另外创建一个文件,并在文件名中包含相应的语言代码(有时可能还有区域性代码)。例如,对于中国中文,将创建名为 WuchaoText.zh-CN.resx 的文件。对于美国英语,将创建名为 WuchaoText.en-US.resx 的文件。这两个文件都将放在 Web 应用程序的 Resources 目录下。与前面介绍的隐式示例不同,您无需为每个 .aspx 页维护一个资源文件;相反,您可为支持的每种语言或区域性维护一系列文件。

  2. 创建全局资源文件
  在解决方案资源管理器中,右击网站的根目录,单击“添加 ASP.NET 文件夹”,然后单击“App_GlobalResources”。

  右击“App_GlobalResources”文件夹,然后单击“添加新项”。
  在“Visual Studio 已安装的模板”之下单击“资源文件”。
  在“名称”框中,键入 WuchaoText.resx,然后单击“添加”。
  WuchaoText.resx 文件将充当回退区域性的资源。
  再创建两个 .resx 文件,并将其命名为 WuchaoText.zh-CN.resx 和  WuchaoText.en-US.resx 。
  双击打开以上两个 .resx 文件。
  在“名称”列的第一行中都键入 g_AddStr。
  而在“值”列的第一行中,分别键入  全球化-必须手工添加-中文  和 global-must-hand-add-english。

  结果如下:

文件WuchaoText.zh-CN.resx的内容
名称
g_AddStr 全球化-必须手工添加-中文
文件WuchaoText.en-US.resx的内容
名称
g_AddStr global-must-hand-add-english

  保存两个文件并将其关闭。

  注意
  若要插入带锐音符(如 í)的字母,请在打开数字锁定的同时使用数字键盘键入 Alt+0237。
  现在已经为名为 g_AddStr 的资源创建了两个值。ASP.NET 将根据浏览器设置的语言从相应的资源文件中读取值。
  现在已创建资源文件,您可以返回到页,并添加引用该资源的控件。

  3. 向页添加 Label 控件

  切换到页面 Default.aspx,然后切换到“设计”视图。
  从“工具箱”中将一个 Label 控件拖动到页上。
  右击该 Label 控件,单击“属性”,然后找到 数据 (Expressions),单击其右侧框中的省略号 (…) 按钮。将出现“表达式”对话框。
  在“可绑定属性”列表中单击“Text”。
  在“表达式类型”列表中选择资源“Resources”。
  在“表达式属性”下,将类名键“ClassKey”设置为 WuchaoText ,并将资源键“ResourceKey”选择设置为 g_AddStr。
  单击“确定”。
  切换到“源”视图。
  标签的文本属性现在具有一个显式表达式,说明将从其中检索要选择的资源和键的基文件。

  

<asp:Label ID="Label1" Runat="server" Text="<%$ Resources:WuchaoText, g_AddStr %>">

  注意
  WuchaoText 属性不具有语言指示符、区域性指示符或 .resx 扩展名,因为它不是实际的文件名。实际上,WuchaoText 表示基资源类。ASP.NET 将根据浏览器发送的区域性,从文件名中包含相应的语言或区域性代码的文件中选择资源,文件名可能类似 WuchaoText.zh-CN.resx 和  WuchaoText.en-US.resx,或者,如果未找到匹配的语言,则为 WuchaoText.resx。
  对页进行测试,按 Ctrl+F5 运行该页。测试期间,会多次更改浏览器的语言。在资源编辑器中提供的不同版本的文本将显示为 Label 控件的文本。

五  网页HTML源代码

  1. 默认创建网页的第一行
  

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

  2. 创建本地资源后网页的第一行
  

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

  3.最终的网页源代码为:网页强制按简体中文显示

<%@ Page Language="C#"   CodeFile="Default.aspx.cs" Inherits="_Default" Culture="zh-CN" meta:resourcekey="PageResource1" UICulture="zh-CN" %><!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" /><asp:Label ID="Label1" runat="server" Text="<%$ Resources:WuchaoText, g_AddStr %>"></asp:Label></div></form>
</body>
</html>

转载于:https://www.cnblogs.com/wolfocme110/p/5139335.html

ASP.NET全球化与本地化 c#多国语言的支持 (项目支持多国语言的开发)相关推荐

  1. ASP.NET2.0中的全球化与本地化UICulture,Culture

    ASP.NET2.0中的全球化与本地化UICulture,Culture 来源:转载 日期:2007-2-28 14:59:01 阅读:324 评论:0   一.简介 全球化和本地化是每一位开发者在创 ...

  2. Asp.Net Core 混合全球化与本地化支持

    前言 最近的新型冠状病毒流行让很多人主动在家隔离,希望疫情能快点消退.武汉加油,中国必胜! Asp.Net Core 提供了内置的网站国际化(全球化与本地化)支持,微软还内置了基于 resx 资源字符 ...

  3. 从Asp.net实现资源全球化和本地化

    本文将从Asp.net实现资源全球化和本地化的基本概念入手,阐述在Asp.net1.1和Asp.net2.0中实现全球化和本地化的步骤.方法. 一.基本概念 1.为什么要实现资源的本地化? 我们的站点 ...

  4. ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法

    适用于: Microsoft ASP.NET 2.0 Microsoft Visual Studio .NET Microsoft Visual Studio 2005 本地化 摘要:随着越来越多的公 ...

  5. 还是有人分不清:国际化、全球化、本地化

    咱们先说三个概念:国际化.全球化.本地化 (1)国际化 如时区.语言.币种-,这是国际化的范畴,这个,中外工具差距并不大. (2)全球化 在互联网电子商务发展之前,企业要进行跨国经营.全球经营,采取的 ...

  6. 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制...

    Swashbuckle.AspNetCore3.0 介绍 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具.直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探 ...

  7. 林语堂、陆谷孙、薄冰、许国璋、何其莘等十位国宝级语言大师谈英语学习方法

    林语堂.陆谷孙.薄冰.许国璋.何其莘等十位国宝级语言大师谈英语学习方法. 林语堂.陆谷孙.薄冰.许国璋.何其莘等十位国宝级语言大师谈英语学习方法.

  8. 国行switch服务器在维护中,国行Switch是否锁区锁服?你关心的问题都将在这里解答...

    国行Nintendo Switch已于今日(12月10日)正式发售,我们已经拿到国行Switch,并对一些备受关注的问题进行了验证,要点如下: • 国行Switch可以玩海外版卡带,海外版游戏也可以正 ...

  9. 一个岔路口分别通向诚实国和说谎国。 来了两个人,已知一个是诚实国的,另一个是说谎国的。 诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国, 但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(

    一个岔路口分别通向诚实国和说谎国. 来了两个人,已知一个是诚实国的,另一个是说谎国的. 诚实国永远说实话,说谎国永远说谎话.现在你要去说谎国, 但不知道应该走哪条路,需要问这两个人.请问应该怎么问?( ...

最新文章

  1. 列出这周开发工作时间及内容,可以发表各种感想和这周阅读内容。
  2. oracle管理员是sys吗,Oracle管理员sys,system登录无权限的坑
  3. Python(4):条件控制
  4. Qt-QMessageBox用法详解
  5. 百度SEO站群织梦响应式博客资讯网模板
  6. css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)
  7. 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法
  8. SpringBoot2.1.5(23)---SpringBoot 开发WEB应用
  9. 资深前端开发工程师分享:关于前端学习路线的一些建议
  10. mysql begin rollback_事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
  11. Unity3D之NGUI基础1:NGUI插件介绍
  12. 201521123004 《Java程序设计》第2周学习总结
  13. python打印tensor_如何在TensorFlow中打印SparseTensor内容?
  14. Android 存储学习之使用SharedPreference保存文件
  15. 基于ARM的嵌入式Linux应用程序开发
  16. 【渝粤教育】电大中专跨境电子商务理论与实务_1作业 题库
  17. 教你利用铁威马NAS为电脑存储空间扩容
  18. cad角度怎么画_女孩都喜欢的公主抱怎么画?各种不同角度公主抱漫画素材绘画教程...
  19. 更换浏览器标题栏图标
  20. 嵌入式系统设计(三):Vim编辑器的学习

热门文章

  1. 个人计算机用户隐私保护全接触(2)
  2. MySQL02-升级
  3. 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
  4. es6 ... 添加属性_如何在10分钟内免费将HTTPS添加到您的网站,以及为什么您现在不止需要这样做......
  5. javascript迭代_探索JavaScript迭代
  6. 输入vue ui没反应
  7. UI设计的发展前景怎么样?
  8. 什么是整型?Python整型详细介绍
  9. ovirt官方安装文档 附录F
  10. OpenCV——使用ROI进行图像切割