Я пытаюсь сделать страницу на 3 языках.Переопределить значения по умолчанию Файлы MVC4 resx
Английский, датский, испанский.
Я использую файлы resx для языков, и я сделал это, чтобы теперь я мог видеть, что если моя система настроена на английский язык, я получу английский язык или датский язык даст датский язык. однако я пытаюсь реализовать функцию переопределения, поэтому я могу вручную изменить язык на странице с помощью кнопки. Я предполагаю, что это будет 3 кнопки флажков для изменения языков. Однако, похоже, я не могу переопределить язык. и у меня больше проблем с попытками, чем просто придерживаться настроек по умолчанию.
вот как я создал некоторые из моих вещей:
Я настроил мои маршруты, как это:
routes.MapRoute(
name: "DefaultLocalized",
url: "{language}-{culture}/{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
language = "da",
culture = "DK",
id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultInternationalized",
url: "{language}-{culture}/{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
language = "en",
culture = "UK",
id = UrlParameter.Optional
}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
, когда я пытаюсь это я, кажется, не быть в состоянии для использования последнего маршрута по умолчанию. И когда я пытаюсь переопределить свой язык, который установлен по умолчанию для датчан, поэтому я могу видеть страницы на английском языке, что URL-адрес достаточно уверен, что читает en-UK/Home, но язык по-прежнему остается моим языком браузеров по умолчанию.
Я попытался сделать фильтр как этот
public class InternationalizationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string language = (string)filterContext.RouteData.Values["language"]; //?? "da";
string culture = (string)filterContext.RouteData.Values["culture"];// ?? "DK";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
моя надежда была, что это будет активировать и решить язык, но, кажется, он никогда не делает.
Мои файлы resx по этому пути.
View/Languages/
с этими именами
Resources.resx
Resources.da-DK.resx
Resources.es-ES.resx
я хотел бы знать, где я уезжаю или то, что я пропавшими без вести. моя идея состояла в том, что я мог бы получить доступ к нормальной странице на
mydomain/Home
локализованных на языке по умолчанию пользователя. , а затем получить доступ к перегруженным языкам по адресу:
mydomain/en-UK/Home
mydomain/da-DK/Home
mydomain/es-ES/Home
однако это, кажется, не работает. Я еще не добавил, чтобы испанец мог работать, потому что я думал, чтобы он сначала работал с датским и английским.
Кто-то Пожалуйста, скажите мне, что мне не хватает. или спросите, не предоставил ли я достаточно подробностей относительно моей проблемы.
Я пытался исправить мое решение в соответствии с пост Ах сделал. он действительно разрешил некоторые вещи, которые теперь всегда появляются на веб-сайте. однако он всегда появляется на моем языке, а не на переопределенном языке. и маршрут по умолчанию, где он должен быть браузером, который решает автоматически направлять другие страницы к URL-адресу da-DK, а не оставаться там, если страница решила для себя, она должна просто оставаться со стандартным URL-адресом домена. если пользователь хочет переопределить его, он должен перейти к да-DK или любому другому. есть еще одна проблема, когда я пытаюсь переопределить с помощью en-GB, тогда она все еще отображается на датском языке – Helbo