私は、.NET Framework 4 の EF 5 を使用して asp.net mvc 4 で作業しています (まだ 4.5 ではない Azure に感謝します)。ユーザーがボタンを押して現在の言語設定を変更できるようにしようとしています。変更が必要なコンテンツは、リソース ファイルに保存されます。
まず、web.config でブラウザーの設定を取得します。
<globalization culture="auto" uiCulture="auto"/>
次に、ハイパーリンクを介して変更しようとします。私が使用しているリンクの例を次に示します。
<li>@Html.ActionLink("FR", "ChangeLanguage", "Account", new { language = "fr" }, null)</li>
<li>@Html.ActionLink("EN", "ChangeLanguage", "Account", new { language = "en" }, null)</li>
<li>@Html.ActionLink("NL", "ChangeLanguage", "Account", new { language = "nl" }, null)</li>
テキストを埋める方法は次のとおりです。
@Html.Encode(MyProject.Web.Resources.General.Header_UserBadge_SettingsDeleteCurrentPicture)
それらがリンクされているコントローラーアクションは次のとおりです。
public ActionResult ChangeLanguage(string language)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(language);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
}
リソース ファイルの名前は次のとおりです。
- General.fr.resx => フランス語
- General.resx => 英語
- General.nl.resx => オランダ語
明らかにこれは機能しません。私がやろうとしていることの例が見つからないようです。私が見つけることができるすべての例は、ページを更新します。
だから私は2つの質問があります:
- これはできますか?はいの場合、どのように、または何が間違っていますか?
- これができない場合、良い解決策は何でしょうか? 現在、アクションの最後にリダイレクトしても、言語設定は変更されないようです。