From 38efce3299cd1f3eaf8cd8cc20b58fbe4d2371a6 Mon Sep 17 00:00:00 2001 From: Mustapha-Tarek Date: Fri, 2 Aug 2024 23:46:12 +0200 Subject: [PATCH] PLAYRTS-5580 Fix titles in podcast section of radios (#502) Co-authored-by: Pierre-Yves --- .../Play RSI/ApplicationConfiguration.json | 2 +- .../Play RSI/it.lproj/Localizable.strings | 20 +++++++++----- .../Play RTR/rm.lproj/Localizable.strings | 12 ++++++--- .../Play RTS/ApplicationConfiguration.json | 2 +- .../Play RTS/fr.lproj/Localizable.strings | 14 +++++++--- .../Play SRF/de.lproj/Localizable.strings | 22 ++++++++++------ .../Play SWI/en.lproj/Localizable.strings | 12 ++++++--- .../Sources/Calendar/CalendarViewController.m | 6 ++++- Application/Sources/Configuration/Channel.h | 19 ++++++++++++++ Application/Sources/Configuration/Channel.m | 20 +++++++++++++- .../Sources/Configuration/RadioChannel.swift | 8 ++++++ Application/Sources/Content/Content.swift | 26 ++++++++++++++----- Translations/Localizable.strings | 12 ++++++--- docs/REMOTE_CONFIGURATION.md | 3 +++ 14 files changed, 140 insertions(+), 38 deletions(-) diff --git a/Application/Resources/Apps/Play RSI/ApplicationConfiguration.json b/Application/Resources/Apps/Play RSI/ApplicationConfiguration.json index f1be0bfd5..b07d8a317 100755 --- a/Application/Resources/Apps/Play RSI/ApplicationConfiguration.json +++ b/Application/Resources/Apps/Play RSI/ApplicationConfiguration.json @@ -18,7 +18,7 @@ "termsAndConditionsURL": "https://www.rsi.ch/la-rsi/Condizioni-generali-di-uso-del-sito-RSI-8585464.html", "dataProtectionURL": "https://www.rsi.ch/la-rsi/Dichiarazione-sulla-protezione-dei-dati-10499633.html", "whatsNewURL": "https://srgssr.github.io/playsrg-apple/releases/release_notes-ios-rsi.html", - "radioChannels": "[{\"uid\":\"rete-uno\",\"name\":\"Rete Uno\",\"resourceUid\":\"rete_uno\",\"songsViewStyle\":\"collapsed\",\"color\":\"#0074C2\",\"secondColor\":\"#54B8EF\"},{\"uid\":\"rete-due\",\"name\":\"Rete Due\",\"resourceUid\":\"rete_due\",\"songsViewStyle\":\"collapsed\",\"color\":\"#06A73B\",\"secondColor\":\"#30E96B\"},{\"uid\":\"rete-tre\",\"name\":\"Rete Tre\",\"resourceUid\":\"rete_tre\",\"songsViewStyle\":\"collapsed\",\"color\":\"#A4BB1B\",\"secondColor\":\"#DEF355\"},{\"uid\":\"podcast\",\"name\":\"Podcast\",\"resourceUid\":\"rsi_podcast\",\"color\":\"#333333\",\"homeSections\":\"radioLatest,radioFavoriteShows,radioLatestEpisodesFromFavorites,radioResumePlayback,radioMostPopular,radioWatchLater,radioAllShows\"}]", + "radioChannels": "[{\"uid\":\"rete-uno\",\"name\":\"Rete Uno\",\"resourceUid\":\"rete_uno\",\"songsViewStyle\":\"collapsed\",\"color\":\"#0074C2\",\"secondColor\":\"#54B8EF\"},{\"uid\":\"rete-due\",\"name\":\"Rete Due\",\"resourceUid\":\"rete_due\",\"songsViewStyle\":\"collapsed\",\"color\":\"#06A73B\",\"secondColor\":\"#30E96B\"},{\"uid\":\"rete-tre\",\"name\":\"Rete Tre\",\"resourceUid\":\"rete_tre\",\"songsViewStyle\":\"collapsed\",\"color\":\"#A4BB1B\",\"secondColor\":\"#DEF355\"},{\"uid\":\"podcast\",\"name\":\"Podcast\",\"resourceUid\":\"rsi_podcast\",\"color\":\"#333333\",\"showType\":\"podcast\",\"homeSections\":\"radioLatest,radioFavoriteShows,radioLatestEpisodesFromFavorites,radioResumePlayback,radioMostPopular,radioWatchLater,radioAllShows\"}]", "tvChannels": "[{\"uid\":\"la1\",\"name\":\"LA 1\",\"resourceUid\":\"la1\",\"color\":\"#FF9120\",\"secondColor\":\"#E15100\"},{\"uid\":\"la2\",\"name\":\"LA 2\",\"resourceUid\":\"la2\",\"color\":\"#FFCF2F\",\"secondColor\":\"#F38A0D\"},{\"uid\":\"143932a79bb5a123a646b68b1d1188d7ae493e5b\",\"name\":\"RTS 1\",\"resourceUid\":\"rts_un\",\"color\":\"#00D6F3\",\"secondColor\":\"#00B6F0\",\"titleColor\":\"#161616\"},{\"uid\":\"d7dfff28deee44e1d3c49a3d37d36d492b29671b\",\"name\":\"RTS 2\",\"resourceUid\":\"rts_deux\",\"color\":\"#BB66FF\",\"secondColor\":\"#782EB5\"},{\"uid\":\"5d332a26e06d08eec8ad385d566187df72955623\",\"name\":\"RTS Info\",\"resourceUid\":\"rts_info\",\"color\":\"#3787FF\",\"secondColor\":\"#153567\"},{\"uid\":\"23FFBE1B-65CE-4188-ADD2-C724186C2C9F\",\"name\":\"SRF 1\",\"resourceUid\":\"tv_srf1\",\"color\":\"#C91024\",\"secondColor\":\"#8D0614\"},{\"uid\":\"E4D5AD08-C1E8-46A3-BB58-4875051D60D2\",\"name\":\"SRF zwei\",\"resourceUid\":\"tv_srf2\",\"color\":\"#FFB600\",\"secondColor\":\"#ED7004\",\"titleColor\":\"#161616\",\"hasDarkStatusBar\":true},{\"uid\":\"34c2819e-e715-43d7-9026-40a443152a97\",\"name\":\"SRF info\",\"resourceUid\":\"tv_srf_info\",\"color\":\"#AF001E\",\"secondColor\":\"#830512\"}]", "satelliteRadioChannels": "[{\"uid\":\"rsp\",\"name\":\"Radio Swiss Pop\",\"resourceUid\":\"rsp\",\"songsViewStyle\":\"expanded\",\"color\":\"#F01F73\",\"secondColor\":\"#D31A3C\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswisspop.ch/it\"},{\"uid\":\"rsc-it\",\"name\":\"Radio Swiss Classic\",\"resourceUid\":\"rsc\",\"songsViewStyle\":\"expanded\",\"color\":\"#09A1DE\",\"secondColor\":\"#036E99\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswissclassic.ch/it\"},{\"uid\":\"rsj\",\"name\":\"Radio Swiss Jazz\",\"resourceUid\":\"rsj\",\"songsViewStyle\":\"expanded\",\"color\":\"#F7B222\",\"secondColor\":\"#CC7A00\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswissjazz.ch/it\"}]", "topicColors": "{\"urn:rsi:topic:tv:1\":{\"firstColor\":\"#B5344E\",\"secondColor\":\"#480010\"},\"urn:rsi:topic:tv:4\":{\"firstColor\":\"#D7B447\",\"secondColor\":\"#B62019\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:7\":{\"firstColor\":\"#546591\",\"secondColor\":\"#2C3A50\"},\"urn:rsi:topic:tv:8\":{\"firstColor\":\"#CD4023\",\"secondColor\":\"#90062E\"},\"urn:rsi:topic:tv:11\":{\"firstColor\":\"#DEA706\",\"secondColor\":\"#E92466\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:40\":{\"firstColor\":\"#44BDA8\",\"secondColor\":\"#00324E\"},\"urn:rsi:topic:tv:80\":{\"firstColor\":\"#1F509D\",\"secondColor\":\"#121A37\"},\"urn:rsi:topic:tv:90\":{\"firstColor\":\"#8B96A5\",\"secondColor\":\"#4F5562\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:100\":{\"firstColor\":\"#D75959\",\"secondColor\":\"#29336C\"},\"urn:rsi:topic:tv:600\":{\"firstColor\":\"#23B6CD\",\"secondColor\":\"#7C3184\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:6000\":{\"firstColor\":\"#017EB3\",\"secondColor\":\"#011844\"},\"urn:rtr:topic:tv:2d48ba80-566c-4359-9e8d-8d9b2d570e0a\":{\"firstColor\":\"#00A1A1\",\"secondColor\":\"#04575B\"},\"urn:rtr:topic:tv:7d7f21be-6727-4939-9126-5bca25eb3a49\":{\"firstColor\":\"#80D2E3\",\"secondColor\":\"#003D58\"},\"urn:rtr:topic:tv:20e7478f-1ea1-49c3-81c2-5f157d6ff092\":{\"firstColor\":\"#340101\",\"secondColor\":\"#8F0E0F\"},\"urn:rtr:topic:tv:50bb90d6-41af-4bbd-b92c-6ef5db16a9b3\":{\"firstColor\":\"#8A0533\",\"secondColor\":\"#812626\"},\"urn:rtr:topic:tv:c50140e7-5740-4c44-abd0-0f7d9ea68da7\":{\"firstColor\":\"#A6A6A7\",\"secondColor\":\"#2C2B2D\"},\"urn:rtr:topic:tv:dfb7ae6d-cb73-431b-a817-b1663ec2f58a\":{\"firstColor\":\"#00F8CC\",\"secondColor\":\"#018864\"},\"urn:rts:topic:tv:623\":{\"firstColor\":\"#5C845B\",\"secondColor\":\"#16280F\"},\"urn:rts:topic:tv:665\":{\"firstColor\":\"#3787FF\",\"secondColor\":\"#0A1C33\"},\"urn:rts:topic:tv:1095\":{\"firstColor\":\"#F5F500\",\"secondColor\":\"#BEB405\",\"reduceBrightness\":true},\"urn:rts:topic:tv:1353\":{\"firstColor\":\"#084165\",\"secondColor\":\"#140953\"},\"urn:rts:topic:tv:2743\":{\"firstColor\":\"#BCF6FF\",\"secondColor\":\"#00D0EF\",\"reduceBrightness\":true},\"urn:rts:topic:tv:10193\":{\"firstColor\":\"#EB2350\",\"secondColor\":\"#A61637\"},\"urn:rts:topic:tv:54537\":{\"firstColor\":\"#FFE03E\",\"secondColor\":\"#F98E73\",\"reduceBrightness\":true},\"urn:rts:topic:tv:59220\":{\"firstColor\":\"#492b63\",\"secondColor\":\"#271633\"},\"urn:rts:topic:tv:67132\":{\"firstColor\":\"#415FAF\",\"secondColor\":\"#23376B\"},\"urn:rts:topic:tv:73840\":{\"firstColor\":\"#FF77CD\",\"secondColor\":\"#663052\"},\"urn:srf:topic:tv:1d7d9cfb-6682-4d5b-9e36-322e8fa93c03\":{\"firstColor\":\"#00A4B3\",\"secondColor\":\"#006973\"},\"urn:srf:topic:tv:4acf86dd-7ff7-45d3-baf8-33375340d976\":{\"firstColor\":\"#3f4b70\",\"secondColor\":\"#131a2d\"},\"urn:srf:topic:tv:9a79b1de-cde8-4528-b304-d1ae1363f52f\":{\"firstColor\":\"#836fcd\",\"secondColor\":\"#36343f\"},\"urn:srf:topic:tv:63f937e4-859e-42c4-a430-bdb74dd09645\":{\"firstColor\":\"#4480a2\",\"secondColor\":\"#20182c\"},\"urn:srf:topic:tv:67f812fd-19a3-4c22-9e6b-ec36e65a4703\":{\"firstColor\":\"#bb3966\",\"secondColor\":\"#190406\"},\"urn:srf:topic:tv:593eb926-d892-41ba-8b1f-eccbcfd7f15f\":{\"firstColor\":\"#2bbf9b\",\"secondColor\":\"#02291e\"},\"urn:srf:topic:tv:649e36d7-ff57-41c8-9c1b-7892daf15e78\":{\"firstColor\":\"#FF0037\",\"secondColor\":\"#AF001E\"},\"urn:srf:topic:tv:882cb264-cf81-4a9c-b660-d42519b7ce28\":{\"firstColor\":\"#c91d7d\",\"secondColor\":\"#31041f\"},\"urn:srf:topic:tv:43741c59-317e-458b-ac38-c2b1c065c865\":{\"firstColor\":\"#0075ad\",\"secondColor\":\"#000022\"},\"urn:srf:topic:tv:516421f0-ec89-43ba-823b-1b5ceec262f3\":{\"firstColor\":\"#5FB281\",\"secondColor\":\"#154e60\"},\"urn:srf:topic:tv:641223fa-f112-4d98-8aec-cb22262a1182\":{\"firstColor\":\"#c55cee\",\"secondColor\":\"#0c1c68\"},\"urn:srf:topic:tv:a2d97206-0b85-4226-8afe-06e86ebd05b2\":{\"firstColor\":\"#9fc885\",\"secondColor\":\"#20281a\"},\"urn:srf:topic:tv:a709c610-b275-4c0c-a496-cba304c36712\":{\"firstColor\":\"#b3131d\",\"secondColor\":\"#3e0b14\"},\"urn:srf:topic:tv:b58dcf14-96ac-4046-8676-fd8a942c0e88\":{\"firstColor\":\"#7081b0\",\"secondColor\":\"#202020\"},\"urn:srf:topic:tv:bb7b21e0-1056-4e28-bac3-c610393b5b0f\":{\"firstColor\":\"#3c788e\",\"secondColor\":\"#1b3e48\"},\"urn:srf:topic:tv:e52080fc-f36b-481e-955f-071b6c8d6dc3\":{\"firstColor\":\"#ff6778\",\"secondColor\":\"#920a1a\",\"reduceBrightness\":true},\"urn:srf:topic:tv:fa793c13-bebc-41b9-9710-bf8a34192c15\":{\"firstColor\":\"#baead5\",\"secondColor\":\"#010b40\",\"reduceBrightness\":true}}", diff --git a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings index e297e4b64..2ed4a7869 100755 --- a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Episodi più recenti fra i programmi preferiti"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "I più recenti"; + /* Title label used to present the radio latest videos */ "Latest videos" = "I video più recenti"; @@ -390,10 +393,10 @@ "Mandatory update" = "È necessario aggiornare"; /* Many curated audio homepages option setting state */ -"Many curated pages (PAC landing pages)" = "Many curated pages (PAC landing pages)"; +"Many curated pages (PAC landing pages)" = "Più pagine curate (landing page dal PAC)"; /* Many predefined audio homepage option setting state */ -"Many predefined pages" = "Many predefined pages"; +"Many predefined pages" = "Più pagine predefinite"; /* Message on top screen when trying to open a media in the download list and the media is not downloaded. */ "Media not available yet" = "Media non disponibile"; @@ -488,7 +491,7 @@ "OK" = "OK"; /* One curated audio homepage option setting state */ -"One curated page (PAC Audio)" = "One curated page (PAC Audio)"; +"One curated page (PAC Audio)" = "Pagina curata (audio in PAC)"; /* Label of the button opening system settings */ "Open system settings" = "Aprire le impostazioni del sistema"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Descrivete il problema qui di seguito:"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcast"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Puntate per data"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Popolari sul Play RSI"; @@ -680,7 +689,7 @@ /* Label of the button for Podcast square image format selection Podcast square image format selection view title */ -"Square images" = "Square images"; +"Square images" = "Immagine quadrata"; /* Server setting name */ "Stage" = "Stage"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Versione"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Versioni e note di aggiornamento"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Il play dei video continua in secondo piano anche quando si esce dall'applicazione."; diff --git a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings index 90d61faa2..cc69ad63b 100755 --- a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Novissimas episodas da voss favurits"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "Ils pli novs podcasts"; + /* Title label used to present the radio latest videos */ "Latest videos" = "Ils pli novs videos"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Descrivai per plaschair il sbagl sutvart:"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcast"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Podcasts tenor data"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Popular sin Play RTR"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Versiun"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Remartgas davart versiuns e publicaziuns"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Il video marscha vinavant, era sche Vus bandunais l'applicaziun."; diff --git a/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json b/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json index ecce7cc91..8b732f181 100755 --- a/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json +++ b/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json @@ -21,7 +21,7 @@ "termsAndConditionsURL": "https://www.rts.ch/article/8994021", "dataProtectionURL": "https://www.rts.ch/article/8994006", "whatsNewURL": "https://srgssr.github.io/playsrg-apple/releases/release_notes-ios-rts.html", - "radioChannels": "[{\"uid\":\"a9e7621504c6959e35c3ecbe7f6bed0446cdf8da\",\"name\":\"La 1ère\",\"resourceUid\":\"la1ere\",\"songsViewStyle\":\"collapsed\",\"color\":\"#E20026\",\"secondColor\":\"#5A285B\"},{\"uid\":\"a83f29dee7a5d0d3f9fccdb9c92161b1afb512db\",\"name\":\"Espace 2\",\"resourceUid\":\"espace2\",\"songsViewStyle\":\"collapsed\",\"color\":\"#0071CE\",\"secondColor\":\"#23B7C1\"},{\"uid\":\"8ceb28d9b3f1dd876d1df1780f908578cbefc3d7\",\"name\":\"Couleur 3\",\"resourceUid\":\"couleur3\",\"songsViewStyle\":\"collapsed\",\"color\":\"#E60096\",\"secondColor\":\"#FB5952\"},{\"uid\":\"f8517e5319a515e013551eea15aa114fa5cfbc3a\",\"name\":\"Option Musique\",\"resourceUid\":\"option_musique\",\"songsViewStyle\":\"expanded\",\"color\":\"#00CC99\",\"secondColor\":\"#CBC57A\"},{\"uid\":\"123456789101112131415161718192021222324x\",\"name\":\"Podcasts Originaux\",\"resourceUid\":\"podcasts_originaux\",\"color\":\"#A550F9\",\"homeSections\":\"radioLatestEpisodes,radioShowsAccess,radioFavoriteShows,radioLatestEpisodesFromFavorites,radioResumePlayback,radioMostPopular,radioWatchLater,radioAllShows\"}]", + "radioChannels": "[{\"uid\":\"a9e7621504c6959e35c3ecbe7f6bed0446cdf8da\",\"name\":\"La 1ère\",\"resourceUid\":\"la1ere\",\"songsViewStyle\":\"collapsed\",\"color\":\"#E20026\",\"secondColor\":\"#5A285B\"},{\"uid\":\"a83f29dee7a5d0d3f9fccdb9c92161b1afb512db\",\"name\":\"Espace 2\",\"resourceUid\":\"espace2\",\"songsViewStyle\":\"collapsed\",\"color\":\"#0071CE\",\"secondColor\":\"#23B7C1\"},{\"uid\":\"8ceb28d9b3f1dd876d1df1780f908578cbefc3d7\",\"name\":\"Couleur 3\",\"resourceUid\":\"couleur3\",\"songsViewStyle\":\"collapsed\",\"color\":\"#E60096\",\"secondColor\":\"#FB5952\"},{\"uid\":\"f8517e5319a515e013551eea15aa114fa5cfbc3a\",\"name\":\"Option Musique\",\"resourceUid\":\"option_musique\",\"songsViewStyle\":\"expanded\",\"color\":\"#00CC99\",\"secondColor\":\"#CBC57A\"},{\"uid\":\"123456789101112131415161718192021222324x\",\"name\":\"Podcasts Originaux\",\"resourceUid\":\"podcasts_originaux\",\"color\":\"#A550F9\",\"showType\":\"podcast\",\"homeSections\":\"radioLatestEpisodes,radioShowsAccess,radioFavoriteShows,radioLatestEpisodesFromFavorites,radioResumePlayback,radioMostPopular,radioWatchLater,radioAllShows\"}]", "tvChannels": "[{\"uid\":\"la1\",\"name\":\"LA 1\",\"resourceUid\":\"la1\",\"color\":\"#FF9120\",\"secondColor\":\"#E15100\"},{\"uid\":\"la2\",\"name\":\"LA 2\",\"resourceUid\":\"la2\",\"color\":\"#FFCF2F\",\"secondColor\":\"#F38A0D\"},{\"uid\":\"143932a79bb5a123a646b68b1d1188d7ae493e5b\",\"name\":\"RTS 1\",\"resourceUid\":\"rts_un\",\"color\":\"#00D6F3\",\"secondColor\":\"#00B6F0\",\"titleColor\":\"#161616\"},{\"uid\":\"d7dfff28deee44e1d3c49a3d37d36d492b29671b\",\"name\":\"RTS 2\",\"resourceUid\":\"rts_deux\",\"color\":\"#BB66FF\",\"secondColor\":\"#782EB5\"},{\"uid\":\"5d332a26e06d08eec8ad385d566187df72955623\",\"name\":\"RTS Info\",\"resourceUid\":\"rts_info\",\"color\":\"#3787FF\",\"secondColor\":\"#153567\"},{\"uid\":\"23FFBE1B-65CE-4188-ADD2-C724186C2C9F\",\"name\":\"SRF 1\",\"resourceUid\":\"tv_srf1\",\"color\":\"#C91024\",\"secondColor\":\"#8D0614\"},{\"uid\":\"E4D5AD08-C1E8-46A3-BB58-4875051D60D2\",\"name\":\"SRF zwei\",\"resourceUid\":\"tv_srf2\",\"color\":\"#FFB600\",\"secondColor\":\"#ED7004\",\"titleColor\":\"#161616\",\"hasDarkStatusBar\":true},{\"uid\":\"34c2819e-e715-43d7-9026-40a443152a97\",\"name\":\"SRF info\",\"resourceUid\":\"tv_srf_info\",\"color\":\"#AF001E\",\"secondColor\":\"#830512\"}]", "satelliteRadioChannels": "[{\"uid\":\"rsp\",\"name\":\"Radio Swiss Pop\",\"resourceUid\":\"rsp\",\"songsViewStyle\":\"expanded\",\"color\":\"#F01F73\",\"secondColor\":\"#D31A3C\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswisspop.ch/fr\"},{\"uid\":\"rsc-fr\",\"name\":\"Radio Swiss Classic\",\"resourceUid\":\"rsc\",\"songsViewStyle\":\"expanded\",\"color\":\"#09A1DE\",\"secondColor\":\"#036E99\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswissclassic.ch/fr\"},{\"uid\":\"rsj\",\"name\":\"Radio Swiss Jazz\",\"resourceUid\":\"rsj\",\"songsViewStyle\":\"expanded\",\"color\":\"#F7B222\",\"secondColor\":\"#CC7A00\",\"homepageHidden\":true, \"shareURL\":\"https://www.radioswissjazz.ch/fr\"}]", "topicColors": "{\"urn:rsi:topic:tv:1\":{\"firstColor\":\"#B5344E\",\"secondColor\":\"#480010\"},\"urn:rsi:topic:tv:4\":{\"firstColor\":\"#D7B447\",\"secondColor\":\"#B62019\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:7\":{\"firstColor\":\"#546591\",\"secondColor\":\"#2C3A50\"},\"urn:rsi:topic:tv:8\":{\"firstColor\":\"#CD4023\",\"secondColor\":\"#90062E\"},\"urn:rsi:topic:tv:11\":{\"firstColor\":\"#DEA706\",\"secondColor\":\"#E92466\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:40\":{\"firstColor\":\"#44BDA8\",\"secondColor\":\"#00324E\"},\"urn:rsi:topic:tv:80\":{\"firstColor\":\"#1F509D\",\"secondColor\":\"#121A37\"},\"urn:rsi:topic:tv:90\":{\"firstColor\":\"#8B96A5\",\"secondColor\":\"#4F5562\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:100\":{\"firstColor\":\"#D75959\",\"secondColor\":\"#29336C\"},\"urn:rsi:topic:tv:600\":{\"firstColor\":\"#23B6CD\",\"secondColor\":\"#7C3184\",\"reduceBrightness\":true},\"urn:rsi:topic:tv:6000\":{\"firstColor\":\"#017EB3\",\"secondColor\":\"#011844\"},\"urn:rtr:topic:tv:2d48ba80-566c-4359-9e8d-8d9b2d570e0a\":{\"firstColor\":\"#00A1A1\",\"secondColor\":\"#04575B\"},\"urn:rtr:topic:tv:7d7f21be-6727-4939-9126-5bca25eb3a49\":{\"firstColor\":\"#80D2E3\",\"secondColor\":\"#003D58\"},\"urn:rtr:topic:tv:20e7478f-1ea1-49c3-81c2-5f157d6ff092\":{\"firstColor\":\"#340101\",\"secondColor\":\"#8F0E0F\"},\"urn:rtr:topic:tv:50bb90d6-41af-4bbd-b92c-6ef5db16a9b3\":{\"firstColor\":\"#8A0533\",\"secondColor\":\"#812626\"},\"urn:rtr:topic:tv:c50140e7-5740-4c44-abd0-0f7d9ea68da7\":{\"firstColor\":\"#A6A6A7\",\"secondColor\":\"#2C2B2D\"},\"urn:rtr:topic:tv:dfb7ae6d-cb73-431b-a817-b1663ec2f58a\":{\"firstColor\":\"#00F8CC\",\"secondColor\":\"#018864\"},\"urn:rts:topic:tv:623\":{\"firstColor\":\"#5C845B\",\"secondColor\":\"#16280F\"},\"urn:rts:topic:tv:665\":{\"firstColor\":\"#3787FF\",\"secondColor\":\"#0A1C33\"},\"urn:rts:topic:tv:1095\":{\"firstColor\":\"#F5F500\",\"secondColor\":\"#BEB405\",\"reduceBrightness\":true},\"urn:rts:topic:tv:1353\":{\"firstColor\":\"#084165\",\"secondColor\":\"#140953\"},\"urn:rts:topic:tv:2743\":{\"firstColor\":\"#BCF6FF\",\"secondColor\":\"#00D0EF\",\"reduceBrightness\":true},\"urn:rts:topic:tv:10193\":{\"firstColor\":\"#EB2350\",\"secondColor\":\"#A61637\"},\"urn:rts:topic:tv:54537\":{\"firstColor\":\"#FFE03E\",\"secondColor\":\"#F98E73\",\"reduceBrightness\":true},\"urn:rts:topic:tv:59220\":{\"firstColor\":\"#492b63\",\"secondColor\":\"#271633\"},\"urn:rts:topic:tv:67132\":{\"firstColor\":\"#415FAF\",\"secondColor\":\"#23376B\"},\"urn:rts:topic:tv:73840\":{\"firstColor\":\"#FF77CD\",\"secondColor\":\"#663052\"},\"urn:srf:topic:tv:1d7d9cfb-6682-4d5b-9e36-322e8fa93c03\":{\"firstColor\":\"#00A4B3\",\"secondColor\":\"#006973\"},\"urn:srf:topic:tv:4acf86dd-7ff7-45d3-baf8-33375340d976\":{\"firstColor\":\"#3f4b70\",\"secondColor\":\"#131a2d\"},\"urn:srf:topic:tv:9a79b1de-cde8-4528-b304-d1ae1363f52f\":{\"firstColor\":\"#836fcd\",\"secondColor\":\"#36343f\"},\"urn:srf:topic:tv:63f937e4-859e-42c4-a430-bdb74dd09645\":{\"firstColor\":\"#4480a2\",\"secondColor\":\"#20182c\"},\"urn:srf:topic:tv:67f812fd-19a3-4c22-9e6b-ec36e65a4703\":{\"firstColor\":\"#bb3966\",\"secondColor\":\"#190406\"},\"urn:srf:topic:tv:593eb926-d892-41ba-8b1f-eccbcfd7f15f\":{\"firstColor\":\"#2bbf9b\",\"secondColor\":\"#02291e\"},\"urn:srf:topic:tv:649e36d7-ff57-41c8-9c1b-7892daf15e78\":{\"firstColor\":\"#FF0037\",\"secondColor\":\"#AF001E\"},\"urn:srf:topic:tv:882cb264-cf81-4a9c-b660-d42519b7ce28\":{\"firstColor\":\"#c91d7d\",\"secondColor\":\"#31041f\"},\"urn:srf:topic:tv:43741c59-317e-458b-ac38-c2b1c065c865\":{\"firstColor\":\"#0075ad\",\"secondColor\":\"#000022\"},\"urn:srf:topic:tv:516421f0-ec89-43ba-823b-1b5ceec262f3\":{\"firstColor\":\"#5FB281\",\"secondColor\":\"#154e60\"},\"urn:srf:topic:tv:641223fa-f112-4d98-8aec-cb22262a1182\":{\"firstColor\":\"#c55cee\",\"secondColor\":\"#0c1c68\"},\"urn:srf:topic:tv:a2d97206-0b85-4226-8afe-06e86ebd05b2\":{\"firstColor\":\"#9fc885\",\"secondColor\":\"#20281a\"},\"urn:srf:topic:tv:a709c610-b275-4c0c-a496-cba304c36712\":{\"firstColor\":\"#b3131d\",\"secondColor\":\"#3e0b14\"},\"urn:srf:topic:tv:b58dcf14-96ac-4046-8676-fd8a942c0e88\":{\"firstColor\":\"#7081b0\",\"secondColor\":\"#202020\"},\"urn:srf:topic:tv:bb7b21e0-1056-4e28-bac3-c610393b5b0f\":{\"firstColor\":\"#3c788e\",\"secondColor\":\"#1b3e48\"},\"urn:srf:topic:tv:e52080fc-f36b-481e-955f-071b6c8d6dc3\":{\"firstColor\":\"#ff6778\",\"secondColor\":\"#920a1a\",\"reduceBrightness\":true},\"urn:srf:topic:tv:fa793c13-bebc-41b9-9710-bf8a34192c15\":{\"firstColor\":\"#baead5\",\"secondColor\":\"#010b40\",\"reduceBrightness\":true}}", diff --git a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings index 470c85a64..03424ebe7 100644 --- a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Derniers épisodes de vos favoris"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "Derniers podcasts"; + /* Title label used to present the radio latest videos */ "Latest videos" = "Vidéos les plus récentes"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Merci de décrire ci-dessous le problème rencontré :"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcasts"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Podcasts par date"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Populaire sur Play RTS"; @@ -680,7 +689,7 @@ /* Label of the button for Podcast square image format selection Podcast square image format selection view title */ -"Square images" = "Square images"; +"Square images" = "Images carrées"; /* Server setting name */ "Stage" = "Stage"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Version"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Versions et notes de mise à jour"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Autorise la lecture vidéo à se poursuivre même quand vous sortez de l'application."; diff --git a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings index de13187aa..f45684b20 100755 --- a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings @@ -97,7 +97,7 @@ /* Audio home page selection view title Label of the button for audio homepage option selection */ -"Audio home page" = "Audio home page"; +"Audio home page" = "Audio Startseite"; /* Audios tab title Header for audio search results @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Die neusten Episoden aus deinen Favoriten"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "Neueste Podcasts"; + /* Title label used to present the radio latest videos */ "Latest videos" = "Neuste Videos"; @@ -390,10 +393,10 @@ "Mandatory update" = "Update erforderlich"; /* Many curated audio homepages option setting state */ -"Many curated pages (PAC landing pages)" = "Many curated pages (PAC landing pages)"; +"Many curated pages (PAC landing pages)" = "Viele kuratierte Seiten (PAC Landing Pages)"; /* Many predefined audio homepage option setting state */ -"Many predefined pages" = "Many predefined pages"; +"Many predefined pages" = "Viele vordefinierte Seiten"; /* Message on top screen when trying to open a media in the download list and the media is not downloaded. */ "Media not available yet" = "Inhalt noch nicht verfügbar"; @@ -488,7 +491,7 @@ "OK" = "OK"; /* One curated audio homepage option setting state */ -"One curated page (PAC Audio)" = "One curated page (PAC Audio)"; +"One curated page (PAC Audio)" = "Eine kuratierte Seite (PAC Audio)"; /* Label of the button opening system settings */ "Open system settings" = "Einstellungen anzeigen"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Bitte beschreiben Sie das Problem unten:"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcasts"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Podcasts nach Datum"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Beliebt auf Play SRF"; @@ -680,7 +689,7 @@ /* Label of the button for Podcast square image format selection Podcast square image format selection view title */ -"Square images" = "Square images"; +"Square images" = "Quadratische Bilder"; /* Server setting name */ "Stage" = "Stage"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Version"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Versionen und neue Funktionen"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Die Videos werden ohne Unterbrechung im Hintergrund abgespielt."; diff --git a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings index 6eddef361..b1c9cf419 100755 --- a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Latest videos from your favorites"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "Latest podcasts"; + /* Title label used to present the radio latest videos */ "Latest videos" = "Latest videos"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Please describe the issue below:"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcasts"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Podcasts by date"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Popular on Play SWI"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Version"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Versions and release notes"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Video playback continues even when you leave the application."; diff --git a/Application/Sources/Calendar/CalendarViewController.m b/Application/Sources/Calendar/CalendarViewController.m index 10075dc8b..f2ee3aa3a 100755 --- a/Application/Sources/Calendar/CalendarViewController.m +++ b/Application/Sources/Calendar/CalendarViewController.m @@ -65,7 +65,11 @@ - (instancetype)initWithRadioChannel:(RadioChannel *)radioChannel date:(NSDate * - (NSString *)title { - return TitleForApplicationSection(ApplicationSectionShowByDate); + if (self.radioChannel == nil) { + return TitleForApplicationSection(ApplicationSectionShowByDate); + } else { + return [self.radioChannel sectionTitleWithSectionContext:ApplicationSectionShowByDate]; + } } #pragma mark View lifecycle diff --git a/Application/Sources/Configuration/Channel.h b/Application/Sources/Configuration/Channel.h index b07494feb..936123a33 100644 --- a/Application/Sources/Configuration/Channel.h +++ b/Application/Sources/Configuration/Channel.h @@ -26,6 +26,20 @@ typedef NS_ENUM(NSInteger, SongsViewStyle) { SongsViewStyleExpanded }; +/** + * Show types for radios + */ +typedef NS_ENUM(NSInteger, ShowType) { + /** + * Usual broadcast shows, default value if nil + */ + ShowTypeShow, + /** + * Podcast shows + */ + ShowTypePodcast +}; + @interface Channel : NSObject /** @@ -78,6 +92,11 @@ typedef NS_ENUM(NSInteger, SongsViewStyle) { */ @property (nonatomic, readonly) SongsViewStyle songsViewStyle; +/** + * The type of show hosted by the channel. + */ +@property (nonatomic, readonly) ShowType showType; + /** * The channel content page identifier. */ diff --git a/Application/Sources/Configuration/Channel.m b/Application/Sources/Configuration/Channel.m index ab1d7b138..ad4bf4f21 100644 --- a/Application/Sources/Configuration/Channel.m +++ b/Application/Sources/Configuration/Channel.m @@ -20,6 +20,18 @@ static SongsViewStyle SongsViewStyleWithString(NSString *string) return songsViewStyle ? songsViewStyle.integerValue : SongsViewStyleNone; } +static ShowType ShowTypeWithString(NSString *string) +{ + static dispatch_once_t s_onceToken; + static NSDictionary *s_showTypes; + dispatch_once(&s_onceToken, ^{ + s_showTypes = @{ @"show" : @(ShowTypeShow), + @"podcast" : @(ShowTypePodcast) }; + }); + NSNumber *showType = s_showTypes[string]; + return showType ? showType.integerValue : ShowTypeShow; +} + @interface Channel () @property (nonatomic, copy) NSString *uid; @@ -31,6 +43,7 @@ @interface Channel () @property (nonatomic) UIColor *titleColor; @property (nonatomic, getter=hasDarkStatusBar) BOOL darkStatusBar; @property (nonatomic) SongsViewStyle songsViewStyle; +@property (nonatomic) ShowType showType; @property (nonatomic, copy) NSString *contentPageId; @end @@ -92,7 +105,12 @@ - (instancetype)initWithDictionary:(NSDictionary *)dictionary if ([songsViewStyleValue isKindOfClass:NSString.class]) { self.songsViewStyle = SongsViewStyleWithString(songsViewStyleValue); } - + + id showTypeValue = dictionary[@"showType"]; + if ([showTypeValue isKindOfClass:NSString.class]) { + self.showType = ShowTypeWithString(showTypeValue); + } + #if DEBUG || NIGHTLY || BETA id contentPageIdValue = dictionary[@"contentPageId"]; if ([contentPageIdValue isKindOfClass:NSString.class]) { diff --git a/Application/Sources/Configuration/RadioChannel.swift b/Application/Sources/Configuration/RadioChannel.swift index 772079441..0c5489dc5 100644 --- a/Application/Sources/Configuration/RadioChannel.swift +++ b/Application/Sources/Configuration/RadioChannel.swift @@ -40,4 +40,12 @@ extension RadioChannel { return Self.configuredSection(from: homeSection, withChannelUid: uid) } } + + @objc func sectionTitle(sectionContext: ApplicationSection) -> String { + if sectionContext == .showByDate, showType == .podcast { + NSLocalizedString("Podcasts by date", comment: "Title of the section when we show podcasts by date") + } else { + TitleForApplicationSection(sectionContext) + } + } } diff --git a/Application/Sources/Content/Content.swift b/Application/Sources/Content/Content.swift index f9aab485d..89d35d4fd 100644 --- a/Application/Sources/Content/Content.swift +++ b/Application/Sources/Content/Content.swift @@ -567,14 +567,24 @@ private extension Content { switch configuredSection { case .history: return NSLocalizedString("History", comment: "Title label used to present the history") - case .radioAllShows, .tvAllShows: + case .tvAllShows: return NSLocalizedString("Shows", comment: "Title label used to present radio associated shows") + case let .radioAllShows(channelUid): + if ApplicationConfiguration.shared.channel(forUid: channelUid)?.showType == .podcast { + return NSLocalizedString("Podcasts", comment: "Title label used to present radio associated podcasts") + } else { + return NSLocalizedString("Shows", comment: "Title label used to present radio associated shows") + } case .favoriteShows, .radioFavoriteShows: return NSLocalizedString("Favorites", comment: "Title label used to present the radio favorite shows") case .radioLatest: return NSLocalizedString("The latest audios", comment: "Title label used to present the radio latest audios") - case .radioLatestEpisodes: - return NSLocalizedString("The latest episodes", comment: "Title label used to present the radio latest audio episodes") + case let .radioLatestEpisodes(channelUid): + if ApplicationConfiguration.shared.channel(forUid: channelUid)?.showType == .podcast { + return NSLocalizedString("Latest podcasts", comment: "Title label used to present the radio latest podcast episodes") + } else { + return NSLocalizedString("The latest episodes", comment: "Title label used to present the radio latest audio episodes") + } case .radioLatestEpisodesFromFavorites: return NSLocalizedString("Latest episodes from your favorites", comment: "Title label used to present the latest episodes from radio favorite shows") case .radioLatestVideos: @@ -608,8 +618,12 @@ private extension Content { return NSLocalizedString("Downloads", comment: "Label to present downloads") case .notifications: return NSLocalizedString("Notifications", comment: "Title label used to present notifications") - case .radioShowAccess: - return NSLocalizedString("Shows", comment: "Title label used to present the radio shows AZ and radio shows by date access buttons") + case let .radioShowAccess(channelUid): + if ApplicationConfiguration.shared.channel(forUid: channelUid)?.showType == .podcast { + return NSLocalizedString("Podcasts", comment: "Title label used to present radio associated podcasts") + } else { + return NSLocalizedString("Shows", comment: "Title label used to present the radio shows AZ and radio shows by date access buttons") + } #endif default: return nil @@ -895,7 +909,7 @@ private extension Content { return dataProvider.radioLatestMedias(for: vendor, channelUid: channelUid, pageSize: pageSize, paginatedBy: paginator) .map { $0.map { .media($0) } } .eraseToAnyPublisher() - case let .radioLatestEpisodes(channelUid: channelUid): + case let .radioLatestEpisodes(channelUid): return dataProvider.radioLatestEpisodes(for: vendor, channelUid: channelUid, pageSize: pageSize, paginatedBy: paginator) .map { $0.map { .media($0) } } .eraseToAnyPublisher() diff --git a/Translations/Localizable.strings b/Translations/Localizable.strings index 1e262f13e..fa1b3cebd 100644 --- a/Translations/Localizable.strings +++ b/Translations/Localizable.strings @@ -346,6 +346,9 @@ Title label used to present the latest episodes from TV favorite shows */ "Latest episodes from your favorites" = "Latest episodes from your favorites"; +/* Title label used to present the radio latest podcast episodes */ +"Latest podcasts" = "Latest podcasts"; + /* Title label used to present the radio latest videos */ "Latest videos" = "Latest videos"; @@ -536,6 +539,12 @@ /* Mail body header to declare a technical issue */ "Please describe the issue below:" = "Please describe the issue below:"; +/* Title label used to present radio associated podcasts */ +"Podcasts" = "Podcasts"; + +/* Title of the section when we show podcasts by date */ +"Podcasts by date" = "Podcasts by date"; + /* Most poular shows on Play SRG, displayed in the tvOS top shelf */ "Popular on Play SRG" = "Popular on Play SRG"; @@ -836,9 +845,6 @@ /* Version label in settings */ "Version" = "Version"; -/* Label of the button to access release notes and download internal builds (App Center) */ -"Versions and release notes" = "Versions and release notes"; - /* Background video playback setting section footer */ "Video playback continues even when you leave the application." = "Video playback continues even when you leave the application."; diff --git a/docs/REMOTE_CONFIGURATION.md b/docs/REMOTE_CONFIGURATION.md index 90e654768..29eb46eb7 100755 --- a/docs/REMOTE_CONFIGURATION.md +++ b/docs/REMOTE_CONFIGURATION.md @@ -67,6 +67,9 @@ The keys common to both TV and radio channels JSON dictionaries are: * `songsViewStyle` (optional, string): The songs view style when added to the view. Never displayed if not set. Available values are: * `collapsed`: Collapsed when added to the view. * `expanded`: Expanded when added to the view. +* `showType` (optional, string): Whether the channel has content of type show or podcast. It will affect some section titles. If empty, the default value is `show`. Available values are: + * `show` + * `podcast` * `shareURL` (optional, string): The URL used to share the channel website. * `contentPageId` (optional, string) - BETA ONLY: The page identifier of the content page to use for the channel page. If omitted, the preconfigured page is used with the related sections for this channel.