asp.net не может изменить текущую культуру - PullRequest
0 голосов
/ 12 марта 2012

Я использую локализацию asp.net, чтобы попытаться создать многоязычный веб-сайт, в основном у меня есть два глобальных ресурса, один для английского и другой для арабского.

Я добавил выпадающий список, содержащий два языка:

  <asp:DropDownList runat="server" ID="changeLang" AutoPostBack="true" >
      <asp:ListItem Value="en">English</asp:ListItem>
      <asp:ListItem Value="ar">Arabic</asp:ListItem>
      </asp:DropDownList>

и я использую этот код:

 protected override void InitializeCulture() //changing the languages
    {
        string lang = Request["changeLang"];

        if (lang != null && lang != "")
        {
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
        }
    }

но язык не изменится и при отладке значения строки lang всегда будет нулевым.

Я использую asp.net 4.0.

в чем проблема, спасибо.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2013

Похоже, есть две разные проблемы.

1) Вы не получаете значение из выпадающего списка в вашем коде позади просто ноль.Вы пытались напрямую получить доступ к объекту, а не проходить через объект запроса.Например:
string lang = changeLang.SelectedValue

2) Культуры не устанавливаются.Для второго элемента попробуйте сначала создать определенную культуру и использовать ее для CurrentUICulture и CurrentCulture.Например:

CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = info;
Thread.CurrentThread.CurrentCulture = info;

Кроме того, похоже, что вы можете следовать примеру кода из этой статьи MSDN .Вы должны использовать определенные идентификаторы культуры в раскрывающемся списке (например, en-US и ar-EG)

0 голосов
/ 12 марта 2012

Я предлагаю настроить страницу для автоматического определения культуры из настроек браузера пользователя:

<%@ Page UICulture="auto" Culture="auto" %>

Или для всего сайта, добавив эти записи в ваш файл web.config:

<globalization uiCulture="auto" culture="auto" /><!-- Automatically set culture from HTTP request -->
<globalization uiCulture="auto:en" culture="auto:en-US" /><!-- Optionally set a default culture -->

Затем используйте Неявное декларативное связывание на ваших элементах управления:

<asp:Button ID="btnSubmit" runat="server" 
    meta:resourcekey="btnSubmit" />

См. Ресурсы и локализация в ASP.NET 2.0 для большого количества деталей и примеров кода.,Если вы предпочитаете делать это программно в соответствии с вашим примером, см. Следующие ресурсы:

...