Russian Qt Forum
Ноябрь 23, 2024, 01:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: lupdate и namespace  (Прочитано 5192 раз)
SLiDER
Гость
« : Октябрь 25, 2006, 15:47 »

Тут вот какое дело. Решил коечто из своего софта интернационализировать. Уткнулся вот в такую проблему, lupdate оказывается (согласно документации и моим опытам) ни в какую не хочет воспринимать пространства имен (namespace). В качестве костыля тролями предлагается в начале каждого файла с исходниками, где используются функции tr() для класса MyClass в пространстве имен MyNamespace, писать вот такой коментарий
Код:
// TRANSLATOR MyNamespace::MyClass

И, типа, это должно помочь lupdate-у сформировать правильно имя контекста. Но не тут то было. Вобщем у меня это не работает. Пока вписываю правильное имя контекста в файл *.ts ручками, но как-то это не по человечески. Может кто сталкивался? Скажите, что я делаю не так?

Тестовый проектик можно взять здесь -> http://slil.ru/23301259. Файл bad_test_ru.ts сгенерен lupdat-ом, а test_ru.ts это уже моя ручная правка.

З.Ы. Qt4.2.0
Записан
noosooth
Гость
« Ответ #1 : Октябрь 25, 2006, 20:42 »

Попробуйте изобразить комментарий вот так:
Код:
/* 
TRANSLATOR MyNamespace::MyClass
*/

Вроде должно помочь.
Записан
SLiDER
Гость
« Ответ #2 : Октябрь 25, 2006, 21:27 »

Цитата: "noosooth"
Попробуйте изобразить комментарий вот так:
Код:
/* 
TRANSLATOR MyNamespace::MyClass
*/

Вроде должно помочь.


Спасибо, сработало. Но ... хммм ... Честно говоря это, в некотором роде, маразм.  :?  Ну да ладно.  Веселый
Записан
noosooth
Гость
« Ответ #3 : Октябрь 26, 2006, 17:24 »

Цитата: "SLiDER"
Спасибо, сработало. Но ... хммм ... Честно говоря это, в некотором роде, маразм.  :?  Ну да ладно.  Веселый


Это у нас такой 'забавный' норвежский парсер. Улыбающийся

Я кстати тут тоже некоторым образом озадачен.
В 4.2.0 'lrelease' перестал по умолчанию сжимать qm файлы.
Казалось бы добавляем опцию '-compress' и живем спокойно.

Но я случайно заметил такую неприятную вещь.
Генерирую из ts файла  сжатый qm - все нормально.
Генерирую из того же ts файла несжатый qm - перестают переводиться несколько строк из одного контекста.
Причем, всё остальное переводится нормально, даже из этого же контекста.
Бред какой-то.
Боюсь опять в норвежском королевстве неладно...
Хотя мог и сам напортачить.

Буду пробовать воспроизвести это на простом примере.

добавлено спустя 15 часов 36 минут:

 Виноват. Сам напортачил.
Просто для проблемных строк тупо передавался не тот контекст в QCoreApplication::translate(...)

Но вот ситуация, что при неверно переданном контексте
translate(...) находит перевод в сжатом qm и не находит в несжатом -
всё таки довольно странная.

Похоже что вот здесь написано как раз про этот случай.
Правда, насколько я могу судить теперь, это дело до сих пор не пофиксено.
Записан
SLiDER
Гость
« Ответ #4 : Октябрь 27, 2006, 10:37 »

У Бланшет в книге про Qt 4, в разделе про локализацию, есть упоминание о методе clear() который якобы есть у QTranslatora, который можно испльзовать для его (QTranslatora) очистки, что бы не лепить файл перевода с английского на английский, при динамической смене языка. Но этим методом в QTranslatorе и не пахнет, он есть в QTranslatorPrivate, но до него конечно же не добраться. Внимание вопрос: "Кто тут глючит, я или Бланшет, или может троли в версии 4.2 зачем-то отломали этот метод?". Не совсем понятно как быть в данной ситуации, можно конечно грузить в транслятор не существующий файл перевода (он, вроде бы, тогда сам сбрасывается), но как-то это криво.  :?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 21.