asp.net 2.0 语言包 全球化

新建一个测试站点添加 一个页面 test.aspx 在页面上拉出一个label控件命名为了 labTest
添加两个特殊的文件夹App_GlobalResources App_LocalResources 
右键单击App_LocalResources 添加一个新的文件 命名为 test.aspx.resx 打开test.aspx.resx 
添加一条新的记录 名称:labTest 值:测试
复制test.aspx.resx 文件。并命名成 test.aspx.en.resx (英文 en) 修改 labelTest的值为:test
接 下来在 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Culture="auto:zh-cn" UICulture="auto:zh-cn"  Inherits="test" %>
加上 Culture 和 UICulture (测试发现 Culture没有起作用可以删除)

打开labTest属性框。 找到 dataExpression Expression type 选择 resource ,resourceKey选择 labTest
查看这个页面。我们可以看到 测试 两个字 
接下来。internet选项 语言 添加一个新的语言 en 并把它放在第一位。。重新刷新页面你可以看到 test
注意: app_localresources 文件夹里的资源文件的命名 文件名称."语言代号".resx 并且需要一个默认的没有语言代号的

我们继续试一下 App_GlobalResources(全局资源) 新建一个 Resource.ascx 添加 labTest2 值:测试2
复制出一个 Resource.en.ascx 值为  Test2 
在test.aspx里再拉出一个 label 选取 data expression 继续选择 resource 把Resource(刚才取的名称)放入 classkey 接下来就可以选择
resourceKey 为 labTest2

测试。你就可以看到你想要的了.

如何自己去控制 语言呢。我们只要重写 InitializeCulture() 并在里面设置  System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("name");

 protected override void InitializeCulture()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("name");
        //base.InitializeCulture();
    }

就可以了

这个时候也许会你问哪一些我们需要动态提示绑定的应该什么处理呢。
我们发现也很简单。
原来可以直接通过
 this.Title = Resources.Resource.labTest2; 这样的方式来获得 Resource(同样为你资源的名字)
 

this.Title =HttpContext.GetLocalResourceObject("~/ActivityList.aspx", "Title").ToString(); 这样也可以获取

posted @ 2018-08-10 21:46  micwin  阅读(167)  评论(0编辑  收藏  举报