Название: Невозможно вывести русский текст без tr()-ов... Отправлено: Cyrax от Декабрь 17, 2007, 19:50 Заниматься сейчас переводами и tr-ами (хоть так и правильнее) не буду. Русский текст вывожу открыто, например:
Цитировать dep.setWindowTitle("русский текст"); Естественно, вместо русского текста каракули (просто не бывает, чтобы сразу было как надо - это факт).Почитал форум, провёл опыты: Цитировать QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); - ставлю в самом начале функции main (в этой же функции вывожу текст в заголовок окна) - не работаетЦитировать QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf8")); - тоже не работаетТе же 2 варианта (utf8 и Windows-1251) c setCodecForCStrings тоже не работает (получаю козяблики)... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: pastor от Декабрь 17, 2007, 19:59 Какая ось?
ЗЫ: А что так трудно писать tr? Сегодня не буш заниматься переводом интерфейса, а через меняц нужно будет. И что, буш седеть выискивать текст и добавлять tr? Интересный подход, к томуже неправильный... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: ритт от Декабрь 17, 2007, 20:09 дай угадаю...до кутей делфи мучал?
Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Cyrax от Декабрь 17, 2007, 20:39 Цитировать Какая ось? Windows XP Pro SP2Цитировать ЗЫ: А что так трудно писать tr? Сегодня не буш заниматься переводом интерфейса, а через меняц нужно будет. И что, буш седеть выискивать текст и добавлять tr? Интересный подход, к томуже неправильный... Возможно, и неправильный. Но сейчас так быстрее (не нужно думать над переводом). Потом время будет, сейчас - 3 недели...Цитировать дай угадаю...до кутей делфи мучал? Неа, "запуздыриванием иконки в трей" не занимаюсь. Delphi и Builder мучал когда-то.До Qt работал на C#. Сейчас пытаюсь достичь того комфорта, который был при C# (пока безуспешно)... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Icoz от Декабрь 17, 2007, 20:48 Попробуй так:
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); А вообще, тебе что, трудно писать tr()? Всего 4 дополнительных символа. И проблем нет, ни сейчас(по форумам лазить не надо), ни потом (интернационализация). Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: pastor от Декабрь 17, 2007, 21:14 Но сейчас так быстрее (не нужно думать над переводом). Потом время будет, сейчас - 3 недели... Для того чтобы заключить текст в tr над переводом думать ненужно. Ппереведёшь когда наступит время! Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: pastor от Декабрь 17, 2007, 21:21 Цитировать дай угадаю...до кутей делфи мучал? Неа, "запуздыриванием иконки в трей" не занимаюсь. Delphi и Builder мучал когда-то.Так тогда зачем ты держишь у себя это всё в переенных средах? Цитировать C:\GPL\Qt\4.3.1\bin;C:\GPL\MinGW\bin;C:\Program Files\ActiveState Komodo Edit 4.1\;c:\program files\Inprise\vbroker\AppServer\bin;C:\PROGRA~1\Borland\CBUILD~1\Bin;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;c:\program files\Inprise\vbroker\bin;C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland\Delphi7\Projects\Bpl\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\Autodesk Shared\;C:\Program Files\backburner 2\;C:\Program Files\Common Files\Adobe\AGL;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\GPL\MySQL\MySQL Server 5.0\bin Также почистить INCLUDE и LIB Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Cyrax от Декабрь 17, 2007, 21:39 Цитировать Так тогда зачем ты держишь у себя это всё в переенных средах? Потому что у меня это всё установлено. Не сносил, поскольку может понадобиться...Цитировать Также почистить INCLUDE и LIB У меня нет таких...Цитировать QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); Сейчас это почему-то работает, даже без QString():Цитировать dep.setWindowTitle("русский текст"); Цитировать Для того чтобы заключить текст в tr над переводом думать ненужно. Ппереведёшь когда наступит время! Ну ладно, пусть будет tr()...Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Hellraiser от Декабрь 17, 2007, 21:44 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")) Это надо устанавливать после создания объекта QApplication !!!- ставлю в самом начале функции main (в этой же функции вывожу текст в заголовок окна) - не работает Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Cyrax от Декабрь 17, 2007, 22:35 Цитировать Это надо устанавливать после создания объекта QApplication !!! Что будет, если поставить до ?У меня "до" работает... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: ритт от Декабрь 17, 2007, 23:50 у меня - тоже...
Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Sergeich от Декабрь 18, 2007, 00:25 Текст куда выводишь в консоль? или в гую?
Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: vaprele07 от Декабрь 18, 2007, 04:07 Желательно в нужной кодировке сохранять модули перед компиляцией, важный момент при работе с левыми иде типа Q~
Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: AlekSi от Декабрь 18, 2007, 08:42 +1 к написанию tr()
Хотя у меня и так работало. Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Вячеслав от Декабрь 18, 2007, 09:41 Да собственно наплевать когда кодек звать до или после создания QApp'а - он играет со статикой класса ;) Но из веселух - кодек один для всей проги - у меня студенты долго репу чесали почему половина виджетов кракозябами рисуеться ;)
PS Или в каждом нужном месте setCodec звать - IMHO tr проще ;) Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Cyrax от Декабрь 18, 2007, 10:10 Цитировать Текст куда выводишь в консоль? или в гую? Всё в GUI.Цитировать Желательно в нужной кодировке сохранять модули перед компиляцией, важный момент при работе с левыми иде Было подобное со скриптами в MySQL. Сохранил скрипт в DOS-кодировке, потом долго мучил MySQL, гадая почему тот русский текст козябликами выводит... Цитировать с левыми иде типа Q~ Q~ - это что ?Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: WW от Декабрь 18, 2007, 12:16 Неа, "запуздыриванием иконки в трей" не занимаюсь. Delphi и Builder мучал когда-то. Если жмут сроки - посмотри лучше в сторону Mono & Monodevelop. За 3 недели, что тебе отпущено на "большой проект" ИМХО с кути не разберешся и проект не закончишь. А там - пишешь на любимом шарпе в любимой студии, а потом только компилишь в моно.До Qt работал на C#. Сейчас пытаюсь достичь того комфорта, который был при C# (пока безуспешно)... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: -QT- от Январь 02, 2008, 21:15 Пока Вы .... :D уважаемые не попробуете
действительную кроссплатформенность то эти вопросы будут возникать постоянно. Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: juvf от Апрель 24, 2008, 09:32 Цитировать Невозможно вывести русский текст без tr()-ов... была такая проблема. решил следующим образом: QMessageBox::warning(this, QString::fromUtf8("Заголовок русскими буквами"), QString::fromUtf8("Не могу загрузить файл.xml"))); а русские стринги я так объявляю QString(QString::fromUtf8("Русский текст")); Пишу в FreeBSD, Kdevelop. (я думаю в винде также можно решить). Если не покатит, то нужно попробывать поменять fromUtf8() на более подходящее. Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Alex03 от Апрель 24, 2008, 11:04 juvf У Вас исходники в UTF8.
И в Вашем случае полезно заменить QString::fromUtf8() на trUtf8(),тогда будущая локализация будет несколько проще. :) Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: juvf от Апрель 25, 2008, 10:55 Alex03 спасибо за совет. попробую как-нибудь
Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Примерный ученик от Май 08, 2008, 10:54 Код: typedef char cKod[64]; пришем strUTF8("здесь был Вася"); Не очень красиво, зато работает без проблем VC6+QT338 Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Alex03 от Май 08, 2008, 16:26 ... tmikola что это? и зачем?пришем strUTF8("здесь был Вася"); Не очень красиво, зато работает без проблем Средствами Qt всё во всё преобразовывается без проблем, зачем такие извращения? Читайте асистента в конце то концов. Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Примерный ученик от Май 11, 2008, 19:21 А писать по английски, а потом переводить в Лингвисте, лично для меня - лишний гемморой.
Программа будет только на русском языке. А так, и тексте программы все по-русски, и на экране все по-русски... Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Alex03 от Май 12, 2008, 06:42 tmikola Если Вы не хотите играть по правилам троллтеха то это не значит что надо изобретать свой велосипед, к тому же кривой и не производительный (уж извините)...
Ещё раз повторю что в Qt всё есть, и изобретать свои алгоритмы конвертации строк ...... Ну хотя бы так можно (насколько я понимаю у Вас исходники в вин1251): Код: #include <QApplication> Более прямой способ - хранить исходники в UTF-8 и использовать trUtf8(). Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Примерный ученик от Май 14, 2008, 08:49 Я бы с удовольствием так сделал...
Но как заставить Визуал 6 понимать, что исходники на UTF8? Название: Re: Невозможно вывести русский текст без tr()-ов... Отправлено: Примерный ученик от Май 14, 2008, 18:01 tmikola Если Вы не хотите играть по правилам троллтеха то это не значит что надо изобретать свой велосипед, к тому же кривой и не производительный (уж извините)... Ещё раз повторю что в Qt всё есть, и изобретать свои алгоритмы конвертации строк ...... Ну хотя бы так можно (насколько я понимаю у Вас исходники в вин1251): Код: #include <QApplication> Более прямой способ - хранить исходники в UTF-8 и использовать trUtf8(). Этот способ меня полностью устраивает. Спасибо ;D |