Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Archa4 от Февраль 18, 2011, 13:00



Название: ??? вместо рус. языка
Отправлено: Archa4 от Февраль 18, 2011, 13:00
Вообщем пытаюсь показать такую вещь:
Код:
originalName = new QLabel("Название: " + originalName_par);

и получаю вместо "Название" несколько знаков вопроса (выглядет примерно так:
????????: The Mechanic

Почитал форум - тут вроде все пишут о том как рус. буквы заменяются иероглифами и т.д. о вопросах так ничего и не нашёл. Совсем не давно начал Qt поэтому лучше поподробней, если можно.
СПС!


Название: Re: ??? вместо рус. языка
Отправлено: Пантер от Февраль 18, 2011, 13:05
Читай раздел Internationalization with Qt в ассистенте. И не используй кириллицу в исходниках.


Название: Re: ??? вместо рус. языка
Отправлено: Archa4 от Февраль 18, 2011, 13:15
А как тогда мне делать, если не использовать кирилицу в исходниках?


Название: Re: ??? вместо рус. языка
Отправлено: Пантер от Февраль 18, 2011, 13:23
Писать на английском, оборачивая это в QObject::tr и переводить Кьютовыми средствами.


Название: Re: ??? вместо рус. языка
Отправлено: serg_hd от Февраль 18, 2011, 13:24
1.
Код
C++ (Qt)
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
 
QTextCodec* tc = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(tc); //для всего, что заключено в tr()
QTextCodec::setCodecForCStrings(tc); //для строк
QTextCodec::setCodecForLocale(tc); //для локали
 
//....
 
}
 

2.
а лучше так - http://forum.try-catch.ru/index.php?topic= 193.0 (без пробела перед "193")

3. А ещё лучше - поиск по форуму, тема стотыщ раз поднималась.


Название: Re: ??? вместо рус. языка
Отправлено: BRE от Февраль 18, 2011, 13:24
А как тогда мне делать, если не использовать кирилицу в исходниках?

Код
C++ (Qt)
originalName = new QLabel( tr( "Title: %1" ).arg( originalName_par ) );
 
и в дальнейшем переводить хочешь на русский, хочешь на монгольский.
Как это сделать, написано там, куда тебя Пантер направил.

Или если тихо, только для себя, то можно так (ВНИМАНИЕ! Исходники должны быть в Utf8):
Код
C++ (Qt)
originalName = new QLabel( trUtf8( "Название: %1" ).arg( originalName_par ) );
 

Еще тебе сейчас посоветуют использовать QTextCodec::setCodecFor...
Скажу так, лучше не надо, потом хлопоты могут появиться и перелопачивать много придется.  ;)


Название: Re: ??? вместо рус. языка
Отправлено: Archa4 от Февраль 18, 2011, 13:30
Спасибо за советы!