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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод Qt - приложений на другой язык  (Прочитано 10916 раз)
Beginner
Гость
« : Декабрь 09, 2004, 12:56 »

При переводе Qt - приложений на другой язык, в частности на русский, программа lupdate не ловит все, что находится в ui.h. Например, текст в MessageBox. Может кто-нибудь сталкивался с этим?
Заранее благодарен!
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Декабрь 09, 2004, 13:41 »

пример кода в студию

возможные причины:

1. нет tr("Hello");
2. этот файл не включен в myproject.pro
Записан
Begimmer
Гость
« Ответ #2 : Декабрь 09, 2004, 14:00 »

Lupdate автоматически ставит функцию tr() в меню и диалоговых окнах. Там все нормально. А вот в MyProject.ui.h если есть текст для перевода, он не берет. Я пробовал добавить файл в MyProject.pro (HEADERS +=MyProject.ui.h). Не получается.
Для примера я пробовал перевести демонстрационную программу colortool из Qt Assistant. Все перевелось, кроме текста в MessageBox.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Декабрь 09, 2004, 15:56 »

всетаки tr стоит или нет?
Записан
Sergeich
Гость
« Ответ #4 : Декабрь 09, 2004, 17:35 »

Кроме подгрузкм своего *.qm файла попробуй подгрузить еще qm файл для qt-шной библиотеки $QTDIR/translations/qt_ru.qm
Записан
Beginner
Гость
« Ответ #5 : Декабрь 10, 2004, 07:06 »

tr() в тексте, который выводит MessageBox не стоит, в других местах стоит. Если вручную поставить tr(), начинает работать. Но в ui.h сконцентрированы практически все действия программиста по обработке событий. Их может быть очень много. Хотелось бы все-таки перевод автоматизировать, а не искать по всему файлу текст, требующий перевода.
Попробую проверить совет Sergeichа, потом напишу что получилось
Записан
Beginner
Гость
« Ответ #6 : Декабрь 10, 2004, 08:57 »

Подключение qt_ru.qm ничего не дает.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #7 : Декабрь 10, 2004, 09:42 »

В доке написано

Цитировать
Use tr() for all Literal Text
Wherever your program uses "quoted text" for text that will be presented to the user, ensure that it is processed by the QApplication::translate() function. Essentially all that is necessary to achieve this is to use QObject::tr(). For example, assuming the LoginWidget is a subclass of QWidget:


    LoginWidget::LoginWidget()
    {
        QLabel *label = new QLabel( tr("Password:"), this );
        ...
    }

This accounts for 99% of the user-visible strings you're likely to write.

и твое

Цитировать
tr() в тексте, который выводит MessageBox не стоит, в других местах стоит. Если вручную поставить tr(), начинает работать.


Так что это единтсвенный верный путь. Подругому не получится
Записан
Beginner
Гость
« Ответ #8 : Декабрь 10, 2004, 11:06 »

Ладно, уговорил!
Всем спасибо, кто нашел время ответить мне!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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