2013-06-11 2 views
4

Я хочу иметь возможность устанавливать культуру во время выполнения. Например:Как заставить культуру в asp.net?

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.Culture = "fr-FR"; 
    Page.UICulture = "fr"; 
} 

Но это не имеет никакого эффекта. Я использую файлы ресурсов для перевода. Если я меняю язык своего браузера, он отлично работает, но я хочу, чтобы пользователь также мог выбрать язык. Поэтому в этом случае пользователь хочет, чтобы французский язык был языком.

Любые идеи? Я потерялся.

+0

Вы хотите заставить культуру, но позволить пользователю выбрать? Похоже на противоречивые требования. –

+0

Попробуйте установить 'Thread.Current.Culture' в Global.asax. – sgnsajgon

+0

Я хочу, чтобы культура, которую пользователь выбрал. Вот почему в моем коде ставится «пример». – Smeegs

ответ

15

Если вы создаете сайт, на котором вы позволяете пользователю, например, менять язык, вам необходимо выполнить его в файле Global.asax в методе Application_BeginRequest.

Каждый запрос будет иметь набор культуры.

Вы просто установить следующие 2 строки:

Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR"); 
    Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR"); 

Первая строка будет установить номер/дата/и т.д. форматирования.

Вторая строка указывает, какую локализацию ресурсов загружать - которая будет содержать переведенный контент.

+0

Отлично. У меня была другая проблема. Культура была задана в директиве страницы auto, и это было переопределение изменений в global.asax. Теперь все лучше. Благодаря! – Smeegs

+0

приветствуется :) если он вылечил проблему, пожалуйста, отметьте ее как ответ - она ​​тоже помогает будущим пользователям :) – Darren

+0

Я пытаюсь, но stackoverflow заставляет меня ждать. Думаю, ты слишком проклят. – Smeegs

3

Вы можете попробовать это:

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

См эту статью из MSDN для получения более подробной информации.

1
  • Если вы хотите установить его для всего приложения, вы можете установить его в вашем Global.asax как

    Thread.Current.Culture = Новый System.Globalization.CultureInfo ("FR-FR");

+0

это только одна часть головоломки ... – Darren

Смежные вопросы