Создаём файлы переводов в qt

Хотите создать приложение, доступное на многих языках? 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().

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий