После того, как я добавил языки Global Resource, как я могу указать клиенту, какой язык выбрать? - PullRequest
1 голос
/ 21 января 2012

Я добавил 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" %>

У меня есть 4 файла глобальных ресурсов (.resx) в моем каталоге global_apps.Но что, если я не хочу, чтобы только браузер самостоятельно определял их язык?Я хочу дать им возможность выбрать собственный язык.

Как дать клиенту возможность выбора между 4 флагами - по 1 для каждого языка - и позволить им выбирать?Или может быть эффект типа ролловера, когда они могут навести курсор мыши на язык и выбрать его?Любая помощь будет оценена!Спасибо!

1 Ответ

6 голосов
/ 21 января 2012

Попробуйте этот простой метод: Я определил языки в выпадающем списке и у меня есть кнопка выбора

<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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...