LifeAct
@LifeAct
Создаем и раскручиваем, не ставим на конвейер

Как локализовать asp mvc приложение на основе представлений?

Всем привет! Необходимо сделать двуязычный сайт. Просто по представлениям (views), ресурсы не нужны.

Делаю все по статье blogs.msdn.com/b/vyunev/archive/2011/12/07/asp-net...

с горем пополам завел его, в базовом контролере не было задействовано чтение с куков, добавил:

string cultureName = null;

            // Attempt to read the culture cookie from Request
            HttpCookie cultureCookie = Request.Cookies["_culture"];
            if (cultureCookie != null)
                cultureName = cultureCookie.Value;
            else
                cultureName = Thread.CurrentThread.CurrentCulture.Name;


А вот отображение текущего языка никак не могу сделать, в представлении Index.ru-ru.cshtml и Index.en-us.cshtml
@{

    var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant();
}

@helper selected(string c, string culture)
{
    if (c == culture)
    {
        @:checked="checked"
            }
}

@using (Html.BeginForm("SetCulture", "Home"))
{
    <fieldset>          
        <input name="culture" id="ru-ru" value="ru-ru" type="radio" @selected("ru-ru", culture) /> Русский <br />                 
        <input name="culture" id="en-us" value="en-us" type="radio" @selected("en-us", culture) /> English
    </fieldset>
}
...


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script type="text/javascript">
        (function ($) {
            $("input[type = 'radio']").click(function () {
                $(this).parents("form").submit(); // post form
            });

        })(jQuery);
    </script>
}


У меня всегда выделен русский radio, какой бы язык не был выбран. И вот это if (c не пойму что за пеерменная, откуда она там.

Еще не понятно почему у него два одинаковых блока js кода и зачем делать выбранный язык жирным, все равно представление перегружается и стиль обнуляется
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Автор статьи ссылается на то, что некоторые языки имеют отличное от Русского направление письма, и использование ресурсных файлов не даст должного эффекта. В Вашем случае - использование различных View чем вызвано? В корне отличным содержимым ? Так же лично мне крайне не нравится наполнение контроллера логикой извлечения локали. Сделайте, к примеру, AJAX-запрос к отдельному методу выставив это значение. Да и читать рекомендации 4-летней давности наверно не лучшая идея.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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