Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: xokc от Январь 11, 2011, 14:13



Название: Локализация плагина, создаваемого в другом потоке
Отправлено: xokc от Январь 11, 2011, 14:13
Суть проблемы в следующем. Локализую плагин и устанавливаю переводчик через qApp->installTranslator(translator). Всё было хорошо до тех пор, пока плагин не начал создаваться в другом потоке. Теперь qApp->installTranslator(translator) генерит Debug Error с сообщением о том, что мой translator создан не в том же потоке, что и основное приложение. Как с этим правильнее бороться - переносить создание всего плагина на уровень основного потока или ограничиться вывертами на тему где создавать translator?


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: ритт от Январь 11, 2011, 18:47
создавайте плагин в основном потоке приложения.


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: xokc от Январь 11, 2011, 20:59
Хотелось бы этого не делать. Плагин создаётся внутри потока сервера, который обрабатывает пользовательские запросы и в зависимости от типа запроса динамически грузит соответствующий плагин со своим собственным транслятором, а далее плагин взаимодействует с клиентом внутри того же потока и там же потом по пользовательскому запросу уничтожается. Пока не было необходимости в использовании локализации всё более-менее работало. Сейчас же наступает период сдачи работы заказчику - не хотелось бы сильно заморачиваться и переносить создание/удаление плагина в основной поток, опасаясь других "приятных" неожиданностей. Предпочел бы сейчас обойтись меньшим геморроем, а уж если будет сильно некрасиво поправить это дело на следующих этапах.


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: twp от Январь 11, 2011, 21:45
идея с загрузкой нужного транслятора на стороне сервера не очень хорошая, ведь в общем случае сервер может одновременно работать с несколькими клиентами, а транслятор устанавливается на все приложение. Сервер только одного клиента может обрабатывать или сразу несколько?


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: xokc от Январь 12, 2011, 06:18
Сразу несколько. Я эту ситуацию могу контролировать, введя глобальный (в рамках сервера) хеш трансляторов для всех плагинов.


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: ритт от Январь 12, 2011, 12:48
тогда moveTothread(qApp->thread()) транслятору?
но всё-равно, звучит неправильно...


Название: Re: Локализация плагина, создаваемого в другом потоке
Отправлено: xokc от Январь 12, 2011, 13:14
Ну да. Из простых решений остаётся только moveToThread. Попробую пока так, хотя мне тоже это как-то не кошерно.