Russian Qt Forum
Сентябрь 21, 2024, 17:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5] 6   Вниз
  Печать  
Автор Тема: Проблема с переключением языка  (Прочитано 41761 раз)
Den2009
Гость
« Ответ #60 : Декабрь 24, 2009, 20:40 »

Я уже забыл, что не работает?
много чего... ))
но пока я больше озабочен тем, что не переводится выводимая строка
Записан
Dendy
Гость
« Ответ #61 : Декабрь 24, 2009, 20:44 »

Не переводится когда именно?
Записан
Den2009
Гость
« Ответ #62 : Декабрь 24, 2009, 20:49 »

вообще никогда
ни когда перевожу приложение, ни когда уже в переведенном приложении жму кнопку "вычислить"
Записан
Den2009
Гость
« Ответ #63 : Декабрь 24, 2009, 22:36 »

счас заметил еще одну странность:
окно помощи сделал другое, заголовок окна задавал не в дизайнере, а вручную:
Код:
void MainWindow::helpBrowser()
{
    this->setWindowModality(Qt::NonModal);
    HelpBrowser* helpbrowser = new HelpBrowser("doc", "./help/index.html");
    helpbrowser->setWindowTitle(tr("Help")); //---------!!!!!!
    helpbrowser->resize(500, 400);
    helpbrowser->setMaximumSize(500, 400);
    helpbrowser->setMinimumSize(500, 400);
    helpbrowser->show();
}
естественно, поправил файл перевода... и этот заголовок тоже не переводится... получается, что описано в дизайнере и сохранено в ui - переводится, а что описано в коде - нет
Записан
Dendy
Гость
« Ответ #64 : Декабрь 24, 2009, 22:51 »

А вы уверены, что файл перевода у вас вообще подгружается? Что выдаёт QTranslator::load()? Наставьте брейкпоинтов, подебажьте и проверьте совпадает ли ожидаемое поведение программы от того, что у вас получилось.
Записан
Den2009
Гость
« Ответ #65 : Декабрь 24, 2009, 23:33 »

ну то, что файл перевода подгружается - уверен... остальное то переводится... с брейк-пойнтами попробую сейчас

фигня какая-то... если запускаю из креатора, то перевод не загружается и не переводится, а если запускаю из папки ехе-шник, то переводится все, кроме того, что описано в коде, а не создавалось в дизайнере
« Последнее редактирование: Декабрь 24, 2009, 23:43 от Den2009 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #66 : Декабрь 25, 2009, 12:46 »

Сегодня столкнулся с такой же проблемой. Вот код:
Код
C++ (Qt)
void GlobalPreferences::saveSettings()
{
if (currentTranslator) {//Текущий транслятор
QCoreApplication::removeTranslator(currentTranslator);
delete currentTranslator;
currentTranslator = 0;
}
currentTranslator = new QTranslator();
const QString& translatorPath = translationsList->currentItem()->data(Qt::UserRole).toString();//Путь к файлу с переводом
if (!translatorPath.isEmpty()) {
currentTranslator->load(translatorPath);
qApp->installTranslator(currentTranslator);
}
}
bool GlobalPreferences::event(QEvent *ev)
{
if (ev->type() == QEvent::LanguageChange) {
retranslateStrings();
}
 
return QWidget::event(ev);
}
void GlobalPreferences::retranslateStrings()
{
 qDebug(QApplication::translate("GlobalPreferences", "Translates").toLocal8Bit());//Выводится в соответствии с переводом
 qDebug(tr("GlobalPreferences", "Translates").toLocal8Bit()); //Всегда по-английски
}
 

И чего это за фигня? В файле перевода все строки переведены.

=========================
Ппц. Оказывается нужно обязательно указать макрос Q_OBJECT.
« Последнее редактирование: Декабрь 25, 2009, 12:49 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dendy
Гость
« Ответ #67 : Декабрь 25, 2009, 13:54 »

Во-первых, я так и не понял в чём проблема.
Во-вторых, да, для использования tr() нужен Q_OBJECT.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #68 : Декабрь 25, 2009, 14:32 »

Проблему я описал в коде, только тег кода сделал русские символы нечитаемыми:
  qDebug(QApplication::translate("GlobalPreferences", "Translates").toLocal8Bit());//Выводится в соответствии с переводом
  qDebug(tr("GlobalPreferences", "Translates").toLocal8Bit()); //Всегда по-английски

Q_OBJECT проблему решил.

Теперь еще одна проблема - как удалить текущий перевод. Мне кажется, что тролли конкретно промахнулись с тем, что не сделали вот такую вещь QList<QTranslator*> QCoreApplication::translators().
В данный момент у меня только одно решение - ввести в программу синглтон, в котором хранить список переводов. Но это делать как-то не очень хочется. Есть еще идеи?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dendy
Гость
« Ответ #69 : Декабрь 25, 2009, 15:18 »

Мне тоже кажется, что в Qt эта схема недоработана, поэтому в своих программах переключением языков занимается собственный класс, синглтон.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #70 : Декабрь 25, 2009, 16:57 »

Забабахал небольшой синглтончик, пока прокатит. Может троллям того самого, намекнуть?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dendy
Гость
« Ответ #71 : Декабрь 25, 2009, 17:25 »

Думаю они и сами прекрастно знают. У нас есть низкоуровневое API, этого достаточно. А высокоуровневое неизвестно как должно выглядеть.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #72 : Декабрь 25, 2009, 18:23 »

по мне да понятно как должно выглядеть высокоуровневое АПИ:
Нахомячиваем переводов в транслятор, псевдокод:
translator.add("path/to/translation/dir");
...
translator.setActive("ru");
и все приоги Улыбающийся
Записан

Юра.
Dendy
Гость
« Ответ #73 : Декабрь 25, 2009, 18:42 »

Высокоуровневое АПИ может выглядеть по разному, а нужно одно.

Дальнейший оффтоп будет удаляться.
Записан
Den2009
Гость
« Ответ #74 : Декабрь 26, 2009, 16:45 »

че-т я не совсем понял, как проблему с переводом решить... объясните, плиз, подоступнее
Записан
Страниц: 1 ... 3 4 [5] 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.