From d0d8be7fe39bd0c88c414ff02aea0e9b1d72ba84 Mon Sep 17 00:00:00 2001 From: crowdin <project2_bot@noreply.code.castopod.org> Date: Fri, 14 Oct 2022 16:12:14 +0000 Subject: [PATCH] chore: new Crowdin updates --- app/Language/it/Comment.php | 28 ++--- app/Language/it/Common.php | 26 ++--- app/Language/it/Episode.php | 20 ++-- app/Language/it/Fediverse.php | 32 +++--- app/Language/it/Home.php | 12 +-- app/Language/it/Page.php | 6 +- app/Language/it/Podcast.php | 32 +++--- app/Language/it/Post.php | 40 +++---- docs/src/ar/getting-started/docker.md | 54 +++++----- docs/src/ar/getting-started/install.md | 33 +++++- docs/src/ar/index.md | 1 + docs/src/br/getting-started/docker.md | 54 +++++----- docs/src/br/getting-started/install.md | 33 +++++- docs/src/br/index.md | 1 + docs/src/ca/getting-started/docker.md | 64 ++++++----- docs/src/ca/getting-started/install.md | 47 ++++++-- docs/src/ca/index.md | 1 + docs/src/de/getting-started/docker.md | 54 +++++----- docs/src/de/getting-started/install.md | 33 +++++- docs/src/de/index.md | 1 + docs/src/el/getting-started/docker.md | 54 +++++----- docs/src/el/getting-started/install.md | 33 +++++- docs/src/el/index.md | 1 + docs/src/es/getting-started/docker.md | 54 +++++----- docs/src/es/getting-started/install.md | 47 ++++++-- docs/src/es/index.md | 1 + docs/src/fa/getting-started/docker.md | 54 +++++----- docs/src/fa/getting-started/install.md | 33 +++++- docs/src/fa/index.md | 1 + docs/src/fr/getting-started/docker.md | 54 +++++----- docs/src/fr/getting-started/install.md | 47 ++++++-- docs/src/fr/index.md | 1 + docs/src/gd/getting-started/docker.md | 54 +++++----- docs/src/gd/getting-started/install.md | 33 +++++- docs/src/gd/index.md | 1 + docs/src/gl/getting-started/docker.md | 54 +++++----- docs/src/gl/getting-started/install.md | 33 +++++- docs/src/gl/index.md | 1 + docs/src/id/getting-started/docker.md | 54 +++++----- docs/src/id/getting-started/install.md | 33 +++++- docs/src/id/index.md | 1 + docs/src/it/getting-started/docker.md | 54 +++++----- docs/src/it/getting-started/install.md | 33 +++++- docs/src/it/index.md | 1 + docs/src/nl/getting-started/docker.md | 54 +++++----- docs/src/nl/getting-started/install.md | 33 +++++- docs/src/nl/index.md | 1 + docs/src/nn-NO/getting-started/docker.md | 54 +++++----- docs/src/nn-NO/getting-started/install.md | 35 +++++- docs/src/nn-NO/index.md | 1 + docs/src/oc/getting-started/docker.md | 54 +++++----- docs/src/oc/getting-started/install.md | 33 +++++- docs/src/oc/index.md | 1 + docs/src/pl/getting-started/docker.md | 54 +++++----- docs/src/pl/getting-started/install.md | 33 +++++- docs/src/pl/index.md | 1 + docs/src/pt-BR/getting-started/docker.md | 54 +++++----- docs/src/pt-BR/getting-started/install.md | 35 +++++- docs/src/pt-BR/index.md | 1 + docs/src/pt/getting-started/docker.md | 54 +++++----- docs/src/pt/getting-started/install.md | 33 +++++- docs/src/pt/index.md | 1 + docs/src/ru/getting-started/docker.md | 54 +++++----- docs/src/ru/getting-started/install.md | 33 +++++- docs/src/ru/index.md | 1 + docs/src/sk/getting-started/docker.md | 54 +++++----- docs/src/sk/getting-started/install.md | 33 +++++- docs/src/sk/index.md | 1 + docs/src/sv/getting-started/docker.md | 54 +++++----- docs/src/sv/getting-started/install.md | 33 +++++- docs/src/sv/index.md | 1 + docs/src/zh-Hans/getting-started/docker.md | 54 +++++----- docs/src/zh-Hans/getting-started/install.md | 35 +++++- docs/src/zh-Hans/index.md | 1 + modules/Admin/Language/ar/Breadcrumb.php | 3 + modules/Admin/Language/ar/Episode.php | 11 ++ modules/Admin/Language/ar/Podcast.php | 3 + .../Admin/Language/ar/PodcastNavigation.php | 3 + modules/Admin/Language/ar/Settings.php | 2 + modules/Admin/Language/br/Breadcrumb.php | 3 + modules/Admin/Language/br/Episode.php | 11 ++ modules/Admin/Language/br/Podcast.php | 3 + .../Admin/Language/br/PodcastNavigation.php | 3 + modules/Admin/Language/br/Settings.php | 2 + modules/Admin/Language/ca/Breadcrumb.php | 3 + modules/Admin/Language/ca/Episode.php | 11 ++ modules/Admin/Language/ca/Podcast.php | 3 + .../Admin/Language/ca/PodcastNavigation.php | 3 + modules/Admin/Language/ca/Settings.php | 2 + modules/Admin/Language/de/Breadcrumb.php | 3 + modules/Admin/Language/de/Episode.php | 11 ++ modules/Admin/Language/de/Podcast.php | 3 + .../Admin/Language/de/PodcastNavigation.php | 3 + modules/Admin/Language/de/Settings.php | 2 + modules/Admin/Language/el/Breadcrumb.php | 3 + modules/Admin/Language/el/Episode.php | 11 ++ modules/Admin/Language/el/Podcast.php | 3 + .../Admin/Language/el/PodcastNavigation.php | 3 + modules/Admin/Language/el/Settings.php | 2 + modules/Admin/Language/es/Breadcrumb.php | 3 + modules/Admin/Language/es/Episode.php | 11 ++ modules/Admin/Language/es/Podcast.php | 3 + .../Admin/Language/es/PodcastNavigation.php | 3 + modules/Admin/Language/es/Settings.php | 2 + modules/Admin/Language/fa/Breadcrumb.php | 3 + modules/Admin/Language/fa/Episode.php | 11 ++ modules/Admin/Language/fa/Podcast.php | 3 + .../Admin/Language/fa/PodcastNavigation.php | 3 + modules/Admin/Language/fa/Settings.php | 2 + modules/Admin/Language/fr/Breadcrumb.php | 3 + modules/Admin/Language/fr/Episode.php | 11 ++ modules/Admin/Language/fr/Podcast.php | 3 + .../Admin/Language/fr/PodcastNavigation.php | 3 + modules/Admin/Language/fr/Settings.php | 2 + modules/Admin/Language/gd/Breadcrumb.php | 3 + modules/Admin/Language/gd/Episode.php | 11 ++ modules/Admin/Language/gd/Podcast.php | 3 + .../Admin/Language/gd/PodcastNavigation.php | 3 + modules/Admin/Language/gd/Settings.php | 2 + modules/Admin/Language/gl/Breadcrumb.php | 3 + modules/Admin/Language/gl/Episode.php | 11 ++ modules/Admin/Language/gl/Podcast.php | 3 + .../Admin/Language/gl/PodcastNavigation.php | 3 + modules/Admin/Language/gl/Settings.php | 2 + modules/Admin/Language/id/Breadcrumb.php | 3 + modules/Admin/Language/id/Episode.php | 11 ++ modules/Admin/Language/id/Podcast.php | 3 + .../Admin/Language/id/PodcastNavigation.php | 3 + modules/Admin/Language/id/Settings.php | 2 + modules/Admin/Language/it/Breadcrumb.php | 61 ++++++----- modules/Admin/Language/it/Charts.php | 2 +- modules/Admin/Language/it/Common.php | 46 ++++---- modules/Admin/Language/it/Contributor.php | 28 ++--- modules/Admin/Language/it/Countries.php | 86 +++++++-------- modules/Admin/Language/it/Episode.php | 43 +++++--- modules/Admin/Language/it/Podcast.php | 3 + .../Admin/Language/it/PodcastNavigation.php | 3 + modules/Admin/Language/it/Settings.php | 2 + modules/Admin/Language/nl/Breadcrumb.php | 3 + modules/Admin/Language/nl/Episode.php | 11 ++ modules/Admin/Language/nl/Podcast.php | 3 + .../Admin/Language/nl/PodcastNavigation.php | 3 + modules/Admin/Language/nl/Settings.php | 2 + modules/Admin/Language/nn-NO/Breadcrumb.php | 3 + modules/Admin/Language/nn-NO/Episode.php | 11 ++ modules/Admin/Language/nn-NO/Podcast.php | 3 + .../Language/nn-NO/PodcastNavigation.php | 3 + modules/Admin/Language/nn-NO/Settings.php | 2 + modules/Admin/Language/oc/Breadcrumb.php | 3 + modules/Admin/Language/oc/Episode.php | 11 ++ modules/Admin/Language/oc/Podcast.php | 3 + .../Admin/Language/oc/PodcastNavigation.php | 3 + modules/Admin/Language/oc/Settings.php | 2 + modules/Admin/Language/pl/Breadcrumb.php | 3 + modules/Admin/Language/pl/Episode.php | 11 ++ modules/Admin/Language/pl/Podcast.php | 3 + .../Admin/Language/pl/PodcastNavigation.php | 3 + modules/Admin/Language/pl/Settings.php | 2 + modules/Admin/Language/pt-BR/Breadcrumb.php | 3 + modules/Admin/Language/pt-BR/Episode.php | 11 ++ modules/Admin/Language/pt-BR/Podcast.php | 3 + .../Language/pt-BR/PodcastNavigation.php | 3 + modules/Admin/Language/pt-BR/Settings.php | 2 + modules/Admin/Language/pt/Breadcrumb.php | 3 + modules/Admin/Language/pt/Episode.php | 11 ++ modules/Admin/Language/pt/Podcast.php | 3 + .../Admin/Language/pt/PodcastNavigation.php | 3 + modules/Admin/Language/pt/Settings.php | 2 + modules/Admin/Language/ru/Breadcrumb.php | 3 + modules/Admin/Language/ru/Episode.php | 11 ++ modules/Admin/Language/ru/Podcast.php | 3 + .../Admin/Language/ru/PodcastNavigation.php | 3 + modules/Admin/Language/ru/Settings.php | 2 + modules/Admin/Language/sk/Breadcrumb.php | 3 + modules/Admin/Language/sk/Episode.php | 11 ++ modules/Admin/Language/sk/Podcast.php | 3 + .../Admin/Language/sk/PodcastNavigation.php | 3 + modules/Admin/Language/sk/Settings.php | 2 + modules/Admin/Language/sv/Breadcrumb.php | 3 + modules/Admin/Language/sv/Episode.php | 11 ++ modules/Admin/Language/sv/Podcast.php | 3 + .../Admin/Language/sv/PodcastNavigation.php | 3 + modules/Admin/Language/sv/Settings.php | 2 + modules/Admin/Language/zh-Hans/Breadcrumb.php | 3 + modules/Admin/Language/zh-Hans/Episode.php | 11 ++ modules/Admin/Language/zh-Hans/Podcast.php | 3 + .../Language/zh-Hans/PodcastNavigation.php | 3 + modules/Admin/Language/zh-Hans/Settings.php | 2 + .../Language/ar/PremiumPodcasts.php | 34 ++++++ .../Language/ar/Subscription.php | 100 ++++++++++++++++++ .../Language/br/PremiumPodcasts.php | 34 ++++++ .../Language/br/Subscription.php | 100 ++++++++++++++++++ .../Language/ca/PremiumPodcasts.php | 34 ++++++ .../Language/ca/Subscription.php | 100 ++++++++++++++++++ .../Language/de/PremiumPodcasts.php | 34 ++++++ .../Language/de/Subscription.php | 100 ++++++++++++++++++ .../Language/el/PremiumPodcasts.php | 34 ++++++ .../Language/el/Subscription.php | 100 ++++++++++++++++++ .../Language/es/PremiumPodcasts.php | 34 ++++++ .../Language/es/Subscription.php | 100 ++++++++++++++++++ .../Language/fa/PremiumPodcasts.php | 34 ++++++ .../Language/fa/Subscription.php | 100 ++++++++++++++++++ .../Language/fr/PremiumPodcasts.php | 34 ++++++ .../Language/fr/Subscription.php | 100 ++++++++++++++++++ .../Language/gd/PremiumPodcasts.php | 34 ++++++ .../Language/gd/Subscription.php | 100 ++++++++++++++++++ .../Language/gl/PremiumPodcasts.php | 34 ++++++ .../Language/gl/Subscription.php | 100 ++++++++++++++++++ .../Language/id/PremiumPodcasts.php | 34 ++++++ .../Language/id/Subscription.php | 100 ++++++++++++++++++ .../Language/it/PremiumPodcasts.php | 34 ++++++ .../Language/it/Subscription.php | 100 ++++++++++++++++++ .../Language/nl/PremiumPodcasts.php | 34 ++++++ .../Language/nl/Subscription.php | 100 ++++++++++++++++++ .../Language/nn-NO/PremiumPodcasts.php | 34 ++++++ .../Language/nn-NO/Subscription.php | 100 ++++++++++++++++++ .../Language/oc/PremiumPodcasts.php | 34 ++++++ .../Language/oc/Subscription.php | 100 ++++++++++++++++++ .../Language/pl/PremiumPodcasts.php | 34 ++++++ .../Language/pl/Subscription.php | 100 ++++++++++++++++++ .../Language/pt-BR/PremiumPodcasts.php | 34 ++++++ .../Language/pt-BR/Subscription.php | 100 ++++++++++++++++++ .../Language/pt/PremiumPodcasts.php | 34 ++++++ .../Language/pt/Subscription.php | 100 ++++++++++++++++++ .../Language/ru/PremiumPodcasts.php | 34 ++++++ .../Language/ru/Subscription.php | 100 ++++++++++++++++++ .../Language/sk/PremiumPodcasts.php | 34 ++++++ .../Language/sk/Subscription.php | 100 ++++++++++++++++++ .../Language/sv/PremiumPodcasts.php | 34 ++++++ .../Language/sv/Subscription.php | 100 ++++++++++++++++++ .../Language/zh-Hans/PremiumPodcasts.php | 34 ++++++ .../Language/zh-Hans/Subscription.php | 100 ++++++++++++++++++ 232 files changed, 5048 insertions(+), 826 deletions(-) create mode 100644 modules/PremiumPodcasts/Language/ar/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/ar/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/br/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/br/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/ca/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/ca/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/de/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/de/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/el/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/el/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/es/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/es/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/fa/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/fa/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/fr/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/fr/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/gd/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/gd/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/gl/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/gl/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/id/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/id/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/it/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/it/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/nl/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/nl/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/nn-NO/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/nn-NO/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/oc/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/oc/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/pl/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/pl/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/pt-BR/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/pt-BR/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/pt/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/pt/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/ru/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/ru/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/sk/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/sk/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/sv/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/sv/Subscription.php create mode 100644 modules/PremiumPodcasts/Language/zh-Hans/PremiumPodcasts.php create mode 100644 modules/PremiumPodcasts/Language/zh-Hans/Subscription.php diff --git a/app/Language/it/Comment.php b/app/Language/it/Comment.php index 1dd8f5eadc..11ef4c50c7 100644 --- a/app/Language/it/Comment.php +++ b/app/Language/it/Comment.php @@ -9,26 +9,26 @@ declare(strict_types=1); */ return [ - 'title' => "{actorDisplayName}'s comment for {episodeTitle}", - 'back_to_comments' => 'Back to comments', + 'title' => "Commento di {actorDisplayName} su {episodeTitle}", + 'back_to_comments' => 'Torna ai commenti', 'form' => [ - 'episode_message_placeholder' => 'Write a comment…', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', - 'submit' => 'Send', - 'submit_reply' => 'Reply', + 'episode_message_placeholder' => 'Scrivi un commento…', + 'reply_to_placeholder' => 'Rispondi a @{actorUsername}', + 'submit' => 'Invia', + 'submit_reply' => 'Rispondi', ], 'likes' => '{numberOfLikes, plural, one {# like} other {# likes} }', 'replies' => '{numberOfReplies, plural, - one {# reply} - other {# replies} + one {# like} + other {# likes} }', - 'like' => 'Like', - 'reply' => 'Reply', - 'view_replies' => 'View replies ({numberOfReplies})', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', - 'delete' => 'Delete comment', + 'like' => 'Mi piace', + 'reply' => 'Rispondi', + 'view_replies' => 'Visualizza ({numberOfReplies}) risposte', + 'block_actor' => 'Blocca utente @{actorUsername}', + 'block_domain' => 'Blocca dominio @{actorDomain}', + 'delete' => 'Cancella commento', ]; diff --git a/app/Language/it/Common.php b/app/Language/it/Common.php index 1258afcc19..249364d3b1 100644 --- a/app/Language/it/Common.php +++ b/app/Language/it/Common.php @@ -9,22 +9,22 @@ declare(strict_types=1); */ return [ - 'yes' => 'Yes', + 'yes' => 'Si', 'no' => 'No', - 'cancel' => 'Cancel', - 'optional' => 'Optional', - 'close' => 'Close', + 'cancel' => 'Annulla', + 'optional' => 'Facoltativo', + 'close' => 'Chiudi', 'home' => 'Home', - 'explicit' => 'Explicit', + 'explicit' => 'Esplicito', 'powered_by' => 'Powered by {castopod}', - 'go_back' => 'Go back', + 'go_back' => 'Torna indietro', 'play_episode_button' => [ - 'play' => 'Play', - 'playing' => 'Playing', + 'play' => 'Riproduci', + 'playing' => 'In riproduzione', ], - 'read_more' => 'Read more', - 'read_less' => 'Read less', - 'see_more' => 'See more', - 'see_less' => 'See less', - 'legal_notice' => 'Legal notice', + 'read_more' => 'Continua a leggere', + 'read_less' => 'Leggere meno', + 'see_more' => 'Mostra altro', + 'see_less' => 'Mostra meno', + 'legal_notice' => 'Note legali', ]; diff --git a/app/Language/it/Episode.php b/app/Language/it/Episode.php index ebe39336fc..c9e964451e 100644 --- a/app/Language/it/Episode.php +++ b/app/Language/it/Episode.php @@ -9,25 +9,25 @@ declare(strict_types=1); */ return [ - 'season' => 'Season {seasonNumber}', + 'season' => 'Stagione {seasonNumber}', 'season_abbr' => 'S{seasonNumber}', - 'number' => 'Episode {episodeNumber}', + 'number' => 'Episodio {episodeNumber}', 'number_abbr' => 'Ep. {episodeNumber}', - 'season_episode' => 'Season {seasonNumber} episode {episodeNumber}', + 'season_episode' => 'Stagione {seasonNumber} episodio {episodeNumber}', 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', 'persons' => '{personsCount, plural, one {# person} other {# persons} }', - 'persons_list' => 'Persons', - 'back_to_episodes' => 'Back to episodes of {podcast}', - 'comments' => 'Comments', - 'activity' => 'Activity', - 'description' => 'Episode description', + 'persons_list' => 'Persone', + 'back_to_episodes' => 'Torna agli episodi di {podcast}', + 'comments' => 'Commenti', + 'activity' => 'Attività ', + 'description' => 'Descrizione dell\'episodio', 'number_of_comments' => '{numberOfComments, plural, one {# comment} other {# comments} }', - 'all_podcast_episodes' => 'All podcast episodes', - 'back_to_podcast' => 'Go back to podcast', + 'all_podcast_episodes' => 'Tutti gli episodi del podcast', + 'back_to_podcast' => 'Torna a podcast', ]; diff --git a/app/Language/it/Fediverse.php b/app/Language/it/Fediverse.php index 32f54c074f..0ede22c09c 100644 --- a/app/Language/it/Fediverse.php +++ b/app/Language/it/Fediverse.php @@ -10,28 +10,28 @@ declare(strict_types=1); return [ 'your_handle' => 'Your handle', - 'your_handle_hint' => 'Enter the @username@domain you want to act from.', + 'your_handle_hint' => 'Inserisci @username@domain da cui vuoi interagire.', 'follow' => [ - 'label' => 'Follow', - 'title' => 'Follow {actorDisplayName}', - 'subtitle' => 'You are going to follow:', - 'accountNotFound' => 'The account could not be found.', - 'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…', - 'submit' => 'Proceed to follow', + 'label' => 'Segui', + 'title' => 'Segui {actorDisplayName}', + 'subtitle' => 'Stai per seguire:', + 'accountNotFound' => 'Impossibile trovare l\'account.', + 'remoteFollowNotAllowed' => 'Sembra che il server del account non permetta il segui da remoto…', + 'submit' => 'Procedi a seguire', ], 'favourite' => [ - 'title' => "Favourite {actorDisplayName}'s post", - 'subtitle' => 'You are going to favourite:', - 'submit' => 'Proceed to favourite', + 'title' => "Post preferito di {actorDisplayName}", + 'subtitle' => 'Stai per aggiungere ai preferiti:', + 'submit' => 'Procedi ad aggiungere ai preferiti', ], 'reblog' => [ - 'title' => "Share {actorDisplayName}'s post", - 'subtitle' => 'You are going to share:', - 'submit' => 'Proceed to share', + 'title' => "Condividi il post di {actorDisplayName}", + 'subtitle' => 'Stai per condividere:', + 'submit' => 'Procedere alla condivisione', ], 'reply' => [ - 'title' => "Reply to {actorDisplayName}'s post", - 'subtitle' => 'You are going to reply to:', - 'submit' => 'Proceed to reply', + 'title' => "Rispondi al post di {actorDisplayName}", + 'subtitle' => 'Stai per rispondere a:', + 'submit' => 'Procedi a rispondere', ], ]; diff --git a/app/Language/it/Home.php b/app/Language/it/Home.php index 1518239bd9..7b2569bede 100644 --- a/app/Language/it/Home.php +++ b/app/Language/it/Home.php @@ -9,12 +9,12 @@ declare(strict_types=1); */ return [ - 'all_podcasts' => 'All podcasts', - 'sort_by' => 'Sort by', + 'all_podcasts' => 'Tutti i podcast', + 'sort_by' => 'Ordina per', 'sort_options' => [ - 'activity' => 'Recent activity', - 'created_desc' => 'Newest first', - 'created_asc' => 'Oldest first', + 'activity' => 'Attività recenti', + 'created_desc' => 'Più recente prima', + 'created_asc' => 'Più vecchio prima', ], - 'no_podcast' => 'No podcast found', + 'no_podcast' => 'Nessun podcast trovato', ]; diff --git a/app/Language/it/Page.php b/app/Language/it/Page.php index 7cd606694e..a0109c856c 100644 --- a/app/Language/it/Page.php +++ b/app/Language/it/Page.php @@ -9,9 +9,9 @@ declare(strict_types=1); */ return [ - 'back_to_home' => 'Back to home', + 'back_to_home' => 'Torna alla home', 'map' => [ - 'title' => 'Map', - 'description' => 'Discover podcast episodes on {siteName} that are placed on a map! Travel through the map and listen to episodes that talk about specific locations.', + 'title' => 'Mappa', + 'description' => 'Scopri gli episodi di podcast su {siteName} che si trovano su una mappa! Viaggia attraverso la mappa e ascolta episodi che parlano di luoghi specifici.', ], ]; diff --git a/app/Language/it/Podcast.php b/app/Language/it/Podcast.php index 9b1e749aa1..eafcec6e48 100644 --- a/app/Language/it/Podcast.php +++ b/app/Language/it/Podcast.php @@ -9,14 +9,14 @@ declare(strict_types=1); */ return [ - 'feed' => 'RSS Podcast feed', - 'season' => 'Season {seasonNumber}', - 'list_of_episodes_year' => '{year} episodes ({episodeCount})', + 'feed' => 'Feed RSS del podcast', + 'season' => 'Stagione {seasonNumber}', + 'list_of_episodes_year' => '{year} episodi ({episodeCount})', 'list_of_episodes_season' => - 'Season {seasonNumber} episodes ({episodeCount})', - 'no_episode' => 'No episode found!', - 'follow' => 'Follow', - 'followTitle' => 'Follow {actorDisplayName} on the fediverse!', + 'Stagione {seasonNumber} episodi ({episodeCount})', + 'no_episode' => 'Nessun episodio trovato!', + 'follow' => 'Segui', + 'followTitle' => 'Segui {actorDisplayName} sul fediverso!', 'followers' => '{numberOfFollowers, plural, one {# follower} other {# followers} @@ -25,10 +25,10 @@ return [ one {# post} other {# posts} }', - 'activity' => 'Activity', - 'episodes' => 'Episodes', - 'episodes_title' => 'Episodes of {podcastTitle}', - 'about' => 'About', + 'activity' => 'Attività ', + 'episodes' => 'Episodi', + 'episodes_title' => 'Episodi di {podcastTitle}', + 'about' => 'Informazioni', 'stats' => [ 'title' => 'Stats', 'number_of_seasons' => '{0, plural, @@ -39,15 +39,15 @@ return [ one {# episode} other {# episodes} }', - 'first_published_at' => 'First episode published on {0, date, medium}', + 'first_published_at' => 'Primo episodio pubblicato il {0, date, medium}', ], 'sponsor' => 'Sponsor', - 'funding_links' => 'Funding links for {podcastTitle}', - 'find_on' => 'Find {podcastTitle} on', - 'listen_on' => 'Listen on', + 'funding_links' => 'Link di finanziamento per {podcastTitle}', + 'find_on' => 'Trova {podcastTitle} su', + 'listen_on' => 'Ascolta su', 'persons' => '{personsCount, plural, one {# person} other {# persons} }', - 'persons_list' => 'Persons', + 'persons_list' => 'Persone', ]; diff --git a/app/Language/it/Post.php b/app/Language/it/Post.php index 58d1cf8002..cb9a6b6203 100644 --- a/app/Language/it/Post.php +++ b/app/Language/it/Post.php @@ -9,32 +9,32 @@ declare(strict_types=1); */ return [ - 'title' => "{actorDisplayName}'s post", - 'back_to_actor_posts' => 'Back to {actor} posts', - 'actor_shared' => '{actor} shared', - 'reply_to' => 'Reply to @{actorUsername}', + 'title' => "Post di {actorDisplayName}", + 'back_to_actor_posts' => 'Torna ai post di {actor}', + 'actor_shared' => '{actor} ha condiviso', + 'reply_to' => 'Rispondi a @{actorUsername}', 'form' => [ - 'message_placeholder' => 'Write a message…', - 'episode_message_placeholder' => 'Write a message for the episode…', - 'episode_url_placeholder' => 'Episode URL', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', - 'submit' => 'Send', - 'submit_reply' => 'Reply', + 'message_placeholder' => 'Scrivi un messaggio…', + 'episode_message_placeholder' => 'Scrivi un messaggio per l\'episodio…', + 'episode_url_placeholder' => 'Url dell\'episodio', + 'reply_to_placeholder' => 'Rispondi a @{actorUsername}', + 'submit' => 'Invia', + 'submit_reply' => 'Rispondi', ], 'favourites' => '{numberOfFavourites, plural, - one {# favourite} - other {# favourites} + one {# preferito} + other {# preferiti} }', 'reblogs' => '{numberOfReblogs, plural, - one {# share} - other {# shares} + one {# condivisione} + other {# condivisioni} }', 'replies' => '{numberOfReplies, plural, - one {# reply} - other {# replies} + one {# risposta} + other {# risposte} }', - 'expand' => 'Expand post', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', - 'delete' => 'Delete post', + 'expand' => 'Espandi post', + 'block_actor' => 'Blocca utente @{actorUsername}', + 'block_domain' => 'Blocca dominio @{actorDomain}', + 'delete' => 'Cancella post', ]; diff --git a/docs/src/ar/getting-started/docker.md b/docs/src/ar/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/ar/getting-started/docker.md +++ b/docs/src/ar/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/ar/getting-started/install.md b/docs/src/ar/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/ar/getting-started/install.md +++ b/docs/src/ar/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/ar/index.md b/docs/src/ar/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/ar/index.md +++ b/docs/src/ar/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/br/getting-started/docker.md b/docs/src/br/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/br/getting-started/docker.md +++ b/docs/src/br/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/br/getting-started/install.md b/docs/src/br/getting-started/install.md index 916751722d..dac8517e91 100644 --- a/docs/src/br/getting-started/install.md +++ b/docs/src/br/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/br/index.md b/docs/src/br/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/br/index.md +++ b/docs/src/br/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/ca/getting-started/docker.md b/docs/src/ca/getting-started/docker.md index eb31d5d43f..7b967d92a0 100644 --- a/docs/src/ca/getting-started/docker.md +++ b/docs/src/ca/getting-started/docker.md @@ -19,8 +19,8 @@ una base de dades Redis com a gestor de memòria cau. ## Etiquetes compatibles - `develop` [no-estable], darrera versió de la branca de desenvolupament - -// més etiquetes per venir! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Exemple d'ús @@ -33,16 +33,16 @@ una base de dades Redis com a gestor de memòria cau. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media environment: MYSQL_DATABASE: castopod MYSQL_USER: castopod - MYSQL_PASSWORD: canvieu-me - CP_BASEURL: "http://castopod.exemple.com" - CP_ANALYTICS_SALT: canvieu-me + MYSQL_PASSWORD: changeme + CP_BASEURL: "http://castopod.example.com" + CP_ANALYTICS_SALT: changeme CP_CACHE_HANDLER: redis CP_REDIS_HOST: redis networks: @@ -51,7 +51,7 @@ una base de dades Redis com a gestor de memòria cau. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -69,10 +69,10 @@ una base de dades Redis com a gestor de memòria cau. volumes: - castopod-db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD: canvieu-me + MYSQL_ROOT_PASSWORD: changeme MYSQL_DATABASE: castopod MYSQL_USER: castopod - MYSQL_PASSWORD: canvieu-me + MYSQL_PASSWORD: changeme restart: unless-stopped redis: @@ -119,26 +119,32 @@ una base de dades Redis com a gestor de memòria cau. - **castopod/app** - | Nom de la variable | Tipus (`default`) | - | -------------------------- | ---------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(buit)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` o `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Nom de la variable | Tipus (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Nom de la variable | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Nom de la variable | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/ca/getting-started/install.md b/docs/src/ca/getting-started/install.md index f888627ccc..86a47cfd5c 100644 --- a/docs/src/ca/getting-started/install.md +++ b/docs/src/ca/getting-started/install.md @@ -130,22 +130,51 @@ o superior. Cal instal·lar les següents extensions: ::: info Nota -L'script d'instal·lació escriu un fitxer `.env` a l'arrel del paquet. Si no -podeu fer còrrer l'assistent web d'instal·lació, podeu -[crear i actualitzar el fitxer `.env` manualment](#alternative-manual-configuration). +L'script d'instal·lació escriu un fitxer `.env` a l'arrel del paquet. If you +cannot go through the install wizard, you can create and edit the `.env` file +manually based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Paquets de la comunitat -Si no us voleu molestar amb la instal·lació manual de Castopod, podeu utilitzar -un dels paquets creats i mantinguts per la comunitat de codi obert. +If you don't want to bother with installing Castopod manually, you may use one +of the packages created and maintained by the open-source community. -### Instal·lar amb YunoHost +### Install with YunoHost -[YunoHost](https://yunohost.org/) és una distribució basada en Debian GNU/Linux -formada per paquets de programari lliure i de codi obert. Gestiona les -dificultats de l'auto-allotjament per tu. +[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux +made up of free and open-source software packages. It manages the hardships of +self-hosting for you. <div class="flex flex-wrap items-center gap-4"> diff --git a/docs/src/ca/index.md b/docs/src/ca/index.md index d9f4880791..a2df1fd639 100644 --- a/docs/src/ca/index.md +++ b/docs/src/ca/index.md @@ -51,6 +51,7 @@ l'utilitzen els podcasters d'arreu del món! - 🔗 Enllaços de finançament - 📲 Anuncis per escoltar-fent-clic - 🤠Integració amb value4value i WebMonetization + - 💎 Premium podcasts - 📡 Publiqueu els vostres episodis a tot arreu amb RSS: - 📱 A tots els directoris i aplicacions: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/de/getting-started/docker.md b/docs/src/de/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/de/getting-started/docker.md +++ b/docs/src/de/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/de/getting-started/install.md b/docs/src/de/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/de/getting-started/install.md +++ b/docs/src/de/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/de/index.md b/docs/src/de/index.md index d9f94b6f46..122978841e 100644 --- a/docs/src/de/index.md +++ b/docs/src/de/index.md @@ -49,6 +49,7 @@ Podcastenden auf der ganzen Welt verwendet! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/el/getting-started/docker.md b/docs/src/el/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/el/getting-started/docker.md +++ b/docs/src/el/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/el/getting-started/install.md b/docs/src/el/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/el/getting-started/install.md +++ b/docs/src/el/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/el/index.md b/docs/src/el/index.md index bde5278c66..e18571fef8 100644 --- a/docs/src/el/index.md +++ b/docs/src/el/index.md @@ -50,6 +50,7 @@ sidebarDepth: 2 - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/es/getting-started/docker.md b/docs/src/es/getting-started/docker.md index f1e75bcc33..2fb21b1bb7 100644 --- a/docs/src/es/getting-started/docker.md +++ b/docs/src/es/getting-started/docker.md @@ -19,8 +19,8 @@ También se puede añadir una base de datos Redis como gestor de caché. ## Etiquetas admitidas - `develop` [unstable], última rama de desarrollo construida - -// más etiquetas por venir! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Ejemplo de uso @@ -33,7 +33,7 @@ También se puede añadir una base de datos Redis como gestor de caché. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ También se puede añadir una base de datos Redis como gestor de caché. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -119,26 +119,32 @@ También se puede añadir una base de datos Redis como gestor de caché. - **castopod/app** - | Nombre de la Variable | Tipo (`predeterminado`) | - | -------------------------- | ---------------------------------- | - | **`CP_URLBASE`** | string (`undefined`) | - | **`CP_MEDIA_URLBASE`** | ?string (`(vacÃo)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`indefinido`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` o `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Nombre de la Variable | Tipo (`predeterminado`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_URLBASE`** | string | `undefined` | + | **`CP_MEDIA_URLBASE`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Nombre de la variable | Tipo (`predeterminado`) | - | --------------------- | ----------------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Nombre de la variable | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/es/getting-started/install.md b/docs/src/es/getting-started/install.md index bbce96436b..d3fd3b03c5 100644 --- a/docs/src/es/getting-started/install.md +++ b/docs/src/es/getting-started/install.md @@ -133,22 +133,51 @@ extensiones: ::: info Nota -El script de instalación crea un archivo `.env` en la raÃz de castopod. Si no -puedes usar el asistente web de instalación, puedes -[crear y configurar manualmente el archivo `.env`](#alternative-manual-configuration). +El script de instalación crea un archivo `.env` en la raÃz de castopod. If you +cannot go through the install wizard, you can create and edit the `.env` file +manually based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Paquetes de la comunidad -Si no quieres molestarte en instalar Castopod manualmente, puedes utilizar uno -de los paquetes creados y mantenidos por la comunidad de código abierto. +If you don't want to bother with installing Castopod manually, you may use one +of the packages created and maintained by the open-source community. -### Instalar con YunoHost +### Install with YunoHost -[YunoHost](https://yunohost.org/) es una distribución GNU/Linux basada en Debian -compuesta por paquetes de software libre y de código abierto. Te ayuda a -gestionar las partes difÃciles de autoalojamiento. +[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux +made up of free and open-source software packages. It manages the hardships of +self-hosting for you. <div class="flex flex-wrap items-center gap-4"> diff --git a/docs/src/es/index.md b/docs/src/es/index.md index b077ddb79a..7475549bb4 100644 --- a/docs/src/es/index.md +++ b/docs/src/es/index.md @@ -54,6 +54,7 @@ utilizado por podcasters alrededor del mundo. - 📲 Anuncios publicitarios del tipo click-para-escuchar - 🤠value4value / WebMonetization (criptomonedas para creadores de contenido). + - 💎 Premium podcasts - 📡 Publica tus episodios en todas partes con RSS: - 📱 En todos los directorios y aplicaciones: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/fa/getting-started/docker.md b/docs/src/fa/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/fa/getting-started/docker.md +++ b/docs/src/fa/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/fa/getting-started/install.md b/docs/src/fa/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/fa/getting-started/install.md +++ b/docs/src/fa/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/fa/index.md b/docs/src/fa/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/fa/index.md +++ b/docs/src/fa/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/fr/getting-started/docker.md b/docs/src/fr/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/fr/getting-started/docker.md +++ b/docs/src/fr/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/fr/getting-started/install.md b/docs/src/fr/getting-started/install.md index d9f59c091e..f3e19c3e71 100644 --- a/docs/src/fr/getting-started/install.md +++ b/docs/src/fr/getting-started/install.md @@ -132,22 +132,51 @@ installées : ::: info Note -Le script d'installation crée un fichier `.env` à la racine du paquet. Si vous -ne pouvez pas passer par l'assistant d'installation, vous pouvez -[créer et mettre à jour le fichier `.env` manuellement](#alternative-manual-configuration). +Le script d'installation crée un fichier `.env` à la racine du paquet. If you +cannot go through the install wizard, you can create and edit the `.env` file +manually based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Paquets fournis par la communauté -Si vous ne voulez pas vous soucier d'installer Castopod manuellement, vous -pouvez utiliser un des paquets créés et maintenus par la communauté open-source. +If you don't want to bother with installing Castopod manually, you may use one +of the packages created and maintained by the open-source community. -### Installer avec YunoHost +### Install with YunoHost -[YunoHost](https://yunohost.org/) est une distribution basée sur Debian -GNU/Linux composée de paquets logiciels libres et open-source. Il gère les -difficultés de l'auto-hébergement pour vous. +[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux +made up of free and open-source software packages. It manages the hardships of +self-hosting for you. <div class="flex flex-wrap items-center gap-4"> diff --git a/docs/src/fr/index.md b/docs/src/fr/index.md index a596d878d1..73e2a1ae0e 100644 --- a/docs/src/fr/index.md +++ b/docs/src/fr/index.md @@ -51,6 +51,7 @@ et est utilisé par des podcasters autour partout dans le monde ! - 🔗 Liens de financement - 📲 publicité “listen-to-click†- 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publiez vos épisodes partout avec RSS : - 📱 Sur tous les index et toutes les applications : Podcast Index, Podcasts Apple, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend… diff --git a/docs/src/gd/getting-started/docker.md b/docs/src/gd/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/gd/getting-started/docker.md +++ b/docs/src/gd/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/gd/getting-started/install.md b/docs/src/gd/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/gd/getting-started/install.md +++ b/docs/src/gd/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/gd/index.md b/docs/src/gd/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/gd/index.md +++ b/docs/src/gd/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/gl/getting-started/docker.md b/docs/src/gl/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/gl/getting-started/docker.md +++ b/docs/src/gl/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/gl/getting-started/install.md b/docs/src/gl/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/gl/getting-started/install.md +++ b/docs/src/gl/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/gl/index.md b/docs/src/gl/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/gl/index.md +++ b/docs/src/gl/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/id/getting-started/docker.md b/docs/src/id/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/id/getting-started/docker.md +++ b/docs/src/id/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/id/getting-started/install.md b/docs/src/id/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/id/getting-started/install.md +++ b/docs/src/id/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/id/index.md b/docs/src/id/index.md index c78d9b253e..234e051f14 100644 --- a/docs/src/id/index.md +++ b/docs/src/id/index.md @@ -50,6 +50,7 @@ digunakan oleh pembuat siniar di seluruh dunia! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Terbitkan episode-episode Anda dimana pun dengan RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/it/getting-started/docker.md b/docs/src/it/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/it/getting-started/docker.md +++ b/docs/src/it/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/it/getting-started/install.md b/docs/src/it/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/it/getting-started/install.md +++ b/docs/src/it/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/it/index.md b/docs/src/it/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/it/index.md +++ b/docs/src/it/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/nl/getting-started/docker.md b/docs/src/nl/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/nl/getting-started/docker.md +++ b/docs/src/nl/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/nl/getting-started/install.md b/docs/src/nl/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/nl/getting-started/install.md +++ b/docs/src/nl/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/nl/index.md b/docs/src/nl/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/nl/index.md +++ b/docs/src/nl/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/nn-NO/getting-started/docker.md b/docs/src/nn-NO/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/nn-NO/getting-started/docker.md +++ b/docs/src/nn-NO/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/nn-NO/getting-started/install.md b/docs/src/nn-NO/getting-started/install.md index fc838a24a7..fe65ac104f 100644 --- a/docs/src/nn-NO/getting-started/install.md +++ b/docs/src/nn-NO/getting-started/install.md @@ -126,17 +126,46 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Pakker frÃ¥ brukarsamfunnet If you don't want to bother with installing Castopod manually, you may use one of the packages created and maintained by the open-source community. -### Installer med Yunohost +### Install with YunoHost [YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux made up of free and open-source software packages. It manages the hardships of diff --git a/docs/src/nn-NO/index.md b/docs/src/nn-NO/index.md index de7ace6ecd..38881ecd4b 100644 --- a/docs/src/nn-NO/index.md +++ b/docs/src/nn-NO/index.md @@ -52,6 +52,7 @@ over heile verda bruker det! - 🔗 Donasjonslenker - 📲 lytt-for-Ã¥-klikka-annonsar - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Kringkast episodane dine kvar som helst med RSS: - 📱 PÃ¥ alle indeksar og appar: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/oc/getting-started/docker.md b/docs/src/oc/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/oc/getting-started/docker.md +++ b/docs/src/oc/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/oc/getting-started/install.md b/docs/src/oc/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/oc/getting-started/install.md +++ b/docs/src/oc/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/oc/index.md b/docs/src/oc/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/oc/index.md +++ b/docs/src/oc/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/pl/getting-started/docker.md b/docs/src/pl/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/pl/getting-started/docker.md +++ b/docs/src/pl/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/pl/getting-started/install.md b/docs/src/pl/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/pl/getting-started/install.md +++ b/docs/src/pl/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/pl/index.md b/docs/src/pl/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/pl/index.md +++ b/docs/src/pl/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/pt-BR/getting-started/docker.md b/docs/src/pt-BR/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/pt-BR/getting-started/docker.md +++ b/docs/src/pt-BR/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/pt-BR/getting-started/install.md b/docs/src/pt-BR/getting-started/install.md index 117a78e4ce..41c0a4a289 100644 --- a/docs/src/pt-BR/getting-started/install.md +++ b/docs/src/pt-BR/getting-started/install.md @@ -128,17 +128,46 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Pacotes comunitários If you don't want to bother with installing Castopod manually, you may use one of the packages created and maintained by the open-source community. -### Instalar com YunoHost +### Install with YunoHost [YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux made up of free and open-source software packages. It manages the hardships of diff --git a/docs/src/pt-BR/index.md b/docs/src/pt-BR/index.md index 2b2b0a1f3a..6152ea6919 100644 --- a/docs/src/pt-BR/index.md +++ b/docs/src/pt-BR/index.md @@ -50,6 +50,7 @@ podcasters em todo o mundo! - 🔗 Links de financiamento - 📲 anúncios clique-para-ouvir - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publique seus episódios em qualquer lugar com RSS: - 📱 Em todos os agregadores e aplicativos: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/pt/getting-started/docker.md b/docs/src/pt/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/pt/getting-started/docker.md +++ b/docs/src/pt/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/pt/getting-started/install.md b/docs/src/pt/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/pt/getting-started/install.md +++ b/docs/src/pt/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/pt/index.md b/docs/src/pt/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/pt/index.md +++ b/docs/src/pt/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/ru/getting-started/docker.md b/docs/src/ru/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/ru/getting-started/docker.md +++ b/docs/src/ru/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/ru/getting-started/install.md b/docs/src/ru/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/ru/getting-started/install.md +++ b/docs/src/ru/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/ru/index.md b/docs/src/ru/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/ru/index.md +++ b/docs/src/ru/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/sk/getting-started/docker.md b/docs/src/sk/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/sk/getting-started/docker.md +++ b/docs/src/sk/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/sk/getting-started/install.md b/docs/src/sk/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/sk/getting-started/install.md +++ b/docs/src/sk/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/sk/index.md b/docs/src/sk/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/sk/index.md +++ b/docs/src/sk/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/sv/getting-started/docker.md b/docs/src/sv/getting-started/docker.md index 2a35a8bb2b..ededc58251 100644 --- a/docs/src/sv/getting-started/docker.md +++ b/docs/src/sv/getting-started/docker.md @@ -19,8 +19,8 @@ can be added as a cache handler. ## Supported tags - `develop` [unstable], latest development branch build - -// more tags to come! +- `beta` [stable], latest beta version build +- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) ## Example usage @@ -33,7 +33,7 @@ can be added as a cache handler. services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -51,7 +51,7 @@ can be added as a cache handler. restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -117,26 +117,32 @@ can be added as a cache handler. - **castopod/app** - | Variable name | Type (`default`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | Variable name | Type (`default`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Variable name | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/sv/getting-started/install.md b/docs/src/sv/getting-started/install.md index 1a366f4e01..3d73187d08 100644 --- a/docs/src/sv/getting-started/install.md +++ b/docs/src/sv/getting-started/install.md @@ -126,11 +126,40 @@ want to generate Video Clips. The following extensions must be installed: ::: info Note The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +through the install wizard, you can create and edit the `.env` file manually +based on the `.env.example` file. ::: +### Email/SMTP setup + +Email configuration is required for some features to work properly (eg. +retrieving your forgotten password, sending instructions to premium subscribers, +…) + +You may add your email configuration in your instance's `.env` like so: + +```ini +# […] + +email.fromEmail="your_email_address" +email.SMTPHost="your_smtp_host" +email.SMTPUser="your_smtp_user" +email.SMTPPass="your_smtp_password" +``` + +#### Email config options + +| Variable name | Type | Default | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## Community packages If you don't want to bother with installing Castopod manually, you may use one diff --git a/docs/src/sv/index.md b/docs/src/sv/index.md index 86670d19ee..d89daccba1 100644 --- a/docs/src/sv/index.md +++ b/docs/src/sv/index.md @@ -49,6 +49,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization + - 💎 Premium podcasts - 📡 Publish your episodes everywhere with RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … diff --git a/docs/src/zh-Hans/getting-started/docker.md b/docs/src/zh-Hans/getting-started/docker.md index 962401a49b..9e9135a7fc 100644 --- a/docs/src/zh-Hans/getting-started/docker.md +++ b/docs/src/zh-Hans/getting-started/docker.md @@ -18,8 +18,8 @@ Castopod 在 Docker Hub 自动构建 程åºä¸å°† Docker é•œåƒæŽ¨é€è‡³ Docker ## ç›®å‰æ”¯æŒçš„æ ‡ç¾ - `develop` [unstable], 最新开å‘分支版本 - -æ›´å¤šæ ‡ç¾å³å°†åˆ°æ¥ï¼ +- `beta` [stable],最新的 beta 版本构建 +- `1.0.0-beta.x` [stable],特定 beta 版本构建 (自 `1.0.0-beta.22` èµ·) ## 用法示例: @@ -32,7 +32,7 @@ Castopod 在 Docker Hub 自动构建 程åºä¸å°† Docker é•œåƒæŽ¨é€è‡³ Docker services: app: - image: castopod/app:develop + image: castopod/app:beta container_name: "castopod-app" volumes: - castopod-media:/opt/castopod/public/media @@ -50,7 +50,7 @@ Castopod 在 Docker Hub 自动构建 程åºä¸å°† Docker é•œåƒæŽ¨é€è‡³ Docker restart: unless-stopped web-server: - image: castopod/web-server:develop + image: castopod/web-server:beta container_name: "castopod-web-server" volumes: - castopod-media:/var/www/html/media @@ -116,26 +116,32 @@ Castopod 在 Docker Hub 自动构建 程åºä¸å°† Docker é•œåƒæŽ¨é€è‡³ Docker - **castopod/app** - | å˜é‡å称 | 类型 (`默认值`) | - | -------------------------- | ----------------------------------- | - | **`CP_BASEURL`** | string (`undefined`) | - | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | - | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | - | **`CP_ANALYTICS_SALT`** | string (`undefined`) | - | **`CP_DATABASE_HOSTNAME`** | ?string (`"mariadb"`) | - | **`CP_DATABASE_NAME`** | string (`MYSQL_DATABASE`) | - | **`CP_DATABASE_USERNAME`** | string (`MYSQL_USER`) | - | **`CP_DATABASE_PASSWORD`** | string (`MYSQL_PASSWORD`) | - | **`CP_DATABASE_PREFIX`** | ?string (`"cp_"`) | - | **`CP_CACHE_HANDLER`** | ?[`"file"` or `"redis"`] (`"file"`) | - | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | - | **`CP_REDIS_PASSWORD`** | ?string (`null`) | - | **`CP_REDIS_PORT`** | ?number (`6379`) | - | **`CP_REDIS_DATABASE`** | ?number (`0`) | + | å˜é‡å称 | 类型 (`默认值`) | Default | + | ---------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` 或 `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` 或 `"ssl"`] | `"tls"` | - **castopod/web-server** - | å˜é‡å称 | 类型 (`默认值`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | å˜é‡å称 | Type | Default | + | --------------------- | ------- | ------- | + | **`CP_APP_HOSTNAME`** | ?string | `"app"` | diff --git a/docs/src/zh-Hans/getting-started/install.md b/docs/src/zh-Hans/getting-started/install.md index 6c94a84db2..9a4ead833e 100644 --- a/docs/src/zh-Hans/getting-started/install.md +++ b/docs/src/zh-Hans/getting-started/install.md @@ -118,18 +118,45 @@ Castopod 仅适用于å—支æŒçš„ MySQL 5.7 或更高版本的兼容数æ®åº“。 ::: æ³¨æ„ -å®‰è£…è„šæœ¬å°†ä¼šåœ¨æ ¹ç›®å½•ä¸åˆ›å»ºä¸€ä¸ª `.env` 文件并写入数æ®ã€‚ å¦‚æžœæ— æ³•æ‰§è¡Œå®‰è£…å‘å¯¼ï¼Œå¯ -以 [手动创建并更新 `.env` 文件](#alternative-manual-configuration)。 +å®‰è£…è„šæœ¬å°†ä¼šåœ¨æ ¹ç›®å½•ä¸åˆ›å»ºä¸€ä¸ª `.env` 文件并写入数æ®ã€‚ å¦‚æžœä½ ä¸èƒ½æ‰§è¡Œå®‰è£…å‘导, +那么å¯ä»¥åŸºäºŽ `.env.example` 文件手动创建和编辑 `.env` 文件。 ::: +### 邮箱/SMTP 设置 + +æŸäº›åŠŸèƒ½éœ€è¦ç”µå邮件é…ç½®æ‰èƒ½æ£å¸¸å·¥ä½œï¼ˆä¾‹å¦‚: 找回密ç ,å‘高级订阅者å‘é€è¯´æ˜Žï¼Œ …) + +ä½ å¯ä»¥åœ¨å®žä¾‹çš„ `.env` ä¸æ·»åŠ ä½ çš„ç”µå邮件é…置,如下所示: + +```ini +# […] + +email.fromEmail="ä½ çš„é‚®ä»¶åœ°å€" +email.SMTPHost="ä½ çš„é‚®ä»¶ä¸»æœº" +email.SMTPUser="ä½ çš„é‚®ä»¶ç”¨æˆ·å" +email.SMTPPass="ä½ çš„é‚®ä»¶å¯†ç " +``` + +#### 电å邮件é…置选项 + +| å˜é‡å称 | 类型 | 默认 | +| ---------------- | -------------------- | ------------ | +| **`fromEmail`** | string | `undefined` | +| **`fromName`** | string | `"Castopod"` | +| **`SMTPHost`** | string | `undefined` | +| **`SMTPUser`** | string | `undefined` | +| **`SMTPPass`** | string | `undefined` | +| **`SMTPPort`** | number | `25` | +| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` | + ## ç¤¾åŒºå¥—é¤ -å¦‚æžœä½ ä¸æƒ³æ‰‹åŠ¨å®‰è£… Castopod,å¯ä»¥ä½¿ç”¨å¼€æºç¤¾åŒºåˆ›å»ºå’Œç»´æŠ¤çš„软件包。 +å¦‚æžœä½ ä¸æƒ³æ‰‹åŠ¨å®‰è£… Castopod,å¯ä»¥ä½¿ç”¨ä¸€ä¸ª 由开æºç¤¾åŒºåˆ›å»ºå’Œç»´æŠ¤çš„软件包。 ### 使用 YunoHost 安装 -[Yunohost](https://yunohost.org/) 是一个基于 Debian GNU/Linux çš„å‘行版,由自由和 +[YunoHost](https://yunohost.org/) 是一个基于 Debian GNU/Linux çš„å‘行版,由å…费和 å¼€æºè½¯ä»¶åŒ…组æˆã€‚ 它å¯ä»¥ä¸ºä½ 解决自托管的困难。 <div class="flex flex-wrap items-center gap-4"> diff --git a/docs/src/zh-Hans/index.md b/docs/src/zh-Hans/index.md index 4dc24090b6..20a0b1a058 100644 --- a/docs/src/zh-Hans/index.md +++ b/docs/src/zh-Hans/index.md @@ -46,6 +46,7 @@ Castopod 虽然目å‰å¤„于 **测试阶段** ,但相当稳定,已ç»è¢«ä¸– - 🔗 资金链接 - 📲 点击收å¬å¹¿å‘Š - 🤠value4value / 网络货å¸åŒ– + - 💎 高级版æ’客 - 📡 使用 RSS å°†ä½ çš„å‰§é›†å‘布到任何地方 - 📱 支æŒä¼—多索引和应用程åºï¼šPodcast Index,Apple Podcasts,Spotify,Google Podcasts,Deezer,Podcast Addict,Podfriend... diff --git a/modules/Admin/Language/ar/Breadcrumb.php b/modules/Admin/Language/ar/Breadcrumb.php index 10bde7d70f..0156d94397 100644 --- a/modules/Admin/Language/ar/Breadcrumb.php +++ b/modules/Admin/Language/ar/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'الرئيسية', 'podcasts' => 'بودكاستات', 'episodes' => 'Øلقات', + 'subscriptions' => 'subscriptions', 'contributors' => 'مساهمون', 'pages' => 'صÙØات', 'settings' => 'الإعدادات', @@ -24,6 +25,7 @@ return [ 'persons' => 'أشخاص', 'publish' => 'نشر', 'publish-edit' => 'تعديل المنشور', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'اØØ°Ù', 'fediverse' => 'الÙديÙرس', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'الإشعارات', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/ar/Episode.php b/modules/Admin/Language/ar/Episode.php index 01124e7ecb..99eed5ba82 100644 --- a/modules/Admin/Language/ar/Episode.php +++ b/modules/Admin/Language/ar/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'تعديل', 'publish' => 'نشر', 'publish_edit' => 'تعديل المنشور', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'إلغاء النشر', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'الØلقة غير منشورة.', 'delete' => 'اØØ°Ù', 'go_to_page' => 'الانتقال إلى الصÙØØ©', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/ar/Podcast.php b/modules/Admin/Language/ar/Podcast.php index 644f3a03c2..bcd6f9dd07 100644 --- a/modules/Admin/Language/ar/Podcast.php +++ b/modules/Admin/Language/ar/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/ar/PodcastNavigation.php b/modules/Admin/Language/ar/PodcastNavigation.php index 04ee9a93d2..ad114d1021 100644 --- a/modules/Admin/Language/ar/PodcastNavigation.php +++ b/modules/Admin/Language/ar/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'المساهمون', 'contributor-list' => 'كل المساهمين', 'contributor-add' => 'إضاÙØ© مساهم', diff --git a/modules/Admin/Language/ar/Settings.php b/modules/Admin/Language/ar/Settings.php index 6cce90a181..6cd61799ca 100644 --- a/modules/Admin/Language/ar/Settings.php +++ b/modules/Admin/Language/ar/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/br/Breadcrumb.php b/modules/Admin/Language/br/Breadcrumb.php index 8702d4ce9d..c2eb298af4 100644 --- a/modules/Admin/Language/br/Breadcrumb.php +++ b/modules/Admin/Language/br/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Degemer', 'podcasts' => 'podkastoù', 'episodes' => 'rannoù', + 'subscriptions' => 'subscriptions', 'contributors' => 'perzhidi, perzhiadezed', 'pages' => 'pajennoù', 'settings' => 'arventennoù', @@ -24,6 +25,7 @@ return [ 'persons' => 'emellerien·ezed', 'publish' => 'embann', 'publish-edit' => 'kemmañ an embannadur', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'diembannañ', 'delete' => 'dilemel', 'fediverse' => 'kevrebed', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'tennadoù video', 'embed' => 'lenner enkorfet', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/br/Episode.php b/modules/Admin/Language/br/Episode.php index 800e645983..56e1c93dc0 100644 --- a/modules/Admin/Language/br/Episode.php +++ b/modules/Admin/Language/br/Episode.php @@ -25,10 +25,14 @@ return [ 'edit' => 'Kemmañ', 'publish' => 'Embann', 'publish_edit' => 'Kemmañ an embannadur', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Diembannañ', 'publish_error' => 'Embannet eo bet ar rann dija.', 'publish_edit_error' => 'Embannet eo bet ar rann dija.', 'publish_cancel_error' => 'Embannet eo bet ar rann dija.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'N\'eo ket bet embannet ar rann.', 'delete' => 'Dilemel', 'go_to_page' => 'Gwelet ar bajenn', @@ -111,6 +115,8 @@ return [ 'bonus' => 'Bonuz', 'bonus_hint' => 'Danvez ouzhpenn ar podkast (da skouer, titouroù diwar-benn kostezioù pe atersadennoù gant an aktourien·ezed), pe bruderezh kroaziet evit ur podkast all', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Kemenn evit ar gerent', 'hint' => 'Hag ar rann-mañ a zo danvez ha ne zlefe ket gwelet gant bugale?', @@ -178,6 +184,11 @@ return [ 'message_warning_hint' => 'Ouzhpennañ ur gemennadenn a lakay muioc\'h a dud er jeu, ha diwar se e vo gwelet muioc\'h ho rann.', 'message_warning_submit' => 'Embann memestra', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Diembann ar rann a zilamo an holl gemennadennoù liammet outi ha skarzhet e vo eus lanv RSS ar podkast.", diff --git a/modules/Admin/Language/br/Podcast.php b/modules/Admin/Language/br/Podcast.php index 0de9f71b84..0ecaa7fb10 100644 --- a/modules/Admin/Language/br/Podcast.php +++ b/modules/Admin/Language/br/Podcast.php @@ -110,6 +110,9 @@ return [ 'monetization_section_title' => 'Moneisaat', 'monetization_section_subtitle' => 'Dastum arc\'hant a-drugarez d\'ho selaouerien·ezed.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Chomlec\'h paeañ (Payment Poienter) evit Web Monetization', 'payment_pointer_hint' => 'Ar chomlec\'h ma vo dastumet an arc\'hant ganeoc\'h a-drugarez da Web Monetization', diff --git a/modules/Admin/Language/br/PodcastNavigation.php b/modules/Admin/Language/br/PodcastNavigation.php index 56c575789d..5c3842caa6 100644 --- a/modules/Admin/Language/br/PodcastNavigation.php +++ b/modules/Admin/Language/br/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Lennerioù', 'podcast-analytics-listening-time' => 'Padelezh ar selaou', 'podcast-analytics-time-periods' => 'Mareoù ar selaou', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Perzhidi, perzhiadezed', 'contributor-list' => 'An holl berzhidi ha perzhiadezed', 'contributor-add' => 'Ouzhpennañ ur perzhiad pe ur berzhiadez', diff --git a/modules/Admin/Language/br/Settings.php b/modules/Admin/Language/br/Settings.php index 10c855bf48..4929034f68 100644 --- a/modules/Admin/Language/br/Settings.php +++ b/modules/Admin/Language/br/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/ca/Breadcrumb.php b/modules/Admin/Language/ca/Breadcrumb.php index 797e181798..9fa7362a6d 100644 --- a/modules/Admin/Language/ca/Breadcrumb.php +++ b/modules/Admin/Language/ca/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Inici', 'podcasts' => 'podcasts', 'episodes' => 'episodis', + 'subscriptions' => 'subscriptions', 'contributors' => 'col·laboradors', 'pages' => 'pà gines', 'settings' => 'preferències', @@ -24,6 +25,7 @@ return [ 'persons' => 'persones', 'publish' => 'publicar', 'publish-edit' => 'editar la publicació', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'desfer la publicació', 'delete' => 'eliminar', 'fediverse' => 'Fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'vÃdeoclips', 'embed' => 'reproductor incrustable', 'notifications' => 'notificacions', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/ca/Episode.php b/modules/Admin/Language/ca/Episode.php index 5be116ab12..ed05a8d74a 100644 --- a/modules/Admin/Language/ca/Episode.php +++ b/modules/Admin/Language/ca/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Editar', 'publish' => 'Publicar', 'publish_edit' => 'Editar la publicació', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Desfer la publicació', 'publish_error' => 'L\'episodi ja està publicat.', 'publish_edit_error' => 'L\'episodi ja està publicat.', 'publish_cancel_error' => 'L\'episodi ja està publicat.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'L\'episodi no està publicat.', 'delete' => 'Eliminar', 'go_to_page' => 'Anar a la pà gina ', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonificació', 'bonus_hint' => 'Contingut addicional per al programa (per exemple, informació entre bastidors o entrevistes amb el repartiment) o contingut promocional creuat per a un altre programa', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'AvÃs parental', 'hint' => 'L\'episodi conté contingut explÃcit?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Tenir un missatge augmenta la implicació social, donant lloc a una millor visibilitat del vostre episodi.', 'message_warning_submit' => 'Publicar de totes maneres', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Si desfeu la publicació de l'episodi, se suprimiran tots els comentaris i publicacions associades amb ell i s'eliminarà del fil RSS del podcast.", diff --git a/modules/Admin/Language/ca/Podcast.php b/modules/Admin/Language/ca/Podcast.php index df8a8e3f92..717725108a 100644 --- a/modules/Admin/Language/ca/Podcast.php +++ b/modules/Admin/Language/ca/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetització', 'monetization_section_subtitle' => 'Guanyeu diners grà cies al vostre públic.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => '`Payment Pointer` per a `Web Monetization`', 'payment_pointer_hint' => 'Aquà és on rebreu diners grà cies al servei `Web Monetization`', diff --git a/modules/Admin/Language/ca/PodcastNavigation.php b/modules/Admin/Language/ca/PodcastNavigation.php index 39bf30ad0a..e2e57dfbd1 100644 --- a/modules/Admin/Language/ca/PodcastNavigation.php +++ b/modules/Admin/Language/ca/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Reproductors', 'podcast-analytics-listening-time' => 'Temps d\'escolta', 'podcast-analytics-time-periods' => 'PerÃodes de temps', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Col·laboradors', 'contributor-list' => 'Tots els col·laboradors', 'contributor-add' => 'Afegir un col·laborador', diff --git a/modules/Admin/Language/ca/Settings.php b/modules/Admin/Language/ca/Settings.php index 9ce4f305aa..a0ba0476bf 100644 --- a/modules/Admin/Language/ca/Settings.php +++ b/modules/Admin/Language/ca/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Aquesta opció tornarà a calcular i restablir tots els recomptes de dades (nombre de seguidors, publicacions, comentaris, …).', 'rewrite_media' => 'Reescriure les metadades multimèdia', 'rewrite_media_helper' => 'Aquesta opció suprimirà tots els fitxers multimèdia superflus i els recrearà (imatges, fitxers d\'à udio, transcripcions, capÃtols, ...)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Esborrar tota la memòria cau', 'clear_cache_helper' => 'Aquesta opció esborrarà la memòria cau redis o els fitxers de memòria cau.', 'run' => 'Executar la neteja', diff --git a/modules/Admin/Language/de/Breadcrumb.php b/modules/Admin/Language/de/Breadcrumb.php index f8368649ad..2bf0fc70dd 100644 --- a/modules/Admin/Language/de/Breadcrumb.php +++ b/modules/Admin/Language/de/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Startseite', 'podcasts' => 'Podcasts', 'episodes' => 'Folgen', + 'subscriptions' => 'subscriptions', 'contributors' => 'Administratoren', 'pages' => 'Seiten', 'settings' => 'Einstellungen', @@ -24,6 +25,7 @@ return [ 'persons' => 'Mitwirkende', 'publish' => 'veröffentlichen', 'publish-edit' => 'Veröffentlichung bearbeiten', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'Veröffentlichung aufheben', 'delete' => 'löschen', 'fediverse' => 'Fediversum', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'Videoclips', 'embed' => 'einbettbarer Spieler', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/de/Episode.php b/modules/Admin/Language/de/Episode.php index eaa881fd38..d20fd7162d 100644 --- a/modules/Admin/Language/de/Episode.php +++ b/modules/Admin/Language/de/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Bearbeiten', 'publish' => 'Veröffentllichen', 'publish_edit' => 'Veröffentlichung bearbeiten', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Veröffentlichung zurücknehmen', 'publish_error' => 'Folge ist bereits veröffentlicht.', 'publish_edit_error' => 'Folge ist bereits veröffentlicht.', 'publish_cancel_error' => 'Folge ist bereits veröffentlicht.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Folge ist nicht veröffentlicht.', 'delete' => 'Löschen', 'go_to_page' => 'Gehe zu Seite', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Zusätzliche Inhalte für die Sendung (zum Beispiel hinter den Kulissen, Informationen oder Interviews mit dem Team) oder übergreifende Promotionsinhalte für eine andere Show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Elternberatung', 'hint' => 'Enthält die Folge anstößige Inhalte?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Eine Nachricht zu haben erhöht das soziale Engagement, was zu einer besseren Sichtbarkeit für Ihre Episode führt.', 'message_warning_submit' => 'Trotzdem veröffentlichen', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/de/Podcast.php b/modules/Admin/Language/de/Podcast.php index cbc1e10985..8cff53a15f 100644 --- a/modules/Admin/Language/de/Podcast.php +++ b/modules/Admin/Language/de/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetarisierung', 'monetization_section_subtitle' => 'Geld dank der Zuhöhrer verdienen.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Zahlungsadresse (Payment Pointer) für Web-Monetarisierung', 'payment_pointer_hint' => 'Hier erhalten Sie dank Monetarisierung Geld', diff --git a/modules/Admin/Language/de/PodcastNavigation.php b/modules/Admin/Language/de/PodcastNavigation.php index ba35a47d1a..088887f3b8 100644 --- a/modules/Admin/Language/de/PodcastNavigation.php +++ b/modules/Admin/Language/de/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Podcast-Player', 'podcast-analytics-listening-time' => 'Hörzeit', 'podcast-analytics-time-periods' => 'Zeiträume', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Administratoren', 'contributor-list' => 'Alle Unterstützer', 'contributor-add' => 'Administrator hinzufügen', diff --git a/modules/Admin/Language/de/Settings.php b/modules/Admin/Language/de/Settings.php index f08af7a621..9484c30e17 100644 --- a/modules/Admin/Language/de/Settings.php +++ b/modules/Admin/Language/de/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Diese Option wird alle Datenzähler neu berechnen und zurücksetzen (Anzahl der Follower, Beiträge, Kommentare, …).', 'rewrite_media' => 'Medien-Metadaten neu schreiben', 'rewrite_media_helper' => 'Diese Option wird alle überflüssigen Mediendateien löschen und neu erstellen (Bilder, Audiodateien, Transkripte, Kapitel …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Alle Caches löschen', 'clear_cache_helper' => 'Diese Option leert den redis-Cache oder beschreibbare/cache-Dateien.', 'run' => 'Systempflege starten', diff --git a/modules/Admin/Language/el/Breadcrumb.php b/modules/Admin/Language/el/Breadcrumb.php index cad9d1b4c1..38b8ec9272 100644 --- a/modules/Admin/Language/el/Breadcrumb.php +++ b/modules/Admin/Language/el/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'ΑÏχική σελίδα', 'podcasts' => 'podcasts', 'episodes' => 'επεισόδια', + 'subscriptions' => 'subscriptions', 'contributors' => 'συντελεστÎÏ‚', 'pages' => 'σελίδες', 'settings' => 'Ïυθμίσεις', @@ -24,6 +25,7 @@ return [ 'persons' => 'άτομα', 'publish' => 'δημοσίευση', 'publish-edit' => 'επεξεÏγασία δημοσίευσης', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'αναίÏεση δημοσίευσης', 'delete' => 'διαγÏαφή', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'βίντεο κλιπς', 'embed' => 'ενσωματώσιμος αναπαÏαγωγÎας', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/el/Episode.php b/modules/Admin/Language/el/Episode.php index 8dee5476aa..53c6ea413b 100644 --- a/modules/Admin/Language/el/Episode.php +++ b/modules/Admin/Language/el/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'ΕπεξεÏγασία', 'publish' => 'Δημοσίευση', 'publish_edit' => 'ΕπεξεÏγασία δημοσίευσης', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'ΑναίÏεση δημοσίευσης', 'publish_error' => 'Το επεισόδιο Îχει ήδη δημοσιευθεί.', 'publish_edit_error' => 'Το επεισόδιο Îχει ήδη δημοσιευθεί.', 'publish_cancel_error' => 'Το επεισόδιο Îχει ήδη δημοσιευθεί.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Το επεισόδιο δεν Îχει δημοσιευθεί.', 'delete' => 'ΔιαγÏαφή', 'go_to_page' => 'Μετάβαση στη σελίδα', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Μπόνους', 'bonus_hint' => 'ΕπιπλÎον πεÏιεχόμενο για την παÏάσταση (για παÏάδειγμα, πίσω από τις σκηνÎÏ‚ πληÏοφοÏίες ή συνεντεÏξεις με τη cast) ή δια-διαφημιστικό πεÏιεχόμενο για μια άλλη παÏάσταση', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Γονικός σÏμβουλος', 'hint' => 'Μήπως το επεισόδιο πεÏιÎχει ακατάλληλο πεÏιεχόμενο;', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Έχοντας Îνα μήνυμα αυξάνει την κοινωνική δÎσμευση, με αποτÎλεσμα μια καλÏτεÏη Ï€Ïοβολή για το επεισόδιο σας.', 'message_warning_submit' => 'Δημοσίευση οÏτως ή άλλως', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/el/Podcast.php b/modules/Admin/Language/el/Podcast.php index f851435b44..a0f061b49e 100644 --- a/modules/Admin/Language/el/Podcast.php +++ b/modules/Admin/Language/el/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/el/PodcastNavigation.php b/modules/Admin/Language/el/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/el/PodcastNavigation.php +++ b/modules/Admin/Language/el/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/el/Settings.php b/modules/Admin/Language/el/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/el/Settings.php +++ b/modules/Admin/Language/el/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/es/Breadcrumb.php b/modules/Admin/Language/es/Breadcrumb.php index fe47d6e83f..621ca94ed3 100644 --- a/modules/Admin/Language/es/Breadcrumb.php +++ b/modules/Admin/Language/es/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Inicio', 'podcasts' => 'podcasts', 'episodes' => 'episodios', + 'subscriptions' => 'subscriptions', 'contributors' => 'colaboradores', 'pages' => 'páginas', 'settings' => 'configuración', @@ -24,6 +25,7 @@ return [ 'persons' => 'personas', 'publish' => 'publicar', 'publish-edit' => 'editar publicación', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'anular publicación', 'delete' => 'borrar', 'fediverse' => 'fediverso', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'clips de vÃdeo', 'embed' => 'reproductor embebido', 'notifications' => 'notificaciones', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/es/Episode.php b/modules/Admin/Language/es/Episode.php index 4804039570..4cb492e833 100644 --- a/modules/Admin/Language/es/Episode.php +++ b/modules/Admin/Language/es/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Editar', 'publish' => 'Publicar', 'publish_edit' => 'Editar publicación', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Anular publicación', 'publish_error' => 'El episodio ya está publicado.', 'publish_edit_error' => 'El episodio ya está publicado.', 'publish_cancel_error' => 'El episodio ya está publicado.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'El episodio no está publicado.', 'delete' => 'Borrar', 'go_to_page' => 'Ir a la página', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Extra', 'bonus_hint' => 'Contenido extra para la serie (por ejemplo, detrás de escenas o entrevistas con el elenco) o contenido promocional para otra serie', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Aviso parental', 'hint' => '¿El episodio contiene contenido explÃcito?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Tener un mensaje aumenta el alcance social, resultando en una mejor visibilidad para tu episodio.', 'message_warning_submit' => 'Publicar de todos modos', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Al anular la publicación del episodio se eliminarán todos los comentarios y mensajes asociados a él y el episodio será eliminado del feed RSS del podcast.", diff --git a/modules/Admin/Language/es/Podcast.php b/modules/Admin/Language/es/Podcast.php index 33abd9b6b4..c10b23745a 100644 --- a/modules/Admin/Language/es/Podcast.php +++ b/modules/Admin/Language/es/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetización', 'monetization_section_subtitle' => 'Gana dinero gracias a tu audiencia.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Puntero de pago para Monetización web', 'payment_pointer_hint' => 'Aquà es donde usted recibirá dinero gracias a la Monetización Web', diff --git a/modules/Admin/Language/es/PodcastNavigation.php b/modules/Admin/Language/es/PodcastNavigation.php index 6e1a409109..8bbe173375 100644 --- a/modules/Admin/Language/es/PodcastNavigation.php +++ b/modules/Admin/Language/es/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Reproductores', 'podcast-analytics-listening-time' => 'Tiempo de escucha', 'podcast-analytics-time-periods' => 'Periodos de tiempo', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Colaboradores', 'contributor-list' => 'Todos los colaboradores', 'contributor-add' => 'Añadir colaborador', diff --git a/modules/Admin/Language/es/Settings.php b/modules/Admin/Language/es/Settings.php index 0094dada0a..245ee615fd 100644 --- a/modules/Admin/Language/es/Settings.php +++ b/modules/Admin/Language/es/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Esta opción recalculará y restablecerá todos los conteos de datos (número de seguidores, publicaciones, comentarios, …).', 'rewrite_media' => 'Reescribir metadatos de medios', 'rewrite_media_helper' => 'Esta opción eliminará todos los archivos multimedia superfluos y los volverá a crear (imágenes, archivos de audio, transcripciones, capÃtulos, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Borrar toda la caché', 'clear_cache_helper' => 'Esta opción eliminará la caché de redis o archivos de escritura/caché.', 'run' => 'Ejecutar tareas de mantenimiento', diff --git a/modules/Admin/Language/fa/Breadcrumb.php b/modules/Admin/Language/fa/Breadcrumb.php index 24bece0140..f3269bfa4e 100644 --- a/modules/Admin/Language/fa/Breadcrumb.php +++ b/modules/Admin/Language/fa/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/fa/Episode.php b/modules/Admin/Language/fa/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/fa/Episode.php +++ b/modules/Admin/Language/fa/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/fa/Podcast.php b/modules/Admin/Language/fa/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/fa/Podcast.php +++ b/modules/Admin/Language/fa/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/fa/PodcastNavigation.php b/modules/Admin/Language/fa/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/fa/PodcastNavigation.php +++ b/modules/Admin/Language/fa/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/fa/Settings.php b/modules/Admin/Language/fa/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/fa/Settings.php +++ b/modules/Admin/Language/fa/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/fr/Breadcrumb.php b/modules/Admin/Language/fr/Breadcrumb.php index 126727275c..375caa16d0 100644 --- a/modules/Admin/Language/fr/Breadcrumb.php +++ b/modules/Admin/Language/fr/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Accueil', 'podcasts' => 'podcasts', 'episodes' => 'épisodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributeurs', 'pages' => 'pages', 'settings' => 'paramètres', @@ -24,6 +25,7 @@ return [ 'persons' => 'intervenants', 'publish' => 'publier', 'publish-edit' => 'modifier la publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'dépublier', 'delete' => 'supprimer', 'fediverse' => 'fédiverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'extraits vidéo', 'embed' => 'lecteur intégré', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/fr/Episode.php b/modules/Admin/Language/fr/Episode.php index 238c868b1d..dbdf875c8a 100644 --- a/modules/Admin/Language/fr/Episode.php +++ b/modules/Admin/Language/fr/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Modifier', 'publish' => 'Publier', 'publish_edit' => 'Modifier la publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Dépublier', 'publish_error' => 'L’épisode est déjà publié.', 'publish_edit_error' => 'L’épisode est déjà publié.', 'publish_cancel_error' => 'L’épisode est déjà publié.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'L’épisode n’est pas publié.', 'delete' => 'Supprimer', 'go_to_page' => 'Voir', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Contenu supplémentaire pour le podcast (par exemple des informations sur les coulisses ou des interviews avec les acteurs) ou du contenu promotionnel croisé pour un autre podcast', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Avertissement parental', 'hint' => 'L’épisode contient-il un contenu explicite ?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Ajouter un message augmente l’engagement social, menant à une meilleure visibilité pour votre épisode.', 'message_warning_submit' => 'Publier quand même', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/fr/Podcast.php b/modules/Admin/Language/fr/Podcast.php index 73ac9e866d..41255ff237 100644 --- a/modules/Admin/Language/fr/Podcast.php +++ b/modules/Admin/Language/fr/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monétisation', 'monetization_section_subtitle' => 'Gagnez de l’argent grâce à votre audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Adresse de paiement (Payment Pointer) pour Web Monetization', 'payment_pointer_hint' => 'L’adresse où vous recevrez de l’argent grâce à Web Monetization', diff --git a/modules/Admin/Language/fr/PodcastNavigation.php b/modules/Admin/Language/fr/PodcastNavigation.php index ddce3a3147..86a1bf52f8 100644 --- a/modules/Admin/Language/fr/PodcastNavigation.php +++ b/modules/Admin/Language/fr/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Lecteurs', 'podcast-analytics-listening-time' => 'Durée d’écoute', 'podcast-analytics-time-periods' => 'Périodes', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributeurs', 'contributor-list' => 'Tous les contributeurs', 'contributor-add' => 'Ajouter un contributeur', diff --git a/modules/Admin/Language/fr/Settings.php b/modules/Admin/Language/fr/Settings.php index dfc917a830..e6b0f54732 100644 --- a/modules/Admin/Language/fr/Settings.php +++ b/modules/Admin/Language/fr/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Cette option recalcule et réinitialise les compteurs de données (nombre d’abonné·e·s, de publications, de commentaires, …).', 'rewrite_media' => 'Réécrire les métadonnées des fichiers média', 'rewrite_media_helper' => 'Cette option supprimera tous les fichiers média superflus et les recréera (images, fichiers audio, transcripts, chapitrages, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Supprimer tout le cache', 'clear_cache_helper' => 'Cette option supprimera l’intégralité du cache redis ou des fichiers cache du dossier writable/cache.', 'run' => 'Faire le ménage', diff --git a/modules/Admin/Language/gd/Breadcrumb.php b/modules/Admin/Language/gd/Breadcrumb.php index 24bece0140..f3269bfa4e 100644 --- a/modules/Admin/Language/gd/Breadcrumb.php +++ b/modules/Admin/Language/gd/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/gd/Episode.php b/modules/Admin/Language/gd/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/gd/Episode.php +++ b/modules/Admin/Language/gd/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/gd/Podcast.php b/modules/Admin/Language/gd/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/gd/Podcast.php +++ b/modules/Admin/Language/gd/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/gd/PodcastNavigation.php b/modules/Admin/Language/gd/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/gd/PodcastNavigation.php +++ b/modules/Admin/Language/gd/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/gd/Settings.php b/modules/Admin/Language/gd/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/gd/Settings.php +++ b/modules/Admin/Language/gd/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/gl/Breadcrumb.php b/modules/Admin/Language/gl/Breadcrumb.php index 60f9326f1b..7aa07fba53 100644 --- a/modules/Admin/Language/gl/Breadcrumb.php +++ b/modules/Admin/Language/gl/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Inicio', 'podcasts' => 'podcasts', 'episodes' => 'episodios', + 'subscriptions' => 'subscriptions', 'contributors' => 'contribúen', 'pages' => 'páxinas', 'settings' => 'axustes', @@ -24,6 +25,7 @@ return [ 'persons' => 'persoas', 'publish' => 'publicar', 'publish-edit' => 'editar publicación', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'retirar publicación', 'delete' => 'eliminar', 'fediverse' => 'fediverso', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'clips de vÃdeo', 'embed' => 'reprodutor para incluÃr', 'notifications' => 'notificacións', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/gl/Episode.php b/modules/Admin/Language/gl/Episode.php index 71c87d0460..9e2da4b4a4 100644 --- a/modules/Admin/Language/gl/Episode.php +++ b/modules/Admin/Language/gl/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Editar', 'publish' => 'Publicar', 'publish_edit' => 'Editar publicación', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Retirar publicación', 'publish_error' => 'O episodio xa está publicado.', 'publish_edit_error' => 'O episodio xa está publicado.', 'publish_cancel_error' => 'O episodio xa está publicado.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'O episodio non foi publicado.', 'delete' => 'Eliminar', 'go_to_page' => 'Ir á páxina', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Extra', 'bonus_hint' => 'Contido extra para o programa (por exemplo, info sobre a elaboración ou conversa casual cos participantes) ou contido promocional de outras creadoras', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Aviso sobre o contido', 'hint' => 'Contén o episodio elementos explÃcitos?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Ao escribir unha mensaxe aumentas o alcance social, resultando en maior visibilidade para o teu episodio.', 'message_warning_submit' => 'Publicar igualmente', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Retirando o episodio eliminarás tódolos comentarios e publicacións asociadas con el e tamén o eliminarás da fonte RSS do podcast.", diff --git a/modules/Admin/Language/gl/Podcast.php b/modules/Admin/Language/gl/Podcast.php index fa9d797ddd..80e9d97190 100644 --- a/modules/Admin/Language/gl/Podcast.php +++ b/modules/Admin/Language/gl/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/gl/PodcastNavigation.php b/modules/Admin/Language/gl/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/gl/PodcastNavigation.php +++ b/modules/Admin/Language/gl/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/gl/Settings.php b/modules/Admin/Language/gl/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/gl/Settings.php +++ b/modules/Admin/Language/gl/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/id/Breadcrumb.php b/modules/Admin/Language/id/Breadcrumb.php index 02b2107267..676e47b75f 100644 --- a/modules/Admin/Language/id/Breadcrumb.php +++ b/modules/Admin/Language/id/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/id/Episode.php b/modules/Admin/Language/id/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/id/Episode.php +++ b/modules/Admin/Language/id/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/id/Podcast.php b/modules/Admin/Language/id/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/id/Podcast.php +++ b/modules/Admin/Language/id/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/id/PodcastNavigation.php b/modules/Admin/Language/id/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/id/PodcastNavigation.php +++ b/modules/Admin/Language/id/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/id/Settings.php b/modules/Admin/Language/id/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/id/Settings.php +++ b/modules/Admin/Language/id/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/it/Breadcrumb.php b/modules/Admin/Language/it/Breadcrumb.php index 24bece0140..9876ee9b22 100644 --- a/modules/Admin/Language/it/Breadcrumb.php +++ b/modules/Admin/Language/it/Breadcrumb.php @@ -13,37 +13,40 @@ return [ config('Admin') ->gateway => 'Home', 'podcasts' => 'podcasts', - 'episodes' => 'episodes', - 'contributors' => 'contributors', - 'pages' => 'pages', - 'settings' => 'settings', - 'theme' => 'theme', - 'add' => 'add', - 'new' => 'new', - 'edit' => 'edit', - 'persons' => 'persons', - 'publish' => 'publish', - 'publish-edit' => 'edit publication', - 'unpublish' => 'unpublish', - 'delete' => 'delete', - 'fediverse' => 'fediverse', - 'block-lists' => 'block lists', - 'users' => 'users', - 'my-account' => 'my account', - 'change-password' => 'change password', - 'import' => 'feed import', - 'platforms' => 'platforms', + 'episodes' => 'episodi', + 'subscriptions' => 'sottoscrizioni', + 'contributors' => 'collaboratori', + 'pages' => 'pagine', + 'settings' => 'impostazioni', + 'theme' => 'tema', + 'add' => 'aggiungi', + 'new' => 'nuovo', + 'edit' => 'modifica', + 'persons' => 'persone', + 'publish' => 'pubblica', + 'publish-edit' => 'modifica pubblicazione', + 'publish-date-edit' => 'edit publication date', + 'unpublish' => 'annulla pubblicazione', + 'delete' => 'elimina', + 'fediverse' => 'fediverso', + 'block-lists' => 'elenco bloccati', + 'users' => 'utenti', + 'my-account' => 'il mio profilo', + 'change-password' => 'cambia la password', + 'import' => 'importazione feed', + 'platforms' => 'piattaforme', 'social' => 'social networks', - 'funding' => 'funding', + 'funding' => 'finanziamento', 'analytics' => 'analytics', - 'locations' => 'locations', - 'webpages' => 'web pages', - 'unique-listeners' => 'unique listeners', - 'players' => 'players', - 'listening-time' => 'listening time', - 'time-periods' => 'time periods', + 'locations' => 'posizioni', + 'webpages' => 'pagine web', + 'unique-listeners' => 'ascoltatori unici', + 'players' => 'partecipanti', + 'listening-time' => 'tempo di ascolto', + 'time-periods' => 'periodo di tempo', 'soundbites' => 'soundbites', 'video-clips' => 'video clips', - 'embed' => 'embeddable player', - 'notifications' => 'notifications', + 'embed' => 'player incorporabile', + 'notifications' => 'notifiche', + 'suspend' => 'sospendi', ]; diff --git a/modules/Admin/Language/it/Charts.php b/modules/Admin/Language/it/Charts.php index 4b33530ef0..383d7bf8e9 100644 --- a/modules/Admin/Language/it/Charts.php +++ b/modules/Admin/Language/it/Charts.php @@ -9,7 +9,7 @@ declare(strict_types=1); */ return [ - 'by_service_weekly' => 'Episode downloads by service (for the past week)', + 'by_service_weekly' => 'Episodi scaricati per servizio (settimana passata)', 'by_player_weekly' => 'Episode downloads by player (for the past week)', 'by_player_yearly' => 'Episode downloads by player (for the past year)', 'by_device_weekly' => 'Episode downloads by device (for the past week)', diff --git a/modules/Admin/Language/it/Common.php b/modules/Admin/Language/it/Common.php index 596c8bcdec..bff79dffe9 100644 --- a/modules/Admin/Language/it/Common.php +++ b/modules/Admin/Language/it/Common.php @@ -9,43 +9,43 @@ declare(strict_types=1); */ return [ - 'yes' => 'Yes', + 'yes' => 'Si', 'no' => 'No', 'cancel' => 'Cancel', 'optional' => 'Optional', 'more' => 'More', - 'no_data' => 'No data found!', - 'close' => 'Close', - 'edit' => 'Edit', - 'copy' => 'Copy', - 'copied' => 'Copied!', + 'no_data' => 'Nessun dato trovato!', + 'close' => 'Chiudi', + 'edit' => 'Modifica', + 'copy' => 'Copia', + 'copied' => 'Copiato!', 'home' => 'Home', - 'explicit' => 'Explicit', - 'powered_by' => 'Powered by {castopod}', - 'actions' => 'Actions', - 'pageInfo' => 'Page {currentPage} out of {pageCount}', - 'go_back' => 'Go back', + 'explicit' => 'Esplicito', + 'powered_by' => 'Fornito da {castopod}', + 'actions' => 'Azioni', + 'pageInfo' => 'Pagina {currentPage} di {pageCount}', + 'go_back' => 'Torna indietro', 'forms' => [ 'editor' => [ - 'write' => 'Write', - 'preview' => 'Preview', + 'write' => 'Scrivi', + 'preview' => 'Anteprima', 'help' => 'Powered by markdown', ], 'multiSelect' => [ - 'selectText' => 'Press to select', - 'loadingText' => 'Loading…', - 'noResultsText' => 'No results found', + 'selectText' => 'Premi per selezionare', + 'loadingText' => 'Caricamento…', + 'noResultsText' => 'Nessun risultato trovato', 'noChoicesText' => 'No choices to choose from', - 'maxItemText' => 'Cannot add more items', + 'maxItemText' => 'Impossibile aggiungere ulteriori elementi', ], - 'upload_file' => 'Upload a file', - 'remote_url' => 'Remote URL', + 'upload_file' => 'Carica un file', + 'remote_url' => 'URL remoto', ], 'play_episode_button' => [ - 'play' => 'Play', - 'playing' => 'Playing', + 'play' => 'Riproduci', + 'playing' => 'In riproduzione', ], 'size_limit' => 'Size limit: {0}.', - 'choose_interact' => 'Choose how to interact', - 'view' => 'View', + 'choose_interact' => 'Scegli come interagire', + 'view' => 'Visualizza', ]; diff --git a/modules/Admin/Language/it/Contributor.php b/modules/Admin/Language/it/Contributor.php index d0f3b93d9f..ab685c041a 100644 --- a/modules/Admin/Language/it/Contributor.php +++ b/modules/Admin/Language/it/Contributor.php @@ -9,33 +9,33 @@ declare(strict_types=1); */ return [ - 'podcast_contributors' => 'Podcast contributors', + 'podcast_contributors' => 'Collaboratori del podcast', 'view' => "{username}'s contribution to {podcastTitle}", - 'add' => 'Add contributor', + 'add' => 'Aggiungi collaboratore', 'add_contributor' => 'Add a contributor for {0}', 'edit_role' => 'Update role for {0}', - 'edit' => 'Edit', - 'remove' => 'Remove', + 'edit' => 'Modifica', + 'remove' => 'Rimuovi', 'list' => [ - 'username' => 'Username', + 'username' => 'Nome Utente', 'role' => 'Role', ], 'form' => [ 'user' => 'User', - 'user_placeholder' => 'Select a user…', - 'role' => 'Role', - 'role_placeholder' => 'Select its role…', - 'submit_add' => 'Add contributor', - 'submit_edit' => 'Update role', + 'user_placeholder' => 'Seleziona un utente…', + 'role' => 'Ruolo', + 'role_placeholder' => 'Seleziona il suo ruolo…', + 'submit_add' => 'Aggiungi collaboratore', + 'submit_edit' => 'Aggiorna Ruolo', ], 'roles' => [ - 'podcast_admin' => 'Podcast admin', + 'podcast_admin' => 'Amministratore del podcast', ], 'messages' => [ - 'removeOwnerError' => "You can't remove the podcast owner!", + 'removeOwnerError' => "Non puoi rimuovere il proprietario del podcast!", 'removeSuccess' => - 'You have successfully removed {username} from {podcastTitle}', + 'Hai rimosso con successo {username} da {podcastTitle}', 'alreadyAddedError' => - "The contributor you're trying to add has already been added!", + "Il collaboratore che stai cercando di aggiungere è già stato aggiunto!", ], ]; diff --git a/modules/Admin/Language/it/Countries.php b/modules/Admin/Language/it/Countries.php index 4cd5d9c857..185d3c376c 100644 --- a/modules/Admin/Language/it/Countries.php +++ b/modules/Admin/Language/it/Countries.php @@ -12,25 +12,25 @@ declare(strict_types=1); return [ 'AD' => 'Andorra', - 'AE' => 'United Arab Emirates', + 'AE' => 'Emirati Arabi Uniti', 'AF' => 'Afghanistan', - 'AG' => 'Antigua and Barbuda', + 'AG' => 'Antigua e Barbuda', 'AI' => 'Anguilla', 'AL' => 'Albania', 'AM' => 'Armenia', 'AO' => 'Angola', - 'AQ' => 'Antarctica', + 'AQ' => 'Antartide', 'AR' => 'Argentina', 'AS' => 'American Samoa', 'AT' => 'Austria', 'AU' => 'Australia', 'AW' => 'Aruba', - 'AX' => 'Ã…land Islands', - 'AZ' => 'Azerbaijan', - 'BA' => 'Bosnia and Herzegovina', + 'AX' => 'Isole Ã…land', + 'AZ' => 'Azerbaigian', + 'BA' => 'Bosnia-Erzegovina', 'BB' => 'Barbados', 'BD' => 'Bangladesh', - 'BE' => 'Belgium', + 'BE' => 'Belgio', 'BF' => 'Burkina Faso', 'BG' => 'Bulgaria', 'BH' => 'Bahrain', @@ -38,63 +38,63 @@ return [ 'BJ' => 'Benin', 'BL' => 'Saint Barthélemy', 'BM' => 'Bermuda', - 'BN' => 'Brunei Darussalam', - 'BO' => 'Bolivia, Plurinational State of', + 'BN' => 'Sultanato del Brunei', + 'BO' => 'Bolivia, Stato Plurinazionale di', 'BQ' => 'Bonaire, Sint Eustatius and Saba', - 'BR' => 'Brazil', + 'BR' => 'Brasile', 'BS' => 'Bahamas', 'BT' => 'Bhutan', 'BV' => 'Bouvet Island', 'BW' => 'Botswana', - 'BY' => 'Belarus', + 'BY' => 'Bielorussia', 'BZ' => 'Belize', 'CA' => 'Canada', - 'CC' => 'Cocos (Keeling) Islands', - 'CD' => 'Congo, the Democratic Republic of the', + 'CC' => 'Isole Cocos (Keeling)', + 'CD' => 'Repubblica Democratica del Congo', 'CF' => 'Central African Republic', 'CG' => 'Congo', - 'CH' => 'Switzerland', - 'CI' => "Côte d'Ivoire", + 'CH' => 'Svizzera', + 'CI' => "Costa d'Avorio", 'CK' => 'Cook Islands', - 'CL' => 'Chile', - 'CM' => 'Cameroon', - 'CN' => 'China', + 'CL' => 'Cile', + 'CM' => 'Camerun', + 'CN' => 'Cina', 'CO' => 'Colombia', 'CR' => 'Costa Rica', 'CU' => 'Cuba', - 'CV' => 'Cape Verde', + 'CV' => 'Capo Verde', 'CW' => 'Curaçao', 'CX' => 'Christmas Island', - 'CY' => 'Cyprus', - 'CZ' => 'Czech Republic', - 'DE' => 'Germany', + 'CY' => 'Cipro', + 'CZ' => 'Repubblica Ceca', + 'DE' => 'Germania', 'DJ' => 'Djibouti', - 'DK' => 'Denmark', + 'DK' => 'Danimarca', 'DM' => 'Dominica', - 'DO' => 'Dominican Republic', + 'DO' => 'Repubblica Domenicana', 'DZ' => 'Algeria', 'EC' => 'Ecuador', 'EE' => 'Estonia', - 'EG' => 'Egypt', - 'EH' => 'Western Sahara', + 'EG' => 'Egitto', + 'EH' => 'Sahara occidentale', 'ER' => 'Eritrea', - 'ES' => 'Spain', - 'ET' => 'Ethiopia', - 'FI' => 'Finland', + 'ES' => 'Spagna', + 'ET' => 'Etiopia', + 'FI' => 'Finlandia', 'FJ' => 'Fiji', 'FK' => 'Falkland Islands (Malvinas)', 'FM' => 'Micronesia, Federated States of', 'FO' => 'Faroe Islands', - 'FR' => 'France', + 'FR' => 'Francia', 'GA' => 'Gabon', - 'GB' => 'United Kingdom', - 'GD' => 'Grenada', + 'GB' => 'Regno Unito', + 'GD' => 'Granada', 'GE' => 'Georgia', 'GF' => 'French Guiana', 'GG' => 'Guernsey', 'GH' => 'Ghana', 'GI' => 'Gibraltar', - 'GL' => 'Greenland', + 'GL' => 'Groenlandia', 'GM' => 'Gambia', 'GN' => 'Guinea', 'GP' => 'Guadeloupe', @@ -132,22 +132,22 @@ return [ 'KM' => 'Comoros', 'KN' => 'Saint Kitts and Nevis', 'KP' => "Korea, Democratic People's Republic of", - 'KR' => 'Korea, Republic of', + 'KR' => 'Corea del Sud (Repubblica di Corea)', 'KW' => 'Kuwait', 'KY' => 'Cayman Islands', - 'KZ' => 'Kazakhstan', + 'KZ' => 'Kazakistan', 'LA' => "Lao People's Democratic Republic", - 'LB' => 'Lebanon', + 'LB' => 'Libano', 'LC' => 'Saint Lucia', 'LI' => 'Liechtenstein', 'LK' => 'Sri Lanka', 'LR' => 'Liberia', 'LS' => 'Lesotho', - 'LT' => 'Lithuania', + 'LT' => 'Lituania', 'LU' => 'Luxembourg', - 'LV' => 'Latvia', + 'LV' => 'Lettonia', 'LY' => 'Libya', - 'MA' => 'Morocco', + 'MA' => 'Marocco', 'MC' => 'Monaco', 'MD' => 'Moldova, Republic of', 'ME' => 'Montenegro', @@ -177,8 +177,8 @@ return [ 'NF' => 'Norfolk Island', 'NG' => 'Nigeria', 'NI' => 'Nicaragua', - 'NL' => 'Netherlands', - 'NO' => 'Norway', + 'NL' => 'Paesi Bassi', + 'NO' => 'Norvegia', 'NP' => 'Nepal', 'NR' => 'Nauru', 'NU' => 'Niue', @@ -195,7 +195,7 @@ return [ 'PN' => 'Pitcairn', 'PR' => 'Puerto Rico', 'PS' => 'Palestine, State of', - 'PT' => 'Portugal', + 'PT' => 'Portogallo', 'PW' => 'Palau', 'PY' => 'Paraguay', 'QA' => 'Qatar', @@ -244,7 +244,7 @@ return [ 'UA' => 'Ukraine', 'UG' => 'Uganda', 'UM' => 'United States Minor Outlying Islands', - 'US' => 'United States', + 'US' => 'Stati Uniti d\'America', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VA' => 'Holy See (Vatican City State)', diff --git a/modules/Admin/Language/it/Episode.php b/modules/Admin/Language/it/Episode.php index ba0922f519..6cb572a333 100644 --- a/modules/Admin/Language/it/Episode.php +++ b/modules/Admin/Language/it/Episode.php @@ -19,22 +19,26 @@ return [ one {# comment} other {# comments} }', - 'all_podcast_episodes' => 'All podcast episodes', - 'back_to_podcast' => 'Go back to podcast', - 'edit' => 'Edit', - 'publish' => 'Publish', - 'publish_edit' => 'Edit publication', - 'unpublish' => 'Unpublish', - 'publish_error' => 'Episode is already published.', - 'publish_edit_error' => 'Episode is already published.', - 'publish_cancel_error' => 'Episode is already published.', - 'unpublish_error' => 'Episode is not published.', - 'delete' => 'Delete', - 'go_to_page' => 'Go to page', - 'create' => 'Add an episode', + 'all_podcast_episodes' => 'Tutti gli episodi del podcast', + 'back_to_podcast' => 'Torna a podcast', + 'edit' => 'Modifica', + 'publish' => 'Pubblica', + 'publish_edit' => 'Modifica pubblicazione', + 'publish_date_edit' => 'Edit publication date', + 'unpublish' => 'Annulla pubblicazione', + 'publish_error' => 'L\'episodio è già stato pubblicato.', + 'publish_edit_error' => 'L\'episodio è già stato pubblicato.', + 'publish_cancel_error' => 'L\'episodio è già stato pubblicato.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', + 'unpublish_error' => 'Episodio non pubblicato.', + 'delete' => 'Elimina', + 'go_to_page' => 'Vai alla pagina', + 'create' => 'Aggiungi un episodio', 'publication_status' => [ - 'published' => 'Published', - 'with_podcast' => 'Published', + 'published' => 'Pubblicato', + 'with_podcast' => 'Pubblicato', 'scheduled' => 'Scheduled', 'not_published' => 'Not published', ], @@ -43,7 +47,7 @@ return [ 'search' => [ 'placeholder' => 'Search for an episode', 'clear' => 'Clear search', - 'submit' => 'Search', + 'submit' => 'Cerca', ], 'number_of_episodes' => '{numberOfEpisodes, plural, one {# episode} @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/it/Podcast.php b/modules/Admin/Language/it/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/it/Podcast.php +++ b/modules/Admin/Language/it/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/it/PodcastNavigation.php b/modules/Admin/Language/it/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/it/PodcastNavigation.php +++ b/modules/Admin/Language/it/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/it/Settings.php b/modules/Admin/Language/it/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/it/Settings.php +++ b/modules/Admin/Language/it/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/nl/Breadcrumb.php b/modules/Admin/Language/nl/Breadcrumb.php index a7183ac1b5..a5c08f435d 100644 --- a/modules/Admin/Language/nl/Breadcrumb.php +++ b/modules/Admin/Language/nl/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Hoofdpagina', 'podcasts' => 'podcasts', 'episodes' => 'afleveringen', + 'subscriptions' => 'subscriptions', 'contributors' => 'bijdragers', 'pages' => 'paginas', 'settings' => 'instellingen', @@ -24,6 +25,7 @@ return [ 'persons' => 'personen', 'publish' => 'publiceren', 'publish-edit' => 'publicatie aanpassen', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'publicatie ongedaan maken', 'delete' => 'verwijder', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'integreerbare speler', 'notifications' => 'meldingen', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/nl/Episode.php b/modules/Admin/Language/nl/Episode.php index 2fa67126c4..6084574466 100644 --- a/modules/Admin/Language/nl/Episode.php +++ b/modules/Admin/Language/nl/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Bewerken', 'publish' => 'Publiceren', 'publish_edit' => 'Publicatie bewerken', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Publicatie ongedaan maken', 'publish_error' => 'Aflevering is reeds gepubliceerd.', 'publish_edit_error' => 'Aflevering is reeds gepubliceerd.', 'publish_cancel_error' => 'Aflevering is reeds gepubliceerd.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Aflevering is niet gepubliceerd.', 'delete' => 'Verwijder', 'go_to_page' => 'Ga naar pagina', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/nl/Podcast.php b/modules/Admin/Language/nl/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/nl/Podcast.php +++ b/modules/Admin/Language/nl/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/nl/PodcastNavigation.php b/modules/Admin/Language/nl/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/nl/PodcastNavigation.php +++ b/modules/Admin/Language/nl/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/nl/Settings.php b/modules/Admin/Language/nl/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/nl/Settings.php +++ b/modules/Admin/Language/nl/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/nn-NO/Breadcrumb.php b/modules/Admin/Language/nn-NO/Breadcrumb.php index aed6277aaf..d59e34efed 100644 --- a/modules/Admin/Language/nn-NO/Breadcrumb.php +++ b/modules/Admin/Language/nn-NO/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Heim', 'podcasts' => 'podkastar', 'episodes' => 'episodar', + 'subscriptions' => 'subscriptions', 'contributors' => 'bidragsytarar', 'pages' => 'sider', 'settings' => 'innstillingar', @@ -24,6 +25,7 @@ return [ 'persons' => 'personar', 'publish' => 'legg ut', 'publish-edit' => 'rediger publiseringa', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'avpubliser', 'delete' => 'slett', 'fediverse' => 'fødiverset', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'videoklypp', 'embed' => 'innbyggbar spelar', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/nn-NO/Episode.php b/modules/Admin/Language/nn-NO/Episode.php index c98495f0f8..12a3672ad6 100644 --- a/modules/Admin/Language/nn-NO/Episode.php +++ b/modules/Admin/Language/nn-NO/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Rediger', 'publish' => 'Legg ut', 'publish_edit' => 'Rediger publiseringa', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Avpubliser', 'publish_error' => 'Episoden er allereie publisert.', 'publish_edit_error' => 'Episoden er allereie publisert.', 'publish_cancel_error' => 'Episoden er allereie publisert.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episoden er ikkje publisert.', 'delete' => 'Slett', 'go_to_page' => 'GÃ¥ til side', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Ekstra innhald (til dømes bakominfo eller intervju med skodespelarane) eller innhald for Ã¥ framheva ein annan serie', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'RÃ¥d til foreldre', 'hint' => 'Inneheld episoden grov prat?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Viss du skriv ei melding, kan det gje meir sosialt engasjement og syta for at episoden din blir meir synleg.', 'message_warning_submit' => 'Legg ut likevel', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/nn-NO/Podcast.php b/modules/Admin/Language/nn-NO/Podcast.php index 803a56e69e..f18cefc28a 100644 --- a/modules/Admin/Language/nn-NO/Podcast.php +++ b/modules/Admin/Language/nn-NO/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Kommersialisering', 'monetization_section_subtitle' => 'Ten pengar med hjelp frÃ¥ publikummet ditt.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Betalingspunkt for nettkommersialisering', 'payment_pointer_hint' => 'Det er her du vil fÃ¥ inn pengar frÃ¥ nettkommersialiseringa', diff --git a/modules/Admin/Language/nn-NO/PodcastNavigation.php b/modules/Admin/Language/nn-NO/PodcastNavigation.php index cf628d0ea2..d62080aeda 100644 --- a/modules/Admin/Language/nn-NO/PodcastNavigation.php +++ b/modules/Admin/Language/nn-NO/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Spelarar', 'podcast-analytics-listening-time' => 'Lyttetid', 'podcast-analytics-time-periods' => 'Tidsperiodar', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Bidragsytarar', 'contributor-list' => 'Alle bidragsytarane', 'contributor-add' => 'Legg til bidragsytar', diff --git a/modules/Admin/Language/nn-NO/Settings.php b/modules/Admin/Language/nn-NO/Settings.php index 2ef7b6c92a..6d9f6641f4 100644 --- a/modules/Admin/Language/nn-NO/Settings.php +++ b/modules/Admin/Language/nn-NO/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Dette nullstiller alle datateljarar (tal pÃ¥ fylgjarar, innlegg, kommentarar…).', 'rewrite_media' => 'Overskriv metadata for medium', 'rewrite_media_helper' => 'Dette vil sletta alle overflødige mediafiler og laga dei pÃ¥ nytt (bilete, lydfiler, transkriberingar, kapittel, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Slett bufferinnhald', 'clear_cache_helper' => 'Dette tømmer redis-mellomlageret eller skrivbare/mellomlagra filer.', 'run' => 'Gjer reinhald', diff --git a/modules/Admin/Language/oc/Breadcrumb.php b/modules/Admin/Language/oc/Breadcrumb.php index 24bece0140..f3269bfa4e 100644 --- a/modules/Admin/Language/oc/Breadcrumb.php +++ b/modules/Admin/Language/oc/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/oc/Episode.php b/modules/Admin/Language/oc/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/oc/Episode.php +++ b/modules/Admin/Language/oc/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/oc/Podcast.php b/modules/Admin/Language/oc/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/oc/Podcast.php +++ b/modules/Admin/Language/oc/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/oc/PodcastNavigation.php b/modules/Admin/Language/oc/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/oc/PodcastNavigation.php +++ b/modules/Admin/Language/oc/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/oc/Settings.php b/modules/Admin/Language/oc/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/oc/Settings.php +++ b/modules/Admin/Language/oc/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/pl/Breadcrumb.php b/modules/Admin/Language/pl/Breadcrumb.php index 0030fb6058..d472ef1063 100644 --- a/modules/Admin/Language/pl/Breadcrumb.php +++ b/modules/Admin/Language/pl/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'PoczÄ…tek', 'podcasts' => 'podcasty', 'episodes' => 'odcinki', + 'subscriptions' => 'subscriptions', 'contributors' => 'kontrybutorzy', 'pages' => 'strony', 'settings' => 'ustawienia', @@ -24,6 +25,7 @@ return [ 'persons' => 'osoby', 'publish' => 'publikuj', 'publish-edit' => 'edytuj publikacjÄ™', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'cofnij publikacjÄ™', 'delete' => 'usuÅ„', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'klipy wideo', 'embed' => 'odtwarzacz do osadzenia', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/pl/Episode.php b/modules/Admin/Language/pl/Episode.php index f82ccfdab8..ee45c80531 100644 --- a/modules/Admin/Language/pl/Episode.php +++ b/modules/Admin/Language/pl/Episode.php @@ -25,10 +25,14 @@ return [ 'edit' => 'Edytuj', 'publish' => 'Publikuj', 'publish_edit' => 'Edytuj publikacjÄ™', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Cofnij publikacjÄ™', 'publish_error' => 'Odcinek jest już opublikowany.', 'publish_edit_error' => 'Odcinek jest już opublikowany.', 'publish_cancel_error' => 'Odcinek jest już opublikowany.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Odcinek nie jest opublikowany.', 'delete' => 'UsuÅ„', 'go_to_page' => 'Przejdź do strony', @@ -110,6 +114,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Dodatkowa treść do programu (np. informacje zza kulis lub wywiady z obsadÄ…) albo treÅ›ci promujÄ…ce inne programy', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Kontrola rodzicielska', 'hint' => 'Czy odcinek zawiera treÅ›ci dla dorosÅ‚ych?', @@ -177,6 +183,11 @@ return [ 'message_warning_hint' => 'Posiadanie wiadomoÅ›ci zwiÄ™ksza zaangażowanie spoÅ‚eczne, co skutkuje lepszÄ… widocznoÅ›ciÄ… Twojego odcinka.', 'message_warning_submit' => 'Opublikuj mimo to', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/pl/Podcast.php b/modules/Admin/Language/pl/Podcast.php index 2b6ed3f57f..5aa92ff81c 100644 --- a/modules/Admin/Language/pl/Podcast.php +++ b/modules/Admin/Language/pl/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetyzacja', 'monetization_section_subtitle' => 'Zarabiaj dziÄ™ki swoim odbiorcom.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Wskaźnik pÅ‚atnoÅ›ci do zarabiania w sieci', 'payment_pointer_hint' => 'To tutaj otrzymasz pieniÄ…dze dziÄ™ki Monetyzacji Internetowej', diff --git a/modules/Admin/Language/pl/PodcastNavigation.php b/modules/Admin/Language/pl/PodcastNavigation.php index 38b73ffbe1..7f3327f157 100644 --- a/modules/Admin/Language/pl/PodcastNavigation.php +++ b/modules/Admin/Language/pl/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Odtwarzacze', 'podcast-analytics-listening-time' => 'Czas odsÅ‚uchu', 'podcast-analytics-time-periods' => 'Okresy czasu', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Kontrybutorzy', 'contributor-list' => 'Wszyscy kontrybutorzy', 'contributor-add' => 'Dodaj kontrybutora', diff --git a/modules/Admin/Language/pl/Settings.php b/modules/Admin/Language/pl/Settings.php index 308012aea7..09bcfde0c4 100644 --- a/modules/Admin/Language/pl/Settings.php +++ b/modules/Admin/Language/pl/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Ta opcja zresetuje i ponownie obliczy wszystkie liczniki danych (liczbÄ™ obserwujÄ…cych, wpisów, komentarzy, …).', 'rewrite_media' => 'Przepisz metadane multimediów', 'rewrite_media_helper' => 'Ta opcja usunie wszystkie zbÄ™dne pliki multimedialne i odtworzy je (obrazy, pliki audio, transkrypcje, rozdziaÅ‚y, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Wyczyść caÅ‚Ä… pamięć podrÄ™cznÄ…', 'clear_cache_helper' => 'Ta opcja opróżni pamięć podrÄ™cznÄ… (cache) redis lub zapisywalne/buforowane pliki.', 'run' => 'Przeprowadź porzÄ…dkowanie', diff --git a/modules/Admin/Language/pt-BR/Breadcrumb.php b/modules/Admin/Language/pt-BR/Breadcrumb.php index 42c5e23c1c..028fb11cd7 100644 --- a/modules/Admin/Language/pt-BR/Breadcrumb.php +++ b/modules/Admin/Language/pt-BR/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'InÃcio', 'podcasts' => 'podcasts', 'episodes' => 'episódios', + 'subscriptions' => 'subscriptions', 'contributors' => 'contribuidores', 'pages' => 'páginas', 'settings' => 'configurações', @@ -24,6 +25,7 @@ return [ 'persons' => 'pessoas', 'publish' => 'publicar', 'publish-edit' => 'editar publicação', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'despublicar', 'delete' => 'excluir', 'fediverse' => 'fediverso', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'clipes de vÃdeo', 'embed' => 'player incorporável', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/pt-BR/Episode.php b/modules/Admin/Language/pt-BR/Episode.php index cd15c64b3d..b89d440147 100644 --- a/modules/Admin/Language/pt-BR/Episode.php +++ b/modules/Admin/Language/pt-BR/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Editar', 'publish' => 'Publicar', 'publish_edit' => 'Editar publicação', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Despublicar', 'publish_error' => 'O episódio já está publicado.', 'publish_edit_error' => 'O episódio já está publicado.', 'publish_cancel_error' => 'O episódio já está publicado.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'O episódio não está publicado.', 'delete' => 'Excluir', 'go_to_page' => 'Ir para a página', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bônus', 'bonus_hint' => 'Conteúdo extra para o podcast (por exemplo, informações nos bastidores ou entrevistas com o elenco) ou conteúdo promocional com outro podcast', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Aviso aos pais', 'hint' => 'O episódio contém conteúdo explÃcito?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Ter uma mensagem aumenta o engajamento social, resultando em uma melhor visibilidade do seu episódio.', 'message_warning_submit' => 'Publicar mesmo assim', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/pt-BR/Podcast.php b/modules/Admin/Language/pt-BR/Podcast.php index e0815d508e..c7e30aa38e 100644 --- a/modules/Admin/Language/pt-BR/Podcast.php +++ b/modules/Admin/Language/pt-BR/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetização', 'monetization_section_subtitle' => 'Ganhe dinheiro graças à sua audiência.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Endereço de pagamento (Payment Pointer) para web monetização', 'payment_pointer_hint' => 'Este é o seu lugar onde você receberá dinheiro graças à web monetização', diff --git a/modules/Admin/Language/pt-BR/PodcastNavigation.php b/modules/Admin/Language/pt-BR/PodcastNavigation.php index 2214743c57..91e416557d 100644 --- a/modules/Admin/Language/pt-BR/PodcastNavigation.php +++ b/modules/Admin/Language/pt-BR/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Tempo de escuta', 'podcast-analytics-time-periods' => 'PerÃodos de tempo', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contribuidores', 'contributor-list' => 'Todos os contribuidores', 'contributor-add' => 'Adicionar contribuidor', diff --git a/modules/Admin/Language/pt-BR/Settings.php b/modules/Admin/Language/pt-BR/Settings.php index 23147fee5e..841460019c 100644 --- a/modules/Admin/Language/pt-BR/Settings.php +++ b/modules/Admin/Language/pt-BR/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'Esta opção irá recalcular e redefinir todas as contagens de dados (número de seguidores, publicações, comentários, …).', 'rewrite_media' => 'Reescrever metadados de mÃdia', 'rewrite_media_helper' => 'Esta opção apagará todos os arquivos de mÃdia desnecessários e os recriará (imagens, arquivos de áudio, transcrições, capÃtulos, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Limpar todo o cache', 'clear_cache_helper' => 'Esta opção irá liberar o cache do redis ou arquivos graváveis/cache.', 'run' => 'Executar manutenção', diff --git a/modules/Admin/Language/pt/Breadcrumb.php b/modules/Admin/Language/pt/Breadcrumb.php index 24bece0140..f3269bfa4e 100644 --- a/modules/Admin/Language/pt/Breadcrumb.php +++ b/modules/Admin/Language/pt/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/pt/Episode.php b/modules/Admin/Language/pt/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/pt/Episode.php +++ b/modules/Admin/Language/pt/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/pt/Podcast.php b/modules/Admin/Language/pt/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/pt/Podcast.php +++ b/modules/Admin/Language/pt/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/pt/PodcastNavigation.php b/modules/Admin/Language/pt/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/pt/PodcastNavigation.php +++ b/modules/Admin/Language/pt/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/pt/Settings.php b/modules/Admin/Language/pt/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/pt/Settings.php +++ b/modules/Admin/Language/pt/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/ru/Breadcrumb.php b/modules/Admin/Language/ru/Breadcrumb.php index d0ad26ac4d..33432cfdd5 100644 --- a/modules/Admin/Language/ru/Breadcrumb.php +++ b/modules/Admin/Language/ru/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'ГлавнаÑ', 'podcasts' => 'подкаÑÑ‚Ñ‹', 'episodes' => 'выпуÑки', + 'subscriptions' => 'subscriptions', 'contributors' => 'учаÑтников', 'pages' => 'Ñтраниц', 'settings' => 'наÑтройки', @@ -24,6 +25,7 @@ return [ 'persons' => 'лица', 'publish' => 'публикациÑ', 'publish-edit' => 'редактировать публикацию', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'ÑнÑÑ‚ÑŒ Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸', 'delete' => 'удалить', 'fediverse' => 'ФедивёрÑ', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'видео клипы', 'embed' => 'вÑтроенный плеер', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/ru/Episode.php b/modules/Admin/Language/ru/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/ru/Episode.php +++ b/modules/Admin/Language/ru/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/ru/Podcast.php b/modules/Admin/Language/ru/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/ru/Podcast.php +++ b/modules/Admin/Language/ru/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/ru/PodcastNavigation.php b/modules/Admin/Language/ru/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/ru/PodcastNavigation.php +++ b/modules/Admin/Language/ru/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/ru/Settings.php b/modules/Admin/Language/ru/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/ru/Settings.php +++ b/modules/Admin/Language/ru/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/sk/Breadcrumb.php b/modules/Admin/Language/sk/Breadcrumb.php index 34a69e4a45..3c7422811e 100644 --- a/modules/Admin/Language/sk/Breadcrumb.php +++ b/modules/Admin/Language/sk/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Úvod', 'podcasts' => 'podcasty', 'episodes' => 'Äasti', + 'subscriptions' => 'subscriptions', 'contributors' => 'prispievatelia', 'pages' => 'stránky', 'settings' => 'nastavenia', @@ -24,6 +25,7 @@ return [ 'persons' => 'osobnosti', 'publish' => 'zverejniÅ¥', 'publish-edit' => 'upraviÅ¥ zverejnené', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'zruÅ¡iÅ¥ zverejnenie', 'delete' => 'vymazaÅ¥', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video klipy', 'embed' => 'vnorený', 'notifications' => 'oboznámenia', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/sk/Episode.php b/modules/Admin/Language/sk/Episode.php index 93730ec0c9..a731c0e24d 100644 --- a/modules/Admin/Language/sk/Episode.php +++ b/modules/Admin/Language/sk/Episode.php @@ -26,10 +26,14 @@ return [ 'edit' => 'UpraviÅ¥', 'publish' => 'ZverejniÅ¥', 'publish_edit' => 'UpraviÅ¥ zverejnenie', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'ZruÅ¡iÅ¥ zverejnenie', 'publish_error' => 'Epizóda je už zverejnená.', 'publish_edit_error' => 'Epizóda je už zverejnená.', 'publish_cancel_error' => 'Epizóda je už zverejnená.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Epizóda nie je zverejnená.', 'delete' => 'VymazaÅ¥', 'go_to_page' => 'PrejsÅ¥ na stránku', @@ -113,6 +117,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -180,6 +186,11 @@ return [ 'message_warning_hint' => 'OdoslanÃm uvádzacieho prÃspevku zlepÅ¡ujete sociálnu úÄasÅ¥, ÄÃm môžete eÅ¡te viac zviditeľniÅ¥ váš podcast.', 'message_warning_submit' => 'Napriek tomu zverejniÅ¥', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/sk/Podcast.php b/modules/Admin/Language/sk/Podcast.php index 5585a766eb..5e65da720b 100644 --- a/modules/Admin/Language/sk/Podcast.php +++ b/modules/Admin/Language/sk/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/sk/PodcastNavigation.php b/modules/Admin/Language/sk/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/sk/PodcastNavigation.php +++ b/modules/Admin/Language/sk/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/sk/Settings.php b/modules/Admin/Language/sk/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/sk/Settings.php +++ b/modules/Admin/Language/sk/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/sv/Breadcrumb.php b/modules/Admin/Language/sv/Breadcrumb.php index 24bece0140..f3269bfa4e 100644 --- a/modules/Admin/Language/sv/Breadcrumb.php +++ b/modules/Admin/Language/sv/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => 'Home', 'podcasts' => 'podcasts', 'episodes' => 'episodes', + 'subscriptions' => 'subscriptions', 'contributors' => 'contributors', 'pages' => 'pages', 'settings' => 'settings', @@ -24,6 +25,7 @@ return [ 'persons' => 'persons', 'publish' => 'publish', 'publish-edit' => 'edit publication', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'unpublish', 'delete' => 'delete', 'fediverse' => 'fediverse', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'video clips', 'embed' => 'embeddable player', 'notifications' => 'notifications', + 'suspend' => 'suspend', ]; diff --git a/modules/Admin/Language/sv/Episode.php b/modules/Admin/Language/sv/Episode.php index ba0922f519..91313a7c5a 100644 --- a/modules/Admin/Language/sv/Episode.php +++ b/modules/Admin/Language/sv/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => 'Edit', 'publish' => 'Publish', 'publish_edit' => 'Edit publication', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'Unpublish', 'publish_error' => 'Episode is already published.', 'publish_edit_error' => 'Episode is already published.', 'publish_cancel_error' => 'Episode is already published.', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => 'Episode is not published.', 'delete' => 'Delete', 'go_to_page' => 'Go to page', @@ -109,6 +113,8 @@ return [ 'bonus' => 'Bonus', 'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show', ], + 'premium_title' => 'Premium', + 'premium' => 'Episode must be accessible to premium subscribers only', 'parental_advisory' => [ 'label' => 'Parental advisory', 'hint' => 'Does the episode contain explicit content?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.', 'message_warning_submit' => 'Publish anyways', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", diff --git a/modules/Admin/Language/sv/Podcast.php b/modules/Admin/Language/sv/Podcast.php index 19a022b563..426b763b8b 100644 --- a/modules/Admin/Language/sv/Podcast.php +++ b/modules/Admin/Language/sv/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'Monetization', 'monetization_section_subtitle' => 'Earn money thanks to your audience.', + 'premium' => 'Premium', + 'premium_by_default' => 'Episodes must be set as premium by default', + 'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer_hint' => 'This is your where you will receive money thanks to Web Monetization', diff --git a/modules/Admin/Language/sv/PodcastNavigation.php b/modules/Admin/Language/sv/PodcastNavigation.php index b619573154..b4d7ddc089 100644 --- a/modules/Admin/Language/sv/PodcastNavigation.php +++ b/modules/Admin/Language/sv/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'Players', 'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-time-periods' => 'Time periods', + 'premium' => 'Premium', + 'subscription-list' => 'All subscriptions', + 'subscription-add' => 'Add subscription', 'contributors' => 'Contributors', 'contributor-list' => 'All contributors', 'contributor-add' => 'Add contributor', diff --git a/modules/Admin/Language/sv/Settings.php b/modules/Admin/Language/sv/Settings.php index 345976be7f..4a70dcbaa0 100644 --- a/modules/Admin/Language/sv/Settings.php +++ b/modules/Admin/Language/sv/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'rewrite_media' => 'Rewrite media metadata', 'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', + 'rename_episodes_files' => 'Rename episode audio files', + 'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'clear_cache' => 'Clear all cache', 'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'run' => 'Run housekeeping', diff --git a/modules/Admin/Language/zh-Hans/Breadcrumb.php b/modules/Admin/Language/zh-Hans/Breadcrumb.php index b41de54fbe..80105ec375 100644 --- a/modules/Admin/Language/zh-Hans/Breadcrumb.php +++ b/modules/Admin/Language/zh-Hans/Breadcrumb.php @@ -14,6 +14,7 @@ return [ ->gateway => '主页', 'podcasts' => 'æ’客', 'episodes' => '剧集', + 'subscriptions' => '订阅', 'contributors' => '贡献者', 'pages' => '页', 'settings' => '设置', @@ -24,6 +25,7 @@ return [ 'persons' => '人', 'publish' => 'å‘布', 'publish-edit' => '编辑å‘布', + 'publish-date-edit' => 'edit publication date', 'unpublish' => 'å–消å‘布', 'delete' => 'åˆ é™¤', 'fediverse' => 'è”邦宇宙', @@ -46,4 +48,5 @@ return [ 'video-clips' => 'è§†é¢‘ç´ æ', 'embed' => '嵌入å¼æ’放器', 'notifications' => '通知', + 'suspend' => 'æš‚åœ', ]; diff --git a/modules/Admin/Language/zh-Hans/Episode.php b/modules/Admin/Language/zh-Hans/Episode.php index c6a3f2d0ce..7a8f335a2a 100644 --- a/modules/Admin/Language/zh-Hans/Episode.php +++ b/modules/Admin/Language/zh-Hans/Episode.php @@ -24,10 +24,14 @@ return [ 'edit' => '编辑', 'publish' => 'å‘布', 'publish_edit' => '编辑å‘布', + 'publish_date_edit' => 'Edit publication date', 'unpublish' => 'å–消å‘布', 'publish_error' => '剧集已被å‘布。', 'publish_edit_error' => '剧集已被å‘布。', 'publish_cancel_error' => '剧集已被å‘布。', + 'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', + 'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', + 'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'unpublish_error' => '剧集尚未å‘布。', 'delete' => 'åˆ é™¤', 'go_to_page' => '转到页é¢', @@ -109,6 +113,8 @@ return [ 'bonus' => '奖金', 'bonus_hint' => '剧集趣闻(例如,幕åŽä¿¡æ¯ä¸Žå¯¹æ¼”员的采访)或å¦ä¸€ä¸ªå‰§é›†çš„推è', ], + 'premium_title' => '高级版', + 'premium' => '剧集仅å…许高级订阅者访问', 'parental_advisory' => [ 'label' => 'è¦å‘Šæ ‡è®°', 'hint' => '剧集是å¦åŒ…å«é™åˆ¶çº§å†…容?', @@ -176,6 +182,11 @@ return [ 'message_warning_hint' => '有消æ¯å‘é€å¯ä»¥å¢žåŠ 社交å‚与度,从而æé«˜ä½ çš„å‰§é›†æ›å…‰åº¦ã€‚', 'message_warning_submit' => 'ä»ç„¶å‘布', ], + 'publish_date_edit_form' => [ + 'new_publication_date' => 'New publication date', + 'new_publication_date_hint' => 'Must be set to a past date.', + 'submit' => 'Edit publication date', + ], 'unpublish_form' => [ 'disclaimer' => "å–消å‘å¸ƒè¯¥å‰§é›†å°†åˆ é™¤ç›¸å…³çš„æ‰€æœ‰è¯„è®ºå’Œæ’文,并将其从æ’客的订阅æºä¸åˆ 除。", diff --git a/modules/Admin/Language/zh-Hans/Podcast.php b/modules/Admin/Language/zh-Hans/Podcast.php index 7e231b81e0..1a145c204f 100644 --- a/modules/Admin/Language/zh-Hans/Podcast.php +++ b/modules/Admin/Language/zh-Hans/Podcast.php @@ -107,6 +107,9 @@ return [ 'monetization_section_title' => 'è´§å¸åŒ–', 'monetization_section_subtitle' => 'æ„Ÿè°¢ä½ çš„å¬ä¼—支æŒã€‚', + 'premium' => '高级版', + 'premium_by_default' => '剧集必须默认设置为付费会员订阅。', + 'premium_by_default_hint' => '默认情况下,æ’å®¢å‰§é›†å°†è¢«æ ‡è®°ä¸ºé«˜çº§ã€‚ ä½ ä»ç„¶å¯ä»¥é€‰æ‹©å°†æŸäº›å‰§é›†ã€é¢„告片ç‰è®¾ç½®ä¸ºå…¬å¼€ã€‚', 'payment_pointer' => '网络货å¸åŒ–支付指å—', 'payment_pointer_hint' => '借助网络货å¸åŒ–ï¼Œä½ å¯ä»¥åœ¨æ¤æ”¶æ¬¾', diff --git a/modules/Admin/Language/zh-Hans/PodcastNavigation.php b/modules/Admin/Language/zh-Hans/PodcastNavigation.php index ba11a317a2..75564b1326 100644 --- a/modules/Admin/Language/zh-Hans/PodcastNavigation.php +++ b/modules/Admin/Language/zh-Hans/PodcastNavigation.php @@ -25,6 +25,9 @@ return [ 'podcast-analytics-players' => 'æ’放', 'podcast-analytics-listening-time' => '收å¬æ—¶é—´', 'podcast-analytics-time-periods' => '时间段', + 'premium' => '高级版', + 'subscription-list' => '所有订阅', + 'subscription-add' => 'æ·»åŠ è®¢é˜…', 'contributors' => '贡献者', 'contributor-list' => '所有贡献者', 'contributor-add' => 'æ·»åŠ è´¡çŒ®è€…', diff --git a/modules/Admin/Language/zh-Hans/Settings.php b/modules/Admin/Language/zh-Hans/Settings.php index 8c7768cedb..10875b1edf 100644 --- a/modules/Admin/Language/zh-Hans/Settings.php +++ b/modules/Admin/Language/zh-Hans/Settings.php @@ -35,6 +35,8 @@ return [ 'reset_counts_helper' => 'æ¤é€‰é¡¹å°†é‡æ–°è®¡ç®—并é‡ç½®æ‰€æœ‰æ•°æ®ç»Ÿè®¡(关注者数目ã€å¸–åã€è¯„论〠…)。', 'rewrite_media' => 'é‡å†™åª’体元数æ®', 'rewrite_media_helper' => 'æ¤é€‰é¡¹å°†åˆ 除所有多余的媒体文件并é‡æ–°åˆ›å»º(图åƒã€éŸ³é¢‘ã€å—幕ã€ç« 节〠…)', + 'rename_episodes_files' => 'é‡å‘½å剧集音频文件', + 'rename_episodes_files_hint' => 'æ¤é€‰é¡¹ä¼šå°†æ‰€æœ‰å‰§é›†éŸ³é¢‘文件é‡å‘½å为éšæœºå—符串。 å¦‚æžœä½ çš„ç§äººå‰§é›†é“¾æŽ¥è¢«æ³„露,使用æ¤é€‰é¡¹å¯ä»¥éšè—。', 'clear_cache' => '清除所有缓å˜', 'clear_cache_helper' => 'æ¤é€‰é¡¹å°†ä»Žå¯å†™/缓å˜æ–‡ä»¶å¤¹ä¸åˆ 除整个 redis 缓å˜æˆ–缓å˜æ–‡ä»¶ã€‚', 'run' => 'è¿è¡Œç»´æŠ¤ä»»åŠ¡', diff --git a/modules/PremiumPodcasts/Language/ar/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/ar/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ar/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/ar/Subscription.php b/modules/PremiumPodcasts/Language/ar/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/ar/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/br/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/br/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/br/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/br/Subscription.php b/modules/PremiumPodcasts/Language/br/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/br/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/ca/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/ca/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ca/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/ca/Subscription.php b/modules/PremiumPodcasts/Language/ca/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/ca/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/de/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/de/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/de/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/de/Subscription.php b/modules/PremiumPodcasts/Language/de/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/de/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/el/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/el/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/el/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/el/Subscription.php b/modules/PremiumPodcasts/Language/el/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/el/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/es/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/es/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/es/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/es/Subscription.php b/modules/PremiumPodcasts/Language/es/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/es/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/fa/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/fa/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/fa/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/fa/Subscription.php b/modules/PremiumPodcasts/Language/fa/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/fa/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/fr/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/fr/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/fr/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/fr/Subscription.php b/modules/PremiumPodcasts/Language/fr/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/fr/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/gd/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/gd/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/gd/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/gd/Subscription.php b/modules/PremiumPodcasts/Language/gd/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/gd/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/gl/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/gl/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/gl/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/gl/Subscription.php b/modules/PremiumPodcasts/Language/gl/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/gl/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/id/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/id/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/id/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/id/Subscription.php b/modules/PremiumPodcasts/Language/id/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/id/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/it/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/it/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/it/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/it/Subscription.php b/modules/PremiumPodcasts/Language/it/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/it/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/nl/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/nl/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/nl/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/nl/Subscription.php b/modules/PremiumPodcasts/Language/nl/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/nl/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/nn-NO/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/nn-NO/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/nn-NO/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/nn-NO/Subscription.php b/modules/PremiumPodcasts/Language/nn-NO/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/nn-NO/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/oc/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/oc/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/oc/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/oc/Subscription.php b/modules/PremiumPodcasts/Language/oc/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/oc/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pl/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/pl/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pl/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pl/Subscription.php b/modules/PremiumPodcasts/Language/pl/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/pl/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pt-BR/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/pt-BR/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt-BR/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pt-BR/Subscription.php b/modules/PremiumPodcasts/Language/pt-BR/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt-BR/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pt/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/pt/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/pt/Subscription.php b/modules/PremiumPodcasts/Language/pt/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/ru/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/ru/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ru/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/ru/Subscription.php b/modules/PremiumPodcasts/Language/ru/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/ru/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/sk/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/sk/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/sk/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/sk/Subscription.php b/modules/PremiumPodcasts/Language/sk/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/sk/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/sv/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/sv/PremiumPodcasts.php new file mode 100644 index 0000000000..18c0dd4e4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/sv/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'Podcast contains premium episodes', + 'episode_is_premium' => 'Episode is premium, only available to premium subscribers', + 'unlock_episode' => 'This episode is for premium subscribers only. Click to unlock it!', + 'banner_unlock' => 'This podcast contains premium episodes, only available to premium subscribers.', + 'banner_lock' => 'Podcast is unlocked, enjoy the premium episodes!', + 'subscribe' => 'Subscribe', + 'lock' => 'Lock', + 'unlock' => 'Unlock', + 'unlock_form' => [ + 'title' => 'Premium content', + 'subtitle' => 'This podcast contains locked premium episodes! Do you have the key to unlock them?', + 'token' => 'Enter your key', + 'token_hint' => 'If you are subscribed to {podcastTitle}, you may copy the key that was sent to you via email and paste it here.', + 'submit' => 'Unlock all episodes!', + 'call_to_action' => 'Unlock all episodes of {podcastTitle}:', + 'subscribe_cta' => 'Subscribe now!', + ], + 'messages' => [ + 'unlockSuccess' => 'Podcast was successfully unlocked! Enjoy the premium episodes!', + 'unlockBadAttempt' => 'Your key does not seem to be working…', + 'lockSuccess' => 'Podcast was successfully locked!', + ], +]; diff --git a/modules/PremiumPodcasts/Language/sv/Subscription.php b/modules/PremiumPodcasts/Language/sv/Subscription.php new file mode 100644 index 0000000000..f8af256f70 --- /dev/null +++ b/modules/PremiumPodcasts/Language/sv/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => 'New subscription', + 'view' => 'View subscription', + 'edit' => 'Edit subscription', + 'regenerate_token' => 'Regenerate token', + 'suspend' => 'Suspend subscription', + 'resume' => 'Resume subscription', + 'delete' => 'Delete subscription', + 'status' => [ + 'active' => 'Active', + 'suspended' => 'Suspended', + 'expired' => 'Expired', + ], + 'list' => [ + 'number' => 'Number', + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'unlimited' => 'Unlimited', + 'downloads' => 'Downloads', + 'status' => 'Status', + ], + 'form' => [ + 'email' => 'Email', + 'expiration_date' => 'Expiration date', + 'expiration_date_hint' => 'The date and time at which the subscription expires. Leave empty for an unlimited subscription.', + 'submit_add' => 'Add subscription', + 'submit_edit' => 'Edit subscription', + ], + 'form_link_add' => [ + 'link' => 'Subscription page link', + 'link_hint' => 'This will add a call to action in the website inviting listeners to subscribe to the podcast.', + 'submit' => 'Save link', + ], + 'suspend_form' => [ + 'disclaimer' => 'Suspending the subscription will restrict the subscriber from having access to the premium content. You will still be able to lift the suspension afterwards.', + 'reason' => 'Reason', + 'reason_placeholder' => 'Why are you suspending the subscription?', + "submit" => 'Suspend subscription', + ], + 'delete_form' => [ + 'disclaimer' => 'Deleting {subscriber}\'s subscription will remove all analytics data associated with it.', + 'understand' => 'I understand, remove the subscription permanently', + 'submit' => 'Remove subscription', + ], + 'messages' => [ + 'addSuccess' => 'New subscription added! A welcome email was sent to {subscriber}.', + 'addError' => 'Subscription could not be added.', + 'editSuccess' => 'Subscription expiry date was updated! An email was sent to {subscriber}.', + 'editError' => 'Subscription could not be edited.', + 'regenerateTokenSuccess' => 'Token regenerated! An email was sent to {subscriber} with the new token.', + 'regenerateTokenError' => 'Token could not be regenerated.', + 'deleteSuccess' => 'Subscription was removed! An email was sent to {subscriber}.', + 'deleteError' => 'Subscription could not be removed.', + 'suspendSuccess' => 'Subscription was suspended! An email was sent to {subscriber}.', + 'suspendError' => 'Subscription could not be suspended.', + 'resumeSuccess' => 'Subscription was resumed! An email was sent to {subscriber}.', + 'resumeError' => 'Subscription could not be resumed.', + 'linkSaveSuccess' => 'Subscription link was saved successfully! It will appear in the website as a Call To Action!', + 'linkRemoveSuccess' => 'Subscription link was removed successfully!', + ], + 'emails' => [ + 'greeting' => 'Hey,', + 'token' => 'Your token: {0}', + 'unique_feed_link' => 'Your unique feed link: {0}', + 'how_to_use' => 'How to use?', + 'two_ways' => 'You have two ways of unlocking the premium episodes:', + 'import_into_app' => 'Copy your unique feed url inside your favourite podcast app (import it as a private feed to prevent exposing your credentials).', + 'go_to_website' => 'Go to {podcastWebsite}\'s website and unlock the podcast with your token.', + 'welcome_subject' => 'Welcome to {podcastTitle}', + 'welcome' => 'You have subscribed to {podcastTitle}, thank you and welcome aboard!', + 'welcome_token_title' => 'Here are your credentials to unlock the podcast\'s premium episodes:', + 'welcome_expires' => 'Your subscription was set to expire on {0}.', + 'welcome_never_expires' => 'Your subscription was set to never expire.', + 'reset_subject' => 'Your token was reset!', + 'reset_token' => 'Your access to {podcastTitle} has been reset!', + 'reset_token_title' => 'New credentials have been generated for you to unlock the podcast\'s premium episodes:', + 'edited_subject' => 'Your subscription has been updated!', + 'edited_expires' => 'Your subscription for {podcastTitle} was set to expire on {expiresAt}.', + 'edited_never_expires' => 'Your subscription for {podcastTitle} was set to never expire!', + 'suspended_subject' => 'Your subscription has been suspended!', + 'suspended' => 'Your subscription for {podcastTitle} has been suspended! You can no longer access the podcast\'s premium episodes.', + 'suspended_reason' => 'That is for the following reason: {0}', + 'resumed_subject' => 'Your subscription has been resumed!', + 'resumed' => 'Your subscription for {podcastTitle} has been resumed! You may access the podcast\'s premium episodes again.', + 'deleted_subject' => 'Your subscription has been removed!', + 'deleted' => 'Your subscription for {podcastTitle} has been removed! You no longer have access to the podcast\'s premium episodes.', + 'footer' => '{castopod} hosted on {host}', + ], +]; diff --git a/modules/PremiumPodcasts/Language/zh-Hans/PremiumPodcasts.php b/modules/PremiumPodcasts/Language/zh-Hans/PremiumPodcasts.php new file mode 100644 index 0000000000..8723a61170 --- /dev/null +++ b/modules/PremiumPodcasts/Language/zh-Hans/PremiumPodcasts.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_is_premium' => 'æ’客包å«ä¼˜è´¨å‰§é›†', + 'episode_is_premium' => '剧集是高级内容,仅适用于高级订阅者', + 'unlock_episode' => '本集仅适用于高级订阅者。 点击解é”ï¼', + 'banner_unlock' => 'æ¤æ’客包å«é«˜çº§å‰§é›†ï¼Œä»…供高级订阅者使用。', + 'banner_lock' => 'æ’客已解é”,享å—优质剧集ï¼', + 'subscribe' => '订阅', + 'lock' => 'é”定', + 'unlock' => '解é”', + 'unlock_form' => [ + 'title' => '高级内容', + 'subtitle' => 'æ¤æ’客包å«é”å®šçš„é«˜çº§å‰§é›†ï¼ ä½ æœ‰è§£é”它们的秘钥å—?', + 'token' => 'è¾“å…¥ä½ çš„å¯†é’¥', + 'token_hint' => 'å¦‚æžœä½ è®¢é˜…äº† {podcastTitle},å¯ä»¥å¤åˆ¶é€šè¿‡ç”µå邮件å‘é€ç»™ä½ 的密钥并将其粘贴到æ¤å¤„。', + 'submit' => '解é”所有剧集ï¼', + 'call_to_action' => 'è§£é” {podcastTitle} 的所有剧集:', + 'subscribe_cta' => '现在订阅 ï¼', + ], + 'messages' => [ + 'unlockSuccess' => 'æ’客已æˆåŠŸè§£é”ï¼ äº«å—优质剧集ï¼', + 'unlockBadAttempt' => 'ä½ çš„å¯†é’¥ä¼¼ä¹Žä¸èµ·ä½œç”¨...', + 'lockSuccess' => 'æ’客已æˆåŠŸé”定ï¼', + ], +]; diff --git a/modules/PremiumPodcasts/Language/zh-Hans/Subscription.php b/modules/PremiumPodcasts/Language/zh-Hans/Subscription.php new file mode 100644 index 0000000000..ceaeb7dfcc --- /dev/null +++ b/modules/PremiumPodcasts/Language/zh-Hans/Subscription.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2022 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_subscriptions' => 'Podcast subscriptions', + 'add' => '新订阅', + 'view' => '查看订阅', + 'edit' => '编辑订阅', + 'regenerate_token' => 'é‡æ–°ç”Ÿæˆä»¤ç‰Œ', + 'suspend' => 'åœæ¢è®¢é˜…', + 'resume' => 'æ¢å¤è®¢é˜…', + 'delete' => 'åˆ é™¤è®¢é˜…', + 'status' => [ + 'active' => '活动', + 'suspended' => '已暂åœ', + 'expired' => '已过期', + ], + 'list' => [ + 'number' => 'ç¼–å·', + 'email' => '邮箱', + 'expiration_date' => '到期日', + 'unlimited' => 'æ— é™åˆ¶', + 'downloads' => '下载', + 'status' => '状æ€', + ], + 'form' => [ + 'email' => '邮箱', + 'expiration_date' => '到期日', + 'expiration_date_hint' => '订阅到期的日期和时间。 留空时没有订阅é™åˆ¶ã€‚', + 'submit_add' => 'æ·»åŠ è®¢é˜…', + 'submit_edit' => '编辑订阅', + ], + 'form_link_add' => [ + 'link' => '订阅页é¢é“¾æŽ¥', + 'link_hint' => '在网站ä¸æ·»åŠ å·å¬æ€§ç”¨è¯ï¼Œé‚€è¯·å¬ä¼—订阅æ’客。', + 'submit' => 'ä¿å˜é“¾æŽ¥', + ], + 'suspend_form' => [ + 'disclaimer' => 'æš‚åœè®¢é˜…å°†é™åˆ¶è®¢é˜…è€…è®¿é—®é«˜çº§å†…å®¹ã€‚ä½ ä»ç„¶å¯ä»¥åœ¨ä¹‹åŽå–消暂åœã€‚', + 'reason' => 'åŽŸå› ', + 'reason_placeholder' => '您为什么è¦æš‚åœè®¢é˜…?', + "submit" => 'æš‚åœè®¢é˜…', + ], + 'delete_form' => [ + 'disclaimer' => 'åˆ é™¤ {subscriber} çš„è®¢é˜…å°†åˆ é™¤æ‰€æœ‰ç›¸å…³çš„åˆ†æžæ•°æ®ã€‚', + 'understand' => 'æˆ‘æ˜Žç™½ï¼Œæ°¸ä¹…åˆ é™¤è®¢é˜…', + 'submit' => '移除订阅', + ], + 'messages' => [ + 'addSuccess' => 'æ·»åŠ äº†æ–°è®¢é˜…ï¼ æ¬¢è¿Žç”µå邮件已å‘é€ç»™ {subscriber}。', + 'addError' => 'æ— æ³•æ·»åŠ è®¢é˜…ã€‚', + 'editSuccess' => 'è®¢é˜…åˆ°æœŸæ—¥æœŸå·²æ›´æ–°ï¼ ä¸€å°ç”µå邮件已å‘é€ç»™ {subscriber}。', + 'editError' => 'æ— æ³•æ·»åŠ è®¢é˜…ã€‚', + 'regenerateTokenSuccess' => 'é‡æ–°ç”Ÿæˆä»¤ç‰Œï¼ 一å°å¸¦æœ‰æ–°ä»¤ç‰Œçš„电å邮件已å‘é€ç»™ {subscriber}。', + 'regenerateTokenError' => 'æ— æ³•é‡æ–°ç”Ÿæˆä»¤ç‰Œã€‚', + 'deleteSuccess' => 'è®¢é˜…å·²åˆ é™¤ï¼ ä¸€å°ç”µå邮件已å‘é€ç»™ {subscriber}。', + 'deleteError' => 'æ— æ³•åˆ é™¤è®¢é˜…ã€‚', + 'suspendSuccess' => '订阅已暂åœï¼ 一å°ç”µå邮件已å‘é€ç»™ {subscriber}。', + 'suspendError' => 'æ— æ³•æš‚åœè®¢é˜…。', + 'resumeSuccess' => '订阅已æ¢å¤ï¼ 一å°ç”µå邮件已å‘é€ç»™ {subscriber}。', + 'resumeError' => 'æ— æ³•æ¢å¤è®¢é˜…。', + 'linkSaveSuccess' => '订阅链接ä¿å˜æˆåŠŸï¼ 它将作为å·å¬æ€§ç”¨è¯å‡ºçŽ°åœ¨ç½‘站上ï¼', + 'linkRemoveSuccess' => '订阅链接已æˆåŠŸåˆ 除ï¼', + ], + 'emails' => [ + 'greeting' => '嘿,', + 'token' => 'ä½ çš„ä»¤ç‰Œ: {0}', + 'unique_feed_link' => 'ä½ å”¯ä¸€çš„æºé“¾æŽ¥ï¼š{0}', + 'how_to_use' => '如何使用?', + 'two_ways' => 'ä½ æœ‰ä¸¤ç§è§£é”高级剧集的方法:', + 'import_into_app' => 'åœ¨ä½ æœ€å–œæ¬¢çš„æ’客应用程åºä¸å¤åˆ¶ä½ å”¯ä¸€çš„æº URL(将其作为ç§äººæºå¯¼å…¥ä»¥é˜²æ¢æš´éœ²ä½ çš„å‡æ®ï¼‰ã€‚', + 'go_to_website' => '访问 {podcastWebsite} çš„ç½‘ç«™å¹¶ä½¿ç”¨ä½ çš„ä»¤ç‰Œè§£é”æ’客。', + 'welcome_subject' => '欢迎æ¥åˆ° {podcastTitle}', + 'welcome' => 'ä½ å·²è®¢é˜… {podcastTitle}ï¼Œè°¢è°¢ï¼Œæ¬¢è¿ŽåŠ å…¥ï¼', + 'welcome_token_title' => 'è¿™æ˜¯ä½ è§£é”æ’客高级剧集的å‡æ®ï¼š', + 'welcome_expires' => 'ä½ çš„è®¢é˜…å·²è®¾ç½®ä¸ºåœ¨ {0} 到期。', + 'welcome_never_expires' => 'ä½ çš„è®¢é˜…è®¾ç½®ä¸ºæ°¸ä¸è¿‡æœŸã€‚', + 'reset_subject' => 'ä½ çš„ä»¤ç‰Œå·²é‡ç½®ï¼', + 'reset_token' => 'ä½ å¯¹ {podcastTitle} 的访问æƒé™å·²é‡ç½®ï¼', + 'reset_token_title' => 'å·²ä¸ºä½ ç”Ÿæˆè§£é”æ’客高级剧集的新å‡æ®ï¼š', + 'edited_subject' => 'ä½ çš„è®¢é˜…å·²æ›´æ–°ï¼', + 'edited_expires' => 'ä½ å¯¹ {podcastTitle} 的订阅已设置为在 {expiresAt} 到期。', + 'edited_never_expires' => 'ä½ å¯¹ {podcastTitle} 的订阅设置为永ä¸è¿‡æœŸï¼', + 'suspended_subject' => 'ä½ çš„è®¢é˜…å·²è¢«æš‚åœï¼', + 'suspended' => 'ä½ çš„ {podcastTitle} 订阅已暂åœï¼ ä½ å·²æ— æ³•å†è®¿é—®æ’客的高级剧集。', + 'suspended_reason' => 'åŽŸå› å¦‚ä¸‹ï¼š{0}', + 'resumed_subject' => 'ä½ çš„è®¢é˜…å·²æ¢å¤ï¼', + 'resumed' => 'ä½ å¯¹ {podcastTitle} 的订阅已æ¢å¤ï¼ ä½ å¯ä»¥å†æ¬¡è®¿é—®æ’客的高级剧集。', + 'deleted_subject' => 'ä½ çš„è®¢é˜…å·²è¢«åˆ é™¤ï¼', + 'deleted' => 'ä½ å¯¹ {podcastTitle} çš„è®¢é˜…å·²è¢«åˆ é™¤ï¼ ä½ æ— æ³•å†è®¿é—®æ’客的高级剧集。', + 'footer' => '{castopod} 托管在 {host}', + ], +]; -- GitLab