Add multi-step radio wizard with Shoutcast/Icecast/AzureCast support and multi-language translations

- New 5-step RadioWizardController with session-based wizard flow
- Enhanced RadioStreamService with Shoutcast/Icecast/ AzureCast auto-detection
- Connection test functionality for stream, now-playing, and listeners
- Wizard views for all 5 steps with step indicator navigation
- All 21 language files updated with wizard translation keys (NL/EN + placeholders)
- Wizard link added to existing radio setup page
- Routes registered under /admin/radio/wizard/*
This commit is contained in:
root
2026-05-24 13:12:57 +02:00
parent 8c49a1138c
commit 5476dce882
31 changed files with 4298 additions and 43 deletions
+166 -1
View File
@@ -182,5 +182,170 @@
"commandocentrum.client": "Client",
"commandocentrum.renderer": "Renderer",
"commandocentrum.webroot_status": "Webroot",
"commandocentrum.rank": "Rank"
"commandocentrum.rank": "Rank",
"radio.title": "Radio",
"radio.music": "Muziek",
"radio.loading": "Laden...",
"radio.navigation_label": "Radio",
"radio.setup_page_title": "Radio Setup",
"radio.setup_page_subtitle": "Configureer je radio systeem in één keer",
"radio.setup.success_title": "Radio Geïnstalleerd!",
"radio.setup.success_body": "Radio systeem is succesvol geïnstalleerd en geconfigureerd!",
"radio.setup.error_title": "Installatie Mislukt",
"radio.setup.error_body": "Er is een fout opgetreden: :message",
"radio.setup.button_label": "Alles Installeren",
"radio.setup.modal_heading": "Radio Installeren?",
"radio.setup.modal_description": "Dit zal alle radio instellingen configureren met standaard waarden.",
"radio.setup.modal_submit": "Ja, installeer!",
"radio.setup.tooltip": "Installeer het complete radio systeem",
"radio.setup_complete": "✅ Installatie Voltooid!",
"radio.what_gets_configured": "Wat wordt er geconfigureerd?",
"radio.radio_stream": "Radio Stream",
"radio.radio_stream_desc": "Stel je stream URL in met ondersteuning voor SHOUTcast, Icecast, AzureCast en andere streaming platforms.",
"radio.points_system": "Punten Systeem",
"radio.points_system_desc": "Laat gebruikers punten verdienen door te luisteren, nummers aan te vragen en deel te nemen aan contests.",
"radio.community_features": "Community Functies",
"radio.community_features_desc": "Shouts, song requests, DJ aanmeldingen en meer community interacties.",
"radio.dj_management": "DJ Beheer",
"radio.dj_management_desc": "DJ ranks, schema, auto-detectie en Sambroadcaster/Virtual DJ integratie.",
"radio.monitoring": "Stream Monitoring",
"radio.monitoring_desc": "Houd je stream uptime in de gaten met real-time monitoring.",
"radio.display_options": "Weergave Opties",
"radio.display_options_desc": "Widget, player stijlen, kleuren en aanpasbare CSS/JS.",
"radio.default_settings": "Standaard Instellingen",
"radio.radio_label": "Radio",
"radio.enabled": "Ingeschakeld",
"radio.points_label": "Punten",
"radio.per_min": " per min",
"radio.daily_limit": "Dagelijkse limiet",
"radio.shouts_label": "Shouts",
"radio.on": "Aan",
"radio.widget": "Widget",
"radio.global": "Globaal",
"radio.dj_apps": "DJ Aanmeldingen",
"radio.open": "Open",
"radio.monitoring_label": "Monitoring",
"radio.contests_label": "Contesten",
"radio.install_radio_system": "🚀 Radio Systeem Installeren",
"radio.reset_settings": "Instellingen Resetten",
"radio.reset_confirm": "Weet je zeker dat je alle radio instellingen wilt resetten?",
"radio.go_to_radio_settings": "Naar Radio Instellingen",
"radio.open_wizard": "🎯 Open Radio Wizard",
"radio.wizard_desc": "Stap-voor-stap wizard met verbindingstest",
"radio.wizard.title": "Radio Installatie Wizard",
"radio.wizard.step_short": "Stap",
"radio.wizard.step_prefix": "Stap",
"radio.wizard.of": "van",
"radio.wizard.next_step": "Volgende Stap →",
"radio.wizard.previous_step": "← Vorige Stap",
"radio.wizard.back_to_setup": "Terug naar setup",
"radio.wizard.step1_label": "Platform",
"radio.wizard.step2_label": "Stream",
"radio.wizard.step3_label": "API",
"radio.wizard.step4_label": "Functies",
"radio.wizard.step5_label": "Testen",
"radio.wizard.step1_subtitle": "Kies je streaming platform",
"radio.wizard.step2_title": "Stream Configuratie",
"radio.wizard.step3_title": "API Configuratie",
"radio.wizard.step3_subtitle": "Now Playing & Luisteraars",
"radio.wizard.step4_title": "Functies Configureren",
"radio.wizard.step4_subtitle": "Kies welke radio functies je wilt inschakelen",
"radio.wizard.step5_title": "Test & Installeren",
"radio.wizard.step5_subtitle": "Controleer de verbinding en voltooi de installatie",
"radio.wizard.platform_shoutcast": "SHOUTcast",
"radio.wizard.platform_shoutcast_desc": "Geschikt voor SHOUTcast servers. Automatische detectie van nu afspelen en luisteraars via stats endpoint.",
"radio.wizard.platform_icecast": "Icecast",
"radio.wizard.platform_icecast_desc": "Geschikt voor Icecast servers. Gebruikt status-json.xsl voor automatische detectie.",
"radio.wizard.platform_azurecast": "AzureCast",
"radio.wizard.platform_azurecast_desc": "AzureCast hosting. Volledige API integratie met now-playing, listeners en auto-configuratie.",
"radio.wizard.platform_other": "Anders",
"radio.wizard.platform_other_desc": "Een andere stream provider. Handmatige configuratie van stream URL en API endpoints.",
"radio.wizard.shoutcast_info_title": "SHOUTcast",
"radio.wizard.shoutcast_info_desc": "Voer je SHOUTcast stream URL in. De wizard probeert automatisch de stats endpoint te vinden.",
"radio.wizard.icecast_info_title": "Icecast",
"radio.wizard.icecast_info_desc": "Voer je Icecast stream URL in. De wizard gebruikt status-json.xsl voor automatische detectie.",
"radio.wizard.azurecast_info_title": "AzureCast",
"radio.wizard.azurecast_info_desc": "AzureCast stream URL + server configuratie. De wizard configureert alles via de AzureCast API.",
"radio.wizard.other_info_title": "Andere Stream",
"radio.wizard.other_info_desc": "Voer je stream URL in. Je kunt later handmatig API endpoints configureren voor nu afspelen en luisteraars.",
"radio.wizard.stream_url_label": "Stream URL *",
"radio.wizard.stream_url_hint": "De directe URL naar je audiostreem (MP3, AAC, OGG, etc.)",
"radio.wizard.stream_name_label": "Stream Naam",
"radio.wizard.stream_name_placeholder": "Mijn Radio",
"radio.wizard.stream_name_hint": "Een naam voor je radiostream (optioneel)",
"radio.wizard.azurecast_section": "AzureCast Server Configuratie",
"radio.wizard.azurecast_base_url_label": "AzureCast Basis URL",
"radio.wizard.azurecast_base_url_hint": "De basis URL van je AzureCast server. Wordt automatisch gedetecteerd als leeg gelaten.",
"radio.wizard.azurecast_station_id_label": "Station ID",
"radio.wizard.azurecast_station_id_hint": "Het station ID in AzureCast (standaard: 1)",
"radio.wizard.enable_now_playing": "Nu Afspelen inschakelen",
"radio.wizard.now_playing_api_label": "Now Playing API URL",
"radio.wizard.now_playing_api_hint": "API endpoint dat het huidige nummer teruggeeft. Meestal automatisch gedetecteerd.",
"radio.wizard.enable_listeners": "Luisteraars teller inschakelen",
"radio.wizard.listeners_api_label": "Listeners API URL",
"radio.wizard.listeners_api_hint": "API endpoint dat het aantal luisteraars teruggeeft.",
"radio.wizard.enable_current_dj": "Huidige DJ tonen",
"radio.wizard.detected": "gedetecteerd!",
"radio.wizard.detected_desc": "API endpoints zijn automatisch gevonden en ingevuld.",
"radio.wizard.not_detected": "Geen automatische detectie",
"radio.wizard.not_detected_desc": "Vul de API URLs handmatig in of sla deze stap over.",
"radio.wizard.section_community": "Community Functies",
"radio.wizard.feature_shouts": "Shouts",
"radio.wizard.feature_shouts_desc": "Berichten achterlaten",
"radio.wizard.feature_applications": "DJ Aanmeldingen",
"radio.wizard.feature_applications_desc": "Solliciteren als DJ",
"radio.wizard.feature_requests": "Song Verzoeken",
"radio.wizard.feature_requests_desc": "Nummers aanvragen",
"radio.wizard.section_display": "Weergave",
"radio.wizard.feature_widget": "Radio Widget",
"radio.wizard.feature_widget_desc": "Miniplayer op de site",
"radio.wizard.feature_widget_global": "Widget Overal",
"radio.wizard.feature_widget_global_desc": "Op alle pagina's tonen",
"radio.wizard.widget_position_label": "Widget Positie",
"radio.wizard.position_bottom_right": "Rechtsonder",
"radio.wizard.position_bottom_left": "Linksonder",
"radio.wizard.position_top_right": "Rechtsboven",
"radio.wizard.position_top_left": "Linksboven",
"radio.wizard.section_gamification": "Gamification",
"radio.wizard.feature_points": "Punten Systeem",
"radio.wizard.feature_points_desc": "Verdien punten door te luisteren",
"radio.wizard.feature_contests": "Contesten",
"radio.wizard.feature_contests_desc": "Wedstrijden organiseren",
"radio.wizard.feature_giveaways": "Giveaways",
"radio.wizard.feature_giveaways_desc": "Cadeautjes weggeven",
"radio.wizard.section_integrations": "Integraties",
"radio.wizard.feature_discord": "Discord Notificaties",
"radio.wizard.feature_discord_desc": "Meldingen bij DJ live / nummer wijziging",
"radio.wizard.discord_webhook_label": "Discord Webhook URL",
"radio.wizard.discord_webhook_hint": "Maak een webhook aan in je Discord server kanaal.",
"radio.wizard.test_title": "Verbinding Testen",
"radio.wizard.test_desc": "Klik op Test Verbinding om te controleren of je stream en APIs bereikbaar zijn.",
"radio.wizard.test_loading": "Bezig met testen van de verbinding...",
"radio.wizard.test_prompt": "Klik op de knop om de verbinding te testen.",
"radio.wizard.test_button": "Test Verbinding",
"radio.wizard.test_retry": "Opnieuw Testen",
"radio.wizard.settings_overview": "Overzicht van Instellingen",
"radio.wizard.settings_overview_desc": "Dit zijn de instellingen die worden opgeslagen:",
"radio.wizard.install_confirm": "Weet je zeker dat je de radio wilt installeren met deze instellingen?",
"radio.wizard.install_button": "Radio Installeren",
"radio.wizard.test_result_stream": "Stream Verbinding",
"radio.wizard.test_result_now_playing": "Now Playing",
"radio.wizard.test_result_listeners": "Luisteraars",
"radio.wizard.status_success": "Succes",
"radio.wizard.status_warning": "Waarschuwing",
"radio.wizard.status_error": "Fout",
"radio.wizard.status_skipped": "Overgeslagen",
"radio.wizard.status_untested": "Niet getest",
"radio.wizard.content_type": "Content-Type",
"radio.wizard.http_status": "HTTP Status",
"radio.wizard.song": "Nummer",
"radio.wizard.artist": "Artiest",
"radio.wizard.listeners": "Luisteraars",
"radio.wizard.api_url": "API URL",
"radio.wizard.test_stream_ok": "Stream is bereikbaar! Je kunt de radio installeren.",
"radio.wizard.test_stream_fail": "Stream is niet bereikbaar. Controleer de URL en probeer het opnieuw.",
"radio.wizard.test_not_run": "Nog niet getest.",
"radio.wizard.test_connection_fail": "Kon de test niet uitvoeren: ",
"radio.wizard.error": "Fout",
"radio.wizard.unknown_error": "Onbekende fout"
}