2012-06-26 1 views
0

У меня есть веб-форма, и я хочу изменить ее заголовки для каждого элемента управления с помощью языка, выбранного по выпадающему списку.C# задать язык любого элемента управления на веб-странице по выпадающему списку

, но я не мог этого сделать. Я перепутал с json и сложными вещами.

здесь то, что я пробовал:

контроллер

string newstr = db.Countries.Where(c => c.CountryTag.Contains(incoming)).Select(c => c.CountryTag).First().ToString(); 
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(newstr, false); 
Resources.Global.Culture = ci; 

вид

<script type="text/javascript" language="javascript"> 
    function changeLang(chosen) { 
     var lang = $("#Language").val(); 
     $.getJSON('@Url.Content("~/Home/Globalx/")', { incoming: lang }, function (data) { 
      location.reload(false); 
      $("#Language").options.selectedIndex = data; 
     }) 
    } 
</script> 

<div> 
    @Html.DropDownList("Language", (SelectList)ViewData["Language"], new { onchange = "changeLang(this)" }) 
</div> 
<div> 
    @Resources.Global.Wellcome 
</div> 

, но оно не работает. Я использую ресурсы, как вы можете видеть в коде.

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

Как при использовании форм выигрыша System.Threading.Thread.CurrentThread.CurrentCulture = MyChosenCulture; в DropDown_Change Событие bla bla .. , но в веб-версии.

так как я могу добиться этого?

ответ

2

Процесс на самом деле так же, как то, что вы упоминаете для WinForms, но вы смотрели на неверную недвижимости (CurrentCulture о форматировании и разборе, это CurrentUICulture, что вам нужно сделать ResourceManager использовать определенную языковую версию ваших ресурсов) , Таким образом, вы можете достичь своей цели, заменив строку:

Resources.Global.Culture = ci; 

С этим:

Thread.CurrentThread.CurrentUICulture = ci;