InitializeCulture () на каждой странице необходимо? - PullRequest
1 голос
/ 14 марта 2012

У меня есть веб-сайт, который нужно локализовать. Я имею в виду, он локализован, мне просто нужно установить правильный язык в соответствии с доменом. Что-то вроде:

protected override void InitializeCulture()
{
    var i = Request.Url.Host.ToLower();
    var domain = i.Substring(i.Length - 2, 2);
    if (domain == "se")
    {
        Thread.CurrentThread.CurrentCulture =
            CultureInfo.CreateSpecificCulture("sv-SE");
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo("sv-SE");
    }
    else if (domain == "dk")
    {
        Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture("da-DK");
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo("da-DK");
    }
}

Мой первый вопрос: действительно ли мне нужно вызывать InitializeCulture() на каждой странице для загрузки нужных ресурсов?

Второй вопрос. У меня также есть некоторые глобальные ресурсы. Если да на первый вопрос, будут ли они также правильно установлены?

Ps. uiCulture="auto" и enableClientBasedCulture="true" в webconfig будет недостаточно (длинная история).

Ответы [ 2 ]

2 голосов
/ 15 мая 2013

Если язык в приложении не отличается от страницы к странице, то имеет смысл повторно использовать код в ответе здесь .Или лучше все же использовать http модуль, объясненный здесь .

2 голосов
/ 14 марта 2012

Да.То, что вы делаете, соответствует рекомендованному Microsoft методу .И поскольку ваш пример определяет, какой язык использовать, основываясь на URL-адресе, то для каждого запроса страницы может потребоваться другой язык, поэтому вы просто не могли избежать этого для каждой отдельной страницы.

Что касается второго вопроса,да, загрузка всех ресурсов зависит от CurrentCulture.Таким образом, инициализация вашей культуры будет зависеть как от локальных, так и от глобальных ресурсов.

...