@@ -26,7 +26,6 @@ SettingsWidget::SettingsWidget(int port, bool i18n, SonicPiSettings *piSettings,
26
26
this ->piSettings = piSettings;
27
27
this ->i18n = i18n;
28
28
this ->sonicPii18n = sonicPii18n;
29
- this ->localeNames = sonicPii18n->getNativeLanguageNameList ();
30
29
this ->available_languages = sonicPii18n->getAvailableLanguages ();
31
30
server_osc_cues_port = port;
32
31
@@ -53,25 +52,28 @@ SettingsWidget::SettingsWidget(int port, bool i18n, SonicPiSettings *piSettings,
53
52
QGroupBox *language_prefs_box = createLanguagePrefsTab ();
54
53
prefTabs->addTab (language_prefs_box, tr (" Language" ));
55
54
56
- if (!sonicPii18n->system_language_available ) {
57
- QGroupBox *translation_box = new QGroupBox (" Translation" );
58
- QVBoxLayout *translation_box_layout = new QVBoxLayout;
59
- QLabel *go_translate = new QLabel;
60
- go_translate->setOpenExternalLinks (true );
61
- go_translate->setText (
62
- " Sonic Pi hasn't been translated to " +
63
- QLocale::languageToString (QLocale::system ().language ()) +
64
- " yet.<br/>" +
65
- " We rely on crowdsourcing to help create and maintain translations.<br/>" +
66
- " <a href=\" https://github.com/sonic-pi-net/sonic-pi/blob/main/TRANSLATION.md\" >" +
67
- " Please consider helping to translate Sonic Pi to your language.</a> "
68
- );
69
- go_translate->setTextFormat (Qt::RichText);
70
- translation_box_layout->addWidget (go_translate);
71
- translation_box->setLayout (translation_box_layout);
72
-
73
- grid->addWidget (translation_box, 3 , 0 , 1 , 2 );
55
+ if (piSettings->language == " system_language" ) {
56
+ if (!sonicPii18n->isSystemLanguageAvailable ()) {
57
+ QGroupBox *translation_box = new QGroupBox (" Translation" );
58
+ QVBoxLayout *translation_box_layout = new QVBoxLayout;
59
+ QLabel *go_translate = new QLabel;
60
+ go_translate->setOpenExternalLinks (true );
61
+ go_translate->setText (
62
+ " Sonic Pi hasn't been translated to " +
63
+ QLocale::languageToString (QLocale::system ().language ()) +
64
+ " yet.<br/>" +
65
+ " We rely on crowdsourcing to help create and maintain translations.<br/>" +
66
+ " <a href=\" https://github.com/sonic-pi-net/sonic-pi/blob/main/TRANSLATION.md\" >" +
67
+ " Please consider helping to translate Sonic Pi to your language.</a> "
68
+ );
69
+ go_translate->setTextFormat (Qt::RichText);
70
+ translation_box_layout->addWidget (go_translate);
71
+ translation_box->setLayout (translation_box_layout);
72
+
73
+ grid->addWidget (translation_box, 3 , 0 , 1 , 2 );
74
+ }
74
75
}
76
+
75
77
settingsChanged ();
76
78
connectAll ();
77
79
setLayout (grid);
@@ -491,17 +493,20 @@ QGroupBox* SettingsWidget::createLanguagePrefsTab() {
491
493
492
494
language_combo = new QComboBox ();
493
495
add_language_combo_box_entries (language_combo);
494
- language_combo->setToolTip (tr (" Change the language of the UI & Tutorial (Requires a restart to take effect) " ));
496
+ language_combo->setToolTip (tr (" Change the language of the UI & Tutorial" ));
495
497
language_combo->setMinimumContentsLength (2 );
496
498
language_combo->setSizeAdjustPolicy (QComboBox::AdjustToMinimumContentsLength);
497
499
500
+ language_details_label = new QLabel;
501
+
498
502
language_info_label = new QLabel;
499
503
language_info_label->setText (tr (" Translations have been generously provided by volunteers \n on https://hosted.weblate.org/projects/sonic-pi/. Thank you! :)" ));
500
504
501
505
QVBoxLayout *language_box_layout = new QVBoxLayout;
502
506
503
507
language_box_layout->addWidget (language_option_label);
504
508
language_box_layout->addWidget (language_combo);
509
+ language_box_layout->addWidget (language_details_label);
505
510
language_box_layout->addWidget (language_info_label);
506
511
507
512
language_box->setLayout (language_box_layout);
@@ -572,22 +577,46 @@ void SettingsWidget::updateUILanguage(int index) {
572
577
573
578
QMessageBox msgBox (this );
574
579
msgBox.setText (QString (tr (" You've selected a new language: %1" )).arg (new_lang));
575
- QString info_text = tr (" Do you want to apply this language?" ) + " \n " + tr (" Applying the new language will stop any current runs & recordings, and restart Sonic Pi." );
580
+ QString info_text = (
581
+ tr (" Do you want to apply this language?" )
582
+ + " \n "
583
+ + tr (" The new language will be applied when you next start Sonic Pi." )
584
+ );
576
585
577
586
if (lang == " system_language" ) {
578
- info_text = tr (" System languages found %1" ).arg (sonicPii18n->getNativeLanguageNames (sonicPii18n->system_languages ).join (" , " )) + " \n " + info_text;
587
+ info_text = tr (" System languages found: %1" ).arg (sonicPii18n->getNativeLanguageNames (sonicPii18n->getSystemLanguages () ).join (" , " )) + " \n " + info_text;
579
588
}
580
589
581
590
msgBox.setInformativeText (info_text);
582
- QPushButton *restartButton = msgBox.addButton (tr (" Apply and Restart " ), QMessageBox::ActionRole);
591
+ QPushButton *applyButton = msgBox.addButton (tr (" Apply" ), QMessageBox::ActionRole);
583
592
QPushButton *dismissButton = msgBox.addButton (tr (" Cancel" ), QMessageBox::RejectRole);
584
- msgBox.setDefaultButton (restartButton );
585
- msgBox.setIcon (QMessageBox::Information );
593
+ msgBox.setDefaultButton (applyButton );
594
+ msgBox.setIcon (QMessageBox::Question );
586
595
msgBox.exec ();
587
596
588
- if (msgBox.clickedButton () == (QAbstractButton*)restartButton) {
589
- piSettings->language = lang;
597
+ if (msgBox.clickedButton () == (QAbstractButton*)applyButton) {
598
+ piSettings->language = lang;
599
+ updateSelectedUILanguage (piSettings->language );
600
+ emit uiLanguageChanged (piSettings->language );
601
+
602
+ language_details_label->setText (
603
+ tr (" <b>The new language will be applied when you next start Sonic Pi.</b>" )
604
+ + " "
605
+ + tr (" Current UI language: %1" ).arg (sonicPii18n->getNativeLanguageName (sonicPii18n->currentlyLoadedLanguage ()))
606
+ );
607
+
608
+ QMessageBox restartMsgBox (this );
609
+ restartMsgBox.setText (QString (tr (" Restart Sonic Pi?" )));
610
+ QString info_text = (tr (" Do you want to restart Sonic Pi now? This will stop any current runs & recordings." ));
611
+ QPushButton *restartButton = restartMsgBox.addButton (tr (" Restart" ), QMessageBox::ActionRole);
612
+ QPushButton *dismissButton = restartMsgBox.addButton (tr (" Dismiss" ), QMessageBox::RejectRole);
613
+ restartMsgBox.setInformativeText (info_text);
614
+ restartMsgBox.setDefaultButton (dismissButton);
615
+ restartMsgBox.setIcon (QMessageBox::Question);
616
+ restartMsgBox.exec ();
617
+ if (restartMsgBox.clickedButton () == (QAbstractButton*)restartButton) {
590
618
emit restartApp ();
619
+ }
591
620
// emit uiLanguageChanged(lang);
592
621
} else if (msgBox.clickedButton () == (QAbstractButton*)dismissButton) {
593
622
// Don't apply the new language settings
@@ -779,9 +808,8 @@ void SettingsWidget::updateSettings() {
779
808
void SettingsWidget::settingsChanged () {
780
809
language_combo->setCurrentIndex (available_languages.indexOf (piSettings->language ));
781
810
if (piSettings->language == " system_language" ) {
782
- language_info_label->setText (
783
- tr (" System languages: %1" ).arg (sonicPii18n->getNativeLanguageNames (sonicPii18n->system_languages ).join (" , " )) + " \n " + tr (" Current UI language: %1" ).arg (sonicPii18n->getNativeLanguageName (sonicPii18n->currently_loaded_language ))
784
- + " \n\n " + tr (" Translations have been generously provided by volunteers \n on https://hosted.weblate.org/projects/sonic-pi/. Thank you! :)" )
811
+ language_details_label->setText (
812
+ tr (" System languages: %1" ).arg (sonicPii18n->getNativeLanguageNames (sonicPii18n->getSystemLanguages ()).join (" , " )) + " \n " + tr (" Current UI language: %1" ).arg (sonicPii18n->getNativeLanguageName (sonicPii18n->currentlyLoadedLanguage ()))
785
813
);
786
814
}
787
815
0 commit comments