From 86fccdc7732cccb0afaa29e6cd4c3cba26126b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sun, 13 Sep 2026 19:02:52 +0200 Subject: [PATCH] =?UTF-8?q?Kometen-Ereignisse=20im=20Monatsflie=C3=9Ftext?= =?UTF-8?q?=20als=20vollst=C3=A4ndige=20Saetze=20formulieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- public/monatsvorhersage.php | 38 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/public/monatsvorhersage.php b/public/monatsvorhersage.php index baa0865..ff3a467 100644 --- a/public/monatsvorhersage.php +++ b/public/monatsvorhersage.php @@ -1614,20 +1614,31 @@ if (!function_exists('monthForecastBuildNarrativeText')) { static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['favorite_comet_good_visibility', 'favorite_comet_perihelion', 'favorite_comet_geocentric_minimum'], true), 4 ); - if ($cometEvents !== []) { + $describeCometEvent = static function (array $event): ?string { + $name = trim((string) ($event['comet_name'] ?? '')); + $date = trim((string) ($event['date'] ?? '')); + if ($name === '' || $date === '') { + return null; + } + + return match ((string) ($event['type'] ?? '')) { + 'favorite_comet_perihelion' => "Der Komet {$name} erreicht am {$date} seinen sonnennächsten Bahnpunkt, das Perihel.", + 'favorite_comet_geocentric_minimum' => "Der Komet {$name} kommt der Erde am {$date} am nächsten.", + 'favorite_comet_good_visibility' => "Der Komet {$name} ist ab dem {$date} besonders gut zu beobachten.", + default => null, + }; + }; + + $cometSentences = array_values(array_filter(array_map($describeCometEvent, $cometEvents))); + + if ($cometSentences !== []) { $cometIntro = $seededPick([ - 'Bei den Kometen sind in diesem Monat besonders', - 'Auch bei den Kometen lohnt sich in diesem Monat der Blick auf', - 'Unter den Kometen fallen in diesem Monat vor allem', - 'Kometenfreunde können sich in diesem Monat besonders für', - ], 'cometIntro', 'Bei den Kometen sind in diesem Monat besonders'); - $cometOutro = $seededPick([ - 'interessant.', - 'beobachtenswert.', - 'bemerkenswert.', - 'einen genaueren Blick wert.', - ], 'cometOutro', 'interessant.'); - $addParagraph($cometIntro . ' ' . $describeEvents($cometEvents) . ' ' . $cometOutro); + 'Auch bei den Kometen gibt es in diesem Monat einiges zu entdecken.', + 'Kometenfreunde kommen in diesem Monat ebenfalls auf ihre Kosten.', + 'Unter den Kometen gibt es in diesem Monat lohnende Ziele.', + 'Auch der Blick auf die Kometen lohnt sich in diesem Monat.', + ], 'cometIntro', 'Auch bei den Kometen gibt es in diesem Monat einiges zu entdecken.'); + $addParagraph($cometIntro . ' ' . implode(' ', $cometSentences)); } $eclipseEvents = $findEvents( @@ -2993,6 +3004,7 @@ foreach ($favoriteCometEvents as $favoriteCometEvent) { 'end_local_iso' => (string) ($favoriteCometEvent['end_local_iso'] ?? ''), 'duration_minutes' => isset($favoriteCometEvent['duration_minutes']) ? (int) $favoriteCometEvent['duration_minutes'] : null, 'type' => $favoriteCometType, + 'comet_name' => trim((string) ($favoriteCometEvent['comet_name'] ?? '')), ]; }