terjetyl が言及したことに加えて、カルチャを変更できるようにするには、コントローラーに追加機能を追加する必要があります。
まず、次のクラスを作成する必要があります (Controllers フォルダーに配置できます)。
public class BaseController : Controller
{
protected override void ExecuteCore()
{
string cultureName = null;
// Attempt to read the culture cookie from Request
HttpCookie cultureCookie = Request.Cookies["_culture"];
// If there is a cookie already with the language, use the value for the translation, else uses the default language configured.
if (cultureCookie != null)
cultureName = cultureCookie.Value;
else
{
cultureName = ConfigurationManager.AppSettings["DefaultCultureName"];
cultureCookie = new HttpCookie("_culture");
cultureCookie.HttpOnly = false; // Not accessible by JS.
cultureCookie.Expires = DateTime.Now.AddYears(1);
}
// Validates the culture name.
cultureName = CultureHelper.GetImplementedCulture(cultureName);
// Sets the new language to the cookie.
cultureCookie.Value = cultureName;
// Sets the cookie on the response.
Response.Cookies.Add(cultureCookie);
// Modify current thread's cultures
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
base.ExecuteCore();
}
}
次に、作成したクラスから継承するように、MVC プロジェクトのすべてのコントローラーを作成する必要があります。
この後、Views フォルダーの Web.configの namespaces タグに次のコードを追加する必要があります。
<add namespace="complete assembly name of the resources project"/>
最後に、言語を変更するボタンに、「_culture」Cookie を正しい言語コードに設定するための指示を追加する必要があります。
ご不明な点がございましたら、お知らせください。