리소스 파일을 기반으로 다중 언어 MVC 웹 사이트를 만들려고합니다. 컨셉을 설명하고 몇 가지 예제 코드를 제공하는이 비디오를 youtube에서 찾았습니다. https://youtu.be/oGeAYd3idBcMVC 5 지역화가 로컬 호스트에서 작동하지만 서버가 아닙니다.
지금 문제가 있습니다. localhost 작동하지만 내 서버에 업로드 할 경우 작동하지 않습니다.
이 시점에서 저는 많은 연구를 시작했습니다. 나는 많이 찾지 못했습니다. 내가 찾은 모든 것을 시도했지만, 효과가 없었습니다.
web.config의 globalization culture/uiCulture를 auto로 설정하는 것이 좋습니다. 이것은 또한 효과가 없었습니다.
색인 페이지에서 현재 문화권 (CultureInfo.CurrentCulture.Name
)을 출력합니다. 사용자가 언어를 설정하면 localhost에서 변경됩니다. 하지만 내 서버에서 항상 영어.
내 문제를 이해하시기 바랍니다. 이제
내 코드 :
의 Web.config
<system.web>
<globalization culture="auto" uiCulture="auto"></globalization>
</system.web>
index.cshtml
@using System.Globalization
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="pushContent"></div>
<div class="container">
<div class="row">
<ul>
<li>@Html.ActionLink("English", "Change", "Language", new { LanguageAbbrevation = "en" }, null)</li>
<li>@Html.ActionLink("German", "Change", "Language", new { LanguageAbbrevation = "de-DE" }, null)</li>
</ul>
</div>
<div class="row">
<p>
CurrentCulture is now @CultureInfo.CurrentCulture.Name
</p>
</div>
</div>
<div class="pushFooter"></div>
LanguageController
public ActionResult Change(string LanguageAbbrevation)
{
if (LanguageAbbrevation != null)
{
CultureInfo.CurrentCulture.ClearCachedData();
CultureInfo culture;
culture = CultureInfo.CreateSpecificCulture(LanguageAbbrevation);
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
HttpCookie cookie = new HttpCookie("Language");
cookie.Value = LanguageAbbrevation;
cookie.Expires = DateTime.MaxValue;
Response.Cookies.Add(cookie);
return View("Index");
}
Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"];
if(cookie != null && cookie.Value != null)
{
CultureInfo.CurrentCulture.ClearCachedData();
CultureInfo culture;
culture = CultureInfo.CreateSpecificCulture(cookie.Value);
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
else
{
CultureInfo.CurrentCulture.ClearCachedData();
CultureInfo culture;
culture = CultureInfo.CreateSpecificCulture("en");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
}
당신은 아마 돈 때문에, 전체 응용 프로그램, 사용자가 아닌 문화의 기본 문화를 설정하는 것입니다 가지고있는 코드 ' 이 코드가 어쨌든 작동하도록하고 싶지 않습니다. –
[경로 및 URL의 ASP.NET MVC 5 문화권] (https://stackoverflow.com/a/32839796)을 참조하십시오. 현지화를 위해 쿠키를 사용하는 이유가 전혀 없으며 쿠키를 사용하는 것도 SEO에 좋지 않습니다. – NightOwl888
그래, @ NightOwl888의 접근 방식을 따라 가라 :-) 나는 내 "대답"을 제거 할 것이다 – DiskJunky