diff --git a/app/Language/it/Comment.php b/app/Language/it/Comment.php index 1dd8f5ea..11ef4c50 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 1258afcc..249364d3 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 ebe39336..c9e96445 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 32f54c07..0ede22c0 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 1518239b..7b2569be 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 7cd60669..a0109c85 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 9b1e749a..eafcec6e 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 58d1cf80..cb9a6b62 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 91675172..dac8517e 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 86670d19..d89daccb 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 eb31d5d4..7b967d92 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 f888627c..86a47cfd 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.
diff --git a/docs/src/ca/index.md b/docs/src/ca/index.md index d9f48807..a2df1fd6 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 d9f94b6f..12297884 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 bde5278c..e18571fe 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 f1e75bcc..2fb21b1b 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 bbce9643..d3fd3b03 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.
diff --git a/docs/src/es/index.md b/docs/src/es/index.md index b077ddb7..7475549b 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 d9f59c09..f3e19c3e 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.
diff --git a/docs/src/fr/index.md b/docs/src/fr/index.md index a596d878..73e2a1ae 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 c78d9b25..234e051f 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 fc838a24..fe65ac10 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 de7ace6e..38881ecd 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 117a78e4..41c0a4a2 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 2b2b0a1f..6152ea69 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 2a35a8bb..ededc582 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 1a366f4e..3d73187d 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 86670d19..d89daccb 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 962401a4..9e9135a7 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 6c94a84d..9a4ead83 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 的发行版,由免费和 开源软件包组成。 它可以为你解决自托管的困难。
diff --git a/docs/src/zh-Hans/index.md b/docs/src/zh-Hans/index.md index 4dc24090..20a0b1a0 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 10bde7d7..0156d943 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 01124e7e..99eed5ba 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 644f3a03..bcd6f9dd 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 04ee9a93..ad114d10 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 6cce90a1..6cd61799 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 8702d4ce..c2eb298a 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 800e6459..56e1c93d 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 0de9f71b..0ecaa7fb 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 56c57578..5c3842ca 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 10c855bf..4929034f 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 797e1817..9fa7362a 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 5be116ab..ed05a8d7 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 df8a8e3f..71772510 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 39bf30ad..e2e57dfb 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 9ce4f305..a0ba0476 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 f8368649..2bf0fc70 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 eaa881fd..d20fd716 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 cbc1e109..8cff53a1 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 ba35a47d..088887f3 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 f08af7a6..9484c30e 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 cad9d1b4..38b8ec92 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 8dee5476..53c6ea41 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 f851435b..a0f061b4 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 fe47d6e8..621ca94e 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 48040395..4cb492e8 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 33abd9b6..c10b2374 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 6e1a4091..8bbe1733 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 0094dada..245ee615 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 24bece01..f3269bfa 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 12672727..375caa16 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 238c868b..dbdf875c 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 73ac9e86..41255ff2 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 ddce3a31..86a1bf52 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 dfc917a8..e6b0f547 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 24bece01..f3269bfa 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 60f9326f..7aa07fba 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 71c87d04..9e2da4b4 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 fa9d797d..80e9d971 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 02b21072..676e47b7 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 24bece01..9876ee9b 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 4b33530e..383d7bf8 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 596c8bcd..bff79dff 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 d0f3b93d..ab685c04 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 4cd5d9c8..185d3c37 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 ba0922f5..6cb572a3 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 a7183ac1..a5c08f43 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 2fa67126..60845744 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 aed6277a..d59e34ef 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 c98495f0..12a3672a 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 803a56e6..f18cefc2 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 cf628d0e..d62080ae 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 2ef7b6c9..6d9f6641 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 24bece01..f3269bfa 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 0030fb60..d472ef10 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 f82ccfda..ee45c805 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 2b6ed3f5..5aa92ff8 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 38b73ffb..7f3327f1 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 308012ae..09bcfde0 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 42c5e23c..028fb11c 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 cd15c64b..b89d4401 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 e0815d50..c7e30aa3 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 2214743c..91e41655 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 23147fee..84146001 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 24bece01..f3269bfa 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 d0ad26ac..33432cfd 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 34a69e4a..3c742281 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 93730ec0..a731c0e2 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 5585a766..5e65da72 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 24bece01..f3269bfa 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 ba0922f5..91313a7c 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 19a022b5..426b763b 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 b6195731..b4d7ddc0 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 345976be..4a70dcba 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 b41de54f..80105ec3 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 c6a3f2d0..7a8f335a 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 7e231b81..1a145c20 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 ba11a317..75564b13 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 8c7768ce..10875b1e 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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ar/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/ar/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/br/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/br/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ca/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/ca/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/de/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/de/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/el/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/el/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/es/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/es/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/fa/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/fa/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/fr/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/fr/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/gd/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/gd/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/gl/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/gl/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/id/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/id/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/it/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/it/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/nl/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/nl/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/nn-NO/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/nn-NO/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/oc/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/oc/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pl/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/pl/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt-BR/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt-BR/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/pt/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/ru/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/ru/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/sk/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/sk/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..18c0dd4e --- /dev/null +++ b/modules/PremiumPodcasts/Language/sv/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '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 00000000..f8af256f --- /dev/null +++ b/modules/PremiumPodcasts/Language/sv/Subscription.php @@ -0,0 +1,100 @@ + '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 00000000..8723a611 --- /dev/null +++ b/modules/PremiumPodcasts/Language/zh-Hans/PremiumPodcasts.php @@ -0,0 +1,34 @@ + '播客包含优质剧集', + '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 00000000..ceaeb7df --- /dev/null +++ b/modules/PremiumPodcasts/Language/zh-Hans/Subscription.php @@ -0,0 +1,100 @@ + '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}', + ], +];