0

我想国际化我的 asp.net 应用程序。这该怎么做?我必须遵循哪些步骤?

4

6 回答 6

4

1.) 如果你使用数据库,那么你必须修改你的表。至少添加 LCID 列。

2.) 在 web.config 中设置默认文化和 UI 文化

<system.web>
 <globalization culture="cs-CZ" uiCulture="cs-CZ"/>
</system.web>

3.) 然后您可以在例如 BeginRequest 事件的 global.asax 中或在 InitializeCulture 方法中的页面类的基类中设置实际的线程文化

protected override void InitializeCulture()
    {
        string language = Request["lang"];
        if (!string.IsNullOrEmpty(language))
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(language);
            System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
        }
        else
        {
            base.InitializeCulture();
        }        
    }
  1. 对于静态文本,您可以使用资源。例如,您创建 Mytexts.resx,在其中为默认语言 (en-us) 编写文本,然后为英国英语创建 Mytexts.en-UK.resx 并覆盖与默认语言不同的文本。然后你可以在你的页面中插入这个字符串:
<asp:Label runat="server" Text='<%$ Resources: Mytests,WelcomeMessage %>' />

这只是从本地化开始的简单步骤,但对于小页面/应用程序就足够了。

于 2009-10-01T06:30:57.587 回答
1

您必须探索在 Web 应用程序中使用资源文件的主题。如果您需要基于数据库的本地化支持,您可以尝试来自westwind的优秀免费产品

MSDN 中的本地化和全球化主题是您最好的选择。

于 2009-10-01T06:23:48.583 回答
1

能够为您提供确切的步骤是一个相当大的问题,并且有几种不同的方法。

我们在我最近的项目(简化)中采用的方法是:

  1. 为每个国家/地区设置一个域
  2. 为每种文化(en-US、de-DE、fr-FR)的所有硬编码字符串(表单标签等)创建一个资源文件
  3. 根据访问站点的域更改 Thread.CurrentCulture - 这意味着您的所有数字格式、日期格式都将正确并使用正确的本地化资源文件

希望这可以帮助!

有关国际化的 Microsoft 白皮书,请参见此处

于 2009-10-01T06:26:53.320 回答
1

只需创建一个继承自 Page 类的基页类,将此方法放在基页类中,并在您的每个 aspx.cs 页面中继承基页类即可实现全球化。

 protected override void InitializeCulture() 
{ 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    base.InitializeCulture(); 
}

用这种方法设置你想要的任何文化,比如阿拉伯语的 ar-sa....

于 2009-10-01T07:01:27.573 回答
0

请参阅有关创建本地化资源文件的链接:http: //msdn.microsoft.com/en-us/library/ms247246.aspx

基本上,您为要支持的每种语言/文化创建一个新的资源文件。然后,您可以在标记页面和文件背后的代码中按名称访问其中的字符串。

此外,这些资源文件需要位于项目中名为App_GlobalResources的特定文件夹中

全局资源文件必须位于 App_GlobalResources 文件夹中。如果您尝试在此文件夹之外创建 .resx 文件,Visual Web Developer 会提示您在该文件夹中创建它。

于 2009-10-01T06:24:12.703 回答
0

这是一个复杂的主题,需要大量工作才能通过系统的所有层来正确处理。

从这里开始。

ASP.NET resx 文件可以让您轻松配置常量字符串,但您的数据库还需要支持 unicode,并且您需要根据您希望支持的语言做不同的事情。

祝你好运,并在遇到具体问题时提出问题。

于 2009-10-01T06:24:22.327 回答