Здравствуйте, <Аноним>, Вы писали:
А>На что смотрит сабж при выборе культуры при вызове метода GetString()??? Не на UICulture потока, его вызывающего точно.
Если не указано, то на CurrentUICulture.
Выдрано рефлектором:
public virtual string GetString(string name, CultureInfo culture)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (culture == null)
{
culture = CultureInfo.CurrentUICulture;
}
...
... << RSDN@Home 1.1.4 beta 3 rev. 0>>
Re[2]: ResourceManager
От:
Аноним
Дата:
02.11.04 09:52
Оценка:
Здравствуйте, Сантехник, Вы писали:
С>Здравствуйте, <Аноним>, Вы писали:
А>>На что смотрит сабж при выборе культуры при вызове метода GetString()??? Не на UICulture потока, его вызывающего точно.
С>Если не указано, то на CurrentUICulture. С>Выдрано рефлектором: С>
Нихера. В CultureInfo.CurrentUICulture у меня стоит danish, но тянет все равно english. Причем первый раз изменение культуры потока отражается на ResourceManager, а потом он всегда тянет нейтральные ресурсы.
Здравствуйте, <Аноним>, Вы писали:
А>На что смотрит сабж при выборе культуры при вызове метода GetString()??? Не на UICulture потока, его вызывающего точно.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, <Аноним>, Вы писали:
А>>На что смотрит сабж при выборе культуры при вызове метода GetString()??? Не на UICulture потока, его вызывающего точно.
AVK>Точно на него.
Сам попробуй. Только сделай несколько потоков, у каждого свою культуру. И меняй ее довольно часто.
Здравствуйте, <Аноним>, Вы писали:
А>Нихера.
Низзя!
А>В CultureInfo.CurrentUICulture у меня стоит danish, но тянет все равно english.
В danish ресурсах точно нужные строки есть?
А>Причем первый раз изменение культуры потока отражается на ResourceManager, а потом он всегда тянет нейтральные ресурсы.
Что значит первый раз?
... << RSDN@Home 1.1.4 beta 3 rev. 0>>
Re[4]: ResourceManager
От:
Аноним
Дата:
02.11.04 10:06
Оценка:
Здравствуйте, Сантехник, Вы писали:
С>Здравствуйте, <Аноним>, Вы писали:
А>>Нихера. С>Низзя!
Ладно.
А>>В CultureInfo.CurrentUICulture у меня стоит danish, но тянет все равно english. С>В danish ресурсах точно нужные строки есть?
Точно.
А>>Причем первый раз изменение культуры потока отражается на ResourceManager, а потом он всегда тянет нейтральные ресурсы. С>Что значит первый раз?
Первый вызов System.Threading.Thread.CurrentTheread.CurrentUICulture приводит к тому, что ResourceManager.GetString() вытягивает правильные строки. Все последующие вызовы сбрасывают культуру на нейсральную. Причем только для потоков, запустившихся не первыми.
Здравствуйте, Аноним, Вы писали: А>>>Причем первый раз изменение культуры потока отражается на ResourceManager, а потом он всегда тянет нейтральные ресурсы. С>>Что значит первый раз? А>Первый вызов System.Threading.Thread.CurrentTheread.CurrentUICulture приводит к тому, что ResourceManager.GetString() вытягивает правильные строки. Все последующие вызовы сбрасывают культуру на нейсральную. Причем только для потоков, запустившихся не первыми.
Для каждого вновь созданного потока устанавливается требуемое значение?
Help will always be given at Hogwarts to those who ask for it.
Re[6]: ResourceManager
От:
Аноним
Дата:
02.11.04 11:04
Оценка:
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, Аноним, Вы писали: А>>>>Причем первый раз изменение культуры потока отражается на ResourceManager, а потом он всегда тянет нейтральные ресурсы. С>>>Что значит первый раз? А>>Первый вызов System.Threading.Thread.CurrentTheread.CurrentUICulture приводит к тому, что ResourceManager.GetString() вытягивает правильные строки. Все последующие вызовы сбрасывают культуру на нейсральную. Причем только для потоков, запустившихся не первыми.
_FR>Для каждого вновь созданного потока устанавливается требуемое значение?
Конечно. Шо я ламер
Re[4]: ResourceManager
От:
Аноним
Дата:
02.11.04 11:05
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, <Аноним>, Вы писали:
AVK>>>Точно на него.
А>>Сам попробуй.
AVK>А то я не пробовал
А>> Только сделай несколько потоков, у каждого свою культуру. И меняй ее довольно часто.
AVK>Вон у нас в сервере приложений культура задается каждым пользователем при логине. Все прекрасно работает.
У меня тоже работает, если один раз задать. Но если в процессе работы культуру менять по несколько раз, потом не работает!
Здравствуйте, Аноним, Вы писали:
А>У меня тоже работает, если один раз задать. Но если в процессе работы культуру менять по несколько раз, потом не работает!
Здравствуйте, <Аноним>, Вы писали:
AVK>>Вон у нас в сервере приложений культура задается каждым пользователем при логине. Все прекрасно работает.
А>У меня тоже работает, если один раз задать. Но если в процессе работы культуру менять по несколько раз, потом не работает!
А как ты представляешь себе один раз задать для сервера? У него на каждый вызов отдельный поток заводится.
Здравствуйте, Andrbig, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
А>>У меня тоже работает, если один раз задать. Но если в процессе работы культуру менять по несколько раз, потом не работает!
A>Мсье знает толк в извращениях!
Почему это извращение, имхо нормальная ситуация. Юзер захотел буквочки на другом языке, не рестартовать же все приложение!
Здравствуйте, Аноним, Вы писали:
A>>Мсье знает толк в извращениях!
А>Почему это извращение, имхо нормальная ситуация. Юзер захотел буквочки на другом языке, не рестартовать же все приложение!
Да ладно, не кипятись, это ж шутка. Я вон и смайлик поставил...
А серьезно — так одно из трех.
1. что не так в архитектуре программы — надо идти другим путем
2. что не так в самом НЕТе и... надо снова идти другим путем
3. ошибка в коде (ДНК или программы)
Дай небольшой пример того, как не срабатывет переключение м/д культурами — я посмотрю у себя, может что прояснится...
Re[6]: ResourceManager
От:
Аноним
Дата:
02.11.04 12:04
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, <Аноним>, Вы писали:
AVK>>>Вон у нас в сервере приложений культура задается каждым пользователем при логине. Все прекрасно работает.
А>>У меня тоже работает, если один раз задать. Но если в процессе работы культуру менять по несколько раз, потом не работает!
AVK>А как ты представляешь себе один раз задать для сервера? У него на каждый вызов отдельный поток заводится.
Пишу в сессию название культуры и в HttpApplication.PreRequestHandlerExecute ставлю потоку UICulture.
Здравствуйте, <Аноним>, Вы писали:
AVK>>А как ты представляешь себе один раз задать для сервера? У него на каждый вызов отдельный поток заводится.
А>Пишу в сессию название культуры и в HttpApplication.PreRequestHandlerExecute ставлю потоку UICulture.
Разбирайся в своем коде, ResourceManager работает нормально. Вот специально попробовал:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, <Аноним>, Вы писали:
AVK>>>А как ты представляешь себе один раз задать для сервера? У него на каждый вызов отдельный поток заводится.
А>>Пишу в сессию название культуры и в HttpApplication.PreRequestHandlerExecute ставлю потоку UICulture.
AVK>Разбирайся в своем коде, ResourceManager работает нормально. Вот специально попробовал: AVK>
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
namespace RMTest
{
class RMTest
{
static void Main()
{
for (int i = 0; i < 10; i++)
{
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
Thread.Sleep(500);
}
Console.Read();
}
private static void ThreadProc()
{
ResourceManager rm = new ResourceManager("RMTest.Resource1", typeof (RMTest).Assembly);
if (new Random(Environment.TickCount).Next(2) == 1)
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru");
Console.WriteLine(rm.GetString("Test"));
}
}
}
Выводятся разные строки. Опять не пойдет?
P.S. Мой тебе совет — не ищи ошибок в фреймворке, особенно в столь часто используемых классах, ищи ошибки у себя в коде.