Fix strings detections and translates the entire Onboarding

This commit is contained in:
Felipe Giacomini Cocco 2026-02-05 23:16:57 -03:00
commit d80ead1bd2
4 changed files with 19 additions and 20 deletions

View file

@ -136,13 +136,13 @@ extension MediaControllerType {
var description: String { var description: String {
switch self { switch self {
case .nowPlaying: case .nowPlaying:
return "Works with most media apps, including browsers, to detect what's playing. Note: This may be removed in a future macOS version." return String(localized: "Works with most media apps, including browsers, to detect what's playing. Note: This may be removed in a future macOS version.")
case .spotify: case .spotify:
return "Connects directly to the Spotify app." return String(localized: "Connects directly to the Spotify app.")
case .appleMusic: case .appleMusic:
return "Connects directly to the Apple Music app." return String(localized: "Connects directly to the Apple Music app.")
case .youtubeMusic: case .youtubeMusic:
return "Requires a third-party client with API plugin enabled." return String(localized: "Requires a third-party client with API plugin enabled.")
} }
} }
} }

View file

@ -53,9 +53,9 @@ struct OnboardingView: View {
case .cameraPermission: case .cameraPermission:
PermissionRequestView( PermissionRequestView(
icon: Image(systemName: "camera.fill"), icon: Image(systemName: "camera.fill"),
title: "Enable Camera Access", title: String(localized: "Enable Camera Access"),
description: "Atoll includes a mirror feature that lets you quickly check your appearance using your camera, right from the notch. Camera access is required only to show this live preview. You can turn the mirror feature on or off at any time in the app.", description: String(localized: "Atoll includes a mirror feature that lets you quickly check your appearance using your camera, right from the notch. Camera access is required only to show this live preview. You can turn the mirror feature on or off at any time in the app."),
privacyNote: "Your camera is never used without your consent, and nothing is recorded or stored.", privacyNote: String(localized: "Your camera is never used without your consent, and nothing is recorded or stored."),
onAllow: { onAllow: {
Task { Task {
await requestCameraPermission() await requestCameraPermission()
@ -75,9 +75,9 @@ struct OnboardingView: View {
case .calendarPermission: case .calendarPermission:
PermissionRequestView( PermissionRequestView(
icon: Image(systemName: "calendar"), icon: Image(systemName: "calendar"),
title: "Enable Calendar Access", title: String(localized: "Enable Calendar Access"),
description: "Atoll can show all your upcoming events in one place. Access to your calendar is needed to display your schedule.", description: String(localized: "Atoll can show all your upcoming events in one place. Access to your calendar is needed to display your schedule."),
privacyNote: "Your calendar data is only used to show your events and is never shared.", privacyNote: String(localized: "Your calendar data is only used to show your events and is never shared."),
onAllow: { onAllow: {
Task { Task {
await requestCalendarPermission() await requestCalendarPermission()

View file

@ -34,30 +34,30 @@ struct ProfileSelectionView: View {
let profiles: [UserProfile] = [ let profiles: [UserProfile] = [
UserProfile( UserProfile(
id: "developer", id: "developer",
name: "Developer", name: String(localized: "Developer"),
icon: "terminal.fill", icon: "terminal.fill",
description: "Code and debug with color picker, stats monitoring, and screen assistant.", description: String(localized: "Code and debug with color picker, stats monitoring, and screen assistant."),
gradient: [Color.blue, Color.purple] gradient: [Color.blue, Color.purple]
), ),
UserProfile( UserProfile(
id: "designer", id: "designer",
name: "Designer", name: String(localized: "Designer"),
icon: "paintbrush.fill", icon: "paintbrush.fill",
description: "Create and design with color picker, mirror, and visual effects.", description: String(localized: "Create and design with color picker, mirror, and visual effects."),
gradient: [Color.pink, Color.orange] gradient: [Color.pink, Color.orange]
), ),
UserProfile( UserProfile(
id: "lightuse", id: "lightuse",
name: "Light Use", name: String(localized: "Light Use"),
icon: "sparkles", icon: "sparkles",
description: "Simple and minimal interface with just the essentials for everyday tasks.", description: String(localized: "Simple and minimal interface with just the essentials for everyday tasks."),
gradient: [Color.green, Color.mint] gradient: [Color.green, Color.mint]
), ),
UserProfile( UserProfile(
id: "student", id: "student",
name: "Student", name: String(localized: "Student"),
icon: "book.fill", icon: "book.fill",
description: "Stay organized with calendar, timer, and battery monitoring.", description: String(localized: "Stay organized with calendar, timer, and battery monitoring."),
gradient: [Color.indigo, Color.cyan] gradient: [Color.indigo, Color.cyan]
) )
] ]

View file

@ -1682,8 +1682,7 @@ struct GeneralSettings: View {
if enableHorizontalMusicGestures { if enableHorizontalMusicGestures {
Picker("Gesture skip behavior", selection: $musicGestureBehavior) { Picker("Gesture skip behavior", selection: $musicGestureBehavior) {
ForEach(MusicSkipBehavior.allCases) { behavior in ForEach(MusicSkipBehavior.allCases) { behavior in
Text(behavior.displayName) Text(behavior.displayName).tag(behavior)
.tag(behavior)
} }
} }
.pickerStyle(.segmented) .pickerStyle(.segmented)