Я новичок в c # mvc, и я пытаюсь создать многоязычный веб-сайт, и до сих пор я читал, что лучшая практика - это работа с ресурсами или файлами resx и установка языковой культуры в cookieпеременная, но мой вопрос, как автоматически установить культуру в cookie?Я имею в виду
, если человек впервые заходит на сайт;как я могу глобально определить язык компьютера или браузера и установить язык, соответствующий этому языку, обнаруженному для каждого будущего действия, которое будет выполнять пользователь на веб-сайте, а также сохранить его в переменной cookie, если человек изменит язык и снова посетит веб-сайтсайт инициализируется на том языке, который выбрал человек.
пока у меня есть вот это:
global.asax
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpCookie language = HttpContext.Current.Request.Cookies["CultureInfo"];
if (language != null && language.Value != null)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language.Value);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language.Value);
}
else
{
Thread.CurrentThread.CurrentCulture = someWayToDetectThePcOrBrowserLanguage;
Thread.CurrentThread.CurrentUICulture = someWayToDetectThePcOrBrowserLanguage;
}
}
someWayToDetectThePcOrBrowserLanguage метод у меня его нет, я ищу способ сделать это.И после того, как это сделано, если человек из английской страны, URL выглядит следующим образом:
www.website.com / ru /
, если человек изИспанская страна выглядит следующим образом:
www.website.com / es /
и так далее для некоторых других языков.
теперь нужно изменитьязык, который у меня есть для html:
<form id="languages" method="get">
<select name="selectLanguages" id="selectLanguages>
<option value="en">English</option>
<option value="es">Español</option>
<option value="fr">Français</option>
</select>
</form>
мой jquery такой:
$('#selectLanguages').on('change', function () {
var id = $(this).val();
$.ajax({
type: 'GET',
url: '/Language/ChangeCulture',
data: { lang: id },
success: function (e) {
}
})
})
наконец функция вот эта:
public void ChangeCulture(string lang)
{
Response.Cookies.Remove("CultureInfo");
HttpCookie languageCookie = System.Web.HttpContext.Current.Request.Cookies["CultureInfo"];
if (languageCookie == null) languageCookie = new HttpCookie("CultureInfo");
languageCookie.Value = lang;
languageCookie.Expires = DateTime.Now.AddDays(10);
Response.SetCookie(languageCookie);
Response.Redirect(Request.UrlReferrer.ToString());
}
отна данный момент, я полностью потерян, если вы можете помочь мне, это намеревается изменить URL-адрес с этого www.website.com / AutoDetectedLanguage / на этот www.website.com / anotherLanguage/
А также для каждого будущего действия оставайтесь в выбранной или обнаруженной культуре, например,
www.website.com / ru / controller / action
или
www.website.com / ru / anotherController / anotherAction
при изменении языка
www.website.com/ ES / sameController / саmeAction