0

我有一个 Web 表单,我想使用下拉菜单选择的语言更改每个控件的标题。

但我做不到。我搞砸了 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。但是在网络版本中。

那么我怎样才能做到这一点呢?

4

1 回答 1

2

该过程实际上与您提到的 WinForms 相同,但您查看的属性错误(CurrentCulture关于格式化和解析,CurrentUICulture您需要让 ResourceManager 使用资源的特定语言版本)。因此,您可以通过替换此行来实现您的目标:

Resources.Global.Culture = ci;

有了这个:

Thread.CurrentThread.CurrentUICulture = ci;
于 2012-06-28T15:25:07.883 回答