crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Неполная русификация QT
gogi
  опции профиля:
сообщение 7.7.2008, 9:42
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

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




Репутация:   0  


Многие классы QT содержат в своём коде статически забитый англоязычный текст.
Примеры:
- Контекстное меню QLineEdit вызываемое по щелчку правой кнопки мыши. Здесь присутствуют "Cut", "Copy" и т.д. Я даже нашёл в исходниках библиотеки то место, где эти надписи приписываются. Конечно можно в исходниках подправить на "Вырезать", "Копировать" и т.п. или же писать свой обработчик контекстного меню, но это всё кажется как-то сложно.
- QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

Наверняка найдётся и ещё куча подобного, если поискать.
Так вот, как всё это дело грамотно подправить?

Сообщение отредактировал gogi - 7.7.2008, 9:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 7.7.2008, 10:46
Сообщение #2


Программист-самоучка
***

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

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




Репутация:   3  


Цитата(gogi @ 7.7.2008, 9:42) *
QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

а ты пользуйся не статической функцией, а создай свой месседжбокс с нужными тебе кнопками и текст в них заключи в tr()...
дальше уже дело linguist'a...
Цитата(gogi @ 7.7.2008, 9:42) *
писать свой обработчик контекстного меню, но это всё кажется как-то сложно

а мне кажется что это не так уж и сложно... почти все базовые слоты есть готовенькие, тебе остается только создать само меню с экшенами и соединить их с нужными слотами
ЗЫ тем более если тебе надо в своей программе делать другое контекстное меню(что-то добавить или убрать) то тебе так или иначе придется писать свое контекстное меню
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
gogi
  опции профиля:
сообщение 7.7.2008, 11:39
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

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




Репутация:   0  


Цитата(void* @ 7.7.2008, 11:46) *
Цитата(gogi @ 7.7.2008, 9:42) *
QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

а ты пользуйся не статической функцией, а создай свой месседжбокс с нужными тебе кнопками и текст в них заключи в tr()...
дальше уже дело linguist'a...

Я в QMessageBox.h нашёл прототип функции
static int information(QWidget *parent, const QString &title,
                           const QString& text,
                           const QString& button0Text,
                           const QString& button1Text = QString(),
                           const QString& button2Text = QString(),
                           int defaultButtonNumber = 0,
                           int escapeButtonNumber = -1);

То, что нужно.
Странно, что она в хелпе не описана. Может быть оставлена для совместимости с ранними версиями?
Цитата(void* @ 7.7.2008, 11:46) *
Цитата(gogi @ 7.7.2008, 9:42) *
писать свой обработчик контекстного меню, но это всё кажется как-то сложно

а мне кажется что это не так уж и сложно... почти все базовые слоты есть готовенькие, тебе остается только создать само меню с экшенами и соединить их с нужными слотами
ЗЫ тем более если тебе надо в своей программе делать другое контекстное меню(что-то добавить или убрать) то тебе так или иначе придется писать свое контекстное меню

Сложно. В других библиотеках создал какой нибудь TEdit и ничего больше не надо делать. Всё стандартное поведение устраивает. А если мне надо в программе много раз использовать этот виджет? Тут надо писать либо производный класс (какой-нить QMyLineEdit в котором заменять менюшку) и из кода создавать объекты этого класса. Но тогда QT designer не запользуешь. Задача решаема-то, конечно, но неудобно.

PS Посмотрел, "болезнью" не только QLineEdit страдает, но и другие Edit'ы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 9.7.2008, 7:19
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


2 gogi
Точно всё забито и не меняется?
А ты русскую локализацию Qt к проге подключать пробовал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
gogi
  опции профиля:
сообщение 14.7.2008, 9:02
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

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




Репутация:   0  


Tonal, разобрался уже. Я просто не знал, что такая локализация есть, пока не глянул в QTDIR/translations
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.7.2008, 14:48
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


на самом деле, у тролей много попадается сообщений необрамленных в tr(), на прогорге этот вопрос поднимался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 6.6.2020, 22:58