MyTetra Share
Делитесь знаниями!
Локализация Qt-приложений. Плейсхолдеры - аргументы функции перевода tr()
Время создания: 20.03.2016 22:41
Текстовые метки: Qt, tr(), локализация, интернационализация, перевод, аргументы, порядок, последовательность
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Локализация
Запись: xintrea/mytetra_syncro/master/base/1440258386k2z7465sft/text.html на raw.github.com

Для перевода строк на другой язык, в Qt используется глобальная функция tr(). В коде программы все сообщения необходимо писать на английском языке, и оборачивать в вызов tr(). Далее в специальной программе Qt Linguist можно сделать перевод этих английских предложений.


Когда в середину строки нам понадобится вставлять значения каких-либо переменных, лучше всего использовать плейсхолдеры, обозначающиеся как %1, %2, %3 и т.д. Наполнение плейсхолдеров происходит через "цепочные" методы arg().


Например, при копировании файлов мы могли бы отображать ход процесса следующим образом:

void FileCopier::showProgress(int done,

int total,

                const QString tFile)

{

label.setText(tr("%1 of %2 files copied.\nCopying: %3").arg(done).arg(total).arg(currentFile));

}


Если потребуется изменить порядок аргументов при переводе, то в
Qt Liguist при заданиии строки перевода надо будет всего лишь поменять переменные с символом % местами, например, вот так:

"Копируем файл %3. %1 из %2 файлов скопировано."


То есть, в
Qt Liguist можно изменить последовательность плейсхолдеров %1, %2, %3... При этом никаких изменений в код программы не вносится.



 
MyTetra Share v.0.59
Яндекс индекс цитирования