• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

多语言,资源文件的运用(转载)

     资源文件分两种,嵌入的资源文件和外部资源文件。第一种资源文件使用比较简单,直接选添加项目选资源文件就可以了,调用上也是非常简单。

      由于第一种资源文件已经嵌入了dll,所以一旦想修改,可能会比较麻烦,所以我个人比较倾向于第二种。此种方法是创建一个resx,譬如说是aaa.resx,再建一个中文版本aaa.zh-cn.resx,然后将这些resx放入App_GlobalResources文件夹,具体使用时用  HttpContext.GetGlobalResourceObject("aaa", key, culture) 来得到值。修改resx可以直接使用文本编辑器(修改文本类资源文件),也可以拖入vs再编辑。需要注意的是此文件夹下的任何文件变化都会引起session清空,就和web.config修改了一样的效果。

      HttpContext还有一个GetLocalResourceObject方法,这个主要是针对与页面级别的资源文件。

      MOSS站点中App_GlobalResources这个文件夹是在当应用程序建立时创建的,而App_GlobalResources文件夹里面的文件是从“C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG\Resources”中拷贝过来的,而且仅当应用程序建立时才把文件全部拷贝过来,
所以部署时候要注意不但要将我们的文件copy到moss的系统文件夹,也要拷入我们的站点相应文件夹。

App_GlobalResources文件夹中的资源文件是应用程序的全局资源,因而可以从任何页面中引用它。

              <asp:LabelRunat="server"Text="<$Resources:ResxFile,MyResName>"/>

App_LocalResources文件夹位于包含一些ASP.NET页面的文件夹下的一个子目录。该文件夹可以使用位于目录结构中高一级目录中的页面命名的.resx文件进行填充。假定父文件夹包含test.aspx,则可以在App_LocalResources文件夹中找到一些可用的资源文件如下:test.aspx.resx、test.aspx.it.resx和test.aspx.fr.resx。显然,上述文件中存储的资源仅对test.aspx页面有影响,因而只能在链接的页面中看见它们(可以使用它们)。

如何访问一个页面特有的资源呢?对于编程访问,可使用如下代码:

HttpContext.GetLocalResourceObject("/ProAspNet20/ResPage.aspx",

"PageResource1.Title")

第1个参数指出页面虚拟路径;第2个参数是资源名称。对于声明式访问,使用meta:ResourceKey属性。例如,

<asp:ButtonRunat="server"meta:resourcekey="ButtonResource1"/>

该声明将一个惟一的资源键与特定按钮实例关联。局部文件.resx包含prefix.name形式的条目,其中prefix是资源键,而name是绑定控件上的属性名。为了赋予按钮一个本地化标题(Text属性),只要在资源文件中创建一个ButtonResource1.Text条目即可。

局部和全局资源文件夹中存在的资源文件都被编译,以创建附属程序集的类。最后的结果是开发人员创建.resx文件,并测试该页面。而ASP.NET编译机制会完成其余工作。

 

 

 

 

在as.p.net程序中资源文件(Resource)分为两种,一种是全局资源(GlobalResource),还一种是本地资源(LocalResource)

我们做一个Test1.aspx页面来测试,这个页面上只有一个Label  lblHello。

1.使用GlobalResource

   添加GlobalResource。添加GlobalResource文件夹,在下面添加资源文件,比如aaa.resx,添加字符串"strhello","你好"。 再添加一个aaa.en-us.resx,添加字符串"strhello","Hello"。

   读取GlobalResource。可以通过HttpContext.GetGlobalResourceObject("aaa", "strHello");

 

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("zh-cn");//用英文的话换成"en-us"
Thread.CurrentThread.CurrentUICulture = culture;//设置当前语言区域
object obj = HttpContext.GetGlobalResourceObject("aaa", "strHello");
if (obj != null)
{
    lblHello.Text = obj.ToString();
}
//lblHello.Text = Resources.aaa.strHello; //也可以这样读取

 

.使用LocalResource

   添加LocalResource。先添加一个App_LocalResources文件夹,然后添加一个和页面名称一样的.resx文件,比如页面叫“Test1.aspx”,那在App_LocalResources文件夹下面建一个Test1.aspx.resx,里面加一条记录"strhello","你好"。 Test1.aspx.en-us.resx加记录"strhello","Hello"。

    读取LocalResource:

 

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("zh-cn");//用英文的话换成"en-us"
Thread.CurrentThread.CurrentUICulture = culture;//设置当前语言区域
object obj = HttpContext.GetLocalResourceObject("~/Test1.aspx", "strHello");
//object obj = GetLocalResourceObject("strHello");//也可以直接这样读取
if (obj != null)
{
    lblHello.Text = obj.ToString();
}
posted @ 2010-03-11 16:30  不若相忘于江湖  阅读(659)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3