1. 建立名为 LocProject 的 ASP.NET Web 应用程序。如需详细说明,请参阅建立 Web 项目。
注意:程序中会使用项目名称 LocProject
2. 在项目中,加入新项(Add New Item...)
3. 选择 "资源文件"(Assembly Resource File) 。文件名为 strings.resx (名称中间不能有".",否则,容易错误)。资源文件 strings.resx 将会包含英文的原有资源。每当应用程序找不到更适合 UI 文化特性的资源,就会存取这些资源。
文件将加入至项目中,并在 XML 设计工具 中打开。
4. 在 "数据表"(Data Tabls:) 列表中,选择 "data"。
5. 在 "数据" (Data:) 页面中,增加2行数据 txtSearch 和 txtWelcome, 如下:
name value
txtSearch Search for the following text:
txtWelcome Welcome to Localization!
6. 再重复1次步骤 2 到 5,建立另外一个命名为 strings.zh-CHS.resx.resx 的资料文件,数据如下:
name value
txtSearch 搜索字符串:
txtWelcome 欢迎本地化!
B. 如何存取资源
1. 加入 System.Resources 和 System.Globalization 命名空间。以下代码如下:
using System.Resources
using System.Globalization
namespace LocProject
2. 声明 ResourceManager 类的变量 LocRM
// C#
namespace LocProject_CS
{
public class WebForm1 : System.Web.UI.Page
{
protected ResourceManager LocRM
3. 将以下代码加入到 WebForm1 方法 Page_Load 中,创建 ResourceManager 类的实例。ResourceManager 构造函数使用两个参数。第一个是资源文件的根名称,也就是不含文化特性和 .resx 后缀的资源文件名称。第二个参数是主要组件。
// C#
LocRM= new ResourceManager("LocProject.strings", typeof(WebForm1).Assembly)
注意:如果您没有将项目命名为 LocProject,就应该修改资源文件的根名称。
C. 如何显示页面中的静态资源字符串
将代码放在 <form>和 </form>标记 (Tag) 之间:
<h3><%=LocRM.GetString("txtWelcome")%></h3>
注意: ResourceManager 中区分大小写。
D. 如何将资源字符串赋给控件的属性
1. 加入代码:
//C#
Label1.Text=LocRM.GetString("txtSearch")
Label2.Text=LocRM.GetString("txtWelcome")
2. 增加 System.Threading 命名空间。
// C#
using System.Threading
3. 将下列代码加入 Page_Load 方法的起始处,指定 Web Form 网页应按照浏览器的 Accept-Language 标题中所指定之文化特性来显示资源和格式。这段代码相当重要,因为如果没有的话,您的 Web 应用程序就会按照服务器的文化特定设置,而这可能对 Web Form 网页的远端使用者并不适用。
// C#
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0])
编译、执行就可以看到结果。控制面板\区域选项 中,如果选择:中文(中国),就会显示中文网页;如果选择其它,则会显示英文网页。
ASP.NET 中英文切换(C#版)2011-04-16 22:081.本地化(通过浏览器中 工具--选项--语言 来实现国际化)
实现过程:
* 首先在项目中添加ASP.NET文件夹[App_LocalResources]
* 新建资源文件(资源文件名称格式:"页面名称加后缀.resx")
* 资源文件内容例:
名称 值
ButtonResource1.Text 确定
* 页面上获取资源文件的值 语法为: meta:resourcekey="资源文件中key值"
例:<asp:Button ID="Button" runat="server" meta:resourcekey="ButtonResource1"></asp:Button>
* 在页面上page标签内加上UICulture="auto" 表示:自动识别浏览器语言
2.全球化
(可通过代码直接更改)
实现过程:
* 首先添加ASP.NET文件[App_GlobalResources]
* 新建资源文件名字(格式:"名称.resx")
* 资源文件与本地化建资源文件一样(名称Nation)
名称 值
li2 确定
* 重写InitializeCulture()方法
方法内容如下:
protected override void InitializeCulture()
{
//此currentculture来自default.aspx页面上两个超链接的链接地址,见html部分
string language = Request.QueryString["currentculture"]
if (!String.IsNullOrEmpty(language ))
{
//Nation - 决定了采用哪一种本地化资源,也就是使用哪种语言
//Culture - 决定各种数据类型是如何组织,如数字与日期
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language )
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language )
}
}
* 页面上获取资源文件的值 语法为:<%$ Resources: 资源文件名,key名称 %>
例:<asp:Button ID="Button1" runat="server" Text="<%$ Resources: Nation,li2 %>" />
* 页面上超链接
<a href="?currentculture=zh-cn">中文(中国)</a>
<a href="?currentculture=en-us">English(USA)</a>
上面个这个也是我在网站上找到的 我们这里中英文都是套两次程序 我也没用过用全局应用程序来做中英文转换 ...
做两个隐藏table,一个放中文版,一个放英文版,中文版中设置“英文版”点击显示英文版table同时隐藏中文版table,英文版中同里反相操作就可以了答案补充
我说的是用JAVASCRIPT写,在什么环境下都能执行,你放多少中语言就做多少隐藏层,每次显示一个出来就行了,不跳转页面,实时显示,你可以去网上找这方面的例子,很多,改一下你就可以实现你的要求了