Менеджер ресурсов Asp.Net всегда возвращает нейтральные ресурсы культуры - PullRequest
0 голосов
/ 27 июня 2009

Я использую встроенный .resx для локализации приложения asp.net. Кажется, что независимо от текущей культуры, нейтральный культурный ресурс всегда возвращается. Код, который я использую для получения значения, выглядит следующим образом:

protected string GetResource(string name)
    {
        return Localization.ResCore.ResourceManager.GetString(name, System.Threading.Thread.CurrentThread.CurrentCulture);
    }

Я указал на одной странице, что культура "es-PE" (Перу). Когда я прерываю функцию GetResource, я могу убедиться, что CurrentCulture является "es-PE" и что ResourceManager содержит ResourceSet, соответствующий этой культуре. Однако возвращаемая строка всегда из нейтрального набора культур.

Встраиваемые файлы имеют следующие имена:

  • ResCore.resx
  • ResCore.es.resx
  • ResCore.es-PE.resx

Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 14 августа 2009

Если вы хотите использовать ресурсы, вы можете изменить свой второй параметр с

System.Threading.Thread.CurrentThread.CurrentCulture

до

System.Threading.Thread.CurrentThread.CurrentUICulture
0 голосов
/ 06 августа 2009

Просто интересно, зачем тебе это встраивать? Разве вы не можете просто добавить в App-LocalResources и App-GlobalResources и использовать его оттуда?

Кроме того, вы обнаружите, что если вы не вызовете base.InitializeCulture (), язык будет работать беспорядочно. Вы должны создать базовую страницу и наследовать от этого. Как это:

protected class BasePage : System.Web.UI.Page
{
     protected override void InitializeCulture(object sender, EventArgs e)
     {
          this.Culture = Resources.Culture = Thread.CurrentThread.CurrentUICulture;

          base.InitializeCulture();
     }
}

Надеюсь, это поможет.

0 голосов
/ 27 июня 2009

Почему вы не используете GetLocalResourceObject или GetLocalResourceObject ?

...