Использование русской кодировки в QML-файлах для проекта на C++ |
Здравствуйте, гость ( Вход | Регистрация )
Использование русской кодировки в QML-файлах для проекта на C++ |
Алексей |
16.1.2011, 13:32
Сообщение
#1
|
Студент Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создаю приложение С++, добавляю в него qml-файл для вывода интерфейса:
main.cpp
mainwindow.h
mainwindow.cpp
MainWindow.qml
В результате получаю набор квадратиков в место надписи на русском, поэтому хотел узнать как использовать qml файлы с русским интерфейсом и вслучае необходимости интернационализировать их - tr() в них у меня не получилось использовать. Единственный способ который я пока нашёл чтобы выводить в qml русские надписи - это выводить их через параметры - но это довольно трудоёмкое занятие и для некоторых программ которые не будут интернализироваться не имеет никакого смысла, поэтому хотелось бы узнать способ использовать русские символы в самом qml. |
|
|
igor_bogomolov |
16.1.2011, 14:30
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
Алексей |
16.1.2011, 16:48
Сообщение
#3
|
Студент Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0 |
не могу разобраться на какой объект и как нужно установить перевод (на само приложение перевод устанавливается и тестовые MessageBox появляются переведёнными), но вот окно из qml файла остаётся непереведённым MainWindow.qml (добавил qsTr) [/expand (добавил QTranslator)][expand=main.cpp]
|
|
|
Litkevich Yuriy |
16.1.2011, 18:23
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
igor_bogomolov |
16.1.2011, 19:58
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Алексей, судя по кодировке вы делаете это под Windows. Попробуйте сделать следующее:
1. Откройте файл MainWindow.qml в qtcreator что бы была возможность редактировать в виде текста 2. Переходим в меню "Правка"->"Выбор кодировки". Принудительно выставляем Utf8 3. Далее стираем русский текст и пишем его заново без всяких qsTr. Теперь qml файл у нас полностью в utf8 4. Компилируем, запускает. У меня после этого русский текст отобразился правильно. Т.е. отсюда вывод: qml файл должен быть в кодировк utf8 |
|
|
Алексей |
18.1.2011, 19:19
Сообщение
#6
|
Студент Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0 |
но вот окно из qml файла остаётся непереведённым а на какой язык ты переводил его?извеняюсь (поправить сейчас никак) я сюда скопировал безумный вариант перевода с русского на русский, который родился в безуспешных попытках) но вообще переводил с английского на русский Алексей, судя по кодировке вы делаете это под Windows. Попробуйте сделать следующее: 1. Откройте файл MainWindow.qml в qtcreator что бы была возможность редактировать в виде текста 2. Переходим в меню "Правка"->"Выбор кодировки". Принудительно выставляем Utf8 3. Далее стираем русский текст и пишем его заново без всяких qsTr. Теперь qml файл у нас полностью в utf8 4. Компилируем, запускает. У меня после этого русский текст отобразился правильно. Т.е. отсюда вывод: qml файл должен быть в кодировк utf8 Большое спасибо! заработало (и да под виндос) ПС но вот с интернализацией qml через С++ проблемы не решились даже с utf-8, поправил: MainWindow.qml (добавил qsTr)
main.cpp (добавил QTranslator)
|
|
|
Litkevich Yuriy |
18.1.2011, 19:53
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
qsTr("translated text") QTextCodec::setCodecForTr(QTextCodec::codecForName("CP-1251")); текст в QML-е в UTF-8 (если я правильно понимаю), а текстовыц кодек установлен в CP-1251.Посмотри в асистенте: распространяется ли действие setCodecForTr на QML? Если да, то причина понятна, если нет, то возможно там свой способ указания есть. |
|
|
igor_bogomolov |
18.1.2011, 22:12
Сообщение
#8
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Алексей, в аттаче рабочий пример, разбирайся.
Единственное замечание по сборке: важно правильное указание путей. exe, MainWindow.qml и папка i18n должны находиться в одном каталоге, который должен быть назначен как каталог запуска приложения. Об этом придётся позаботиться самому, скопировав, после компиляции, все требуемые файлы в одно место. Надеюсь понятно объяснил
Прикрепленные файлы
|
|
|
Алексей |
15.3.2011, 12:17
Сообщение
#9
|
Студент Группа: Участник Сообщений: 37 Регистрация: 29.8.2010 Пользователь №: 1988 Спасибо сказали: 0 раз(а) Репутация: 0 |
Насколько заметил в креаторе есть баг с русским буквами (необходимо каждый раз перегружать файл в UTF-8 после первого открытия его в дизайнере в сессии), так что если кто заинтересован поддержим:
http://bugreports.qt.nokia.com/browse/QTCREATORBUG-4040 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 7:06 |