Fix strings detections and translates the entire "Shelf" section

This commit is contained in:
Felipe Giacomini Cocco 2026-02-05 18:15:41 -03:00
commit 6f94b353e8
2 changed files with 137 additions and 29 deletions

View file

@ -1842,6 +1842,26 @@
} }
} }
}, },
"Accessibility permission lets Dynamic Island replace the native volume, brightness, and keyboard HUDs." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "A permissão de acessibilidade permite que o Dynamic Island substitua o volume nativo, o brilho e os HUDs do teclado."
}
}
}
},
"Accessibility permission required" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Permissão de acessibilidade necessária"
}
}
}
},
"Actions" : { "Actions" : {
"localizations" : { "localizations" : {
"fr" : { "fr" : {
@ -5663,7 +5683,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Escolha qual serviço usar ao compartilhar arquivos da prateleira. Arraste os arquivos para a prateleira ou clique no botão da prateleira para escolher os arquivos." "value" : "Escolha qual serviço usar ao compartilhar arquivos da mesa. Arraste os arquivos para a mesa ou clique no botão da mesa para escolher os arquivos."
} }
} }
} }
@ -5675,7 +5695,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Escolha quais controles de sistema devem exibir janelas OSD personalizadas." "value" : "Escolha quais controles de sistema devem exibir janelas OSD customizadas."
} }
} }
} }
@ -5839,6 +5859,9 @@
"circular" : { "circular" : {
"shouldTranslate" : false "shouldTranslate" : false
}, },
"Circular" : {
"shouldTranslate" : false
},
"classic" : { "classic" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -7587,7 +7610,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "OSD personalizado" "value" : "OSD Customizado"
} }
} }
} }
@ -7599,7 +7622,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "O recurso OSD personalizado requer o macOS 15 ou posterior." "value" : "O recurso OSD customizado requer o macOS 15 ou posterior."
} }
} }
} }
@ -8850,6 +8873,12 @@
} }
} }
}, },
"Dynamic Island" : {
"shouldTranslate" : false
},
"Dynamic Island HUD" : {
"shouldTranslate" : false
},
"Dynamic Island Progress Bars" : { "Dynamic Island Progress Bars" : {
"comment" : "A section header that lists the options for customizing the appearance of the progress bars displayed by Dynamic Island.", "comment" : "A section header that lists the options for customizing the appearance of the progress bars displayed by Dynamic Island.",
"isCommentAutoGenerated" : true, "isCommentAutoGenerated" : true,
@ -10526,7 +10555,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Os arquivos deixados na prateleira serão compartilhados através deste serviço" "value" : "Os arquivos deixados na mesa serão compartilhados através deste serviço"
} }
} }
} }
@ -10726,6 +10755,16 @@
} }
} }
}, },
"Full Disk Access required" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Acesso Completo ao Disco Necessário"
}
}
}
},
"Fully charged" : { "Fully charged" : {
"comment" : "Charging fallback label when already charged", "comment" : "Charging fallback label when already charged",
"localizations" : { "localizations" : {
@ -11593,6 +11632,16 @@
} }
} }
}, },
"Grant Full Disk Access so the Shelf can index and move files outside the app sandbox." : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Conceda Acesso Total ao Disco para que a Mesa possa indexar e mover arquivos para fora da sandbox do aplicativo."
}
}
}
},
"graph" : { "graph" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -17816,6 +17865,26 @@
} }
} }
}, },
"Open Privacy & Security" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Abrir Privacidade e Segurança"
}
}
}
},
"Open Settings" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Abrir Ajustes"
}
}
}
},
"Open shelf tab by default if items added" : { "Open shelf tab by default if items added" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -18127,6 +18196,16 @@
} }
} }
}, },
"Play feedback when volume is changed" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Reproduzir feedback quando o volume for alterado"
}
}
}
},
"Play lock/unlock sounds" : { "Play lock/unlock sounds" : {
"localizations" : { "localizations" : {
"pt-BR" : { "pt-BR" : {
@ -19336,7 +19415,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Remova da prateleira depois de arrastar" "value" : "Remova da mesa depois de arrastar"
} }
} }
} }
@ -19362,7 +19441,17 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Requer Acesso" "value" : "Solicitar Acesso"
}
}
}
},
"Request Full Disk Access" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Solicitar Acesso Completo ao Disco"
} }
} }
} }
@ -20676,7 +20765,7 @@
"pt-BR" : { "pt-BR" : {
"stringUnit" : { "stringUnit" : {
"state" : "translated", "state" : "translated",
"value" : "Prateleira" "value" : "Mesa"
} }
}, },
"ru" : { "ru" : {
@ -24645,6 +24734,16 @@
} }
} }
}, },
"Vertical Bar" : {
"localizations" : {
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Barra Vertical"
}
}
}
},
"Vertical:" : { "Vertical:" : {
"extractionState" : "stale", "extractionState" : "stale",
"localizations" : { "localizations" : {

View file

@ -2014,6 +2014,15 @@ private struct HUDAndOSDSettingsView: View {
case circular = "Circular" case circular = "Circular"
var id: String { rawValue } var id: String { rawValue }
var title: String {
switch self {
case .hud: return String(localized: "Dynamic Island HUD")
case .osd: return String(localized: "Custom OSD")
case .vertical: return String(localized: "Vertical Bar")
case .circular: return String(localized: "Circular")
}
}
} }
private var paneBackgroundColor: Color { private var paneBackgroundColor: Color {
@ -2024,7 +2033,7 @@ private struct HUDAndOSDSettingsView: View {
VStack(spacing: 20) { VStack(spacing: 20) {
HStack(spacing: 16) { HStack(spacing: 16) {
HUDSelectionCard( HUDSelectionCard(
title: "Dynamic Island", title: String(localized: "Dynamic Island"),
isSelected: selectedTab == .hud, isSelected: selectedTab == .hud,
action: { action: {
selectedTab = .hud selectedTab = .hud
@ -2064,7 +2073,7 @@ private struct HUDAndOSDSettingsView: View {
} }
HUDSelectionCard( HUDSelectionCard(
title: "Custom OSD", title: String(localized: "Custom OSD"),
isSelected: selectedTab == .osd, isSelected: selectedTab == .osd,
action: { action: {
selectedTab = .osd selectedTab = .osd
@ -2106,7 +2115,7 @@ private struct HUDAndOSDSettingsView: View {
} }
HUDSelectionCard( HUDSelectionCard(
title: "Vertical Bar", title: String(localized: "Vertical Bar"),
isSelected: selectedTab == .vertical, isSelected: selectedTab == .vertical,
action: { action: {
selectedTab = .vertical selectedTab = .vertical
@ -2149,7 +2158,7 @@ private struct HUDAndOSDSettingsView: View {
} }
HUDSelectionCard( HUDSelectionCard(
title: "Circular", title: String(localized: "Circular"),
isSelected: selectedTab == .circular, isSelected: selectedTab == .circular,
action: { action: {
selectedTab = .circular selectedTab = .circular
@ -2489,7 +2498,7 @@ struct HUD: View {
if !hasAccessibilityPermission { if !hasAccessibilityPermission {
Section { Section {
SettingsPermissionCallout( SettingsPermissionCallout(
message: "Accessibility permission lets Dynamic Island replace the native volume, brightness, and keyboard HUDs.", message: String(localized: "Accessibility permission lets Dynamic Island replace the native volume, brightness, and keyboard HUDs."),
requestAction: { accessibilityPermission.requestAuthorizationPrompt() }, requestAction: { accessibilityPermission.requestAuthorizationPrompt() },
openSettingsAction: { accessibilityPermission.openSystemSettings() } openSettingsAction: { accessibilityPermission.openSystemSettings() }
) )
@ -2515,7 +2524,7 @@ struct HUD: View {
} }
Section { Section {
Defaults.Toggle("Play feedback when volume is changed", key: .playVolumeChangeFeedback) Defaults.Toggle(String(localized: "Play feedback when volume is changed"), key: .playVolumeChangeFeedback)
.settingsHighlight(id: highlightID("Play feedback when volume is changed")) .settingsHighlight(id: highlightID("Play feedback when volume is changed"))
.help("Plays the supplied feedback clip whenever you press the hardware volume keys.") .help("Plays the supplied feedback clip whenever you press the hardware volume keys.")
} header: { } header: {
@ -2527,16 +2536,16 @@ struct HUD: View {
} }
Section { Section {
Defaults.Toggle("Color-coded volume display", key: .useColorCodedVolumeDisplay) Defaults.Toggle(String(localized: "Color-coded volume display"), key: .useColorCodedVolumeDisplay)
.disabled(colorCodingDisabled) .disabled(colorCodingDisabled)
.settingsHighlight(id: highlightID("Color-coded volume display")) .settingsHighlight(id: highlightID("Color-coded volume display"))
if !colorCodingDisabled && (Defaults[.useColorCodedBatteryDisplay] || Defaults[.useColorCodedVolumeDisplay]) { if !colorCodingDisabled && (Defaults[.useColorCodedBatteryDisplay] || Defaults[.useColorCodedVolumeDisplay]) {
Defaults.Toggle("Smooth color transitions", key: .useSmoothColorGradient) Defaults.Toggle(String(localized: "Smooth color transitions"), key: .useSmoothColorGradient)
.settingsHighlight(id: highlightID("Smooth color transitions")) .settingsHighlight(id: highlightID("Smooth color transitions"))
} }
Defaults.Toggle("Show percentages beside progress bars", key: .showProgressPercentages) Defaults.Toggle(String(localized: "Show percentages beside progress bars"), key: .showProgressPercentages)
.settingsHighlight(id: highlightID("Show percentages beside progress bars")) .settingsHighlight(id: highlightID("Show percentages beside progress bars"))
} header: { } header: {
Text("Dynamic Island Progress Bars") Text("Dynamic Island Progress Bars")
@ -2581,9 +2590,9 @@ struct HUD: View {
.tag(ProgressBarStyle.segmented) .tag(ProgressBarStyle.segmented)
} }
.settingsHighlight(id: highlightID("Progressbar style")) .settingsHighlight(id: highlightID("Progressbar style"))
Defaults.Toggle("Enable glowing effect", key: .systemEventIndicatorShadow) Defaults.Toggle(String(localized: "Enable glowing effect"), key: .systemEventIndicatorShadow)
.settingsHighlight(id: highlightID("Enable glowing effect")) .settingsHighlight(id: highlightID("Enable glowing effect"))
Defaults.Toggle("Use accent color", key: .systemEventIndicatorUseAccent) Defaults.Toggle(String(localized: "Use accent color"), key: .systemEventIndicatorUseAccent)
.settingsHighlight(id: highlightID("Use accent color")) .settingsHighlight(id: highlightID("Use accent color"))
} header: { } header: {
HStack { HStack {
@ -3163,12 +3172,12 @@ struct Shelf: View {
if !fullDiskAccessPermission.isAuthorized { if !fullDiskAccessPermission.isAuthorized {
Section { Section {
SettingsPermissionCallout( SettingsPermissionCallout(
title: "Full Disk Access required", title: String(localized: "Full Disk Access required"),
message: "Grant Full Disk Access so the Shelf can index and move files outside the app sandbox.", message: String(localized: "Grant Full Disk Access so the Shelf can index and move files outside the app sandbox."),
icon: "externaldrive.fill", icon: "externaldrive.fill",
iconColor: .purple, iconColor: .purple,
requestButtonTitle: "Request Full Disk Access", requestButtonTitle: String(localized: "Request Full Disk Access"),
openSettingsButtonTitle: "Open Privacy & Security", openSettingsButtonTitle: String(localized: "Open Privacy & Security"),
requestAction: { fullDiskAccessPermission.requestAccessPrompt() }, requestAction: { fullDiskAccessPermission.requestAccessPrompt() },
openSettingsAction: { fullDiskAccessPermission.openSystemSettings() } openSettingsAction: { fullDiskAccessPermission.openSystemSettings() }
) )
@ -3178,11 +3187,11 @@ struct Shelf: View {
} }
Section { Section {
Defaults.Toggle("Enable shelf", key: .dynamicShelf) Defaults.Toggle(String(localized: "Enable shelf"), key: .dynamicShelf)
.disabled(!fullDiskAccessPermission.isAuthorized) .disabled(!fullDiskAccessPermission.isAuthorized)
.settingsHighlight(id: highlightID("Enable shelf")) .settingsHighlight(id: highlightID("Enable shelf"))
Defaults.Toggle("Open shelf tab by default if items added", key: .openShelfByDefault) Defaults.Toggle(String(localized: "Open shelf tab by default if items added"), key: .openShelfByDefault)
.settingsHighlight(id: highlightID("Open shelf tab by default if items added")) .settingsHighlight(id: highlightID("Open shelf tab by default if items added"))
Defaults.Toggle(key: .expandedDragDetection) { Defaults.Toggle(key: .expandedDragDetection) {
@ -5043,7 +5052,7 @@ struct Shortcuts: View {
var body: some View { var body: some View {
Form { Form {
Section { Section {
Defaults.Toggle("Enable global keyboard shortcuts", key: .enableShortcuts) Defaults.Toggle(String(localized: "Enable global keyboard shortcuts"), key: .enableShortcuts)
.settingsHighlight(id: highlightID("Enable global keyboard shortcuts")) .settingsHighlight(id: highlightID("Enable global keyboard shortcuts"))
} header: { } header: {
Text("General") Text("General")
@ -6702,12 +6711,12 @@ struct SettingsPermissionCallout: View {
let openSettingsAction: () -> Void let openSettingsAction: () -> Void
init( init(
title: String = "Accessibility permission required", title: String = String(localized: "Accessibility permission required"),
message: String, message: String,
icon: String = "exclamationmark.triangle.fill", icon: String = "exclamationmark.triangle.fill",
iconColor: Color = .orange, iconColor: Color = .orange,
requestButtonTitle: String = "Request Access", requestButtonTitle: String = String(localized: "Request Access"),
openSettingsButtonTitle: String = "Open Settings", openSettingsButtonTitle: String = String(localized: "Open Settings"),
requestAction: @escaping () -> Void, requestAction: @escaping () -> Void,
openSettingsAction: @escaping () -> Void openSettingsAction: @escaping () -> Void
) { ) {