Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: dr_Begemot от Апрель 08, 2009, 12:26



Название: использование символов кирильницы
Отправлено: dr_Begemot от Апрель 08, 2009, 12:26
Имеется некий виджет на котором есть QLineEdit *edit.
При работе с редактором форм с символамаи кирильницы все отлично.
В функции main создаю экземпляр виджета и вызываю ф-ю: MyWidget->edit->setTitle("Кое что-по русски");

В результате, после MyWidget->show() на форме в строке edit имею следующее: "Êîå ÷òî-ïî ðóññêè"

Как с этим боротся?

P.S. проект запускаю в MS VS 2005


Название: Re: использование символов кирильницы
Отправлено: whirlwind от Апрель 08, 2009, 12:41
идеологически правильно использовать функцию tr() и прочие средсва интернационализации http://doc.trolltech.com/4.5/i18n.html

т.е. писать MyWidget->edit->setTitle(tr("Something in russian")); , потом формировать ts файл, редактировать его   linguist....

а можно попробовать подобрать  преобразование в QTextCodec, но это плохое решение.


Название: Re: использование символов кирильницы
Отправлено: Flake от Апрель 08, 2009, 14:09
Ещё QString::fromLocal8Bit("Привет") вроде работает, но самый правильный вариант приведён выше.


Название: Re: использование символов кирильницы
Отправлено: Racheengel от Апрель 08, 2009, 15:43
кодеки надо бы заюзать ДО создания QMainWindow...


Название: Re: использование символов кирильницы
Отправлено: BlackLagarto от Апрель 08, 2009, 23:24
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "QTextCodec"
#include "mainxml.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
   mainxml w;
   w.show();    
   return a.exec();
}

мне помогло  потом просто везде пишется tr("привет");


Название: Re: использование символов кирильницы
Отправлено: dr_Begemot от Апрель 14, 2009, 12:22
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "QTextCodec"
#include "mainxml.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
   mainxml w;
   w.show();    
   return a.exec();
}

мне помогло  потом просто везде пишется tr("привет");

спасибо, помогло)


Название: Re: использование символов кирильницы
Отправлено: tohisu от Декабрь 14, 2009, 15:32
Добрый день!
Тоже имею проблему с русскими символами в Qt.
Проблема с русским наблюдается абсолютно везде. Включая QtCreator / QtDesigner.
Удалось подлечить только QtCreator путем выбора шрифта. В designerе отображается только квадратик...
Перечитал несколько тем, но везде советы одни и те же. У меня работает только QString::fromLocal8Bit("Привет").
tr(),  QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); и все остальное не работает.

Библиотеки собирал сам. Система Ubuntu 9.10 системная локаль естественно UTF-8.
При сборке библиотек вроде никаких ключей дополнительных нету на этот случай...
Плиз самбади хэлп ми!


Название: Re: использование символов кирильницы
Отправлено: Dendy от Декабрь 14, 2009, 15:41
Простое правило: Не используйте кирилицу в коде. Вообще. Никогда. И будет вам счастье (-:


Название: Re: использование символов кирильницы
Отправлено: tohisu от Декабрь 14, 2009, 15:46
Это не выход!
В коде я ее использовать может и не буду, но не оборачивать же все в это уродство: QString::fromLocal8Bit(""). Тем более даже в дезигнере ничего не работает. Или настоящие_программисты_пробелом_не_пользуются? :)))) Надо как-то глобалоно это решить... С библиотеками которые скачивались из репозитроия все было нормально...

UPD
Так, немного поторопился...
Если в main поставить вызов QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")), то tr() работает корректно.
Но все равно можно ли обойтись без этого?


Название: Re: использование символов кирильницы
Отправлено: Dendy от Декабрь 14, 2009, 15:50
Что оборачивать собрались-то, кирилицу? Так ведь договорились её не использовать (-: Скриншот дезигнера, пожалуйста.


Название: Re: использование символов кирильницы
Отправлено: tohisu от Декабрь 14, 2009, 16:05
Примерно так выглядит:
(http://img340.imageshack.us/img340/3473/98297023.png)

В предыдущий пост добавил апдэйт. Т.е. tr() вроде заработал, но например такая конструкция все равно не проходит qDebug() << tr("").
Может все-таки при сборке библиотек надо что-то указать?


Название: Re: использование символов кирильницы
Отправлено: break от Декабрь 14, 2009, 16:53
Цитировать
Простое правило: Не используйте кирилицу в коде. Вообще. Никогда.

Неправильное это правило - как писать комменты по узкоспециализированным темам - по тематике в которой на русском не все понятно будет новому человеку а уж нга ломанном переведенном на английский и сам через месяц не разберешь...


Название: Re: использование символов кирильницы
Отправлено: Dendy от Декабрь 14, 2009, 17:33
tohisu, такое ощущение, что не всё в порядке со шрифтами.

break, ну хорошо, в комментариях, в узкоспециализированых задачах, при незнании английского, в коде только для себя - так и быть. Но не забывайте сохранять в UTF-8.


Название: Re: использование символов кирильницы
Отправлено: Пантер от Декабрь 14, 2009, 18:07
При переходе между платформами такого можно отгрести.... А еще многие редакторы насильно BOM пишут, от которого компиль не работает.
Если очень уж нужны русские символы, то можно создать файл по типу ini типа
Код:
str_0="Какая-то первая строка"
str_1="Какая-то вторая строка"
закинуть его в ресурс и юзать строки из него. Я, например, в таких случаях в коде пишу на транслите и перевожу в лингвисте.


Название: Re: использование символов кирильницы
Отправлено: break от Декабрь 14, 2009, 18:38
Цитировать
Я, например, в таких случаях в коде пишу на транслите и перевожу в лингвисте.

Эт мне кажется все таки изврат - от транслита тошнит, исходники только в UTF-8 храню - никогда никаких проблем не было - для вывода русских символов использую QString::fromUtf8



Название: Re: использование символов кирильницы
Отправлено: tohisu от Декабрь 16, 2009, 20:36
А счастье было так близко :)))
Спасибо всем за помощь! Полностью разобрался с проблемой!
Оказывается надо было в qtconfig выбрать нужный шрифт (я выбрал Arial) и все :)