Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Beginner от Декабрь 09, 2004, 12:56



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


Название: Перевод Qt - приложений на другой язык
Отправлено: Admin от Декабрь 09, 2004, 13:41
пример кода в студию

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

1. нет tr("Hello");
2. этот файл не включен в myproject.pro


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


Название: Перевод Qt - приложений на другой язык
Отправлено: Admin от Декабрь 09, 2004, 15:56
всетаки tr стоит или нет?


Название: Перевод Qt - приложений на другой язык
Отправлено: Sergeich от Декабрь 09, 2004, 17:35
Кроме подгрузкм своего *.qm файла попробуй подгрузить еще qm файл для qt-шной библиотеки $QTDIR/translations/qt_ru.qm


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


Название: Перевод Qt - приложений на другой язык
Отправлено: Beginner от Декабрь 10, 2004, 08:57
Подключение qt_ru.qm ничего не дает.


Название: Перевод Qt - приложений на другой язык
Отправлено: Admin от Декабрь 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(), начинает работать.


Так что это единтсвенный верный путь. Подругому не получится


Название: Перевод Qt - приложений на другой язык
Отправлено: Beginner от Декабрь 10, 2004, 11:06
Ладно, уговорил!
Всем спасибо, кто нашел время ответить мне!