Жасмин Бланшет

Книги → QT 4: программирование GUI на С++ → Перевод приложений

Перевод приложения Qt, которое содержит вызовы tr(), состоит из трех этапов:

1. Выполнение утилиты lupdate для извлечения из исходного кода приложения всех видимых пользователем строк.

2. Перевод приложения при помощи Qt Linguist.

3. Выполнение утилиты lrelease для получения двоичных файлов .qm, которые приложение может загружать при помощи объекта QTranslator.

Этапы 1 и 3 выполняются разработчиками приложения. Этап 2 выполняется переводчиками. Эта последовательность действий может выполняться любое количество раз в ходе разработки приложения и на протяжении всего его жизненного цикла.

В качестве примера мы продемонстрируем перевод приложения Электронная таблица из главы 3. Приложение уже содержит вызовы tr() для всех видимых пользователем строк.

Во-первых, мы должны немного модифицировать файл приложения .pro, указав языки, которые мы собираемся поддерживать. Например, если бы мы хотели поддерживать кроме английского также немецкий и французский, мы бы добавили следующий элемент TRANSLATIONS в файл spreadsheet.pro:

TRANSLATIONS = spreadsheet_de.ts

\ spreadsheet_fr.ts

Здесь мы указали два файла переводов: один для немецкого языка и второй для французского языка.

Эти файлы будут созданы при первом выполнении утилиты lupdate, и затем они будут обновляться при каждом последующем выполнении lupdate.

Эти файлы обычно имеют расширение .ts. Они имеют простой формат XML и не столь компактны, как двоичные файлы .qm, которые «понимают» объекты типа QTranslator. В задачу утилиты lrelease входит преобразование предназначенных для людей файлов .ts в эффективное машинное представление в виде файлов .qm. Между прочим, сокращение .ts означает файл «translation source» (файл с исходным текстом перевода), а .qm — файл «Qt message» (файл сообщений Qt).

Предположим, что мы находимся в каталоге, который содержит исходный код приложения Электронная таблица, и тогда мы можем выполнить утилиту lupdate для spreadsheet.pro, задавая в командной строке следующую команду:

lupdate -verbose spreadsheet.pro

Опция —verbose указывает утилите lupdate на необходимость более интенсивной обратной связи, чем та, которая обеспечивается при нормальном режиме работы. Ниже приводятся сообщения, получения которых следует ожидать в результате работы утилиты:

Updating 'spreadsheet_de.ts'...

Found 98 source texts (98 new and 0 already existing)

Updating 'spreadsheet_fr.ts'...

Found 98 source texts (98 new and 0 already existing)

Все строки, которые задаются в вызовах функции tr() в исходном коде приложения, хранятся в файлах .ts (в том числе и псевдоперевод). Сюда также включаются строки из файлов приложения .ui.

По умолчанию утилита lupdate предполагает, что передаваемые функции tr() строки используют кодировку Latin-1. Если это не так, мы должны добавить элемент CODECFORTR в файл .pro. Например:

CODECFORTR = EUC-JP

Это должно быть сделано в дополнение к вызову QTextCodec::setCodecForTr() из функции приложения main().

Затем в файлы spreadsheet_de.ts и spreadsheet_fr.ts необходимо добавить перевод, выполненный при помощи Qt Linguist.

← предущий раздел следующая →

Страницы раздела: 1 2

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.