[导入]:本地化 Web 窗体页(来自CSDN)

当本地化 Web 窗体页时,Visual Studio 项目系统不自动生成资源文件。您必须手动创建和编辑 XML 资源文件。本演练主题说明如何添加资源文件模板,然后用 XML 设计器编辑该模板以创建英语资源、德语资源和在奥地利讲的德语资源。本主题还讨论如何编写代码以访问这些资源。

您还可以将文本文件转换为资源文件。有关更多信息,请参见文本文件格式中的资源资源文件生成器 (Resgen.exe)

手动创建和编辑资源文件

  1. 创建名为“LocProject”的新 ASP.NET Web 应用程序。有关详细信息,请参见创建 Web 项目
    注意   必须将项目命名为“LocProject”;本演练中后面的一些代码要求该项目必须具有此名称。
  2. 在“项目”菜单上单击“添加新项”。
  3. 在“模板”框中选择“程序集资源文件”模板。在“名称”框中键入文件名“strings.resx”。strings.resx 文件将包含英语的后备资源。每当应用程序找不到更适合于 UI 区域性的资源时,就将访问这些资源。

    该文件被添加到解决方案资源管理器中的项目中,并自动在 XML 设计器中以“数据”视图形式打开。

  4. 在“数据表”窗格中选择“data”。
  5. 在“数据”窗格中,单击空行,并在“name”列中输入“txtSearch”,在“value”列中输入“Search for the following text:”。

    不需要为字符串指定 typemimetype;它们用于对象。类型说明符保持所保存对象的数据类型。如果对象由二进制数据组成,则 MIME 类型说明符保持所存储的二进制信息的基类型 (base64)。

  6. 单击另一个空行,并在“name”列中输入“txtWelcome”,在“value”列中输入“Welcome to Localization!”。
  7. 在“文件”菜单中,单击“保存 strings.resx”。
  8. 再执行步骤 2-7 两次以分别创建两个名为“strings.de.resx”和“strings.de-AT.resx”的资源文件,文件中包含在下表中指定的字符串资源。strings.de.resx 文件将包含作为非特定语言的德语资源,即它们适用于讲德语的任何区域。strings.de-AT.resx 文件将包含特定于奥地利的德语资源。
    资源文件名 name value
    strings.de.resx txtSearch Nach dem folgenden Text suchen:
    strings.de.resx txtWelcome Willkommen zur Lokalisierung!
    strings.de-AT.resx txtWelcome Grüßt's euch zur ASP.NET Lokalisierung!

    您可以按照多种方式输入重音符:

    • 从本帮助主题中复制并粘贴
    • 使用德语键盘布局
    • 使用字符映射应用程序 charmap.exe
    • 使用 Windows 2000 和 Windows XP 中的 Windows 屏上键盘

    有关使用不同键盘布局、字符映射应用程序或屏上键盘的详细信息,请参见 Windows 帮助。

访问资源

  1. 在代码编辑器中,在代码模块的开始处导入 System.ResourcesSystem.Globalization 命名空间。在 Visual Basic 中,此代码应在 WebForm1 的类声明之前出现。在 Visual C# 中,此代码应在命名空间声明之前出现。下面的示例在上下文中显示这些语句。
    ' Visual Basic
        Imports System.Resources
        Imports System.Globalization
        Public Class WebForm1
        Inherits System.Web.UI.Page
        // C#
        using System.Resources;
        using System.Globalization;
        namespace LocProject
  2. ResourceManager 类型的变量声明为页类的一部分:
    ' Visual Basic
        Public Class WebForm1
        Inherits System.Web.UI.Page
        Protected LocRM As ResourceManager
        // C#
        namespace LocProject_CS
        {
        public class WebForm1 : System.Web.UI.Page
        {
              protected ResourceManager LocRM;
  3. 通过在 WebForm1 代码隐藏类中向 Page_Load 方法中添加下列代码来创建 ResourceManager 类的实例。ResourceManager 构造函数采用两个参数。第一个参数是资源的根名称,即不带区域性和 .resx 后缀的资源文件名称。第二个参数是主程序集。
    ' Visual Basic
        LocRM = New ResourceManager("LocProject.strings", GetType(WebForm1).Assembly)
        // C#
        LocRM= new ResourceManager("LocProject.strings", typeof(WebForm1).Assembly);
    注意   如果未将项目命名为“LocProject”,则应当替换您以前用作根目录名参数部分的名称。

在页中显示静态资源字符串

  1. 在 HTML 视图中,用下列 HTML 代码从资源文件添加一些静态文本。将此代码放置在 <form> 和 </form> 标记之间。
    <h3><%=LocRM.GetString("txtWelcome")%></h3>
    注意   默认情况下,ResourceManager 对象区分大小写。如果您希望执行不区分大小写的查找(例如使“TXTWELCOME”与“txtWelcome”检索相同的资源),则可以将资源管理器的 IgnoreCase 属性设置为 true。但是,为了提高性能,最好始终为资源名称指定正确的大小写。如果执行不区分大小写的资源查找,则可能会导致性能问题。

将资源字符串分配到控件的属性

  1. 在“设计”视图中,将 Button 控件从“工具箱”的“Web 窗体”选项卡拖到窗体上。
  2. 在“属性”窗口中,删除该按钮 Text 属性的值
  3. 在代码编辑器中,将下列代码添加到 Page_Load 方法中,以从资源文件检索该按钮的文本。
    ' Visual Basic
        Button1.Text = LocRM.GetString("txtSearch")
        // C#
        Button1.Text = LocRM.GetString("txtSearch");
  4. 在代码编辑器中,添加下列代码以在代码模块的开始处导入 System.Threading 命名空间。
    ' Visual Basic
        ' Import this namespace at the beginning of the code module
        Imports System.Threading
        // C#
        // Import this namespace at the beginning of the code module.
        using System.Threading;
  5. 将下列代码添加到 Page_Load 方法的最开始处,以指定 Web 窗体页应根据在浏览器的“接受语言”标头中指定的区域性来显示资源和格式设置。此代码十分重要,因为如果没有它,您的 Web 应用程序将默认为 Web 服务器的区域性设置,这可能不适合远程用户查看 Web 窗体页。
    ' Visual Basic
        ' Set the culture and UI culture to the browser's accept language
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages(0))
        Thread.CurrentThread.CurrentUICulture = New CultureInfo(Request.UserLanguages(0))
        // C#
        // Set the culture and UI culture to the browser's accept language
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0]);
  6. 保存该项目。
  7. 在“生成”菜单上,单击“生成 LocProject”命令。
  8. 在解决方案资源管理器中,右击 WebForm1.aspx 文件,然后选择“在浏览器中查看”。如果您正在德语或奥地利语系统上运行,则您将看到用德语或奥地利语显示的页;如果您不是在德语或奥地利语系统上运行,将看到用英语显示的页。

    如果您首先在为德语配置的系统上查看页,然后在为奥地利语配置的系统上查看该页,您将注意到“Welcome”文本已更改为奥地利语资源,但搜索按钮的文本却没有更改。这是资源后备系统的一个示例:奥地利语资源只更改“welcome”文本,而其余的文本默认为非特定的德语资源。



suiqirui 2007-06-03 22:36 发表评论

文章来源:http://www.cnblogs.com/suiqirui19872005/articles/769687.html

posted on 2007-06-19 15:08  温温恭人  阅读(188)  评论(0编辑  收藏  举报

导航