LINUX.ORG.RU

qt4 и русский язык


0

0

Возникла такая проблема:
Пишу программу с использованием qt4. Русский текст отображается
закорючками, причем если, скажем, текстовые метки устанавливать в 
дизайнере, то все нормально, а если делать это из
программы, например вызвать диалог открытия файла:
QString fileName = QFileDialog::getOpenFileName(this,
			tr("Открыть Файл"), "", tr("Любые файлы (*.*)")); 
То вместо русского текста появятся закорючки.
Системная локаль ru_RU.UTF-8, файл с исходниками тоже в utf8. Конструкции вида:
QString text = "Что-нибудь";
QLabel *label =new QLabel(text.toUtf8);
тоже не помогают (получаются другие закорючки).

> tr("Открыть Файл")
Будет правильнее, если сделать tr("Open file"), а при старте подгружать соответствующую локаль:
        QTranslator appTranslator;
        appTranslator.load("application_name_" + QLocale::system().name(),
                        qApp->applicationDirPath());
        app.installTranslator(&appTranslator)

UVV ★★★★★
()
Ответ на: комментарий от UVV

Спасибо. Правда я уже нашел иной более подходящий в данный момент способ
решения (использовать Linguist мне не хотелось т.к. интерфейс только на 
русском):  оказывается по умолчанию Qt для tr() использует кодировку
Latin1, пришлось ей указать что юникод решает. :)
QTextCodec *wantUnicode = QTextCodec::codecForName("UTF-8");
	QTextCodec::setCodecForTr(wantUnicode);

riko
() автор топика
Ответ на: комментарий от riko

> (использовать Linguist мне не хотелось т.к. интерфейс только на русском)
Настоятельно рекомендую использовать Linguist, т.к. нужность i18n может подкрасться незаметно! ;-)
Да и вообще, лучше для себя выработать принципы "правильного" программирования!

UVV ★★★★★
()
Ответ на: комментарий от vgudkov

toUtf8 неправильно т.к получаем многобайтную строку в utf8, чего конструктор QString не ожидает

vgudkov
()
Ответ на: комментарий от UVV

>Настоятельно рекомендую использовать Linguist, т.к. нужность i18n может подкрасться незаметно! ;-)

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

riko
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.