crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Русификация стандартных окон
good_game
  опции профиля:
сообщение 6.2.2012, 10:12
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 18.8.2011
Пользователь №: 2815

Спасибо сказали: 1 раз(а)




Репутация:   0  


В разработанной программе используются стандартные диалоговые окна QFontDialog, QPrintDialog и тому подобные.
Подскажите, как их русифицировать? В них все подписи английские.
Тот же вопрос относится и к контекстному меню элементов работы с текстом: чтобы было не "Cut/Copy/Paste", а "Вырезать/Скопировать/Вставить". Можно, конечно, создавать своё меню из QAcion и прикреплять к виджету, но хотелось бы использовать уже готовые классы, а не изобретать велосипед.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
good_game
  опции профиля:
сообщение 6.2.2012, 12:19
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 18.8.2011
Пользователь №: 2815

Спасибо сказали: 1 раз(а)




Репутация:   0  


Как переводить приложение на другие языки, я знаю. Сгенерированы нужные ts-файлы, обработаны в QLinguist, созданы qm-файлы. В меню теперь можно выбирать язык и надписи в интерфейсе меняютс как надо... за исключением стандартных диалоговых окон и контекстного меню. Вот их то мне и осталось русифицировать.

Оу, прошу прощения. Пока писал своё сообщение, не заметил предыдущее. Сейчас попробую ваше решение.

Цитата(Sokoloff @ 6.2.2012, 11:37) *
Цитата(good_game @ 6.2.2012, 11:12) *
В разработанной программе используются стандартные диалоговые окна QFontDialog, QPrintDialog и тому подобные.
Подскажите, как их русифицировать? В них все подписи английские.
Тот же вопрос относится и к контекстному меню элементов работы с текстом: чтобы было не "Cut/Copy/Paste", а "Вырезать/Скопировать/Вставить". Можно, конечно, создавать своё меню из QAcion и прикреплять к виджету, но хотелось бы использовать уже готовые классы, а не изобретать велосипед.

Мы используем такой код:
QString locale = QLocale::system().name();

QTranslator *qtTranslator = new QTranslator(qApp);
qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
qApp->installTranslator(qtTranslator);

QTranslator *appTranslator = new QTranslator(qApp);
appTranslator->load(QString("${TRANSLATIONS_DIR}/${PROJECT_NAME}_%1.qm").arg(locale));
qApp->installTranslator(appTranslator);



Низкий поклон. Задача решена. Всё работает так, как хотелось.

Нет, поторопился. Оказалось, что не всё решено. Файл перевода берётся из директории, где установлен Qt.
Теперь стоит вопрос: а как его переносить на другую машину?
Попробовал запихать файл перевода (нужен qt_ru.qm) в ресурсы и указать так:
QTranslator *qtTranslator = new QTranslator(qApp);
    qtTranslator->load(":/translations/qt_tu.qm");
    qApp->installTranslator(qtTranslator);


Не получилось.

Затем попробовал его скопировать в директорию с приложением.
QTranslator *qtTranslator = new QTranslator(qApp);
    qtTranslator->load("qt_tu.qm", qApp->applicationDirPath());
    qApp->installTranslator(qtTranslator);


Тоже не получается. Что не так делаю?

Мда, невнимательно печатаю. Добавил в ресурсы. В коде:
QTranslator *qtTranslator = new QTranslator(qApp);
    qtTranslator->load(":/translations/qt_ru.qm"); // Было написано ":/translations/qt_tu.qm"
    qApp->installTranslator(qtTranslator);


Всё работает на любой машине. Всем спасибо за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 16:25