Название: Не пойму про русские буквы Отправлено: alex_beginner от Январь 10, 2012, 14:26 Делаю так:
Код: MainWindow::MainWindow(QWidget *parent) : В результате пишет по-нерусски. А Вот это из файла ui_MainWindow.h Код: label->setText(QApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\321\217 \320\275\320\260\321\207\320\260\320\273\320\260", 0, QApplication::UnicodeUTF8)); пишет по-русски (я думал, что сделал по аналогии, но видимо нет). Как сделать правильно? Название: Re: Не пойму про русские буквы Отправлено: Bepec от Январь 10, 2012, 14:30 Используй тег tr("") и QTextCodec.
Поясню - в файле интерфейса, используется кодировка UTF8(цифры это коды символов через слеш). Строчкой Код: QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); Код: #include <QTextCodec> Название: Re: Не пойму про русские буквы Отправлено: Пантер от Январь 10, 2012, 14:30 Не использовать кириллицу в исходниках. И поиском пользоваться.
Название: Re: Не пойму про русские буквы Отправлено: alex_beginner от Январь 10, 2012, 14:50 Цитировать QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); Спасибо, помогло. Но смущает "Windows-1251". А что произойдёт с этим проектом в линуксе? Можно как-то вместо "Windows-1251" как-то сказать "Та_которая_используется_в_системе" ? По поводу "Не использовать кириллицу" разберусь попозже. Пока не дорос... Название: Re: Не пойму про русские буквы Отправлено: Bepec от Январь 10, 2012, 14:54 Соглашусь с Пантером.
А использоваться в системе, может и не русская кодировочка :D QTextEdit::codecForLocale() - текущая кодировка системы, если не ошибаюсь. Название: Re: Не пойму про русские буквы Отправлено: Пантер от Январь 10, 2012, 14:59 http://doc.qt.nokia.com/4.8-snapshot/internationalization.html
Название: Re: Не пойму про русские буквы Отправлено: alex_beginner от Январь 10, 2012, 15:18 Вот так работает:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); А про интернационализацию почитал по ссылке маленько, и понял, что конечно же идти надо именно туда. Туда и пойду в итоге :D Спасибо. Название: Re: Не пойму про русские буквы Отправлено: BRE от Январь 10, 2012, 15:22 Вот так работает: Нет. Если ты попробуешь собрать свою программу на платформе с другой локалью, то вместо русских букв ты увидишь каракули.QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); Название: Re: Не пойму про русские буквы Отправлено: Пантер от Январь 10, 2012, 15:22 Лучше раньше туда пойти. ;)
Название: Re: Не пойму про русские буквы Отправлено: BRE от Январь 10, 2012, 15:24 Лучше раньше туда пойти. ;) +1 и не пользоваться костылями с setCodecForTr.Название: Re: Не пойму про русские буквы Отправлено: alex_beginner от Январь 10, 2012, 15:34 Уже убедили - практически уже пошёл :D
Теперь чисто познавательный вопрос - почему при использовании codecForLocale() на других платформах будут каракули? Цитировать Returns a pointer to the codec most suitable for this locale. On Windows, the codec will be based on a system locale. On Unix systems, starting with Qt 4.2, the codec will be using the iconv library. Почему может быть плохо? Название: Re: Не пойму про русские буквы Отправлено: andrew.k от Январь 10, 2012, 15:39 Потому что исходники у тебя в одной кодировке, а ты задаешь кодировку системы.
Надо вписывать жестко кодировку исходников, в твоем случае cp1251. Название: Re: Не пойму про русские буквы Отправлено: BRE от Январь 10, 2012, 15:39 Почему может быть плохо? В твоих исходных файлах русский текст набирается в кодировке W1251. Компилируешь, запускаешь - программа определяет локальную кодировку (W1251) и настраивает кодек - все нормально. Теперь программа собирается и запускается на платформе с другой кодировкой по умолчанию (заметь русский текст в твоих исходниках так и остался W1251), программа определяет кодировку по умолчанию как ... и опа. :)Название: Re: Не пойму про русские буквы Отправлено: alex_beginner от Январь 10, 2012, 15:53 Да, действительно...
А я чего-то думал, что у меня исходники в UTF8 всегда. Ладно, понятно... Получается, и комментарии нежелатьельно писать по-русски. Я ж их не прочитаю потом. Меня это не очень смущает, но... Я вот не в курсе - есть тут какие-то механизмы формирования документации к исходникам на основе комментариев? С этим как дело обстоит? Название: Re: Не пойму про русские буквы Отправлено: BRE от Январь 10, 2012, 15:59 А я чего-то думал, что у меня исходники в UTF8 всегда. Если у тебя исходники будут в utf8, то будет проще с разными платформами. Если используешь QtCreator, то там можно это настроить глобально.Тогда в качестве временной меры для использования русского текста можно будет использовать (не устанавливая никаких глобальных кодеков) trUtf8(). Название: Re: Не пойму про русские буквы Отправлено: ufna от Январь 10, 2012, 18:11 меня русские комментарии в тексте не в UTF всегда приводят в ужас. постоянно каракули ;D
На самом деле в development стадии юзать codecFotTr - абсолютно нормально, или когда ЦП винда европейская. А вот production серьезного продукта - там уже свои правила :) |