zoukankan      html  css  js  c++  java
  • 资源文件

    App_GlobalResources:App_LocalResources 收藏 如果您创建的网页将由使用不同语言的用户阅读,则必须为这些读者提供用他们自己的语言查看网页的方法。一种方法是分别用各语言重新创建页面,但这种方法可能需要大量工作量、容易出错并且在更改原始页时很难维护。 ASP.NET 为您提供了一种方法,使用这种方法创建的页可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。 
    资源文件
    在.net开发中资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。
    NOTE: 虽然资源可以保护图片、音频等格式的文件,但需要注意的是在资源文件中只保存键/值对,由它指向特定的资源。
    <data name="Image1" type="System.Resources.ResXFileRef, System.Windows.Forms">    <value>..\Resources\Image1.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value></data>
    <data name="URL" xml:space="preserve">    <value>www.cnbooku.com</value> </data>    
    


            ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。 您需要为每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;
        本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。 在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。 
    AppFolder_labels.resx 基资源文件。该文件是默认或后备资源文件,也就是说如果找不到指定的区域文件则默认加载基资源文件。
    AppFolder_labels.en-us.resx 美国英语的资源文件。
    AppFolder_labels.zh-cn.resx 简体中文的资源文件。
    AppFolder_labels.de.resx 德语的资源文件。 
    在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是德语,则 ASP.NET 使用 AppFolder_labels.de.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 AppFolder_labels.resx。
     为 ASP.NET 网站创建资源文件   
       在 ASP.NET 中,可以创建具有不同范围的资源文件。可以创建全局资源文件,这意味着可以从位于网站中的任意页或代码读取这些资源文件。也可以创建本地资源文件,这些文件存储单个 ASP.NET 网页(.aspx 文件)的资源。 
    全局资源文件
        将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。如果在上面的资源文件中创建字符资源 key = URL_BAODR 则在代码中可以如下法调用。
            Resources.AppFolder_labels.URL_BAODR 其中 Resources 是ASP.NET 资源文件的名称空间, AppFolder_labels 是 ASP.NET 自动根据资源文件创建的类, URL_BAODR 是key名表现为类中的属性。 
    本地资源文件
        本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。  例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件: 
    Default.aspx.resx 默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
    Default.aspx.es.resx 西班牙语的资源文件,不包含区域性信息。
    Default.aspx.es-mx.resx专用于西班牙语(墨西哥)的资源文件。
            文件的基名称与页文件名相同,后跟语言和区域性名称,最后以扩展名 .resx 结尾。 
    在全局和本地资源文件之间选择
       在 Web 应用程序中,可以任意组合使用全局和本地资源文件。通常情况下,当您希望在各页之间共享资源时,应向全局资源文件添加这些资源。全局资源文件中的资源还是强类型的,用于以编程方式访问。
        缺点是:但如果将所有本地化资源都存储在全局资源文件中,则这些文件会变得很大。此外,如果多个开发人员要处理不同的页但在同一个资源文件中工作时,全局资源文件也会更难于管理。
         本地资源文件使得单个 ASP.NET 网页的资源比较容易管理,但您不能在各页之间共享资源。此外,如果有许多页必须本地化为多种语言,则可能会创建大量本地资源文件。如果站点是具有许多文件夹和使用多种语言的大型站点,则使用本地资源可能快速地在应用程序域中扩展程序集的数量。
        在对默认资源文件进行更改时,无论它是本地资源文件还是全局资源文件,ASP.NET 都重新编译资源并重新启动 ASP.NET 应用程序,这可能会影响站点的整体性能。添加附属资源文件将不会导致重新编译资源,但 ASP.NET 应用程序仍将重新启动。 
    注意:只有全局资源文件支持链接资源。
    Asp.net多语言中的App_GlobalResources和LocalResources文件夹区别App_GlobalResources的文件是全局文件资源,可以在任何页面通过Resources直接使用这里面的资源文件。示例如下:
    1、在App_GlobalResources中增加一个文件叫做ResourceTest.resx
    2、在ResourceTest.resx中增加两个项 PageTitle 值为“中国加油!” LabelText 值为“奥运顺利!”
    3、打开aspx页面的,然后在Page_Load方法中可以直接这样使用

    protected void Page_Load(object sender, EventArgs e)       {           this.Title = Resources.ResourceTest.PageTitle;           Label1.Text = Resources.ResourceTest.LabelText;       }
    

    这里的ResouceTest就是那个资源文件的文件名,在VS中,可以自动感知出ResourceTest。
    直接在页面的控件中的使用方法是:
    <asp:Label ID="Label1" runat="server" Text="<%$Resources:ResourceTest,LabelText %>" ></asp:Label>
    如果使用这种方式绑定了App_GlobalResources,那么就不能再绑定App_LocalResources中的资源文件了
    如果要支持英文,就在App_GlobalResources中增加一个文件,文件命名格式是:ResourcesTest.en-us.resx,在页面的使用方式不变。当你用浏览器访问时,系统会自动侦测出你的浏览器设置的默认语言,然后自动调用不同的资源包来呈现出来。
    除了上面所谈到的方式可以直接使用资源包,还可以通过HttpContext.GetGlobalResourcesObject来获取资源包的内容。
    HttpContext.GetGlobalResourceObject(resxFile, MyResName)
    HttpContext.GetGlobalResourceObject(resxFile, MyResName,CurrentCulture)这个方法第一个参数是资源文件名,第二个参数是要检索的键值。调用例子为:
    string GetGlobalResources(string resxFile,string resxKey)
    {
    string resxValue=(string)HttpContext.GetGlobalResourceObject(resxFile, resxKey)
    if(string.IsNullOrEmpty(resxValue)
    {
    return string.Empty;
    }
    return resxValue;
    }
    App_LocalResources文件夹,这个文件夹中放的是页面的资源文件,这些资源文件和每个Aspx页面对应。比如我在网站项目下添加了一个Default.aspx文件,在设计VS的模式下,选择工具“生成本地资源” 就会自动在App_LocalResources中生成一个名字为Default.aspx.resx的资源文件。
    编程访问的方式是:
    HttpContext.GetLocalResourceObject("resxFile","resxKey")
    直接在控件中的访问方式:
    <asp:Label ID="Label1" runat="server" meta.:resourcekey="LabelText"></asp:Label>
    怎样读取App_LocalResources里某一资源文件的所有key,value值?   
    public static void Main(){// Create a ResourceReader for the file items.resources.ResourceReader rr = new ResourceReader("items.resources");

    // Create an IDictionaryEnumerator to iterate through the resources.IDictionaryEnumerator id = rr.GetEnumerator();
    // Iterate through the resources and display the contents to the console.while(id.MoveNext())Console.WriteLine("\n[{0}] \t{1}", id.Key, id.Value);
    rr.Close();
    }  


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chz_cslg/archive/2010/09/03/5861644.aspx

  • 相关阅读:
    4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
    3.操作系统简单介绍 操作系统发展历史 批处理分时系统 操作系统是什么 操作系统对文件的抽象 进程 虚拟内存是什么 操作系统作用 操作系统功能
    2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机
    1.计算机发展阶段 计算机发展历史 机械式计算机 机电式计算机 电子计算机 逻辑电路与计算机 二极管 电子管 晶体管 硅 门电路 计算机 电磁学计算机二进制
    如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇到错误怎么办
    eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete This client is too old to work with the working copy at
    java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
    windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤
    批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
    不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux
  • 原文地址:https://www.cnblogs.com/sishahu/p/2048634.html
Copyright © 2011-2022 走看看