Хотите создать приложение, доступное на многих языках? Qt — идеальный вариант!
Приступим к созданию простейшего приложения с различными переводами…
Я не хочу углублятся в тонкости, поэтому создам обычное «hello world» приложение. Оно будет состоять из и текстовой метки, которую собственно и будем переводить..
Создайте пустой проект qt, в нём создайте файл main.cpp.
Он имеет такой вид:
#include <QtGui> #include <QtCore> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label(app.tr("Hello, World!")); label.show(); return app.exec(); }
Вы наверное уже обратили внимание на то, что текст метки заключён в функцию tr(). Это сделано для того, чтобы поддержать возможность создания переводов. Другой функцией указывающей переводимый текст является translate().
Теперь нам понадобится создать файлы ts для переводов. Для этого впишите строку в ваш pro файл проекта:
TRANSLATIONS += ru.ts en.ts
ru.ts и en.ts — соответственно файлы переводов для русского и английского языков.
Теперь нам необходимо сгенерировать эти файлы. Это делается при помощи утилиты lupdate. Выполните в каталоге проекта такую команду:
lupdate project.pro
- project.pro — имя проекта
После этого будут сгенерированны файлы ts.
Запустите Qt Lingvist и отредактируйте русский перевод. Просто откроейте в Qt Lingvist необходимый файл (у нас ru.ts) и укажите перевод необходимой строки. После чего нажмите Файл — Скомпилировать. Будет создан соответствующий qm файл. ts — xml файл, он слишком расточителен в ресурсах, поэтому используются qm файлы перводов.
Когда имеется готовый файл переводов его необходимо подключить. Это делается при помощи QTranslator. Вот так:
#include <QtGui> #include <QtCore> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator myTranslator; myTranslator.load(QLocale::system().name()); app.installTranslator(&myTranslator); QLabel label(app.tr("Hello, World!")); label.show(); return app.exec(); }
Я подчеркнул основные строки в листинге. В них мы создаём объект типа QTranslator, загружаем установленный в системе язык и устанавливаем транслятор.
Если вы не хотите устанавливать язык системы в приложении его можно задать при помощи имени qm файла.
PS учтите, что все строки, которые находятся в форме будут добавлены в файл переводов без проведения каких либо манипуляций. В коде же обязательно метить необходимые строки при помощи tr() или translate().