1

我有包含一组不同语言的列表框:

  <%@ Page Language="C#" uiculture="auto" %>
  <%@ Import Namespace="System.Threading" %>
  <%@ Import Namespace="System.Globalization" %>
 <script runat="server">
 protected override void InitializeCulture()
{
if (Request.Form["ListBox1"] != null)
{
    String selectedLanguage = Request.Form["ListBox1"];
    UICulture = selectedLanguage ;
    Culture = selectedLanguage ;

    Thread.CurrentThread.CurrentCulture = 
        CultureInfo.CreateSpecificCulture(selectedLanguage);
    Thread.CurrentThread.CurrentUICulture = new 
        CultureInfo(selectedLanguage);
}
base.InitializeCulture();
}
</script>
<html>
 <head><title>Set Culture</title></head>
<body>
<form id="form1" runat="server">
<div>
    <asp:ListBox ID="ListBox1" runat="server">
        <asp:ListItem Value="en-US" Selected="True">English</asp:ListItem>
        <asp:ListItem Value="es-MX">Español</asp:ListItem>
        <asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
    </asp:ListBox>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Set Language"  />
    <br />
    <asp:Label ID="Label1" runat="server" Text="my name is"  />

  </div>
</form>
 </body>
  </html>

我希望当我从列表框中选择一种语言时,标签文本将被翻译为所选语言,例如,如果我选择 Español “我的名字是”将被翻译成 Español 语言并显示在屏幕上

4

3 回答 3

1

在 ListBox 的 selectedIndexChanged 事件中编写以下代码行

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

selectedLanguageCode 是为每种文化指定的内容,例如美国英语 en-US 等。

于 2012-05-30T08:37:04.967 回答
1

您将需要删除硬编码字符串并开始使用Resource文件。我建议您查看教程以获取有关如何开发多语言网站的完整指南。

于 2012-05-30T08:33:02.457 回答
0

你应该实现这个

 protected override void InitializeCulture()

在每个页面上,您都需要多种语言。我通常会创建一个类来覆盖它并从中派生其他支持多语言的页面。您还需要使用 cookie。coockies["lang"] = "en-US" - 像这样管理语言。

于 2012-05-30T08:34:33.020 回答