feat(localization): wrap search index titles and keywords in String(localized:)

This is required to force Xcode's String Catalog to recognize these strings
for translation, enabling localization for the settings search feature.
This commit is contained in:
Felipe Giacomini Cocco 2026-02-03 18:56:32 -03:00
commit bc0db3fcc4
2 changed files with 570 additions and 59 deletions

View file

@ -2320,7 +2320,14 @@
} }
}, },
"Add icon" : { "Add icon" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Adicionar ícone"
}
}
}
}, },
"Add manually" : { "Add manually" : {
"extractionState" : "stale", "extractionState" : "stale",
@ -3894,6 +3901,26 @@
} }
} }
}, },
"auto open" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "abrir automaticamente"
}
}
}
},
"auto switch" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "trocar automaticamente"
}
}
}
},
"Auto-scroll to next event" : { "Auto-scroll to next event" : {
"comment" : "A toggle that enables or disables the automatic scrolling to the next event in the calendar view.", "comment" : "A toggle that enables or disables the automatic scrolling to the next event in the calendar view.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -4106,6 +4133,26 @@
} }
} }
}, },
"Automatically switch displays" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Trocar automaticamente as telas"
}
}
}
},
"autostart" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Iiício automático"
}
}
}
},
"Averages" : { "Averages" : {
"comment" : "A label displayed above the average usage and last update information for a GPU.", "comment" : "A label displayed above the average usage and last update information for a GPU.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -4938,7 +4985,8 @@
"value" : "Achetez-nous un café" "value" : "Achetez-nous un café"
} }
} }
} },
"shouldTranslate" : false
}, },
"Calendar" : { "Calendar" : {
"localizations" : { "localizations" : {
@ -6424,6 +6472,16 @@
} }
} }
}, },
"close" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "fechar"
}
}
}
},
"Close" : { "Close" : {
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -6540,6 +6598,16 @@
} }
} }
}, },
"Close gesture" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Gesto de fechar"
}
}
}
},
"Collect the latest crash report to share with the developer when reporting lock screen or overlay issues." : { "Collect the latest crash report to share with the developer when reporting lock screen or overlay issues." : {
"comment" : "A footer for the \"Diagnostics\" section of the lock screen settings.", "comment" : "A footer for the \"Diagnostics\" section of the lock screen settings.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -7299,6 +7367,9 @@
} }
} }
}, },
"cursor" : {
"shouldTranslate" : false
},
"Custom" : { "Custom" : {
"extractionState" : "stale", "extractionState" : "stale",
"localizations" : { "localizations" : {
@ -8423,7 +8494,14 @@
} }
}, },
"Disable Minimalistic UI to configure the standard notch media controls." : { "Disable Minimalistic UI to configure the standard notch media controls." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desatile a interface do usuário minimalista para configurar os controles de mídia no notch padrão."
}
}
}
}, },
"Disabled" : { "Disabled" : {
"localizations" : { "localizations" : {
@ -8569,6 +8647,16 @@
} }
} }
}, },
"display height" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "altura da tela"
}
}
}
},
"Display Mode" : { "Display Mode" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -8596,6 +8684,16 @@
} }
} }
}, },
"displays" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "telas"
}
}
}
},
"Displays a HUD notification when Bluetooth audio devices (headphones, AirPods, speakers) connect, showing device name and battery level." : { "Displays a HUD notification when Bluetooth audio devices (headphones, AirPods, speakers) connect, showing device name and battery level." : {
"comment" : "A footer for the \"Bluetooth Audio Devices\" section in the HUD settings.", "comment" : "A footer for the \"Bluetooth Audio Devices\" section in the HUD settings.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -8646,7 +8744,15 @@
}, },
"Donate" : { "Donate" : {
"comment" : "A button label that says \"Donate\".", "comment" : "A button label that says \"Donate\".",
"isCommentAutoGenerated" : true "isCommentAutoGenerated" : true,
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Doar"
}
}
}
}, },
"Done" : { "Done" : {
"comment" : "A button label that indicates that the user has finished editing a note.", "comment" : "A button label that indicates that the user has finished editing a note.",
@ -8967,7 +9073,14 @@
} }
}, },
"Drop a PNG, JPEG, TIFF, or ICNS file to add it to your icon library." : { "Drop a PNG, JPEG, TIFF, or ICNS file to add it to your icon library." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Arraste um arquivo PNG, JPEG, TIFF, or ICNS para adiciona-lo ia sua biblioteca de ícones."
}
}
}
}, },
"Drop files here" : { "Drop files here" : {
"localizations" : { "localizations" : {
@ -9082,7 +9195,14 @@
} }
}, },
"Dynamic Island Visibility" : { "Dynamic Island Visibility" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Visibilidade da Dynamic Islan"
}
}
}
}, },
"dynamic.island" : { "dynamic.island" : {
"localizations" : { "localizations" : {
@ -9536,7 +9656,14 @@
} }
}, },
"Enable Dynamic Island media controls to manage the lock screen panel." : { "Enable Dynamic Island media controls to manage the lock screen panel." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ative os controles de mídia Dynamic Island para gerenciar o painel da tela de bloqueio."
}
}
}
}, },
"Enable extensions to allow third-party apps to display live activities and lock screen widgets in Atoll." : { "Enable extensions to allow third-party apps to display live activities and lock screen widgets in Atoll." : {
"comment" : "A footer text that explains the purpose of enabling extensions.", "comment" : "A footer text that explains the purpose of enabling extensions.",
@ -9550,6 +9677,16 @@
} }
} }
}, },
"Enable gestures" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Habilitar gestos"
}
}
}
},
"Enable global keyboard shortcuts above to customize your shortcuts." : { "Enable global keyboard shortcuts above to customize your shortcuts." : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -9573,7 +9710,6 @@
} }
}, },
"Enable haptics" : { "Enable haptics" : {
"extractionState" : "stale",
"localizations" : { "localizations" : {
"ar" : { "ar" : {
"stringUnit" : { "stringUnit" : {
@ -9786,6 +9922,16 @@
} }
} }
}, },
"Enable Minimalistic UI" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Habilitar UI Minimalista"
}
}
}
},
"Enable music live activity" : { "Enable music live activity" : {
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -10483,6 +10629,16 @@
} }
} }
}, },
"Extend hover area" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Expandir a área de hover"
}
}
}
},
"Extension tab unavailable" : { "Extension tab unavailable" : {
"comment" : "A message displayed when the extension tab is not available.", "comment" : "A message displayed when the extension tab is not available.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -10613,6 +10769,9 @@
} }
} }
}, },
"feedback" : {
"shouldTranslate" : false
},
"Files dropped on the shelf will be shared via this service" : { "Files dropped on the shelf will be shared via this service" : {
"comment" : "A description below the currently selected quick share provider, explaining that files dropped on the shelf will be shared via that provider.", "comment" : "A description below the currently selected quick share provider, explaining that files dropped on the shelf will be shared via that provider.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -10845,6 +11004,16 @@
} }
} }
}, },
"general" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Geral"
}
}
}
},
"General" : { "General" : {
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -11157,6 +11326,16 @@
} }
} }
}, },
"gestures" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "gestos"
}
}
}
},
"Get started" : { "Get started" : {
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -11628,6 +11807,16 @@
} }
} }
}, },
"haptic" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "tátil"
}
}
}
},
"Height:" : { "Height:" : {
"extractionState" : "stale", "extractionState" : "stale",
"localizations" : { "localizations" : {
@ -11695,6 +11884,16 @@
} }
} }
}, },
"Hide Dynamic Island during screenshots & recordings" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ocultar Dynamic Island durante capturas de tela e gravações"
}
}
}
},
"Hide DynamicIsland Options" : { "Hide DynamicIsland Options" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -12050,6 +12249,19 @@
}, },
"shouldTranslate" : false "shouldTranslate" : false
}, },
"hover" : {
"shouldTranslate" : false
},
"hover to open" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "hover para abrir"
}
}
}
},
"https://example.com/animation.json" : { "https://example.com/animation.json" : {
"comment" : "A placeholder text for a Lottie JSON URL input field.", "comment" : "A placeholder text for a Lottie JSON URL input field.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -12376,6 +12588,16 @@
}, },
"shouldTranslate" : false "shouldTranslate" : false
}, },
"icon" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "ícone"
}
}
}
},
"Icon & Progress Color" : { "Icon & Progress Color" : {
"comment" : "A picker that lets users choose the color scheme for the icon and progress bar in the OSD.", "comment" : "A picker that lets users choose the color scheme for the icon and progress bar in the OSD.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -13050,6 +13272,16 @@
} }
} }
}, },
"Launch at login" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Iniciar no login"
}
}
}
},
"Layout" : { "Layout" : {
"comment" : "A label for the segment control that lets the user choose the layout of the weather widget.", "comment" : "A label for the segment control that lets the user choose the layout of the weather widget.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -13808,7 +14040,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Corresponder à altura da barra de menu" "value" : "Corresponder à altura da barra de menus"
} }
}, },
"ru" : { "ru" : {
@ -14054,6 +14286,16 @@
} }
} }
}, },
"media" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "mídia"
}
}
}
},
"Media" : { "Media" : {
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -14156,7 +14398,6 @@
}, },
"Media change with horizontal gestures" : { "Media change with horizontal gestures" : {
"comment" : "A toggle that lets the user enable or disable the feature of changing the currently playing media using horizontal gestures.", "comment" : "A toggle that lets the user enable or disable the feature of changing the currently playing media using horizontal gestures.",
"extractionState" : "stale",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
"localizations" : { "localizations" : {
"ar" : { "ar" : {
@ -14227,8 +14468,8 @@
}, },
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "needs_review", "state" : "translated",
"value" : "Media change with horizontal gestures" "value" : "Mudar a mídia com gestos horizontais"
} }
}, },
"ru" : { "ru" : {
@ -14820,8 +15061,27 @@
} }
} }
}, },
"menu bar" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "barra de menu"
}
}
}
},
"menu bar size" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "tamanho da menu bar"
}
}
}
},
"Menubar icon" : { "Menubar icon" : {
"extractionState" : "stale",
"localizations" : { "localizations" : {
"ar" : { "ar" : {
"stringUnit" : { "stringUnit" : {
@ -14891,8 +15151,8 @@
}, },
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "needs_review", "state" : "translated",
"value" : "Menubar icon" "value" : "ícone da barra de menus"
} }
}, },
"ru" : { "ru" : {
@ -15132,6 +15392,16 @@
} }
} }
}, },
"minimalistic" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "minimaalista"
}
}
}
},
"Minimalistic mode focuses on media controls and system HUDs, hiding all extra features for a clean, focused experience. Automatically enables simpler animations." : { "Minimalistic mode focuses on media controls and system HUDs, hiding all extra features for a clean, focused experience. Automatically enables simpler animations." : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -17692,6 +17962,16 @@
} }
} }
}, },
"open" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "abrir"
}
}
}
},
"Open Google AI Studio" : { "Open Google AI Studio" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -17724,6 +18004,16 @@
} }
} }
}, },
"Open notch on hover" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Abrir notch com hover"
}
}
}
},
"Open System Settings" : { "Open System Settings" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -17960,6 +18250,16 @@
} }
} }
}, },
"pinch" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "pinça"
}
}
}
},
"Pinned Items" : { "Pinned Items" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -18222,6 +18522,16 @@
} }
} }
}, },
"privacy" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "privacidade"
}
}
}
},
"Privacy Indicators" : { "Privacy Indicators" : {
"comment" : "A heading for the section that lists privacy indicators.", "comment" : "A heading for the section that lists privacy indicators.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -18707,6 +19017,16 @@
} }
} }
}, },
"recording" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "gravação"
}
}
}
},
"Recording" : { "Recording" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -19030,7 +19350,14 @@
} }
}, },
"Remove selected" : { "Remove selected" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Remover selecionado"
}
}
}
}, },
"Request Access" : { "Request Access" : {
"localizations" : { "localizations" : {
@ -19347,6 +19674,46 @@
} }
} }
}, },
"reverse" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "inverter"
}
}
}
},
"Reverse open/close scroll gestures" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Inverter gestos de abrir/fechar com scroll"
}
}
}
},
"Reverse scroll gestures" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Inverter gestos de rolagem"
}
}
}
},
"Reverse swipe gestures" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Inverter gestos de arrastar"
}
}
}
},
"Revoke Access" : { "Revoke Access" : {
"comment" : "A button that revokes access to an app.", "comment" : "A button that revokes access to an app.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -19638,6 +20005,16 @@
} }
} }
}, },
"screenshot" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "captura de tela"
}
}
}
},
"Screenshot options" : { "Screenshot options" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -19670,6 +20047,9 @@
} }
} }
}, },
"scroll" : {
"shouldTranslate" : false
},
"Scroll" : { "Scroll" : {
"comment" : "A hint text that appears when scrolling horizontally in the control palette.", "comment" : "A hint text that appears when scrolling horizontally in the control palette.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -21957,10 +22337,24 @@
} }
}, },
"Standard notch media controls are hidden while this toggle is off." : { "Standard notch media controls are hidden while this toggle is off." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Os controles de mídia no notch padrão estão ocultos enquanto esta opção está desligada."
}
}
}
}, },
"Standard notch media controls are hidden. Re-enable the toggle above to restore them." : { "Standard notch media controls are hidden. Re-enable the toggle above to restore them." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Os controles de mídia no notch padrão estão ocultos. Reative a opção acima para restaurá-los."
}
}
}
}, },
"Start" : { "Start" : {
"localizations" : { "localizations" : {
@ -22102,6 +22496,16 @@
} }
} }
}, },
"startup" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "inicializar"
}
}
}
},
"Stats" : { "Stats" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -22216,6 +22620,16 @@
} }
} }
}, },
"status bar" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "barra de status"
}
}
}
},
"Status:" : { "Status:" : {
"comment" : "A label for the status of an extension.", "comment" : "A label for the status of an extension.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -22539,6 +22953,16 @@
} }
} }
}, },
"swipe" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "arrastar"
}
}
}
},
"System" : { "System" : {
"comment" : "A label displayed above the system, load average, and uptime information.", "comment" : "A label displayed above the system, load average, and uptime information.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -22698,7 +23122,14 @@
"shouldTranslate" : false "shouldTranslate" : false
}, },
"These controls mirror the Lock Screen tab so you can tune the media overlay while focusing on playback settings." : { "These controls mirror the Lock Screen tab so you can tune the media overlay while focusing on playback settings." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esses controles espelham a aba da Tela de Bloqueio para que você possa ajustar a sobreposição de mídia enquanto se concentra nas configurações de reprodução."
}
}
}
}, },
"These controls sit beside the notch while a timer runs. They require the timer name to stay hidden for spacing." : { "These controls sit beside the notch while a timer runs. They require the timer name to stay hidden for spacing." : {
"localizations" : { "localizations" : {
@ -23292,6 +23723,9 @@
}, },
"shouldTranslate" : false "shouldTranslate" : false
}, },
"trackpad" : {
"shouldTranslate" : false
},
"Transform" : { "Transform" : {
"extractionState" : "stale", "extractionState" : "stale",
"localizations" : { "localizations" : {
@ -23472,6 +23906,16 @@
} }
} }
}, },
"ui mode" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modo UI"
}
}
}
},
"UI Mode" : { "UI Mode" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -25165,7 +25609,15 @@
}, },
"Your support funds software development learning for students in 9th–12th grade." : { "Your support funds software development learning for students in 9th–12th grade." : {
"comment" : "A footer note explaining the app's funding.", "comment" : "A footer note explaining the app's funding.",
"isCommentAutoGenerated" : true "isCommentAutoGenerated" : true,
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Seu apoio financia o aprendizado de desenvolvimento de software para alunos do 9º ao 12º ano."
}
}
}
}, },
"YouTube Music requires this third-party app to be installed: " : { "YouTube Music requires this third-party app to be installed: " : {
"localizations" : { "localizations" : {

View file

@ -592,32 +592,91 @@ struct SettingsView: View {
private var settingsSearchIndex: [SettingsSearchEntry] { private var settingsSearchIndex: [SettingsSearchEntry] {
[ [
// General // General
SettingsSearchEntry(tab: .general, title: "Enable Minimalistic UI", keywords: ["minimalistic", "ui mode", "general"], highlightID: SettingsTab.general.highlightID(for: "Enable Minimalistic UI")), SettingsSearchEntry(
SettingsSearchEntry(tab: .general, title: "Menubar icon", keywords: ["menu bar", "status bar", "icon"], highlightID: SettingsTab.general.highlightID(for: "Menubar icon")), tab: .general,
SettingsSearchEntry(tab: .general, title: "Launch at login", keywords: ["autostart", "startup"], highlightID: SettingsTab.general.highlightID(for: "Launch at login")), title: String(localized: "Enable Minimalistic UI"),
keywords: [ String(localized: "minimalistic"), String(localized: "ui mode"), String(localized: "general") ],
highlightID: SettingsTab.general.highlightID(for: "Enable Minimalistic UI")
),
SettingsSearchEntry(
tab: .general,
title: String(localized:"Menubar icon"),
keywords: [ String(localized:"menu bar"), String(localized:"status bar"), String(localized:"icon") ],
highlightID: SettingsTab.general.highlightID(for: "Menubar icon")
),
SettingsSearchEntry(
tab: .general,
title: String(localized:"Launch at login"),
keywords: [ String(localized:"autostart"), String(localized:"startup")],
highlightID: SettingsTab.general.highlightID(for: "Launch at login")
),
SettingsSearchEntry(tab: .general, title: "Show on all displays", keywords: ["multi-display", "external monitor"], highlightID: SettingsTab.general.highlightID(for: "Show on all displays")), SettingsSearchEntry(tab: .general, title: "Show on all displays", keywords: ["multi-display", "external monitor"], highlightID: SettingsTab.general.highlightID(for: "Show on all displays")),
SettingsSearchEntry(tab: .general, title: "Show on a specific display", keywords: ["preferred screen", "display picker"], highlightID: SettingsTab.general.highlightID(for: "Show on a specific display")), SettingsSearchEntry(
SettingsSearchEntry(tab: .general, title: "Automatically switch displays", keywords: ["auto switch", "displays"], highlightID: SettingsTab.general.highlightID(for: "Automatically switch displays")), tab: .general,
SettingsSearchEntry(tab: .general, title: "Hide Dynamic Island during screenshots & recordings", keywords: ["privacy", "screenshot", "recording"], highlightID: SettingsTab.general.highlightID(for: "Hide Dynamic Island during screenshots & recordings")), title: "Show on a specific display",
SettingsSearchEntry(tab: .general, title: "Enable gestures", keywords: ["gestures", "trackpad"], highlightID: SettingsTab.general.highlightID(for: "Enable gestures")), keywords: ["preferred screen", "display picker"],
SettingsSearchEntry(tab: .general, title: "Close gesture", keywords: ["pinch", "swipe"], highlightID: SettingsTab.general.highlightID(for: "Close gesture")), highlightID: SettingsTab.general.highlightID(for: "Show on a specific display")
SettingsSearchEntry(tab: .general, title: "Reverse swipe gestures", keywords: ["reverse", "swipe", "media"], highlightID: SettingsTab.general.highlightID(for: "Reverse swipe gestures")), ),
SettingsSearchEntry(tab: .general, title: "Reverse scroll gestures", keywords: ["reverse", "scroll", "open", "close"], highlightID: SettingsTab.general.highlightID(for: "Reverse scroll gestures")), SettingsSearchEntry(
SettingsSearchEntry(tab: .general, title: "Extend hover area", keywords: ["hover", "cursor"], highlightID: SettingsTab.general.highlightID(for: "Extend hover area")), tab: .general,
SettingsSearchEntry(tab: .general, title: "Enable haptics", keywords: ["haptic", "feedback"], highlightID: SettingsTab.general.highlightID(for: "Enable haptics")), title: String(localized:"Automatically switch displays"),
SettingsSearchEntry(tab: .general, title: "Open notch on hover", keywords: ["hover to open", "auto open"], highlightID: SettingsTab.general.highlightID(for: "Open notch on hover")), keywords: [String(localized:"auto switch"), String(localized:"displays")],
SettingsSearchEntry(tab: .general, title: "Notch display height", keywords: ["display height", "menu bar size"], highlightID: SettingsTab.general.highlightID(for: "Notch display height")), highlightID: SettingsTab.general.highlightID(for: "Automatically switch displays")
),
// Live Activities SettingsSearchEntry(
SettingsSearchEntry(tab: .liveActivities, title: "Enable Screen Recording Detection", keywords: ["screen recording", "indicator"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable Screen Recording Detection")), tab: .general,
SettingsSearchEntry(tab: .liveActivities, title: "Show Recording Indicator", keywords: ["recording indicator", "red dot"], highlightID: SettingsTab.liveActivities.highlightID(for: "Show Recording Indicator")), title: String(localized:"Hide Dynamic Island during screenshots & recordings"),
SettingsSearchEntry(tab: .liveActivities, title: "Enable Focus Detection", keywords: ["focus", "do not disturb", "dnd"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable Focus Detection")), keywords: [String(localized:"privacy"), String(localized:"screenshot"), String(localized:"recording")],
SettingsSearchEntry(tab: .liveActivities, title: "Show Focus Indicator", keywords: ["focus icon", "moon"], highlightID: SettingsTab.liveActivities.highlightID(for: "Show Focus Indicator")), highlightID: SettingsTab.general.highlightID(for: "Hide Dynamic Island during screenshots & recordings")
SettingsSearchEntry(tab: .liveActivities, title: "Show Focus Label", keywords: ["focus label", "text"], highlightID: SettingsTab.liveActivities.highlightID(for: "Show Focus Label")), ),
SettingsSearchEntry(tab: .liveActivities, title: "Enable Camera Detection", keywords: ["camera", "privacy indicator"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable Camera Detection")), SettingsSearchEntry(
SettingsSearchEntry(tab: .liveActivities, title: "Enable Microphone Detection", keywords: ["microphone", "privacy"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable Microphone Detection")), tab: .general,
SettingsSearchEntry(tab: .liveActivities, title: "Enable music live activity", keywords: ["music", "now playing"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable music live activity")), title: String(localized: "Enable gestures"),
SettingsSearchEntry(tab: .liveActivities, title: "Enable reminder live activity", keywords: ["reminder", "live activity"], highlightID: SettingsTab.liveActivities.highlightID(for: "Enable reminder live activity")), keywords: [String(localized: "gestures"), String(localized: "trackpad")],
highlightID: SettingsTab.general.highlightID(for: "Enable gestures")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Close gesture"),
keywords: [String(localized: "pinch"), String(localized: "swipe")],
highlightID: SettingsTab.general.highlightID(for: "Close gesture")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Reverse swipe gestures"),
keywords: [String(localized: "reverse"), String(localized: "swipe"), String(localized: "media")],
highlightID: SettingsTab.general.highlightID(for: "Reverse swipe gestures")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Reverse scroll gestures"),
keywords: [String(localized: "reverse"), String(localized: "scroll"), String(localized: "open"), String(localized: "close")],
highlightID: SettingsTab.general.highlightID(for: "Reverse scroll gestures")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Extend hover area"),
keywords: [String(localized: "hover"), String(localized: "cursor")],
highlightID: SettingsTab.general.highlightID(for: "Extend hover area")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Enable haptics"),
keywords: [String(localized: "haptic"), String(localized: "feedback")],
highlightID: SettingsTab.general.highlightID(for: "Enable haptics")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Open notch on hover"),
keywords: [String(localized: "hover to open"), String(localized: "auto open")],
highlightID: SettingsTab.general.highlightID(for: "Open notch on hover")
),
SettingsSearchEntry(
tab: .general,
title: String(localized: "Notch display height"),
keywords: [String(localized: "display height"), String(localized: "menu bar size")],
highlightID: SettingsTab.general.highlightID(for: "Notch display height")
),
// Battery (Charge) // Battery (Charge)
SettingsSearchEntry(tab: .battery, title: "Show battery indicator", keywords: ["battery hud", "charge"], highlightID: SettingsTab.battery.highlightID(for: "Show battery indicator")), SettingsSearchEntry(tab: .battery, title: "Show battery indicator", keywords: ["battery hud", "charge"], highlightID: SettingsTab.battery.highlightID(for: "Show battery indicator")),
@ -899,7 +958,7 @@ struct GeneralSettings: View {
var body: some View { var body: some View {
Form { Form {
Section { Section {
Defaults.Toggle("Enable Minimalistic UI", key: .enableMinimalisticUI) Defaults.Toggle(String(localized: "Enable Minimalistic UI"), key: .enableMinimalisticUI)
.onChange(of: enableMinimalisticUI) { _, newValue in .onChange(of: enableMinimalisticUI) { _, newValue in
if newValue { if newValue {
// Auto-enable simpler animation mode // Auto-enable simpler animation mode
@ -914,9 +973,9 @@ struct GeneralSettings: View {
} }
Section { Section {
Defaults.Toggle("Menubar icon", key: .menubarIcon) Defaults.Toggle(String(localized:"Menubar icon"), key: .menubarIcon)
.settingsHighlight(id: highlightID("Menubar icon")) .settingsHighlight(id: highlightID("Menubar icon"));
LaunchAtLogin.Toggle("Launch at login") LaunchAtLogin.Toggle(String(localized:"Launch at login"))
.settingsHighlight(id: highlightID("Launch at login")) .settingsHighlight(id: highlightID("Launch at login"))
Defaults.Toggle(key: .showOnAllDisplays) { Defaults.Toggle(key: .showOnAllDisplays) {
Text("Show on all displays") Text("Show on all displays")
@ -935,13 +994,13 @@ struct GeneralSettings: View {
} }
.disabled(showOnAllDisplays) .disabled(showOnAllDisplays)
.settingsHighlight(id: highlightID("Show on a specific display")) .settingsHighlight(id: highlightID("Show on a specific display"))
Defaults.Toggle("Automatically switch displays", key: .automaticallySwitchDisplay) Defaults.Toggle(String(localized:"Automatically switch displays"), key: .automaticallySwitchDisplay)
.onChange(of: automaticallySwitchDisplay) { .onChange(of: automaticallySwitchDisplay) {
NotificationCenter.default.post(name: Notification.Name.automaticallySwitchDisplayChanged, object: nil) NotificationCenter.default.post(name: Notification.Name.automaticallySwitchDisplayChanged, object: nil)
} }
.disabled(showOnAllDisplays) .disabled(showOnAllDisplays)
.settingsHighlight(id: highlightID("Automatically switch displays")) .settingsHighlight(id: highlightID("Automatically switch displays"))
Defaults.Toggle("Hide Dynamic Island during screenshots & recordings", key: .hideDynamicIslandFromScreenCapture) Defaults.Toggle(String(localized:"Hide Dynamic Island during screenshots & recordings"), key: .hideDynamicIslandFromScreenCapture)
.settingsHighlight(id: highlightID("Hide Dynamic Island during screenshots & recordings")) .settingsHighlight(id: highlightID("Hide Dynamic Island during screenshots & recordings"))
} header: { } header: {
Text("System features") Text("System features")
@ -1029,11 +1088,11 @@ struct GeneralSettings: View {
@ViewBuilder @ViewBuilder
func gestureControls() -> some View { func gestureControls() -> some View {
Section { Section {
Defaults.Toggle("Enable gestures", key: .enableGestures) Defaults.Toggle(String(localized:"Enable gestures"), key: .enableGestures)
.disabled(!openNotchOnHover) .disabled(!openNotchOnHover)
.settingsHighlight(id: highlightID("Enable gestures")) .settingsHighlight(id: highlightID("Enable gestures"))
if enableGestures { if enableGestures {
Defaults.Toggle("Media change with horizontal gestures", key: .enableHorizontalMusicGestures) Defaults.Toggle(String(localized:"Media change with horizontal gestures"), key: .enableHorizontalMusicGestures)
.settingsHighlight(id: highlightID("Horizontal media gestures")) .settingsHighlight(id: highlightID("Horizontal media gestures"))
if enableHorizontalMusicGestures { if enableHorizontalMusicGestures {
@ -1050,11 +1109,11 @@ struct GeneralSettings: View {
.font(.caption) .font(.caption)
.foregroundStyle(.secondary) .foregroundStyle(.secondary)
Defaults.Toggle("Reverse swipe gestures", key: .reverseSwipeGestures) Defaults.Toggle(String(localized:"Reverse swipe gestures"), key: .reverseSwipeGestures)
.settingsHighlight(id: highlightID("Reverse swipe gestures")) .settingsHighlight(id: highlightID("Reverse swipe gestures"))
} }
Defaults.Toggle("Close gesture", key: .closeGestureEnabled) Defaults.Toggle(String(localized:"Close gesture"), key: .closeGestureEnabled)
.settingsHighlight(id: highlightID("Close gesture")) .settingsHighlight(id: highlightID("Close gesture"))
Slider(value: $gestureSensitivity, in: 100...300, step: 100) { Slider(value: $gestureSensitivity, in: 100...300, step: 100) {
HStack { HStack {
@ -1065,7 +1124,7 @@ struct GeneralSettings: View {
} }
} }
Defaults.Toggle("Reverse open/close scroll gestures", key: .reverseScrollGestures) Defaults.Toggle(String(localized:"Reverse open/close scroll gestures"), key: .reverseScrollGestures)
.settingsHighlight(id: highlightID("Reverse scroll gestures")) .settingsHighlight(id: highlightID("Reverse scroll gestures"))
} }
} header: { } header: {
@ -1084,11 +1143,11 @@ struct GeneralSettings: View {
@ViewBuilder @ViewBuilder
func NotchBehaviour() -> some View { func NotchBehaviour() -> some View {
Section { Section {
Defaults.Toggle("Extend hover area", key: .extendHoverArea) Defaults.Toggle(String(localized:"Extend hover area"), key: .extendHoverArea)
.settingsHighlight(id: highlightID("Extend hover area")) .settingsHighlight(id: highlightID("Extend hover area"))
Defaults.Toggle("Enable haptics", key: .enableHaptics) Defaults.Toggle(String(localized:"Enable haptics"), key: .enableHaptics)
.settingsHighlight(id: highlightID("Enable haptics")) .settingsHighlight(id: highlightID("Enable haptics"))
Defaults.Toggle("Open notch on hover", key: .openNotchOnHover) Defaults.Toggle(String(localized:"Open notch on hover"), key: .openNotchOnHover)
.settingsHighlight(id: highlightID("Open notch on hover")) .settingsHighlight(id: highlightID("Open notch on hover"))
Toggle("Remember last tab", isOn: $coordinator.openLastTabByDefault) Toggle("Remember last tab", isOn: $coordinator.openLastTabByDefault)
if openNotchOnHover { if openNotchOnHover {