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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с переводом интерефейса.QTranslator.  (Прочитано 5424 раз)
TrimS
Гость
« : Июль 13, 2012, 12:19 »

Подскажи те как правильно работать с QTranslator.
Нарисовал форму, сделал логику. Сделал файл перевода. Установил через QTranslator требуемое направление перевода.
Проблема - все статические надписи переводятся хорошо. Но есть несколько надписей, где текст меняется в зависимости от условий. Так вот этот текст не переводится. Текст хранится в виде таких строк:
Код:
const QString start_txt			( QObject::tr("Start") );


Почему не происходит перевод? Как добится перевода динамически изменяемого текста?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Июль 13, 2012, 12:25 »

Покажи код подгрузки и установки перевода.
Записан

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

Код
C++ (Qt)
QApplication a(argc, argv);
 
TurnOffer w;
w.show();
 
QTranslator translator(&w);
translator.load(ru_localised_file);
a.installTranslator(&translator);
 
return a.exec();
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Июль 13, 2012, 13:07 »

Хм. А в самом файле перевода есть строки, которые у тебя не переводятся? Наверное, проще тебе минимальный компилябельный пример приложить, чтобы мы тут в телепатов не играли.
Записан

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

Код
C++ (Qt)
       QApplication a(argc, argv);
 
QTranslator translator(&w);
translator.load(ru_localised_file);
a.installTranslator(&translator);
 
       TurnOffer w;
       w.show();
 
return a.exec();
 
нэ?
Записан
TrimS
Гость
« Ответ #5 : Июль 13, 2012, 15:36 »

Пока не заработало. Теперь другая проблема - перевод вообще не работает.
Минимальный тестовый проект во вложении.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Июль 13, 2012, 15:44 »

Так низя
Код
C++ (Qt)
namespace // local
{
const QString start_txt ( QObject::tr("Start") );
const QString stop_txt ( QObject::tr("Stop") );
 
} // namespace
 
void UITranslationTests::ResetText()
{
static bool is_start = true;
is_start = !is_start;
 
ui.pushButton->setText(is_start ? start_txt : stop_txt);
}
 
делай
Код
C++ (Qt)
void UITranslationTests::ResetText()
{
static bool is_start = true;
is_start = !is_start;
 
ui.pushButton->setText(is_start ? QObject::tr("Start") : QObject::tr("Stop"));
}
 

И указывай полный путь к файлу перевода. Путь к исполняемому файлу можешь получить через QCoreApplication::applicationDirPath ().
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
TrimS
Гость
« Ответ #7 : Июль 13, 2012, 15:55 »

Печаль. Тоесть строки должны задаваться статически по месту пользования Грустный. Есть ли какой-нибудь способ избежать этого? (Чтоб был глобальный реестр строк)

И вопрос - почему начальное значение caption остаётся без перевода при запуске?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #8 : Июль 13, 2012, 15:58 »

Почитай внимательно в ассистенте раздел про интернационализацию.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #9 : Июль 13, 2012, 16:36 »

См. QT_TRANSLATE_NOOP

Также обрати внимание на комментарий Странник.

Цитировать
Note that the translator must be created before the application's widgets.
« Последнее редактирование: Июль 13, 2012, 16:40 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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