Превеждане на интерфейса

Страницата е създадена на:15 април 2019 и редактирана на:15 април 2019

Информация относно възможностите за интернационализиране на Qt програмите има на страницата:

http://doc.qt.io/qt-5/internationalization.html

Ако създавате програма, чиито интерфейс искате в последствие да бъде преведен на няколко езика, всички стрингови константи, които очаквате, че ще се наложи да бъдат преведени „заграждайте“ с функцията tr(). С други думи, навсякъде, където в изходният код пишете стрингова константа, например: "some text", вместо това пишете: tr("some text").

Всички надписи, които се въвеждат по визуалния начин, биват добавяни в генериращия се автоматично програмен код точно по този начен, чрез функцията tr().

В проектния файл на вашата програма добавете имена за файловете с преводи, които възнамерявате да бъдат направени, например:

TRANSLATIONS += MyProg_bg.ts MyProg_de.ts

Тук MyProg е добре да съвпада с името на изпълнимия файл на програмата, а bg, de и т.н. са двубуквени съкращения на съответните езици.

Когато решите да пристъпите към превеждане на интерфейса на друг език, ако работите на Qt Creator, изпълнете командата от менюто:

Tools -> External -> Linguist -> Update Translations (lupdate)

Ако работите от команден ред, в директорията с .pro файла на проекта, подайте команда:

lupdate MyProject.pro

в която MyProject.pro е името на проектния файл на програмата, която пишете.

Инструмента lupdate, който се стартира с тези команди, анализира файловете с първичен код като намира местата, в които е използвана функцията tr(), и записва стринговите константи, които са нейни аргументи, във всеки от споменатите в проектния файл .ts файлове с преводи. Ако lupdate се изпълнява за първи път, .ts файлове още не съществуват и те се създават, а когато се изпълнява отново, в тях се добавят само новооткритите стрингови константи.

След създаване или актуализиране на файловете, които ще съхраняват, или вече съхраняват преводи, всеки от тях се отваря с програмата Linguist. С Linguist се извършва ръчно и самия превод на съответния език.

Linguist ще намерите в директория bin на инсталацията на Qt, която ползвате, но може и да направите настройка на Qt Creator и да добавите Linguist в меню: Tools -> External -> Linguist. За целта трябва да изберете команда от менюто:

Tools -> External -> Configure

и в прозореца за настройки да щракнете върху група външни инструменти Liguist, после върху падащия списък Add и опцията Add Tool от него. Напишете име на новия инструмент Linguist. Срещу полето Executable щракнете бутона Choose и чрез диалога за избор на файл намерете и изберете изпълнимия файл на Linguis. Щракнете бутон OK за да запазите настрийката.

За да може да се зарежда по време на изпълнение на програмата, изготвен с Linguist превод, преводът трябва да се запише във файл от тип .qm. Това се извършва с команда от менюто на Linguist:

File -> Release

За да се покаже интерфейса на програмата на текущия за системата език е необходимо във файл main.cpp, след дефиницията на променливата от клас QApplication, която представлява самото приложение:

QApplication app(argc, argv);

се вмъкват следните редове:

QTranslator translator;

translator.load("ИмеНаПрограма_" + QLocale::system().name());

app.installTranslator(&translator);

В обкръжението на програмата трябва да е дефинирана променлива LANG, която определя на какъв език да се покаже интерфейса й.

Бих препоръчал, за да се добавят автоматично .qm файловете на преводите в съставяните пакети за разпространение, тези файлове да се добавят в проекта като ресурси. Тогава редът в програмния код, който зарежда превод - да се промени така:

translator.load(":ИмеНаПрограма_" + QLocale::system().name());

Двоеточието в ":ИмеНаПрограма_" означава, че файлът с превода да се търси сред ресурсите на проекта.

Променливата LANG в обкръжението на програма със стойност, например, bg_BG (означаваща български_България) или en_US (английски_САЩ), задава стойността, която връща функция QLocale::system().name().

В Windows задаването на стойност на променлива LANG и стартирането на програмата може да се извърши с .bat файл.

В Mac OS X командата за стартиране от терминал е:

LANG=bg_BG open MyProg.app

В Linux стойността може да се зададе в командата, с която се стартира програмата. Например, ако искате да стартирате програмата MyProg с интерфейс на български, трябва да я стартирате с команда:

LANG=bg_BG MyProg

Използването на тази променлива е удобно за изпробване на преводи, без да се променят езиковите и регионални настройки на операционната система.

 

Направено с MyCMS. Copyright CC BY-ND 4.0.