Новость из категории: Информация

Qt Linguist: перевод внутри не наследников и Заключительные штрихи

Содержание:
1. Функция tr(), утилиты lupdate и lrelease;
2. Класс QTranslator и Смена языка интерфейса;
3. Перевод внутри не наследников и Заключительные штрихи (Вы читаете данный раздел).
Перевод внутри не наследников QObject

Qt Linguist: перевод внутри не наследников и Заключительные штрихи[/center]
Отдельного внимания заслуживает перевод внутри классов, которые не являются наследниками QObject. Ведь функция tr() - член именно этого класса. Есть два решения задачи: первая - вместо tr() пользоваться статичной функцией:
QString QCoreApplication::translate (const char *context, const char *sourceText, -
const char *disambiguation = 0, Encoding encoding = CodecForTr)

Она, как и tr(), распознается утилитой lupdate при сканировании исходного кода. Параметр context в ней - имя класса, а sourceText - строка, перевод которой вы желаете получить.

Второй вариант решения этой задачи - прибегнуть к знаменитой системе макросов Qt, которая творит чудеса. Если в описание класса добавить макрос Q_DECLARE_TR_FUNCTIONS, то функцию tr() можно будет использовать в функциях этого класса. Пример:
class MyClass
{
Q_DECLARE_TR_FUNCTIONS(MyClass)
public:
MyClass();
};

После такого объявления MyClass мы можем использовать в функциях этого класса функцию tr().

Заключительные штрихи

Существуют еще тонкости использования механизма перевода при работе Qt-приложения в системе Mac OS - они частично описаны в документации Qt. «Частично» потому, что вас отправляют за подробностями на недоступные веб-страницы. Я не знаток разработки ПО под Mac OS, поэтому посоветовать ничего не могу. И напоследок - об утилите lupdate. Когда вы удаляете из исходника некие строки, «помеченные» функцией tr (либо translate), при обработке исходника программой lupdate в TS-файлах остаются записи, относящиеся к удаленным строкам. Чтобы их не было, lupdate следует запускать с параметром -no-obsolete. Затем, конечно, следует скомпилировать TS-файлы при помощи lrelease или в Qt Linguist.

Итоги по Linguist

Qt Linguist: перевод внутри не наследников и Заключительные штрихи

Qt Linguist очень удобен для перевода - лучше, чем обычный текстовый редактор. В Qt Linguist можно быстро перемещаться к не имеющим перевода строкам, делать разные отметки, добавлять примечания, видеть статистику. Бывают иногда крайние случаи, когда файл перевода поврежден и Qt Linguist не может его открыть. Приходится прибегнуть к текстовому редактору, чтобы исправить XML-разметку вручную. Но лично я сталкивался с этим лишь однажды за много лет работы.



Графические утилиты интересует Вас гораздо меньше, чем игровые автоматы? В таком случае, Вам следует знать, что лучшие игровые гаминаторы представлены тут. Это отличные игровые автоматы с частыми выигрышами, которые определенно точно придутся Вам по вкусу!

Рейтинг статьи

Оценка
4/5
голосов: 3
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх