LINUX.ORG.RU

Тривиальный вопрос по Qt4


0

0

Имеем QTextBrowser, которому скармливаем QStringList, в строках которого кирилица. В QTextBrowser видим крякозябы. Как делать это правильно? С QLocale не смог сам разобраться, в гугле советуют QTextCodec, но нигде внятно не написанно, как это применить в подобном случае.


Ответ на: комментарий от alex_custov

> QStringList l = QStringList() << QString::fromUtf8(«адын») << QString::fromUtf8(«два»);

Никогда так не делайте.

Я конечно понимаю, что UTF8 - Ъ, но делать зависимость от кодировки исходника моветон. Плюс гробится на корню локализация программы.

Если нужно локализовать интерфейс - используйте tr(«key»). Если какие-то свои внешние строки - используйте QTextStream и соответствующую кодировку. Другое - смотреть по ситуации.

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

> tr(«адын»), tr(«два») же!

Ответ неверный. Рантайм ничего не может сделать с кракозябрами, в которые будут преобразованы строки на этапе компиляции. Конечно же есть костыль QTextCodec::setCodecForTr(), но это хак, который рушит всю идею локализации с помощью QObject::tr(). Плюс опять же, делать программу зависимой от кодировки исходника - моветон. Да и как потом китаец, смотря в Лингвисте на ваши «адын» и «два», будет переводить это на свой родной язык?

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

>Да и как потом китаец, смотря в Лингвисте на ваши «адын» и «два», будет переводить это на свой родной язык?

вот поэтому я сначала пишу все ингришем, а потом перевожу в лингвисте

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

> но делать зависимость от кодировки исходника моветон.

ну а что делать, если ТС пишет русские буквы в исходнике? Предложить ему правильное решение?

name_no ★★
()

А я когда нужен только русскоязычный интерфейс использую trUtf8(«адын»)

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