Wetter: deutsche Conditions + Asphalt-Label entrümpelt

- WeatherCondition deutsch: 'Mostly Clear' → 'Überwiegend klar' etc.
- AsphaltLevel.label nur noch ein Wort (Heiß/Warm/Gefährlich),
  die safety-Info wandert in den advice-Text → Title bleibt einzeilig
This commit is contained in:
rene 2026-05-30 13:30:01 +02:00
parent 357c57e880
commit 08069d6ea4
2 changed files with 47 additions and 7 deletions

View file

@ -20,18 +20,18 @@ enum GassiWetter {
var label: String {
switch self {
case .safe: return "Unbedenklich"
case .warm: return "Warm — kurze Runden ok"
case .hot: return "Heiß — Pfoten verbrennen"
case .danger: return "Gefährlich — gar nicht laufen"
case .warm: return "Warm"
case .hot: return "Heiß"
case .danger: return "Gefährlich"
}
}
var advice: String? {
switch self {
case .safe: return nil
case .warm: return "Schatten suchen, Pausen einlegen."
case .hot: return "Gras oder Schatten bevorzugen — Asphalt vermeiden."
case .danger: return "Nur Morgens/Abends rausgehen, mittags drinnen."
case .warm: return "Schatten suchen, Pausen einlegen — kurze Runden sind ok."
case .hot: return "Pfoten verbrennen. Gras oder Schatten bevorzugen, Asphalt meiden."
case .danger: return "Pfoten verbrennen sofort. Nur früh morgens oder abends rausgehen."
}
}
}

View file

@ -141,7 +141,7 @@ struct WetterView: View {
.symbolRenderingMode(.multicolor)
.font(.system(size: 56))
VStack(alignment: .leading, spacing: 2) {
Text(day.condition.description)
Text(germanCondition(day.condition))
.font(.headline)
HStack(spacing: 6) {
Text("\(Int(metrics.tempMax.rounded()))°").font(.title3.bold().monospacedDigit())
@ -287,6 +287,46 @@ struct WetterView: View {
// MARK: - Loading
private func germanCondition(_ condition: WeatherCondition) -> String {
switch condition {
case .clear: return "Klar"
case .mostlyClear: return "Überwiegend klar"
case .partlyCloudy: return "Teilweise bewölkt"
case .mostlyCloudy: return "Überwiegend bewölkt"
case .cloudy: return "Bedeckt"
case .foggy: return "Nebel"
case .haze: return "Dunst"
case .smoky: return "Rauch in der Luft"
case .drizzle: return "Nieselregen"
case .freezingDrizzle: return "Gefrierender Nieselregen"
case .rain: return "Regen"
case .heavyRain: return "Starker Regen"
case .freezingRain: return "Gefrierender Regen"
case .sunShowers: return "Sonnige Schauer"
case .snow: return "Schnee"
case .heavySnow: return "Starker Schnee"
case .flurries: return "Schneetreiben"
case .blowingSnow: return "Schneeverwehung"
case .blizzard: return "Schneesturm"
case .sleet: return "Schneeregen"
case .hail: return "Hagel"
case .wintryMix: return "Schneeregen-Mix"
case .thunderstorms: return "Gewitter"
case .strongStorms: return "Starkes Gewitter"
case .scatteredThunderstorms: return "Vereinzelte Gewitter"
case .isolatedThunderstorms: return "Einzelne Gewitter"
case .tropicalStorm: return "Tropensturm"
case .hurricane: return "Hurrikan"
case .hot: return "Hitze"
case .frigid: return "Eisige Kälte"
case .windy: return "Windig"
case .breezy: return "Leichte Brise"
case .blowingDust: return "Staubsturm"
case .sunFlurries: return "Schneetreiben"
default: return condition.description
}
}
private func loadWeather() async {
guard let coord = location.coordinate else { return }
isLoading = true