Merge pull request #378 from StellarSea/refactor/localize-hardcoded-strings

fix: correct localized string typo and replace remaining hardcoded strings
This commit is contained in:
Hariharan Mudaliar 2026-04-03 11:34:42 +05:30 • committed by GitHub
commit f8e8406859
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 193 additions and 72 deletions

View file

@ -1610,7 +1610,7 @@ private struct HUDAndOSDSettingsView: View {
VStack(spacing: 20) {
HStack(spacing: 16) {
HUDSelectionCard(
title: "Dynamic Island",
title: String(localized: "Dynamic Island"),
isSelected: selectedTab == .hud,
action: {
selectedTab = .hud
@ -1650,7 +1650,7 @@ private struct HUDAndOSDSettingsView: View {
}
HUDSelectionCard(
title: "Custom OSD",
title: String(localized: "Custom OSD"),
isSelected: selectedTab == .osd,
action: {
selectedTab = .osd
@ -1692,7 +1692,7 @@ private struct HUDAndOSDSettingsView: View {
}
HUDSelectionCard(
title: "Vertical Bar",
title: String(localized: "Vertical Bar"),
isSelected: selectedTab == .vertical,
action: {
selectedTab = .vertical
@ -1735,7 +1735,7 @@ private struct HUDAndOSDSettingsView: View {
}
HUDSelectionCard(
title: "Circular",
title: String(localized: "Circular"),
isSelected: selectedTab == .circular,
action: {
selectedTab = .circular
@ -2528,9 +2528,11 @@ struct Media: View {
}
}
if showShuffleAndRepeat {
Defaults.Toggle("Show \"Change Media Output\" control", key: .showMediaOutputControl)
.settingsHighlight(id: highlightID("Show Change Media Output control"))
.help("Adds the AirPlay/route picker button back to the customizable controls palette.")
Defaults.Toggle(key: .showMediaOutputControl) {
Text("Show \"Change Media Output\" control")
}
.settingsHighlight(id: highlightID("Show Change Media Output control"))
.help("Adds the AirPlay/route picker button back to the customizable controls palette.")
MusicSlotConfigurationView()
} else {
Text("Turn on customizable controls to rearrange media buttons.")
@ -2575,10 +2577,9 @@ struct Media: View {
)
.disabled(standardControlsSuppressed)
.help(standardControlsSuppressed ? "Standard notch media controls are hidden while this toggle is off." : "")
Defaults.Toggle(
"Show floating media controls",
key: .musicControlWindowEnabled
)
Defaults.Toggle(key: .musicControlWindowEnabled) {
Text("Show floating media controls")
}
.disabled(!coordinator.musicLiveActivityEnabled || standardControlsSuppressed)
.help("Displays play/pause and skip buttons beside the notch while music is active. Disabled by default.")
Toggle("Enable sneak peek", isOn: $enableSneakPeek)
@ -2623,9 +2624,11 @@ struct Media: View {
}
.disabled(!enableLockScreenMediaWidget)
if isAppleMusicActive {
Defaults.Toggle("Show merged AirPlay and output devices", key: .lockScreenMusicMergedAirPlayOutput)
.disabled(!enableLockScreenMediaWidget)
.settingsHighlight(id: highlightID("Show merged AirPlay and output devices"))
Defaults.Toggle(key: .lockScreenMusicMergedAirPlayOutput) {
Text("Show merged AirPlay and output devices")
}
.disabled(!enableLockScreenMediaWidget)
.settingsHighlight(id: highlightID("Show merged AirPlay and output devices"))
}
Defaults.Toggle(key: .lockScreenPanelShowsBorder) {
Text("Show panel border")
@ -2975,10 +2978,9 @@ struct CalendarSettings: View {
}
}
Defaults.Toggle(
"Hide active event and show next upcoming event",
key: .lockScreenShowCalendarEventAfterStartEnabled
)
Defaults.Toggle(key: .lockScreenShowCalendarEventAfterStartEnabled) {
Text("Hide active event and show next upcoming event")
}
.disabled(!lockScreenShowCalendarEvent || lockScreenShowCalendarEventEntireDuration)
.settingsHighlight(id: highlightID("Hide active event and show next upcoming event"))
@ -3077,12 +3079,12 @@ struct CalendarSettings: View {
private func statusText(for status: EKAuthorizationStatus) -> String {
switch status {
case .fullAccess, .authorized: return "Full Access"
case .writeOnly: return "Write Only"
case .denied: return "Denied"
case .restricted: return "Restricted"
case .notDetermined: return "Not Determined"
@unknown default: return "Unknown"
case .fullAccess, .authorized: return String(localized: "Full Access")
case .writeOnly: return String(localized: "Write Only")
case .denied: return String(localized: "Denied")
case .restricted: return String(localized: "Restricted")
case .notDetermined: return String(localized: "Not Determined")
@unknown default: return String(localized: "Unknown")
}
}
@ -3597,12 +3599,12 @@ struct LiveActivitiesSettings: View {
Section {
if !fullDiskAccessPermission.isAuthorized {
SettingsPermissionCallout(
title: "Custom Focus metadata",
message: "Full Disk Access unlocks custom Focus icons, colors, and labels. Standard Focus detection still works without it—grant access only if you need personalized indicators.",
title: String(localized: "Custom Focus metadata"),
message: String(localized: "Full Disk Access unlocks custom Focus icons, colors, and labels. Standard Focus detection still works without it—grant access only if you need personalized indicators."),
icon: "externaldrive.fill",
iconColor: .purple,
requestButtonTitle: "Request Full Disk Access",
openSettingsButtonTitle: "Open Privacy & Security",
requestButtonTitle: String(localized: "Request Full Disk Access"),
openSettingsButtonTitle: String(localized: "Open Privacy & Security"),
requestAction: { fullDiskAccessPermission.requestAccessPrompt() },
openSettingsAction: { fullDiskAccessPermission.openSystemSettings() }
)
@ -3982,8 +3984,9 @@ struct Appearance: View {
Text("Enable colored spectrograms")
}
.settingsHighlight(id: highlightID("Enable colored spectrograms"))
Defaults
.Toggle("Player tinting", key: .playerColorTinting)
Defaults.Toggle(key: .playerColorTinting) {
Text("Enable colored spectograms")
}
Defaults.Toggle(key: .lightingEffect) {
Text("Enable blur effect behind album art")
}
@ -4447,8 +4450,8 @@ struct Appearance: View {
}
let description = enableMinimalisticUI
? "Width adjustments apply only to the standard notch layout. Disable Minimalistic UI to edit this value."
: "Recommended minimum width adjusts automatically based on the number of enabled tabs."
? String(localized: "Width adjustments apply only to the standard notch layout. Disable Minimalistic UI to edit this value.")
: String(localized: "Recommended minimum width adjusts automatically based on the number of enabled tabs.")
Text(description)
.font(.caption)
@ -4682,9 +4685,11 @@ struct LockScreenSettings: View {
.disabled(!enableLockScreenMediaWidget)
.settingsHighlight(id: highlightID("Show media app icon"))
if isAppleMusicActive {
Defaults.Toggle("Show merged AirPlay and output devices", key: .lockScreenMusicMergedAirPlayOutput)
.disabled(!enableLockScreenMediaWidget)
.settingsHighlight(id: highlightID("Show merged AirPlay and output devices"))
Defaults.Toggle(key: .lockScreenMusicMergedAirPlayOutput) {
Text("Show merged AirPlay and output devices")
}
.disabled(!enableLockScreenMediaWidget)
.settingsHighlight(id: highlightID("Show merged AirPlay and output devices"))
}
Defaults.Toggle(key: .lockScreenPanelShowsBorder) {
Text("Show panel border")
@ -5292,9 +5297,9 @@ private struct LockScreenPositioningControls: View {
HStack(alignment: .top, spacing: 24) {
offsetColumn(
title: "Weather",
title: String(localized: "Weather"),
value: weatherOffset,
resetTitle: "Reset Weather",
resetTitle: String(localized: "Reset Weather"),
resetAction: resetWeatherOffset
)
@ -5302,9 +5307,9 @@ private struct LockScreenPositioningControls: View {
.frame(height: 64)
offsetColumn(
title: "Timer",
title: String(localized: "Timer"),
value: timerOffset,
resetTitle: "Reset Timer",
resetTitle: String(localized: "Reset Timer"),
resetAction: resetTimerOffset
)
@ -5312,9 +5317,9 @@ private struct LockScreenPositioningControls: View {
.frame(height: 64)
offsetColumn(
title: "Music",
title: String(localized: "Music"),
value: musicOffset,
resetTitle: "Reset Music",
resetTitle: String(localized: "Reset Music"),
resetAction: resetMusicOffset
)
@ -5326,21 +5331,21 @@ private struct LockScreenPositioningControls: View {
VStack(alignment: .leading, spacing: 16) {
widthSlider(
title: "Media Panel Width",
title: String(localized: "Media Panel Width"),
value: musicWidthBinding,
range: musicWidthRange,
resetTitle: "Reset Media Width",
resetTitle: String(localized: "Reset Media Width"),
resetAction: resetMusicWidth,
helpText: "Shrinks the lock screen media panel while keeping the expanded view full width."
helpText: String(localized: "Shrinks the lock screen media panel while keeping the expanded view full width.")
)
widthSlider(
title: "Timer Widget Width",
title: String(localized: "Timer Widget Width"),
value: timerWidthBinding,
range: timerWidthRange,
resetTitle: "Reset Timer Width",
resetTitle: String(localized: "Reset Timer Width"),
resetAction: resetTimerWidth,
helpText: "Adjusts the lock screen timer widget width without affecting button sizing."
helpText: String(localized: "Adjusts the lock screen timer widget width without affecting button sizing.")
)
}
} header: {
@ -6180,9 +6185,9 @@ struct TimerSettings: View {
Text("Default Custom Timer")
.font(.headline)
TimerDurationStepperRow(title: "Hours", value: $customHours, range: 0...23)
TimerDurationStepperRow(title: "Minutes", value: $customMinutes, range: 0...59)
TimerDurationStepperRow(title: "Seconds", value: $customSeconds, range: 0...59)
TimerDurationStepperRow(title: String(localized: "Hours"), value: $customHours, range: 0...23)
TimerDurationStepperRow(title: String(localized: "Minutes"), value: $customMinutes, range: 0...59)
TimerDurationStepperRow(title: String(localized: "Seconds"), value: $customSeconds, range: 0...59)
HStack {
Text("Current default:")
@ -6522,9 +6527,9 @@ private struct TimerPresetEditorRow: View {
}
HStack(spacing: 16) {
TimerPresetComponentControl(title: "Hours", value: hoursBinding, range: 0...23)
TimerPresetComponentControl(title: "Minutes", value: minutesBinding, range: 0...59)
TimerPresetComponentControl(title: "Seconds", value: secondsBinding, range: 0...59)
TimerPresetComponentControl(title: String(localized: "Hours"), value: hoursBinding, range: 0...23)
TimerPresetComponentControl(title: String(localized: "Minutes"), value: minutesBinding, range: 0...59)
TimerPresetComponentControl(title: String(localized: "Seconds"), value: secondsBinding, range: 0...59)
}
ColorPicker("Accent colour", selection: colorBinding, supportsOpacity: false)