Если пользовательской локализацией является
Динамическое переключение языков
Для большинства приложений вполне удовлетворительный результат обеспечивают определение предпочитаемого пользователем языка в функции
Обеспечение в приложении возможности динамического переключения языков требует немного большего, чем просто загрузка одного файла перевода при запуске приложения, но это нетрудно сделать.
Порядок действий должен быть следующим:
• предусмотрите средство, с помощью которого пользователь сможет переключаться с одного языка на другой;
• для каждого виджета или диалогового окна укажите все требующие перевода строки в отдельной функции (эта функция часто называется
Давайте рассмотрим соответствующую часть исходного кода приложения «call center» (центр заказов). Приложение содержит меню Language (язык), чтобы пользователь имел возможность задавать язык во время работы приложения. По умолчанию применяется английский язык.
Поскольку мы не знаем, какой язык захочет использовать пользователь после запуска приложения, мы теперь не будем загружать файлы перевода в функции
Давайте рассмотрим подкласс
01 MainWindow::MainWindow
02 {
03 journalView = new JournalView;
04 setCentralWidget(journalView);
05 qApp->installTranslator(&appTranslator);
06 qApp->installTranslator(&qtTranslator);
07 qmPath = qApp->applicationDirPath + "/translations";
08 createActions;
09 createMenus;
10 retranslateUi;
11 }
В конструкторе мы устанавливает центральный виджет
• переменная
• переменная
• переменная
В конце мы вызываем закрытые функции
01 void MainWindow::createActions
02 {
03 newAction = new QAction(this);
04 connect(newAction, SIGNAL(triggered), this, SLOT(newFile));
05 …
06 aboutQtAction = new QAction(this);
07 connect(aboutQtAction, SIGNAL(triggered), qApp, SLOT(aboutQt));
08 }
Функция
01 void MainWindow::createMenus
02 {
03 fileMenu = new QMenu(this);
04 fileMenu->addAction(newAction);
05 fileMenu->addAction(openAction);
06 fileMenu->addAction(saveAction);
07 fileMenu->addAction(exitAction);
08 …
09 createLanguageMenu;