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


Автор: babutta 28.11.2008, 17:10
всем привет!

работаю с коммерческой Qt 4.4.3 собранной динамически и интегрированной в VS2005, версия интегратора 1.4.3. 

Проблема:
Текст в приложении выводится через tr() на русском...
понадобилось добавить в приложение поддержку английского языка...

Полез в студии в главное меню ->Qt->Create New Translation File
далее в открывающемся списке выбрал язык English (United States), ввел имя типа english.ts
потом в Solution Explorer в появившемся узле Translation Files->english.ts в контекстном меню выбрал Run lupdate.
потом в том же контекстном меню Open with Qt Linguist.

И вижу такую картину:
в созданном ts файле мой текст на русском содержащийся в ui файле приложения отображается нормально, т.е. как кириллица,
а вот все остальное, что было через tr() написано в cpp файлах отображается как ...абра-кадабра, 
например было в исходниках слово ошибка стало в ts файле îøèáêà
я открыл ui файл текстовым редактором AkelPad, который выдал Unix 65001 UTF-8 *BOM
открыл свои cpp-шники в том же AkelPad, он показал Win 1251 (ANSI Кириллица)...
попробовал перекодировать свои исходники в UTF-8 с этим BOM и без него - ситуация не поменялась =(
запускал ручками lupdate из командной строки - тотже резульатат, что и из-под студии...

помогите плиз...

Автор: SABROG 28.11.2008, 18:39
Цитата(babutta @  28.11.2008,  17:10 Найти цитируемый пост)
например было в исходниках слово ошибка стало в ts файле îøèáêà


ts по сути обычный xml, т.ч. правильно он тебе перекодировал.

Автор: babutta 1.12.2008, 08:29
т.е.? =)

я в общем понимаю, что, наверное, он там в шестнадцатеричном виде выдал  коды всех букв слова "ошибка", вроде того 0хEE 0xF8 0xE8 и т.д.

но... 
задача состоит в том, что бы поставить в соответствие каждой текстовой строке приложения для языка по умолчанию еще одну строку для поддерживаемого языка...
когда я  лингвистом (или в текстовом редакторе) открываю этот ts файл с кодами вместо кириллицы для правки, то там весь мой текст, который был на русском, "испорчен" и не читабелен...

как же мне переводить этот текст на английский?

может студию можно как-то заставить сохранять исходники в нужной кодировке?... я не нашел такого в настройках =(

Автор: babutta 1.12.2008, 09:09
Проблема решилась...

ответ найден здесь http://www.prog.org.ru/index.php?topic=4420.msg20227#msg20227
=)

в общем добавил в ts файл <defaultcodec>CP1251</defaultcodec> и лингвист все правильно понял =)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1">
<defaultcodec>CP1251</defaultcodec>
...
...
...
</TS>

Автор: Brodyaga 29.4.2010, 08:48
Вопрос в тему. Могу ли я использовав lupdate задать кодировку, которая будет в созданном ts файле, если натравливаю lupdate не на проект а на текстовый файл?

Автор: outrath 18.10.2022, 21:08
Модератор: Сообщение скрыто.

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