Название: Проблема с тайским и японским языком Отправлено: silverrulezz от Июнь 06, 2013, 13:42 Всем привет. Возникла проблема с локализацией в Qt 4.8.4 у конечного пользователя (продукт Windows only).
В основной программе все сделано по фэн-шую с помощью tr и qm файлов (в tr не используеться кириллица!!!). Динамическое изменение работает на ура. Но у конечного пользователя не отображается то тайский, то японский язык. С ивритом и арабским как ни странно у все все хорошо :) И ради теста написал маленькую утилиту с разными полями ввода Qt и тестовым выводом (http://www74.zippyshare.com/v/39453145/file.html). В данном случае я тестировал тайский. На моей машине понятное дело все хорошо (Windows 7 SP1 x64) http://myprintscreen.com/s/1370443845.72045383.png (http://myprintscreen.com/s/1370443845.72045383.png) У конечных пользователей происходит такое Windows 7 SP1 x64 http://myprintscreen.com/s/1370444007.21877715.png (http://myprintscreen.com/s/1370444007.21877715.png) Windows XP SP3 x86 http://myprintscreen.com/s/1370445975.99039718.png (http://myprintscreen.com/s/1370445975.99039718.png) Во время тестов на одной из машин сотрудника словили интересный баг (Windows 7 SP1 x64) http://myprintscreen.com/s/1370444305.72579412.png (http://myprintscreen.com/s/1370444305.72579412.png) Установили тайскую раскладку. Notepad++ и Word 2010 спокойно отображают напечатанный текст. Ни одно из полей ввода Qt (QTextEdit, QLineEdit, QPlainTextEdit) не отображает введенный текст. Но если из Microsoft Word 2010 скопировать тайский текст и вставить в QTextEdit то он отображает. Если после этого вводить тайский, то кракозябры. Если же удаляешь хотя бы один из вставленных символов тайского языка, то последующий ввод на тайском все правильно отображает. Мистика :) В тестовом примере пытался использовать все возможные комбинации с: Код: QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); но результат один и то же. И вот сижу и гадаю это я где то накосячил или же это проблема Qt? Подскажите пожалуйста что нужно сделать что бы у всех все одинаково и нормально отображалось :) Название: Re: Проблема с тайским и японским языком Отправлено: LisandreL от Июнь 06, 2013, 14:04 Может в используемом шрифте на клиентских машинах просто нету нужных букв?
Ну и + в Windows XP и ниже поддержка азиатских языков включалась Паели инструментов > Язык > Язык и региональные стандарты. Название: Re: Проблема с тайским и японским языком Отправлено: silverrulezz от Июнь 06, 2013, 16:01 Все гениальное - просто :) LisandreL ты оказался прав! Спасибо.
Мне приходила эта идея, но мне не повезло. Я попытался установить шрифт Courier New, но у сотрудника нечего так и не отобразилось и я пошел искать дальше. После твоего ответа я модернизировал тестовое приложение добавив: Код: QApplication::setFont(QFontDialog::getFont(0, QApplication::font())); и все стало на свои места. С Arial все заработало. У меня Qt по дефолту использует шрифт MS Shell Dlg 2 и как оказалось на машине сотрудника он "битый" и не отображает так же как у меня. В итоге запихну шрифт в ресурсы и буду устанавливать его. Код: QFontDatabase fontDatabase; Еще раз спасибо! Название: Re: Проблема с тайским и японским языком Отправлено: LisandreL от Июнь 06, 2013, 20:40 Все гениальное - просто :) LisandreL ты оказался прав! Спасибо. Практика просмотра видео с субтитрами устойчиво привила понимание, что то, что у тебя есть какой-то шрифт, ни разу не означает, что в этом шрифте у тебя есть нужные тебе символы. ^_^Название: Re: Проблема с тайским и японским языком Отправлено: IMPOMEZIA от Июнь 07, 2013, 13:46 А тайские символы разве не тормозят? процитирую себя
Цитировать в Qt 4.8 (только Windows) люто тормозят тайские символы, я нашёл причину, это происходит, потому что harfbuzz в qt на каждый чих пытается найти thai.dll http://linux.thai.net/projects/libthai это лечится поиском thai.dll либо выкидыванием всего из функции init_libthai() из src\3rdparty\harfbuzz\src\harfbuzz-thai.c Название: Re: Проблема с тайским и японским языком Отправлено: silverrulezz от Июнь 07, 2013, 16:17 Есть такое. 30+ языков проверил и только тайский при ресайзе главного окна дает о себе знать.
Сначала скачал отсюда http://www.isobuster.com/translations.php (http://www.isobuster.com/translations.php) Thai.dll и тормоза пропали. А потом ради теста создал пустой файл Thai.dll и тоже нормально стало работать :D Спасибо за наводку! Название: Re: Проблема с тайским и японским языком Отправлено: satmasterz от Июль 06, 2013, 19:40 Да ну нафиг такие языки кому нужны.
--------------------- http://fitoterapevt.pp.ua/likarski-roslini/kulbaba-likarska-vlastivosti-recepti-likuvannya |