crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Локализация QCalendarWidget в QDateTimeEdit
proton
  опции профиля:
сообщение 14.12.2008, 12:58
Сообщение #1


Новичок


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

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




Репутация:   0  


Проблема со всплывающем календарем, он на английском =(
При этом с самим QDateTimeEdit все нормально, да и отдельно добавляемый QCalendarWidget тоже русифицирован.
PS: qt_ru.qm подгружен
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.12.2008, 13:58
Сообщение #2


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

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

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




Репутация:   94  


Цитата(proton @ 14.12.2008, 15:58) *
Проблема со всплывающем календарем
а что это такое? как виджет называется?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
proton
  опции профиля:
сообщение 14.12.2008, 14:22
Сообщение #3


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.12.2008, 13:58) *
Цитата(proton @ 14.12.2008, 15:58) *
Проблема со всплывающем календарем
а что это такое? как виджет называется?

Видимо я неправильно выразился.
Виджет QDateTimeEdit имеет всплывающий календарь типа QCalendarWidget.
Проблема в том, что этот самый календарь не русифицирован.
При этом:
1. текст QDateTimeEdit локализирован нормально
2. отдельно добавляемый на форму QCalendarWidget также локализирован
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.12.2008, 14:42
Сообщение #4


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

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

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




Репутация:   94  


proton, у меня все работает, только что код набросал:
int main(int argc, char *argv[])
{
  QApplication     app(argc, argv);
  QString        locale;        // язык локали
  QTranslator    *qttr;        // переводчик программы

  QCalendarWidget    *clnd;
  QDateTimeEdit        *dte;
  QVBoxLayout        *lay;
  QWidget            wgt;
  
    // Устанавливаем превод библиотек Qt
    locale = QLocale::system().name();    // запрос языка (например: "ru")
    qttr = new QTranslator;
    qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
    app.installTranslator(qttr);         // устанока переводчика  
    
    clnd = new QCalendarWidget();
    dte = new QDateTimeEdit();
    lay = new QVBoxLayout();
    
    dte->setCalendarPopup(true);
    
    lay->addWidget(clnd);
    lay->addWidget(dte);
    
    wgt.setLayout(lay);
    wgt.show();
    
    return app.exec();
}


вот и снимок
Прикрепленное изображение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
proton
  опции профиля:
сообщение 14.12.2008, 15:22
Сообщение #5


Новичок


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

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




Репутация:   0  


Цитата
вот и снимок

Забавно..
Прикрепленное изображение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.12.2008, 15:25
Сообщение #6


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

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

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




Репутация:   94  


proton, где у тебя лежит файл *.qm ? (полный путь напиши) и покажи как ты его подгружаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
proton
  опции профиля:
сообщение 14.12.2008, 15:35
Сообщение #7


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.12.2008, 15:25) *
proton, где у тебя лежит файл *.qm ? (полный путь напиши) и покажи как ты его подгружаешь?

#include <QApplication>
#include <QCalendarWidget>
#include <QDateTimeEdit>
#include <QVBoxLayout>
#include <QTranslator>
#include <QLocale>
#include <QString>

int main(int argc, char **argv)
{
    QApplication     app(argc, argv);
    QTranslator    *qttr;        // переводчик программы
    QCalendarWidget *clnd;
    QDateTimeEdit *dte;
    QVBoxLayout  *lay;
    QWidget wgt;

     // Устанавливаем превод библиотек Qt
    QString locale = QLocale::system().name();    // запрос языка (например: "ru")
    qttr = new QTranslator;
    qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
    app.installTranslator(qttr);         // устанока переводчика  

    clnd = new QCalendarWidget();
    dte = new QDateTimeEdit();
    lay = new QVBoxLayout();
    dte->setCalendarPopup(true);
    lay->addWidget(clnd);
    lay->addWidget(dte);
    wgt.setLayout(lay);
    wgt.setLocale(QLocale(QLocale::Russian, QLocale::RussianFederation));\
    wgt.show();
    return app.exec();
}


путь к .qm - /usr/share/qt4/translations/qt_ru.qm
раньше подгружал через qttr->load(QString("/usr/share/qt4/translations/qt_ru")); - эффект тот тот же
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.12.2008, 16:08
Сообщение #8


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

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

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




Репутация:   94  


Цитата(proton @ 14.12.2008, 18:35) *
qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
такая форма записи работает только в виндовозе, т.к. не указан путь.

Интересно, скомпилил с использованием Qt 4.4.3 qm-файл переименовал до не узноваемости (и тот, что в каталоге с бинарем и тот, что в каталоге translations) все равно все переведено :huh:
Значит перевод еще откуда-то подхыватывается, может из системы (локализация дней недели и месяцев)

закоментировал в своем пример кусок кода с загрузкой переводчика, все равно виджеты локализованые получаются!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 14.12.2008, 16:38
Сообщение #9


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Я так подозреваю что это правится либо в контрол-центре КДЕ либо системной командой locale
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.12.2008, 17:16
Сообщение #10


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

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

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




Репутация:   94  


Цитата(molchanoviv @ 14.12.2008, 19:38) *
Я так подозреваю что это правится либо в контрол-центре КДЕ либо системной командой locale
а в виндовозе?

proton, проведи еще один эксперимент, открой в дизайнере этот файл:
<ui version="4.0" >
<class>Form</class>
<widget class="QWidget" name="Form" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>218</width>
    <height>192</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" >
   <item>
    <widget class="QCalendarWidget" name="calendarWidget" />
   </item>
   <item>
    <widget class="QDateTimeEdit" name="dateTimeEdit" >
     <property name="calendarPopup" >
      <bool>true</bool>
     </property>
    </widget>
   </item>
  </layout>
</widget>
<resources/>
<connections/>
</ui>

у меня, в виндовозе, при предпросмотре формы в Дизайнере всегда отображается на русском.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 21.4.2021, 2:10