ASP.NET MVC - Маршрут локализации

Nerdtree

дерево КОМПЬЮТЕРНОГО ФАНАТА позволяет Вам исследовать свою файловую систему и открывать файлы и каталоги. Это представляет файловую систему Вам в форме дерева, которым Вы управляете с клавиатурой и/или мышью. Это также позволяет Вам выполнять простые операции файловой системы.

дерево может быть переключено легко с: NERDTreeToggle, который может быть отображен на более подходящем ключе. Сочетания клавиш в дереве КОМПЬЮТЕРНОГО ФАНАТА также легки и интуитивны.

Редактирование: Добавленное резюме

22
задан Ropstah 11 November 2009 в 00:13
поделиться

2 ответа

Вы можете создать маршрут, в который встроена культура, вот так ...

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",                                              // Route name
        "{culture}/{controller}/{action}/{id}",                           // URL with parameters
        new { culture="en-US", controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );

}

Вы можете получить культуру, добавив параметр культуры ко всем вашим действиям, как это ...

public ActionResult Index(string culture)
{
    ViewData["Message"] = "Welcome to ASP.NET MVC! (" + culture + ")";

    return View();
}

Вы также, вероятно, можете проанализировать URL-адрес в методе Application_BeginRequest в Global.asax и установить там культуру потоков (пример кода ниже показывает, как установить культуру, синтаксический анализ я оставляю вам).

Если вы сделаете это, вы вероятно, не сможет использовать методы типа RedirectToAction и HTML.ActionLink, поскольку они ничего не знают о культурах. Конечно, вы всегда можете написать свое.

Обратной стороной использования URL-адреса для хранения культуры является то, что если вы пропустите ссылку где-то на своем веб-сайте или пользователь покинет веб-сайт, а затем вернется, вы можете потерять культуру пользователей, и им придется установить ее заново ( Не конец света, но раздражает. Возможно, хорошая сторона использования URL-адреса для хранения культуры состоит в том, что Google будет индексировать все разные языки.

Если вас больше беспокоит пользовательский опыт или простота разработки, по сравнению с индексированием Google для разных культур (действительно зависит от того, какой сайт вы создаете), я бы посоветовал сохранить культуру в файле cookie или состоянии сеанса.

Ознакомьтесь с Как локализовать приложение ASP .Net MVC? . Принятый ответ указывает на сообщение в блоге , в котором показано, как локализовать приложение ASP.Net.

Если вы сохраняете культуру, которую пользователь выбирает в файле cookie, состоянии сеанса или параметре запроса, а затем задаете культуру потоков в методе BeginRequest в файле Global.asax. Далее выполняется локализация с использованием стандартных сборок локализации Microsoft.

Следующий код позволит вам изменить культуру в любое время, просто добавив culture = ?? в строку запроса (MyPage? culture = es-MX). Затем он будет добавлен в файл cookie, поэтому вам не нужно добавлять его в конец каждой ссылки в вашей системе.

protected void Application_BeginRequest()
{
    var culture = Request["culture"] ?? Request.Cookies["culture"]?.Name;
    if (culture == null) culture = "en-US";
    var ci = CultureInfo.GetCultureInfo(culture);

    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;

    var cookie = new HttpCookie("culture", ci.Name);
    Response.Cookies.Add(cookie);
}
15
ответ дан 29 November 2019 в 05:04
поделиться

Кэширование вывода зависит от вариантов URL. Учтите это при разработке стратегии локализации. Если вы планируете использовать кэширование вывода, вставьте токен локализации где-нибудь в URL-адресе.

8
ответ дан 29 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: