From abe6375347f33b3f8ab118dc04c1c457533de80d Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 29 Dec 2022 22:18:22 +0800 Subject: [PATCH] PrefWindow // Crediting Hiraku regarding the Cocoa UI lang menu. Co-authored-by: Hiraku --- .../WindowControllers/CtlPrefWindow.swift | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/Source/Modules/WindowControllers/CtlPrefWindow.swift b/Source/Modules/WindowControllers/CtlPrefWindow.swift index 63778292..7d7cf9dd 100644 --- a/Source/Modules/WindowControllers/CtlPrefWindow.swift +++ b/Source/Modules/WindowControllers/CtlPrefWindow.swift @@ -114,31 +114,35 @@ class CtlPrefWindow: NSWindowController, NSWindowDelegate { lblCurrentlySpecifiedUserDataFolder.placeholderString = LMMgr.dataFolderPath( isDefaultFolder: true) - let languages = ["auto", "en", "zh-Hans", "zh-Hant", "ja"] - var autoMUISelectItem: NSMenuItem? - var chosenLanguageItem: NSMenuItem? - uiLanguageButton.menu?.removeAllItems() + // Credit: Hiraku Wang (for the implementation of the UI language select support in Cocoa PrefWindow. + // Note: The SwiftUI PrefWindow has the same feature implemented by Shiki Suen. + do { + let languages = ["auto", "en", "zh-Hans", "zh-Hant", "ja"] + var autoMUISelectItem: NSMenuItem? + var chosenLanguageItem: NSMenuItem? + uiLanguageButton.menu?.removeAllItems() - let appleLanguages = PrefMgr.shared.appleLanguages - for language in languages { - let menuItem = NSMenuItem() - menuItem.title = NSLocalizedString(language, comment: language) - menuItem.representedObject = language + let appleLanguages = PrefMgr.shared.appleLanguages + for language in languages { + let menuItem = NSMenuItem() + menuItem.title = NSLocalizedString(language, comment: language) + menuItem.representedObject = language - if language == "auto" { - autoMUISelectItem = menuItem - } - - if !appleLanguages.isEmpty { - if appleLanguages[0] == language { - chosenLanguageItem = menuItem + if language == "auto" { + autoMUISelectItem = menuItem } - } - uiLanguageButton.menu?.addItem(menuItem) - } - currentLanguageSelectItem = chosenLanguageItem ?? autoMUISelectItem - uiLanguageButton.select(currentLanguageSelectItem) + if !appleLanguages.isEmpty { + if appleLanguages[0] == language { + chosenLanguageItem = menuItem + } + } + uiLanguageButton.menu?.addItem(menuItem) + } + + currentLanguageSelectItem = chosenLanguageItem ?? autoMUISelectItem + uiLanguageButton.select(currentLanguageSelectItem) + } var usKeyboardLayoutItem: NSMenuItem? var chosenBaseKeyboardLayoutItem: NSMenuItem?