08 createActions();
09 createMenus();
10 retranslateUi();
11 }
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ JournalView ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ QTableWidget. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΊΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ βΡΠ»Π΅Π½ΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ:
β’ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ appTranslator ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ QTranslator, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
β’ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ qtTranslator ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ QTranslator, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Qt;
β’ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ qmPath ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ QString ΠΈ Π·Π°Π΄Π°Π΅Ρ ΠΏΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π·Π°ΠΊΡΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ createActions() ΠΈ createMenus() Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ΅Π½Ρ ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΊΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ retranslateUi() Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΠΈΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΡΡΠΎΠΊ.
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 }
Π€ΡΠ½ΠΊΡΠΈΡ createActions() ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ QAction ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π½ΠΎ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ ΠΈ ΠΊΠ»Π°Π²ΠΈΡ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ retranslateUi().
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();
10 helpMenu = new QMenu(this);
11 helpMenu->addAction(aboutAction);
12 helpMenu->addAction(aboutQtAction);
13 menuBar()->addMenu(fileMenu);
14 menuBar()->addMenu(editMenu);
15 menuBar()->addMenu(reportsMenu);
16 menuBar()->addMenu(languageMenu);
17 menuBar()->addMenu(helpMenu);
18 }
Π€ΡΠ½ΠΊΡΠΈΡ createMenus() ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ, Π½ΠΎ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΡ ΡΠ΅ΠΊΡΡ. Π ΡΠ½ΠΎΠ²Π° ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ retranslateUi().
Π ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ createLanguageMenu() Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ Language ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΡΠΊΠΎΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ retranslateUi():
01 void MainWindow::retranslateUi()
02 {
03 newAction->setText(tr("&New"));
04 newAction->setShortcut(tr("Ctrl+N"));
05 newAction->setStatusTip(tr("Create a new journal"));
06 β¦
07 aboutQtAction->setText(tr("About &Qt"));
08 aboutQtAction->setStatusTip(tr("Show the Qt library's About box"));
09 fileMenu->setTitle(tr("&File"));
10 editMenu->setTitle(tr("&Edit"));
11 reportsMenu->setTitle(tr("&Reports"));
12 languageMenu->setTitle(tr("&Language"));
13 helpMenu->setTitle(tr("&Help"));
14 setWindowTitle(tr("Call Center"));
15 }
ΠΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ retranslateUi() Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ tr() Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° MainWindow. ΠΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° MainWindow ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅Π½Ρ Language.
ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ QAction Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡ, ΠΊΠ»Π°Π²ΠΈΡΡ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π² ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Ρ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠ΅Π½Ρ QMenu.
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ ΡΠ°Π½Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΡ createMenus() Π²ΡΠ·ΡΠ²Π°Π»Π° ΡΡΠ½ΠΊΡΠΈΡ createLanguageMenu() Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ Language ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠΎΠ²:
01 void MainWindow::createLanguageMenu()
02 {
03 languageMenu = new QMenu(this);
04 languageActionGroup = new QActionGroup(this);
05 connect(languageActionGroup, SIGNAL(triggered(QAction *)),
06 this, SLOT(switchLanguage(QAction *)));
07 QDir dir(qmPath);
08 QStringList fileNames = dir.entryList(QStringList("callcenter_*.qm"));
09 for (int i = 0; i < fileNames.size(); ++i) {
10 QString locale = fileNames[i];
11 locale.remove(0, locale.indexOf('_') + 1);
12 locale.truncate(locale.lastIndexOf('.'));
13 QTranslator translator;
14 translator.load(fileNames[i], qmPath);
15 QString language = translator.translate("MainWindow",
16 "English");
17 QAction *action = new QAction(tr("&%1 %2")
18 .arg(i + 1).arg(language), this);
19 action->setCheckable(true);
20 action->setData(locale);
21 languageMenu->addAction(action);
22 languageActionGroup->addAction(action);
23 if (language == "English")
24 action->setChecked(true);
25 }
26 }
ΠΠΌΠ΅ΡΡΠΎ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠΎΠ² ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° .qm, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ translations. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΉΠ» .qm. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ clear() Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² QTranslator, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΄ΠΎΠ±Π½ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΠ·ΡΠΊΠ°ΠΌ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ .qm. ΠΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ Β«enΒ» Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ Β«deΒ» Π΄Π»Ρ Π½Π΅ΠΌΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° .qm, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ Π»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π Π΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ createLanguageMenu(), ΡΠΎΡΡΠΎΠΈΡ Π² Β«ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅Β» ΡΡΡΠΎΠΊΠΈ Β«EnglishΒ» (Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ) Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Β«MainWindowΒ». ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«DeutschΒ» ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° Π½Π΅ΠΌΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, Β«FrancaisΒ» ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΠΈ Β«β¦β¦β¦Β» ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° ΡΠΏΠΎΠ½ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ.
ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠΌΡ ΠΏΡΠ½ΠΊΡΡ ΠΌΠ΅Π½Ρ QAction Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·ΡΠΊ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π² Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡ QActionGroup, ΡΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠ³ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Language. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· Π³ΡΡΠΏΠΏΡ, ΠΎΠ±ΡΠ΅ΠΊΡ QActionGroup Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» triggered(QAction *), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·Π°Π½ Ρ switchLanguage().
01 void MainWindow::switchLanguage(QAction *action)
02 {
03 QString locale = action->data().toString();
04 appTranslator.load("callcenter_" + locale, qmPath);
05 qtTranslator.load("qt_" + locale, qmPath);
06 retranslateUi();
07 }
Π‘Π»ΠΎΡ switchLanguage() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ·ΡΠΊ ΠΈΠ· ΠΌΠ΅Π½Ρ Language. ΠΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Qt ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ retranslateUi() Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
Π ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΌΠ΅Π½Ρ Language ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ LocaleChange β ΡΠΎΠ±ΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Qt ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π΄Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Qt, Π½ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΈ ΡΠ·ΡΠΊΠ° Π½Π° ΠΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ). ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ LocaleChange ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ QWidget::changeEvent() ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
01 void MainWindow::changeEvent(QEvent *event)
02 {
03 if (event->type() == QEvent::LocaleChange) {
04 appTranslator.load("callcenter_"
05 + QLocale::system().name(), qmPath);
06 qtTranslator.load("qt_" + QLocale::system().name(), qmPath);
07 retranslateUi();
08 }
09 QMainWindow::changeEvent(event);
10 }
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π° Π΄ΡΡΠ³ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ retranslateUi() Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° changeEvent(), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ LocaleChange ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΠ° ΡΡΠΎΠΌ ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ Π½Π°Ρ ΠΎΠ±Π·ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° MainWindow. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ²βΠ²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ»Π°ΡΡΠ° JournalView, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°.
01 JournalView::JournalView(QWidget *parent)
02 : QTableWidget(parent)
03 {
04 retranslateUi();
05 }
ΠΠ»Π°ΡΡ JournalView ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ QTableWidget. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π·Π°ΠΊΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ retranslateUi() Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°. ΠΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° MainWindow.
01 void JournalView::changeEvent(QEvent *event)
02 {
03 if (event->type() == QEvent::LanguageChange)
04 retranslateUi();
05 QTableWidget::changeEvent(event);
06 }
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ changeEvent() Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° retranslateUi() ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ LanguageChange. Qt Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ LanguageChange ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° QTranslator, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² QApplication. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ load() Π΄Π»Ρ appTranslator ΠΈΠ»ΠΈ qtTranslator Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ MainWindow::switchToLanguage(), Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ MainWindow::changeEvent().