chore(i18n): new Crowdin updates

This commit is contained in:
crowdin 2023-11-29 17:27:10 +00:00 committed by Yassine Doghri
commit 34a2ebfd65
422 changed files with 6740 additions and 1506 deletions

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'كافة حلقات البودكاست',
'back_to_podcast' => 'العودة إلى البودكاست',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'أشخاص',
'castopod_website' => 'Castopod (website)',
];

View file

@ -39,4 +39,16 @@ return [
}',
'all_podcast_episodes' => 'Holl rannoù ar podkast',
'back_to_podcast' => 'Mont d\'ar podkast en-dro',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -131,4 +131,5 @@ return [
82 {# zen}
}',
'persons_list' => 'Emellerien·ezed',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Tots els episodis del podcast',
'back_to_podcast' => 'Tornar al podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persones}
}',
'persons_list' => 'Persones',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Alle podcastepisoder',
'back_to_podcast' => 'Tilbage til podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# personer}
}',
'persons_list' => 'Personer',
'castopod_website' => 'Castopod (website)',
];

View file

@ -12,22 +12,34 @@ return [
'season' => 'Staffel {seasonNumber}',
'season_abbr' => 'S{seasonNumber}',
'number' => 'Folge {episodeNumber}',
'number_abbr' => 'F {episodeNumber}',
'season_episode' => 'Staffel {seasonNumber} Folge {episodeNumber}',
'number_abbr' => 'E {episodeNumber}',
'season_episode' => 'Staffel {seasonNumber} Episode {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}F{episodeNumber}',
'persons' => '{personsCount, plural,
one {# Mitwirkender}
other {# Mitwirkende}
}',
'persons_list' => 'Mitwirkende',
'back_to_episodes' => 'Zurück zu den Folgen von {podcast}',
'back_to_episodes' => 'Zurück zu Episoden von {podcast}',
'comments' => 'Kommentare',
'activity' => 'Aktivitäten',
'description' => 'Beschreibung der Folge',
'description' => 'Beschreibung der Episode',
'number_of_comments' => '{numberOfComments, plural,
one {# Kommentar}
other {# Kommentare}
}',
'all_podcast_episodes' => 'Alle Podcast-Folgen',
'back_to_podcast' => 'Zurück zum Podcast',
'preview' => [
'title' => 'Vorschau',
'not_published' => 'Nicht veröffentlicht',
'text' => '{publication_status, select,
published {Diese Episode ist noch nicht veröffentlicht.}
scheduled {Diese Episode ist für die Veröffentlichung geplant am {publication_date}.}
with_podcast {Diese Episode wird zur gleichen Zeit wie der Podcast veröffentlicht.}
other {Diese Episode ist noch nicht veröffentlicht.}
}',
'publish' => 'Veröffentlichen',
'publish_edit' => 'Veröffentlichung bearbeiten',
],
];

View file

@ -11,12 +11,12 @@ declare(strict_types=1);
return [
'feed' => 'RSS-Feed',
'season' => 'Staffel {seasonNumber}',
'list_of_episodes_year' => '({episodeCount}) Folgen in {year}',
'list_of_episodes_year' => '({episodeCount}) Episoden in {year}',
'list_of_episodes_season' =>
'Staffel {seasonNumber} Folgen ({episodeCount})',
'no_episode' => 'Keine Folge gefunden',
'Staffel {seasonNumber} Episode ({episodeCount})',
'no_episode' => 'Keine Episode gefunden!',
'follow' => 'Folgen',
'followTitle' => 'Folge {actorDisplayName} im Fediversum',
'followTitle' => 'Folge {actorDisplayName} im Fediversum!',
'followers' => '{numberOfFollowers, plural,
one {# Follower}
other {# Follower}
@ -28,7 +28,7 @@ return [
'links' => 'Links',
'activity' => 'Aktivitäten',
'episodes' => 'Episoden',
'episodes_title' => 'Folgen von {podcastTitle}',
'episodes_title' => 'Episoden von {podcastTitle}',
'about' => 'Über',
'stats' => [
'title' => 'Statistiken',
@ -51,4 +51,5 @@ return [
other {# Personen}
}',
'persons_list' => 'Mitwirkende',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Όλα τα επεισόδια του podcast',
'back_to_podcast' => 'Μετάβαση πίσω στο podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# άτομα}
}',
'persons_list' => 'Άτομα',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Todos los episodios del podcast',
'back_to_podcast' => 'Regresar al podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Sin publicar',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# personas}
}',
'persons_list' => 'Personas',
'castopod_website' => 'Castopod (website)',
];

View file

@ -28,4 +28,16 @@ return [
}',
'all_podcast_episodes' => 'تمامی قسمت‌های پادکست',
'back_to_podcast' => 'بازگشت به پادکست',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -46,4 +46,5 @@ return [
other {# نفر}
}',
'persons_list' => 'نفر',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'back_to_podcast' => 'Revenir au podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# intervenant·e·s}
}',
'persons_list' => 'Intervenant·e·s',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'back_to_podcast' => 'Revenir au podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# intervenants}
}',
'persons_list' => 'Intervenants',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -34,4 +34,16 @@ return [
}',
'all_podcast_episodes' => 'A h-uile eapasod a phod-chraolaidh',
'back_to_podcast' => 'Air ais dhan phod-chraoladh',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -61,4 +61,5 @@ return [
other {# duine}
}',
'persons_list' => 'Daoine',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Tódolos episodios do podcast',
'back_to_podcast' => 'Volver ao podcast',
'preview' => [
'title' => 'Vista previa',
'not_published' => 'Sen publicar',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publicar',
'publish_edit' => 'Editar publicación',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persoas}
}',
'persons_list' => 'Persoas',
'castopod_website' => 'Castopod (website)',
];

View file

@ -28,4 +28,16 @@ return [
}',
'all_podcast_episodes' => 'Semua episode siniar',
'back_to_podcast' => 'Kembali ke siniar',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -46,4 +46,5 @@ return [
other {# orang}
}',
'persons_list' => 'Orang',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Tutti gli episodi del podcast',
'back_to_podcast' => 'Torna a podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persone',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -0,0 +1,34 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'title' => "{actorDisplayName}'s comment for {episodeTitle}",
'back_to_comments' => 'Back to comments',
'form' => [
'episode_message_placeholder' => 'Write a comment…',
'reply_to_placeholder' => 'Reply to @{actorUsername}',
'submit' => 'Send',
'submit_reply' => 'Reply',
],
'likes' => '{numberOfLikes, plural,
one {# like}
other {# likes}
}',
'replies' => '{numberOfReplies, plural,
one {# reply}
other {# replies}
}',
'like' => 'Like',
'reply' => 'Reply',
'view_replies' => 'View replies ({numberOfReplies})',
'block_actor' => 'Block user @{actorUsername}',
'block_domain' => 'Block domain @{actorDomain}',
'delete' => 'Delete comment',
];

View file

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'yes' => 'Yes',
'no' => 'No',
'cancel' => 'Cancel',
'optional' => 'Optional',
'close' => 'Close',
'home' => 'Home',
'explicit' => 'Explicit',
'powered_by' => 'Powered by {castopod}',
'go_back' => 'Go back',
'play_episode_button' => [
'play' => 'Play',
'playing' => 'Playing',
],
'read_more' => 'Read more',
'read_less' => 'Read less',
'see_more' => 'See more',
'see_less' => 'See less',
'legal_notice' => 'Legal notice',
];

View file

@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'season' => 'Season {seasonNumber}',
'season_abbr' => 'S{seasonNumber}',
'number' => 'Episode {episodeNumber}',
'number_abbr' => 'Ep. {episodeNumber}',
'season_episode' => 'Season {seasonNumber} episode {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',
'number_of_comments' => '{numberOfComments, plural,
one {# comment}
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
/**
* @copyright 2021 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'your_handle' => 'Your handle',
'your_handle_hint' => 'Enter the @username@domain you want to act from.',
'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',
],
'favourite' => [
'title' => "Favourite {actorDisplayName}'s post",
'subtitle' => 'You are going to favourite:',
'submit' => 'Proceed to favourite',
],
'reblog' => [
'title' => "Share {actorDisplayName}'s post",
'subtitle' => 'You are going to share:',
'submit' => 'Proceed to share',
],
'reply' => [
'title' => "Reply to {actorDisplayName}'s post",
'subtitle' => 'You are going to reply to:',
'submit' => 'Proceed to reply',
],
];

20
app/Language/kk/Home.php Normal file
View file

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'all_podcasts' => 'All podcasts',
'sort_by' => 'Sort by',
'sort_options' => [
'activity' => 'Recent activity',
'created_desc' => 'Newest first',
'created_asc' => 'Oldest first',
],
'no_podcast' => 'No podcast found',
];

17
app/Language/kk/Page.php Normal file
View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'back_to_home' => 'Back to 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.',
],
];

View file

@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'feed' => 'RSS Podcast feed',
'season' => 'Season {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})',
'list_of_episodes_season' =>
'Season {seasonNumber} episodes ({episodeCount})',
'no_episode' => 'No episode found!',
'follow' => 'Follow',
'followTitle' => 'Follow {actorDisplayName} on the fediverse!',
'followers' => '{numberOfFollowers, plural,
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# post}
other {# posts}
}',
'links' => 'Links',
'activity' => 'Activity',
'episodes' => 'Episodes',
'episodes_title' => 'Episodes of {podcastTitle}',
'about' => 'About',
'stats' => [
'title' => 'Stats',
'number_of_seasons' => '{0, plural,
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# episode}
other {# episodes}
}',
'first_published_at' => 'First episode published on {0, date, medium}',
],
'sponsor' => 'Sponsor',
'funding_links' => 'Funding links for {podcastTitle}',
'find_on' => 'Find {podcastTitle} on',
'listen_on' => 'Listen on',
'persons' => '{personsCount, plural,
one {# person}
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

40
app/Language/kk/Post.php Normal file
View file

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'title' => "{actorDisplayName}'s post",
'back_to_actor_posts' => 'Back to {actor} posts',
'actor_shared' => '{actor} shared',
'reply_to' => 'Reply to @{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',
],
'favourites' => '{numberOfFavourites, plural,
one {# favourite}
other {# favourites}
}',
'reblogs' => '{numberOfReblogs, plural,
one {# share}
other {# shares}
}',
'replies' => '{numberOfReplies, plural,
one {# reply}
other {# replies}
}',
'expand' => 'Expand post',
'block_actor' => 'Block user @{actorUsername}',
'block_domain' => 'Block domain @{actorDomain}',
'delete' => 'Delete post',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Alle podcast afleveringen',
'back_to_podcast' => 'Terug naar podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# personen}
}',
'persons_list' => 'Personen',
'castopod_website' => 'Castopod (website)',
];

View file

@ -51,4 +51,5 @@ return [
other {# personar}
}',
'persons_list' => 'Personar',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -32,4 +32,16 @@ return [
}',
'all_podcast_episodes' => 'Wszystkie odcinki podcastu',
'back_to_podcast' => 'Wróć do podkastu',
'preview' => [
'title' => 'Podgląd',
'not_published' => 'Nieopublikowany',
'text' => '{publication_status, select,
published {Ten odcinek nie jest jeszcze opublikowany.}
scheduled {Ten odcinek jest zaplanowany do publikacji {publication_date}.}
with_podcast {Ten odcinek zostanie opublikowany w tym samym czasie co podcast.}
other {Ten odcinek nie jest jeszcze opublikowany.}
}',
'publish' => 'Opublikuj',
'publish_edit' => 'Edytuj publikację',
],
];

View file

@ -28,7 +28,7 @@ return [
other {# osób}
}',
'links' => 'Links',
'activity' => 'Aktywność',
'activity' => 'Wpisy',
'episodes' => 'Odcinki',
'episodes_title' => 'Odcinki {podcastTitle}',
'about' => 'Informacje',
@ -56,4 +56,5 @@ return [
other {# osób}
}',
'persons_list' => 'Osoby',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Todos os episódios de podcast',
'back_to_podcast' => 'Voltar para o podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# pessoas}
}',
'persons_list' => 'Pessoas',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -32,4 +32,16 @@ return [
}',
'all_podcast_episodes' => 'Toate episoadele podcastului',
'back_to_podcast' => 'Înapoi la podcast',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -56,4 +56,5 @@ return [
other {# persoane}
}',
'persons_list' => 'Persoane',
'castopod_website' => 'Castopod (website)',
];

View file

@ -34,4 +34,16 @@ return [
}',
'all_podcast_episodes' => 'Все выпуски подкаста',
'back_to_podcast' => 'Вернуться к подкасту',
'preview' => [
'title' => 'Предпросмотр',
'not_published' => 'Не опубликовано',
'text' => '{publication_status, select,
published {Этот эпизод еще не опубликован.}
scheduled {Этот эпизод запланирован на {publication_date}.}
with_podcast {Этот эпизод будет опубликован одновременно с подкастом.}
other {Этот эпизод еще не опубликован.}
}',
'publish' => 'Опубликовать',
'publish_edit' => 'Редактировать публикацию',
],
];

View file

@ -53,4 +53,5 @@ return [
other {# человек}
}',
'persons_list' => 'Лица',
'castopod_website' => 'Castopod (website)',
];

View file

@ -34,4 +34,16 @@ return [
}',
'all_podcast_episodes' => 'Všetky epizódy podcastu',
'back_to_podcast' => 'Späť na podcast',
'preview' => [
'title' => 'Náhľad',
'not_published' => 'Nezverejnená',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Zverejniť',
'publish_edit' => 'Edit publication',
],
];

View file

@ -29,7 +29,7 @@ return [
many {# príspevkov}
other {# príspevkov}
}',
'links' => 'Links',
'links' => 'Odkazy',
'activity' => 'Aktivita',
'episodes' => 'Časti',
'episodes_title' => 'Časti {podcastTitle}',
@ -61,4 +61,5 @@ return [
other {# osobností}
}',
'persons_list' => 'Osobnosti',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Sve epizode podkasta',
'back_to_podcast' => 'Nazad na podkast',
'preview' => [
'title' => 'Pregled',
'not_published' => 'Neobjavljeno',
'text' => '{publication_status, select,
published {Ova epizoda još uvek nije objavljena.}
scheduled {Ova epizoda je zakazana za {publication_date}.}
with_podcast {Ova epizoda će biti objavljena kad i podkast.}
other {Ova epizoda još uvek nije objavljena.}
}',
'publish' => 'Objavi',
'publish_edit' => 'Uredi objavu',
],
];

View file

@ -9,7 +9,7 @@ declare(strict_types=1);
*/
return [
'your_handle' => 'Your handle',
'your_handle' => 'Tvoj nadimak',
'your_handle_hint' => 'Unesite @username@domain koji želite da koristite.',
'follow' => [
'label' => 'Prati',

View file

@ -25,7 +25,7 @@ return [
few {# objave}
other {# objava}
}',
'links' => 'Links',
'links' => 'Linkovi',
'activity' => 'Aktivnost',
'episodes' => 'Epizode',
'episodes_title' => 'Epizode {podcastTitle}',
@ -51,4 +51,5 @@ return [
other {# osobe}
}',
'persons_list' => 'Ličnosti',
'castopod_website' => 'Castopod (veb stranica)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => 'Alla podcast avsnitt',
'back_to_podcast' => 'Gå tillbaka till podcasten',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# personer}
}',
'persons_list' => 'Personer',
'castopod_website' => 'Castopod (website)',
];

View file

@ -18,10 +18,10 @@ return [
'submit_reply' => 'Відповісти',
],
'likes' => '{numberOfLikes, plural,
one {# лайк}
few {# подобається}
many {# подобається}
other {# подобається}
one {# вподобайка}
few {# вподобань}
many {# вподобань}
other {# вподобань}
}',
'replies' => '{numberOfReplies, plural,
one {# коментар}

View file

@ -34,4 +34,16 @@ return [
}',
'all_podcast_episodes' => 'Всі серії подкастів',
'back_to_podcast' => 'Повернутися до подкасту',
'preview' => [
'title' => 'Переглянути',
'not_published' => 'Не опубліковано',
'text' => '{publication_status, select,
published {Цей епізод ще не опублікований.}
scheduled {Цей епізод запланований на публікацію {publication_date}.}
with_podcast {Цей епізод буде опублікований одночасно з подкастом.}
other {Цей епізод ще не опублікований.}
}',
'publish' => 'Опублікувати',
'publish_edit' => 'Редагувати публікацію',
],
];

View file

@ -9,12 +9,12 @@ declare(strict_types=1);
*/
return [
'all_podcasts' => 'All podcasts',
'sort_by' => 'Sort by',
'all_podcasts' => 'Усі подкасти',
'sort_by' => 'Сортувати за',
'sort_options' => [
'activity' => 'Recent activity',
'created_desc' => 'Newest first',
'created_asc' => 'Oldest first',
'activity' => 'Попередня активність',
'created_desc' => 'Спочатку нові',
'created_asc' => 'Спочатку старі',
],
'no_podcast' => 'No podcast found',
'no_podcast' => 'Подкастів не знайдено',
];

View file

@ -9,9 +9,9 @@ declare(strict_types=1);
*/
return [
'back_to_home' => 'Back to home',
'back_to_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' => 'Мапа',
'description' => 'Відкрийте для себе епізоди подкастів на {siteName}, які розміщуються на карті! Подорожуйте по карті та прослуховуйте епізоди, що розповідають про конкретні місця.',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
];

View file

@ -30,4 +30,16 @@ return [
}',
'all_podcast_episodes' => '所有播客剧集',
'back_to_podcast' => '返回播客',
'preview' => [
'title' => 'Preview',
'not_published' => 'Not published',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
],
];

View file

@ -51,4 +51,5 @@ return [
other {# 人}
}',
'persons_list' => '人',
'castopod_website' => 'Castopod (website)',
];

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -20,15 +20,15 @@ Si preferiu utilitzar Docker, podeu ometre això i anar directament a la
## Requisits
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL versió 5.7 o superior o MariaDB versió 10.2 o superior
- Support d'HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -126,6 +126,23 @@ manually based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -1,5 +1,5 @@
---
title: Official Docker images
title: Offizielle Docker Images
sidebarDepth: 3
---
@ -112,7 +112,7 @@ kann als Cache-Handler hinzugefügt werden.
## Umgebungsvariablen
- **castopod/castopod** and **castopod/app**
- **castopod/castopod** und **castopod/app**
| Variablennamen | Typ (`Standard`) | Standardwert |
| ------------------------------------- | ----------------------- | ----------------- |

View file

@ -20,15 +20,16 @@ direkt zur [Docker-Dokumentation](./docker.md) für Castopod gehen.
## Voraussetzungen
- PHP v8.1 only
- PHP v8.1 oder höher
- MySQL Version 5.7 oder höher oder MariaDB Version 10.2 oder höher
- HTTPS-Unterstützung
- Eine [ntp-synchronisierte Uhr](https://wiki.debian.org/NTP) um die eingehenden
Anfragen zu überprüfen
### PHP v8.1 only
### PHP v8.1 oder höher
PHP version 8.1 is required, with the following extensions installed:
PHP Version 8.1 oder höher ist erforderlich, mit folgenden Erweiterungen
installiert:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -85,54 +86,72 @@ nicht installiert: %s:
### Voraussetzungen
0. Get a Web Server with [requirements](#requirements) installed
1. Create a MySQL database for Castopod with a user having access and
modification privileges (for more info, see
[MySQL compatible database](#mysql-compatible-database)).
2. Activate HTTPS on your domain with an _SSL certificate_.
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
the web server if you havent already.
- ⚠️ Set the web server document root to the `public/` sub-folder within the
`castopod` folder.
4. Add **cron tasks** on your web server for various background processes
(replace the paths accordingly):
0. Treib einen Webserver mit den [Voraussetzungen](#requirements) auf
1. Erstellen Sie eine MySQL-Datenbank für Castopod mit einem Benutzer mit
Zugriffsrechten und Modifikationsberechtigungen (für weitere Infos, Siehe
[MySQL kompatible Datenbank](#mysql-compatible-database)).
2. Aktivieren Sie HTTPS auf Ihrer Domain mit einem _SSL Zertifikat_.
3. Lade und entpacke das letzte [Castopod Packet](https://castopod.org/) auf den
Webserver, wenn nicht schon geschehen.
- ⚠️ Setzte das Webserver Document root auf das `public/` Unterverzeichnis
innerhalb des `castopod` Ordners.
4. Füge **cron tasks** auf deinem Webserver hinzu für verschiedene
Hintergrundprozesse (ersetze die Pfade entsprechend):
```bash
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
```
**Note** - If you do not add this cron task, the following Castopod features
will not work:
**Hinweis** - Wenn Sie diese Cron-Aufgabe nicht hinzufügen, funktionieren die
folgenden Castopod-Funktionen nicht:
- Importing a podcast from an existing RSS feed
- Broadcasting social activities to your followers in the fediverse
- Broadcasting episodes to open hubs using
[WebSub](https://en.wikipedia.org/wiki/WebSub)
- Generating video clips -
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
- Einen Podcast aus einem vorhandenen RSS-Feed importieren
- Sende soziale Aktivitäten an deine Follower im Fediversum
- Übertragungen von Episoden zu open hubs mit
[WebSub-](https://en.wikipedia.org/wiki/WebSub)
- Generieren von Videoclips -
[benötigt FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
### (recommended) Install Wizard
### (empfohlen) Installations-Assistent
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Start podcasting!
1. Führen Sie das Castopod Installationsskript aus, indem Sie auf die
Installations-Seite (`https://your_domain_name.com/cp-install`) in Ihrem
bevorzugten Webbrowser gehen.
2. Folge der Anleitung auf dem Bildschirm.
3. Podcasting starten!
::: 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 edit the `.env` file manually
based on the `.env.example` file.
Das Installationsskript schreibt eine `.env` Datei im Paket-Root. Wenn Sie nicht
durch den Installations-Assistenten kommen, können Sie die `.env` Datei manuell
erstellen und bearbeiten basierend auf der `.env.example` Datei.
:::
### Email/SMTP setup
### Using CLI
Email configuration is required for some features to work properly (eg.
retrieving your forgotten password, sending instructions to premium subscribers,
…)
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
You may add your email configuration in your instance's `.env` like so:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP Setup
E-Mail-Konfiguration ist erforderlich, damit einige Funktionen ordnungsgemäß
funktionieren (zB. das Abrufen Ihres vergessenen Passworts, das Senden von
Anweisungen an Premium-Abonnenten, …)
Sie können Ihre E-Mail-Konfiguration in `.env` Ihrer Instanz einfügen:
```ini
# […]
@ -145,23 +164,23 @@ email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### Email config options
#### E-Mail-Konfigurationsoptionen
| 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"` |
| Variablennamen | Typ | Voreinstellung |
| ---------------- | -------------------- | -------------- |
| **`fromEmail`** | string | `undefined` |
| **`fromName`** | string | `"Castopod"` |
| **`SMTPHost`** | string | `undefined` |
| **`SMTPUser`** | string | `undefined` |
| **`SMTPPass`** | string | `undefined` |
| **`SMTPPort`** | number | `25` |
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
### Media storage
By default, files are saved to the `public/media` folder using the file system.
If you need to relocate the `media` folder to a different location, you can
specify it in your `.env` file as shown below:
Standardmäßig werden Dateien im Ordner `public/media` über das Dateisystem
gespeichert. Wenn Sie den Ordner `media` an einen anderen Ort verlegen müssen,
können Sie es in Ihrer `.env` Datei angeben wie unten gezeigt:
```ini
# […]
@ -170,13 +189,14 @@ media.root="media"
media.storage="/mnt/storage"
```
In this example, the files will be saved to the /mnt/storage/media folder. Make
sure to also update your web server configuration to reflect this change.
In diesem Beispiel werden die Dateien im Ordner /mnt/storage/media gespeichert.
Stellen Sie sicher, dass Sie auch Ihre Webserver-Konfiguration aktualisieren, um
diese Änderung wiederzugeben.
### S3
If you prefer storing your media files on an S3 compatible storage, you may
specify it in your `.env`:
Wenn Sie Ihre Mediendateien lieber auf einem S3-kompatiblen Speicher speichern
möchten, können Sie dies in Ihrer `.env` spezifizieren:
```ini
# […]
@ -188,34 +208,34 @@ media.s3.secret="your_s3_secret"
media.s3.region="your_s3_region"
```
#### S3 config options
#### S3 Konfigurationsoptionen
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |
| **`secret`** | string | `undefined` |
| **`region`** | string | `undefined` |
| **`bucket`** | string | `castopod` |
| **`protocol`** | number | `undefined` |
| **`pathStyleEndpoint`** | boolean | `false` |
| **`keyPrefix`** | string | `undefined` |
| Variablennamen | Typ | Voreinstellung |
| ----------------------- | ------- | -------------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |
| **`secret`** | string | `undefined` |
| **`region`** | string | `undefined` |
| **`bucket`** | string | `castopod` |
| **`protocol`** | number | `undefined` |
| **`pathStyleEndpoint`** | boolean | `false` |
| **`keyPrefix`** | string | `undefined` |
## Community packages
## Community-Pakete
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.
Wenn Sie Castopod nicht manuell installieren wollen, können Sie eines der von
der Open-Source-Community erstellten und betreuten Pakete verwenden.
### Install with YunoHost
### Installieren mit 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
self-hosting for you.
[YunoHost](https://yunohost.org/) ist eine auf Debian GNU/Linux basierende
Distribution, die aus freien und Open-Source-Software-Paketen besteht. Es
kümmert sich um den Aufwand von self-hosting für dich.
<div class="flex flex-wrap items-center gap-4">
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Installiere Castopod mit YunoHost" class="align-middle" />
</a>
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg

View file

@ -22,23 +22,24 @@ mit einem sehr kleinen Fußabdruck.
- 🌱 Kostenlos & Open-Source (AGPL v3 Lizenz)
- 🔐 &nbsp;Fokussiert auf die Datensouveränität: Ihre Inhalte, Ihr Publikum und
Analysen gehören zu Ihnen, und&nbsp;nur Ihnen&nbsp;
- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
- 💬 &nbsp;Built-in social network:
- 🚀 &nbsp;Castopod is part of the Fediverse, a decentralized social network
- ❤️ &nbsp;Create posts, share, favourite, and comment on episodes
- 📈 &nbsp;Built-in analytics:
- ⚖️ &nbsp;GDPR / CCPA / LGPD compliant
- 🪙 &nbsp;Standard IABv2 audience measurement
- 🏡 &nbsp;On-premises analytics, no third party involved
- 📢 &nbsp;Built-in marketing tools:
- ✅ &nbsp;SEO ready (open-graph meta-tags, JSON-LD, …)
- 📱 &nbsp;PWA: install as a standalone app
- 🎨 &nbsp;Customizable theme colors
- 🎬 &nbsp;Generate ready-to-share Video clips from episodes
- 🔉 &nbsp;Generate soundbites
- ▶️ &nbsp;Embeddable player, embed your episodes on any website
- 💸 &nbsp;Monetization:
- 🪄 &nbsp;Podcasting 2.0 Features: GUID, gesperrt, Transkripte, Finanzierung,
Kapitel, Standort, Personen, Soundbites, …
- 💬 &nbsp;Integriertes soziales Netzwerk:
- 🚀 &nbsp;Castopod ist Teil des Fediversums, einem dezentralen sozialen
Netzwerk
- ❤️ &nbsp;Erstelle Beiträge, teile, favorisiere und kommentiere Episoden
- 📈 &nbsp;Integrierte Analyse:
- ⚖️ &nbsp;GDPR / CCPA / LGPD konform
- 🪙 &nbsp;Standard IABv2 Zuschauermessung
- 🏡 &nbsp;On-premises Analytik, kein Dritter beteiligt
- 📢 &nbsp;Integrierte Marketing-Tools:
- ✅ &nbsp;SEO bereit (open-graph Meta-Tags, JSON-LD, …)
- 📱 &nbsp;PWA: als eigenständige App installieren
- 🎨 &nbsp;Anpassbare Theme-Farben
- 🎬 &nbsp;Generiere Videoclips aus Episoden fertig zum Teilen
- 🔉 &nbsp;Soundbites erstellen
- ▶️ &nbsp;Embeddable Player, binde deine Episoden auf jeder Webseite ein
- 💸 &nbsp;Monetarisierung:
- 🔗 &nbsp;Funding links
- 📲 &nbsp;listen-to-click ads
- 🤝 &nbsp;value4value / WebMonetization

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -20,15 +20,15 @@ Si prefieres usar Docker, puedes saltarte esto e ir directamente a la
## Requisitos
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior
- Soporte HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -126,6 +126,23 @@ manually based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Configuración de Correo Electrónico/SMTP
La configuración del correo electrónico es necesaria para que algunas

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -8,12 +8,12 @@ sidebarDepth: 3
Castopod envoie 3 images Docker au Hub Docker pendant son processus de
construction automatisée :
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
in one castopod image using nginx unit
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
with all of Castopod dependencies
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
Nginx configuration for Castopod
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): une
image castopod tout-en-un sous nginx unit
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): le paquet
d'applications avec toutes les dépendances de Castopod
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): une
configuration Nginx pour Castopod
De plus, Castopod nécessite une base de données compatible avec MySQL. Une base
de données Redis peut être ajoutée en tant que gestionnaire de cache.
@ -32,31 +32,31 @@ de données Redis peut être ajoutée en tant que gestionnaire de cache.
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
```yml
version: "3.7"
version: "3.
services:
services :
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
environnement:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_BASEURL: "https://castopod. xample. om"
CP_ANALYTICS_SALT : changer
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
networks:
réseaux :
- castopod-app
- castopod-db
ports:
ports :
- 8000:8000
restart: unless-stopped
redémarrage :
mariadb:
image: mariadb:10.5
image: mariadb:10.
container_name: "castopod-mariadb"
networks:
- castopod-db
@ -66,15 +66,15 @@ de données Redis peut être ajoutée en tant que gestionnaire de cache.
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
MYSQL_PASSWORD: changez
restart: unless-stopped
redis:
image: redis:7.0-alpine
image: redis:redis:7. -alpine
container_name: "castopod-redis"
volumes:
- castopod-cache:/data
networks:
réseaux:
- castopod-app
volumes:

View file

@ -20,15 +20,15 @@ directement à la [documentation Docker](./docker.md) pour Castopod.
## Prérequis
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure
- Prise en charge HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://www.php.net/manual/fr/intl.requirements.php)
- [libcurl](https://www.php.net/manual/fr/curl.requirements.php)
@ -128,6 +128,23 @@ le fichier `.env` manuellement en vous appuyant sur le fichier `.env.example`.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -0,0 +1,87 @@
---
title: Authentication & Authorization
sidebarDepth: 3
---
# Authentication & Authorization
Castopod handles authentication and authorization using `codeigniter/shield`
coupled with custom rules. Roles and permissions are defined at two levels:
1. [instance wide](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions
### Instance roles
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
### Instance permissions
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. |
| admin.settings | Can access the Castopod settings. |
| users.manage | Can manage Castopod users. |
| persons.manage | Can manage persons. |
| pages.manage | Can manage pages. |
| podcasts.view | Can view all podcasts. |
| podcasts.create | Can create new podcasts. |
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
## 2. Per podcast roles and permissions
### Per podcast roles
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #{id}. | \* |
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
<!-- AUTH-PODCAST-ROLES-LIST:END -->
### Per podcast permissions
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ---------------------------- | ------------------------------------------------------------------------ |
| view | Can view dashboard and analytics of podcast #{id}. |
| edit | Can edit podcast #{id}. |
| delete | Can delete podcast #{id}. |
| manage-import | Can synchronize imported podcast #{id}. |
| manage-persons | Can manage subscriptions of podcast #{id}. |
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
| manage-contributors | Can manage contributors of podcast #{id}. |
| manage-platforms | Can set/remove platform links of podcast #{id}. |
| manage-publications | Can publish podcast #{id}. |
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
| episodes.create | Can create episodes for podcast #{id}. |
| episodes.edit | Can edit podcast #{id}. |
| episodes.delete | Can delete podcast #{id}. |
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
| episodes.manage-publications | Can publish podcast #{id}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->

View file

@ -0,0 +1,158 @@
---
title: Official Docker images
sidebarDepth: 3
---
# Official Docker images
Castopod pushes 3 Docker images to the Docker Hub during its automated build
process:
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
in one castopod image using nginx unit
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
with all of Castopod dependencies
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
Nginx configuration for Castopod
Additionally, Castopod requires a MySQL-compatible database. A Redis database
can be added as a cache handler.
## Supported tags
- `develop` [unstable], latest development branch build
- `beta` [stable], latest beta version build
- `latest` [stable], latest version build
- `1.x.x` [stable], specific version build (since `1.0.0`)
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
```yml
version: "3.7"
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
volumes:
- castopod-cache:/data
networks:
- castopod-app
volumes:
castopod-media:
castopod-db:
castopod-cache:
networks:
castopod-app:
castopod-db:
```
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
3. Setup a reverse proxy for TLS (SSL/HTTPS)
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables
- **castopod/castopod** and **castopod/app**
| 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"` |
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
- **castopod/web-server**
| Variable name | Type | Default |
| ---------------------- | --------------------- | ------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |

View file

@ -0,0 +1,238 @@
---
title: Installation
sidebarDepth: 3
---
# How to install Castopod?
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
::: tip Note
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
:::
## Requirements
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 or higher
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
**PNG** and **WEBP** libraries.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Additionally, make sure that the following extensions are enabled in your PHP:
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### MySQL compatible database
> We recommend using [MariaDB](https://mariadb.org).
::: warning Warning
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
will break with the previous MySQL v5.6 for example as its end of life was on
February 5, 2021.
:::
You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
#### Privileges
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
`REFERENCES`, `CREATE VIEW`.
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
want to generate Video Clips. The following extensions must be installed:
- **FreeType 2** library for
[gd](https://www.php.net/manual/en/image.installation.php).
### (Optional) Other recommendations
- Redis for better cache performances.
- CDN for static files caching and better performances.
- e-mail gateway for lost passwords.
## Install instructions
### Pre-requisites
0. Get a Web Server with [requirements](#requirements) installed
1. Create a MySQL database for Castopod with a user having access and
modification privileges (for more info, see
[MySQL compatible database](#mysql-compatible-database)).
2. Activate HTTPS on your domain with an _SSL certificate_.
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
the web server if you havent already.
- ⚠️ Set the web server document root to the `public/` sub-folder within the
`castopod` folder.
4. Add **cron tasks** on your web server for various background processes
(replace the paths accordingly):
```bash
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
```
**Note** - If you do not add this cron task, the following Castopod features
will not work:
- Importing a podcast from an existing RSS feed
- Broadcasting social activities to your followers in the fediverse
- Broadcasting episodes to open hubs using
[WebSub](https://en.wikipedia.org/wiki/WebSub)
- Generating video clips -
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
### (recommended) Install Wizard
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Start podcasting!
::: 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 edit the `.env` file manually
based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### 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"` |
### Media storage
By default, files are saved to the `public/media` folder using the file system.
If you need to relocate the `media` folder to a different location, you can
specify it in your `.env` file as shown below:
```ini
# […]
media.root="media"
media.storage="/mnt/storage"
```
In this example, the files will be saved to the /mnt/storage/media folder. Make
sure to also update your web server configuration to reflect this change.
### S3
If you prefer storing your media files on an S3 compatible storage, you may
specify it in your `.env`:
```ini
# […]
media.fileManager="s3"
media.s3.endpoint="your_s3_host"
media.s3.key="your_s3_key"
media.s3.secret="your_s3_secret"
media.s3.region="your_s3_region"
```
#### S3 config options
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |
| **`secret`** | string | `undefined` |
| **`region`** | string | `undefined` |
| **`bucket`** | string | `castopod` |
| **`protocol`** | number | `undefined` |
| **`pathStyleEndpoint`** | boolean | `false` |
| **`keyPrefix`** | string | `undefined` |
## Community packages
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.
### 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
self-hosting for you.
<div class="flex flex-wrap items-center gap-4">
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
</a>
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
Repo</a>
</div>

View file

@ -0,0 +1,26 @@
---
title: Security
---
# Security concerns
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
framework that encourages
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
To maximize your instance's safety and prevent any malicious attack, we
recommend you update all your Castopod files permissions after installation or
updates (to avoid any prior permission error):
- `writable/` folder must be **readable** and **writable**.
- `public/media/` folder must be **readable** and **writable**.
- any other file must be set to **readonly**.
For instance, if you are using Apache or NGINX with Ubuntu you may do the
following:
```bash
sudo chown -R root:root /path/to/castopod
sudo chown -R www-data:www-data /path/to/castopod/writable
sudo chown -R www-data:www-data /path/to/castopod/public/media
```

View file

@ -0,0 +1,109 @@
---
title: Update
sidebarDepth: 3
---
# How to update Castopod?
After installing Castopod, you may want to update your instance to the latest
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
improvements ⚡.
## Update instructions
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
database.
- cf.
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
1. Go to the
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
see if your instance is up to date with the latest Castopod version
- cf.
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
2. Download the latest release package named `Castopod Package`, you may choose
between the `zip` or `tar.gz` archives
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
- Note that you can also download the latest package from
[castopod.org](https://castopod.org/)
3. On your server:
- Remove all files except `.env` and `public/media`
- Copy the new files from the downloaded package into your server
::: info Note
You may need to reset files permissions as during the install process.
Check [Security Concerns](./security.md).
:::
4. Update your database schema from your `Castopod Admin` > `About` page or by
running:
```bash
php spark castopod:database-update
```
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
::: info Note
Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
- cf.
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
:::
## Fully Automated updates
> Coming soon... 👀
## Frequently asked questions (FAQ)
### Where can I find my Castopod version?
Go to your Castopod admin panel, the version is displayed on the bottom left
corner.
Alternatively, you can find the version in the `app > Config > Constants.php`
file.
### I haven't updated my instance in a long time… What should I do?
No problem! Just get the latest release as described above. Only, when going
through the release instructions (4), perform them sequentially, from the oldest
to the newest.
> You may want to backup your instance depending on how long you haven't updated
> Castopod.
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
`v1.0.0-beta.1`:
0. (highly recommended) Make a backup of your files and database.
1. Download the latest release, overwrite your files whilst keeping `.env` and
`public/media`.
2. Go through each release update instructions sequentially (from oldest to
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Enjoy your fresh instance, you're all done!
### Should I make a backup before updating?
We advise you do, so you don't lose everything if anything goes wrong!
More generally, we advise you make regular backups of your Castopod files and
database to prevent you from losing it all…

299
docs/src/kk/index.md Normal file
View file

@ -0,0 +1,299 @@
---
sidebarDepth: 2
---
# Welcome 👋
[![release-badge]][release]&nbsp;[![license-badge]][license]&nbsp;[![contributions-badge]][contributions]&nbsp;[![semantic-release-badge]][semantic-release]&nbsp;[![crowdin-badge]][crowdin]&nbsp;[![discord-badge]][discord]&nbsp;[![stars-badge]][stars]
Castopod is a free & open-source hosting platform made for podcasters who want
engage and interact with their audience.
Castopod is easy to install and was built on top of
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
small footprint.
<div class="flex items-center">
<a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Install<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a>
</div>
## Features
- 🌱 &nbsp;Free & open-source (AGPL v3 License)
- 🔐 &nbsp;Focused on data sovereignty: your content, audience, and analytics
belong to you, and&nbsp;you&nbsp;only
- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
- 💬 &nbsp;Built-in social network:
- 🚀 &nbsp;Castopod is part of the Fediverse, a decentralized social network
- ❤️ &nbsp;Create posts, share, favourite, and comment on episodes
- 📈 &nbsp;Built-in analytics:
- ⚖️ &nbsp;GDPR / CCPA / LGPD compliant
- 🪙 &nbsp;Standard IABv2 audience measurement
- 🏡 &nbsp;On-premises analytics, no third party involved
- 📢 &nbsp;Built-in marketing tools:
- ✅ &nbsp;SEO ready (open-graph meta-tags, JSON-LD, …)
- 📱 &nbsp;PWA: install as a standalone app
- 🎨 &nbsp;Customizable theme colors
- 🎬 &nbsp;Generate ready-to-share Video clips from episodes
- 🔉 &nbsp;Generate soundbites
- ▶️ &nbsp;Embeddable player, embed your episodes on any website
- 💸 &nbsp;Monetization:
- 🔗 &nbsp;Funding links
- 📲 &nbsp;listen-to-click ads
- 🤝 &nbsp;value4value / WebMonetization
- 💎 &nbsp;Premium podcasts
- 📡 &nbsp;Publish your episodes everywhere with RSS:
- 📱 &nbsp;On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
- ⚡ &nbsp;Broadcast your episodes instantly with WebSub
- 📥 &nbsp;Podcast import: move your existing podcast into Castopod
- 📤 &nbsp;Move your podcast out of Castopod
- 🔀 &nbsp;Multi-tenant: host as many podcasts as you want
- 👥 &nbsp;Multi-user: add contributors and set roles
- 🌎 &nbsp;i18n support: translated in English, French, Polish, German,
Brazilian Portuguese & Spanish… with
[more to come](https://translate.castopod.org)!
## Motivation
The podcasting ecosystem is decentralized by nature: you can create your podcast
as an RSS file, publish it on the web and have it shared everywhere online.
It is in fact one of the only media to have stayed this way for a long time.
As usages are evolving, more and more people are getting into podcasts: whether
it is creators finding new ways to share their ideas, or listeners in the search
for better content.
With podcasting becoming more widely used, some companies are trying to shift it
towards a more controlled and centralized medium.
Castopod was created in an effort to provide an open and sustainable alternative
to hosting your podcasts, promoting decentralization to ensure that podcasters
creativity can express itself.
This project is pushed by the open-source community, and specifically by the
[Fediverse](https://fediverse.party/en/fediverse/) and
[Podcasting 2.0](https://podcastindex.org/) movements.
## Comparison with other solutions
We believe that a solution is not necessarily right for everyone, it highly
depends on your needs. So, here are comparisons with other tools to help you to
gauge whether Castopod is the right fit for&nbsp;you.
### Castopod vs Wordpress
Castopod is often referred to as "the Wordpress for podcasts" because of the
similarities between the two. In some ways this is true. And actually, Castopod
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
from the community and the number of websites running&nbsp;it.
Just like Wordpress, Castopod is free & open source, built using PHP with a
MySQL database and is packaged in a way that you can easily install on most web
servers.
Wordpress is a great way to create your website and extend it with plugins to
get what you want. It is a full fledged CMS that helps you get any type of
website online.
On the other hand, Castopod is meant to address the podcasters needs
specifically, focusing on podcasting, and nothing else. You don't need any
plugin to get you started on your podcasting&nbsp;journey.
This allows optimizing the processes specific to podcasting: ranging from the
creation of your podcasts and the publication of new episodes all the way to
broadcasting, marketing and analytics.
Finally, depending on your needs, Wordpress and Castopod can even live side by
side as they share the same requirements!
### Castopod vs Funkwhale
Funkwhale is a self-hosted, modern free and open-source music server. Just as
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
interoperability between the two.
Funkwhale was initially built around music. And later on, as the project
evolved, the ability to host podcasts was introduced.
Unlike Funkwhale, Castopod has been designed and built around podcasting
exclusively. This allows easier implementation for features related to the
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
chapters, locations, persons, …).
So, you should probably use Funkwhale if you want to host your music, and use
Castopod if you want to host your podcasts.
### Castopod vs other podcast hosts
There are many solutions for you to host your podcasts, some of which are really
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
Podcasting 2.0 wagon just like Castopod!
Each of these solutions differ from one another, you may compare with the
[list of features](#features).
That being said, there are two main differences with other podcasting solutions:
- Castopod can be self-hosted and is the only solution that allows you to keep
full control over what you produce. Also, as it is open-source, you can even
customize it as you wish.
- Castopod is the only solution that currently integrates both a decentralized
social network with ActivityPub as well as many of the podcasting 2.0
features, hoping to bridge the gap between the two.
## Contributing
Love Castopod and would like to help? Take a look at the following documentation
to get you&nbsp;started.
### Code of conduct
Castopod has adopted a Code of Conduct that we expect project participants to
adhere to. Please read the
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be&nbsp;tolerated.
### Contributing guide
Read our [contributing guide](./contributing/guidelines.md) to learn about our
development process, how to propose bugfixes and improvements, and how to build
and test your changes to Castopod.
## Contributors ✨
Thanks goes to these wonderful people
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-yassinedoghri" title="Maintenance">🚧</a> <a href="#content-yassinedoghri" title="Content">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Accessibility">️️️️♿️</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-yassinedoghri" title="Answering Questions">💬</a> <a href="#mentoring-yassinedoghri" title="Mentoring">🧑‍🏫</a> <a href="#infra-yassinedoghri" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-yassinedoghri" title="Project Management">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/benjamin"><img src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100" width="100px;" alt="Benjamin Bellamy"/><br /><sub><b>Benjamin Bellamy</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin" title="Reviewed Pull Requests">👀</a> <a href="#content-benjamin" title="Content">🖋</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-benjamin" title="Answering Questions">💬</a> <a href="#infra-benjamin" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.castopod.org/author/benjamin-bellamy/" title="Blogposts">📝</a> <a href="#projectManagement-benjamin" title="Project Management">📆</a> <a href="#talk-benjamin" title="Talks">📢</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ola Hneini"/><br /><sub><b>Ola Hneini</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola" title="Reviewed Pull Requests">👀</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="#maintenance-ola" title="Maintenance">🚧</a> <a href="#question-ola" title="Answering Questions">💬</a> <a href="#ideas-ola" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="#infra-rdelaage" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Bug reports">🐛</a> <a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Bug reports">🐛</a> <a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Bug reports">🐛</a> <a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the
[all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind welcome!
## Contact
You may reach us for help or ask any question you have on:
- [Discord](https://castopod.org/discord) (for direct interaction with
developers and the community)
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
feature requests & bug reports)
Alternatively, you can follow us on social media platforms to get news about
Castopod:
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
- [Twitter](https://twitter.com/castopod)
- [LinkedIn](https://linkedin.com/company/castopod)
- [Facebook](https://www.facebook.com/castopod)
## Sponsors
The ongoing development of Castopod is made possible with the support of its
backers. If you'd like to help, please consider
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
<div class="flex flex-wrap gap-x-16 gap-y-8">
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Ad Aures Logo" class="h-16" /></a>
<a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="NLnet Logo" class="h-16" /></a>
</div>
## License
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
https://img.shields.io/github/license/ad-aures/castopod?color=blue
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
https://img.shields.io/github/stars/ad-aures/castopod?style=social
[release]: https://code.castopod.org/adaures/castopod/-/releases
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
[semantic-release]: https://github.com/semantic-release/semantic-release
[discord]: https://castopod.org/discord
[stars]: https://github.com/ad-aures/castopod/stargazers
[crowdin]: https://translate.castopod.org/project/castopod

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -1,87 +1,87 @@
---
title: Authentication & Authorization
title: Godkjenning & Autorisasjon
sidebarDepth: 3
---
# Authentication & Authorization
# Godkjenning & Autorisasjon
Castopod handles authentication and authorization using `codeigniter/shield`
coupled with custom rules. Roles and permissions are defined at two levels:
Castopod tek seg av godkjenning og autorisasjon med `codeigniter/shield` saman
med nokre eigne reglar. Roller og løyve er definerte på to nivå:
1. [instance wide](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions)
1. [for heile nettstaden](#1-instance-wide-roles-and-permissions)
2. [for kvar podkast](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions
## 1. Roller og løyve for heile nettstaden
### Instance roles
### Roller på nettstaden
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
| rolle | skildring | løyve |
| ----------- | -------------------------------- | ------------------------------------------------------------------------------------------ |
| Superstyrar | Har full kontroll over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Leiar | Styrer innhaldet på Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podkastar | Vanlege Castopod-brukarar. | admin.tilgang |
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
### Instance permissions
### Løyve på nettstaden
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. |
| admin.settings | Can access the Castopod settings. |
| users.manage | Can manage Castopod users. |
| persons.manage | Can manage persons. |
| pages.manage | Can manage pages. |
| podcasts.view | Can view all podcasts. |
| podcasts.create | Can create new podcasts. |
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
| løyve | skildring |
| ----------------------- | ---------------------------------------------------------------------- |
| admin.access | Kan bruka styringspanelet for Castopod. |
| admin.settings | Kan få tilgang til innstillingane for Castopod. |
| users.manage | Kan handtera Castopod-brukarar. |
| persons.manage | Kan handtera folk. |
| pages.manage | Kan handtera sider. |
| podcasts.view | Kan sjå alle podkastane. |
| podcasts.create | Kan laga nye podkastar. |
| podcasts.import | Kan importera podkastar. |
| fediverse.manage-blocks | Kan blokkera folk og domene på allheimen frå å samhandla med Castopod. |
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
## 2. Per podcast roles and permissions
## 2. Roller og løyve pr. podkast
### Per podcast roles
### Roller pr. podkast
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #{id}. | \* |
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
| rolle | skildring | løyve |
| ------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Administrator | Har full kontroll over podkasten #{id}. | \* |
| Redaktør | Styrer innhald og publisering for podkasten #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Skapar | Styrer innhald for podkasten #{id}, men kan ikkje publisera dei. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Gjest | Vanleg bidragsytar til podkasten #{id}. | view, episodes.view |
<!-- AUTH-PODCAST-ROLES-LIST:END -->
### Per podcast permissions
### Løyve pr. podkast
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ---------------------------- | ------------------------------------------------------------------------ |
| view | Can view dashboard and analytics of podcast #{id}. |
| edit | Can edit podcast #{id}. |
| delete | Can delete podcast #{id}. |
| manage-import | Can synchronize imported podcast #{id}. |
| manage-persons | Can manage subscriptions of podcast #{id}. |
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
| manage-contributors | Can manage contributors of podcast #{id}. |
| manage-platforms | Can set/remove platform links of podcast #{id}. |
| manage-publications | Can publish podcast #{id}. |
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
| episodes.create | Can create episodes for podcast #{id}. |
| episodes.edit | Can edit podcast #{id}. |
| episodes.delete | Can delete podcast #{id}. |
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
| episodes.manage-publications | Can publish podcast #{id}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
| løyve | description |
| ---------------------------- | ------------------------------------------------------------------ |
| view | Kan sjå styringspanelet og analysedata for podkasten #{id}. |
| edit | Kan redigera podkasten #{id}. |
| delete | Kan sletta podkasten #{id}. |
| manage-import | Kan synkronisera den importerte podkasten #{id}. |
| manage-persons | Kan handtera abonnement for podkasten #{id}. |
| manage-subscriptions | Kan handtera abonnement for podkasten #{id}. |
| manage-contributors | Kan handtera bidragsytarar for podkasten #{id}. |
| manage-platforms | Kan oppretta og fjerna plattformlenkjer for podkasten #{id}. |
| manage-publications | Kan publisera podkasten #{id}. |
| manage-notifications | Kan lesa og merka varsel som lesne for podkasten #{id}. |
| interact-as | Kan merka podkasten #{id} som favoritt, dela og svara på innlegg. |
| episodes.view | Kan sjå styringspanelet og analysedata for podkasten #{id}. |
| episodes.create | Kan laga epoisodar for podkasten #{id}. |
| episodes.edit | Kan redigera podkasten #{id}. |
| episodes.delete | Kan sletta podkasten #{id}. |
| episodes.manage-persons | Kan handtera abonnement for podkasten #{id}. |
| episodes.manage-clips | Kan handtera film- og lydklypp av podkasten #{id}. |
| episodes.manage-publications | Kan publisera podkasten #{id}. |
| episodes.manage-comments | Kan skriva og sletta kommentarar til episodane av podkasten #{id}. |
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->

View file

@ -112,48 +112,48 @@ Redis-database for å handtera mellomlagring.
- **castopod/castopod** og **castopod/app**
| Variabelnamn | Type (`standard`) | Standardval |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | streng | `udefinert` |
| **`CP_MEDIA_BASEURL`** | ?streng | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?streng | `"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"` eller `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolsk | `udefinert` |
| **`CP_MEDIA_FILE_MANAGER`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_KEY`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_SECRET`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_REGION`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_BUCKET`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?tal | `udefinert` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolsk | `udefinert` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?streng | `udefinert` |
| **`CP_DISABLE_HTTPS`** | ?[`0` eller `1`] | `udefinert` |
| **`CP_MAX_BODY_SIZE`** | ?tal (med suffiks) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?tal (med suffiks) | `512M` |
| **`CP_TIMEOUT`** | ?tal | `900` |
| Variabelnamn | Type (`standard`) | Standardval |
| ------------------------------------- | -------------------------- | ---------------- |
| **`CP_BASEURL`** | streng | `udefinert` |
| **`CP_MEDIA_BASEURL`** | ?streng | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?streng | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?streng | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | streng | `udefinert` |
| **`CP_DATABASE_HOSTNAME`** | ?streng | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?streng | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?streng | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?streng | `MYSQL_PASSORD` |
| **`CP_DATABASE_PREFIX`** | ?streng | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` eller `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?streng | `"localhost"` |
| **`CP_REDIS_PASSORD`** | ?streng | `tom` |
| **`CP_REDIS_PORT`** | ?tal | `6379` |
| **`CP_REDIS_DATABASE`** | ?tal | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?streng | `udefinert` |
| **`CP_EMAIL_FROM`** | ?streng | `udefinert` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?streng | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?streng | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?tal | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` eller `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolsk | `udefinert` |
| **`CP_MEDIA_FILE_MANAGER`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_KEY`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_SECRET`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_REGION`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_BUCKET`** | ?streng | `udefinert` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?tal | `udefinert` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolsk | `udefinert` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?streng | `udefinert` |
| **`CP_DISABLE_HTTPS`** | ?[`0` eller `1`] | `udefinert` |
| **`CP_MAX_BODY_SIZE`** | ?tal (med suffiks) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?tal (med suffiks) | `512M` |
| **`CP_TIMEOUT`** | ?tal | `900` |
- **castopod/web-server**
| Variabelnamn | Type | Standardval |
| ---------------------- | --------------------- | ----------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
| Variabelnamn | Type | Standardval |
| ---------------------- | ------------------ | ----------- |
| **`CP_APP_HOSTNAME`** | ?streng | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?tal (med suffiks) | `512M` |
| **`CP_TIMEOUT`** | ?tal | `900` |

View file

@ -20,15 +20,15 @@ Viss du helst vil bruka Docker, kan du hoppa over dette og gå rett til
## Krav
- Berre PHP v8.1
- PHP v8.1 eller nyare
- MySQL versjon 5.7 eller nyare, eller MariaDB versjon 10.2 eller nyare
- Støtte for HTTPS
- Ei [ntp-synkronisert klokke](https://wiki.debian.org/NTP) for å stadfesta
innkomande førespurnader frå allheimen
### Berre PHP v8.1
### PHP v8.1 eller nyare
PHP versjon 8.1 med desse utvidingane krevst:
Du treng PHP versjon 8.1 eller nyare, og mde desse tillegga:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -124,6 +124,23 @@ manuelt basert på `.env.example`-fila.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Epost/SMTP-oppsett
Epostoppsett er naudsynt for at nokre av funksjonane skal verka skikkeleg (td.

View file

@ -182,67 +182,67 @@ Mange takk til dei flotte folka på
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Feilrapportar">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Dokumentasjon">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Sjekka fletteførespurnader">👀</a> <a href="#maintenance-yassinedoghri" title="Vedlikehald">🚧</a> <a href="#content-yassinedoghri" title="Innhald">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Tilgjenge">️️️️♿️</a> <a href="https://translate.castopod.org" title="Omsetjing">🌍</a> <a href="#question-yassinedoghri" title="Svara på spørsmål">💬</a> <a href="#mentoring-yassinedoghri" title="Opplæring">🧑‍🏫</a> <a href="#infra-yassinedoghri" title="Infrastruktur (nettvertar, bygging osb.)">🚇</a> <a href="#ideas-yassinedoghri" title="Idear, planlegging og tilbakemeldingar">🤔</a> <a href="#projectManagement-yassinedoghri" title="Prosjektstyring">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogginnlegg">📝</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/benjamin"><img src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100" width="100px;" alt="Benjamin Bellamy"/><br /><sub><b>Benjamin Bellamy</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin" title="Feilrapportar">🐛</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin" title="Såg gjennom bidrag">👀</a> <a href="#content-benjamin" title="Innhald">🖋</a> <a href="https://translate.castopod.org" title="Omsetjing">🌍</a> <a href="#question-benjamin" title="Answering Questions">💬</a> <a href="#infra-benjamin" title="Infrastruktur (nettvertar, byggjeverkty osb.)">🚇</a> <a href="#ideas-benjamin" title="Idear, planlegging og tilbakemeldingar">🤔</a> <a href="https://blog.castopod.org/author/benjamin-bellamy/" title="Blogginnlegg">📝</a> <a href="#projectManagement-benjamin" title="Prosjektstyring">📆</a> <a href="#talk-benjamin" title="Føredrag">📢</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ola Hneini"/><br /><sub><b>Ola Hneini</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola" title="Sett gjennom bidrag">👀</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Dokumentasjon">📖</a> <a href="#maintenance-ola" title="Vedlikehald">🚧</a> <a href="#question-ola" title="Svara på spørsmål">💬</a> <a href="#ideas-ola" title="Idear, planlegging og tilbakemelding">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="#infra-rdelaage" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a> <a href="#infra-rdelaage" title="Infrastruktur (vertskap, byggjeverkty osb.)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Dokumentasjon">📖</a> <a href="https://translate.castopod.org" title="Omsetjing">🌍</a> <a href="#ideas-rdelaage" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Feilrapportar">🐛</a> <a href="#question-Lyonel" title="Svar på spørsmål">💬</a> <a href="#audio-Lyonel" title="Lyd">🔊</a> <a href="#ideas-Lyonel" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Feilrapportar">🐛</a> <a href="#question-ctlw83" title="Svar på spørsmål">💬</a> <a href="#audio-ctlw83" title="Lyd">🔊</a> <a href="#ideas-ctlw83" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Feilrapportar">🐛</a> <a href="#audio-ernestoacostame" title="Lyd">🔊</a> <a href="https://translate.castopod.org" title="Omsetjingar">🌍</a> <a href="#question-ernestoacostame" title="Svar på spørsmål">💬</a> <a href="#ideas-ernestoacostame" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Feilrapportar">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Utforming">🎨</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjing">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Feilrapportar">🐛</a> <a href="#ideas-mspanc" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Feilrapportar">🐛</a> <a href="#ideas-ddenis" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Bug reports">🐛</a> <a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Bug reports">🐛</a> <a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Feilrapportar">🐛</a> <a href="#ideas-douglaskastle" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Feilrapportar">🐛</a> <a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Feilrapportar">🐛</a> <a href="#ideas-imacrea" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Feilrapportar">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Feilrapportar">🐛</a> <a href="#ideas-spaetz" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Feilrapportar">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Bug reports">🐛</a> <a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Feilrapportar">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Feilrapportar">🐛</a> <a href="#ideas-cyrilledel" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a> <a href="#ideas-otetranome" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a> <a href="#ideas-3wen" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Idear, planlegging og tilbakemeldingar">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Omsetjingar">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Kode">💻</a></td>
</tr>
</tbody>
</table>
@ -252,11 +252,11 @@ Mange takk til dei flotte folka på
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the
[all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind welcome!
Dette prosjektet fylgjer
[all-contributors](https://github.com/all-contributors/all-contributors)-spesifikasjonen.
Me er glade for alle slags bidrag!
## Contact
## Kontakt
Du kan spørja om hjelp eller kva som helst andre spørsmål på:

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -20,15 +20,15 @@ Se você prefere usar o Docker, você pode pular isso e ir direto para a
## Requisitos
- Somente PHP v8.1
- PHP v8.1 or higher
- MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior
- Suporte a HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### Somento PHP v8.1
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -126,6 +126,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -1,87 +1,87 @@
---
title: Authentication & Authorization
title: Verifikacija i Odobravanje
sidebarDepth: 3
---
# Authentication & Authorization
# Verifikacija i Odobravanje
Castopod handles authentication and authorization using `codeigniter/shield`
coupled with custom rules. Roles and permissions are defined at two levels:
Castopod upravlja verifikacijom i odobravanjem koristeći `codeigniter/shield` u
paru sa prilagođenim pravilima. Uloge i dozvole su definisane na dva nivoa:
1. [instance wide](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions)
1. [po nalogu](#1-instance-wide-roles-and-permissions)
2. [po podkastu](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions
## 1. Uloge i dozvole po nalogu
### Instance roles
### Uloge po nalogu
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
| uloga | opis | dozvola |
| ------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Super administrator | Ima kompletnu kontrolu nad Castopod nalogom. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Menadžer | Upravlja sadržajem na Castopod-u. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podkaster | Opšti korisnici Castopod-a. | admin.access |
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
### Instance permissions
### Dozvole po nalogu
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. |
| admin.settings | Can access the Castopod settings. |
| users.manage | Can manage Castopod users. |
| persons.manage | Can manage persons. |
| pages.manage | Can manage pages. |
| podcasts.view | Can view all podcasts. |
| podcasts.create | Can create new podcasts. |
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
| dozvola | opis |
| ----------------------- | --------------------------------------------------------------- |
| admin.access | Može pristupiti administratorskom delu Castopod-a. |
| admin.settings | Može pristupiti podešavanjima Castopod-a. |
| users.manage | Može upravljati korisnicima Castopod-a. |
| persons.manage | Može upravljati osobama. |
| pages.manage | Može upravljati stranicama. |
| podcasts.view | Može videti sve podkaste. |
| podcasts.create | Može napraviti nove podkaste. |
| podcasts.import | Može uvesti nove podkaste. |
| fediverse.manage-blocks | Može blokirati interakciju Castopoda i fediverse naloga/domena. |
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
## 2. Per podcast roles and permissions
## 2. Uloge i dozvole po podkastu
### Per podcast roles
### Uloge po podkastu
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions |
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #{id}. | \* |
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
| uloga | opis | dozvola |
| ------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Administrator | Ima kompletnu kontrolu nad podkastom #{id}. | \* |
| Urednik | Upravlja sadržajem i objavama podkasta #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Autor | Upravlja sadržajem podkasta #{id} ali ne može da ga objavi. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Gost | Saradnik na podkastu #{id}. | view, episodes.view |
<!-- AUTH-PODCAST-ROLES-LIST:END -->
### Per podcast permissions
### Dozvole po podkastu
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description |
| ---------------------------- | ------------------------------------------------------------------------ |
| view | Can view dashboard and analytics of podcast #{id}. |
| edit | Can edit podcast #{id}. |
| delete | Can delete podcast #{id}. |
| manage-import | Can synchronize imported podcast #{id}. |
| manage-persons | Can manage subscriptions of podcast #{id}. |
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
| manage-contributors | Can manage contributors of podcast #{id}. |
| manage-platforms | Can set/remove platform links of podcast #{id}. |
| manage-publications | Can publish podcast #{id}. |
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
| episodes.create | Can create episodes for podcast #{id}. |
| episodes.edit | Can edit podcast #{id}. |
| episodes.delete | Can delete podcast #{id}. |
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
| episodes.manage-publications | Can publish podcast #{id}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
| dozvola | opis |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| view | Može videti upravljačku tablu i analitiku podkasta #{id}. |
| edit | Može uređivati podkast #{id}. |
| delete | Može obrisati podkast #{id}. |
| manage-import | Može upravljati uvozom podkasta #{id}. |
| manage-persons | Može upravljati osobama na podkastu #{id}. |
| manage-subscriptions | Može upravljati pretplatama na podkast #{id}. |
| manage-contributors | Može upravljati saradnicima na podkastu #{id}. |
| manage-platforms | Može ubaciti/izbaciti veze ka platformama podkasta #{id}. |
| manage-publications | Može objaviti podkast #{id}. |
| manage-notifications | Može videti obaveštenja i označiti ih kao pročitana za podkast #{id}. |
| interact-as | Može da komunicira kao podkast #{id} i deli, odgovara na i stavlja u omiljene postove. |
| episodes.view | Može videti upravljačku tablu i analitiku podkasta #{id}. |
| episodes.create | Može napraviti epizodu podkasta #{id}. |
| episodes.edit | Može uređivati epizodu podkasta #{id}. |
| episodes.delete | Može obrisati epizodu podkasta #{id}. |
| episodes.manage-persons | Može upravljati pretplatama na podkast #{id}. |
| episodes.manage-clips | Može upravljati video klipovima i zvučnim isečcima podkasta #{id}. |
| episodes.manage-publications | Može objaviti podkast #{id}. |
| episodes.manage-comments | Može dodati/obrisati komentar na epizodi podkasta #{id}. |
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->

View file

@ -1,56 +1,57 @@
---
title: Installation
title: Instalacija
sidebarDepth: 3
---
# How to install Castopod?
# Kako Instalirati Castopod?
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
Zamišljeno je da Castopod bude jednostavan za instalaciju. Bilo da se koristi
namenski ili deljeni hosting, možete ga instalirati na većinu PHP-MySQL
kompatibilnih veb servera.
::: tip Note
::: savet Napomena
We've released official Docker images for Castopod!
Objavili smo zvanične Docker slike za Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
Ako više volite da koristite Docker, možete ovo preskočiti i preći direktno na
[docker dokumentaciju](./docker.md) za Castopod.
:::
## Requirements
## Uslovi
- PHP v8.1 only
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
- PHP v8.1 ili novija verzija
- MySQL verzija 5.7 ili novija ili MariaDB verzija 10.2 ili novija
- HTTPS podrška
- [ntp-sinhronizovani sat](https://viki.debian.org/NTP) za potvrdu dolaznih
zahteva federacije
### PHP v8.1 only
### PHP v8.1 ili kasnija verzija
PHP version 8.1 is required, with the following extensions installed:
Potrebna je PHP verzija 8.1 ili novija, sa instaliranim sledećim ekstenzijama:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
**PNG** and **WEBP** libraries.
- [gd](https://www.php.net/manual/en/image.installation.php) sa **JPEG**,
**PNG** i **WEBP** bibliotekama.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Additionally, make sure that the following extensions are enabled in your PHP:
Pored toga, uverite se da su sledeće ekstenzije omogućene u vašem PHP-u:
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- json (podrazumevano omogućeno - ne isključujte ga)
- xml (podrazumevano omogućeno - ne isključujte ga)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### MySQL compatible database
### MySQL kompatibilne baze podataka
> We recommend using [MariaDB](https://mariadb.org).
> Preporučujemo korišćenje [MariaDB](https://mariadb.org).
::: warning Warning
::: upozorenje Upozorenje
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
will break with the previous MySQL v5.6 for example as its end of life was on
February 5, 2021.
Castopod radi samo sa podržanim MySQL 5.7 ili novijim kompatibilnim bazama
podataka. Kvari se na MySQL v5.6 na primer, jer je njen životni vek istekao 5.
februara 2021.
:::
@ -123,6 +124,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -20,15 +20,15 @@ Om du föredrar att använda Docker, kan du hoppa över detta och gå direkt til
## Krav
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 eller högre eller MariaDB version 10.2 eller högre
- Stöd för HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -124,6 +124,23 @@ installationsguiden kan du skapa och redigera `. nv` filen manuellt baserat på
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
E-postkonfiguration krävs för att vissa funktioner ska fungera korrekt (t.ex.

View file

@ -19,15 +19,15 @@ If you prefer using Docker, you may skip this and go straight to the
## Requirements
- PHP v8.1 only
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 only
### PHP v8.1 or higher
PHP version 8.1 is required, with the following extensions installed:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -123,6 +123,23 @@ based on the `.env.example` file.
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.

View file

@ -19,14 +19,14 @@ Castopod 的安装非常简单。 你能在大多数兼容的 PHP-MySQL 的服
## 要求
- PHP v8.1
- PHP v8.1 or higher
- MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本
- HTTPS 支持
- 用于验证的 [NTP 同步时钟](https://wiki.debian.org/NTP) 传入请求
### PHP v8.1
### PHP v8.1 or higher
需要 PHP 8.1,并安装以下扩展:
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -113,6 +113,23 @@ Castopod 仅适用于受支持的 MySQL 5.7 或更高版本的兼容数据库。
:::
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
php spark install:init-database
```
3. Create the superadmin user using:
```sh
php spark install:create-superadmin
```
4. Head on to your admin gateway to start podcasting!
### 邮箱/SMTP 设置
某些功能需要电子邮件配置才能正常工作(例如: 找回密码,向高级订阅者发送说明, …)

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'حسابي',
'change-password' => 'تغيير الكلمة السرية',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'منصات',
'social' => 'شبكات التواصل الاجتماعي',
'funding' => 'funding',
'monetization-other' => 'other monetization',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'صفحات ويب',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'إرسال ملف',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'تشغيل',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'كافة حلقات البودكاست',
'back_to_podcast' => 'العودة إلى البودكاست',
'edit' => 'تعديل',
'preview' => 'Preview',
'publish' => 'نشر',
'publish_edit' => 'تعديل المنشور',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'المنصات',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'الانتقال إلى الصفحة',
'latest_episodes' => 'أحدث الحلقات',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'انتقل إلى صفحة البودكاست',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'الرئيسية',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'الحلقات',
'episode-list' => 'جميع الحلقات',
'episode-create' => 'حلقة جديدة',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'المساهمون',
'contributor-list' => 'كل المساهمين',
'contributor-add' => 'إضافة مساهم',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'ma c\'hont',
'change-password' => 'kemmañ ar ger-tremen',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'savennoù',
'social' => 'rouedadoù sokial',
'funding' => 'arc\'hantaouiñ',
'monetization-other' => 'other monetization',
'analytics' => 'muzulioù heklev',
'locations' => 'lec\'hioù',
'webpages' => 'pajennoù web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Uskargit ur restr',
'remote_url' => 'URL a-bell',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Lenn',

View file

@ -23,6 +23,7 @@ return [
'all_podcast_episodes' => 'Holl rannoù ar podkast',
'back_to_podcast' => 'Mont d\'ar podkast en-dro',
'edit' => 'Kemmañ',
'preview' => 'Preview',
'publish' => 'Embann',
'publish_edit' => 'Kemmañ an embannadur',
'publish_date_edit' => 'Edit publication date',
@ -82,13 +83,13 @@ return [
audio {aodio}
other {media}
} ar rann.',
'deleteFileError' => 'C\'hwitadenn war dilemel restr {type, select,
transcript {an treuzskrivadur}
chapters {ar chabistroù}
image {ar golo}
audio {an aodio}
other {ar media}
} ({file_path}). Gallout a rit lemel kuit ar restr-mañ diouzh ar gantenn dre zorn.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Bez ez eus eus ur rann gant ar berradur-mañ (slug) dija.',
],
'form' => [
@ -213,4 +214,14 @@ return [
'light' => 'Sklaer',
'light-transparent' => 'Sklaer treuzwelus',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Savennoù',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Mont da lec\'hienn {platformName}',
'register' => 'Register',
'submit_url' => 'Kasit ho podkast war {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Diskouez e pajenn ar podkast?',
'on_embed' => 'Diskouez el lenner enkorfet?',
'remove' => 'Dilemel {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Dilemel ar podkast',
'see_episodes' => 'Gwelet ar rannoù',
'see_contributors' => 'Gwelet ar berzhidi, ar perzhiadezed',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Gwelet ar bajenn',
'latest_episodes' => 'Rannoù diwezhañ',
'see_all_episodes' => 'Gwelet an holl rannoù',
@ -60,6 +61,8 @@ return [
'form' => [
'identity_section_title' => 'Titouroù diwar-benn ar podkast',
'identity_section_subtitle' => 'Ar maeziennoù a laka ac\'hanoc\'h da vezañ remerket.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Golo ar podkast',
'cover_size_hint' => 'Ar golo a rankfe bezañ ur c\'harrez ha 1400px e vent da nebeutañ.',
'banner' => 'Giton ar podkast',
@ -135,7 +138,6 @@ return [
'partner_id_hint' => 'Hoch ID deoc\'h-c\'hwi e ti ar c\'heveler',
'partner_link_url_hint' => 'Chomlec\'h generek an ereoù gant ar c\'heveler',
'partner_image_url_hint' => 'Chomlec\'h generek ar skeudennoù gant ar c\'heveler',
'status_section_title' => 'Statud',
'block' => 'Ar podkast a rankfe bezañ kuzhet diouzh ar rolladoù publik',
'block_hint' =>
'Diskouez pe kuzhat ar podkast: trec\'haoliñ an afell-mañ a viro ar podkast a-bezh ouzh bezañ diskouezet war Apple Podcasts, Google Podcasts pe savennoù all hag a implij ar renabloù-se. (N\'eus gwarant ebet)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Mont da pajenn ar podkast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Taolenn-stur ar podkast',
'podcast-view' => 'Degemer',
'podcast-edit' => 'Kemmañ ar podkast',
'podcast-persons-manage' => 'Merañ an emellerien·ezed',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Rannoù',
'episode-list' => 'An holl rannoù',
'episode-create' => 'Rann nevez',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Lennerioù',
'podcast-analytics-listening-time' => 'Padelezh ar selaou',
'podcast-analytics-time-periods' => 'Mareoù ar selaou',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Perzhidi, perzhiadezed',
'contributor-list' => 'An holl berzhidi ha perzhiadezed',
'contributor-add' => 'Ouzhpennañ ur perzhiad pe ur berzhiadez',
'platforms' => 'Savennoù diavaez',
'platforms-podcasting' => 'Podkast',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Rouedadoù sokial',
'platforms-funding' => 'Arc\'hantaouiñ',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'el meu compte',
'change-password' => 'canviar la contrasenya',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'plataformes',
'social' => 'xarxes socials',
'funding' => 'financiació',
'monetization-other' => 'other monetization',
'analytics' => 'estadístiques',
'locations' => 'ubicacions',
'webpages' => 'pàgines web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Pujar un fitxer',
'remote_url' => 'URL remota',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Reproduir',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Tots els episodis del podcast',
'back_to_podcast' => 'Tornar al podcast',
'edit' => 'Editar',
'preview' => 'Preview',
'publish' => 'Publicar',
'publish_edit' => 'Editar la publicació',
'publish_date_edit' => 'Edita la data de publicació',
@ -80,13 +81,13 @@ return [
audio {l\'àudio}
other {el material}
} de l\'episodi.',
'deleteFileError' => 'No s\'ha pogut esborrar el fitxer {file_path} {type, select,
transcript {de la transcripció}
chapters {dels episodis}
image {de la portada}
audio {de l\'àudio}
other {del material}
}. Podeu esborrar-los manualment del disc.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Ja existeix un episodi amb aquest àlies.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Clar',
'light-transparent' => 'Clar i transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Plataformes',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Visitar el lloc web de {platformName}',
'register' => 'Register',
'submit_url' => 'Enviar el vostre podcast a {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Mostrar a la pàgina d\'inici del podcast?',
'on_embed' => 'Mostrar al reproductor incrustable?',
'remove' => 'Suprimir {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Suprimir el podcast',
'see_episodes' => 'Veure els episodis',
'see_contributors' => 'Veure els col·laboradors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Anar a la pàgina ',
'latest_episodes' => 'Darrers episodis',
'see_all_episodes' => 'Veure tots els episodis',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Identitat del podcast',
'identity_section_subtitle' => 'Aquests camps permeten fer-se notar.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Portada del podcast',
'cover_size_hint' => 'La portada ha de ser quadrada i com a mínim de 1400 px d\'amplada i alçada.',
'banner' => 'Bàner del podcast',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'El vostre propi ID de soci',
'partner_link_url_hint' => 'L\'adreça genèrica de l\'enllaç del soci',
'partner_image_url_hint' => 'L\'adreça genèrica de la imatge del soci',
'status_section_title' => 'Estat',
'block' => 'El podcast s\'ha d\'amagar als catàlegs públics',
'block_hint' =>
'L\'estat de visibilitat del podcast: activar aquesta opció evita que el podcast aparegui a Apple Podcasts, Google Podcasts i qualsevol aplicació de tercers que extreu programes d\'aquests directoris. (No garantit)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Anar a la pàgina del podcast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Panell de control del podcast',
'podcast-view' => 'Inici',
'podcast-edit' => 'Editar el podcast',
'podcast-persons-manage' => 'Administrar persones',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodis',
'episode-list' => 'Tots els episodis',
'episode-create' => 'Nou episodi',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Reproductors',
'podcast-analytics-listening-time' => 'Temps d\'escolta',
'podcast-analytics-time-periods' => 'Períodes de temps',
'premium' => 'Prèmium',
'monetization' => 'Monetization',
'subscription-list' => 'Totes les subscripcions',
'subscription-create' => 'Afegiu una subscripció',
'contributors' => 'Col·laboradors',
'contributor-list' => 'Tots els col·laboradors',
'contributor-add' => 'Afegir un col·laborador',
'platforms' => 'Plataformes de tercers',
'platforms-podcasting' => 'Podcasts',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Xarxes socials',
'platforms-funding' => 'Financiació',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'min konto',
'change-password' => 'skift adgangskode',
'imports' => 'importer',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'platforme',
'social' => 'sociale netværk',
'funding' => 'finansiering',
'monetization-other' => 'other monetization',
'analytics' => 'analyse',
'locations' => 'lokationer',
'webpages' => 'websider',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Play',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'preview' => 'Preview',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -38,10 +38,12 @@ return [
'users' => 'Benutzer',
'my-account' => 'Mein Konto',
'change-password' => 'Passwort ändern',
'imports' => 'imports',
'imports' => 'Importe',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'Plattformen',
'social' => 'soziale Netzwerke',
'funding' => 'Finanzierung',
'monetization-other' => 'other monetization',
'analytics' => 'Statistiken',
'locations' => 'Orte',
'webpages' => 'Webseiten',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Eine Datei hochladen',
'remote_url' => 'Externe URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Abspielen',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Alle Podcast-Episoden',
'back_to_podcast' => 'Zurück zum Podcast',
'edit' => 'Bearbeiten',
'preview' => 'Vorschau',
'publish' => 'Veröffentllichen',
'publish_edit' => 'Veröffentlichung bearbeiten',
'publish_date_edit' => 'Veröffentlichungsdatum bearbeiten',
@ -86,7 +87,7 @@ return [
image {Cover}
audio {Audio}
other {Medien}
}-Datei {file_path}. Sie können es manuell von der Festplatte entfernen.',
}-Datei {file_key}. Sie können es manuell von der Festplatte entfernen.',
'sameSlugError' => 'Eine Folge mit dem ausgewählten Slug existiert bereits.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Hell',
'light-transparent' => 'Hell (transparent)',
],
'publication_status_banner' => [
'draft_mode' => 'Entwurfsmodus',
'text' => '{publication_status, select,
published {Diese Episode ist noch nicht veröffentlicht.}
scheduled {Diese Episode ist für die Veröffentlichung geplant am {publication_date}.}
with_podcast {Diese Episode wird zur gleichen Zeit wie der Podcast veröffentlicht.}
other {Diese Episode ist noch nicht veröffentlicht.}
}',
'preview' => 'Vorschau',
],
];

View file

@ -17,8 +17,8 @@ return [
'podcasts' => 'Podcasts',
'podcast-list' => 'Alle Podcasts',
'podcast-create' => 'Neuer Podcast',
'all-podcast-imports' => 'All Podcast imports',
'podcast-imports-add' => 'Import a podcast',
'all-podcast-imports' => 'Alle Podcast-Importe',
'podcast-imports-add' => 'Podcast importieren',
'persons' => 'Mitwirkende',
'person-list' => 'Alle Mitwirkenden',
'person-create' => 'Neuer Mitwirkender',

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Plattformen',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Gehe zu {platformName} Webseite',
'register' => 'Register',
'submit_url' => 'Sende deinen Podcast an {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Auf Podcast-Homepage anzeigen?',
'on_embed' => 'Auf einbettbarem Player anzeigen?',
'remove' => 'Entferne {platformName}',

View file

@ -13,7 +13,7 @@ return [
'no_podcast' => 'Kein Podcast gefunden!',
'create' => 'Podcast erstellen',
'import' => 'Podcast importieren',
'all_imports' => 'Podcast imports',
'all_imports' => 'Podcast-Importe',
'new_episode' => 'Neue Folge',
'view' => 'Podcast ansehen',
'edit' => 'Podcast bearbeiten',
@ -22,6 +22,7 @@ return [
'delete' => 'Podcast löschen',
'see_episodes' => 'Episoden ansehen',
'see_contributors' => 'Mitwirkende anzeigen',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Gehe zur Seite',
'latest_episodes' => 'Neueste Folgen',
'see_all_episodes' => 'Alle Folgen anzeigen',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast-Identität',
'identity_section_subtitle' => 'Diese Felder erlauben es dir, Aufmerksamkeit zu bekommen.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast-Cover',
'cover_size_hint' => 'Das Cover muss quadratisch und mindestens 1400px breit und hoch sein.',
'banner' => 'Podcast-Banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Ihre eigene Partner-ID',
'partner_link_url_hint' => 'Die generische Partnerlink-Adresse',
'partner_image_url_hint' => 'Die generische Partnerbild-Adresse',
'status_section_title' => 'Status',
'block' => 'Podcast soll vor öffentlichen Katalogen versteckt werden',
'block_hint' =>
'Der Podcast zeigt oder versteckt den Status: Beim Einschalten dieser Option wird verhindert, dass der Podcast in Apple Podcasts, Google Podcasts und alle Apps von Drittanbietern, die Inhalte aus diesen Verzeichnissen ziehen, erscheint. (Ohne Garantie!)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Zur Podcast-Seite gehen',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast-Dashboard',
'podcast-view' => 'Startseite',
'podcast-edit' => 'Podcast bearbeiten',
'podcast-persons-manage' => 'Mitwirkende verwalten',
'podcast-imports' => 'Podcast imports',
'podcast-imports' => 'Podcast-Importe',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Folgen',
'episode-list' => 'Alle Episoden',
'episode-create' => 'Neue Episoden',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Podcast-Player',
'podcast-analytics-listening-time' => 'Hörzeit',
'podcast-analytics-time-periods' => 'Zeiträume',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'Alle Abonnements',
'subscription-create' => 'Abonnement hinzufügen',
'contributors' => 'Mitwirkende',
'contributor-list' => 'Alle Unterstützer',
'contributor-add' => 'Mitwirkenden hinzufügen',
'platforms' => 'Externe Plattformen',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Soziale Netzwerke',
'platforms-funding' => 'Finanzierung',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'ο λογαριασμός μου',
'change-password' => 'αλλαγή κωδικού πρόσβασης',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'πλατφόρμες',
'social' => 'κοινωνικά δίκτυα',
'funding' => 'χρηματοδότηση',
'monetization-other' => 'other monetization',
'analytics' => 'αναλυτικά στοιχεία',
'locations' => 'τοποθεσίες',
'webpages' => 'ιστοσελίδες',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Μεταφορτώστε ένα αρχείο',
'remote_url' => 'Απομακρυσμένη διεύθυνση URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Αναπαραγωγή',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Όλα τα επεισόδια του podcast',
'back_to_podcast' => 'Μετάβαση πίσω στο podcast',
'edit' => 'Επεξεργασία',
'preview' => 'Preview',
'publish' => 'Δημοσίευση',
'publish_edit' => 'Επεξεργασία δημοσίευσης',
'publish_date_edit' => 'Επεξεργασία ημερομηνίας δημοσίευσης',
@ -80,13 +81,13 @@ return [
audio {ήχος}
other {πολυμέσα}
}.',
'deleteFileError' => 'Αποτυχία διαγραφής {type, select,
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {κεφάλαια}
image {καλύψτε}
audio {ήχος}
other {πολυμέσα}
} αρχείο {file_path}. Μπορείτε να το αφαιρέσετε χειροκίνητα από το δίσκο σας.',
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Ένα επεισόδιο με το επιλεγμένο slug υπάρχει ήδη.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Ανοιχτόχρωμο',
'light-transparent' => 'Ανοιχτό διαφανές',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Πλατφόρμες',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Μεταβείτε στην ιστοσελίδα {platformName}',
'register' => 'Register',
'submit_url' => 'Υποβάλετε το podcast σας στην πλατφόρμα {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Εμφάνιση στην αρχική σελίδα του podcast;',
'on_embed' => 'Εμφάνιση σε ενσωματωμένο player;',
'remove' => 'Κατάργηση {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Διαγραφή podcast',
'see_episodes' => 'Δείτε επεισόδια',
'see_contributors' => 'Βλέπε συντελεστές',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Μετάβαση στη σελίδα',
'latest_episodes' => 'Τελευταία επεισόδια',
'see_all_episodes' => 'Δείτε όλα τα επεισόδια',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Αναγνωριστικό Podcast',
'identity_section_subtitle' => 'Αυτά τα πεδία σας επιτρέπουν να ξεχωρίσει το podcast σας.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Εξώφυλο podcast',
'cover_size_hint' => 'Το εξώφυλλο πρέπει να είναι τουλάχιστον 1400px πλάτος και ύψος.',
'banner' => 'Banner podcast',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Μετάβαση στη σελίδα podcast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Πίνακας ελέγχου Podcast',
'podcast-view' => 'Αρχική σελίδα',
'podcast-edit' => 'Επεξεργασία podcast',
'podcast-persons-manage' => 'Διαχείριση ατόμων',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Επεισόδια',
'episode-list' => 'Όλα τα επεισόδια',
'episode-create' => 'Νέο Επεισόδιο',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Αναπαραγωγές',
'podcast-analytics-listening-time' => 'Χρόνος ακρόασης',
'podcast-analytics-time-periods' => 'Χρονικές περίοδοι',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'Όλες οι συνδρομές',
'subscription-create' => 'Προσθέστε συνδρομή',
'contributors' => 'Συντελεστές',
'contributor-list' => 'Όλοι οι συντελεστές',
'contributor-add' => 'Προσθήκη συντελεστή',
'platforms' => 'Εξωτερικές πλατφόρμες',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Κοινωνικά δίκτυα',
'platforms-funding' => 'Χρηματοδότηση',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'mi cuenta',
'change-password' => 'cambiar contraseña',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'plataformas',
'social' => 'redes sociales',
'funding' => 'financiación | fondos',
'monetization-other' => 'other monetization',
'analytics' => 'estadísticas',
'locations' => 'ubicaciones',
'webpages' => 'páginas web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Subir un archivo',
'remote_url' => 'URL remoto',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Reproducir',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Todos los episodios del podcast',
'back_to_podcast' => 'Regresar al podcast',
'edit' => 'Editar',
'preview' => 'Preview',
'publish' => 'Publicar',
'publish_edit' => 'Editar publicación',
'publish_date_edit' => 'Editar fecha de publicación',
@ -80,13 +81,13 @@ return [
audio {audio}
other {media}
}.',
'deleteFileError' => 'Hubo un problema al tratar de eliminar el archivo {file_path} {type, select,
transcript {de la transcripción}
chapters {de los episodios}
image {de la portada}
audio {del audio}
other {}
}. Puedes eliminarlo manualmente de tu disco.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Ya existe un episodio con el slug elegido.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Claro',
'light-transparent' => 'Transparente claro',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Plataformas',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Ir al sitio web de {platformName}',
'register' => 'Register',
'submit_url' => 'Envía tu podcast en {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => '¿Mostrar en la página de inicio del podcast?',
'on_embed' => '¿Mostrar en el reproductor incrustable?',
'remove' => 'Eliminar {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Eliminar podcast',
'see_episodes' => 'Ver episodios',
'see_contributors' => 'Ver colaboradores',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Ir a la página',
'latest_episodes' => 'Últimos Episodios',
'see_all_episodes' => 'Mostrar todos los episodios',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Identidad de Podcast',
'identity_section_subtitle' => 'Estos campos le permiten recibir un aviso.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Portada de Podcast',
'cover_size_hint' => 'La portada debe ser cuadrada y con al menos 1400 px de ancho y alto.',
'banner' => 'Cartel del Podcast',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Su propio ID de socio',
'partner_link_url_hint' => 'La dirección genérica de enlace de socio',
'partner_image_url_hint' => 'La dirección de imagen genérica del socio',
'status_section_title' => 'Estado',
'block' => 'El podcast debe ocultarse a los catálogos públicos',
'block_hint' =>
'El estado de visibilidad del podcast: al activar esto se impide que este podcast al completo aparezca en Apple Podcasts, Google Podcasts y cualquier aplicación de terceros que extraiga episodios de estos directorios. (no está garantizado al 100%)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Ir a la página del podcast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Panel de Podcast',
'podcast-view' => 'Inicio',
'podcast-edit' => 'Editar podcast',
'podcast-persons-manage' => 'Administrar personas',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodios',
'episode-list' => 'Todos los episodios',
'episode-create' => 'Nuevo episodio',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Reproductores',
'podcast-analytics-listening-time' => 'Tiempo de escucha',
'podcast-analytics-time-periods' => 'Periodos de tiempo',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'Todas las suscripciones',
'subscription-create' => 'Añadir suscripción',
'contributors' => 'Colaboradores',
'contributor-list' => 'Todos los colaboradores',
'contributor-add' => 'Añadir colaborador',
'platforms' => 'Plataformas externas',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Redes sociales',
'platforms-funding' => 'Financiamiento',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'my account',
'change-password' => 'change password',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'monetization-other' => 'other monetization',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'web pages',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Play',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'preview' => 'Preview',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'بن‌سازه‌ها',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'رفتن به پایگاه وب {platformName}',
'register' => 'Register',
'submit_url' => 'ثبت پادکستتان روی {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'نمایش در صفحهٔ خانگی پادکست؟',
'on_embed' => 'نمایش در پخش‌کنندهٔ تعبیه شده؟',
'remove' => 'برداشتن {platformName}',

View file

@ -22,12 +22,11 @@ return [
'delete' => 'حذف پادکست',
'see_episodes' => 'دیدن قسمت‌ّا',
'see_contributors' => 'دیدن مشارکت‌کنندگان',
'monetization_other' => 'Other monetization',
'go_to_page' => 'رفتن به صفحه',
'latest_episodes' => 'جدیدترین قسمت‌ها',
'see_all_episodes' => 'دیدن تمامی قسمت‌ها',
'draft' => 'پیش‌نویس',
'sync_feed' => 'خوراک هم‌گام شده',
'sync_feed_hint' => 'Import this podcast\'s latest episodes',
'messages' => [
'createSuccess' => 'Podcast successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
@ -59,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'هویت پادکست',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'جلد پادکست',
'cover_size_hint' => 'جلد باید مربّعی بوده و کمینه ۱۴۰۰ پیکسل پنها و بلندا داشته باشد.',
'banner' => 'بیرق پادکست',
@ -134,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'mon compte',
'change-password' => 'changer le mot de passe',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'plateformes',
'social' => 'réseaux sociaux',
'funding' => 'financement',
'monetization-other' => 'other monetization',
'analytics' => 'mesures daudience',
'locations' => 'localisations',
'webpages' => 'pages web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Téléversez un fichier',
'remote_url' => 'URL distante',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Lire',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'back_to_podcast' => 'Revenir au podcast',
'edit' => 'Modifier',
'preview' => 'Preview',
'publish' => 'Publier',
'publish_edit' => 'Modifier la publication',
'publish_date_edit' => 'Définir la date de publication',
@ -80,13 +81,13 @@ return [
audio {audio}
other {média}
}.',
'deleteFileError' => 'Impossible de supprimer {type, select,
transcript {transcription}
chapters {chapitres}
image {couverture}
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {média}
} fichier {file_path}. Vous pouvez le supprimer manuellement de votre disque.',
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Il existe déjà un épisode avec le slug choisi.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Clair',
'light-transparent' => 'Clair transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Plateformes',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Aller au site {platformName}',
'register' => 'Register',
'submit_url' => 'Soumettez votre podcast sur {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Afficher sur la page daccueil du podcast?',
'on_embed' => 'Afficher sur le lecteur intégré?',
'remove' => 'Supprimer {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Supprimer le podcast',
'see_episodes' => 'Voir les épisodes',
'see_contributors' => 'Voir les contributeurs',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Aller à la page',
'latest_episodes' => 'Derniers épisodes',
'see_all_episodes' => 'Voir tous les épisodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Informations sur le Podcast',
'identity_section_subtitle' => 'Ces champs vous permettent de vous faire remarquer.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Couverture du podcast',
'cover_size_hint' => 'La couverture du podcast doit être carrée, avec au minimum 1400px de largeur et de hauteur.',
'banner' => 'Bannière du podcast',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Votre identifiant personnel partenaire',
'partner_link_url_hint' => 'Ladresse générique des liens partenaire',
'partner_image_url_hint' => 'Ladresse générique des images partenaire',
'status_section_title' => 'Statut',
'block' => 'L\'épisode doit être masqué dans les catalogues publics',
'block_hint' =>
'Le statut d\'affichage ou de masquage du podcast : activer cette option empêche l\'intégralité du podcast d\'apparaître dans les podcasts Apple, Google Podcasts et toutes les applications tierces qui extraient des émissions de ces répertoires. (Pas garantie)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Aller à la page du podcast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Tableau de bord du podcast',
'podcast-view' => 'Accueil',
'podcast-edit' => 'Modifier le podcast',
'podcast-persons-manage' => 'Gestion des intervenants',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Épisodes',
'episode-list' => 'Tous les épisodes',
'episode-create' => 'Créer un épisode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Lecteurs',
'podcast-analytics-listening-time' => 'Durée découte',
'podcast-analytics-time-periods' => 'Périodes',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'Tous les abonnements',
'subscription-create' => 'Ajouter un abonnement',
'contributors' => 'Contributeurs',
'contributor-list' => 'Tous les contributeurs',
'contributor-add' => 'Ajouter un contributeur',
'platforms' => 'Plate-formes externes',
'platforms-podcasting' => 'Podcasts',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Réseaux sociaux',
'platforms-funding' => 'Financement',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'mon compte',
'change-password' => 'changer le mot de passe',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'plateformes',
'social' => 'réseaux sociaux',
'funding' => 'financement',
'monetization-other' => 'other monetization',
'analytics' => 'mesure daudience',
'locations' => 'localisation',
'webpages' => 'pages web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Téléverser un fichier',
'remote_url' => 'URL distante',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Lire',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'back_to_podcast' => 'Revenir au podcast',
'edit' => 'Modifier',
'preview' => 'Preview',
'publish' => 'Publier',
'publish_edit' => 'Modifier la publication',
'publish_date_edit' => 'Modifier la date de publication',
@ -80,13 +81,13 @@ return [
audio {l\'audio}
other {le média}
} de l\'épisode.',
'deleteFileError' => 'Impossible de supprimer {type, select,
transcript {la transcription}
chapters {les chapitres}
image {la couverture}
audio {l\'audio}
other {le dia}
} du fichier {file_path}. Vous pouvez le supprimer manuellement de votre disque.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'Il existe déjà un épisode avec le slug choisi.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Clair',
'light-transparent' => 'Clair transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'my account',
'change-password' => 'change password',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'monetization-other' => 'other monetization',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'web pages',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Play',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'preview' => 'Preview',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'my account',
'change-password' => 'change password',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'monetization-other' => 'other monetization',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'web pages',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Play',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'preview' => 'Preview',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'a miña conta',
'change-password' => 'cambiar contrasinal',
'imports' => 'importacións',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'plataformas',
'social' => 'redes sociais',
'funding' => 'financiamento',
'monetization-other' => 'other monetization',
'analytics' => 'análise',
'locations' => 'localizacións',
'webpages' => 'páxinas web',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Subir un ficheiro',
'remote_url' => 'URL remoto',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Reproducir',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'Tódolos episodios do podcast',
'back_to_podcast' => 'Volver ao podcast',
'edit' => 'Editar',
'preview' => 'Vista previa',
'publish' => 'Publicar',
'publish_edit' => 'Editar publicación',
'publish_date_edit' => 'Editar data de publicación',
@ -55,7 +56,7 @@ return [
}',
'episode' => 'Episodio',
'visibility' => 'Visibilidade',
'downloads' => 'Downloads',
'downloads' => 'Descargas',
'comments' => 'Comentarios',
'actions' => 'Accións',
],
@ -81,12 +82,12 @@ return [
other {do multimedia}
} do episodio.',
'deleteFileError' => 'Fallou a eliminación do ficheiro {type, select,
transcript {da transcrición}
chapters {dos capítulos}
image {da imaxe}
audio {do audio}
other {do multimedia}
} {file_path}. Deberías eliminala manualmente do disco.',
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} {file_key}. Deberías eliminalo a man do disco.',
'sameSlugError' => 'Xa existe un episodio co id de url elexido.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Claro',
'light-transparent' => 'Claro transparente',
],
'publication_status_banner' => [
'draft_mode' => 'modo borrador',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Vista previa',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Plataformas',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Ir á web de {platformName}',
'register' => 'Register',
'submit_url' => 'Envía o teu podcast en {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Mostrar na páxina de inicio do podcast?',
'on_embed' => 'Mostrar no navegador incrustable?',
'remove' => 'Eliminar {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Eliminar podcast',
'see_episodes' => 'Ver episodios',
'see_contributors' => 'Ver colaboradoras',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Ir á páxina',
'latest_episodes' => 'Últimos episodios',
'see_all_episodes' => 'Ver tódolos episodios',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Identidade do podcast',
'identity_section_subtitle' => 'Estes campos permítenche recibir notificacións.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Portada do podcast',
'cover_size_hint' => 'A portada ten que ser cadrada e como mínimo de 1400px de alto e ancho.',
'banner' => 'Cabeceira do podcast',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Ir á páxina do podcast',
'rss_feed' => 'RSS feed',
'dashboard' => 'Taboleiro do podcast',
'podcast-view' => 'Inicio',
'podcast-edit' => 'Editar podcast',
'podcast-persons-manage' => 'Xestionar persoas',
'podcast-imports' => 'Importacións de podcasts',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodios',
'episode-list' => 'Todos os episodios',
'episode-create' => 'Novo episodio',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Reprodutores',
'podcast-analytics-listening-time' => 'Tempo de escoita',
'podcast-analytics-time-periods' => 'Período de tempo',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'Todas as subscricións',
'subscription-create' => 'Engadir unha subscrición',
'contributors' => 'Contribúen',
'contributor-list' => 'Todas as contribucións',
'contributor-add' => 'Engadir colaboración',
'platforms' => 'Plataformas externas',
'platforms-podcasting' => 'Podcasts',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Redes sociais',
'platforms-funding' => 'Financiamento',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'akun saya',
'change-password' => 'ubah kata sandi',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'monetization-other' => 'other monetization',
'analytics' => 'analitik',
'locations' => 'locations',
'webpages' => 'web pages',

View file

@ -40,6 +40,7 @@ return [
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
'save' => 'Save',
],
'play_episode_button' => [
'play' => 'Play',

View file

@ -22,6 +22,7 @@ return [
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'preview' => 'Preview',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'publish_date_edit' => 'Edit publication date',
@ -86,7 +87,7 @@ return [
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
} file {file_key}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
@ -211,4 +212,14 @@ return [
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
'publication_status_banner' => [
'draft_mode' => 'draft mode',
'text' => '{publication_status, select,
published {This episode is not yet published.}
scheduled {This episode is scheduled for publication on {publication_date}.}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not yet published.}
}',
'preview' => 'Preview',
],
];

View file

@ -9,9 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'title' => [
'podcasting' => 'Podcasting platforms',
'social' => 'Social networks',
'funding' => 'Funding links',
],
'website' => 'Website',
'home_url' => 'Go to {platformName} website',
'register' => 'Register',
'submit_url' => 'Submit your podcast on {platformName}',
'your_link' => 'Your link',
'your_id' => [
'podcasting' => 'Your ID',
'social' => 'Your ID',
'funding' => 'Your CTA',
],
'your_cta' => 'Your call to action',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',

View file

@ -22,6 +22,7 @@ return [
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'monetization_other' => 'Other monetization',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
@ -57,6 +58,8 @@ return [
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'fediverse_section_title' => 'Fediverse identity',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
@ -132,7 +135,6 @@ return [
'partner_id_hint' => 'Your own partner ID',
'partner_link_url_hint' => 'The generic partner link address',
'partner_image_url_hint' => 'The generic partner image address',
'status_section_title' => 'Status',
'block' => 'Podcast should be hidden from public catalogues',
'block_hint' =>
'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',

View file

@ -10,11 +10,13 @@ declare(strict_types=1);
return [
'go_to_page' => 'Go to podcast page',
'rss_feed' => 'RSS feed',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'podcast-imports' => 'Podcast imports',
'podcast-imports-sync' => 'Sync feeds',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
@ -26,14 +28,15 @@ return [
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'premium' => 'Premium',
'monetization' => 'Monetization',
'subscription-list' => 'All subscriptions',
'subscription-create' => 'Add subscription',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'broadcast' => 'Broadcast',
'platforms-podcasting' => 'Podcasting apps',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
'platforms-funding' => 'Funding links',
'podcast-monetization-other' => 'Other',
];

View file

@ -39,9 +39,11 @@ return [
'my-account' => 'il mio profilo',
'change-password' => 'cambia la password',
'imports' => 'imports',
'sync-feeds' => 'synchronize feeds',
'platforms' => 'piattaforme',
'social' => 'social networks',
'funding' => 'finanziamento',
'monetization-other' => 'other monetization',
'analytics' => 'analytics',
'locations' => 'posizioni',
'webpages' => 'pagine web',

Some files were not shown because too many files have changed in this diff Show more