一旦我添加了全局资源语言,我如何为客户选择哪种语言?

时间:2012-01-21 01:36:24

标签: asp.net .net visual-studio visual-studio-2010 localization

我已经在我公司的网站上添加了3种其他语言(fr,es-mx,de)到英语,他们一切正常。我跟着MSDN walkthrough on creating localization

我正在使用Visual Studio 2010 / VB / dot-net 4.0,我已经在我的所有页面的顶线,这个:

  <%@ Page Title="USS Products & Services" Language="VB" MasterPageFile="~/products/products.Master" AutoEventWireup="false"
CodeFile="default.aspx.vb" Inherits="default" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" %>

我的global_apps目录中有4个全局资源(.resx)文件。但是,如果我不想仅仅使用浏览器来检测他们的语言呢?我想让他们选择自己的语言。

如何为客户提供4个标志之间的选项 - 每种语言1个 - 并让他们选择?或者也许是翻转站点地图类型的效果,他们可以将鼠标悬停在语言上并选择它?任何帮助,将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:6)

尝试这个简单的方法: 我已经在下拉列表中定义了这些语言,并选择了一个按钮

<asp:DropDownList ID="ddlCulture" DataTextField="DisplayName" DataValueField="Name"
         runat="server" >
        <asp:ListItem Value="es-MX">Spanish</asp:ListItem>
        <asp:ListItem Value="en-US">English</asp:ListItem>
    </asp:DropDownList>
<asp:Button ID="btnSelect" Text="Select" runat="server" OnClick="btnSelect_Click" />

现在代码:

protected void btnSelect_Click(object sender, EventArgs e)
   {
        Session["uiculture"] = ddlCulture.SelectedValue;
        Session["culture"] = ddlCulture.SelectedValue;
        Response.Redirect(Request.Path);
   }

    protected override void InitializeCulture()
    {
      if(Session["culture"]!=null)
        UICulture=Session["culture"].ToString();
    }

更新:抱歉,我忘记了覆盖关键字。现在包括它应该工作。

顺便说一下,你正在使用VB,抱歉我看到了这个。等效代码是:

 Protected Sub btnSelect_Click(ByVal sender As Object, ByVal e As EventArgs)
    Session("uiculture") = ddlCulture.SelectedValue
    Session("culture") = ddlCulture.SelectedValue
    Response.Redirect(Request.Path)
End Sub
Protected Overrides Sub InitializeCulture()
    If Not Session("culture") Is Nothing Then
        UICulture = Session("culture").ToString()
    End If
End Sub