我已经在我公司的网站上添加了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个 - 并让他们选择?或者也许是翻转站点地图类型的效果,他们可以将鼠标悬停在语言上并选择它?任何帮助,将不胜感激!谢谢!
答案 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