MVC 3のビューをPLとENの2つの言語に切り替える必要があります。 Views-ENとPLに2つのフォルダを作成しました。それはすべてのスレッドへの持続的であるのCultureInfoを変更し、私は適切なリンク(言語スイッチャー)をクリックし経路をグローバルに変更するにはどうすればよいですか?
routes.MapRoute(
"en", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "EN", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
:
routes.MapRoute(
"pl", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "PL", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
へ:だから、任意のサイトで適切な言語のリンクをクリックした後、私はから私のルート変更をしたいです。スイッチャーと _layoutビュー:
<ul>
<li>@Html.ActionLink("En", "ChangeCulture", null, new { lang = "en"}, null)</li>
<li>@Html.ActionLink("Pl", "ChangeCulture", null, new { lang = "pl"}, null)</li>
</ul>
と(また、すべてのコントローラの方法で見られると要求間で永続的で可能な静的変数LANG設定)コントローラ:
public ActionResult ChangeCulture(string lang)
{
PLController.lang = lang;
CultureSettings setCulture = new CultureSettings();
setCulture.InitializeCulture(lang);
cookie.Value = CultureInfo.CurrentCulture.Name;
this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);
return View("Index");
}
InitializeCulture方法は、ページから上書きされます
public class CultureSettings : Page{
public void InitializeCulture(string culture)
{
String selectedLanguage;
if(culture == null)
{
selectedLanguage = "pl";
}
else
{
selectedLanguage = culture;
}
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
base.InitializeCulture();
}
}
CultureInfoを正しく設定します。今、私は(現在のCultureInfoによると)各ナビゲーションリンクのルートを変更し、mysite.com/PL/{controller}/{action}からmysite.com/EN/{controller}/{action}にルートパターンを変更します。
誰もがこの問題のためのアイデアやよりよいアプローチを持っていますか?しかし、アドレスはこのmysite.com/ENまたはmysite.com/PLのように見える必要があります - 違いはありません(つまり、en.mysite.com)
ありがとうございます!私はこのアプローチを試みます! – lukaleli
と私はあなたに別の質問をしています:/ 理由はわかりませんが、アプリケーションの起動後にルートが設定されていないと思います。エラーがあります: '/'アプリケーションのサーバーエラーです。 リソースが見つかりません。 説明:HTTP 404。探しているリソース(またはその依存関係の1つ)が削除されているか、名前が変更されているか、一時的に使用できない可能性があります。次のURLを確認し、正しく入力されていることを確認してください。 リクエストされたURL:/ アイデアはありますか?私はASP.NETとMVCの初心者です – lukaleli
さて、それは今働いています。私はコントローラの名前を変更するのを忘れた;) – lukaleli