Files
Calendarr-IOS/Calendarr iOS/Models/ReminderOptions.swift
Scarriffle 864eb31072 iOS: align reminder options with web (5/15/30 min, 1 h, 1 day, 1 week)
Drop 10 min / 2 h / 2 days, add 1 week, and use full-word "… vorher" /
"… before" labels so the choices match the web client.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 20:32:34 +02:00

47 lines
2.2 KiB
Swift

import Foundation
/// Reminder offset options (minutes before an event's start; 0 = at start) and
/// their localized labels. Shared by the event editor, the settings default
/// picker, and the notification scheduler so the choices stay consistent.
enum ReminderOptions {
/// Selectable offsets in minutes-before-start.
static let all: [Int] = [0, 5, 15, 30, 60, 1440, 10080]
private static func isEnglish(_ appLang: String) -> Bool {
if appLang == "en" { return true }
if appLang == "de" { return false }
return (Locale.current.language.languageCode?.identifier ?? "de").hasPrefix("en")
}
static func label(_ minutes: Int, _ appLang: String) -> String {
let en = isEnglish(appLang)
if minutes <= 0 { return en ? "At start time" : "Zur Startzeit" }
if minutes < 60 {
return en ? "\(minutes) minutes before" : "\(minutes) Minuten vorher"
}
if minutes < 1440 {
let h = minutes / 60
if en { return h == 1 ? "1 hour before" : "\(h) hours before" }
return h == 1 ? "1 Stunde vorher" : "\(h) Stunden vorher"
}
if minutes < 10080 {
let d = minutes / 1440
if en { return d == 1 ? "1 day before" : "\(d) days before" }
return d == 1 ? "1 Tag vorher" : "\(d) Tage vorher"
}
let w = minutes / 10080
if en { return w == 1 ? "1 week before" : "\(w) weeks before" }
return w == 1 ? "1 Woche vorher" : "\(w) Wochen vorher"
}
static func sectionTitle(_ l: String) -> String { isEnglish(l) ? "Reminders" : "Benachrichtigungen" }
static func addLabel(_ l: String) -> String { isEnglish(l) ? "Add reminder" : "Benachrichtigung hinzufügen" }
static func off(_ l: String) -> String { isEnglish(l) ? "Off" : "Aus" }
static func defaultTitle(_ l: String) -> String { isEnglish(l) ? "Default reminder" : "Standardbenachrichtigung" }
static func defaultFooter(_ l: String) -> String {
isEnglish(l)
? "Applies to all events unless an event has its own reminders."
: "Gilt für alle Termine, sofern ein Termin keine eigenen Benachrichtigungen hat."
}
}