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

Jas*_*ber 1 .net asp.net localization visual-studio-2010 visual-studio

我已经在我公司的网站上添加了3种其他语言(fr,es-mx,de)到英语,它们都运行良好.我按照MSDN演练创建了本地化.

我正在使用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" %>
Run Code Online (Sandbox Code Playgroud)

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

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

Mub*_*rek 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" />
Run Code Online (Sandbox Code Playgroud)

现在代码:

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();
    }
Run Code Online (Sandbox Code Playgroud)

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

顺便说一下,你正在使用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
Run Code Online (Sandbox Code Playgroud)