| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QTranslator, QString и кодировки... |
| Автор: sergey_85 21.5.2010, 08:10 | ||||||
| Привет! Столкнулся с проблемой при добавлении многоязычности в приложение. делаю ручной перевод (без tr, т.к. надписи и названия кнопок будут динамические) делаю так:
далее, загружаю динамически массив строк для перевода из файла, сливаю все это в QStringList и затем пытаюсь сделать перевод этих строк через мой QTranslator
...и вот тут начинает весь прикол, если в ф-цию translate(...) в параметре приходит английское слово, например Hello или Privet, то тогда перевод происходит без проблем возвращается перевод на русский к примеру Привет, НО вот если на вход translate(...) приходит русское слово, например Привет, то во-первых, параметр baseWords[i].toAscii() даёт мусор, а перевод не находиться, хотя слово перевода в файле там 100% есть!!! в main у меня стоят следующие кодеки:
...еще дополню, что слова для перевода грузятся из файла в кодировке в utf-8, а файл перевода qm в кодировке utf-8 Может кто сталкивался с такой проблемой, думаю что проблема у меня с кодировкой, но где??? использую Qt4.4.3 Спасибо за помощь! |
| Автор: _GRIN_ 22.5.2010, 15:48 | ||||||||||||
1.
следовательно раз на выходе
значит перевод дейстительно 100% есть и он найден и дело в кодировке 2.
т.е. так как tr() не используется, то данная настройка кодека ни к чему. 3.По идее установка кодека для С-строк должна правильно настроить QString::toAscii()
но может быть установка кодека не сработала по какой-либо причине. Я советую попробывать QString::toUtf8() вместо QString::toAscii(). Правда сам с таким не сталкивался, а проверить времени нет. З.Ы. Имхо отказ от tr() оправдан только в случае если в процессе эксплуатации добавляется перевод. Если же все строки так и так забиты в коде, то отказ от tr() не оправдан. Честно говоря интересно подробнее узнать о причине отказа от tr() |
| Автор: sergey_85 23.5.2010, 13:21 |
| почему отказался от tr(...) т.к. в программе динамический перевод, немного скажу, динамически грузиться gui (через ui loader), затем грузиться файл перевода и вот так вот идет перевод, фай перевода идет вместе с gui формой.. проблему пока не решил, как что так сразу напишу. спасибо за помощь! |