Возникла такая проблема:
Пишу программу с использованием qt4. Русский текст отображается
закорючками, причем если, скажем, текстовые метки устанавливать в
дизайнере, то все нормально, а если делать это из
программы, например вызвать диалог открытия файла:
QString fileName = QFileDialog::getOpenFileName(this,
tr("Открыть Файл"), "", tr("Любые файлы (*.*)"));
То вместо русского текста появятся закорючки.
Системная локаль ru_RU.UTF-8, файл с исходниками тоже в utf8. Конструкции вида:
QString text = "Что-нибудь";
QLabel *label =new QLabel(text.toUtf8);
тоже не помогают (получаются другие закорючки).
> tr("Открыть Файл")
Будет правильнее, если сделать tr("Open file"), а при старте подгружать соответствующую локаль:
QTranslator appTranslator;
appTranslator.load("application_name_" + QLocale::system().name(),
qApp->applicationDirPath());
app.installTranslator(&appTranslator)
Спасибо. Правда я уже нашел иной более подходящий в данный момент способ
решения (использовать Linguist мне не хотелось т.к. интерфейс только на
русском): оказывается по умолчанию Qt для tr() использует кодировку
Latin1, пришлось ей указать что юникод решает. :)
QTextCodec *wantUnicode = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(wantUnicode);
> (использовать Linguist мне не хотелось т.к. интерфейс только на русском)
Настоятельно рекомендую использовать Linguist, т.к. нужность i18n может подкрасться незаметно! ;-)
Да и вообще, лучше для себя выработать принципы "правильного" программирования!