Динамическая загрузка файла RESX не работает - PullRequest
1 голос
/ 11 февраля 2012

У меня есть веб-страница, которая должна отображаться на нескольких разных языках в зависимости от выбора пользователя. Для этого я использую файлы RESX для каждой веб-страницы asp.net. Я не хочу использовать автоматическое определение языка в браузере, но я хочу снова установить язык, основываясь на выборе пользователя. Для этого я делаю следующее:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es-MX", false);
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-MX", false);

OR

Page.Culture = "es-MX";
Page.UICulture = "es-MX";

Но ни один из них не работает должным образом! Я инициализирую Культуру в методе Init страницы, но он всегда будет отображать язык по умолчанию. Я проверяю значения этих свойств, и они корректно имеют культуру, но все еще не отображаются с помощью файла RESX. Есть идеи? Предложения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Если кто-то столкнется с этой проблемой при работе с Явная локализация , вот что нужно сделать:

protected override void InitializeCulture()
{
    Page.Culture = "en-US";
    Page.UICulture = "en-US";
}

С веб-сайта net-tutorials.com:

Поскольку директива Page является просто ярлыком для класса Page, это можно сделать и из CodeBehind.Тем не менее, мы должны сделать это в определенный момент, прежде чем страница будет отображаться, чтобы убедиться, что она дает желаемый эффект.Именно здесь вступает в игру метод InitializeCulture (), метод, который вызывается ASP.NET довольно рано в жизненном цикле страницы, который можно переопределить.

0 голосов
/ 12 февраля 2012

Попробуйте это System.Resources.ResourceReader resourceReader = новый System.Resources.ResourceReader ("RES_PATH");

Теперь вы можете использовать это для загрузки пользовательских языков, таких как es.resx

System.Resources.ResourceReader resourceReader 
    = new System.Resources.ResourceReader(HttpContext.Current.Request.UserLanguages[0] 
    + ".resource");
...