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>

しかし、それは機能しません。コードでわかるように、リソースを使用しています。

ドロップダウンから別の言語を選択するたびに、変更された言語をページに表示したいだけです。

イベント bla bla .. で win フォームを使用しているときのように、Web バージョンでSystem.Threading.Thread.CurrentThread.CurrentCulture = MyChosenCulture;は。DropDown_Change

どうすればこれを達成できますか?

4

1 に答える 1

2

プロセスは実際にはWinFormsについて言及したものと同じですが、間違ったプロパティを見ていました(CurrentCultureフォーマットと解析に関するもので、CurrentUICultureResourceManagerにリソースの特定の言語バージョンを使用させる必要があります)。したがって、次の行を置き換えることで目標を達成できます。

Resources.Global.Culture = ci;

これで:

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