Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Не подставляется перевод строки, используется оригинальная англ. строка 
:(
    Опции темы
EGD
Дата 9.5.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



Здравствуйте,

есть вот такая функция. Она генерирует меню (один раз в конструкторе, присваивается FDictMenu), которое потом добавляется в основное меню при вызове оного (см. листинг 2).

Код

QMenu* SpellChecker::dictMenu() {
    QList<QString> dicts = SpellBackend::instance()->dictionaries();
    QMenu *menu = new QMenu(tr("Dictionary"));
    ...
    return menu;
}


Код

void SpellChecker::showContextMenu(const QPoint& pt)
{
    ...
    QMenu *menu = FTextEdit->createStandardContextMenu();
    ...
    menu->addSeparator();
    menu->addMenu(FDictMenu);
    ...
    menu->exec(FTextEdit->mapToGlobal(pt));

    if (sugMenu) {
        delete sugMenu;
    }
    delete menu;
}


Проблема следующая: при вызове меню tr("Dictionary") не заменяется переводом.

Перевод в ts-файле существует. lupdate говорит, что новых строк нет. Переводы для других пунктов из этого же ts-файла заменяют оригинальные названия.

Как эту проблему можно победить?

Спасибо.

Это сообщение отредактировал(а) EGD - 9.5.2012, 16:39
PM   Вверх
unclebenedict
Дата 10.5.2012, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.3.2012

Репутация: нет
Всего: нет



Может глупый вопрос конечно, но lrelease вызывали ? И подключали ли готовый *.qm файл к проекту ? Не работает только в этом конкретном месте или вообще в проекте ? Так по коду вроде ошибок нет.
PM MAIL   Вверх
EGD
Дата 10.5.2012, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



Цитата(unclebenedict @ 10.5.2012,  09:28)
Может глупый вопрос конечно, но lrelease вызывали ? И подключали ли готовый *.qm файл к проекту ? Не работает только в этом конкретном месте или вообще в проекте ? Так по коду вроде ошибок нет.

Собирал в ферме. Готовый *.qm не подключал. Да, не работает конкретно для этой строки, остальные переводятся.
PM   Вверх
bsa
Дата 11.5.2012, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



EGD, удали qm перевода. запусти. если перевод у всех строк пропадет, то скопируй свежий перевод и перезапусти прогу. Если удаление qm не приведет к отключению перевода, то ищи его в другом месте.
PM   Вверх
EGD
Дата 12.5.2012, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



bsa, не помогло. Я собираю в OBS - тут все стерильно как в операционной. Да и перед уставкой пакета все его имеющиеся файлы сначало удаляются.
PM   Вверх
_GRIN_
Дата 12.5.2012, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



а можно фрагмент *.ts файла посмотреть - конкретно то место, где для класса SpellChecker переводится строка Dictionary?
 - может он там так и переводится "Dictionary". - а может просто не переведён (именно оставлен без перевода). насколько я помню lupdate про новую строку скажет, только когда первый раз её в *.ts добавляет, а вот переведена имеющаяся в *.ts строка или нет он вроде как не отслеживает (хотя могу ошибаться).


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
EGD
Дата 13.5.2012, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



_GRIN_, вот

Код

    <message>
        <location filename="../../spellchecker.cpp" line="109"/>
        <source>Dictionary</source>
        <translation>Словарь</translation>
    </message>

PM   Вверх
bsa
Дата 14.5.2012, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



А контекст у тебя правильный? По-моему, ранние версии qt (4.5 и ниже, но не уверен) не поддерживали контексты. А новые версии для каждого класса свой контекст имеют. Возможно в этом проблема (возникнет в случае, когда у тебя на компе старая версия Qt, а в сборке используется новая).
PM   Вверх
EGD
Дата 14.5.2012, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



установаленная и учавствующая в сборке версия Qt одна и так же - 4.8.1.
PM   Вверх
_GRIN_
Дата 15.5.2012, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



EGD, можешь тут выложить простенький хеловорд, который на твоей машине повоторяет этот баг?
Я у себя его попробую прогнать - а то идеи кончились =)


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
EGD
Дата 16.5.2012, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



_GRIN_, вообще вот этот проект
http://code.google.com/p/vacuum-plugins/so...po=spellchecker

для сборки нужен вот этот
http://code.google.com/p/vacuum-im/source/browse/trunk

Позже выложу отдельный проект с меню.

Ошибка воспроизводится не только у меня.

Это сообщение отредактировал(а) EGD - 16.5.2012, 09:10
PM   Вверх
EGD
Дата 16.5.2012, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 25.10.2009

Репутация: нет
Всего: нет



Удалось выяснить в чем была проблема: так как, меню создавалось в конструкторе, то на данном этапе переводы не успевали загрузиться и использовался англ вариант для строки. Когда я перенес создание меню из конструктора в другое место, то перевод подтянулся корректно.

Спасибо всем кто принял участие в решение данной проблемы.
PM   Вверх
bsa
Дата 17.5.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



странно, обычно все объекты формы создаются в конструкторе формы. Особенно, когда форма в дизайнере сделана.
Ты случаем виртуальные какие методы не используешь в конструкторе?
PM   Вверх
math64
Дата 18.5.2012, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Переводы обычно загружаются в конструкторе Application.
Если здесь переводы загружаются в конструкоре MainWindow после вызова ui->setupUi(this); то меню останется не переведённым.
Нужно загрузить переводы до setupUi() или вызвать ui->retranslateUi(this) после загрузки переводов.
PS: здесь дизайнер не используется. Нужно загрузить переводы до создания gui или организовать самому retranslateUi(), особенно если предполагается возможность выбирать язык интерфейса.

Это сообщение отредактировал(а) math64 - 18.5.2012, 07:28
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.