【问题标题】:Once I've added Global Resource languages, how do I give client option which language to choose?添加 Global Resource 语言后,如何为客户提供选择哪种语言的选项?
【发布时间】:2012-01-21 01:36:24
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    <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();
        }
    

    更新:抱歉,我忘记了 override 关键字。现在包含它应该可以工作了。

    顺便说一句,您使用的是 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
    

    【讨论】:

    • 嗨努克斯。感谢您的回复。我觉得问起来很愚蠢,但是我会把你建议的第二个代码块放在哪里?我知道把按钮放在哪里。但是编码呢?再次感谢您的帮助!
    • 我把代码放在页面底部,没有构建错误。我尝试单击西班牙语和英语等,但它不会更改网络浏览器上的语言。并将其放在页面顶部:protected void btnSelect_Click(object sender, EventArgs e) { Session["uiculture"] = ddlCulture.SelectedValue;会话[“文化”] = ddlCulture.SelectedValue;响应。重定向(请求。路径); } 受保护的无效 InitializeCulture() { if(Session["culture"]!=null) UICulture=Session["culture"].ToString(); }
    • 我更新了最后一个方法。所以试试吧。将方法放置在 bttn 事件之后或代码后面或 标记之间的任何位置都没有问题。让我知道任何进展。谢谢
    • 知道了!非常感谢,努克斯!它完美地工作!这很棒。我会把它放在我的主页上,然后从那里拿东西。感谢您的帮助和耐心——非常感谢!
    • 嘿nuux,如果你还在这里,我只是好奇。它适用于英语、法语、西班牙语-墨西哥语和德语。但是当我做瑞典语或日语时,它说找不到页面并且不会刷新。这是我最近添加的两种语言。我将追溯我的步骤以确保我正确地完成了它们。
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2018-05-02
    • 2011-08-20
    相关资源
    最近更新 更多