Наконец, в функции
Теперь нами рассмотрено все, что необходимо для обеспечения перевода приложения на другие языки. Но язык и направление записи не единственное, что отличает различные страны и культуры. Интернационализация программы должна также учитывать местные форматы дат и времени, денежных единиц, чисел и упорядоченность букв. Qt содержит класс
Поведение некоторых классов и функций Qt зависит от локализации:
• сравнение, которое осуществляет функция
• функция
• по умолчанию виджеты
Наконец, в переведенном приложении может потребоваться применение пиктограмм, отличных от используемых в оригинальной версии приложения. Например, стрелки влево и вправо на кнопках Back и Forward (назад и вперед) веб-браузера необходимо поменять местами для языка с записью справа налево. Мы можем это сделать следующим образом:
if (QApplication::isRightToLeft())
{
backAction->setIcon(forwardIcon);
forwardAction->setIcon(backIcon);
} else {
backAction->setIcon(backIcon);
forwardAction->setIcon(forwardIcon);
}
Обычно приходится переводить пиктограммы, содержащие буквы алфавита. Например, буква «I» на кнопке панели инструментов, отображающая опцию Italic (курсив) текстового процессора, должна быть заменена буквой «С» для испанского языка (Cursivo) и буквой «К» для языков датского, голландского, немецкого, норвежского и шведского (Kursiv). Ниже показано, как это можно просто сделать:
if (tr("Italic")[0] == 'C') {
italicAction->setIcon(iconC);
} else if (tr("Italic")[0] == 'K') {
italicAction->setIcon(iconK);
} else {
italicAction->setIcon(iconI);
}
Можно поступить по-другому и использовать средства ресурсной системы, обеспечивающие поддержку нескольких локализаций. В файле
Если пользовательской локализацией является
Динамическое переключение языков
Для большинства приложений вполне удовлетворительный результат обеспечивают определение предпочитаемого пользователем языка в функции
Обеспечение в приложении возможности динамического переключения языков требует немного большего, чем просто загрузка одного файла перевода при запуске приложения, но это нетрудно сделать.
Порядок действий должен быть следующим:
• предусмотрите средство, с помощью которого пользователь сможет переключаться с одного языка на другой;
• для каждого виджета или диалогового окна укажите все требующие перевода строки в отдельной функции (эта функция часто называется
Давайте рассмотрим соответствующую часть исходного кода приложения «call center» (центр заказов). Приложение содержит меню Language (язык), чтобы пользователь имел возможность задавать язык во время работы приложения. По умолчанию применяется английский язык.