LINUX.ORG.RU

QT текст компонетов вставить в TR в дизанере

 


0

1

Подскажите как текст компонетов созданных в дизайнере вписать в функцию tr(«переводимый текст»);?
Можно ли это сделать при помощи дизанера или прийдется тексты всех компонетов переписывать в ручную в конструкторе?



Последнее исправление: cetjs2 (всего исправлений: 1)

ЕМНИП все строки из форм тоже вытаскиваются во время lupdate, так что ничего никуда вписывать не надо.

E ★★★
()

Оно уже тебе вписало все автоматом.
Смотри сгенерированный хэдер, там уже строки обернуты в подобие tr():

        actionRedo->setText(QApplication::translate("Otter::MainWindow", "Redo", 0));
        actionCut->setText(QApplication::translate("Otter::MainWindow", "Cut", 0));
        actionCopy->setText(QApplication::translate("Otter::MainWindow", "Copy", 0));
        actionPaste->setText(QApplication::translate("Otter::MainWindow", "Paste", 0));
        actionSelectAll->setText(QApplication::translate("Otter::MainWindow", "Select All", 0));
        actionFind->setText(QApplication::translate("Otter::MainWindow", "Find...", 0));
        actionFindNext->setText(QApplication::translate("Otter::MainWindow", "Find Next", 0));
        actionAddBookmark->setText(QApplication::translate("Otter::MainWindow", "Add Bookmark...", 0));
        actionManageBookmarks->setText(QApplication::translate("Otter::MainWindow", "Manage Bookmarks...", 0));
        actionReadFeeds->setText(QApplication::translate("Otter::MainWindow", "Read Feeds", 0));
        actionManageFeeds->setText(QApplication::translate("Otter::MainWindow", "Manage Feeds...", 0));
        actionAboutApplication->setText(QApplication::translate("Otter::MainWindow", "About Application...", 0));
        actionAboutQt->setText(QApplication::translate("Otter::MainWindow", "About Qt...", 0));
        actionZoomIn->setText(QApplication::translate("Otter::MainWindow", "Zoom In", 0));
        actionZoomOut->setText(QApplication::translate("Otter::MainWindow", "Zoom Out", 0));
        actionZoomOriginal->setText(QApplication::translate("Otter::MainWindow", "Zoom Original", 0));
        actionDelete->setText(QApplication::translate("Otter::MainWindow", "Delete", 0));

Тебе остается лишь добавить в твой проектный «*.pro»-файл такие строки:

TRANSLATIONS += appname_en.ts \
    appname_ru.ts \
    appname_es.ts

Потом запустить lupdate (Qt Creator -> Tools -> External -> Linguist -> Update translations (lupdate))

Открыть полученные файлы в программе Qt Linguist, перевести строки.

Затем в main.cpp добавить что-нибудь такое:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QTranslator qtTranslator;
    qtTranslator.load("qt_" + QLocale::system().name(),
            QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    app.installTranslator(&qtTranslator);

    QTranslator myappTranslator;
    myappTranslator.load("myapp_" + QLocale::system().name());
    app.installTranslator(&myappTranslator);

    ...
    return app.exec();
}

И приложение переведено.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Спасибо за подробную информацию.
Лингвист сам не переводит на небходимый язык?
Есть ли в интернете ресурс с готовыми типовыми фразами перевода интерфейса программы на разных языках мира?

mishapk
() автор топика
Ответ на: комментарий от mishapk

Лингвист сам не переводит на небходимый язык?

Нет, ты сам должен обработать строки, обрамленные tr();
Пример на скрине.

Есть ли в интернете ресурс с готовыми типовыми фразами перевода интерфейса программы на разных языках мира?

Не знаю про это. Если найдешь, напиши. Тоже интересно. Но большинство строк интерфейса можно тупо скопипастить из «*.ts»-файлов того же Linguist'a или Qt. А вообще там есть какой-то «Phrase Book», возможно через него как-то.

EXL ★★★★★
()
Ответ на: комментарий от mishapk

http://translate.google.com/toolkit/list?hl=en#translations/active

Только с конвертируй в *.po

UPD.

Ну и автоматических переводов много https://www.google.com.ua/search?q=po automatic translation

Только нужно искать *.po т.к. это вроде de facto стандарта.

frozenix ★★★
()
Последнее исправление: frozenix (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.