65.9K
CodeProject 正在变化。 阅读更多。
Home

在 .NET 中创建多语言和本地化页面

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.17/5 (8投票s)

2008年9月14日

CPOL

2分钟阅读

viewsIcon

19892

本文档描述了如何在 .NET 中创建多语言和本地化的页面。

引言

在这里,我将讨论如何在 .NET Web 应用程序中开发多语言和本地化的页面。多语言应用程序的主要问题是在每次页面回发时重置当前区域性(culture)和语言,因为这可能会重置为默认语言/区域性。我还会讨论在多语言应用程序中使用资源文件以及本地化图像的方法。

描述

让我们分步骤开始这个练习。

  1. 创建你自己的基础页面类:正如我之前讨论的,多语言应用程序的问题在于它可能会在页面回发期间将区域性重置为默认值。为了解决这个问题,.NET 为我们提供了一种方法,该方法是页面生命周期的一部分,用于初始化区域性。因此,我们可以编写一个继承自 System.Web.UI.Page 类的自定义类,并重写其 InitializeCulture 方法,如下所示:
protected override void InitializeCulture()
{
    //get the culture information from wherever you want suppose it is a property
    //with your user class

    Thread.CurrentThread.CurrentCulture = 
        CultureInfo.CreateSpecificCulture(CurrentLoggedinUser.PreferredCulture);
    Thread.CurrentThread.CurrentUICulture = new 
        CultureInfo(CurrentLoggedinUser.PreferredCulture);

    base.InitializeCulture();
}

现在,用你自己的类覆盖每个 aspx 页面,而不是 Page 类。这将根据你的要求重置当前区域性。

  1. 使用资源文件:资源文件是扩展名为 .resx 的文件,你可以在其中存储 Web 页面的内容,以便根据语言进行选择。你应该为应用程序支持的每种语言保留一个资源文件。现在的问题是如何从这些资源文件中获取值,这很简单,只需要几行代码:
ResourceManager rm =new ResourceManager(“Name of resource file”,
    Assembly. GetExecutingAssembly());

Label1.Text=rm.GetString(“key1”);

为了避免上述代码中的一些编译时错误,请在你的代码中添加以下命名空间:

Using System.Resources;

Using System.Reflection;
  1. 本地化图像:要本地化图像,你可以选择以下两种方法之一。首先,将所有图像的名称保存在资源文件中,并像这样访问图像路径:
imageButton1.ImageUrl= rm.GetString(“imagepath1”);

另一种我更喜欢的方法是将一种语言的所有图像保存在一个文件夹中,并将该文件夹的名称保存在你的资源文件中,但请记住在所有语言中为图像保留相同的名称。

imageButton1.ImageUrl= rm.GetString(“ImageFolder”) +”LoginImage.jpg”;

摘要

在这里,我们讨论了在 .NET 应用程序中创建本地化页面。我们讨论了如何在每次页面请求中设置区域性。然后,我们讨论了如何从资源文件中获取值,以及本地化应用程序图像的方法。希望对您有所帮助。谢谢。

© . All rights reserved.