Соглашения о локализации
В данной статье описываются соглашения об интернационализации и локализации приложений, которые рекомендуются при разработке приложений для ОС Аврора.
Интернационализированный текст
Все читаемые пользователем строки в приложении должны быть встроены таким образом, чтобы их можно
было перевести.
Для этого можно использовать функции tr()
в C++ и qsTr()
в QML
или qtTrId()
в C++ и qsTrId()
в QML.
Первая пара функций предлагает более простой подход, в то время как вторая обеспечивает большую
гибкость в некоторых ситуациях.
Инструмент lupdate просканирует код C++ на предмет использования этих функций и сгенерирует
соответствующие выходные файлы перевода для приложения.
Функцию qtTrId()
рекомендуется использовать следующим образом:
//: Это контекстная строка, которая описывает переводчикам, в каком контексте будет отображаться строка
//% "Это перевод на инженерно-английский язык, т. е. строка, которую разработчик ожидает увидеть в английской локализации"
const QString exampleString = qtTrId("example_internationalised_string_id");
В QML аналогичным образом можно использовать функцию qsTrId()
.
Пример:
Button {
//: Этот текст будет отображаться на кнопке, при нажатии на которую приложение будет закрыто.
//% "Quit"
text: qsTrId("example_application-bt-quit")
onClicked: Qt.quit()
}
Строка, начинающаяся с //:
, указывает контекст, предоставляемый переводчику для помощи в переводе.
Такие строки всегда стоит добавлять, они полезны для переводчиков, но не обязательны.
Вторая строка, начинающаяся с //%
, указывает инженерный английский, резервный перевод, если правильный
перевод отсутствует.
Последняя строка создаёт фактический перевод.
Идентификатор формируется как <компонент>-<положение>-<описание>
.
Переносы строк
Не рекомендуется использовать переносы строк в переводах пользовательского интерфейса, поскольку
обычно переводы состоят из 1-2 предложений, а перенос строки может привести к неудачному
выравниванию текста.
Если нужно перевести несколько абзацев текста, следует использовать <\p>
или <br>
для переноса строки.
Двоеточия
В переводах двоеточия не поддерживаются. Если необходимы двоеточия, они добавляются на уровне кода. Следует обратить внимание, что для конструкций типа «ключ: значение» (например, выпадающие списки, информационные метки) двоеточия лучше не использовать. Вместо этого можно использовать цвет/выделение для различения двух элементов.