Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: sergeyvl12 от Август 25, 2009, 17:53



Название: [РЕШЕНО] QT и русский язык
Отправлено: sergeyvl12 от Август 25, 2009, 17:53
Добрый день!

Вобщем проблем я русским языком в QT у меня не было ... до сегодняшнего дня.

Сегодня прикрутил к модели таблицы русские названия хидеров:

Код:
QVariant CreditTableModel::headerData ( int section, Qt::Orientation orientation, int role ) const
{
    if ( role == Qt::DisplayRole && orientation == Qt::Horizontal )
    {
        switch( section )
        {
            case colPaymentDate:
                return "Дата";
            case colPaymentAmount:
                return "Сумма";
            case colPercent:
                return "Процент";
...
            default:
                return QVariant();

        }
    }

    return QVariant();

}

Вывелись каракули ...

И это при всем при том что остальные контролы (добавленные в дизайнере) выводятся нормально.

Посмотрел как это делается в ui_mainwindow.h и ужаснулся... Пример:

Код:
label_3->setText(QApplication::translate("MainWindow", "\320\224\320\260\321\202\320\260", 0, QApplication::UnicodeUTF8));

Люди добрые! Как мне програмно формировать нормальные русские сообщения?

P.S. Если я не пользуюсь дизайнером, а создаю все контролы програмно, все работает ок.


Название: Re: QT и русский язык
Отправлено: Пантер от Август 25, 2009, 17:57
Используй tr.


Название: Re: QT и русский язык
Отправлено: ecspertiza от Август 25, 2009, 18:10
Более поясню ты скорее всего пишешь под виндой а значит кодировка файла win1251 а Qt работает с Utf-8 поэтому у тебя и получаются каракули, у тебя есть два варианта либо использовать QTextCodec и каждое русское слово в коде перегонять в Utf-8 либо использовать локализацию ,а то бишь писать всё на английском и все слова в коде помещать в tr(), а потом при помощи QtLinguist переводить на любой угодный тебе язык, от себя добавлю второй вариант более приемлем.


Название: Re: QT и русский язык
Отправлено: BRE от Август 25, 2009, 18:16
Более поясню ты скорее всего пишешь под виндой а значит кодировка файла win1251 а Qt работает с Utf-8 поэтому у тебя и получаются каракули, у тебя есть два варианта либо использовать QTextCodec и каждое русское слово в коде перегонять в Utf-8 либо использовать локализацию ,а то бишь писать всё на английском и все слова в коде помещать в tr(), а потом при помощи QtLinguist переводить на любой угодный тебе язык, от себя добавлю второй вариант более приемлем.
И третий вариант: использовать QtCreator (может есть и другие среды), установив кодировку исходников Utf-8 и пользоваться trUtf8().


Название: Re: QT и русский язык
Отправлено: lit-uriy от Август 25, 2009, 19:02
>>Qt работает с Utf-8
Неа, не работает с UTF-8, внутреннее представление в UTF-16. А кодировка исходника сама по себе.


Название: Re: QT и русский язык
Отправлено: Пантер от Август 25, 2009, 19:11
Тролли рекомендуют не использовать расширенную таблицу для исходников.


Название: Re: QT и русский язык
Отправлено: ecspertiza от Август 25, 2009, 19:51
Во скока нового узнал :)


Название: Re: QT и русский язык
Отправлено: sergeyvl12 от Август 26, 2009, 09:20
спасибо всем!

пойду покурю лингвист


Название: Re: [РЕШЕНО] QT и русский язык
Отправлено: SASA от Август 26, 2009, 11:33
Просто укажи кодировку исходников. (у меня Windows-1251).
Код:
int main(int argc, char *argv[])
{
...
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
...
}
...
  return tr("Процент");
...


Название: Re: [РЕШЕНО] QT и русский язык
Отправлено: sergeyvl12 от Август 26, 2009, 11:59
Просто укажи кодировку исходников. (у меня Windows-1251).

Большое спасибо! Получилось :)