Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [GTKmm] Кириллический текст на виджетах


Автор: Twelves 30.7.2011, 13:54
   Здравствуйте. Можно ли как-то разместить на виджетах текст на русском? при создании форм в Glade он хранит текст в шестнадцатеричных кодах, поэтому все хорошо отображается. а как быть при задании параметров прям в коде?

заранее благодарен за ответы

Автор: Amp 30.7.2011, 17:14
Кириллицу в коде лучше не использовать. Указывают английские имена, которые потом с помощью механизма локализации (своего или встроенного в библиотеку) переводятся и выводятся на нужном языке. Это является верным решением.

Автор: Twelves 1.8.2011, 09:21
хмм. просто у меня необходимость выводить в TextView текст, который формируется во время выполнения. 

Автор: Greeneyed 1.8.2011, 10:18
Используй функцию tr(). Например,  textView.setText(tr("Текст"))

Автор: borisbn 1.8.2011, 15:33
Greeneyed, в GTKmm (который ТС указал в заголовке) ф-ция i18n также называется, как и в Qt ? tr ?

Автор: Greeneyed 1.8.2011, 16:18
Извини. Не обратил внимания на GTKmm. Тогда я помочь не могу.

Автор: Amp 1.8.2011, 18:47
Там у них строки через gettext пропускаются с помощью макроса _. Это что касается локализации. Для самих же строк там свой велосипед - Glib::ustring.

Автор: Twelves 7.8.2011, 12:00
Amp, спасибо. буду читать о локализации

вот правда что-то слишком много мороки получится для очень маленького проекта. может все-таки есть какой-нибудь более простой способ? если что, я работаю под Windows

Автор: franzR 12.8.2011, 18:51
Юзай такую штуку, если еще актуально:
Код

QTextCodec *wincodec  = QTextCodec::codecForName("Windows-1251");
QLabel *lbl;
lbl->setText(wincodec->toUnicode("Кирилица"));


мне многу раз помогала.

Автор: borisbn 12.8.2011, 20:29
franzR, 
Цитата(borisbn @  1.8.2011,  15:33 Найти цитируемый пост)
в GTKmm (который ТС указал в заголовке) ф-ция i18n также называется, как и в Qt ? tr ?


Автор: Twelves 26.8.2011, 19:46
Нашел решение проблемы. Не знаю, почему про него нет упоминания нигде - ни на одном форуме, ни в одном мане. нашел в дебрях оф документации.
Cообщаю для тех, кому возможно будет нужно и он будет гуглить:

функция Glib::ustring Glib::locale_to_utf8(string &s);
Пример:
Код

set_title(Glib::locale_to_utf8("Теперь можно получать запросто текст в UTF-8"));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)