Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Локализация QCalendarWidget в QDateTimeEdit
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
proton
Проблема со всплывающем календарем, он на английском =(
При этом с самим QDateTimeEdit все нормально, да и отдельно добавляемый QCalendarWidget тоже русифицирован.
PS: qt_ru.qm подгружен
Litkevich Yuriy
Цитата(proton @ 14.12.2008, 15:58) *
Проблема со всплывающем календарем
а что это такое? как виджет называется?
proton
Цитата(Litkevich Yuriy @ 14.12.2008, 13:58) *
Цитата(proton @ 14.12.2008, 15:58) *
Проблема со всплывающем календарем
а что это такое? как виджет называется?

Видимо я неправильно выразился.
Виджет QDateTimeEdit имеет всплывающий календарь типа QCalendarWidget.
Проблема в том, что этот самый календарь не русифицирован.
При этом:
1. текст QDateTimeEdit локализирован нормально
2. отдельно добавляемый на форму QCalendarWidget также локализирован
Litkevich Yuriy
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
Цитата
вот и снимок

Забавно.. Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
proton, где у тебя лежит файл *.qm ? (полный путь напиши) и покажи как ты его подгружаешь?
proton
Цитата(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
Цитата(proton @ 14.12.2008, 18:35) *
qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
такая форма записи работает только в виндовозе, т.к. не указан путь.

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

закоментировал в своем пример кусок кода с загрузкой переводчика, все равно виджеты локализованые получаются!
molchanoviv
Я так подозреваю что это правится либо в контрол-центре КДЕ либо системной командой locale
Litkevich Yuriy
Цитата(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>

у меня, в виндовозе, при предпросмотре формы в Дизайнере всегда отображается на русском.
molchanoviv
Так и у меня в сусе на русском. Потому и говорю чтоб покопался с системными настройками. А в винловозе эта фигня находится в панели управления/язык и региональные настройки(или что-то в этом роде).
Litkevich Yuriy
Цитата(molchanoviv @ 14.12.2008, 20:26) *
Так и у меня в сусе на русском.
и всплывающий календарь?
proton
Цитата(molchanoviv @ 14.12.2008, 17:26) *
Так и у меня в сусе на русском. Потому и говорю чтоб покопался с системными настройками. А в винловозе эта фигня находится в панели управления/язык и региональные настройки(или что-то в этом роде).

У меня на английском =(
Хотя локаль русская, да и в центре кдешном выбран Русский
Litkevich Yuriy
proton, что за ОСь у тебя, и версия Qt?

Настройки врятли помогут, ведь сам виджет (автономно) QCalendarWidget имеет локализацию.
molchanoviv
Цитата(Litkevich Yuriy @ 14.12.2008, 17:48) *
Цитата(molchanoviv @ 14.12.2008, 20:26) *
Так и у меня в сусе на русском.
и всплывающий календарь?

Да.

Цитата(proton @ 14.12.2008, 18:13) *
Цитата(molchanoviv @ 14.12.2008, 17:26) *
Так и у меня в сусе на русском. Потому и говорю чтоб покопался с системными настройками. А в винловозе эта фигня находится в панели управления/язык и региональные настройки(или что-то в этом роде).

У меня на английском =(
Хотя локаль русская, да и в центре кдешном выбран Русский

Все таки попробуй запустить с флагом LOCALE=ru_RU.UTF8
proton
Цитата(Litkevich Yuriy @ 14.12.2008, 18:37) *
proton, что за ОСь у тебя, и версия Qt?

Gentoo, 4.4.2

Цитата(molchanoviv @ 14.12.2008, 18:57) *
Все таки попробуй запустить с флагом LOCALE=ru_RU.UTF8

Наверно LC_ALL="ru_RU.UTF-8"?
Запускал, тот же эффект
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.