From a83c1eecd6472311d43105c86fc8fded4bf19068 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Mon, 23 Feb 2026 14:13:45 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Open=20windows=20in=20same?= =?UTF-8?q?=20location?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 10 +++ .../PreferencesVC+WindowRestore.swift | 87 +++++++++++++++++++ phpmon/Domain/Preferences/PreferencesVC.swift | 35 +++++++- phpmon/ar.lproj/Localizable.strings | 2 +- phpmon/bn.lproj/Localizable.strings | 2 +- phpmon/de.lproj/Localizable.strings | 2 +- phpmon/en.lproj/Localizable.strings | 2 +- phpmon/es.lproj/Localizable.strings | 2 +- phpmon/fr.lproj/Localizable.strings | 2 +- phpmon/hi.lproj/Localizable.strings | 2 +- phpmon/id.lproj/Localizable.strings | 2 +- phpmon/it.lproj/Localizable.strings | 2 +- phpmon/ja.lproj/Localizable.strings | 2 +- phpmon/nl.lproj/Localizable.strings | 2 +- phpmon/pt-PT.lproj/Localizable.strings | 2 +- phpmon/tr.lproj/Localizable.strings | 2 +- phpmon/vi.lproj/Localizable.strings | 2 +- phpmon/zh-Hans.lproj/Localizable.strings | 2 +- tests/ui/SettingsTest.swift | 2 - 19 files changed, 146 insertions(+), 18 deletions(-) create mode 100644 phpmon/Domain/Preferences/PreferencesVC+WindowRestore.swift diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 9b833974..457ba71d 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -84,6 +84,10 @@ 036061D92F4C705B00B5998F /* WindowManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061D62F4C705800B5998F /* WindowManager.swift */; }; 036061DA2F4C705B00B5998F /* WindowManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061D62F4C705800B5998F /* WindowManager.swift */; }; 036061DC2F4C7AE700B5998F /* SettingsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061DB2F4C7AE100B5998F /* SettingsTest.swift */; }; + 036061DE2F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */; }; + 036061DF2F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */; }; + 036061E02F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */; }; + 036061E12F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */; }; 036C39022E5C883B008DAEDF /* Packagist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036C39012E5C883A008DAEDF /* Packagist.swift */; }; 036C39032E5C883B008DAEDF /* Packagist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036C39012E5C883A008DAEDF /* Packagist.swift */; }; 036C39042E5C883B008DAEDF /* Packagist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036C39012E5C883A008DAEDF /* Packagist.swift */; }; @@ -1076,6 +1080,7 @@ 034515492EC4FBBD00472561 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; 036061D62F4C705800B5998F /* WindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowManager.swift; sourceTree = ""; }; 036061DB2F4C7AE100B5998F /* SettingsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTest.swift; sourceTree = ""; }; + 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PreferencesVC+WindowRestore.swift"; sourceTree = ""; }; 036C39012E5C883A008DAEDF /* Packagist.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Packagist.swift; sourceTree = ""; }; 036C39072E5C88A2008DAEDF /* PackagistTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagistTest.swift; sourceTree = ""; }; 036C39092E5C8CBD008DAEDF /* PackagistP2Response.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagistP2Response.swift; sourceTree = ""; }; @@ -1570,6 +1575,7 @@ C4998F092617633900B2526E /* PreferencesWindowController.swift */, C4FACE7F288F1C0D00FC478F /* PreferencesWindowController+Hotkey.swift */, 5420395826135DC100FB00FA /* PreferencesVC.swift */, + 036061DD2F4C886800B5998F /* PreferencesVC+WindowRestore.swift */, C436B39C29F3C42500B6A64E /* PreferencesTabs.swift */, C450C8C528C919EC002A2B4B /* PreferenceName.swift */, 5420395E2613607600FB00FA /* Preferences.swift */, @@ -2877,6 +2883,7 @@ C450C8C628C919EC002A2B4B /* PreferenceName.swift in Sources */, 0392CDEB2EB25371009176DA /* SecurePopoverView.swift in Sources */, C4E4404627C56F4700D225E1 /* ValetSite.swift in Sources */, + 036061DF2F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */, C4F2E43A2752F7D00020E974 /* PhpInstallation.swift in Sources */, C45B914E295608E300F4EC78 /* ValetServicesManager.swift in Sources */, C4D5576429C77CC5001A44CD /* PhpVersionManagerWindowController.swift in Sources */, @@ -3273,6 +3280,7 @@ C471E7FD28F9BACE0021E251 /* HomebrewService.swift in Sources */, C471E7E428F9BAC20021E251 /* Helpers.swift in Sources */, C4CB6E67292C362C002E9027 /* Homebrew.swift in Sources */, + 036061E12F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */, C4611E602AEAD3100010BE24 /* ByteLimitView.swift in Sources */, C489E0BD2A220A4200323F5E /* FakeBrewFormulaeHandler.swift in Sources */, C45E2A77291992DA005C7CFD /* FeatureTestCase.swift in Sources */, @@ -3497,6 +3505,7 @@ C43BCD4729FBEF40001547BC /* ModifyPhpVersionCommand.swift in Sources */, C44E985F29B23EBF0059F773 /* UpdateCheckTest.swift in Sources */, C4513F8E2B13E2E5001AD760 /* PhpExtensionManagerWindowController.swift in Sources */, + 036061E02F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */, C471E80028F9BAD10021E251 /* Xdebug.swift in Sources */, C471E7F528F9BAC80021E251 /* PhpEnvironments.swift in Sources */, C471E7ED28F9BAC30021E251 /* Process.swift in Sources */, @@ -3623,6 +3632,7 @@ C4F2E4382752F08D0020E974 /* BrewDiagnostics.swift in Sources */, C485707428BF454E00539B36 /* ServicesView.swift in Sources */, 03B947DE2F43692500B6F899 /* TestURL.swift in Sources */, + 036061DE2F4C887600B5998F /* PreferencesVC+WindowRestore.swift in Sources */, C4B79EC729CA474200A483EE /* FakeCommand.swift in Sources */, C4611E5F2AEAD2FB0010BE24 /* ConfigManagerView.swift in Sources */, C4F780AE25D80B37000DBC97 /* PhpExtensionTest.swift in Sources */, diff --git a/phpmon/Domain/Preferences/PreferencesVC+WindowRestore.swift b/phpmon/Domain/Preferences/PreferencesVC+WindowRestore.swift new file mode 100644 index 00000000..a5332ee9 --- /dev/null +++ b/phpmon/Domain/Preferences/PreferencesVC+WindowRestore.swift @@ -0,0 +1,87 @@ +// +// PreferencesVC+WindowsRestore.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 23/02/2026. +// Copyright © 2026 Nico Verbruggen. All rights reserved. +// + +import Cocoa + +extension GenericPreferenceVC { + struct WindowSnapshot { + let name: String + let frame: NSRect? + } + + func captureOpenWindowsForLanguageSwitch() -> [WindowSnapshot] { + App.shared.openWindows.compactMap { windowName in + switch windowName { + case "DomainList": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: DomainListWC.self)?.frame + ) + case "Onboarding": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: OnboardingWC.self)?.frame + ) + case "ConfigManager": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: PhpConfigManagerWC.self)?.frame + ) + case "Warnings": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: PhpDoctorWC.self)?.frame + ) + case "PhpVersionManager": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: PhpVersionManagerWC.self)?.frame + ) + case "PhpExtensionManager": + return WindowSnapshot( + name: windowName, + frame: WindowManager.window(for: PhpExtensionManagerWC.self)?.frame + ) + default: + return nil + } + } + } + + func reopenWindows(afterLanguageChange snapshots: [WindowSnapshot]) { + for snapshot in snapshots { + switch snapshot.name { + case "DomainList": + DomainListVC.show() + applyFrame(snapshot.frame, for: DomainListWC.self) + case "Onboarding": + OnboardingWindowController.show() + applyFrame(snapshot.frame, for: OnboardingWC.self) + case "ConfigManager": + PhpConfigManagerWindowController.show() + applyFrame(snapshot.frame, for: PhpConfigManagerWC.self) + case "Warnings": + PhpDoctorWindowController.show() + applyFrame(snapshot.frame, for: PhpDoctorWC.self) + case "PhpVersionManager": + PhpVersionManagerWindowController.show() + applyFrame(snapshot.frame, for: PhpVersionManagerWC.self) + case "PhpExtensionManager": + PhpExtensionManagerWindowController.show() + applyFrame(snapshot.frame, for: PhpExtensionManagerWC.self) + default: + continue + } + } + } + + private func applyFrame(_ frame: NSRect?, for type: T.Type) { + guard let frame else { return } + WindowManager.window(for: type)?.setFrame(frame, display: true) + } +} diff --git a/phpmon/Domain/Preferences/PreferencesVC.swift b/phpmon/Domain/Preferences/PreferencesVC.swift index 154e0557..da48d57d 100644 --- a/phpmon/Domain/Preferences/PreferencesVC.swift +++ b/phpmon/Domain/Preferences/PreferencesVC.swift @@ -54,13 +54,22 @@ class GenericPreferenceVC: NSViewController { options: options, preference: .languageOverride, action: { + // Track which windows we will need to reopen + let windowsToReopen = self.captureOpenWindowsForLanguageSwitch() + + // Rebuild the menu MainMenu.shared.refreshIcon() MainMenu.shared.rebuild() + + // Close all windows App.shared.invalidateCachedWindows() - // Re-open the preferences VC + // Re-open the preferences window controller WindowManager.close(PreferencesWC.self) PreferencesWindowController.show() + + // Finally, open all other windows again + self.reopenWindows(afterLanguageChange: windowsToReopen) } ) } @@ -144,6 +153,29 @@ class GenericPreferenceVC: NSViewController { ) } + private func reopenWindows(afterLanguageChange windowNames: [String]) { + let uniqueNames = Set(windowNames) + + for windowName in uniqueNames { + switch windowName { + case "DomainList": + DomainListVC.show() + case "Onboarding": + OnboardingWindowController.show() + case "ConfigManager": + PhpConfigManagerWindowController.show() + case "Warnings": + PhpDoctorWindowController.show() + case "PhpVersionManager": + PhpVersionManagerWindowController.show() + case "PhpExtensionManager": + PhpExtensionManagerWindowController.show() + default: + continue + } + } + } + func getIntegrationsPV() -> NSView { return CheckboxPreferenceView.make( sectionText: "prefs.integrations".localized, @@ -274,4 +306,5 @@ class GenericPreferenceVC: NSViewController { listeningForHotkeyView = nil } } + } diff --git a/phpmon/ar.lproj/Localizable.strings b/phpmon/ar.lproj/Localizable.strings index 242cf861..dc651bb3 100644 --- a/phpmon/ar.lproj/Localizable.strings +++ b/phpmon/ar.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "سترى جولة الترحيب مرة واحدة فقط. يمكنك إعادة فتح جولة الترحيب لاحقًا عبر أيقونة شريط القوائم (متوفرة في القائمة، تحت First Aid & Services)."; "onboarding.tour.close" = "إغلاق الجولة"; "prefs.language" = "اللغة:"; -"prefs.language_options_desc" = "اختر لغةً مختلفةً لاستخدامها مع PHP Monitor. لتطبيق هذا التغيير بالكامل، عليك إعادة تشغيل التطبيق."; +"prefs.language_options_desc" = "اختر لغة مختلفة لاستخدامها مع PHP Monitor."; "alert.language_changed.title" = "يجب عليك إعادة تشغيل PHP Monitor!"; "alert.language_changed.subtitle" = "لقد غيرت للتو لغة عرض PHP Monitor. سيستخدم القوائم اللغة الصحيحة فوراً، لكن قد تحتاج إلى إعادة تشغيل التطبيق ليعكس جميع النصوص داخل التطبيق اختيارك للغة الجديدة."; "startup.timeout.ignore" = "تجاهل"; diff --git a/phpmon/bn.lproj/Localizable.strings b/phpmon/bn.lproj/Localizable.strings index f0946d1c..b95be6d2 100644 --- a/phpmon/bn.lproj/Localizable.strings +++ b/phpmon/bn.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "আপনি কেবল একবারই স্বাগতম ট্যুর দেখবেন। আপনি পরে মেনু বার আইকনের মাধ্যমে (মেনুতে, ফার্স্ট এড ও সার্ভিসেসের অধীনে উপলব্ধ) স্বাগতম ট্যুর পুনরায় খুলতে পারবেন।"; "onboarding.tour.close" = "ট্যুর বন্ধ করুন"; "prefs.language" = "ভাষা:"; -"prefs.language_options_desc" = "PHP Monitor‑এ ব্যবহারের জন্য একটি ভিন্ন ভাষা বেছে নিন। এই পরিবর্তন পুরোপুরি কার্যকর করতে আপনাকে অ্যাপটি পুনরায় চালু করতে হবে।"; +"prefs.language_options_desc" = "PHP Monitor-এর সাথে ব্যবহার করার জন্য একটি ভিন্ন ভাষা বেছে নিন।"; "alert.language_changed.title" = "আপনাকে PHP Monitor পুনরায় চালু করতে হবে!"; "alert.language_changed.subtitle" = "আপনি মাত্র PHP Monitor-এর প্রদর্শন ভাষা পরিবর্তন করেছেন। মেনু তাৎক্ষণিকভাবে সঠিক ভাষা ব্যবহার করবে, তবে অ্যাপের সমস্ত টেক্সট আপনার নতুন ভাষা নির্বাচন প্রতিফলিত করতে পুনরায় চালু করা প্রয়োজন হতে পারে।"; "startup.timeout.ignore" = "উপেক্ষা করুন"; diff --git a/phpmon/de.lproj/Localizable.strings b/phpmon/de.lproj/Localizable.strings index f12b588e..1fb78230 100644 --- a/phpmon/de.lproj/Localizable.strings +++ b/phpmon/de.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Sie sehen die Willkommenstour nur einmal. Sie können die Willkommenstour später über das Symbol in der Menüleiste (im Menü unter Erste Hilfe & Dienste) erneut öffnen."; "onboarding.tour.close" = "Tour beenden"; "prefs.language" = "Sprache:"; -"prefs.language_options_desc" = "Wählen Sie eine andere Sprache für die Verwendung mit PHP Monitor. Um diese Änderung vollständig anzuwenden, müssen Sie die App neu starten."; +"prefs.language_options_desc" = "Wählen Sie eine andere Sprache zur Verwendung mit PHP Monitor."; "alert.language_changed.title" = "Sie müssen PHP Monitor neu starten!"; "alert.language_changed.subtitle" = "Sie haben soeben die Anzeigesprache von PHP Monitor geändert. Das Menü wird sofort die korrekte Sprache verwenden, aber Sie müssen die App möglicherweise neu starten, damit alle Texte in der App Ihre neue Sprachwahl widerspiegeln."; "startup.timeout.ignore" = "Ignorieren"; diff --git a/phpmon/en.lproj/Localizable.strings b/phpmon/en.lproj/Localizable.strings index 62e676f0..88d47b29 100644 --- a/phpmon/en.lproj/Localizable.strings +++ b/phpmon/en.lproj/Localizable.strings @@ -890,7 +890,7 @@ Please note that some features (greyed out below) are currently unavailable beca // LANGUAGE CHOICE "prefs.language" = "Language:"; -"prefs.language_options_desc" = "Choose a different language to use with PHP Monitor. To fully apply this change, you must restart the app."; +"prefs.language_options_desc" = "Choose a different language to use with PHP Monitor."; "alert.language_changed.title" = "You must restart PHP Monitor!"; "alert.language_changed.subtitle" = "You just changed the display language of PHP Monitor. The menu will immediately use the correct language, but you may need to restart the app for all text throughout the app to reflect your new language choice."; diff --git a/phpmon/es.lproj/Localizable.strings b/phpmon/es.lproj/Localizable.strings index c53e5844..d06f3bcd 100644 --- a/phpmon/es.lproj/Localizable.strings +++ b/phpmon/es.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Usted verá esta Gira Únicamente Una Vez. Puede reabrir la Gira de Bienvenida más tarde a través del ícono de la barra de menús (disponible en el menú, bajo Primera Aida & Servicios)."; "onboarding.tour.close" = "Cierre Tour"; "prefs.language" = "Idioma:"; -"prefs.language_options_desc" = "Seleccione un idioma diferente para usar con PHP Monitor. Para aplicar totalmente este cambio, debe reiniciar la aplicación."; +"prefs.language_options_desc" = "Elige un idioma diferente para usar PHP Monitor."; "alert.language_changed.title" = "Debe reiniciar el PHP Monitor!"; "alert.language_changed.subtitle" = "Usted acaba de cambiar el idioma de visualización del PHP Monitor. La barra de menús lo utilizará correctamente de inmediato, pero tal vez necesite reiniciar la aplicación para que todos los textos a través del app se reflejen su nuevo idioma elegido."; "startup.timeout.ignore" = "Ignorar"; diff --git a/phpmon/fr.lproj/Localizable.strings b/phpmon/fr.lproj/Localizable.strings index 473551e1..75428e9b 100644 --- a/phpmon/fr.lproj/Localizable.strings +++ b/phpmon/fr.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Vous ne verrez la visite de bienvenue qu'une seule fois. Vous pouvez rouvrir la visite de bienvenue ultérieurement via l'icône de la barre de menu (disponible dans le menu, sous Premiers Secours et Services)."; "onboarding.tour.close" = "Fermer la Visite d'Accueil"; "prefs.language" = "Langue :"; -"prefs.language_options_desc" = "Choisissez une autre langue à utiliser avec PHP Monitor. Pour appliquer pleinement ce changement, vous devez redémarrer l'application."; +"prefs.language_options_desc" = "Choisissez une langue différente pour utiliser PHP Monitor."; "alert.language_changed.title" = "Vous devriez redémarrer PHP Monitor !"; "alert.language_changed.subtitle" = "Vous venez de changer la langue d'affichage de PHP Monitor. Le menu utilisera immédiatement la bonne langue, mais vous devrez peut-être redémarrer l'application pour que tout le texte dans l'application reflète votre nouveau choix de langue."; "startup.timeout.ignore" = "Ignorer"; diff --git a/phpmon/hi.lproj/Localizable.strings b/phpmon/hi.lproj/Localizable.strings index 98784132..5d7c75fa 100644 --- a/phpmon/hi.lproj/Localizable.strings +++ b/phpmon/hi.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "आप केवल एक बार स्वागत यात्रा देखेंगे। आप बाद में मेनू बार आइकन (मेन्यू, फ़र्स्ट एड & सर्विसेज़ के तहत उपलब्ध) के माध्यम से स्वागत यात्रा को फिर से खोल सकते हैं।"; "onboarding.tour.close" = "टूर बंद करें"; "prefs.language" = "भाषा:"; -"prefs.language_options_desc" = "PHP Monitor के साथ उपयोग करने के लिए एक अलग भाषा चुनें। इस परिवर्तन को पूरी तरह लागू करने के लिए आपको ऐप पुनः आरंभ करना होगा।"; +"prefs.language_options_desc" = "PHP Monitor के साथ उपयोग के लिए कोई दूसरी भाषा चुनें।"; "alert.language_changed.title" = "आपको PHP Monitor को पुनः आरंभ करना होगा!"; "alert.language_changed.subtitle" = "आपने अभी PHP Monitor का प्रदर्शन भाषा बदल दिया है। मेनू तुरंत सही भाषा का उपयोग करेगा, लेकिन सभी पाठ को आपके नए भाषा विकल्प के अनुसार अपडेट करने के लिए आपको ऐप पुनः प्रारंभ करना पड़ सकता है।"; "startup.timeout.ignore" = "अनदेखा करें"; diff --git a/phpmon/id.lproj/Localizable.strings b/phpmon/id.lproj/Localizable.strings index c2dc5826..4a537053 100644 --- a/phpmon/id.lproj/Localizable.strings +++ b/phpmon/id.lproj/Localizable.strings @@ -577,7 +577,7 @@ TIPS PEMECAHAN MASALAH UMUM "onboarding.tour.once" = "Anda hanya akan melihat Tur Selamat Datang sekali saja. Anda dapat membuka kembali Tur Selamat Datang nanti melalui ikon bilah menu (tersedia di menu, di bawah First Aid & Services)."; "onboarding.tour.close" = "Tutup Tur"; "prefs.language" = "Bahasa:"; -"prefs.language_options_desc" = "Pilih bahasa lain untuk digunakan dengan PHP Monitor. Untuk menerapkan perubahan ini secara penuh, Anda harus memulai ulang aplikasi."; +"prefs.language_options_desc" = "Pilih bahasa lain untuk digunakan dengan PHP Monitor."; "alert.language_changed.title" = "Anda harus memulai ulang PHP Monitor!"; "alert.language_changed.subtitle" = "Anda baru saja mengubah bahasa tampilan PHP Monitor. Menu akan segera menggunakan bahasa yang benar, namun Anda mungkin perlu memulai ulang aplikasi agar semua teks di seluruh aplikasi mencerminkan pilihan bahasa baru Anda."; "startup.timeout.ignore" = "Abaikan"; diff --git a/phpmon/it.lproj/Localizable.strings b/phpmon/it.lproj/Localizable.strings index 217d3140..cdb44478 100644 --- a/phpmon/it.lproj/Localizable.strings +++ b/phpmon/it.lproj/Localizable.strings @@ -577,7 +577,7 @@ SUGGERIMENTI COMUNI PER LA RISOLUZIONE DEI PROBLEMI "onboarding.tour.once" = "Vedrai la presentazione di benvenuto solo una volta. Puoi riaprire la presentazione di benvenuto più tardi tramite l'icona nella barra dei menu (disponibile nel menu, sotto First Aid & Services)."; "onboarding.tour.close" = "Chiudi il tour"; "prefs.language" = "Lingua:"; -"prefs.language_options_desc" = "Scegli una lingua diversa da usare con PHP Monitor. Per applicare completamente questa modifica, devi riavviare l'app."; +"prefs.language_options_desc" = "Scegli una lingua diversa da usare con PHP Monitor."; "alert.language_changed.title" = "Devi riavviare PHP Monitor!"; "alert.language_changed.subtitle" = "Hai appena cambiato la lingua di visualizzazione di PHP Monitor. Il menu utilizzerà immediatamente la lingua corretta, ma potresti dover riavviare l’app per far riflettersi il nuovo idioma su tutto il testo dell’app."; "startup.timeout.ignore" = "Ignora"; diff --git a/phpmon/ja.lproj/Localizable.strings b/phpmon/ja.lproj/Localizable.strings index 39ca8cd6..7c8dd13d 100644 --- a/phpmon/ja.lproj/Localizable.strings +++ b/phpmon/ja.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Welcome Tour は一度だけ表示されます。メニューバーのアイコン(First Aid & Services の下にある)から後で再度開くことができます。"; "onboarding.tour.close" = "ツアーを閉じる"; "prefs.language" = "言語:"; -"prefs.language_options_desc" = "PHP Monitorで使用する別の言語を選択してください。この変更を完全に適用するには、アプリを再起動する必要があります。"; +"prefs.language_options_desc" = "PHP Monitorで使用する別の言語を選択してください。"; "alert.language_changed.title" = "PHP Monitor を再起動する必要があります!"; "alert.language_changed.subtitle" = "PHP Monitor の表示言語を変更しました。メニューはすぐに正しい言語で表示されますが、アプリ全体のテキストを新しい言語設定に反映させるには再起動が必要になる場合があります。"; "startup.timeout.ignore" = "無視"; diff --git a/phpmon/nl.lproj/Localizable.strings b/phpmon/nl.lproj/Localizable.strings index f1d35986..07b50b09 100644 --- a/phpmon/nl.lproj/Localizable.strings +++ b/phpmon/nl.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "U zult de Welkomsttour slechts één keer zien. U kunt de Welkomsttour later opnieuw openen via het menubalkpictogram (beschikbaar in het menu onder First Aid & Services)."; "onboarding.tour.close" = "Tour sluiten"; "prefs.language" = "Taal:"; -"prefs.language_options_desc" = "Kies een andere taal om te gebruiken met PHP Monitor. Om deze wijziging volledig toe te passen, moet u de app herstarten."; +"prefs.language_options_desc" = "Kies een andere taal om met PHP Monitor te gebruiken."; "alert.language_changed.title" = "U moet PHP Monitor herstarten!"; "alert.language_changed.subtitle" = "U heeft zojuist de weergavetaal van PHP Monitor gewijzigd. Het menu zal onmiddellijk de juiste taal gebruiken, maar u moet mogelijk de app herstarten om overal de nieuwe taal te zien."; "startup.timeout.ignore" = "Negeren"; diff --git a/phpmon/pt-PT.lproj/Localizable.strings b/phpmon/pt-PT.lproj/Localizable.strings index 99114bb6..bacc9823 100644 --- a/phpmon/pt-PT.lproj/Localizable.strings +++ b/phpmon/pt-PT.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Apenas irá ver este 'Boas-vindas' uma vez. Pode visualiza-lo mais tarde através da barra de menum em 'Primeiros Socorros e Serviços'."; "onboarding.tour.close" = "Fechar"; "prefs.language" = "Idioma:"; -"prefs.language_options_desc" = "Escolha um idioma diferente para usar com o PHP Monitor. Para aplicar completamente esta mudança, deve reiniciar a aplicação."; +"prefs.language_options_desc" = "Escolha um idioma diferente para usar com o PHP Monitor."; "alert.language_changed.title" = "Deve reiniciar o PHP Monitor!"; "alert.language_changed.subtitle" = "Acabou de mudar o idioma de exibição do PHP Monitor. O menu usará imediatamente a língua correta, mas pode ser necessário reiniciar a aplicação para que todo o texto na aplicação reflita a sua nova escolha de idioma."; "startup.timeout.ignore" = "Ignorar"; diff --git a/phpmon/tr.lproj/Localizable.strings b/phpmon/tr.lproj/Localizable.strings index c962ef6f..b7d1a74f 100644 --- a/phpmon/tr.lproj/Localizable.strings +++ b/phpmon/tr.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Hoş Geldiniz Turu'nu yalnızca bir kez görürsünüz. Daha sonra menü çubuğu simgesinden (Menü, İlk Yardım & Hizmetler altında) Hoş Geldiniz Turu'nu yeniden açabilirsiniz."; "onboarding.tour.close" = "Turu Kapat"; "prefs.language" = "Dil:"; -"prefs.language_options_desc" = "PHP Monitor ile kullanmak için farklı bir dil seçin. Değişikliği tamamen uygulamak için uygulamayı yeniden başlatmanız gerekir."; +"prefs.language_options_desc" = "PHP Monitor ile kullanmak için farklı bir dil seçin."; "alert.language_changed.title" = "PHP Monitor'ı yeniden başlatmalısınız!"; "alert.language_changed.subtitle" = "PHP Monitor'un görüntüleme dilini değiştirdiniz. Menü hemen doğru dili kullanacak, ancak uygulamadaki tüm metinlerin yeni dil seçiminizi yansıtması için uygulamayı yeniden başlatmanız gerekebilir."; "startup.timeout.ignore" = "Yok say"; diff --git a/phpmon/vi.lproj/Localizable.strings b/phpmon/vi.lproj/Localizable.strings index 383f544e..d5fd7adc 100644 --- a/phpmon/vi.lproj/Localizable.strings +++ b/phpmon/vi.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "Bạn chỉ sẽ thấy Hướng Dẫn Chào Mừng một lần. Bạn có thể mở lại Hướng Dẫn Chào Mừng sau này qua biểu tượng thanh menu (có sẵn trong menu, ở dưới Cứu hộ và Các dịch vụ)."; "onboarding.tour.close" = "Đóng Tour"; "prefs.language" = "Ngôn ngữ:"; -"prefs.language_options_desc" = "Chọn một ngôn ngữ khác để sử dụng với PHP Monitor. Để áp dụng hoàn toàn thay đổi này, bạn phải khởi động lại ứng dụng."; +"prefs.language_options_desc" = "Chọn ngôn ngữ khác để sử dụng với PHP Monitor."; "alert.language_changed.title" = "Bạn phải khởi động lại PHP Monitor!"; "alert.language_changed.subtitle" = "Bạn vừa thay đổi ngôn ngữ hiển thị của PHP Monitor. Menu sẽ ngay lập tức sử dụng ngôn ngữ đúng, nhưng bạn có thể cần phải khởi động lại ứng dụng để toàn bộ văn bản trong ứng dụng phản ánh sự lựa chọn ngôn ngữ mới của bạn."; "startup.timeout.ignore" = "Bỏ qua"; diff --git a/phpmon/zh-Hans.lproj/Localizable.strings b/phpmon/zh-Hans.lproj/Localizable.strings index b099298c..901a18af 100644 --- a/phpmon/zh-Hans.lproj/Localizable.strings +++ b/phpmon/zh-Hans.lproj/Localizable.strings @@ -567,7 +567,7 @@ "onboarding.tour.once" = "您只能看到一次欢迎导览。您可以稍后通过菜单栏图标(可在 `急救与服务` 下的菜单中找到)重新打开欢迎导览。"; "onboarding.tour.close" = "关闭 Tour"; "prefs.language" = "语言:"; -"prefs.language_options_desc" = "选择不同的语言与 PHP Monitor 一起使用。要完全应用此更改,必须重新启动应用程序"; +"prefs.language_options_desc" = "选择用于 PHP Monitor 的其他语言。"; "alert.language_changed.title" = "您必须重新启动 PHP Monitor!"; "alert.language_changed.subtitle" = "您刚刚更改了 PHP Monitor 的显示语言。菜单将立即使用正确的语言,但您可能需要重新启动应用程序,以使整个应用程序中的所有文本都应用您的新语言选择"; "startup.timeout.ignore" = "忽略"; diff --git a/tests/ui/SettingsTest.swift b/tests/ui/SettingsTest.swift index d3d8854b..1ee5a200 100644 --- a/tests/ui/SettingsTest.swift +++ b/tests/ui/SettingsTest.swift @@ -58,8 +58,6 @@ final class SettingsTest: UITestCase { assertExists(settingsWindowJa.staticTexts["prefs.language".localized(for: "ja")]) // Open the domains window - app.statusItems.firstMatch.click() - app.mainMenuItem(withText: "mi_domain_list".localized(for: "ja")).click() let domainsWindowJa = app.windows["domain_list.title".localized(for: "ja")] assertExists(domainsWindowJa, 2.0)