chore: new Crowdin updates

This commit is contained in:
crowdin 2022-07-04 13:27:21 +00:00 committed by Yassine Doghri
commit 9843ce3882
288 changed files with 9149 additions and 867 deletions

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'كافة حلقات البودكاست',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'العودة إلى البودكاست',
];

View file

@ -38,5 +38,6 @@ return [
other {# evezhiadenn}
}',
'all_podcast_episodes' => 'Holl rannoù ar podkast',
'episodes_recycle_bin' => 'Poubellenn',
'back_to_podcast' => 'Mont d\'ar podkast en-dro',
];

View file

@ -23,44 +23,44 @@ return [
other {# heulier·ez}
}',
'posts' => '{numberOfPosts, plural,
0 {kemennadenn ebet}
1 {# gemennadenn}
2 {# gemennadenn}
3 {# c\'hemennadenn}
4 {# c\'hemennadenn}
9 {# c\'hemennadenn}
21 {# gemennadenn}
22 {# gemennadenn}
23 {# c\'hemennadenn}
24 {# c\'hemennadenn}
29 {# c\'hemennadenn}
31 {# gemennadenn}
32 {# gemennadenn}
33 {# c\'hemennadenn}
34 {# c\'hemennadenn}
39 {# c\'hemennadenn}
41 {# gemennadenn}
42 {# gemennadenn}
43 {# c\'hemennadenn}
44 {# c\'hemennadenn}
49 {# c\'hemennadenn}
51 {# gemennadenn}
52 {# gemennadenn}
53 {# c\'hemennadenn}
54 {# c\'hemennadenn}
59 {# c\'hemennadenn}
61 {# gemennadenn}
62 {# gemennadenn}
63 {# c\'hemennadenn}
64 {# c\'hemennadenn}
69 {# c\'hemennadenn}
81 {# gemennadenn}
82 {# gemennadenn}
83 {# c\'hemennadenn}
84 {# c\'hemennadenn}
89 {# c\'hemennadenn}
other {# kemennadenn}
}',
0 {kemennadenn ebet}
1 {# gemennadenn}
2 {# gemennadenn}
3 {# c\'hemennadenn}
4 {# c\'hemennadenn}
9 {# c\'hemennadenn}
other {# kemennadenn}
21 {# gemennadenn}
22 {# gemennadenn}
23 {# c\'hemennadenn}
24 {# c\'hemennadenn}
29 {# c\'hemennadenn}
31 {# gemennadenn}
32 {# gemennadenn}
33 {# c\'hemennadenn}
34 {# c\'hemennadenn}
39 {# c\'hemennadenn}
41 {# gemennadenn}
42 {# gemennadenn}
43 {# c\'hemennadenn}
44 {# c\'hemennadenn}
49 {# c\'hemennadenn}
51 {# gemennadenn}
52 {# gemennadenn}
53 {# c\'hemennadenn}
54 {# c\'hemennadenn}
59 {# c\'hemennadenn}
61 {# gemennadenn}
62 {# gemennadenn}
63 {# c\'hemennadenn}
64 {# c\'hemennadenn}
69 {# c\'hemennadenn}
81 {# gemennadenn}
82 {# gemennadenn}
83 {# c\'hemennadenn}
84 {# c\'hemennadenn}
89 {# c\'hemennadenn}
}',
'activity' => 'Oberiantiz',
'episodes' => 'Rannoù',
'episodes_title' => 'Rannoù {podcastTitle}',
@ -68,50 +68,50 @@ return [
'stats' => [
'title' => 'Stadegoù',
'number_of_seasons' => '{0, plural,
0 {koulzad ebet}
1 {# c\'houlzad}
2 {# goulzad}
3 {# c\'houlzad}
4 {# c\'houlzad}
9 {# c\'houlzad}
21 {# c\'houlzad}
22 {# goulzad}
23 {# c\'houlzad}
24 {# c\'houlzad}
29 {# c\'houlzad}
31 {# c\'houlzad}
32 {# goulzad}
33 {# c\'houlzad}
34 {# c\'houlzad}
39 {# c\'houlzad}
41 {# c\'houlzad}
42 {# goulzad}
43 {# c\'houlzad}
44 {# c\'houlzad}
49 {# c\'houlzad}
51 {# c\'houlzad}
52 {# goulzad}
53 {# c\'houlzad}
54 {# c\'houlzad}
59 {# c\'houlzad}
61 {# c\'houlzad}
62 {# goulzad}
63 {# c\'houlzad}
64 {# c\'houlzad}
69 {# c\'houlzad}
81 {# c\'houlzad}
82 {# goulzad}
83 {# c\'houlzad}
84 {# c\'houlzad}
89 {# c\'houlzad}
other {# koulzad}
}',
0 {koulzad ebet}
1 {# c\'houlzad}
2 {# goulzad}
3 {# c\'houlzad}
4 {# c\'houlzad}
9 {# c\'houlzad}
other {# koulzad}
21 {# c\'houlzad}
22 {# goulzad}
23 {# c\'houlzad}
24 {# c\'houlzad}
29 {# c\'houlzad}
31 {# c\'houlzad}
32 {# goulzad}
33 {# c\'houlzad}
34 {# c\'houlzad}
39 {# c\'houlzad}
41 {# c\'houlzad}
42 {# goulzad}
43 {# c\'houlzad}
44 {# c\'houlzad}
49 {# c\'houlzad}
51 {# c\'houlzad}
52 {# goulzad}
53 {# c\'houlzad}
54 {# c\'houlzad}
59 {# c\'houlzad}
61 {# c\'houlzad}
62 {# goulzad}
63 {# c\'houlzad}
64 {# c\'houlzad}
69 {# c\'houlzad}
81 {# c\'houlzad}
82 {# goulzad}
83 {# c\'houlzad}
84 {# c\'houlzad}
89 {# c\'houlzad}
}',
'number_of_episodes' => '{0, plural,
0 {rann ebet}
one {# rann}
other {# rann}
}',
'first_published_at' => 'Embannet eo bet ar rann gentañ d\'an/d\'ar{0, date, medium}',
0 {rann ebet}
one {# rann}
other {# rann}
}',
'first_published_at' => 'Embannet eo bet ar rann gentañ d\'ar/d\'an {0, date, medium}',
],
'sponsor' => 'Harpit',
'funding_links' => 'Liammoù evit arc\'hantaouiñ {podcastTitle}',

View file

@ -19,7 +19,7 @@ return [
one {# Person}
other {# Personen}
}',
'persons_list' => 'Personen',
'persons_list' => 'Mitwirkende',
'back_to_episodes' => 'Zurück zu Folgen von {podcast}',
'comments' => 'Kommentare',
'activity' => 'Aktivitäten',
@ -29,5 +29,6 @@ return [
other {# Kommentare}
}',
'all_podcast_episodes' => 'Alle Podcast-Folgen',
'episodes_recycle_bin' => 'Papierkorb',
'back_to_podcast' => 'Zurück zum Podcast',
];

View file

@ -9,7 +9,7 @@ declare(strict_types=1);
*/
return [
'feed' => 'RSS-feed',
'feed' => 'RSS-Feed',
'season' => 'Staffel {seasonNumber}',
'list_of_episodes_year' => '{year} Folgen ({episodeCount})',
'list_of_episodes_season' =>
@ -18,28 +18,28 @@ return [
'follow' => 'Folgen',
'followTitle' => 'Folge {actorDisplayName} im Fediversum',
'followers' => '{numberOfFollowers, plural,
one {# Follower}
other {# Follower}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# Beitrag}
other {# Beiträge}
one {# post}
other {# posts}
}',
'activity' => 'Aktivitäten',
'episodes' => 'Folgen',
'episodes' => 'Episoden',
'episodes_title' => 'Folgen von {podcastTitle}',
'about' => 'Über',
'stats' => [
'title' => 'Statistiken',
'number_of_seasons' => '{0, plural,
one {# Staffel}
other {# Staffeln}
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# Folge}
other {# Folgen}
one {# episode}
other {# episodes}
}',
'first_published_at' => 'Erste Folge veröffentlicht am {0, date, medium}',
'first_published_at' => 'Erste Episode veröffentlicht am {0, date, medium}',
],
'sponsor' => 'Unterstützer',
'funding_links' => 'Links zur Finanzierung von {podcastTitle}',
@ -49,5 +49,5 @@ return [
one {# Person}
other {# Personen}
}',
'persons_list' => 'Personen',
'persons_list' => 'Mitwirkende',
];

View file

@ -15,8 +15,8 @@ return [
'reply_to' => 'Antorten auf @{actorUsername}',
'form' => [
'message_placeholder' => 'Scheibe eine Nachricht…',
'episode_message_placeholder' => 'Schreibe eine Nachricht für die Folge…',
'episode_url_placeholder' => 'URL der Folge',
'episode_message_placeholder' => 'Schreibe eine Nachricht für die Episode…',
'episode_url_placeholder' => 'URL der Episode',
'reply_to_placeholder' => 'Antworten auf @{actorUsername}',
'submit' => 'Senden',
'submit_reply' => 'Antwort senden',

View file

@ -29,5 +29,6 @@ return [
other {# σχόλια}
}',
'all_podcast_episodes' => 'Όλα τα επεισόδια του podcast',
'episodes_recycle_bin' => 'Κάδος Aνακύκλωσης',
'back_to_podcast' => 'Μετάβαση πίσω στο podcast',
];

View file

@ -32,8 +32,8 @@ return [
'stats' => [
'title' => 'Στατιστικά',
'number_of_seasons' => '{0, plural,
one {# σεζόν}
other {# σεζόνς}
one {# κύκλος}
other {# κύκλοι}
}',
'number_of_episodes' => '{0, plural,
one {# επισόδειο}

View file

@ -29,5 +29,6 @@ return [
other {# comentarios}
}',
'all_podcast_episodes' => 'Todos los episodios del podcast',
'episodes_recycle_bin' => 'Papelera de reciclaje',
'back_to_podcast' => 'Regresar al podcast',
];

View file

@ -39,7 +39,7 @@ return [
one {# episodio}
other {# episodios}
}',
'first_published_at' => 'Primer episodio publicado en {0, date, medium}',
'first_published_at' => 'Primer episodio publicado el {0, date, medium}',
],
'sponsor' => 'Patrocinador',
'funding_links' => 'Enlaces de financiación para {podcastTitle}',

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,29 @@
<?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',
];

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 [
'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',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

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/fa/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/fa/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,53 @@
<?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}
}',
'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',
];

40
app/Language/fa/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

@ -29,5 +29,6 @@ return [
other {# commentaires}
}',
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Revenir au podcast',
];

View file

@ -0,0 +1,38 @@
<?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' => "Am beachd aig {actorDisplayName} air {episodeTitle}",
'back_to_comments' => 'Air ais dha na beachdan',
'form' => [
'episode_message_placeholder' => 'Sgrìobh beachd…',
'reply_to_placeholder' => 'Freagair gu @{actorUsername}',
'submit' => 'Cuir',
'submit_reply' => 'Freagair',
],
'likes' => '{numberOfLikes, plural,
one {# annsachd}
two {# annsachd}
few {# annsachdan}
other {# annsachd}
}',
'replies' => '{numberOfReplies, plural,
one {# fhreagairt}
two {# fhreagairt}
few {# freagairtean}
other {# freagairt}
}',
'like' => 'Cuir ris na h-annsachdan',
'reply' => 'Freagair',
'view_replies' => 'Seall na freagairtean ({numberOfReplies})',
'block_actor' => 'Bac an cleachdaiche @{actorUsername}',
'block_domain' => 'Bac an àrainn @{actorDomain}',
'delete' => 'Sguab às am beachd',
];

View file

@ -0,0 +1,29 @@
<?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' => 'Tha',
'no' => 'Chan eil',
'cancel' => 'Sguir dheth',
'optional' => 'Roghainneil',
'close' => 'Dùin',
'home' => 'Dachaigh',
'explicit' => 'Frionasach',
'powered_by' => 'Le cumhachd {castopod}',
'go_back' => 'Air ais',
'play_episode_button' => [
'play' => 'Cluich',
'playing' => 'Ga chluich',
],
'read_more' => 'Leugh an còrr',
'read_less' => 'Leugh nas lugha dheth',
'see_more' => 'Seall barrachd dheth',
'see_less' => 'Seall nas lugha dheth',
];

View file

@ -0,0 +1,38 @@
<?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' => 'Seusan {seasonNumber}',
'season_abbr' => 'S{seasonNumber}',
'number' => 'Eapasod {episodeNumber}',
'number_abbr' => 'Eap. {episodeNumber}',
'season_episode' => 'Seusan {seasonNumber} eapasod {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
'persons' => '{personsCount, plural,
one {# neach}
two {# dhuine}
few {# daoine}
other {# duine}
}',
'persons_list' => 'Daoine',
'back_to_episodes' => 'Air ais dha na h-eapasodan aig {podcast}',
'comments' => 'Beachdan',
'activity' => 'Gnìomhachd',
'description' => 'Tuairisgeul an eapasoid',
'number_of_comments' => '{numberOfComments, plural,
one {# bheachd}
two {# bheachd}
few {# beachdan}
other {# beachd}
}',
'all_podcast_episodes' => 'A h-uile eapasod a phod-chraolaidh',
'episodes_recycle_bin' => 'Am biona',
'back_to_podcast' => 'Air ais dhan phod-chraoladh',
];

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' => 'An t-aithnichear agad',
'your_handle_hint' => 'Cuir a-steach an @ainm_cleachdaiche@àrainn leis a ghabhas tu gnìomh.',
'follow' => [
'label' => 'Lean air',
'title' => 'Lean air {actorDisplayName}',
'subtitle' => 'Tha thu gu bhith leantainn air:',
'accountNotFound' => 'Cha deach an cunntas a lorg.',
'remoteFollowNotAllowed' => 'Tha coltas nach gabh am frithealaiche ri leantainn chèin…',
'submit' => 'Lean air adhart gus leantainn air',
],
'favourite' => [
'title' => "Cuir am post aig {actorDisplayName} ris na h-annsachdan",
'subtitle' => 'Cuiridh tu seo ris na h-annsachdan:',
'submit' => 'Lean air adhart gus a chur ris na h-annsachdan',
],
'reblog' => [
'title' => "Co-roinn am post aig {actorDisplayName}",
'subtitle' => 'Tha thu gu bhith co-roinneadh:',
'submit' => 'Lean air adhart gus a cho-roinneadh',
],
'reply' => [
'title' => "Freagair dhan phost aig {actorDisplayName}",
'subtitle' => 'Tha thu gu bhith freagairt gu:',
'submit' => 'Lean air adhart gus freagairt dha',
],
];

20
app/Language/gd/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' => 'A h-uile pod-chraoladh',
'sort_by' => 'Seòrsaich a-rèir',
'sort_options' => [
'activity' => 'A ghnìomhachd as ùire',
'created_desc' => 'As ùire an toiseach',
'created_asc' => 'As sine an toiseach',
],
'no_podcast' => 'Cha deach pod-chraoladh a lorg',
];

17
app/Language/gd/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' => 'Dhachaigh',
'map' => [
'title' => 'Mapa',
'description' => 'Lorg eapasodan pod-chraolaidh air {siteName} a chaidh a chur air a mhapa! Seòl am mapa is èist ri eapasodan a bhruidhneas mu àitichean sònraichte.',
],
];

View file

@ -0,0 +1,63 @@
<?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' => 'Inbhir RSS a pod-chraolaidh',
'season' => 'Seusan {seasonNumber}',
'list_of_episodes_year' => 'Eapasodan {year} ({episodeCount})',
'list_of_episodes_season' =>
'Eapasodan seusan {seasonNumber} ({episodeCount})',
'no_episode' => 'Cha deach eapasod a lorg!',
'follow' => 'Lean air',
'followTitle' => 'Lean air {actorDisplayName} sa cho-shaoghal!',
'followers' => '{numberOfFollowers, plural,
one {# neach-leantainn}
two {# luchd-leantainn}
few {# luchd-leantainn}
other {# luchd-leantainn}
}',
'posts' => '{numberOfPosts, plural,
one {# phost}
two {# phost}
few {# postaichean}
other {# post}
}',
'activity' => 'Gnìomhachd',
'episodes' => 'Eapasodan',
'episodes_title' => 'Eapasodan aig {podcastTitle}',
'about' => 'Mu dhèidhinn',
'stats' => [
'title' => 'Stadastaireachd',
'number_of_seasons' => '{0, plural,
one {# seusan}
two {# sheusan}
few {# seusanan}
other {# seusan}
}',
'number_of_episodes' => '{0, plural,
one {# eapasod}
two {# eapasod}
few {# eapasodan}
other {# eapasod}
}',
'first_published_at' => 'Chaidh a chiad eapasod fhoillseachadh {0, date, medium}',
],
'sponsor' => 'Taic maoineachaidh',
'funding_links' => 'Ceanglaichean maoineachaidh dha {podcastTitle}',
'find_on' => 'Lorg {podcastTitle} air',
'listen_on' => 'Èist ris air',
'persons' => '{personsCount, plural,
one {# neach}
two {# dhuine}
few {# daoine}
other {# duine}
}',
'persons_list' => 'Daoine',
];

46
app/Language/gd/Post.php Normal file
View file

@ -0,0 +1,46 @@
<?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' => "Post aig {actorDisplayName}",
'back_to_actor_posts' => 'Air ais gu postaichean {actor}',
'actor_shared' => 'Cho-roinn {actor}',
'reply_to' => 'Freagair gu @{actorUsername}',
'form' => [
'message_placeholder' => 'Sgrìobh teachdaireachd…',
'episode_message_placeholder' => 'Sgrìobh teachdaireachd dhan eapasod',
'episode_url_placeholder' => 'URL an eapasoid',
'reply_to_placeholder' => 'Freagair gu @{actorUsername}',
'submit' => 'Cuir',
'submit_reply' => 'Freagair',
],
'favourites' => '{numberOfFavourites, plural,
one {# annsachd}
two {# annsachd}
few {# annsachdan}
other {# annsachd}
}',
'reblogs' => '{numberOfReblogs, plural,
one {# cho-roinneadh}
two {# cho-roinneadh}
few {# co-roinnidhean}
other {# co-roinneadh}
}',
'replies' => '{numberOfReplies, plural,
one {# fhreagairt}
two {# fhreagairt}
few {# freagairtean}
other {# freagairt}
}',
'expand' => 'Leudaich am post',
'block_actor' => 'Bac an cleachdaiche @{actorUsername}',
'block_domain' => 'Bac an àrainn @{actorDomain}',
'delete' => 'Sguab às am post',
];

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

View file

@ -29,5 +29,6 @@ return [
other {# reacties}
}',
'all_podcast_episodes' => 'Alle podcast afleveringen',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Terug naar podcast',
];

View file

@ -18,12 +18,12 @@ return [
'follow' => 'Abonneer',
'followTitle' => 'Abonneer op {actorDisplayName} via de fediverse!',
'followers' => '{numberOfFollowers, plural,
one {# abonnee}
other {# abonnees}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# bericht}
other {# berichten}
one {# post}
other {# posts}
}',
'activity' => 'Activiteit',
'episodes' => 'Afleveringen',
@ -32,14 +32,14 @@ return [
'stats' => [
'title' => 'Statistieken',
'number_of_seasons' => '{0, plural,
one {# seizoen}
other {# seizoenen}
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# aflevering}
other {# afleveringen}
one {# episode}
other {# episodes}
}',
'first_published_at' => 'Eerste aflevering gepubliceerd op {0, date, medium}',
'first_published_at' => 'First episode published on {0, date, medium}',
],
'sponsor' => 'Sponsor',
'funding_links' => 'Financiering links voor {podcastTitle}',

View file

@ -29,5 +29,6 @@ return [
other {# kommentarar}
}',
'all_podcast_episodes' => 'Alle podkast-episodane',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Gå tilbake til podkasten',
];

View file

@ -18,12 +18,12 @@ return [
'follow' => 'Fylg',
'followTitle' => 'Fylg {actorDisplayName} på fødiverset!',
'followers' => '{numberOfFollowers, plural,
one {# fylgjar}
other {# fylgjarar}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# innlegg}
other {# innlegg}
one {# post}
other {# posts}
}',
'activity' => 'Aktivitet',
'episodes' => 'Episodar',
@ -32,14 +32,14 @@ return [
'stats' => [
'title' => 'Statistikk',
'number_of_seasons' => '{0, plural,
one {# sesong}
other {# sesongar}
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# episode}
other {# episodar}
other {# episodes}
}',
'first_published_at' => 'Den fyrste episoden vart lagt ut {0, date, medium}',
'first_published_at' => 'First episode published on {0, date, medium}',
],
'sponsor' => 'Sponsor',
'funding_links' => 'Finansieringslenker for {podcastTitle}',

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

View file

@ -31,5 +31,6 @@ return [
other {# komentarzy}
}',
'all_podcast_episodes' => 'Wszystkie odcinki podcastu',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Wróć do podkastu',
];

View file

@ -18,13 +18,12 @@ return [
'follow' => 'Obserwuj',
'followTitle' => 'Obserwuj {actorDisplayName} na fediverse!',
'followers' => '{numberOfFollowers, plural,
one {# obserwujący}
other {# obserwujących}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# wpis}
few {# wpisy}
other {# wpisów}
one {# post}
other {# posts}
}',
'activity' => 'Aktywność',
'episodes' => 'Odcinki',
@ -33,16 +32,14 @@ return [
'stats' => [
'title' => 'Statystyki',
'number_of_seasons' => '{0, plural,
one {# sezon}
few{# sezony}
other {# sezonów}
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# odcinek}
few {# odcinki}
other {# odcinków}
one {# episode}
other {# episodes}
}',
'first_published_at' => 'Pierwszy odcinek opublikowany {0, date, medium}',
'first_published_at' => 'First episode published on {0, date, medium}',
],
'sponsor' => 'Sponsoruj',
'funding_links' => 'Linki finansowania dla {podcastTitle}',

View file

@ -29,5 +29,6 @@ return [
other {# comentários}
}',
'all_podcast_episodes' => 'Todos os episódios de podcast',
'episodes_recycle_bin' => 'Lixeira',
'back_to_podcast' => 'Voltar para o podcast',
];

View file

@ -41,7 +41,7 @@ return [
}',
'first_published_at' => 'Primeiro episódio publicado em {0, date, medium}',
],
'sponsor' => 'Patrocinador',
'sponsor' => 'Apoiar',
'funding_links' => 'Links de financiamento para {podcastTitle}',
'find_on' => 'Encontrar {podcastTitle} em',
'listen_on' => 'Ouvir em',

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

View file

@ -33,5 +33,6 @@ return [
other {# комментариев}
}',
'all_podcast_episodes' => 'Все выпуски подкаста',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Вернуться к подкасту',
];

View file

@ -18,16 +18,12 @@ return [
'follow' => 'Подписаться',
'followTitle' => 'Подпишитесь на {actorDisplayName} в федивёрсе!',
'followers' => '{numberOfFollowers, plural,
one {# подписчик}
few {# подписчики}
many {# подписчики}
other {# подписчики}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# пост}
few {# постов}
many {# постов}
other {# постов}
one {# post}
other {# posts}
}',
'activity' => 'Активность',
'episodes' => 'Выпуски',
@ -36,18 +32,14 @@ return [
'stats' => [
'title' => 'Статистика',
'number_of_seasons' => '{0, plural,
one {# сезон}
few {# сезоны}
many {# сезоны}
other {# сезоны}
one {# season}
other {# seasons}
}',
'number_of_episodes' => '{0, plural,
one {# эпизод}
few {# эпизодов}
many {# эпизодов}
other {# эпизодов}
one {# episode}
other {# episodes}
}',
'first_published_at' => 'Первый эпизод опубликован {0, date, medium}',
'first_published_at' => 'First episode published on {0, date, medium}',
],
'sponsor' => 'Спонсор',
'funding_links' => 'Ссылки на финансирование для {podcastTitle}',

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' => 'Späť na komentáre',
'form' => [
'episode_message_placeholder' => 'Napísať komentár…',
'reply_to_placeholder' => 'Reply to @{actorUsername}',
'submit' => 'Poslať',
'submit_reply' => 'Odpovedať',
],
'likes' => '{numberOfLikes, plural,
one {# like}
other {# likes}
}',
'replies' => '{numberOfReplies, plural,
one {# reply}
other {# replies}
}',
'like' => 'Obľúbené',
'reply' => 'Odpovedať',
'view_replies' => 'Ukázať odpoved/e ({numberOfReplies})',
'block_actor' => 'Blokovať užívateľa @{actorUsername}',
'block_domain' => 'Blokovať doménu @{actorDomain}',
'delete' => 'Vymazať komentár',
];

View file

@ -0,0 +1,29 @@
<?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' => 'Áno',
'no' => 'Nie',
'cancel' => 'Zrušiť',
'optional' => 'Voliteľné',
'close' => 'Zavrieť',
'home' => 'Domov',
'explicit' => 'Chúlostivé',
'powered_by' => 'Poháňané cez {castopod}',
'go_back' => 'Ísť späť',
'play_episode_button' => [
'play' => 'Prehrať',
'playing' => 'Prehrávané',
],
'read_more' => 'Čítať viac',
'read_less' => 'Zobraziť menej',
'see_more' => 'Pozrieť viac',
'see_less' => 'Pozrieť menej',
];

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 [
'season' => 'Séria {seasonNumber}',
'season_abbr' => 'S{seasonNumber}',
'number' => 'Epizóda {episodeNumber}',
'number_abbr' => 'Ep. {episodeNumber}',
'season_episode' => 'Sezóna {seasonNumber} epizóda {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
'persons' => '{personsCount, plural,
one {# person}
other {# persons}
}',
'persons_list' => 'Persons',
'back_to_episodes' => 'Späť k epizódam {podcast}',
'comments' => 'Komentáre',
'activity' => 'Aktivita',
'description' => 'Popis epizódy',
'number_of_comments' => '{numberOfComments, plural,
one {# comment}
other {# comments}
}',
'all_podcast_episodes' => 'Všetky epizódy podcastu',
'episodes_recycle_bin' => 'Kôš',
'back_to_podcast' => 'Späť na podcast',
];

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' => 'Vaša prezývka',
'your_handle_hint' => 'Enter the @username@domain you want to act from.',
'follow' => [
'label' => 'Nasledovať',
'title' => 'Nasledovať {actorDisplayName}',
'subtitle' => 'Budete nasledovať:',
'accountNotFound' => 'Účet nemožno nájsť.',
'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…',
'submit' => 'Pokračovať k nasledovaniu',
],
'favourite' => [
'title' => "Obľúbiť si príspevok od {actorDisplayName}",
'subtitle' => 'Idete si obľúbiť:',
'submit' => 'Pokračovať k obľúbeniu',
],
'reblog' => [
'title' => "Zdieľať príspevok od {actorDisplayName}",
'subtitle' => 'Budete zdieľať:',
'submit' => 'Pokračovať pre zdieľanie',
],
'reply' => [
'title' => "Odpovedať na príspevok od {actorDisplayName}",
'subtitle' => 'Idete odpovedať na:',
'submit' => 'Pokračovať k odpovedi',
],
];

20
app/Language/sk/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' => 'Všetky podcasty',
'sort_by' => 'Zoradiť podľa',
'sort_options' => [
'activity' => 'Nedávna aktivita',
'created_desc' => 'Od najnovšieho',
'created_asc' => 'Od najstaršieho',
],
'no_podcast' => 'Žiadne podcasty nenájdené',
];

17
app/Language/sk/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' => 'Späť na úvod',
'map' => [
'title' => 'Mapa',
'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,53 @@
<?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 zdroj podcastu',
'season' => 'Séria {seasonNumber}',
'list_of_episodes_year' => '{year} epizódy ({episodeCount})',
'list_of_episodes_season' =>
'Sezóna {seasonNumber} epizódy ({episodeCount})',
'no_episode' => 'Žiadne epizódy nenájdené!',
'follow' => 'Nasledovať',
'followTitle' => 'Nasledovať {actorDisplayName} na fediverse!',
'followers' => '{numberOfFollowers, plural,
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# post}
other {# posts}
}',
'activity' => 'Aktivita',
'episodes' => 'Epizódy',
'episodes_title' => 'Epizódy {podcastTitle}',
'about' => 'O',
'stats' => [
'title' => 'Štatistiky',
'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' => 'Sponzor',
'funding_links' => 'Funding links for {podcastTitle}',
'find_on' => 'Find {podcastTitle} on',
'listen_on' => 'Počúvajte na',
'persons' => '{personsCount, plural,
one {# person}
other {# persons}
}',
'persons_list' => 'Persons',
];

40
app/Language/sk/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' => 'Vymazať príspevok',
];

View file

@ -29,5 +29,6 @@ return [
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'episodes_recycle_bin' => 'Recycle bin',
'back_to_podcast' => 'Go back to podcast',
];

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -2,36 +2,37 @@
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 είναι μια δωρεάν & ανοικτού κώδικα πλατφόρμα φιλοξενίας podcast που
κατασκευάζεται για podcasters που θέλουν να συμμετάσχουν και να αλληλεπιδράσουν
με το κοινό τους.
Castopod is easy to install and was built on top of
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
small footprint.
Το Castopod είναι εύκολο στην εγκατάσταση και χτίστηκε με το
[CodeIgniter4](https://codeigniter.com/), ένα ισχυρό PHP framework με ένα πολύ
μικρό αποτύπωμα.
::: info Status
::: πληροφορίες κατάστασης
Castopod is currently in **beta** but already quite stable and used by
podcasters around&nbsp;the&nbsp;world!
Το Castopod είναι επί του παρόντος σε **beta** αλλά ήδη αρκετά σταθερό και
χρησιμοποιείται από podcasters γύρω από&nbsp;τον&nbsp;κόσμο!
:::
<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>
<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">Εγκατάσταση<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;Δωρεάν & open-source (AGPL v3 License)
- 🔐 &nbsp;Εστιάζει στην κυριαρχία των δεδομένων: το περιεχόμενο, το κοινό και
τα αναλυτικά στοιχεία ανήκουν σε εσάς μόνο
- ◆ &nbsp;Podcasting 2.0 χαρακτηριστικά: GUID, κλειδωμένο, μεταγραφές,
χρηματοδότηση, κεφάλαια, τοποθεσία, πρόσωπα, soundbites, …
- 💬 &nbsp;Ενσωματωμένο κοινωνικό δίκτυο:
- 🚀 &nbsp;Castopod is part of the Fediverse, a decentralized social network
- ❤️ &nbsp;Create posts, share, favourite, and comment on episodes
- 📈 &nbsp;Built-in analytics:
@ -60,7 +61,7 @@ podcasters around&nbsp;the&nbsp;world!
- 🌎 &nbsp;i18n support: translated in English, French & Polish with more to
come!
## 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.
@ -201,16 +202,23 @@ backers. If you'd like to help, please consider
[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
[release-badge]:
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
[license-badge]:
https://img.shields.io/github/license/ad-aures/castopod?color=blue
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
[contributions-badge]:
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
[semantic-release]: https://github.com/semantic-release/semantic-release
[semantic-release-badge]:
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[discord]: https://castopod.org/discord
[discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8
[stars]: https://github.com/ad-aures/castopod/stargazers
[stars-badge]:
https://img.shields.io/github/stars/ad-aures/castopod?style=social
[crowdin]: https://translate.castopod.org/project/castopod
[crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg

View file

@ -5,138 +5,151 @@ sidebarDepth: 3
# ¿Cómo instalar Castopod?
Castopod era de todas maneras fácil de instalar. Ya sea usando alojamiento
dedicado o compartido, se puede instalar en la mayoría de servidores web
Castopod está pensado para ser fácil de instalar. Ya sea usando un alojamiento
dedicado o compartido, puedes instalarlo en la mayoría de servidores web
compatibles con PHP-MySQL.
## Requirements
::: Nota informativa
- PHP v8.0 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
Esta sección de la documentación te ayudará a configurar Castopod para la
producción. Si estás buscando participar en el desarrollo de Castopod, debes
pasar a la sección de contribuciones.
### PHP v8.0 or higher
:::
PHP version 8.0 or higher is required, with the following extensions installed:
## Requerimientos
- PHP v8.0 o superior
- MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior
- Soporte HTTPS
### PHP v8.0 o superior
Se requiere PHP versión 8.0 o superior con las siguientes extensiones
instaladas:
- [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) con librerias
**JPEG**, **PNG** y **WEBP**.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Additionally, make sure that the following extensions are enabled in your PHP:
Adicionalmente, asegúrate que las siguientes extensiones están habilitadas en tu
PHP:
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- json (habilitada por defecto - no la desactives)
- xml (habilitada por defecto - no la desactives)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### MySQL compatible database
### Base de datos compatible con MySQL
> We recommend using [MariaDB](https://mariadb.org).
> Recomendamos usar [MariaDB](https://mariadb.org).
::: warning
::: aviso Aviso
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 solo funciona con base de datos compatible con MySQL 5.7 o superior. Se
romperá con la version previa MySQL v5.6 por ejemplo, ya que su vida terminó el
5 de febrero de 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.
Necesitarás el nombre del anfitrión del servidor, nombre de la base de datos,
usuario y contraseña para completar el proceso de instalación. Si no los tienes,
por favor, contacta al administrador del servidor.
#### Privileges
#### Privilegios
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`.
Los usuarios deben tener al menos estos privilegios en la base de datos para que
Castopod funcione: `CREAR`, `ALTERAR`, `BORRAR`, `EJECUTAR`, `INDICE`,
`INSERTAR`, `SELECCIONAR`, `ACTUALIZAR`.
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
### (Opcional) FFmpeg v4.1.8 o superior para clips de video
[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:
Se requiere [FFmpeg](https://www.ffmpeg.org/) versión 4.1.8 o superior si
quieres general clips de video. Se debe instalar las siguientes extensiones:
- **FreeType 2** library for
- Librería **FreeType 2** para
[gd](https://www.php.net/manual/en/image.installation.php).
### (Optional) Other recommendations
### (Opcional) Otras recomendaciones
- Redis for better cache performances.
- CDN for static files caching and better performances.
- e-mail gateway for lost passwords.
- Redis para mejores rendimientos de caché.
- CDN para almacenamiento en caché de archivos estáticos y mejores rendimientos.
- puerta de enlace de email para pérdidas de contraseña.
## Install instructions
## Instrucciones de instalación
### Pre-requisites
### Prerequisitos
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. Consigue un Servidor Web con [requerimientos](#requirements) instalados
1. Crea una base de datos MySQL para Castopod con un usuario que tenga acceso y
privilegios de modificación (para más información, ver
[MySQL base de datos compatible](#mysql-compatible-database)).
2. Activa HTTPS en tu domino con un _certificado SSL_.
3. Descarga y descomprime el último [paquete Castopod](https://castopod.org/) en
el servidor de la web si aún no lo has hecho.
- ⚠️ Establece la raiz del documento del servidor web en la subcarpeta
`pública/` en la carpeta `castopod`.
4. Añade **cron tasks** en tu servidor web para varios procesos en segundo plano
(reemplaza las rutas accorde con):
- For social features to work properly, this task is used to broadcast social
activities to your followers on the fediverse:
- Para que las características sociales funcionen correctamente, esta tarea
se utiliza para transmitir las actividades sociales a tus seguidores en el
Fediverso:
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
* * * * * /path/to/php /path/to/castopod/public/index.php actividades programadas
```
- For having your episodes be broadcasted on open hubs upon publication using
[WebSub](https://en.wikipedia.org/wiki/WebSub):
- Para que tus episodios sean transmitidos en hubs abiertos sobre
publicaciones usando [WebSub](https://en.wikipedia.org/wiki/WebSub):
```bash
* * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
* * * * * /usr/local/bin/php /castopod/public/index.php publicaciones-websub-programadas
```
- For Video Clips to be created (see
[FFmpeg requirements](#ffmpeg-v418-or-higher-for-video-clips)):
- Para crear Clips de video (ver
[requerimientos FFmpeg ](#ffmpeg-v418-or-higher-for-video-clips)):
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips
* * * * * /path/to/php /path/to/castopod/public/index.php clips-devideo-programados
```
> These tasks run **every minute**. You may set the frequency depending on
> your needs: every 5, 10 minutes or more.
> Estas tareas se ejecutan **cada minuto**. Debes establecer la frecuencia
> dependiendo de tus necesidades: cada 5, 10 minutos o más.
### (recommended) Install Wizard
### (recomendado) Instalar 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.
1. Ejecuta el script de instalación de Castopod yendo a la página de instalación
de wizard (`https://your_domain_name.com/cp-install`) en tu navegador web
preferido.
2. Sigue las instrucciones de la pantalla.
3. ¡Empieza a crear podcasting!
::: Nota de información
::: Nota informativa
El script de instalación escribe un archivo `.env` en la raíz del paquete. If
you cannot go through the install wizard, you can
[create and update the `.env` file manually](#alternative-manual-configuration).
El script de instalación escribe un archivo `.env` en la raiz de paquete. Si no
puedes completar la instalación de wizard, puedes
[crear y actualizar el archivo `.env` manualmente](#alternative-manual-configuration).
:::
## Community packages
## Paquetes de la comunidad
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.
Si no quieres molestarte en instalar Castopod manualmente, puedes usar uno de
los paquetes creados y mantenidos por la comunidad de código abierto.
### Install with YunoHost
### Instalar con 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/) es una distribuidora basada en Debian
GNU/Linux compuesta por paquetes de software libres y de código abierto. 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" />
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Instalar Castopod con 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
@ -146,18 +159,18 @@ Repo</a>
</div>
### Install with Docker
### Instalar con Docker
If you wish to use Docker to install Castopod, it is possible thanks to
Si desea utilizar Docker para instalar Castopod, ¡es posible gracias a
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Install
with
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Instalar
con
Docker<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>
::: info Note
::: Nota de información
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
Dada la alta demanda de docker, planeamos mantener una imagen oficial del Docker
de Castopod directamente en el repositorio de Castopod.
:::

View file

@ -1,92 +1,100 @@
---
title: Update
title: Actualización
sidebarDepth: 3
---
# How to update Castopod?
# ¿Cómo actualizar 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 ⚡.
Después de instalar Castopod, es posible que quieras actualizar tu instancia a
la última versión para disfrutar de las últimas características ✨, correcciones
de errores 🐛 y mejoras de rendimiento ⚡.
## Automatic update instructions
## Instrucciones de actualización automática
> Coming soon... 👀
> Próximamente... 👀
## Manual update instructions
## Instrucciones de actualización manual
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
1. Vaya a la página de
[lanzamientos](https://code.castopod.org/adaures/castopod/-/releases) y vea
si su instancia está actualizada con la última versión de Castopod
- cf.
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
[¿Dónde puedo encontrar mi versión de Castopod?](#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
2. Descargue el último paquete de lanzamiento llamado `Paquete Castopod`, puede
elegir entre los archivos `zip` o `tar.gz`
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
- ⚠️ Asegúrate de descargar el paquete de Castopod y **NO** el código fuente
3. On your server:
3. En tu servidor:
- Remove all files except `.env` and `public/media`
- Copy the new files from the downloaded package into your server
- Eliminar todos los archivos excepto `.env` y la carpeta `public/media`
- Copie los nuevos archivos del paquete descargado en su servidor
::: info Note
::: Nota de información
You may need to reset files permissions as during the install process.
Check [Security Concerns](./security.md).
Es posible que necesite restablecer los permisos de los archivos después el
proceso de instalación. Compruebe
[preocupaciones de seguridad](./security.md).
:::
4. Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)). They
are usually database migration scripts in `.sql` format to update your
database schema.
4. Las versiones pueden venir con instrucciones de actualización adicionales
(véase la página de
[lanzamientos](https://code.castopod.org/adaures/castopod/-/releases)).
Generalmente son scripts de migración de base de datos en formato `.sql` para
actualizar su esquema de base de datos.
- 👉 Make sure you run the scripts on your phpmyadmin panel or using command
line to update the database along with the package files!
- I haven't updated my instance in a long time… What should I do?
- 👉 ¡Asegúrate de ejecutar los scripts en tu panel phpmyadmin o usando la
línea de comandos para actualizar la base de datos junto con los archivos
de paquete!
- cf.
5. If you are using redis, clear your cache.
6. ✨ Enjoy your fresh instance, you're all done!
No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?</p></li> </ul>
## Frequently asked questions (FAQ)
5. Si estás usando redis, limpia tu caché.
### Where can I find my Castopod version?
6. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
Go to your Castopod admin panel, the version is displayed on the bottom left
corner.
## Preguntas Frecuentes (FAQ)
Alternatively, you can find the version in the `app > Config > Constants.php`
file.
### ¿Dónde puedo encontrar mi versión de Castopod?
### [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)
Ve al panel de administración de Castopod, la versión se muestra en la esquina
inferior izquierda.
No problem! 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.
Alternativamente, puedes encontrar la versión en el archivo
`app > Config > Constants.php`.
> You may want to backup your instance depending on how long you haven't updated
> Castopod.
### No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
¡No hay problema! Sólo obtenga la última versión tal y como se describe
anteriormente. Simplemente cuando vaya a través de las instrucciones de
lanzamiento (4), realice la actualización secuencialmente, desde el más antiguo
hasta el más reciente.
> Puede que quieras hacer una copia de seguridad de tu instancia dependiendo del
> tiempo que no hayas actualizado Castopod.
Por ejemplo, si estás en `v1.0.0-alpha.42` y te gustaría actualizar a
`v1.0.0-beta.1`:
0. (highly recommended) Make a backup of your files and database.
0. (altamente recomendado) Haga una copia de seguridad de sus archivos y base de
datos.
1. Download the latest release, overwrite your files whilst keeping `.env` and
1. Descarga la última versión, sobrescribe tus archivos manteniendo `.env` y
`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`.
2. Repase las instrucciones de actualización de cada versión secuencialmente (de
más antiguo a más reciente) comenzando con `v1.0.0-alpha. 3`,
`v1.0.0-alpha.44`, `v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Enjoy your fresh instance, you're all done!
3. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
### Should I make a backup before updating?
### ¿Debo hacer una copia de seguridad antes de actualizar?
We advise you do, so you don't lose everything if anything goes wrong!
Te aconsejamos que hagas, así que no lo pierdas todo si algo sale mal!
More generally, we advise you make regular backups of your Castopod files and
database to prevent you from losing it all
De manera más general, te aconsejamos hacer copias de seguridad regulares de tus
archivos de Castopod y base de datos para evitar que pierdas todo

View file

@ -29,8 +29,8 @@ por podcasters alrededor de&nbsp;el mundo!
- 🌱 &nbsp;Gratis & de código abierto (AGPL v3 Licencia)
- 🔐 &nbsp;Centrado en la soberanía de los datos: su contenido, audiencia, y
analíticas le pertenecen a usted, y solo a &nbsp;usted&nbsp;
- &nbsp;Funciones de Podcasting 2.0: GUID, protección y bloqueo del podcast,
transcripciones, fondos, capítulos, ubicación, personas, sonidos, …
- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
- :speech \_balloon: &nbsp;Red social integrada:
- 🚀 &nbsp;Castopod es parte del Fediverso, una red social descentralizada
- ❤️ &nbsp;Crear mensajes, compartir, favoritos y comentarios en episodios
@ -204,23 +204,16 @@ contribuyentes. Si quieres ayudar, por favor considera colaborar con
[Licencia pública general GNU v3.0](https://choosealicense.com/licenses/agpl-3.0/)
Copyright © 2020-presente, [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
[release-badge]:
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
[license-badge]:
https://img.shields.io/github/license/ad-aures/castopod?color=blue
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
[contributions-badge]:
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
[semantic-release]: https://github.com/semantic-release/semantic-release
[semantic-release-badge]:
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[discord]: https://castopod.org/discord
[discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8
[stars]: https://github.com/ad-aures/castopod/stargazers
[stars-badge]:
https://img.shields.io/github/stars/ad-aures/castopod?style=social
[crowdin]: https://translate.castopod.org/project/castopod
[crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg

View file

@ -0,0 +1,170 @@
---
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
### PHP v8.0 or higher
PHP version 8.0 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`.
### (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):
- For social features to work properly, this task is used to broadcast social
activities to your followers on the fediverse:
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
```
- For having your episodes be broadcasted on open hubs upon publication using
[WebSub](https://en.wikipedia.org/wiki/WebSub):
```bash
* * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
```
- For Video Clips to be created (see
[FFmpeg requirements](#ffmpeg-v418-or-higher-for-video-clips)):
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips
```
> These tasks run **every minute**. You may set the frequency depending on
> your needs: every 5, 10 minutes or more.
### (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 update the `.env` file manually](#alternative-manual-configuration).
:::
## 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>
### Install with Docker
If you wish to use Docker to install Castopod, it is possible thanks to
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Install
with
Docker<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>
::: info Note
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
:::

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,93 @@
---
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 ⚡.
## Automatic update instructions
> Coming soon... 👀
## Manual update instructions
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
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. Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)). They
are usually database migration scripts in `.sql` format to update your
database schema.
- 👉 Make sure you run the scripts on your phpmyadmin panel or using command
line to update the database along with the package files!
- 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)
5. If you are using redis, clear your cache.
6. ✨ Enjoy your fresh instance, you're all done!
## 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…

216
docs/src/fa/index.md Normal file
View file

@ -0,0 +1,216 @@
---
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.
::: info Status
Castopod is currently in **beta** but already quite stable and used by
podcasters around&nbsp;the&nbsp;world!
:::
<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;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 with more to
come!
## 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.
## 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

@ -9,6 +9,14 @@ Castopod a été pensé pour être facile à installer. Que vous utilisiez un
hébergement dédié ou mutualisé, vous pouvez l'installer sur la plupart des
serveurs web compatibles avec PHP-MySQL.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Prérequis
- PHP v8.0 ou supérieure
@ -17,8 +25,7 @@ serveurs web compatibles avec PHP-MySQL.
### PHP v8.0 ou supérieure
La version 8.0 ou supérieure de PHP est requise, avec les extensions suivantes
installées :
PHP version 8.0 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)
@ -27,8 +34,7 @@ installées :
**PNG** et bibliothèques **WEBP**.
- [exif](https://www.php.net/manual/fr/exif.installation.php)
De plus, assurez-vous que les extensions suivantes sont activées dans votre PHP
:
Additionally, make sure that the following extensions are enabled in your PHP:
- json (activé par défaut - ne le désactivez pas)
- xml (activé par défaut - ne pas le désactiver)
@ -38,30 +44,27 @@ De plus, assurez-vous que les extensions suivantes sont activées dans votre PHP
> Nous vous recommandons d'utiliser [MariaDB](https://mariadb.org).
::: avertissement
::: warning Warning
Castopod ne fonctionne qu'avec les bases de données compatibles MySQL 5.7 ou
supérieures. Les versions 5.6 (dont le support a cessé le 5 février 2021) ou
précédentes de MySQL ne fonctionneront pas.
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.
:::
Vous aurez besoin du nom d'hôte du serveur, du nom de la base de données, du nom
d'utilisateur et du mot de passe pour terminer le processus d'installation. Si
vous ne disposez pas de ces informations, veuillez contacter votre
administrateur.
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.
#### Droits d'accès
L'utilisateur doit avoir au moins ces droits d'accès sur la base de données pour
que Castopod fonctionne : `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`,
`INSERT`, `SELECT`, `UPDATE`.
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`.
### (Facultatif) FFmpeg v4.1.8 ou supérieur pour les clips vidéo
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 ou supérieure est requis si vous
souhaitez générer des Clips Vidéo. Les extensions suivantes doivent être
installées :
[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:
- bibliothèque **FreeType 2** pour
[gd](https://www.php.net/manual/en/image.installation.php).
@ -121,24 +124,24 @@ installées :
2. Suivez les instructions affichée.
3. Commencer à baladodiffuser!
::: info Nota Bene
::: info Note
Le script install crée un fichier `.env` à la racine du paquet. Si vous ne
pouvez pas passer par l'assistant d'installation, vous pouvez
[créer et mettre à jour le fichier `.env` manuellement](#alternative-manual-configuration).
The install script writes a `.env` file in the package root. If you cannot go
through the install wizard, you can
[create and update the `.env` file manually](#alternative-manual-configuration).
:::
## Paquets fournis par la communauté
Si vous ne voulez pas vous soucier d'installer Castopod manuellement, vous
pouvez utiliser un des paquets créés et maintenus par la communauté open-source.
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
### Installer avec YunoHost
[YunoHost](https://yunohost.org/) est une distribution basée sur Debian
GNU/Linux composée de paquets logiciels libres et open-source. Il simplifie
l'auto-hébergement pour vous.
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
made up of free and open-source software packages. It manages the hardships of
self-hosting for you.
<div class="flex flex-wrap items-center gap-4">
@ -155,16 +158,16 @@ Github</a>
### Installer avec Docker
Si vous souhaitez utiliser Docker pour installer Castopod, c'est possible grâce
à [Romain de Laage](https://mamot.fr/@rdelaage)!
If you wish to use Docker to install Castopod, it is possible thanks to
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Installer
avec
Docker<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>
::: info Nota Bene
::: info Note
Étant donné la forte demande de Docker, nous prévoyons de maintenir une image
officielle de Castopod Docker directement dans le dépôt Castopod.
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
:::

View file

@ -16,7 +16,7 @@ petite taille.
::: info Statut
Castopod est actuellement en **version beta** mais est déjà suffisamment stable
et est utilisé par des podcasters partout autour du monde&nbsp;!
et est utilisé par des podcasters autour partout dans le monde&nbsp;!
:::
@ -27,8 +27,8 @@ et est utilisé par des podcasters partout autour du monde&nbsp;!
## Fonctionnalités
- 🌱 &nbsp;Libre, gratuit & open-source (Licence AGPL v3)
- 🔐 &nbsp;Focalisé sur la souveraineté des données: votre contenu, votre
audience et vos statistiques vous appartiennent, et à vous seulement
- 🔐 &nbsp;focalisé sur la souveraineté des données: votre contenu, votre
audience et vos statiistiques vous appartiennent, et à vous seulement
- 🪄&nbsp;Fonctionnalités de Podcasting 2.0 : GUID, verrouillage,
transcriptions, financement, chapitres, géo-localisation, intervenants,
extraits sonores, …
@ -61,8 +61,8 @@ et est utilisé par des podcasters partout autour du monde&nbsp;!
- 🔀 &nbsp;Multi-locataire: hébergez autant de podcasts que vous le souhaitez
- 👥 &nbsp;Multi-utilisateur : ajoutez des contributeurs et définissez leurs
rôles
- 🌎 &nbsp;Multilingue: traduit en Anglais, Français, Polonais, Allemand &
Brésilien… et bien d'autres à venir!
- 🌎 &nbsp;support i18n: traduit en Anglais, Français, Polonais, Allemand &
Brésilien… et bientôt d'autres à venir!
## Pourquoi Castopod?
@ -89,9 +89,9 @@ Ce projet s'appuie sur la communauté open-source, plus spécifiquement sur le
## Comparaison avec d'autres solutions
Nous pensons qu'une solution n'est pas forcément adaptée à tous, tout dépend vos
besoins. Voici donc un comparatif avec d'autres outils qui vous aidera à juger
si Castopod est fait pour vous.
Nous pensons qu'une solution n'est pas adaptée à tous, tout dépend vos besoins.
Voici donc un comparatif avec d'autres outils qui vous aidera à juger si
Castopod est fait pour vous.
### Castopod vs Wordpress
@ -107,7 +107,7 @@ plupart des serveurs web.
Wordpress est un excellent outil pour créer votre site web et de l'étendre avec
des plugins pour faire ce que vous souhaitez. C'est un CMS à part entière qui
vous permet de mettre en ligne tout type de site web.
vous permet de mettre en line tout type de site web.
Castopod quant à lui est destiné à répondre aux besoins spécifiques des
podcasteurs, en se concentrant sur les podcasts et rien d'autre. Vous n'avez

View file

@ -0,0 +1,170 @@
---
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
### PHP v8.0 or higher
PHP version 8.0 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`.
### (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):
- For social features to work properly, this task is used to broadcast social
activities to your followers on the fediverse:
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
```
- For having your episodes be broadcasted on open hubs upon publication using
[WebSub](https://en.wikipedia.org/wiki/WebSub):
```bash
* * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
```
- For Video Clips to be created (see
[FFmpeg requirements](#ffmpeg-v418-or-higher-for-video-clips)):
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips
```
> These tasks run **every minute**. You may set the frequency depending on
> your needs: every 5, 10 minutes or more.
### (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 update the `.env` file manually](#alternative-manual-configuration).
:::
## 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>
### Install with Docker
If you wish to use Docker to install Castopod, it is possible thanks to
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Install
with
Docker<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>
::: info Note
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
:::

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,93 @@
---
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 ⚡.
## Automatic update instructions
> Coming soon... 👀
## Manual update instructions
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
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. Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)). They
are usually database migration scripts in `.sql` format to update your
database schema.
- 👉 Make sure you run the scripts on your phpmyadmin panel or using command
line to update the database along with the package files!
- 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)
5. If you are using redis, clear your cache.
6. ✨ Enjoy your fresh instance, you're all done!
## 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…

216
docs/src/gd/index.md Normal file
View file

@ -0,0 +1,216 @@
---
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.
::: info Status
Castopod is currently in **beta** but already quite stable and used by
podcasters around&nbsp;the&nbsp;world!
:::
<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;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 with more to
come!
## 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.
## 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

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -9,6 +9,14 @@ Det er meininga at Castopod skal vera lett å installera. Uansett om du bruker
eige eller delt vevhotell, kan du installera på dei fleste maskiner som har PHP
og MySQL.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Krav
- PHP v8.0 eller nyare
@ -17,7 +25,7 @@ og MySQL.
### PHP v8.0 eller nyare
PHP versjon 8.0 er eit krav, med desse utvidingane:
PHP version 8.0 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)
@ -26,8 +34,7 @@ PHP versjon 8.0 er eit krav, med desse utvidingane:
**PNG**- og **WEBP**-biblioteka.
- [exif](https://www.php.net/manual/en/exif.installation.php)
I tillegg må du passa på at desse utvidingane er skrudde på i PHP-installasjonen
din:
Additionally, make sure that the following extensions are enabled in your PHP:
- json (vanlegvis aktivt - ikkje skru det av)
- xml (vanlegvis aktivt - ikkje skru det av)
@ -37,28 +44,27 @@ din:
> Me tilrår [MariaDB](https://mariadb.org).
::: warning Åtvaring
::: warning Warning
Castopod verkar berre med databasar som støttar MySQL 5.7 eller nyare. MySQL 5.6
eller eldre vil ikkje fungera, ettersom den versjonen vart forelda i
februar 2021.
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.
:::
Du treng vertsnamnet til tenaren, databasenamnet, brukarnamnet og passordet til
databasen for å fullføra installeringa. Viss du ikkje har desse, må du kontakta
administratoren for tenarmaskina di.
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.
#### Tilgangsrettar
Brukaren må minst ha desse tilgangsrettane på databasen for at Castopod skal
fungera: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`,
`UPDATE`.
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`.
### (Eventuelt) FFmpeg v4.1.8 eller nyare for filmklypp
Du treng [FFmpeg](https://www.ffmpeg.org/) versjon 4.1.8 viss du vil laga
filmklypp. Desse utvidingane må vera installerte:
[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**-biblioteket for
[gd](https://www.php.net/manual/en/image.installation.php).
@ -115,25 +121,24 @@ filmklypp. Desse utvidingane må vera installerte:
2. Fylg framgangsmåten på skjermen.
3. Start å podkasta!
::: info
::: info Note
Installasjonsskriptet lagar ei`.env`-fil i rotmappa til pakka. Viss du ikkje kan
bruka autoinstalleringa, kan du
[oppretta og oppdatera `.env`-fila manuelt](#alternative-manual-configuration).
The install script writes a `.env` file in the package root. If you cannot go
through the install wizard, you can
[create and update the `.env` file manually](#alternative-manual-configuration).
:::
## Pakker frå brukarsamfunnet
Viss du ikkje vil bry deg med å installera Castopod manuelt, kan du bruka ei av
pakkene som brukarsamfunnet har laga. Det er tilhengjarar og brukarar av open
kjeldekode som lagar og vedlikeheld desse pakkene.
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
### Installer med Yunohost
[Yunohost](https://yunohost.org/) er ein Linux-distribusjon som er bygd på
Debian GNU/Linux og som inneheld frie og opne program. Yunohost tek seg av det
meste som har med oppsett av eigen vevtenar å gjera.
[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">
@ -149,16 +154,16 @@ meste som har med oppsett av eigen vevtenar å gjera.
### Installer med Docker
Viss du vil bruka Docker til å installera Castopod, er det mogleg takk vere
If you wish to use Docker to install Castopod, it is possible thanks to
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Installer
med
Docker<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>
::: info
::: info Note
Etter som mange spør etter Docker-installasjon, planlegg me å laga ei offisiell
Docker-pakke for Castopod her i vårt eige arkiv.
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
:::

View file

@ -22,16 +22,21 @@ over heile verda&nbsp;bruker&nbsp;det!
:::
<div class="flex items-center">
<a href="/nn-NO/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">Installer<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>
<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">Installer<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>
## Funksjonar
- 🌱 &nbsp;Fri og open (AGPL v3-lisens)
- 🌱 &nbsp;Fri og open (AGPL v3-lisens) <<<<<<< HEAD
- 🔐 &nbsp;Legg vekt på at du eig dine eigne data: innhaldet, publikum og
analysedata høyrer deg til, og&nbsp;berre&nbsp;deg
- 🪄 &nbsp;Podkasting 2.0-funksjonar: GUID, låsing, transkribering,
finansiering, kapittel, stader, personar, lydbetar…
finansiering, kapittel, stader, personar, lydbetar… =======
- 🔐 &nbsp;Legg vekt på at du eig dine eigne data: innhaldet, publikum og
analysedata høyrer deg til, og&nbsp;berre&nbsp;deg
- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
> > > > > > > 88098377 (New translations index.md (Norwegian Nynorsk))
- 💬 &nbsp;Innebygd sosialt nettverk:
- 🚀 &nbsp;Castopod er ein del av fødiverset, som er eit desentralisert
sosialt nettverk
@ -199,7 +204,7 @@ lesa korleis du
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
Copyright © 2020-d.d., [Ad Aures](https://adaures.com/).
[release]: https://code.castopod.org/adaures/castopod/-/releases
[release-badge]:

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -206,6 +206,11 @@ 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
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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -9,6 +9,14 @@ Castopod foi pensado para ser fácil de instalar. Seja usando hospedagem dedicad
ou compartilhada, você pode instalá-lo na maioria dos servidores web compatíveis
com PHP-MySQL.
::: info Nota
Esta seção da documentação o ajudará a configurar o Castopod para produção. Se
você deseja participar do desenvolvimento do Castopod, pode pular para a seção
de contribuição.
:::
## Requisitos
- PHP v8.0 ou superior
@ -17,7 +25,7 @@ com PHP-MySQL.
### PHP v8.0 ou superior
É necessário PHP versão 8.0 ou superior com as seguintes extensões instaladas:
É necessário PHP versão 8.0 ou superior, com as seguintes extensões instaladas:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
@ -39,9 +47,9 @@ seu PHP:
::: warning Aviso
Castopod só funciona com bancos de dados compatíveis com MySQL 5.7 ou superior.
Vai quebrar com a versão anteiror do MySQL, v5.6, por exemplo, pois teve seu
ciclo encerrado em 5 de fevereiro de 2021.
Castopod só funciona com bancos de dados MySQL 5.7 ou superior compatíveis. Vai
quebrar com a versão anterior MySQL v5.6, por exemplo, pois foi encerrada em 5
de fevereiro de 2021.
:::
@ -51,14 +59,14 @@ entre em contato com o administrador do servidor.
#### Privilégios
O usuário deve ter pelo menos estes privilégios no banco de dados para que o
Castopod funcione: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`,
O usuário deve ter pelo menos esses privilégios no banco de dados do Castopod
para funcionar: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`,
`SELECT`, `UPDATE`.
### (Opcional) FFmpeg v4.1.8 ou superior para Clipes de Vídeo
[FFmpeg](https://www.ffmpeg.org/) versão 4.1.8 ou superior é necessário se você
deseja gerar Clipes de Vídeo. As seguintes extensões devem ser instaladas:
deseja gerar Video Clips. As seguintes extensões devem ser instaladas:
- Biblioteca **FreeType 2** para
[gd](https://www.php.net/manual/en/image.installation.php).
@ -133,7 +141,7 @@ usar um dos pacotes criados e mantidos pela comunidade de código aberto.
### Instalar com YunoHost
[YunoHost](https://yunohost.org/) é uma distribuição baseada no Debian GNU/Linux
composta por pacotes de software livre e de código aberto. Ele gerencia as
composto por pacotes de software livre e de código aberto. Ele gerencia as
dificuldades de auto-hospedagem para você.
<div class="flex flex-wrap items-center gap-4">

View file

@ -21,7 +21,7 @@ podcasters em todo o mundo!
:::
<div class="flex items-center">
<a href="/pt-BR/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">Instalar<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>
<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">Instalar<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>
## Funcionalidades
@ -29,8 +29,8 @@ podcasters em todo o mundo!
- 🌱 &nbsp;Livre & de código aberto (Licença AGPL v3)
- 🔐 &nbsp;Focado na soberania de dados: seu conteúdo, público e análises
pertence a você, e somente você
- 🪄 &nbsp;Recursos de Podcasting 2.0: GUID, bloqueado, transcrições,
financiamento, capítulos, localização, pessoas, clipes de áudio, …
- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
- 💬 &nbsp;Rede social integrada:
- 🚀 &nbsp;Castopod é parte do Fediverso, uma rede social descentralizada
- ❤️ &nbsp;Crie publicações, compartilhe, favorite e comente em episódios
@ -188,11 +188,11 @@ sobre o Castopod:
- [LinkedIn](https://linkedin.com/company/castopod)
- [Facebook](https://www.facebook.com/castopod)
## Patrocinadores
## Apoiadores
O desenvolvimento contínuo do Castopod é possível com o apoio de seus
patrocinadores. Se você quiser ajudar, por favor considere
[patrocinar o desenvolvimento do Castopod](https://opencollective.com/castopod/contribute).
apoiadores. Se você quiser ajudar, por favor considere
[apoiar o desenvolvimento do Castopod](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="Logo de Ad Aures" class="h-16" /></a>
@ -203,24 +203,17 @@ patrocinadores. Se você quiser ajudar, por favor considere
[Licença Pública Geral GNU Affero v3.0](https://choosealicense.com/licenses/agpl-3.0/)
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
Copyright © 2020-presente, [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
[release-badge]:
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
[license-badge]:
https://img.shields.io/github/license/ad-aures/castopod?color=blue
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
[contributions-badge]:
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
[semantic-release]: https://github.com/semantic-release/semantic-release
[semantic-release-badge]:
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[discord]: https://castopod.org/discord
[discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8
[stars]: https://github.com/ad-aures/castopod/stargazers
[stars-badge]:
https://img.shields.io/github/stars/ad-aures/castopod?style=social
[crowdin]: https://translate.castopod.org/project/castopod
[crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -0,0 +1,170 @@
---
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
### PHP v8.0 or higher
PHP version 8.0 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`.
### (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):
- For social features to work properly, this task is used to broadcast social
activities to your followers on the fediverse:
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
```
- For having your episodes be broadcasted on open hubs upon publication using
[WebSub](https://en.wikipedia.org/wiki/WebSub):
```bash
* * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
```
- For Video Clips to be created (see
[FFmpeg requirements](#ffmpeg-v418-or-higher-for-video-clips)):
```bash
* * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips
```
> These tasks run **every minute**. You may set the frequency depending on
> your needs: every 5, 10 minutes or more.
### (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 update the `.env` file manually](#alternative-manual-configuration).
:::
## 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>
### Install with Docker
If you wish to use Docker to install Castopod, it is possible thanks to
[Romain de Laage](https://mamot.fr/@rdelaage)!
<a href="https://gitlab.utc.fr/picasoft/projets/services/castopod" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-md shadow gap-x-1 bg-[#1282d7] hover:no-underline hover:bg-[#0f6eb5]">Install
with
Docker<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>
::: info Note
Given high demand for docker, we plan on maintaining an official Castopod Docker
image directly into the Castopod repository.
:::

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,93 @@
---
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 ⚡.
## Automatic update instructions
> Coming soon... 👀
## Manual update instructions
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
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. Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)). They
are usually database migration scripts in `.sql` format to update your
database schema.
- 👉 Make sure you run the scripts on your phpmyadmin panel or using command
line to update the database along with the package files!
- 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)
5. If you are using redis, clear your cache.
6. ✨ Enjoy your fresh instance, you're all done!
## 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…

216
docs/src/sk/index.md Normal file
View file

@ -0,0 +1,216 @@
---
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.
::: info Status
Castopod is currently in **beta** but already quite stable and used by
podcasters around&nbsp;the&nbsp;world!
:::
<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;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 with more to
come!
## 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.
## 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

@ -8,6 +8,14 @@ sidebarDepth: 3
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.
::: info Note
This section of the documentation will help you set up Castopod for production.
If you are looking to partake in the development of Castopod, you may skip to
the contributing section.
:::
## Requirements
- PHP v8.0 or higher
@ -35,7 +43,7 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
::: warning
::: 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

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'edit publication',
'unpublish' => 'unpublish',
'delete' => 'احذف',
'deleted' => 'deleted',
'delete-permanently' => 'delete permanently',
'fediverse' => 'الفديفرس',
'block-lists' => 'قوائم حجب',
'users' => 'مستخدمون',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'غير منشورة',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'الحلقة',
'visibility' => 'الظهور',
'comments' => 'التعليقات',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'تم إنشاء الحلقة بنجاح!',
'editSuccess' => 'تم تحديث الحلقة بنجاح!',
'publishCancelSuccess' => 'تم إلغاء نشر الحلقة بنجاح!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'غلاف الحلقة',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'العنوان',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
@ -147,9 +174,9 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'احذف',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Embeddable player',

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'الصورة الرمزية',
'avatar_size_hint' =>
'Avatar must be squared with at least 400px wide and tall.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'الإسم الكامل',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',

View file

@ -26,14 +26,34 @@ return [
'createSuccess' => 'Podcast has been successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
'importSuccess' => 'Podcast has been successfully imported!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio with at least 1500px wide.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'title' => 'العنوان',
'handle' => 'Handle',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'season' => 'Season {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'This procedure may take a long time. As the current version does not show any progress while it runs, you will not see anything updated until it is done. In case of timeout error, increase `max_execution_time` value.',
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'الحلقات',
'episode-list' => 'جميع الحلقات',
'episode-create' => 'حلقة جديدة',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared with at least 512px wide and tall.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'حفظ',

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'kemmañ an embannadur',
'unpublish' => 'diembannañ',
'delete' => 'dilemel',
'deleted' => 'dilamet',
'delete-permanently' => 'dilemel da viken',
'fediverse' => 'kevrebed',
'block-lists' => 'roll ar re stanket',
'users' => 'implijerien·ezed',

View file

@ -39,6 +39,15 @@ return [
'not_published' => 'Diembann',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Rann',
'visibility' => 'Gwelusted',
'comments' => 'Evezhiadennoù',
@ -48,6 +57,24 @@ return [
'createSuccess' => 'Krouet eo bet ar rann gant berzh!',
'editSuccess' => 'Hizivaet eo bet ar rann gant berzh!',
'publishCancelSuccess' => 'Nullet eo bet embannadur ar rann gant berzh!',
'unpublishBeforeDeleteTip' => 'Ret eo deoc\'h diembannañ ar rann a-raok dilemel anezhi.',
'deletePublishedEpisodeError' => 'Diembannit ar rann a-raok dilemel anezhi mar plij.',
'deleteSuccess' => 'Dilamet eo bet ar rann gant berzh!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'Bez ez eus eus ur rann gant ar berradur-mañ (slug) dija.',
],
'form' => [
'file_size_error' =>
@ -58,7 +85,7 @@ return [
'cover' => 'Golo ar rann',
'cover_hint' =>
'Ma n\'ho peus ket kaset ur golo e vo implijet hini ar podkast en e blas.',
'cover_size_hint' => 'Ar golo a rankfe bezañ ur c\'harrez 1400px e vent da nebeutañ.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Titl',
'title_hint' =>
'Dleout a rafe anv ar rann, sklaer ha berr. Arabat lakaat niverenn ar rann pe ar c\'houlzad amañ.',
@ -148,7 +175,7 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Dilemel ar rann a zilamo an holl gemennadennoù liammet outi ha skarzhet e vo eus lanv RSS ar podkast.",
"Gant ar rann e vo dilamet an holl restroù media, evezhiadennoù, tennadoù video ha son liammet outi.",
'understand' => 'Komprennet eo, dilemel ar rann a fell din',
'submit' => 'Dilemel',
],

View file

@ -9,22 +9,22 @@ declare(strict_types=1);
*/
return [
'back_to_home' => 'Back to home',
'page' => 'Page',
'all_pages' => 'All pages',
'create' => 'New page',
'go_to_page' => 'Go to page',
'edit' => 'Edit page',
'delete' => 'Delete page',
'back_to_home' => 'Distreiñ d\'ar bennbajennad',
'page' => 'Pajenn',
'all_pages' => 'An holl bajennoù',
'create' => 'Krouiñ ur bajenn',
'go_to_page' => 'Mont d\'ar bajenn',
'edit' => 'Kemm ar bajenn',
'delete' => 'Dilemel ar bajenn',
'form' => [
'title' => 'Title',
'permalink' => 'Permalink',
'content' => 'Content',
'submit_create' => 'Create page',
'submit_edit' => 'Save',
'title' => 'Titl',
'permalink' => 'Peurliamm',
'content' => 'Danvez',
'submit_create' => 'Krouiñ ar bajenn',
'submit_edit' => 'Enrollañ',
],
'messages' => [
'createSuccess' => 'The page “{pageTitle}” was created successfully!',
'editSuccess' => 'The page was successfully updated!',
'createSuccess' => 'Krouet eo bet ar bajenn "{pageTitle}" gant berzh!',
'editSuccess' => 'Hizivaet eo bet ar bajenn gant berzh!',
],
];

View file

@ -9,13 +9,13 @@ declare(strict_types=1);
*/
return [
'pageNavigation' => 'Page navigation',
'first' => 'First',
'previous' => 'Previous',
'next' => 'Next',
'last' => 'Last',
'older' => 'Older',
'newer' => 'Newer',
'invalidTemplate' => '{0} is not a valid Pager template.',
'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
'pageNavigation' => 'Merdeiñ',
'first' => 'Kentañ',
'previous' => 'Kent',
'next' => 'Da heul',
'last' => 'Diwezhañ',
'older' => 'Koshañ',
'newer' => 'Nevesañ',
'invalidTemplate' => 'N\'eo ket {0} ur patrom reizh.',
'invalidPaginationGroup' => 'N\'eo ket {0} ur strollad reizh.',
];

View file

@ -9,22 +9,22 @@ declare(strict_types=1);
*/
return [
'persons' => 'Persons',
'all_persons' => 'All persons',
'no_person' => 'Nobody found!',
'create' => 'Create a person',
'view' => 'View person',
'edit' => 'Edit person',
'delete' => 'Delete person',
'persons' => 'Emellerien·ezed',
'all_persons' => 'An holl emellerien·ezed',
'no_person' => 'Emeller·ez ebet!',
'create' => 'Krouiñ un emeller·ez',
'view' => 'Gwelet an emeller·ez',
'edit' => 'Kemmañ an emeller·ez',
'delete' => 'Dilemel an emeller·ez',
'messages' => [
'createSuccess' => 'Person has been successfully created!',
'editSuccess' => 'Person has been successfully updated!',
'deleteSuccess' => 'Person has been removed!',
'createSuccess' => 'Krouet eo bet an emeller·ez gant berzh!',
'editSuccess' => 'Hizivaet eo bet an emeller·ez gant berzh!',
'deleteSuccess' => 'Tennet eo bet an emeller·ez!',
],
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Avatar must be squared with at least 400px wide and tall.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',

View file

@ -26,19 +26,39 @@ return [
'createSuccess' => 'Krouet eo bet ar podkast gant berzh!',
'editSuccess' => 'Hizivaet eo bet ar podkast gant berzh!',
'importSuccess' => 'Enporzhet eo bet ar podkast gant berzh!',
'deleteSuccess' => 'Dilamet eo bet ar podkast @{podcast_handle} gant berzh!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'identity_section_title' => 'Titouroù diwar-benn ar podkast',
'identity_section_subtitle' => 'Ar maeziennoù a laka ac\'hanoc\'h da vezañ remerket.',
'cover' => 'Golo ar podkast',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio with at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Giton ar podkast',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Dilemel giton ar podkast',
'title' => 'Titl',
'handle' => 'Handle',
'handle' => 'Anv ar podkast (handle)',
'handle_hint' =>
'Used to identify the podcast. Uppercase, lowercase, numbers and underscores are accepted.',
'Implijet evit anavezout ar podkast. Lizherennoù bras pe munut, niveroù hag islinenn (_) degemeret.',
'type' => [
'label' => 'Doare',
'episodic' => 'Episodic',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'season' => 'Season {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'This procedure may take a long time. As the current version does not show any progress while it runs, you will not see anything updated until it is done. In case of timeout error, increase `max_execution_time` value.',
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared with at least 512px wide and tall.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'Save',

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'Veröffentlichung bearbeiten',
'unpublish' => 'Veröffentlichung aufheben',
'delete' => 'löschen',
'deleted' => 'gelöscht',
'delete-permanently' => 'Endgültig löschen',
'fediverse' => 'Fediversum',
'block-lists' => 'Sperrlisten',
'users' => 'Benutzer',

View file

@ -9,10 +9,10 @@ declare(strict_types=1);
*/
return [
'podcast_contributors' => 'Podcast-Mitwirkende',
'podcast_contributors' => 'Podcast-Administratoren',
'view' => "{username}'s Mitwirkung an {podcastTitle}",
'add' => 'Mitwirkenden zufügen',
'add_contributor' => 'Mitwirkenden zufügen für {0}',
'add' => 'Adminstrator zufügen',
'add_contributor' => 'Administrator zufügen für {0}',
'edit_role' => 'Rolle aktualisieren für {0}',
'edit' => 'Bearbeiten',
'remove' => 'Entfernen',
@ -25,7 +25,7 @@ return [
'user_placeholder' => 'Benutzer auswählen…',
'role' => 'Rolle',
'role_placeholder' => 'Rolle auswählen…',
'submit_add' => 'Mitwirkenden zufügen',
'submit_add' => 'Administrator zufügen',
'submit_edit' => 'Rolle aktualisieren',
],
'roles' => [
@ -36,6 +36,6 @@ return [
'removeSuccess' =>
'{username} wurde von {podcastTitle} entfernt',
'alreadyAddedError' =>
"Der Mitwirkende wurde bereits zugefügt!",
"Der Adminstrator wurde bereits zugefügt!",
],
];

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'Nicht veröffentlicht',
],
'list' => [
'search' => [
'placeholder' => 'Suche nach einer Episode',
'clear' => 'Suche zurücksetzen',
'submit' => 'Suche',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Folge',
'visibility' => 'Sichtweite',
'comments' => 'Komemntar',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'Folge wurde erfolgreich erstellt!',
'editSuccess' => 'Folge wurde erfolgreich aktualisiert!',
'publishCancelSuccess' => 'Veröffentlichung der Episode erfolgreich abgebrochen!',
'unpublishBeforeDeleteTip' => 'Du musst die Episode zurückziehen, bevor du sie löschst.',
'deletePublishedEpisodeError' => 'Bitte ziehe die Episode zurück, bevor du sie löschst.',
'deleteSuccess' => 'Folge erfolgreich gelöscht!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'Eine Folge mit dem ausgewählten Slug existiert bereits.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Episoden-Cover',
'cover_hint' =>
'Wenn Du kein Cover festlegst, wird stattdessen das Podcast-Cover verwendet.',
'cover_size_hint' => 'Das Cover muss quadratisch sein und mindestens 1400 Pixel breit und hoch sein.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Titel',
'title_hint' =>
'Nutze einen klaren und einprägsamen Episodennamen. Gib hier nicht die Episoden- oder Staffelnummern an.',
@ -89,7 +116,7 @@ return [
'Dieser Text wird am Ende jeder Episodenbeschreibung hinzugefügt, es ist ein guter Ort, um zum Beispiel Ihre sozialen Links einzufügen.',
'additional_files_section_title' => 'Zusätzliche Dateien',
'additional_files_section_subtitle' =>
'Diese Filter können von anderen Platformen genutzt werden, um eine bessere Nutzererfahrung bieten zu können. Weitere Informationen sind unter {podcastNamespaceLink} zu finden.',
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Standort',
'location_section_subtitle' => 'Über welchen Ort handelt diese Folge?',
'location_name' => 'Standortname oder Adresse',
@ -147,9 +174,9 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Das Löschen der Folge löscht alle damit verbundenen Beiträge und entfernt sie aus dem RSS-Feed des Podcasts.",
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'Ich verstehe, ich möchte die Folge löschen',
'submit' => 'Löschen',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Einbettbarer Spieler',

View file

@ -18,9 +18,9 @@ return [
'podcast-list' => 'Alle Podcasts',
'podcast-create' => 'Neuer Podcast',
'podcast-import' => 'Podcast importieren',
'persons' => 'Personen',
'person-list' => 'Alle Personen',
'person-create' => 'Neue Person',
'persons' => 'Mitwirkende',
'person-list' => 'Alle Mitwirkenden',
'person-create' => 'Neuer Mitwirkender',
'fediverse' => 'Fediversum',
'fediverse-blocked-actors' => 'Blockierte Konten',
'fediverse-blocked-domains' => 'Blockierte Domains',

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'Profilbild',
'avatar_size_hint' =>
'Das Profilbild muss quadratisch sein und mindestens 400 Pixel breit und hoch.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Vollständiger Name',
'full_name_hint' => 'Dies ist der vollständige Name oder der Alias der Person.',
'unique_name' => 'Eindeutiger Name',

View file

@ -18,7 +18,7 @@ return [
'edit' => 'Podcast bearbeiten',
'delete' => 'Podcast löschen',
'see_episodes' => 'Episoden ansehen',
'see_contributors' => 'Mitwirkende anzeigen',
'see_contributors' => 'Administratoren anzeigen',
'go_to_page' => 'Gehe zur Seite',
'latest_episodes' => 'Neueste Folgen',
'see_all_episodes' => 'Alle Folgen anzeigen',
@ -26,14 +26,34 @@ return [
'createSuccess' => 'Der Podcast wurde erfolgreich erstellt!',
'editSuccess' => 'Der Podcast wurde erfolgreich aktualisiert!',
'importSuccess' => 'Der Podcast wurde erfolgreich importiert!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast-Identität',
'identity_section_subtitle' => 'Diese Felder erlauben es dir, Aufmerksamkeit zu bekommen.',
'cover' => 'Podcast-Cover',
'cover_size_hint' => 'Das Cover muss quadratisch sein und mindestens 1400 Pixel breit und hoch sein.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast-Banner',
'banner_size_hint' => 'Das Banner muss ein 3:1-Verhältnis und mindestens 1500px Breite haben.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Podcast-Banner löschen',
'title' => 'Titel',
'handle' => 'Identifikator',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'Dies wird innerhalb des ❬channel❭ Tags eingefügt.',
'new_feed_url' => 'Neue Feed-URL',
'new_feed_url_hint' => 'Benutzen Sie dieses Feld, wenn Sie zu einer anderen Domain oder Podcast-Plattform wechseln. Standardmäßig wird der Wert auf die aktuelle RSS URL gesetzt, wenn der Podcast importiert wird.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnerschaft:en',
'partner_id' => 'ID',
'partner_link_url' => 'Link',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Filmkritiken',
'tv_reviews' => 'TV-Kritiken',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'Von {publisher}',
'season' => 'Staffel {seasonNumber}',
'list_of_episodes_year' => '{year} Folgen ({episodeCount})',
@ -227,12 +256,12 @@ return [
'no_episode' => 'Keine Folge gefunden!',
'follow' => 'Folgen',
'followers' => '{numberOfFollowers, plural,
one {# Follower}
other {# Follower}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# Beitrag}
other {# Beiträge}
one {# post}
other {# posts}
}',
'activity' => 'Aktivitäten',
'episodes' => 'Folgen',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'Dieses Verfahren kann lange dauern. Da die aktuelle Version keinen Fortschritt anzeigt, während sie läuft, werden Sie keine Aktuallisierung mehr sehen, bis sie fertig ist. Im Falle eines Timeout-Fehlers erhöhen Sie den `max_execution_time` Wert.',
'Dieses Verfahren kann lange dauern.<br/>Da die aktuelle Version keinen Fortschritt anzeigt, während sie läuft, werden Sie keine Aktuallisierung mehr sehen, bis sie fertig ist.<br/>Im Falle eines Timeout-Fehlers erhöhen Sie den `max_execution_time` Wert.',
'old_podcast_section_title' => 'Der zu importierende Podcast',
'old_podcast_section_subtitle' =>
'Stellen Sie sicher, dass Sie die Rechte für diesen Podcast besitzen, bevor Sie ihn importieren. Vervielfältigung und Ausstrahlung eines Podcasts ohne die entsprechenden Rechte sind Piraterie und strafbar.',

View file

@ -13,10 +13,11 @@ return [
'dashboard' => 'Podcast-Dashboard',
'podcast-view' => 'Startseite',
'podcast-edit' => 'Podcast bearbeiten',
'podcast-persons-manage' => 'Personen verwalten',
'podcast-persons-manage' => 'Mitwirkende verwalten',
'episodes' => 'Folgen',
'episode-list' => 'Alle Episoden',
'episode-create' => 'Neue Episoden',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analysen',
'podcast-analytics' => 'Zuhörer-Übersicht',
'podcast-analytics-webpages' => 'Webseiten-Besuche',
@ -25,9 +26,9 @@ return [
'podcast-analytics-players' => 'Podcast-Player',
'podcast-analytics-listening-time' => 'Hörzeit',
'podcast-analytics-time-periods' => 'Zeiträume',
'contributors' => 'Mitwirkende',
'contributors' => 'Administratoren',
'contributor-list' => 'Alle Unterstützer',
'contributor-add' => 'Mitwirkenden hinzufügen',
'contributor-add' => 'Administrator hinzufügen',
'platforms' => 'Externe Plattformen',
'platforms-podcasting' => 'Podcasting',
'platforms-social' => 'Soziale Netzwerke',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Webseiten-Icon',
'site_icon_delete' => 'Lösche Webseiten-Icon',
'site_icon_hint' => 'Webseiten-Icons sind das, was Sie auf Ihrem Browser Tabs, Lesezeichenleiste und wenn Sie eine Website als Verknüpfung auf mobilen Geräten hinzufügen, sehen.',
'site_icon_helper' => 'Das Icon muss quadratisch sein und mindestens 512 Pixel breit und hoch.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Seitenname',
'site_description' => 'Seitenbeschreibung',
'submit' => 'Speichern',

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'επεξεργασία δημοσίευσης',
'unpublish' => 'αναίρεση δημοσίευσης',
'delete' => 'διαγραφή',
'deleted' => 'διαγράφηκε',
'delete-permanently' => 'οριστική διαγραφή',
'fediverse' => 'fediverse',
'block-lists' => 'λίστες αποκλεισμένων',
'users' => 'χρήστες',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'Δεν έχει δημοσιευτεί',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Επεισόδιο',
'visibility' => 'Ορατότητα',
'comments' => 'Σχόλια',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Το επεισόδιο ενημερώθηκε με επιτυχία!',
'publishCancelSuccess' => 'Η δημοσίευση του επεισοδίου ακυρώθηκε επιτυχώς!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Εξώφυλλο επισοδίου',
'cover_hint' =>
'Εάν δεν ορίσετε ένα εξώφυλλο, το εξώφυλλο του podcast θα χρησιμοποιηθεί αντ \'αυτού.',
'cover_size_hint' => 'Το εξώφυλλο πρέπει να είναι τουλάχιστον 1400px πλάτος και ύψος.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Τίτλος',
'title_hint' =>
'Θα πρέπει να υπάρχει ένα σαφές και συνοπτικό όνομα επεισοδίου. Μην καθορίσετε εδώ το επεισόδιο ή τους αριθμούς της σεζόν.',
@ -75,91 +102,91 @@ return [
],
'parental_advisory' => [
'label' => 'Γονικός σύμβουλος',
'hint' => 'Does the episode contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
'hint' => 'Μήπως το επεισόδιο περιέχει ακατάλληλο περιεχόμενο;',
'undefined' => 'απροσδιόριστο',
'clean' => 'Καθαρισμός',
'explicit' => 'Άσεμνο περιεχόμενο',
],
'show_notes_section_title' => 'Show notes',
'show_notes_section_title' => 'Εμφάνιση σημειώσεων',
'show_notes_section_subtitle' =>
'Up to 4000 characters, be clear and concise. Show notes help potential listeners in finding the episode.',
'description' => 'Description',
'description_footer' => 'Description footer',
'Μέχρι 4000 χαρακτήρες, να είναι σαφείς και συνοπτικές. Η εμφάνιση σημειώσεων βοηθάει πιθανούς ακροατές στην εύρεση του επεισοδίου.',
'description' => 'Περιγραφή',
'description_footer' => 'Υποσέλιδο περιγραφής',
'description_footer_hint' =>
'This text is added at the end of each episode description, it is a good place to input your social links for example.',
'additional_files_section_title' => 'Additional files',
'Αυτό το κείμενο προστίθεται στο τέλος του κάθε επεισοδίου, είναι ένα καλό μέρος για να εισάγετε κοινωνικές συνδέσεις για παράδειγμα.',
'additional_files_section_title' => 'Επιπρόσθετα αρχεία',
'additional_files_section_subtitle' =>
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this episode about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real or fictional location',
'transcript' => 'Transcript (subtitles / closed captions)',
'transcript_hint' => 'Only .srt are allowed.',
'transcript_download' => 'Download transcript',
'transcript_file' => 'Transcript file (.srt)',
'transcript_remote_url' => 'Remote url for transcript',
'transcript_file_delete' => 'Delete transcript file',
'chapters' => 'Chapters',
'chapters_hint' => 'File must be in JSON Chapters format.',
'chapters_download' => 'Download chapters',
'chapters_file' => 'Chapters file',
'chapters_remote_url' => 'Remote url for chapters file',
'chapters_file_delete' => 'Delete chapters file',
'advanced_section_title' => 'Advanced Parameters',
'Αυτά τα αρχεία μπορούν να χρησιμοποιηθούν από άλλες πλατφόρμες για την παροχή καλύτερης εμπειρίας στο κοινό σας. Δείτε το {podcastNamespaceLink} για περισσότερες πληροφορίες.',
'location_section_title' => 'Τοποθεσία',
'location_section_subtitle' => 'Σε ποιο μέρος είναι αυτό το επεισόδιο;',
'location_name' => 'Όνομα τοποθεσίας ή διεύθυνση',
'location_name_hint' => 'Αυτή μπορεί να είναι μια πραγματική ή φανταστική τοποθεσία',
'transcript' => 'Απομαγνητοφώνηση (υπότιτλοι / κλειστοί υπότιτλοι)',
'transcript_hint' => 'Επιτρέπονται μόνο .srt αρχεία.',
'transcript_download' => 'Λήψη απομαγνητοφώνησης',
'transcript_file' => 'Αρχείο απομαγνητοφώνησης (.srt)',
'transcript_remote_url' => 'Απομακρυσμένη διεύθυνση url για απομαγνητοφώνηση',
'transcript_file_delete' => 'Διαγραφή αρχείου απομαγνητοφώνησης',
'chapters' => 'Κεφάλαια',
'chapters_hint' => 'Το αρχείο πρέπει να είναι σε μορφή JSON.',
'chapters_download' => 'Κατεβάστε τα κεφάλαια',
'chapters_file' => 'Αρχεία κεφαλαίων',
'chapters_remote_url' => 'Απομακρυσμένη διεύθυνση url για αρχεία κεφαλαίων',
'chapters_file_delete' => 'Διαγραφή αρχείου κεφαλαίων',
'advanced_section_title' => 'Προηγμένες Παράμετροι',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the episode',
'custom_rss_hint' => 'This will be injected within the ❬item❭ tag.',
'block' => 'Episode should be hidden from all platforms',
'Αν χρειάζεστε ετικέτες RSS που δεν χειρίζεται το Castopod, ορίστε τις εδώ.',
'custom_rss' => 'Προσαρμοσμένες ετικέτες RSS για το επεισόδιο',
'custom_rss_hint' => 'Αυτό θα ενεθεί εντός της ετικέτας "item".',
'block' => 'Το επεισόδιο πρέπει να είναι κρυμμένο από όλες τις πλατφόρμες',
'block_hint' =>
'The episode show or hide post. If you want this episode removed from the Apple directory, toggle this on.',
'submit_create' => 'Create episode',
'submit_edit' => 'Save episode',
'Το επεισόδιο εμφανίζει ή αποκρύπτει την ανάρτηση. Αν θέλετε αυτό το επεισόδιο να αφαιρεθεί από τον κατάλογο της Apple, ενεργοποιήστε το.',
'submit_create' => 'Δημιουργία επεισοδίου',
'submit_edit' => 'Αποθήκευση επεισοδίου',
],
'publish_form' => [
'back_to_episode_dashboard' => 'Back to episode dashboard',
'post' => 'Your announcement post',
'back_to_episode_dashboard' => 'Πίσω στον Πίνακα Ελέγχου',
'post' => 'Η ανακοίνωσή σας',
'post_hint' =>
"Write a message to announce the publication of your episode. The message will be broadcasted to all your followers in the fediverse and be featured in your podcast's homepage.",
'message_placeholder' => 'Write your message…',
'publication_date' => 'Publication date',
"Γράψτε ένα μήνυμα για να ανακοινώσετε τη δημοσίευση του επεισοδίου σας. Το μήνυμα θα μεταδοθεί σε όλους τους οπαδούς σας στο fediverse και θα εμφανίζεται στην αρχική σελίδα του podcast σας.",
'message_placeholder' => 'Γράψτε το μήνυμά σας…',
'publication_date' => 'Ημερομηνία δημοσίευσης',
'publication_method' => [
'now' => 'Now',
'schedule' => 'Schedule',
'now' => 'Τώρα',
'schedule' => 'Προγραμματισμός',
],
'scheduled_publication_date' => 'Scheduled publication date',
'scheduled_publication_date_clear' => 'Clear publication date',
'scheduled_publication_date' => 'Ημερομηνία προγραμματισμένης δημοσίευσης',
'scheduled_publication_date_clear' => 'Εκκαθάριση ημερομηνίας δημοσίευσης',
'scheduled_publication_date_hint' =>
'You can schedule the episode release by setting a future publication date. This field must be formatted as YYYY-MM-DD HH:mm',
'submit' => 'Publish',
'submit_edit' => 'Edit publication',
'cancel_publication' => 'Cancel publication',
'message_warning' => 'You did not write a message for your announcement post!',
'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.',
'Μπορείτε να προγραμματίσετε την έκδοση επεισοδίων ορίζοντας μια μελλοντική ημερομηνία δημοσίευσης. Αυτό το πεδίο πρέπει να μορφοποιηθεί ως ΕΕΕ-ΜΜ-ΗΗ HH:mm',
'submit' => 'Δημοσίευση',
'submit_edit' => 'Επεξεργασία δημοσίευσης',
'cancel_publication' => 'Ακύρωση δημοσίευσης',
'message_warning' => 'Δεν γράψατε μήνυμα για την ανακοίνωσή σας!',
'message_warning_hint' => 'Έχοντας ένα μήνυμα αυξάνει την κοινωνική δέσμευση, με αποτέλεσμα μια καλύτερη προβολή για το επεισόδιο σας.',
'message_warning_submit' => 'Δημοσίευση ούτως ή άλλως',
],
'unpublish_form' => [
'disclaimer' =>
"Η κατάργηση της δημοσίευσης του επεισοδίου θα διαγράψει όλες τις δημοσιεύσεις που σχετίζονται με αυτό και θα τις αφαιρέσει από τη ροή RSS του podcast.",
'understand' => 'I understand, I want to unpublish the episode',
'submit' => 'Unpublish',
'understand' => 'Καταλαβαίνω, θέλω να αποδημοσιεύσει το επεισόδιο',
'submit' => 'Αναίρεση δημοσίευσης',
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
'understand' => 'I understand, I want to delete the episode',
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'Καταλαβαίνω, θέλω να διαγράψω το επεισόδιο',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Embeddable player',
'title' => 'Ενσωματώσιμος αναπαραγωγέας',
'label' =>
'Pick a theme color, copy the embeddable player to clipboard, then paste it on your website.',
'clipboard_iframe' => 'Copy embeddable player to clipboard',
'clipboard_url' => 'Copy address to clipboard',
'dark' => 'Dark',
'dark-transparent' => 'Dark transparent',
'light' => 'Light',
'light-transparent' => 'Light transparent',
'Επιλέξτε ένα χρώμα θέματος, αντιγράψτε τον ενσωματωμένο παίκτη στο πρόχειρο και στη συνέχεια επικολλήστε το στην ιστοσελίδα σας.',
'clipboard_iframe' => 'Αντιγραφή ενσωματωμένου αναπαραγωγέα στο πρόχειρο',
'clipboard_url' => 'Αντιγραφή διεύθυνσης στο πρόχειρο',
'dark' => 'Σκοτεινό',
'dark-transparent' => 'Σκούρο διαφανές',
'light' => 'Ανοιχτόχρωμο',
'light-transparent' => 'Ανοιχτό διαφανές',
],
];

View file

@ -9,15 +9,15 @@ declare(strict_types=1);
*/
return [
'go_to_page' => 'View episode page',
'dashboard' => 'Episode dashboard',
'episode-view' => 'Home',
'episode-edit' => 'Edit episode',
'episode-persons-manage' => 'Manage persons',
'embed-add' => 'Embeddable player',
'clips' => 'Clips',
'video-clips-list' => 'Video clips',
'video-clips-create' => 'New video clip',
'soundbites-list' => 'Soundbites',
'soundbites-create' => 'New soundbite',
'go_to_page' => 'Προβολή σελίδας επεισοδίου',
'dashboard' => 'Πίνακας εργαλείων επεισοδίου',
'episode-view' => 'Αρχική σελίδα',
'episode-edit' => 'Επεξεργασία επεισοδίου',
'episode-persons-manage' => 'Διαχείριση ατόμων',
'embed-add' => 'Ενσωματώσιμος αναπαραγωγέας',
'clips' => 'Αποσπάσματα',
'video-clips-list' => 'Βίντεο κλιπς',
'video-clips-create' => 'Νέο βίντεο κλιπ',
'soundbites-list' => 'Ήχοι',
'soundbites-create' => 'Νέο soundbite',
];

View file

@ -10,23 +10,23 @@ declare(strict_types=1);
return [
'messages' => [
'actorNotFound' => 'The account could not be found!',
'blockActorSuccess' => '{actor} has been blocked!',
'unblockActorSuccess' => 'Actor has been unblocked!',
'blockDomainSuccess' => '{domain} has been blocked!',
'unblockDomainSuccess' => '{domain} has been unblocked!',
'actorNotFound' => 'Δεν βρέθηκε ο λογαριασμός!',
'blockActorSuccess' => '{0} έχει αποκλειστεί!',
'unblockActorSuccess' => 'Ο ηθοποιός έχει ξεμπλοκαριστεί!',
'blockDomainSuccess' => '{domain} έχει αποκλειστεί!',
'unblockDomainSuccess' => '{domain} έχει ξεμπλοκαριστεί!',
],
'blocked_actors' => 'Blocked accounts',
'blocked_domains' => 'Blocked domains',
'blocked_actors' => 'Αποκλεισμένοι λογαριασμοί',
'blocked_domains' => 'Αποκλεισμένοι τομείς',
'block_lists_form' => [
'handle' => 'Account handle',
'handle_hint' => 'Input @username@domain account.',
'domain' => 'Domain name',
'submit' => 'Block!',
'handle' => 'Χειρισμός λογαριασμού',
'handle_hint' => 'Εισαγωγή λογαριασμού @username@domain.',
'domain' => 'Όνομα τομέα',
'submit' => 'Αποκλεισμός!',
],
'list' => [
'actor' => 'Account',
'domain' => 'Domain name',
'unblock' => 'Unblock',
'actor' => 'Λογαριασμός',
'domain' => 'Όνομα τομέα',
'unblock' => 'Ξεμπλοκάρισμα',
],
];

View file

@ -9,6 +9,6 @@ declare(strict_types=1);
*/
return [
'all_podcasts' => 'All podcasts',
'no_podcast' => 'No podcast found',
'all_podcasts' => 'Όλα τα podcasts',
'no_podcast' => 'Δεν βρέθηκαν podcast',
];

View file

@ -9,53 +9,53 @@ declare(strict_types=1);
*/
return [
'manual_config' => 'Manual configuration',
'manual_config' => 'Χειροκίνητη ρύθμιση',
'manual_config_subtitle' =>
'Create a `.env` file with your settings and refresh the page to continue installation.',
'Δημιουργήστε ένα αρχείο `.env` με τις ρυθμίσεις σας και ανανεώστε τη σελίδα για να συνεχίσετε την εγκατάσταση.',
'form' => [
'instance_config' => 'Instance configuration',
'hostname' => 'Hostname',
'media_base_url' => 'Media base URL',
'instance_config' => 'Ρύθμιση παραμέτρων εμφάνισης',
'hostname' => 'Όνομα κεντρικού υπολογιστή',
'media_base_url' => 'Διεύθυνση URL πολυμέσων',
'media_base_url_hint' =>
'If you use a CDN and/or an external analytics service, you may set them here.',
'admin_gateway' => 'Admin gateway',
'Εάν χρησιμοποιείτε μια υπηρεσία CDN και/ ή μια εξωτερική υπηρεσία ανάλυσης, μπορείτε να την ρυθμίσετε εδώ.',
'admin_gateway' => 'Πύλη διαχειριστή',
'admin_gateway_hint' =>
'The route to access the admin area (eg. https://example.com/cp-admin). It is set by default as cp-admin, we recommend you change it for security reasons.',
'auth_gateway' => 'Auth gateway',
'Η διαδρομή πρόσβασης στην περιοχή διαχειριστή (π.χ. https://example.com/cp-admin). Έχει οριστεί από προεπιλογή ως cp-admin, σας συνιστούμε να την αλλάξετε για λόγους ασφαλείας.',
'auth_gateway' => 'Πύλη ταυτοποίησης',
'auth_gateway_hint' =>
'The route to access the authentication pages (eg. https://example.com/cp-auth). It is set by default as cp-auth, we recommend you change it for security reasons.',
'database_config' => 'Database configuration',
'Η διαδρομή πρόσβασης στην περιοχή διαχειριστή (π.χ. https://example.com/cp-auth). Έχει οριστεί από προεπιλογή ως cp-admin, σας συνιστούμε να την αλλάξετε για λόγους ασφαλείας.',
'database_config' => 'Ρυθμίσεις βάσης δεδομένων',
'database_config_hint' =>
'Castopod needs to connect to your MySQL (or MariaDB) database. If you do not have these required info, please contact your server administrator.',
'db_hostname' => 'Database hostname',
'db_name' => 'Database name',
'db_username' => 'Database username',
'db_password' => 'Database password',
'db_prefix' => 'Database prefix',
'Το Castopod πρέπει να συνδεθεί στη βάση δεδομένων MySQL (ή MariaDB). Αν δεν έχετε αυτές τις απαιτούμενες πληροφορίες, παρακαλούμε επικοινωνήστε με το διαχειριστή του διακομιστή σας.',
'db_hostname' => 'Όνομα κεντρικού υπολογιστή βάσης δεδομένων',
'db_name' => 'Όνομα βάσης δεδομένων',
'db_username' => 'Όνομα Χρήστη Βάσης Δεδομένων',
'db_password' => 'Κωδικός πρόσβασης βάσης δεδομένων',
'db_prefix' => 'Πρόθεμα βάσης δεδομένων',
'db_prefix_hint' =>
"The prefix of the Castopod table names, leave as is if you don't know what it means.",
'cache_config' => 'Cache configuration',
"Το πρόθεμα των ονομασιών πινάκων Castopod αφήστε σαν να μην ξέρετε τι σημαίνει.",
'cache_config' => 'Διαμόρφωση cache',
'cache_config_hint' =>
'Choose your preferred cache handler. Leave it as the default value if you have no clue what it means.',
'cache_handler' => 'Cache handler',
'Επιλέξτε τον προτιμώμενο χειριστή προσωρινής μνήμης. Αφήστε την προεπιλεγμένη τιμή αν δεν έχετε ιδέα τι σημαίνει.',
'cache_handler' => 'Ρυθμιστής cache',
'cacheHandlerOptions' => [
'file' => 'File',
'file' => 'Αρχείο',
'redis' => 'Redis',
'predis' => 'Predis',
],
'next' => 'Next',
'submit' => 'Finish install',
'create_superadmin' => 'Create your superadmin account',
'next' => 'Επόμενο',
'submit' => 'Ολοκλήρωση εγκατάστασης',
'create_superadmin' => 'Δημιουργήστε το λογαριασμό υπερδιαχειριστή',
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'username' => 'Όνομα Χρήστη',
'password' => 'Κωδικόs πρόσβασης',
],
'messages' => [
'createSuperAdminSuccess' =>
'Your superadmin account has been created successfully. Login to start podcasting!',
'Ο λογαριασμός υπερδιαχειριστή έχει δημιουργηθεί με επιτυχία. Συνδεθείτε για να ξεκινήσετε το podcasting!',
'databaseConnectError' =>
'Castopod could not connect to your database. Edit your database configuration and try again.',
'Το Castopod δεν μπόρεσε να συνδεθεί στη βάση δεδομένων σας. Επεξεργαστείτε τη διαμόρφωση της βάσης δεδομένων σας και προσπαθήστε ξανά.',
'writeError' =>
"Couldn't create/write the `.env` file. You must create it manually by following the `.env.example` file template in the Castopod package.",
"Δεν ήταν δυνατή η δημιουργία/εγγραφή του αρχείου `.env`. Πρέπει να το δημιουργήσετε χειροκίνητα ακολουθώντας το πρότυπο αρχείου `.env.example` που περιγράφεται στο Castopod.",
],
];

View file

@ -9,10 +9,10 @@ declare(strict_types=1);
*/
return [
'info' => 'My account info',
'changePassword' => 'Change my password',
'info' => 'Πληροφορίες Λογαριασμού',
'changePassword' => 'Αλλαγή κωδικού πρόσβασης',
'messages' => [
'wrongPasswordError' => "You've entered the wrong password, try again.",
'passwordChangeSuccess' => 'Password has been successfully changed!',
'wrongPasswordError' => "Έχετε εισάγει λάθος κωδικό πρόσβασης, προσπαθήστε ξανά.",
'passwordChangeSuccess' => 'Ο κωδικός πρόσβασής σας άλλαξε με επιτυχία!',
],
];

View file

@ -9,33 +9,33 @@ declare(strict_types=1);
*/
return [
'toggle_sidebar' => 'Toggle sidebar',
'go_to_website' => 'Go to website',
'go_to_admin' => 'Go to admin',
'dashboard' => 'Dashboard',
'admin' => 'Home',
'toggle_sidebar' => 'Εναλλαγή πλαϊνής μπάρας',
'go_to_website' => 'Μεταβείτε στον ιστότοπο',
'go_to_admin' => 'Μεταβείτε στον πίνακα διαχείρισης',
'dashboard' => 'Πίνακας εργαλείων',
'admin' => 'Αρχική σελίδα',
'podcasts' => 'Podcasts',
'podcast-list' => 'All podcasts',
'podcast-create' => 'New podcast',
'podcast-import' => 'Import a podcast',
'persons' => 'Persons',
'person-list' => 'All persons',
'person-create' => 'New person',
'podcast-list' => 'Όλα τα podcasts',
'podcast-create' => 'Νέο podcast',
'podcast-import' => 'Εισαγωγή ενός podcast',
'persons' => 'Πρόσωπα',
'person-list' => 'Όλα τα άτομα',
'person-create' => 'Νέο άτομο',
'fediverse' => 'Fediverse',
'fediverse-blocked-actors' => 'Blocked accounts',
'fediverse-blocked-domains' => 'Blocked domains',
'users' => 'Users',
'user-list' => 'All users',
'user-create' => 'New user',
'pages' => 'Pages',
'page-list' => 'All pages',
'page-create' => 'New Page',
'settings' => 'Settings',
'settings-general' => 'General',
'settings-theme' => 'Theme',
'fediverse-blocked-actors' => 'Αποκλεισμένοι λογαριασμοί',
'fediverse-blocked-domains' => 'Αποκλεισμένοι τομείς',
'users' => 'Χρήστες',
'user-list' => 'Όλοι οι χρήστες',
'user-create' => 'Νέος χρήστης',
'pages' => 'Σελίδες',
'page-list' => 'Όλες οι σελίδες',
'page-create' => 'Νέα σελίδα',
'settings' => 'Ρυθμίσεις',
'settings-general' => 'Γενικά',
'settings-theme' => 'Θέμα',
'account' => [
'my-account' => 'My account',
'change-password' => 'Change password',
'logout' => 'Logout',
'my-account' => 'Ο λογαριασμός μου',
'change-password' => 'Αλλαγή κωδικού πρόσβασης',
'logout' => 'Αποσυνδέση',
],
];

View file

@ -9,22 +9,22 @@ declare(strict_types=1);
*/
return [
'back_to_home' => 'Back to home',
'page' => 'Page',
'all_pages' => 'All pages',
'create' => 'New page',
'go_to_page' => 'Go to page',
'edit' => 'Edit page',
'delete' => 'Delete page',
'back_to_home' => 'Επιστροφή στην αρχική σελίδα',
'page' => 'Σελίδα',
'all_pages' => 'Όλες οι σελίδες',
'create' => 'Νέα σελίδα',
'go_to_page' => 'Μετάβαση στη σελίδα',
'edit' => 'Επεξεργασία σελίδας',
'delete' => 'Διαγραφή σελίδας',
'form' => [
'title' => 'Title',
'permalink' => 'Permalink',
'content' => 'Content',
'submit_create' => 'Create page',
'submit_edit' => 'Save',
'title' => 'Τίτλος',
'permalink' => 'Μόνιμος σύνδεσμος',
'content' => 'Περιεχόμενο',
'submit_create' => 'Δημιουργία σελίδας',
'submit_edit' => 'Αποθήκευση',
],
'messages' => [
'createSuccess' => 'The page “{pageTitle}” was created successfully!',
'editSuccess' => 'The page was successfully updated!',
'createSuccess' => 'Η σελίδα “{pageTitle}” δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Η σελίδα ενημερώθηκε επιτυχώς!',
],
];

View file

@ -9,13 +9,13 @@ declare(strict_types=1);
*/
return [
'pageNavigation' => 'Page navigation',
'first' => 'First',
'previous' => 'Previous',
'next' => 'Next',
'last' => 'Last',
'older' => 'Older',
'newer' => 'Newer',
'invalidTemplate' => '{0} is not a valid Pager template.',
'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
'pageNavigation' => 'Πλοήγηση στις σελίδες',
'first' => 'Πρώτη',
'previous' => 'Προηγούμενη',
'next' => 'Επόμενη',
'last' => 'Τελευταία',
'older' => 'Παλιότερα',
'newer' => 'Νεότερη',
'invalidTemplate' => '{0} δεν είναι έγκυρο πρότυπο Pager.',
'invalidPaginationGroup' => '{0} δεν είναι μια έγκυρη ομάδα σελιδοποίησης.',
];

View file

@ -9,57 +9,57 @@ declare(strict_types=1);
*/
return [
'persons' => 'Persons',
'all_persons' => 'All persons',
'no_person' => 'Nobody found!',
'create' => 'Create a person',
'view' => 'View person',
'edit' => 'Edit person',
'delete' => 'Delete person',
'persons' => 'Πρόσωπα',
'all_persons' => 'Όλα τα πρόσωπα',
'no_person' => 'Δεν βρέθηκε κανείς!',
'create' => 'Δημιουργήστε ένα πρόσωπο',
'view' => 'Προβολή προσώπου',
'edit' => 'Επεξεργασία προσώπου',
'delete' => 'Διαγραφή ατόμου',
'messages' => [
'createSuccess' => 'Person has been successfully created!',
'editSuccess' => 'Person has been successfully updated!',
'deleteSuccess' => 'Person has been removed!',
'createSuccess' => 'Το άτομο δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Το άτομο ενημερώθηκε με επιτυχία!',
'deleteSuccess' => 'Το άτομο έχει αφαιρεθεί!',
],
'form' => [
'avatar' => 'Avatar',
'avatar' => 'Είδωλο',
'avatar_size_hint' =>
'Avatar must be squared with at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',
'unique_name_hint' => 'Used for URLs',
'information_url' => 'Information URL',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Ονοματεπώνυμο',
'full_name_hint' => 'Αυτό είναι το πλήρες όνομα ή το ψευδώνυμο του ατόμου.',
'unique_name' => 'Μοναδικό όνομα',
'unique_name_hint' => 'Χρησιμοποιείται για διευθύνσεις URL',
'information_url' => 'Url Πληροφοριών',
'information_url_hint' =>
'Url to a relevant resource of information about the person, such as a homepage or third-party profile platform.',
'submit_create' => 'Create person',
'submit_edit' => 'Save person',
'Url σε μια σχετική πηγή πληροφοριών σχετικά με το άτομο, όπως μια αρχική σελίδα ή πλατφόρμα προφίλ τρίτων.',
'submit_create' => 'Δημιουργία προσώπου',
'submit_edit' => 'Αποθήκευση ατόμου',
],
'podcast_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this podcast',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'title' => 'Διαχείριση προσώπων',
'add_section_title' => 'Προσθέστε άτομα σε αυτό το podcast',
'add_section_subtitle' => 'Μπορείτε να επιλέξετε πολλά άτομα και ρόλους.',
'persons' => 'Πρόσωπα',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'Μπορείτε να επιλέξετε ένα ή περισσότερα άτομα με τους ίδιους ρόλους. Πρέπει πρώτα να δημιουργήσετε τα πρόσωπα.',
'roles' => 'Ρόλοι',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
'Μπορείτε να επιλέξετε κανένα, έναν ή περισσότερους ρόλους για ένα άτομο.',
'submit_add' => 'Προσθήκη ατόμου(ων)',
'remove' => 'Διαγραφή',
],
'episode_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this episode',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'title' => 'Διαχείριση προσώπων',
'add_section_title' => 'Προσθήκη ατόμων σε αυτό το επεισόδιο',
'add_section_subtitle' => 'Μπορείτε να επιλέξετε πολλά άτομα και ρόλους.',
'persons' => 'Πρόσωπα',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'Μπορείτε να επιλέξετε ένα ή περισσότερα άτομα με τους ίδιους ρόλους. Πρέπει πρώτα να δημιουργήσετε τα πρόσωπα.',
'roles' => 'Ρόλοι',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
'Μπορείτε να επιλέξετε κανένα, έναν ή περισσότερους ρόλους για ένα άτομο.',
'submit_add' => 'Προσθήκη ατόμου(ων)',
'remove' => 'Διαγραφή',
],
'credits' => 'Credits',
'credits' => 'Συντελεστές',
];

View file

@ -9,22 +9,22 @@ declare(strict_types=1);
*/
return [
'title' => 'Platforms',
'home_url' => 'Go to {platformName} website',
'submit_url' => 'Submit your podcast on {platformName}',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',
'submit' => 'Save',
'title' => 'Πλατφόρμες',
'home_url' => 'Μεταβείτε στην ιστοσελίδα {platformName}',
'submit_url' => 'Υποβάλετε το podcast σας στην πλατφόρμα {platformName}',
'visible' => 'Εμφάνιση στην αρχική σελίδα του podcast;',
'on_embed' => 'Εμφάνιση σε ενσωματωμένο player;',
'remove' => 'Κατάργηση {platformName}',
'submit' => 'Αποθήκευση',
'messages' => [
'updateSuccess' => 'Platform links have been successfully updated!',
'removeLinkSuccess' => 'The platform link has been removed.',
'updateSuccess' => 'Οι σύνδεσμοι της πλατφόρμας ενημερώθηκαν επιτυχώς!',
'removeLinkSuccess' => 'Ο σύνδεσμος πλατφόρμας έχει αφαιρεθεί.',
'removeLinkError' =>
'The platform link could not be removed. Try again.',
'Δεν ήταν δυνατή η αφαίρεση του συνδέσμου της πλατφόρμας. Δοκιμάστε ξανά.',
],
'description' => [
'podcasting' => 'The podcast ID on this platform',
'social' => 'The podcast account ID on this platform',
'funding' => 'Call to action message',
'podcasting' => 'Το αναγνωριστικό podcast σε αυτή την πλατφόρμα',
'social' => 'Το αναγνωριστικό λογαριασμού podcast σε αυτήν την πλατφόρμα',
'funding' => 'Κλήση σε μήνυμα δράσης',
],
];

View file

@ -9,31 +9,51 @@ declare(strict_types=1);
*/
return [
'all_podcasts' => 'All podcasts',
'no_podcast' => 'No podcast found!',
'create' => 'Create podcast',
'import' => 'Import podcast',
'new_episode' => 'New Episode',
'view' => 'View podcast',
'edit' => 'Edit podcast',
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
'all_podcasts' => 'Όλα τα podcasts',
'no_podcast' => 'Δεν βρέθηκαν podcast!',
'create' => 'Δημιουργία podcast',
'import' => 'Εισαγωγή ενός podcast',
'new_episode' => 'Νέο Επεισόδιο',
'view' => 'Προβολή podcast',
'edit' => 'Επεξεργασία podcast',
'delete' => 'Διαγραφή podcast',
'see_episodes' => 'Δείτε επεισόδια',
'see_contributors' => 'Βλέπε συντελεστές',
'go_to_page' => 'Μετάβαση στη σελίδα',
'latest_episodes' => 'Τελευταία επεισόδια',
'see_all_episodes' => 'Δείτε όλα τα επεισόδια',
'messages' => [
'createSuccess' => 'Podcast has been successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
'importSuccess' => 'Podcast has been successfully imported!',
'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Το Podcast ενημερώθηκε με επιτυχία!',
'importSuccess' => 'Το Podcast εισήχθη με επιτυχία!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'identity_section_title' => 'Αναγνωριστικό Podcast',
'identity_section_subtitle' => 'Αυτά τα πεδία σας επιτρέπουν να ξεχωρίσει το podcast σας.',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio with at least 1500px wide.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'title' => 'Title',
'handle' => 'Handle',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'season' => 'Season {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'This procedure may take a long time. As the current version does not show any progress while it runs, you will not see anything updated until it is done. In case of timeout error, increase `max_execution_time` value.',
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared with at least 512px wide and tall.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'Save',

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'editar publicación',
'unpublish' => 'anular publicación',
'delete' => 'borrar',
'deleted' => 'eliminado',
'delete-permanently' => 'eliminar permanentemente',
'fediverse' => 'fediverso',
'block-lists' => 'listas de bloqueo',
'users' => 'usuarios',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'No publicado',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episodio',
'visibility' => 'Visibilidad',
'comments' => 'Comentarios',
@ -47,6 +56,24 @@ return [
'createSuccess' => '¡El episodio ha sido creado correctamente!',
'editSuccess' => '¡El episodio ha sido actualizado correctamente!',
'publishCancelSuccess' => '¡La publicación del episodio ha sido cancelada correctamente!',
'unpublishBeforeDeleteTip' => 'Debe anular la publicación del episodio antes de eliminarlo.',
'deletePublishedEpisodeError' => 'Por favor, anule la publicación del episodio antes de eliminarlo.',
'deleteSuccess' => '¡Episodio eliminado con éxito!',
'deleteError' => 'Error al eliminar episodio {type, select,
transcript {transcripción}
chapters {capítulos}
image {portada}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'Ya existe un episodio con el slug elegido.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Portada del episodio',
'cover_hint' =>
'Si no establece una portada, la portada del podcast se utilizará en su lugar.',
'cover_size_hint' => 'La portada debe ser cuadrada con al menos 1400px de ancho y alto.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Título',
'title_hint' =>
'Debe contener un nombre de episodio claro y conciso. No especifique los números de episodio o temporada aquí.',
@ -89,7 +116,7 @@ return [
'Este texto se añade al final de cada descripción de episodios, es un buen lugar para introducir sus enlaces sociales, por ejemplo.',
'additional_files_section_title' => 'Archivos adicionales',
'additional_files_section_subtitle' =>
'Estos archivos pueden ser usados por otras plataformas para proporcionar una mejor experiencia a tu audiencia. Ver el {podcastNamespaceLink} para más información.',
'Estos archivos pueden ser utilizados por otras plataformas para proporcionar una mejor experiencia a su audiencia. Vea {podcastNamespaceLink} para más información.',
'location_section_title' => 'Ubicación',
'location_section_subtitle' => '¿De qué lugar trata este episodio?',
'location_name' => 'Nombre o dirección de ubicación',
@ -147,7 +174,7 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Al eliminar el episodio se borrarán todos los mensajes asociados con él y se eliminarán del feed RSS del podcast.",
"Eliminar el episodio eliminará todos los archivos multimedia, comentarios, video clips y sonidos asociados a él.",
'understand' => 'Entiendo, quiero eliminar el episodio',
'submit' => 'Borrar',
],

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'El avatar debe ser cuadrado con al menos 400px de ancho y alto.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Nombre completo',
'full_name_hint' => 'Este es el nombre completo o el alias de la persona.',
'unique_name' => 'Nombre único',

View file

@ -26,14 +26,34 @@ return [
'createSuccess' => 'El Podcast ha sido creado con éxito!',
'editSuccess' => 'El Podcast se ha actualizado correctamente!',
'importSuccess' => 'El Podcast se ha importado correctamente!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Identidad de Podcast',
'identity_section_subtitle' => 'Estos campos le permiten recibir un aviso.',
'cover' => 'Portada de Podcast',
'cover_size_hint' => 'La portada debe ser cuadrada con al menos 1400px de ancho y alto.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Cartel del Podcast',
'banner_size_hint' => 'El cartel debe tener una relación de 3:1 con al menos 1500px.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Borrar el cartel del podcast',
'title' => 'Título',
'handle' => 'Alias',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'Esto se inyectará dentro de la etiqueta de canal.',
'new_feed_url' => 'Nueva URL de feed',
'new_feed_url_hint' => 'Utilice este campo cuando se mueva a otro dominio o plataforma de alojamiento podcast. De forma predeterminada, el valor se establece en la URL actual de RSS si el podcast es importado.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Asociación',
'partner_id' => 'ID',
'partner_link_url' => 'URL del enlace',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Reseñas de cine',
'tv_reviews' => 'Reseñas de TV',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'Por {publisher}',
'season' => 'Temporada {seasonNumber}',
'list_of_episodes_year' => '{year} episodios ({episodeCount})',
@ -227,12 +256,12 @@ return [
'no_episode' => '¡No se encontró el episodio!',
'follow' => 'Seguir',
'followers' => '{numberOfFollowers, plural,
one {# seguidor}
other {# seguidores}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# publicación}
other {# publicaciones}
one {# post}
other {# posts}
}',
'activity' => 'Actividad',
'episodes' => 'Episodios',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'Este procedimiento puede llevar mucho tiempo. Como la versión actual no muestra ningún progreso mientras se ejecuta, no verá nada actualizado hasta que termine. En caso de error de tiempo de espera, incrementa el valor `max_execution_time`.',
'Este procedimiento puede llevar mucho tiempo.<br/>Como la versión actual no muestra ningún progreso mientras se ejecuta, no verá nada actualizado hasta que termine.<br/>En caso de error de tiempo de espera, incrementa el valor `max_execution_time`.',
'old_podcast_section_title' => 'Podcasts para importar',
'old_podcast_section_subtitle' =>
'Asegúrese de que tiene los derechos para este podcast antes de importarlo. Copiar y difundir un podcast sin los derechos apropiados es piratería y puede ser procesado.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'Episodios',
'episode-list' => 'Todos los episodios',
'episode-create' => 'Nuevo episodio',
'episode-deleted' => 'Papelera de reciclaje',
'analytics' => 'Estadísticas',
'podcast-analytics' => 'Vista general del público',
'podcast-analytics-webpages' => 'Visitas a páginas web',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Icono del sitio',
'site_icon_delete' => 'Borrar icono del sitio',
'site_icon_hint' => 'Los iconos del sitio son lo que ves en las pestañas del navegador, la barra de marcadores y cuando agregas un sitio web como un acceso directo en los dispositivos móviles.',
'site_icon_helper' => 'El icono debe ser cuadrado con al menos 512px de ancho y alto.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Nombre del sitio',
'site_description' => 'Descripción del sitio',
'submit' => 'Guardar',

View file

@ -0,0 +1,15 @@
<?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 [
'dashboard' => 'Admin dashboard',
'welcome_message' => 'Welcome to the admin area!',
'choose_interact' => 'Choose how to interact',
];

View file

@ -0,0 +1,50 @@
<?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 [
'label' => 'breadcrumb',
config('Admin')
->gateway => 'Home',
'podcasts' => 'podcasts',
'episodes' => 'episodes',
'contributors' => 'contributors',
'pages' => 'pages',
'settings' => 'settings',
'theme' => 'theme',
'add' => 'add',
'new' => 'new',
'edit' => 'edit',
'persons' => 'persons',
'publish' => 'publish',
'publish-edit' => 'edit publication',
'unpublish' => 'unpublish',
'delete' => 'delete',
'deleted' => 'deleted',
'delete-permanently' => 'delete permanently',
'fediverse' => 'fediverse',
'block-lists' => 'block lists',
'users' => 'users',
'my-account' => 'my account',
'change-password' => 'change password',
'import' => 'feed import',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'web pages',
'unique-listeners' => 'unique listeners',
'players' => 'players',
'listening-time' => 'listening time',
'time-periods' => 'time periods',
'soundbites' => 'soundbites',
'video-clips' => 'video clips',
'embed' => 'embeddable player',
];

View file

@ -0,0 +1,38 @@
<?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 [
'by_service_weekly' => 'Episode downloads by service (for the past week)',
'by_player_weekly' => 'Episode downloads by player (for the past week)',
'by_player_yearly' => 'Episode downloads by player (for the past year)',
'by_device_weekly' => 'Episode downloads by device (for the past week)',
'by_os_weekly' => 'Episode downloads by O.S. (for the past week)',
'podcast_by_region' => 'Episode downloads by region (for the past week)',
'unique_daily_listeners' => 'Daily unique listeners',
'unique_monthly_listeners' => 'Monthly unique listeners',
'by_browser' => 'Web pages usage by browser (for the past week)',
'podcast_by_day' => 'Episode daily downloads',
'podcast_by_month' => 'Episode monthly downloads',
'episode_by_day' => 'Episode daily downloads (first 60 days)',
'episode_by_month' => 'Episode monthly downloads',
'episodes_by_day' =>
'5 latest episodes downloads (during their first 60 days)',
'by_country_weekly' => 'Episode downloads by country (for the past week)',
'by_country_yearly' => 'Episode downloads by country (for the past year)',
'by_domain_weekly' => 'Web pages visits by source (for the past week)',
'by_domain_yearly' => 'Web pages visits by source (for the past year)',
'by_entry_page' => 'Web pages visits by landing page (for the past week)',
'podcast_bots' => 'Bots (crawlers)',
'daily_listening_time' => 'Daily cumulative listening time',
'monthly_listening_time' => 'Monthly cumulative listening time',
'by_weekday' => 'By week day (for the past 60 days)',
'by_hour' => 'By time of day (for the past 60 days)',
'podcast_by_bandwidth' => 'Daily used bandwidth (in MB)',
];

View file

@ -0,0 +1,49 @@
<?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',
'more' => 'More',
'no_data' => 'No data found!',
'close' => 'Close',
'edit' => 'Edit',
'copy' => 'Copy',
'copied' => 'Copied!',
'home' => 'Home',
'explicit' => 'Explicit',
'powered_by' => 'Powered by {castopod}',
'actions' => 'Actions',
'pageInfo' => 'Page {currentPage} out of {pageCount}',
'go_back' => 'Go back',
'forms' => [
'editor' => [
'write' => 'Write',
'preview' => 'Preview',
'help' => 'Powered by markdown',
],
'multiSelect' => [
'selectText' => 'Press to select',
'loadingText' => 'Loading…',
'noResultsText' => 'No results found',
'noChoicesText' => 'No choices to choose from',
'maxItemText' => 'Cannot add more items',
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
],
'play_episode_button' => [
'play' => 'Play',
'playing' => 'Playing',
],
'size_limit' => 'Size limit: {0}.',
];

View file

@ -0,0 +1,41 @@
<?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 [
'podcast_contributors' => 'Podcast contributors',
'view' => "{username}'s contribution to {podcastTitle}",
'add' => 'Add contributor',
'add_contributor' => 'Add a contributor for {0}',
'edit_role' => 'Update role for {0}',
'edit' => 'Edit',
'remove' => 'Remove',
'list' => [
'username' => 'Username',
'role' => 'Role',
],
'form' => [
'user' => 'User',
'user_placeholder' => 'Select a user…',
'role' => 'Role',
'role_placeholder' => 'Select its role…',
'submit_add' => 'Add contributor',
'submit_edit' => 'Update role',
],
'roles' => [
'podcast_admin' => 'Podcast admin',
],
'messages' => [
'removeOwnerError' => "You can't remove the podcast owner!",
'removeSuccess' =>
'You have successfully removed {username} from {podcastTitle}',
'alreadyAddedError' =>
"The contributor you're trying to add has already been added!",
],
];

View file

@ -0,0 +1,264 @@
<?php
declare(strict_types=1);
/**
* ISO 3166 country codes
*
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'AD' => 'Andorra',
'AE' => 'United Arab Emirates',
'AF' => 'Afghanistan',
'AG' => 'Antigua and Barbuda',
'AI' => 'Anguilla',
'AL' => 'Albania',
'AM' => 'Armenia',
'AO' => 'Angola',
'AQ' => 'Antarctica',
'AR' => 'Argentina',
'AS' => 'American Samoa',
'AT' => 'Austria',
'AU' => 'Australia',
'AW' => 'Aruba',
'AX' => 'Åland Islands',
'AZ' => 'Azerbaijan',
'BA' => 'Bosnia and Herzegovina',
'BB' => 'Barbados',
'BD' => 'Bangladesh',
'BE' => 'Belgium',
'BF' => 'Burkina Faso',
'BG' => 'Bulgaria',
'BH' => 'Bahrain',
'BI' => 'Burundi',
'BJ' => 'Benin',
'BL' => 'Saint Barthélemy',
'BM' => 'Bermuda',
'BN' => 'Brunei Darussalam',
'BO' => 'Bolivia, Plurinational State of',
'BQ' => 'Bonaire, Sint Eustatius and Saba',
'BR' => 'Brazil',
'BS' => 'Bahamas',
'BT' => 'Bhutan',
'BV' => 'Bouvet Island',
'BW' => 'Botswana',
'BY' => 'Belarus',
'BZ' => 'Belize',
'CA' => 'Canada',
'CC' => 'Cocos (Keeling) Islands',
'CD' => 'Congo, the Democratic Republic of the',
'CF' => 'Central African Republic',
'CG' => 'Congo',
'CH' => 'Switzerland',
'CI' => "Côte d'Ivoire",
'CK' => 'Cook Islands',
'CL' => 'Chile',
'CM' => 'Cameroon',
'CN' => 'China',
'CO' => 'Colombia',
'CR' => 'Costa Rica',
'CU' => 'Cuba',
'CV' => 'Cape Verde',
'CW' => 'Curaçao',
'CX' => 'Christmas Island',
'CY' => 'Cyprus',
'CZ' => 'Czech Republic',
'DE' => 'Germany',
'DJ' => 'Djibouti',
'DK' => 'Denmark',
'DM' => 'Dominica',
'DO' => 'Dominican Republic',
'DZ' => 'Algeria',
'EC' => 'Ecuador',
'EE' => 'Estonia',
'EG' => 'Egypt',
'EH' => 'Western Sahara',
'ER' => 'Eritrea',
'ES' => 'Spain',
'ET' => 'Ethiopia',
'FI' => 'Finland',
'FJ' => 'Fiji',
'FK' => 'Falkland Islands (Malvinas)',
'FM' => 'Micronesia, Federated States of',
'FO' => 'Faroe Islands',
'FR' => 'France',
'GA' => 'Gabon',
'GB' => 'United Kingdom',
'GD' => 'Grenada',
'GE' => 'Georgia',
'GF' => 'French Guiana',
'GG' => 'Guernsey',
'GH' => 'Ghana',
'GI' => 'Gibraltar',
'GL' => 'Greenland',
'GM' => 'Gambia',
'GN' => 'Guinea',
'GP' => 'Guadeloupe',
'GQ' => 'Equatorial Guinea',
'GR' => 'Greece',
'GS' => 'South Georgia and the South Sandwich Islands',
'GT' => 'Guatemala',
'GU' => 'Guam',
'GW' => 'Guinea-Bissau',
'GY' => 'Guyana',
'HK' => 'Hong Kong',
'HM' => 'Heard Island and McDonald Islands',
'HN' => 'Honduras',
'HR' => 'Croatia',
'HT' => 'Haiti',
'HU' => 'Hungary',
'ID' => 'Indonesia',
'IE' => 'Ireland',
'IL' => 'Israel',
'IM' => 'Isle of Man',
'IN' => 'India',
'IO' => 'British Indian Ocean Territory',
'IQ' => 'Iraq',
'IR' => 'Iran, Islamic Republic of',
'IS' => 'Iceland',
'IT' => 'Italy',
'JE' => 'Jersey',
'JM' => 'Jamaica',
'JO' => 'Jordan',
'JP' => 'Japan',
'KE' => 'Kenya',
'KG' => 'Kyrgyzstan',
'KH' => 'Cambodia',
'KI' => 'Kiribati',
'KM' => 'Comoros',
'KN' => 'Saint Kitts and Nevis',
'KP' => "Korea, Democratic People's Republic of",
'KR' => 'Korea, Republic of',
'KW' => 'Kuwait',
'KY' => 'Cayman Islands',
'KZ' => 'Kazakhstan',
'LA' => "Lao People's Democratic Republic",
'LB' => 'Lebanon',
'LC' => 'Saint Lucia',
'LI' => 'Liechtenstein',
'LK' => 'Sri Lanka',
'LR' => 'Liberia',
'LS' => 'Lesotho',
'LT' => 'Lithuania',
'LU' => 'Luxembourg',
'LV' => 'Latvia',
'LY' => 'Libya',
'MA' => 'Morocco',
'MC' => 'Monaco',
'MD' => 'Moldova, Republic of',
'ME' => 'Montenegro',
'MF' => 'Saint Martin (French part)',
'MG' => 'Madagascar',
'MH' => 'Marshall Islands',
'MK' => 'Macedonia, the Former Yugoslav Republic of',
'ML' => 'Mali',
'MM' => 'Myanmar',
'MN' => 'Mongolia',
'MO' => 'Macao',
'MP' => 'Northern Mariana Islands',
'MQ' => 'Martinique',
'MR' => 'Mauritania',
'MS' => 'Montserrat',
'MT' => 'Malta',
'MU' => 'Mauritius',
'MV' => 'Maldives',
'MW' => 'Malawi',
'MX' => 'Mexico',
'MY' => 'Malaysia',
'MZ' => 'Mozambique',
'N/A' => 'Not Applicable (local IP…)',
'NA' => 'Namibia',
'NC' => 'New Caledonia',
'NE' => 'Niger',
'NF' => 'Norfolk Island',
'NG' => 'Nigeria',
'NI' => 'Nicaragua',
'NL' => 'Netherlands',
'NO' => 'Norway',
'NP' => 'Nepal',
'NR' => 'Nauru',
'NU' => 'Niue',
'NZ' => 'New Zealand',
'OM' => 'Oman',
'PA' => 'Panama',
'PE' => 'Peru',
'PF' => 'French Polynesia',
'PG' => 'Papua New Guinea',
'PH' => 'Philippines',
'PK' => 'Pakistan',
'PL' => 'Poland',
'PM' => 'Saint Pierre and Miquelon',
'PN' => 'Pitcairn',
'PR' => 'Puerto Rico',
'PS' => 'Palestine, State of',
'PT' => 'Portugal',
'PW' => 'Palau',
'PY' => 'Paraguay',
'QA' => 'Qatar',
'RE' => 'Réunion',
'RO' => 'Romania',
'RS' => 'Serbia',
'RU' => 'Russian Federation',
'RW' => 'Rwanda',
'SA' => 'Saudi Arabia',
'SB' => 'Solomon Islands',
'SC' => 'Seychelles',
'SD' => 'Sudan',
'SE' => 'Sweden',
'SG' => 'Singapore',
'SH' => 'Saint Helena, Ascension and Tristan da Cunha',
'SI' => 'Slovenia',
'SJ' => 'Svalbard and Jan Mayen',
'SK' => 'Slovakia',
'SL' => 'Sierra Leone',
'SM' => 'San Marino',
'SN' => 'Senegal',
'SO' => 'Somalia',
'SR' => 'Suriname',
'SS' => 'South Sudan',
'ST' => 'Sao Tome and Principe',
'SV' => 'El Salvador',
'SX' => 'Sint Maarten (Dutch part)',
'SY' => 'Syrian Arab Republic',
'SZ' => 'Swaziland',
'TC' => 'Turks and Caicos Islands',
'TD' => 'Chad',
'TF' => 'French Southern Territories',
'TG' => 'Togo',
'TH' => 'Thailand',
'TJ' => 'Tajikistan',
'TK' => 'Tokelau',
'TL' => 'Timor-Leste',
'TM' => 'Turkmenistan',
'TN' => 'Tunisia',
'TO' => 'Tonga',
'TR' => 'Turkey',
'TT' => 'Trinidad and Tobago',
'TV' => 'Tuvalu',
'TW' => 'Taiwan, Province of China',
'TZ' => 'Tanzania, United Republic of',
'UA' => 'Ukraine',
'UG' => 'Uganda',
'UM' => 'United States Minor Outlying Islands',
'US' => 'United States',
'UY' => 'Uruguay',
'UZ' => 'Uzbekistan',
'VA' => 'Holy See (Vatican City State)',
'VC' => 'Saint Vincent and the Grenadines',
'VE' => 'Venezuela, Bolivarian Republic of',
'VG' => 'Virgin Islands, British',
'VI' => 'Virgin Islands, U.S.',
'VN' => 'Viet Nam',
'VU' => 'Vanuatu',
'WF' => 'Wallis and Futuna',
'WS' => 'Samoa',
'YE' => 'Yemen',
'YT' => 'Mayotte',
'ZA' => 'South Africa',
'ZM' => 'Zambia',
'ZW' => 'Zimbabwe',
];

View file

@ -0,0 +1,192 @@
<?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}',
'number_of_comments' => '{numberOfComments, plural,
one {# comment}
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'unpublish' => 'Unpublish',
'publish_error' => 'Episode is already published.',
'publish_edit_error' => 'Episode is already published.',
'publish_cancel_error' => 'Episode is already published.',
'unpublish_error' => 'Episode is not published.',
'delete' => 'Delete',
'go_to_page' => 'Go to page',
'create' => 'Add an episode',
'publication_status' => [
'published' => 'Published',
'scheduled' => 'Scheduled',
'not_published' => 'Not published',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episode',
'visibility' => 'Visibility',
'comments' => 'Comments',
'actions' => 'Actions',
],
'messages' => [
'createSuccess' => 'Episode has been successfully created!',
'editSuccess' => 'Episode has been successfully updated!',
'publishCancelSuccess' => 'Episode publication successfully cancelled!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
'Your file size is too big! Max size is {0}. Increase the `memory_limit`, `upload_max_filesize` and `post_max_size` values in your php configuration file then restart your web server to upload your file.',
'audio_file' => 'Audio file',
'audio_file_hint' => 'Choose an .mp3 or .m4a audio file.',
'info_section_title' => 'Episode info',
'cover' => 'Episode cover',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Title',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
'permalink' => 'Permalink',
'season_number' => 'Season',
'episode_number' => 'Episode',
'type' => [
'label' => 'Type',
'full' => 'Full',
'full_hint' => 'Complete content (the episode)',
'trailer' => 'Trailer',
'trailer_hint' => 'Short, promotional piece of content that represents a preview of the current show',
'bonus' => 'Bonus',
'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show',
],
'parental_advisory' => [
'label' => 'Parental advisory',
'hint' => 'Does the episode contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
],
'show_notes_section_title' => 'Show notes',
'show_notes_section_subtitle' =>
'Up to 4000 characters, be clear and concise. Show notes help potential listeners in finding the episode.',
'description' => 'Description',
'description_footer' => 'Description footer',
'description_footer_hint' =>
'This text is added at the end of each episode description, it is a good place to input your social links for example.',
'additional_files_section_title' => 'Additional files',
'additional_files_section_subtitle' =>
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this episode about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real or fictional location',
'transcript' => 'Transcript (subtitles / closed captions)',
'transcript_hint' => 'Only .srt are allowed.',
'transcript_download' => 'Download transcript',
'transcript_file' => 'Transcript file (.srt)',
'transcript_remote_url' => 'Remote url for transcript',
'transcript_file_delete' => 'Delete transcript file',
'chapters' => 'Chapters',
'chapters_hint' => 'File must be in JSON Chapters format.',
'chapters_download' => 'Download chapters',
'chapters_file' => 'Chapters file',
'chapters_remote_url' => 'Remote url for chapters file',
'chapters_file_delete' => 'Delete chapters file',
'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the episode',
'custom_rss_hint' => 'This will be injected within the ❬item❭ tag.',
'block' => 'Episode should be hidden from all platforms',
'block_hint' =>
'The episode show or hide post. If you want this episode removed from the Apple directory, toggle this on.',
'submit_create' => 'Create episode',
'submit_edit' => 'Save episode',
],
'publish_form' => [
'back_to_episode_dashboard' => 'Back to episode dashboard',
'post' => 'Your announcement post',
'post_hint' =>
"Write a message to announce the publication of your episode. The message will be broadcasted to all your followers in the fediverse and be featured in your podcast's homepage.",
'message_placeholder' => 'Write your message…',
'publication_date' => 'Publication date',
'publication_method' => [
'now' => 'Now',
'schedule' => 'Schedule',
],
'scheduled_publication_date' => 'Scheduled publication date',
'scheduled_publication_date_clear' => 'Clear publication date',
'scheduled_publication_date_hint' =>
'You can schedule the episode release by setting a future publication date. This field must be formatted as YYYY-MM-DD HH:mm',
'submit' => 'Publish',
'submit_edit' => 'Edit publication',
'cancel_publication' => 'Cancel publication',
'message_warning' => 'You did not write a message for your announcement post!',
'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.',
'message_warning_submit' => 'Publish anyways',
],
'unpublish_form' => [
'disclaimer' =>
"Unpublishing the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
'understand' => 'I understand, I want to unpublish the episode',
'submit' => 'Unpublish',
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Embeddable player',
'label' =>
'Pick a theme color, copy the embeddable player to clipboard, then paste it on your website.',
'clipboard_iframe' => 'Copy embeddable player to clipboard',
'clipboard_url' => 'Copy address to clipboard',
'dark' => 'Dark',
'dark-transparent' => 'Dark transparent',
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
];

View file

@ -0,0 +1,23 @@
<?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 [
'go_to_page' => 'View episode page',
'dashboard' => 'Episode dashboard',
'episode-view' => 'Home',
'episode-edit' => 'Edit episode',
'episode-persons-manage' => 'Manage persons',
'embed-add' => 'Embeddable player',
'clips' => 'Clips',
'video-clips-list' => 'Video clips',
'video-clips-create' => 'New video clip',
'soundbites-list' => 'Soundbites',
'soundbites-create' => 'New soundbite',
];

View file

@ -0,0 +1,32 @@
<?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 [
'messages' => [
'actorNotFound' => 'The account could not be found!',
'blockActorSuccess' => '{actor} has been blocked!',
'unblockActorSuccess' => 'Actor has been unblocked!',
'blockDomainSuccess' => '{domain} has been blocked!',
'unblockDomainSuccess' => '{domain} has been unblocked!',
],
'blocked_actors' => 'Blocked accounts',
'blocked_domains' => 'Blocked domains',
'block_lists_form' => [
'handle' => 'Account handle',
'handle_hint' => 'Input @username@domain account.',
'domain' => 'Domain name',
'submit' => 'Block!',
],
'list' => [
'actor' => 'Account',
'domain' => 'Domain name',
'unblock' => 'Unblock',
],
];

View file

@ -0,0 +1,14 @@
<?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',
'no_podcast' => 'No podcast found',
];

View file

@ -0,0 +1,61 @@
<?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 [
'manual_config' => 'Manual configuration',
'manual_config_subtitle' =>
'Create a `.env` file with your settings and refresh the page to continue installation.',
'form' => [
'instance_config' => 'Instance configuration',
'hostname' => 'Hostname',
'media_base_url' => 'Media base URL',
'media_base_url_hint' =>
'If you use a CDN and/or an external analytics service, you may set them here.',
'admin_gateway' => 'Admin gateway',
'admin_gateway_hint' =>
'The route to access the admin area (eg. https://example.com/cp-admin). It is set by default as cp-admin, we recommend you change it for security reasons.',
'auth_gateway' => 'Auth gateway',
'auth_gateway_hint' =>
'The route to access the authentication pages (eg. https://example.com/cp-auth). It is set by default as cp-auth, we recommend you change it for security reasons.',
'database_config' => 'Database configuration',
'database_config_hint' =>
'Castopod needs to connect to your MySQL (or MariaDB) database. If you do not have these required info, please contact your server administrator.',
'db_hostname' => 'Database hostname',
'db_name' => 'Database name',
'db_username' => 'Database username',
'db_password' => 'Database password',
'db_prefix' => 'Database prefix',
'db_prefix_hint' =>
"The prefix of the Castopod table names, leave as is if you don't know what it means.",
'cache_config' => 'Cache configuration',
'cache_config_hint' =>
'Choose your preferred cache handler. Leave it as the default value if you have no clue what it means.',
'cache_handler' => 'Cache handler',
'cacheHandlerOptions' => [
'file' => 'File',
'redis' => 'Redis',
'predis' => 'Predis',
],
'next' => 'Next',
'submit' => 'Finish install',
'create_superadmin' => 'Create your superadmin account',
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
],
'messages' => [
'createSuperAdminSuccess' =>
'Your superadmin account has been created successfully. Login to start podcasting!',
'databaseConnectError' =>
'Castopod could not connect to your database. Edit your database configuration and try again.',
'writeError' =>
"Couldn't create/write the `.env` file. You must create it manually by following the `.env.example` file template in the Castopod package.",
],
];

View file

@ -0,0 +1,18 @@
<?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 [
'info' => 'My account info',
'changePassword' => 'Change my password',
'messages' => [
'wrongPasswordError' => "You've entered the wrong password, try again.",
'passwordChangeSuccess' => 'Password has been successfully changed!',
],
];

View file

@ -0,0 +1,41 @@
<?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 [
'toggle_sidebar' => 'Toggle sidebar',
'go_to_website' => 'Go to website',
'go_to_admin' => 'Go to admin',
'dashboard' => 'Dashboard',
'admin' => 'Home',
'podcasts' => 'Podcasts',
'podcast-list' => 'All podcasts',
'podcast-create' => 'New podcast',
'podcast-import' => 'Import a podcast',
'persons' => 'Persons',
'person-list' => 'All persons',
'person-create' => 'New person',
'fediverse' => 'Fediverse',
'fediverse-blocked-actors' => 'Blocked accounts',
'fediverse-blocked-domains' => 'Blocked domains',
'users' => 'Users',
'user-list' => 'All users',
'user-create' => 'New user',
'pages' => 'Pages',
'page-list' => 'All pages',
'page-create' => 'New Page',
'settings' => 'Settings',
'settings-general' => 'General',
'settings-theme' => 'Theme',
'account' => [
'my-account' => 'My account',
'change-password' => 'Change password',
'logout' => 'Logout',
],
];

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 [
'back_to_home' => 'Back to home',
'page' => 'Page',
'all_pages' => 'All pages',
'create' => 'New page',
'go_to_page' => 'Go to page',
'edit' => 'Edit page',
'delete' => 'Delete page',
'form' => [
'title' => 'Title',
'permalink' => 'Permalink',
'content' => 'Content',
'submit_create' => 'Create page',
'submit_edit' => 'Save',
],
'messages' => [
'createSuccess' => 'The page “{pageTitle}” was created successfully!',
'editSuccess' => 'The page was successfully updated!',
],
];

View file

@ -0,0 +1,21 @@
<?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 [
'pageNavigation' => 'Page navigation',
'first' => 'First',
'previous' => 'Previous',
'next' => 'Next',
'last' => 'Last',
'older' => 'Older',
'newer' => 'Newer',
'invalidTemplate' => '{0} is not a valid Pager template.',
'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
];

View file

@ -0,0 +1,65 @@
<?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 [
'persons' => 'Persons',
'all_persons' => 'All persons',
'no_person' => 'Nobody found!',
'create' => 'Create a person',
'view' => 'View person',
'edit' => 'Edit person',
'delete' => 'Delete person',
'messages' => [
'createSuccess' => 'Person has been successfully created!',
'editSuccess' => 'Person has been successfully updated!',
'deleteSuccess' => 'Person has been removed!',
],
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',
'unique_name_hint' => 'Used for URLs',
'information_url' => 'Information URL',
'information_url_hint' =>
'Url to a relevant resource of information about the person, such as a homepage or third-party profile platform.',
'submit_create' => 'Create person',
'submit_edit' => 'Save person',
],
'podcast_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this podcast',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
],
'episode_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this episode',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
],
'credits' => 'Credits',
];

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 [
'title' => 'Platforms',
'home_url' => 'Go to {platformName} website',
'submit_url' => 'Submit your podcast on {platformName}',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',
'submit' => 'Save',
'messages' => [
'updateSuccess' => 'Platform links have been successfully updated!',
'removeLinkSuccess' => 'The platform link has been removed.',
'removeLinkError' =>
'The platform link could not be removed. Try again.',
],
'description' => [
'podcasting' => 'The podcast ID on this platform',
'social' => 'The podcast account ID on this platform',
'funding' => 'Call to action message',
],
];

View file

@ -0,0 +1,272 @@
<?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',
'no_podcast' => 'No podcast found!',
'create' => 'Create podcast',
'import' => 'Import podcast',
'new_episode' => 'New Episode',
'view' => 'View podcast',
'edit' => 'Edit podcast',
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
'messages' => [
'createSuccess' => 'Podcast has been successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
'importSuccess' => 'Podcast has been successfully imported!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'title' => 'Title',
'handle' => 'Handle',
'handle_hint' =>
'Used to identify the podcast. Uppercase, lowercase, numbers and underscores are accepted.',
'type' => [
'label' => 'Type',
'episodic' => 'Episodic',
'episodic_hint' => 'If episodes are intended to be consumed without any specific order. Newest episodes will be presented first.',
'serial' => 'Serial',
'serial_hint' => 'If episodes are intended to be consumed in sequential order. The oldest episodes will be presented first.',
],
'description' => 'Description',
'classification_section_title' => 'Classification',
'classification_section_subtitle' =>
'These fields will impact your audience and competition.',
'language' => 'Language',
'category' => 'Category',
'category_placeholder' => 'Select a category…',
'other_categories' => 'Other categories',
'parental_advisory' => [
'label' => 'Parental advisory',
'hint' => 'Does it contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
],
'author_section_title' => 'Author',
'author_section_subtitle' => 'Who is managing the podcast?',
'owner_name' => 'Owner name',
'owner_name_hint' =>
'For administrative use only. Visible in the public RSS feed.',
'owner_email' => 'Owner email',
'owner_email_hint' =>
'Will be used by most platforms to verify the podcast ownership. Visible in the public RSS feed.',
'publisher' => 'Publisher',
'publisher_hint' =>
'The group responsible for creating the show. Often refers to the parent company or network of a podcast. This field is sometimes labeled as Author.',
'copyright' => 'Copyright',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this podcast about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real place or fictional',
'monetization_section_title' => 'Monetization',
'monetization_section_subtitle' =>
'Earn money thanks to your audience.',
'payment_pointer' => 'Payment Pointer for Web Monetization',
'payment_pointer_hint' =>
'This is your where you will receive money thanks to Web Monetization',
'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the podcast',
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
'partner_image_url' => 'Image URL',
'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 all platforms',
'complete' => 'Podcast will not be having new episodes',
'lock' => 'Prevent podcast from being copied',
'lock_hint' =>
'The purpose is to tell other podcast platforms whether they are allowed to import this feed. A value of yes means that any attempt to import this feed into a new platform should be rejected.',
'submit_create' => 'Create podcast',
'submit_edit' => 'Save podcast',
],
'category_options' => [
'uncategorized' => 'uncategorized',
'arts' => 'Arts',
'business' => 'Business',
'comedy' => 'Comedy',
'education' => 'Education',
'fiction' => 'Fiction',
'government' => 'Government',
'health_and_fitness' => 'Health &amp Fitness',
'history' => 'History',
'kids_and_family' => 'Kids &amp Family',
'leisure' => 'Leisure',
'music' => 'Music',
'news' => 'News',
'religion_and_spirituality' => 'Religion &amp Spirituality',
'science' => 'Science',
'society_and_culture' => 'Society &amp Culture',
'sports' => 'Sports',
'technology' => 'Technology',
'true_crime' => 'True Crime',
'tv_and_film' => 'TV &amp Film',
'books' => 'Books',
'design' => 'Design',
'fashion_and_beauty' => 'Fashion &amp Beauty',
'food' => 'Food',
'performing_arts' => 'Performing Arts',
'visual_arts' => 'Visual Arts',
'careers' => 'Careers',
'entrepreneurship' => 'Entrepreneurship',
'investing' => 'Investing',
'management' => 'Management',
'marketing' => 'Marketing',
'non_profit' => 'Non-Profit',
'comedy_interviews' => 'Comedy Interviews',
'improv' => 'Improv',
'stand_up' => 'Stand-Up',
'courses' => 'Courses',
'how_to' => 'How To',
'language_learning' => 'Language Learning',
'self_improvement' => 'Self-Improvement',
'comedy_fiction' => 'Comedy Fiction',
'drama' => 'Drama',
'science_fiction' => 'Science Fiction',
'alternative_health' => 'Alternative Health',
'fitness' => 'Fitness',
'medicine' => 'Medicine',
'mental_health' => 'Mental Health',
'nutrition' => 'Nutrition',
'sexuality' => 'Sexuality',
'education_for_kids' => 'Education for Kids',
'parenting' => 'Parenting',
'pets_and_animals' => 'Pets &amp Animals',
'stories_for_kids' => 'Stories for Kids',
'animation_and_manga' => 'Animation &amp Manga',
'automotive' => 'Automotive',
'aviation' => 'Aviation',
'crafts' => 'Crafts',
'games' => 'Games',
'hobbies' => 'Hobbies',
'home_and_garden' => 'Home &amp Garden',
'video_games' => 'Video Games',
'music_commentary' => 'Music Commentary',
'music_history' => 'Music History',
'music_interviews' => 'Music Interviews',
'business_news' => 'Business News',
'daily_news' => 'Daily News',
'entertainment_news' => 'Entertainment News',
'news_commentary' => 'News Commentary',
'politics' => 'Politics',
'sports_news' => 'Sports News',
'tech_news' => 'Tech News',
'buddhism' => 'Buddhism',
'christianity' => 'Christianity',
'hinduism' => 'Hinduism',
'islam' => 'Islam',
'judaism' => 'Judaism',
'religion' => 'Religion',
'spirituality' => 'Spirituality',
'astronomy' => 'Astronomy',
'chemistry' => 'Chemistry',
'earth_sciences' => 'Earth Sciences',
'life_sciences' => 'Life Sciences',
'mathematics' => 'Mathematics',
'natural_sciences' => 'Natural Sciences',
'nature' => 'Nature',
'physics' => 'Physics',
'social_sciences' => 'Social Sciences',
'documentary' => 'Documentary',
'personal_journals' => 'Personal Journals',
'philosophy' => 'Philosophy',
'places_and_travel' => 'Places &amp Travel',
'relationships' => 'Relationships',
'baseball' => 'Baseball',
'basketball' => 'Basketball',
'cricket' => 'Cricket',
'fantasy_sports' => 'Fantasy Sports',
'football' => 'Football',
'golf' => 'Golf',
'hockey' => 'Hockey',
'rugby' => 'Rugby',
'running' => 'Running',
'soccer' => 'Soccer',
'swimming' => 'Swimming',
'tennis' => 'Tennis',
'volleyball' => 'Volleyball',
'wilderness' => 'Wilderness',
'wrestling' => 'Wrestling',
'after_shows' => 'After Shows',
'film_history' => 'Film History',
'film_interviews' => 'Film Interviews',
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'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',
'followers' => '{numberOfFollowers, plural,
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# post}
other {# posts}
}',
'activity' => 'Activity',
'episodes' => 'Episodes',
'sponsor' => 'Sponsor',
'funding_links' => 'Funding links for {podcastTitle}',
'find_on' => 'Find {podcastTitle} on',
'listen_on' => 'Listen on',
];

View file

@ -0,0 +1,37 @@
<?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 [
'warning' =>
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',
'imported_feed_url' => 'Feed URL',
'imported_feed_url_hint' => 'The feed must be in xml or rss format.',
'new_podcast_section_title' => 'The new podcast',
'advanced_params_section_title' => 'Advanced parameters',
'advanced_params_section_subtitle' =>
'Keep the default values if you have no idea of what the fields are for.',
'slug_field' => 'Field to be used to calculate episode slug',
'description_field' =>
'Source field used for episode description / show notes',
'force_renumber' => 'Force episodes renumbering',
'force_renumber_hint' =>
'Use this if your podcast does not have episode numbers but wish to set them during import.',
'season_number' => 'Season number',
'season_number_hint' =>
'Use this if your podcast does not have a season number but wish to set one during import. Leave blank otherwise.',
'max_episodes' => 'Maximum number of episodes to import',
'max_episodes_hint' => 'Leave blank to import all episodes',
'lock_import' =>
'This feed is protected. You cannot import it. If you are the owner, unprotect it on the origin platform.',
'submit' => 'Import podcast',
];

View file

@ -0,0 +1,36 @@
<?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 [
'go_to_page' => 'Go to podcast page',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',
'podcast-analytics-locations' => 'Locations',
'podcast-analytics-unique-listeners' => 'Unique listeners',
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
];

View file

@ -0,0 +1,56 @@
<?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' => 'General settings',
'instance' => [
'title' => 'Instance',
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'Save',
'editSuccess' => 'Instance has been updated successfully!',
'deleteIconSuccess' => 'Site icon has been remove successfully!',
],
'images' => [
'title' => 'Images',
'subtitle' => 'Here you can regenerate all images based on the originals that were uploaded. To be used if you find that some images are missing. This task may take a while.',
'regenerate' => 'Regenerate images',
'regenerationSuccess' => 'All images have been regenerated successfully!',
],
'housekeeping' => [
'title' => 'Housekeeping',
'subtitle' => 'Runs various housekeeping tasks. Use this feature if you ever encounter issues with media files or data integrity. These tasks may take a while.',
'reset_counts' => 'Reset counts',
'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).',
'rewrite_media' => 'Rewrite media metadata',
'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)',
'clear_cache' => 'Clear all cache',
'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.',
'run' => 'Run housekeeping',
'runSuccess' => 'Housekeeping has been run successfully!',
],
'theme' => [
'title' => 'Theme',
'accent_section_title' => 'Accent color',
'accent_section_subtitle' => 'Choose the color to determine the look and feel of all public pages.',
'pine' => 'Pine',
'crimson' => 'Crimson',
'amber' => 'Amber',
'lake' => 'Lake',
'jacaranda' => 'Jacaranda',
'onyx' => 'Onyx',
'submit' => 'Save',
'setInstanceThemeSuccess' => 'Theme has been updated successfully!',
],
];

View file

@ -0,0 +1,31 @@
<?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 [
'list' => [
'title' => 'Soundbites',
'soundbite' => 'Soundbite',
],
'messages' => [
'createSuccess' => 'Soundbite has been successfully created!',
'deleteSuccess' => 'Soundbite has been successfully removed!',
],
'form' => [
'title' => 'New soundbite',
'soundbite_title' => 'Soundbite title',
'start_time' => 'Start at',
'duration' => 'Duration',
'submit' => 'Create soundbite',
],
'play' => 'Play soundbite',
'stop' => 'Stop soundbite',
'create' => 'New soundbite',
'delete' => 'Delete soundbite',
];

View file

@ -0,0 +1,54 @@
<?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 [
'edit_roles' => "Edit {username}'s roles",
'forcePassReset' => 'Force pass reset',
'ban' => 'Ban',
'unban' => 'Unban',
'delete' => 'Delete',
'create' => 'New user',
'view' => "{username}'s info",
'all_users' => 'All users',
'list' => [
'user' => 'User',
'roles' => 'Roles',
'banned' => 'Banned?',
],
'form' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'new_password' => 'New Password',
'roles' => 'Roles',
'permissions' => 'Permissions',
'submit_create' => 'Create user',
'submit_edit' => 'Save',
'submit_password_change' => 'Change!',
],
'roles' => [
'superadmin' => 'Super admin',
],
'messages' => [
'createSuccess' =>
'User created successfully! {username} will be prompted with a password reset upon first authentication.',
'rolesEditSuccess' =>
"{username}'s roles have been successfully updated.",
'forcePassResetSuccess' =>
'{username} will be prompted with a password reset upon next visit.',
'banSuccess' => '{username} has been banned.',
'unbanSuccess' => '{username} has been unbanned.',
'banSuperAdminError' =>
'{username} is a superadmin, one does not simply ban a superadmin…',
'deleteSuperAdminError' =>
'{username} is a superadmin, one does not simply delete a superadmin…',
'deleteSuccess' => '{username} has been deleted.',
],
];

View file

@ -0,0 +1,18 @@
<?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 [
'min_dims' =>
'{field} is either not an image, or it is not wide or tall enough.',
'is_image_ratio' =>
'{field} is either not an image or not of the right ratio.',
'validate_url' =>
'The {field} field must be a valid URL (eg. https://example.com/).',
];

View file

@ -0,0 +1,72 @@
<?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 [
'list' => [
'title' => 'Video clips',
'status' => [
'label' => 'Status',
'queued' => 'queued',
'queued_hint' => 'Clip is waiting to be processed.',
'pending' => 'pending',
'pending_hint' => 'Clip will be generated shortly.',
'running' => 'running',
'running_hint' => 'Clip is being generated.',
'failed' => 'failed',
'failed_hint' => 'Clip could not be generated: script failure.',
'passed' => 'passed',
'passed_hint' => 'Clip was generated successfully!',
],
'clip' => 'Clip',
'duration' => 'Job duration',
],
'title' => 'Video clip: {videoClipLabel}',
'download_clip' => 'Download clip',
'create' => 'New video clip',
'go_to_page' => 'Go to clip page',
'retry' => 'Retry clip generation',
'delete' => 'Delete clip',
'logs' => 'Job logs',
'messages' => [
'alreadyExistingError' => 'The video clip you are trying to create already exists!',
'addToQueueSuccess' => 'Video clip has been added to queue, awaiting to be created!',
'deleteSuccess' => 'Video clip has been successfully removed!',
],
'format' => [
'landscape' => 'Landscape',
'portrait' => 'Portrait',
'squared' => 'Squared',
],
'form' => [
'title' => 'New video clip',
'params_section_title' => 'Video clip parameters',
'clip_title' => 'Clip title',
'format' => [
'label' => 'Choose a format',
'landscape_hint' => 'With a 16:9 ratio, landscape videos are great for PeerTube, Youtube and Vimeo.',
'portrait_hint' => 'With a 9:16 ratio, portrait videos are great for TikTok, Youtube shorts and Instagram stories.',
'squared_hint' => 'With a 1:1 ratio, squared videos are great for Mastodon, Facebook, Twitter and LinkedIn.',
],
'theme' => 'Select a theme',
'start_time' => 'Start at',
'duration' => 'Duration',
'trim_start' => 'Trim start',
'trim_end' => 'Trim end',
'submit' => 'Create video clip',
],
'requirements' => [
'title' => 'Missing requirements',
'missing' => 'You have missing requirements. Make sure to add all the required items to be allowed creating a video for this episode!',
'ffmpeg' => 'FFmpeg',
'gd' => 'Graphics Draw (GD)',
'freetype' => 'Freetype library for GD',
'transcript' => 'Transcript file (.srt)',
],
];

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'modifier la publication',
'unpublish' => 'dépublier',
'delete' => 'supprimer',
'deleted' => 'supprimés',
'delete-permanently' => 'supprimer définitivement',
'fediverse' => 'fédiverse',
'block-lists' => 'listes de blocage',
'users' => 'utilisateurs',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'Non publié',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Épisode',
'visibility' => 'Visibilité',
'comments' => 'Commentaires',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'Lépisode a été créé avec succès!',
'editSuccess' => 'Lépisode a bien été mis à jour!',
'publishCancelSuccess' => 'La publication de lépisode a bien été annulée!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Image de couverture',
'cover_hint' =>
'Si vous ne définissez pas dimage, celle du podcast sera utilisée à la place.',
'cover_size_hint' => 'La couverture de lépisode doit être carrée, avec au minimum 1400px de largeur et de hauteur.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Titre',
'title_hint' =>
'Doit contenir un titre dépisode clair et concis. Ne précisez ici aucun numéro de saison ou dépisode.',
@ -89,7 +116,7 @@ return [
'Ce texte est ajouté à la fin de chaque description dépisode, cest un bon endroit pour placer vos liens sociaux par exemple.',
'additional_files_section_title' => 'Fichiers additionels',
'additional_files_section_subtitle' =>
'Ces fichiers pourront être utilisées par dautres plate-formes pour procurer une meilleure expérience à vos auditeurs. Consulter le {podcastNamespaceLink} pour plus dinformations.',
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Localisation',
'location_section_subtitle' => 'De quel lieu cet épisode parle-t-il?',
'location_name' => 'Nom ou adresse du lieu',
@ -149,7 +176,7 @@ return [
'disclaimer' =>
"Supprimer lépisode supprimera tous les fichiers multimédia, commentaires, extraits vidéos et extraits sonores qui lui sont associés.",
'understand' => 'Je comprends, je veux supprimer lépisode',
'submit' => 'Supprimer',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Lecteur intégré',

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Limage doit être carrée et avoir au moins 400px de largeur et de hauteur.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Nom complet',
'full_name_hint' => 'Le nom complet ou le pseudonyme de lintervenant',
'unique_name' => 'Nom unique',

View file

@ -26,14 +26,34 @@ return [
'createSuccess' => 'Le podcast a été créé avec succès!',
'editSuccess' => 'Le podcast a bien été mis à jour!',
'importSuccess' => 'Le podcast a été importé avec succès!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Informations sur le Podcast',
'identity_section_subtitle' => 'Ces champs vous permettent de vous faire remarquer.',
'cover' => 'Couverture du podcast',
'cover_size_hint' => 'La couverture du podcast doit être carrée, avec au minimum 1400px de largeur et de hauteur.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Bannière du podcast',
'banner_size_hint' => 'La bannière doit être au format 3/1, avec au minimum 1500px de largeur.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Supprimer la bannière du podcast',
'title' => 'Titre',
'handle' => 'Identifiant',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'Ceci sera injecté dans la balise ❬channel❭.',
'new_feed_url' => 'URL du nouveau flux',
'new_feed_url_hint' => 'Utilisez ce champ lorsque vous déplacez ce podcast vers un autre domaine ou que vous changez dhébergeur. Par défaut, ce champ est rempli avec lURL du flux actuel si le podcast est importé.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partenariat',
'partner_id' => 'ID',
'partner_link_url' => 'URL lien',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Critiques de films',
'tv_reviews' => 'Critiques TV',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'Par {publisher}',
'season' => 'Saison {seasonNumber}',
'list_of_episodes_year' => 'Épisodes de {year} ({episodeCount})',
@ -227,12 +256,12 @@ return [
'no_episode' => 'Aucun épisode trouvé!',
'follow' => 'Suivre',
'followers' => '{numberOfFollowers, plural,
one {# abonné·e}
other {# abonné·e·s}
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# publication}
other {# publications}
one {# post}
other {# posts}
}',
'activity' => 'Activité',
'episodes' => 'Épisodes',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'Cette procédure peut prendre du temps. Dans la mesure où la version actuelle ne montre aucune progression durant lexécution, vous ne pourrez voir aucun changement avant la fin. En cas derreur de timeout, augmentez la valeur de `max_execution_time`.',
'Cette procédure peut prendre du temps.<br/>Dans la mesure où la version actuelle ne montre aucune progression durant lexécution, vous ne pourrez voir aucun changement avant la fin.<br/>En cas derreur de timeout, augmentez la valeur de `max_execution_time`.',
'old_podcast_section_title' => 'Le podcast à importer',
'old_podcast_section_subtitle' =>
'Assurez-vous dêtre détenteur des droits du podcast avant de limporter. Copier et diffuser un podcast sans en détenir les droits est assimilable à de la contrefaçon et est passible de poursuites.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'Épisodes',
'episode-list' => 'Tous les épisodes',
'episode-create' => 'Créer un épisode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Mesures daudience',
'podcast-analytics' => 'Vue densemble',
'podcast-analytics-webpages' => 'Visites des pages web',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Favicon du site',
'site_icon_delete' => 'Supprimer la favicon du site',
'site_icon_hint' => 'Les favicons sont ce que vous voyez sur les onglets de votre navigateur, dans votre barre de favoris, et lorsque vous ajoutez un site web en raccourci sur des appareils mobiles.',
'site_icon_helper' => 'La favicon doit être carrée, avec au minimum 512px de largeur et de hauteur.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Titre du site',
'site_description' => 'Description du site',
'submit' => 'Sauvegarder',

View file

@ -0,0 +1,15 @@
<?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 [
'dashboard' => 'Admin dashboard',
'welcome_message' => 'Welcome to the admin area!',
'choose_interact' => 'Choose how to interact',
];

View file

@ -0,0 +1,50 @@
<?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 [
'label' => 'breadcrumb',
config('Admin')
->gateway => 'Home',
'podcasts' => 'podcasts',
'episodes' => 'episodes',
'contributors' => 'contributors',
'pages' => 'pages',
'settings' => 'settings',
'theme' => 'theme',
'add' => 'add',
'new' => 'new',
'edit' => 'edit',
'persons' => 'persons',
'publish' => 'publish',
'publish-edit' => 'edit publication',
'unpublish' => 'unpublish',
'delete' => 'delete',
'deleted' => 'deleted',
'delete-permanently' => 'delete permanently',
'fediverse' => 'fediverse',
'block-lists' => 'block lists',
'users' => 'users',
'my-account' => 'my account',
'change-password' => 'change password',
'import' => 'feed import',
'platforms' => 'platforms',
'social' => 'social networks',
'funding' => 'funding',
'analytics' => 'analytics',
'locations' => 'locations',
'webpages' => 'web pages',
'unique-listeners' => 'unique listeners',
'players' => 'players',
'listening-time' => 'listening time',
'time-periods' => 'time periods',
'soundbites' => 'soundbites',
'video-clips' => 'video clips',
'embed' => 'embeddable player',
];

View file

@ -0,0 +1,38 @@
<?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 [
'by_service_weekly' => 'Episode downloads by service (for the past week)',
'by_player_weekly' => 'Episode downloads by player (for the past week)',
'by_player_yearly' => 'Episode downloads by player (for the past year)',
'by_device_weekly' => 'Episode downloads by device (for the past week)',
'by_os_weekly' => 'Episode downloads by O.S. (for the past week)',
'podcast_by_region' => 'Episode downloads by region (for the past week)',
'unique_daily_listeners' => 'Daily unique listeners',
'unique_monthly_listeners' => 'Monthly unique listeners',
'by_browser' => 'Web pages usage by browser (for the past week)',
'podcast_by_day' => 'Episode daily downloads',
'podcast_by_month' => 'Episode monthly downloads',
'episode_by_day' => 'Episode daily downloads (first 60 days)',
'episode_by_month' => 'Episode monthly downloads',
'episodes_by_day' =>
'5 latest episodes downloads (during their first 60 days)',
'by_country_weekly' => 'Episode downloads by country (for the past week)',
'by_country_yearly' => 'Episode downloads by country (for the past year)',
'by_domain_weekly' => 'Web pages visits by source (for the past week)',
'by_domain_yearly' => 'Web pages visits by source (for the past year)',
'by_entry_page' => 'Web pages visits by landing page (for the past week)',
'podcast_bots' => 'Bots (crawlers)',
'daily_listening_time' => 'Daily cumulative listening time',
'monthly_listening_time' => 'Monthly cumulative listening time',
'by_weekday' => 'By week day (for the past 60 days)',
'by_hour' => 'By time of day (for the past 60 days)',
'podcast_by_bandwidth' => 'Daily used bandwidth (in MB)',
];

View file

@ -0,0 +1,49 @@
<?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',
'more' => 'More',
'no_data' => 'No data found!',
'close' => 'Close',
'edit' => 'Edit',
'copy' => 'Copy',
'copied' => 'Copied!',
'home' => 'Home',
'explicit' => 'Explicit',
'powered_by' => 'Powered by {castopod}',
'actions' => 'Actions',
'pageInfo' => 'Page {currentPage} out of {pageCount}',
'go_back' => 'Go back',
'forms' => [
'editor' => [
'write' => 'Write',
'preview' => 'Preview',
'help' => 'Powered by markdown',
],
'multiSelect' => [
'selectText' => 'Press to select',
'loadingText' => 'Loading…',
'noResultsText' => 'No results found',
'noChoicesText' => 'No choices to choose from',
'maxItemText' => 'Cannot add more items',
],
'upload_file' => 'Upload a file',
'remote_url' => 'Remote URL',
],
'play_episode_button' => [
'play' => 'Play',
'playing' => 'Playing',
],
'size_limit' => 'Size limit: {0}.',
];

View file

@ -0,0 +1,41 @@
<?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 [
'podcast_contributors' => 'Podcast contributors',
'view' => "{username}'s contribution to {podcastTitle}",
'add' => 'Add contributor',
'add_contributor' => 'Add a contributor for {0}',
'edit_role' => 'Update role for {0}',
'edit' => 'Edit',
'remove' => 'Remove',
'list' => [
'username' => 'Username',
'role' => 'Role',
],
'form' => [
'user' => 'User',
'user_placeholder' => 'Select a user…',
'role' => 'Role',
'role_placeholder' => 'Select its role…',
'submit_add' => 'Add contributor',
'submit_edit' => 'Update role',
],
'roles' => [
'podcast_admin' => 'Podcast admin',
],
'messages' => [
'removeOwnerError' => "You can't remove the podcast owner!",
'removeSuccess' =>
'You have successfully removed {username} from {podcastTitle}',
'alreadyAddedError' =>
"The contributor you're trying to add has already been added!",
],
];

View file

@ -0,0 +1,264 @@
<?php
declare(strict_types=1);
/**
* ISO 3166 country codes
*
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'AD' => 'Andorra',
'AE' => 'United Arab Emirates',
'AF' => 'Afghanistan',
'AG' => 'Antigua and Barbuda',
'AI' => 'Anguilla',
'AL' => 'Albania',
'AM' => 'Armenia',
'AO' => 'Angola',
'AQ' => 'Antarctica',
'AR' => 'Argentina',
'AS' => 'American Samoa',
'AT' => 'Austria',
'AU' => 'Australia',
'AW' => 'Aruba',
'AX' => 'Åland Islands',
'AZ' => 'Azerbaijan',
'BA' => 'Bosnia and Herzegovina',
'BB' => 'Barbados',
'BD' => 'Bangladesh',
'BE' => 'Belgium',
'BF' => 'Burkina Faso',
'BG' => 'Bulgaria',
'BH' => 'Bahrain',
'BI' => 'Burundi',
'BJ' => 'Benin',
'BL' => 'Saint Barthélemy',
'BM' => 'Bermuda',
'BN' => 'Brunei Darussalam',
'BO' => 'Bolivia, Plurinational State of',
'BQ' => 'Bonaire, Sint Eustatius and Saba',
'BR' => 'Brazil',
'BS' => 'Bahamas',
'BT' => 'Bhutan',
'BV' => 'Bouvet Island',
'BW' => 'Botswana',
'BY' => 'Belarus',
'BZ' => 'Belize',
'CA' => 'Canada',
'CC' => 'Cocos (Keeling) Islands',
'CD' => 'Congo, the Democratic Republic of the',
'CF' => 'Central African Republic',
'CG' => 'Congo',
'CH' => 'Switzerland',
'CI' => "Côte d'Ivoire",
'CK' => 'Cook Islands',
'CL' => 'Chile',
'CM' => 'Cameroon',
'CN' => 'China',
'CO' => 'Colombia',
'CR' => 'Costa Rica',
'CU' => 'Cuba',
'CV' => 'Cape Verde',
'CW' => 'Curaçao',
'CX' => 'Christmas Island',
'CY' => 'Cyprus',
'CZ' => 'Czech Republic',
'DE' => 'Germany',
'DJ' => 'Djibouti',
'DK' => 'Denmark',
'DM' => 'Dominica',
'DO' => 'Dominican Republic',
'DZ' => 'Algeria',
'EC' => 'Ecuador',
'EE' => 'Estonia',
'EG' => 'Egypt',
'EH' => 'Western Sahara',
'ER' => 'Eritrea',
'ES' => 'Spain',
'ET' => 'Ethiopia',
'FI' => 'Finland',
'FJ' => 'Fiji',
'FK' => 'Falkland Islands (Malvinas)',
'FM' => 'Micronesia, Federated States of',
'FO' => 'Faroe Islands',
'FR' => 'France',
'GA' => 'Gabon',
'GB' => 'United Kingdom',
'GD' => 'Grenada',
'GE' => 'Georgia',
'GF' => 'French Guiana',
'GG' => 'Guernsey',
'GH' => 'Ghana',
'GI' => 'Gibraltar',
'GL' => 'Greenland',
'GM' => 'Gambia',
'GN' => 'Guinea',
'GP' => 'Guadeloupe',
'GQ' => 'Equatorial Guinea',
'GR' => 'Greece',
'GS' => 'South Georgia and the South Sandwich Islands',
'GT' => 'Guatemala',
'GU' => 'Guam',
'GW' => 'Guinea-Bissau',
'GY' => 'Guyana',
'HK' => 'Hong Kong',
'HM' => 'Heard Island and McDonald Islands',
'HN' => 'Honduras',
'HR' => 'Croatia',
'HT' => 'Haiti',
'HU' => 'Hungary',
'ID' => 'Indonesia',
'IE' => 'Ireland',
'IL' => 'Israel',
'IM' => 'Isle of Man',
'IN' => 'India',
'IO' => 'British Indian Ocean Territory',
'IQ' => 'Iraq',
'IR' => 'Iran, Islamic Republic of',
'IS' => 'Iceland',
'IT' => 'Italy',
'JE' => 'Jersey',
'JM' => 'Jamaica',
'JO' => 'Jordan',
'JP' => 'Japan',
'KE' => 'Kenya',
'KG' => 'Kyrgyzstan',
'KH' => 'Cambodia',
'KI' => 'Kiribati',
'KM' => 'Comoros',
'KN' => 'Saint Kitts and Nevis',
'KP' => "Korea, Democratic People's Republic of",
'KR' => 'Korea, Republic of',
'KW' => 'Kuwait',
'KY' => 'Cayman Islands',
'KZ' => 'Kazakhstan',
'LA' => "Lao People's Democratic Republic",
'LB' => 'Lebanon',
'LC' => 'Saint Lucia',
'LI' => 'Liechtenstein',
'LK' => 'Sri Lanka',
'LR' => 'Liberia',
'LS' => 'Lesotho',
'LT' => 'Lithuania',
'LU' => 'Luxembourg',
'LV' => 'Latvia',
'LY' => 'Libya',
'MA' => 'Morocco',
'MC' => 'Monaco',
'MD' => 'Moldova, Republic of',
'ME' => 'Montenegro',
'MF' => 'Saint Martin (French part)',
'MG' => 'Madagascar',
'MH' => 'Marshall Islands',
'MK' => 'Macedonia, the Former Yugoslav Republic of',
'ML' => 'Mali',
'MM' => 'Myanmar',
'MN' => 'Mongolia',
'MO' => 'Macao',
'MP' => 'Northern Mariana Islands',
'MQ' => 'Martinique',
'MR' => 'Mauritania',
'MS' => 'Montserrat',
'MT' => 'Malta',
'MU' => 'Mauritius',
'MV' => 'Maldives',
'MW' => 'Malawi',
'MX' => 'Mexico',
'MY' => 'Malaysia',
'MZ' => 'Mozambique',
'N/A' => 'Not Applicable (local IP…)',
'NA' => 'Namibia',
'NC' => 'New Caledonia',
'NE' => 'Niger',
'NF' => 'Norfolk Island',
'NG' => 'Nigeria',
'NI' => 'Nicaragua',
'NL' => 'Netherlands',
'NO' => 'Norway',
'NP' => 'Nepal',
'NR' => 'Nauru',
'NU' => 'Niue',
'NZ' => 'New Zealand',
'OM' => 'Oman',
'PA' => 'Panama',
'PE' => 'Peru',
'PF' => 'French Polynesia',
'PG' => 'Papua New Guinea',
'PH' => 'Philippines',
'PK' => 'Pakistan',
'PL' => 'Poland',
'PM' => 'Saint Pierre and Miquelon',
'PN' => 'Pitcairn',
'PR' => 'Puerto Rico',
'PS' => 'Palestine, State of',
'PT' => 'Portugal',
'PW' => 'Palau',
'PY' => 'Paraguay',
'QA' => 'Qatar',
'RE' => 'Réunion',
'RO' => 'Romania',
'RS' => 'Serbia',
'RU' => 'Russian Federation',
'RW' => 'Rwanda',
'SA' => 'Saudi Arabia',
'SB' => 'Solomon Islands',
'SC' => 'Seychelles',
'SD' => 'Sudan',
'SE' => 'Sweden',
'SG' => 'Singapore',
'SH' => 'Saint Helena, Ascension and Tristan da Cunha',
'SI' => 'Slovenia',
'SJ' => 'Svalbard and Jan Mayen',
'SK' => 'Slovakia',
'SL' => 'Sierra Leone',
'SM' => 'San Marino',
'SN' => 'Senegal',
'SO' => 'Somalia',
'SR' => 'Suriname',
'SS' => 'South Sudan',
'ST' => 'Sao Tome and Principe',
'SV' => 'El Salvador',
'SX' => 'Sint Maarten (Dutch part)',
'SY' => 'Syrian Arab Republic',
'SZ' => 'Swaziland',
'TC' => 'Turks and Caicos Islands',
'TD' => 'Chad',
'TF' => 'French Southern Territories',
'TG' => 'Togo',
'TH' => 'Thailand',
'TJ' => 'Tajikistan',
'TK' => 'Tokelau',
'TL' => 'Timor-Leste',
'TM' => 'Turkmenistan',
'TN' => 'Tunisia',
'TO' => 'Tonga',
'TR' => 'Turkey',
'TT' => 'Trinidad and Tobago',
'TV' => 'Tuvalu',
'TW' => 'Taiwan, Province of China',
'TZ' => 'Tanzania, United Republic of',
'UA' => 'Ukraine',
'UG' => 'Uganda',
'UM' => 'United States Minor Outlying Islands',
'US' => 'United States',
'UY' => 'Uruguay',
'UZ' => 'Uzbekistan',
'VA' => 'Holy See (Vatican City State)',
'VC' => 'Saint Vincent and the Grenadines',
'VE' => 'Venezuela, Bolivarian Republic of',
'VG' => 'Virgin Islands, British',
'VI' => 'Virgin Islands, U.S.',
'VN' => 'Viet Nam',
'VU' => 'Vanuatu',
'WF' => 'Wallis and Futuna',
'WS' => 'Samoa',
'YE' => 'Yemen',
'YT' => 'Mayotte',
'ZA' => 'South Africa',
'ZM' => 'Zambia',
'ZW' => 'Zimbabwe',
];

View file

@ -0,0 +1,192 @@
<?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}',
'number_of_comments' => '{numberOfComments, plural,
one {# comment}
other {# comments}
}',
'all_podcast_episodes' => 'All podcast episodes',
'back_to_podcast' => 'Go back to podcast',
'edit' => 'Edit',
'publish' => 'Publish',
'publish_edit' => 'Edit publication',
'unpublish' => 'Unpublish',
'publish_error' => 'Episode is already published.',
'publish_edit_error' => 'Episode is already published.',
'publish_cancel_error' => 'Episode is already published.',
'unpublish_error' => 'Episode is not published.',
'delete' => 'Delete',
'go_to_page' => 'Go to page',
'create' => 'Add an episode',
'publication_status' => [
'published' => 'Published',
'scheduled' => 'Scheduled',
'not_published' => 'Not published',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episode',
'visibility' => 'Visibility',
'comments' => 'Comments',
'actions' => 'Actions',
],
'messages' => [
'createSuccess' => 'Episode has been successfully created!',
'editSuccess' => 'Episode has been successfully updated!',
'publishCancelSuccess' => 'Episode publication successfully cancelled!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
'Your file size is too big! Max size is {0}. Increase the `memory_limit`, `upload_max_filesize` and `post_max_size` values in your php configuration file then restart your web server to upload your file.',
'audio_file' => 'Audio file',
'audio_file_hint' => 'Choose an .mp3 or .m4a audio file.',
'info_section_title' => 'Episode info',
'cover' => 'Episode cover',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Title',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
'permalink' => 'Permalink',
'season_number' => 'Season',
'episode_number' => 'Episode',
'type' => [
'label' => 'Type',
'full' => 'Full',
'full_hint' => 'Complete content (the episode)',
'trailer' => 'Trailer',
'trailer_hint' => 'Short, promotional piece of content that represents a preview of the current show',
'bonus' => 'Bonus',
'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show',
],
'parental_advisory' => [
'label' => 'Parental advisory',
'hint' => 'Does the episode contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
],
'show_notes_section_title' => 'Show notes',
'show_notes_section_subtitle' =>
'Up to 4000 characters, be clear and concise. Show notes help potential listeners in finding the episode.',
'description' => 'Description',
'description_footer' => 'Description footer',
'description_footer_hint' =>
'This text is added at the end of each episode description, it is a good place to input your social links for example.',
'additional_files_section_title' => 'Additional files',
'additional_files_section_subtitle' =>
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this episode about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real or fictional location',
'transcript' => 'Transcript (subtitles / closed captions)',
'transcript_hint' => 'Only .srt are allowed.',
'transcript_download' => 'Download transcript',
'transcript_file' => 'Transcript file (.srt)',
'transcript_remote_url' => 'Remote url for transcript',
'transcript_file_delete' => 'Delete transcript file',
'chapters' => 'Chapters',
'chapters_hint' => 'File must be in JSON Chapters format.',
'chapters_download' => 'Download chapters',
'chapters_file' => 'Chapters file',
'chapters_remote_url' => 'Remote url for chapters file',
'chapters_file_delete' => 'Delete chapters file',
'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the episode',
'custom_rss_hint' => 'This will be injected within the ❬item❭ tag.',
'block' => 'Episode should be hidden from all platforms',
'block_hint' =>
'The episode show or hide post. If you want this episode removed from the Apple directory, toggle this on.',
'submit_create' => 'Create episode',
'submit_edit' => 'Save episode',
],
'publish_form' => [
'back_to_episode_dashboard' => 'Back to episode dashboard',
'post' => 'Your announcement post',
'post_hint' =>
"Write a message to announce the publication of your episode. The message will be broadcasted to all your followers in the fediverse and be featured in your podcast's homepage.",
'message_placeholder' => 'Write your message…',
'publication_date' => 'Publication date',
'publication_method' => [
'now' => 'Now',
'schedule' => 'Schedule',
],
'scheduled_publication_date' => 'Scheduled publication date',
'scheduled_publication_date_clear' => 'Clear publication date',
'scheduled_publication_date_hint' =>
'You can schedule the episode release by setting a future publication date. This field must be formatted as YYYY-MM-DD HH:mm',
'submit' => 'Publish',
'submit_edit' => 'Edit publication',
'cancel_publication' => 'Cancel publication',
'message_warning' => 'You did not write a message for your announcement post!',
'message_warning_hint' => 'Having a message increases social engagement, resulting in a better visibility for your episode.',
'message_warning_submit' => 'Publish anyways',
],
'unpublish_form' => [
'disclaimer' =>
"Unpublishing the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
'understand' => 'I understand, I want to unpublish the episode',
'submit' => 'Unpublish',
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Embeddable player',
'label' =>
'Pick a theme color, copy the embeddable player to clipboard, then paste it on your website.',
'clipboard_iframe' => 'Copy embeddable player to clipboard',
'clipboard_url' => 'Copy address to clipboard',
'dark' => 'Dark',
'dark-transparent' => 'Dark transparent',
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
];

View file

@ -0,0 +1,23 @@
<?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 [
'go_to_page' => 'View episode page',
'dashboard' => 'Episode dashboard',
'episode-view' => 'Home',
'episode-edit' => 'Edit episode',
'episode-persons-manage' => 'Manage persons',
'embed-add' => 'Embeddable player',
'clips' => 'Clips',
'video-clips-list' => 'Video clips',
'video-clips-create' => 'New video clip',
'soundbites-list' => 'Soundbites',
'soundbites-create' => 'New soundbite',
];

View file

@ -0,0 +1,32 @@
<?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 [
'messages' => [
'actorNotFound' => 'The account could not be found!',
'blockActorSuccess' => '{actor} has been blocked!',
'unblockActorSuccess' => 'Actor has been unblocked!',
'blockDomainSuccess' => '{domain} has been blocked!',
'unblockDomainSuccess' => '{domain} has been unblocked!',
],
'blocked_actors' => 'Blocked accounts',
'blocked_domains' => 'Blocked domains',
'block_lists_form' => [
'handle' => 'Account handle',
'handle_hint' => 'Input @username@domain account.',
'domain' => 'Domain name',
'submit' => 'Block!',
],
'list' => [
'actor' => 'Account',
'domain' => 'Domain name',
'unblock' => 'Unblock',
],
];

View file

@ -0,0 +1,14 @@
<?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',
'no_podcast' => 'No podcast found',
];

View file

@ -0,0 +1,61 @@
<?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 [
'manual_config' => 'Manual configuration',
'manual_config_subtitle' =>
'Create a `.env` file with your settings and refresh the page to continue installation.',
'form' => [
'instance_config' => 'Instance configuration',
'hostname' => 'Hostname',
'media_base_url' => 'Media base URL',
'media_base_url_hint' =>
'If you use a CDN and/or an external analytics service, you may set them here.',
'admin_gateway' => 'Admin gateway',
'admin_gateway_hint' =>
'The route to access the admin area (eg. https://example.com/cp-admin). It is set by default as cp-admin, we recommend you change it for security reasons.',
'auth_gateway' => 'Auth gateway',
'auth_gateway_hint' =>
'The route to access the authentication pages (eg. https://example.com/cp-auth). It is set by default as cp-auth, we recommend you change it for security reasons.',
'database_config' => 'Database configuration',
'database_config_hint' =>
'Castopod needs to connect to your MySQL (or MariaDB) database. If you do not have these required info, please contact your server administrator.',
'db_hostname' => 'Database hostname',
'db_name' => 'Database name',
'db_username' => 'Database username',
'db_password' => 'Database password',
'db_prefix' => 'Database prefix',
'db_prefix_hint' =>
"The prefix of the Castopod table names, leave as is if you don't know what it means.",
'cache_config' => 'Cache configuration',
'cache_config_hint' =>
'Choose your preferred cache handler. Leave it as the default value if you have no clue what it means.',
'cache_handler' => 'Cache handler',
'cacheHandlerOptions' => [
'file' => 'File',
'redis' => 'Redis',
'predis' => 'Predis',
],
'next' => 'Next',
'submit' => 'Finish install',
'create_superadmin' => 'Create your superadmin account',
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
],
'messages' => [
'createSuperAdminSuccess' =>
'Your superadmin account has been created successfully. Login to start podcasting!',
'databaseConnectError' =>
'Castopod could not connect to your database. Edit your database configuration and try again.',
'writeError' =>
"Couldn't create/write the `.env` file. You must create it manually by following the `.env.example` file template in the Castopod package.",
],
];

View file

@ -0,0 +1,18 @@
<?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 [
'info' => 'My account info',
'changePassword' => 'Change my password',
'messages' => [
'wrongPasswordError' => "You've entered the wrong password, try again.",
'passwordChangeSuccess' => 'Password has been successfully changed!',
],
];

View file

@ -0,0 +1,41 @@
<?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 [
'toggle_sidebar' => 'Toggle sidebar',
'go_to_website' => 'Go to website',
'go_to_admin' => 'Go to admin',
'dashboard' => 'Dashboard',
'admin' => 'Home',
'podcasts' => 'Podcasts',
'podcast-list' => 'All podcasts',
'podcast-create' => 'New podcast',
'podcast-import' => 'Import a podcast',
'persons' => 'Persons',
'person-list' => 'All persons',
'person-create' => 'New person',
'fediverse' => 'Fediverse',
'fediverse-blocked-actors' => 'Blocked accounts',
'fediverse-blocked-domains' => 'Blocked domains',
'users' => 'Users',
'user-list' => 'All users',
'user-create' => 'New user',
'pages' => 'Pages',
'page-list' => 'All pages',
'page-create' => 'New Page',
'settings' => 'Settings',
'settings-general' => 'General',
'settings-theme' => 'Theme',
'account' => [
'my-account' => 'My account',
'change-password' => 'Change password',
'logout' => 'Logout',
],
];

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 [
'back_to_home' => 'Back to home',
'page' => 'Page',
'all_pages' => 'All pages',
'create' => 'New page',
'go_to_page' => 'Go to page',
'edit' => 'Edit page',
'delete' => 'Delete page',
'form' => [
'title' => 'Title',
'permalink' => 'Permalink',
'content' => 'Content',
'submit_create' => 'Create page',
'submit_edit' => 'Save',
],
'messages' => [
'createSuccess' => 'The page “{pageTitle}” was created successfully!',
'editSuccess' => 'The page was successfully updated!',
],
];

View file

@ -0,0 +1,21 @@
<?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 [
'pageNavigation' => 'Page navigation',
'first' => 'First',
'previous' => 'Previous',
'next' => 'Next',
'last' => 'Last',
'older' => 'Older',
'newer' => 'Newer',
'invalidTemplate' => '{0} is not a valid Pager template.',
'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
];

View file

@ -0,0 +1,65 @@
<?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 [
'persons' => 'Persons',
'all_persons' => 'All persons',
'no_person' => 'Nobody found!',
'create' => 'Create a person',
'view' => 'View person',
'edit' => 'Edit person',
'delete' => 'Delete person',
'messages' => [
'createSuccess' => 'Person has been successfully created!',
'editSuccess' => 'Person has been successfully updated!',
'deleteSuccess' => 'Person has been removed!',
],
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',
'unique_name_hint' => 'Used for URLs',
'information_url' => 'Information URL',
'information_url_hint' =>
'Url to a relevant resource of information about the person, such as a homepage or third-party profile platform.',
'submit_create' => 'Create person',
'submit_edit' => 'Save person',
],
'podcast_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this podcast',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
],
'episode_form' => [
'title' => 'Manage persons',
'add_section_title' => 'Add persons to this episode',
'add_section_subtitle' => 'You may pick several persons and roles.',
'persons' => 'Persons',
'persons_hint' =>
'You may select one or several persons with the same roles. You need to create the persons first.',
'roles' => 'Roles',
'roles_hint' =>
'You may select none, one or several roles for a person.',
'submit_add' => 'Add person(s)',
'remove' => 'Remove',
],
'credits' => 'Credits',
];

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 [
'title' => 'Platforms',
'home_url' => 'Go to {platformName} website',
'submit_url' => 'Submit your podcast on {platformName}',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',
'submit' => 'Save',
'messages' => [
'updateSuccess' => 'Platform links have been successfully updated!',
'removeLinkSuccess' => 'The platform link has been removed.',
'removeLinkError' =>
'The platform link could not be removed. Try again.',
],
'description' => [
'podcasting' => 'The podcast ID on this platform',
'social' => 'The podcast account ID on this platform',
'funding' => 'Call to action message',
],
];

View file

@ -0,0 +1,272 @@
<?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',
'no_podcast' => 'No podcast found!',
'create' => 'Create podcast',
'import' => 'Import podcast',
'new_episode' => 'New Episode',
'view' => 'View podcast',
'edit' => 'Edit podcast',
'delete' => 'Delete podcast',
'see_episodes' => 'See episodes',
'see_contributors' => 'See contributors',
'go_to_page' => 'Go to page',
'latest_episodes' => 'Latest episodes',
'see_all_episodes' => 'See all episodes',
'messages' => [
'createSuccess' => 'Podcast has been successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
'importSuccess' => 'Podcast has been successfully imported!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'title' => 'Title',
'handle' => 'Handle',
'handle_hint' =>
'Used to identify the podcast. Uppercase, lowercase, numbers and underscores are accepted.',
'type' => [
'label' => 'Type',
'episodic' => 'Episodic',
'episodic_hint' => 'If episodes are intended to be consumed without any specific order. Newest episodes will be presented first.',
'serial' => 'Serial',
'serial_hint' => 'If episodes are intended to be consumed in sequential order. The oldest episodes will be presented first.',
],
'description' => 'Description',
'classification_section_title' => 'Classification',
'classification_section_subtitle' =>
'These fields will impact your audience and competition.',
'language' => 'Language',
'category' => 'Category',
'category_placeholder' => 'Select a category…',
'other_categories' => 'Other categories',
'parental_advisory' => [
'label' => 'Parental advisory',
'hint' => 'Does it contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
],
'author_section_title' => 'Author',
'author_section_subtitle' => 'Who is managing the podcast?',
'owner_name' => 'Owner name',
'owner_name_hint' =>
'For administrative use only. Visible in the public RSS feed.',
'owner_email' => 'Owner email',
'owner_email_hint' =>
'Will be used by most platforms to verify the podcast ownership. Visible in the public RSS feed.',
'publisher' => 'Publisher',
'publisher_hint' =>
'The group responsible for creating the show. Often refers to the parent company or network of a podcast. This field is sometimes labeled as Author.',
'copyright' => 'Copyright',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this podcast about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real place or fictional',
'monetization_section_title' => 'Monetization',
'monetization_section_subtitle' =>
'Earn money thanks to your audience.',
'payment_pointer' => 'Payment Pointer for Web Monetization',
'payment_pointer_hint' =>
'This is your where you will receive money thanks to Web Monetization',
'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the podcast',
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
'partner_image_url' => 'Image URL',
'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 all platforms',
'complete' => 'Podcast will not be having new episodes',
'lock' => 'Prevent podcast from being copied',
'lock_hint' =>
'The purpose is to tell other podcast platforms whether they are allowed to import this feed. A value of yes means that any attempt to import this feed into a new platform should be rejected.',
'submit_create' => 'Create podcast',
'submit_edit' => 'Save podcast',
],
'category_options' => [
'uncategorized' => 'uncategorized',
'arts' => 'Arts',
'business' => 'Business',
'comedy' => 'Comedy',
'education' => 'Education',
'fiction' => 'Fiction',
'government' => 'Government',
'health_and_fitness' => 'Health &amp Fitness',
'history' => 'History',
'kids_and_family' => 'Kids &amp Family',
'leisure' => 'Leisure',
'music' => 'Music',
'news' => 'News',
'religion_and_spirituality' => 'Religion &amp Spirituality',
'science' => 'Science',
'society_and_culture' => 'Society &amp Culture',
'sports' => 'Sports',
'technology' => 'Technology',
'true_crime' => 'True Crime',
'tv_and_film' => 'TV &amp Film',
'books' => 'Books',
'design' => 'Design',
'fashion_and_beauty' => 'Fashion &amp Beauty',
'food' => 'Food',
'performing_arts' => 'Performing Arts',
'visual_arts' => 'Visual Arts',
'careers' => 'Careers',
'entrepreneurship' => 'Entrepreneurship',
'investing' => 'Investing',
'management' => 'Management',
'marketing' => 'Marketing',
'non_profit' => 'Non-Profit',
'comedy_interviews' => 'Comedy Interviews',
'improv' => 'Improv',
'stand_up' => 'Stand-Up',
'courses' => 'Courses',
'how_to' => 'How To',
'language_learning' => 'Language Learning',
'self_improvement' => 'Self-Improvement',
'comedy_fiction' => 'Comedy Fiction',
'drama' => 'Drama',
'science_fiction' => 'Science Fiction',
'alternative_health' => 'Alternative Health',
'fitness' => 'Fitness',
'medicine' => 'Medicine',
'mental_health' => 'Mental Health',
'nutrition' => 'Nutrition',
'sexuality' => 'Sexuality',
'education_for_kids' => 'Education for Kids',
'parenting' => 'Parenting',
'pets_and_animals' => 'Pets &amp Animals',
'stories_for_kids' => 'Stories for Kids',
'animation_and_manga' => 'Animation &amp Manga',
'automotive' => 'Automotive',
'aviation' => 'Aviation',
'crafts' => 'Crafts',
'games' => 'Games',
'hobbies' => 'Hobbies',
'home_and_garden' => 'Home &amp Garden',
'video_games' => 'Video Games',
'music_commentary' => 'Music Commentary',
'music_history' => 'Music History',
'music_interviews' => 'Music Interviews',
'business_news' => 'Business News',
'daily_news' => 'Daily News',
'entertainment_news' => 'Entertainment News',
'news_commentary' => 'News Commentary',
'politics' => 'Politics',
'sports_news' => 'Sports News',
'tech_news' => 'Tech News',
'buddhism' => 'Buddhism',
'christianity' => 'Christianity',
'hinduism' => 'Hinduism',
'islam' => 'Islam',
'judaism' => 'Judaism',
'religion' => 'Religion',
'spirituality' => 'Spirituality',
'astronomy' => 'Astronomy',
'chemistry' => 'Chemistry',
'earth_sciences' => 'Earth Sciences',
'life_sciences' => 'Life Sciences',
'mathematics' => 'Mathematics',
'natural_sciences' => 'Natural Sciences',
'nature' => 'Nature',
'physics' => 'Physics',
'social_sciences' => 'Social Sciences',
'documentary' => 'Documentary',
'personal_journals' => 'Personal Journals',
'philosophy' => 'Philosophy',
'places_and_travel' => 'Places &amp Travel',
'relationships' => 'Relationships',
'baseball' => 'Baseball',
'basketball' => 'Basketball',
'cricket' => 'Cricket',
'fantasy_sports' => 'Fantasy Sports',
'football' => 'Football',
'golf' => 'Golf',
'hockey' => 'Hockey',
'rugby' => 'Rugby',
'running' => 'Running',
'soccer' => 'Soccer',
'swimming' => 'Swimming',
'tennis' => 'Tennis',
'volleyball' => 'Volleyball',
'wilderness' => 'Wilderness',
'wrestling' => 'Wrestling',
'after_shows' => 'After Shows',
'film_history' => 'Film History',
'film_interviews' => 'Film Interviews',
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'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',
'followers' => '{numberOfFollowers, plural,
one {# follower}
other {# followers}
}',
'posts' => '{numberOfPosts, plural,
one {# post}
other {# posts}
}',
'activity' => 'Activity',
'episodes' => 'Episodes',
'sponsor' => 'Sponsor',
'funding_links' => 'Funding links for {podcastTitle}',
'find_on' => 'Find {podcastTitle} on',
'listen_on' => 'Listen on',
];

View file

@ -0,0 +1,37 @@
<?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 [
'warning' =>
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',
'imported_feed_url' => 'Feed URL',
'imported_feed_url_hint' => 'The feed must be in xml or rss format.',
'new_podcast_section_title' => 'The new podcast',
'advanced_params_section_title' => 'Advanced parameters',
'advanced_params_section_subtitle' =>
'Keep the default values if you have no idea of what the fields are for.',
'slug_field' => 'Field to be used to calculate episode slug',
'description_field' =>
'Source field used for episode description / show notes',
'force_renumber' => 'Force episodes renumbering',
'force_renumber_hint' =>
'Use this if your podcast does not have episode numbers but wish to set them during import.',
'season_number' => 'Season number',
'season_number_hint' =>
'Use this if your podcast does not have a season number but wish to set one during import. Leave blank otherwise.',
'max_episodes' => 'Maximum number of episodes to import',
'max_episodes_hint' => 'Leave blank to import all episodes',
'lock_import' =>
'This feed is protected. You cannot import it. If you are the owner, unprotect it on the origin platform.',
'submit' => 'Import podcast',
];

View file

@ -0,0 +1,36 @@
<?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 [
'go_to_page' => 'Go to podcast page',
'dashboard' => 'Podcast dashboard',
'podcast-view' => 'Home',
'podcast-edit' => 'Edit podcast',
'podcast-persons-manage' => 'Manage persons',
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',
'podcast-analytics-locations' => 'Locations',
'podcast-analytics-unique-listeners' => 'Unique listeners',
'podcast-analytics-players' => 'Players',
'podcast-analytics-listening-time' => 'Listening time',
'podcast-analytics-time-periods' => 'Time periods',
'contributors' => 'Contributors',
'contributor-list' => 'All contributors',
'contributor-add' => 'Add contributor',
'platforms' => 'External platforms',
'platforms-podcasting' => 'Podcasting',
'platforms-social' => 'Social networks',
'platforms-funding' => 'Funding',
];

View file

@ -0,0 +1,56 @@
<?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' => 'General settings',
'instance' => [
'title' => 'Instance',
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'Save',
'editSuccess' => 'Instance has been updated successfully!',
'deleteIconSuccess' => 'Site icon has been remove successfully!',
],
'images' => [
'title' => 'Images',
'subtitle' => 'Here you can regenerate all images based on the originals that were uploaded. To be used if you find that some images are missing. This task may take a while.',
'regenerate' => 'Regenerate images',
'regenerationSuccess' => 'All images have been regenerated successfully!',
],
'housekeeping' => [
'title' => 'Housekeeping',
'subtitle' => 'Runs various housekeeping tasks. Use this feature if you ever encounter issues with media files or data integrity. These tasks may take a while.',
'reset_counts' => 'Reset counts',
'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).',
'rewrite_media' => 'Rewrite media metadata',
'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)',
'clear_cache' => 'Clear all cache',
'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.',
'run' => 'Run housekeeping',
'runSuccess' => 'Housekeeping has been run successfully!',
],
'theme' => [
'title' => 'Theme',
'accent_section_title' => 'Accent color',
'accent_section_subtitle' => 'Choose the color to determine the look and feel of all public pages.',
'pine' => 'Pine',
'crimson' => 'Crimson',
'amber' => 'Amber',
'lake' => 'Lake',
'jacaranda' => 'Jacaranda',
'onyx' => 'Onyx',
'submit' => 'Save',
'setInstanceThemeSuccess' => 'Theme has been updated successfully!',
],
];

View file

@ -0,0 +1,31 @@
<?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 [
'list' => [
'title' => 'Soundbites',
'soundbite' => 'Soundbite',
],
'messages' => [
'createSuccess' => 'Soundbite has been successfully created!',
'deleteSuccess' => 'Soundbite has been successfully removed!',
],
'form' => [
'title' => 'New soundbite',
'soundbite_title' => 'Soundbite title',
'start_time' => 'Start at',
'duration' => 'Duration',
'submit' => 'Create soundbite',
],
'play' => 'Play soundbite',
'stop' => 'Stop soundbite',
'create' => 'New soundbite',
'delete' => 'Delete soundbite',
];

View file

@ -0,0 +1,54 @@
<?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 [
'edit_roles' => "Edit {username}'s roles",
'forcePassReset' => 'Force pass reset',
'ban' => 'Ban',
'unban' => 'Unban',
'delete' => 'Delete',
'create' => 'New user',
'view' => "{username}'s info",
'all_users' => 'All users',
'list' => [
'user' => 'User',
'roles' => 'Roles',
'banned' => 'Banned?',
],
'form' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'new_password' => 'New Password',
'roles' => 'Roles',
'permissions' => 'Permissions',
'submit_create' => 'Create user',
'submit_edit' => 'Save',
'submit_password_change' => 'Change!',
],
'roles' => [
'superadmin' => 'Super admin',
],
'messages' => [
'createSuccess' =>
'User created successfully! {username} will be prompted with a password reset upon first authentication.',
'rolesEditSuccess' =>
"{username}'s roles have been successfully updated.",
'forcePassResetSuccess' =>
'{username} will be prompted with a password reset upon next visit.',
'banSuccess' => '{username} has been banned.',
'unbanSuccess' => '{username} has been unbanned.',
'banSuperAdminError' =>
'{username} is a superadmin, one does not simply ban a superadmin…',
'deleteSuperAdminError' =>
'{username} is a superadmin, one does not simply delete a superadmin…',
'deleteSuccess' => '{username} has been deleted.',
],
];

View file

@ -0,0 +1,18 @@
<?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 [
'min_dims' =>
'{field} is either not an image, or it is not wide or tall enough.',
'is_image_ratio' =>
'{field} is either not an image or not of the right ratio.',
'validate_url' =>
'The {field} field must be a valid URL (eg. https://example.com/).',
];

View file

@ -0,0 +1,72 @@
<?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 [
'list' => [
'title' => 'Video clips',
'status' => [
'label' => 'Status',
'queued' => 'queued',
'queued_hint' => 'Clip is waiting to be processed.',
'pending' => 'pending',
'pending_hint' => 'Clip will be generated shortly.',
'running' => 'running',
'running_hint' => 'Clip is being generated.',
'failed' => 'failed',
'failed_hint' => 'Clip could not be generated: script failure.',
'passed' => 'passed',
'passed_hint' => 'Clip was generated successfully!',
],
'clip' => 'Clip',
'duration' => 'Job duration',
],
'title' => 'Video clip: {videoClipLabel}',
'download_clip' => 'Download clip',
'create' => 'New video clip',
'go_to_page' => 'Go to clip page',
'retry' => 'Retry clip generation',
'delete' => 'Delete clip',
'logs' => 'Job logs',
'messages' => [
'alreadyExistingError' => 'The video clip you are trying to create already exists!',
'addToQueueSuccess' => 'Video clip has been added to queue, awaiting to be created!',
'deleteSuccess' => 'Video clip has been successfully removed!',
],
'format' => [
'landscape' => 'Landscape',
'portrait' => 'Portrait',
'squared' => 'Squared',
],
'form' => [
'title' => 'New video clip',
'params_section_title' => 'Video clip parameters',
'clip_title' => 'Clip title',
'format' => [
'label' => 'Choose a format',
'landscape_hint' => 'With a 16:9 ratio, landscape videos are great for PeerTube, Youtube and Vimeo.',
'portrait_hint' => 'With a 9:16 ratio, portrait videos are great for TikTok, Youtube shorts and Instagram stories.',
'squared_hint' => 'With a 1:1 ratio, squared videos are great for Mastodon, Facebook, Twitter and LinkedIn.',
],
'theme' => 'Select a theme',
'start_time' => 'Start at',
'duration' => 'Duration',
'trim_start' => 'Trim start',
'trim_end' => 'Trim end',
'submit' => 'Create video clip',
],
'requirements' => [
'title' => 'Missing requirements',
'missing' => 'You have missing requirements. Make sure to add all the required items to be allowed creating a video for this episode!',
'ffmpeg' => 'FFmpeg',
'gd' => 'Graphics Draw (GD)',
'freetype' => 'Freetype library for GD',
'transcript' => 'Transcript file (.srt)',
],
];

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'edit publication',
'unpublish' => 'unpublish',
'delete' => 'delete',
'deleted' => 'deleted',
'delete-permanently' => 'delete permanently',
'fediverse' => 'fediverse',
'block-lists' => 'block lists',
'users' => 'users',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'Not published',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episode',
'visibility' => 'Visibility',
'comments' => 'Comments',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'Episode has been successfully created!',
'editSuccess' => 'Episode has been successfully updated!',
'publishCancelSuccess' => 'Episode publication successfully cancelled!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Episode cover',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Title',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
@ -147,7 +174,7 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'Delete',
],

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Avatar must be squared with at least 400px wide and tall.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',

View file

@ -26,14 +26,34 @@ return [
'createSuccess' => 'Podcast has been successfully created!',
'editSuccess' => 'Podcast has been successfully updated!',
'importSuccess' => 'Podcast has been successfully imported!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select,
cover {cover}
banner {banner}
other {media}
}.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural,
one {# episode was}
other {# episodes were}
} added to the podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.',
],
'form' => [
'identity_section_title' => 'Podcast identity',
'identity_section_subtitle' => 'These fields allow you to get noticed.',
'cover' => 'Podcast cover',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'banner' => 'Podcast banner',
'banner_size_hint' => 'Banner must have a 3:1 ratio with at least 1500px wide.',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
'banner_delete' => 'Delete podcast banner',
'title' => 'Title',
'handle' => 'Handle',
@ -90,6 +110,9 @@ return [
'custom_rss_hint' => 'This will be injected within the ❬channel❭ tag.',
'new_feed_url' => 'New feed URL',
'new_feed_url_hint' => 'Use this field when you move to another domain or podcast hosting platform. By default, the value is set to the current RSS URL if the podcast is imported.',
'old_feed_url' => 'Old feed URL',
'update_feed' => 'Update feed',
'update_feed_tip' => 'Import this podcast\'s latest episodes',
'partnership' => 'Partnership',
'partner_id' => 'ID',
'partner_link_url' => 'Link URL',
@ -219,6 +242,12 @@ return [
'film_reviews' => 'Film Reviews',
'tv_reviews' => 'TV Reviews',
],
'delete_form' => [
'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.",
'understand' => 'I understand, I want the podcast to be permanently deleted',
'submit' => 'Delete',
],
'by' => 'By {publisher}',
'season' => 'Season {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})',

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
return [
'warning' =>
'This procedure may take a long time. As the current version does not show any progress while it runs, you will not see anything updated until it is done. In case of timeout error, increase `max_execution_time` value.',
'This procedure may take a long time.<br/>As the current version does not show any progress while it runs, you will not see anything updated until it is done.<br/>In case of timeout error, increase `max_execution_time` value.',
'old_podcast_section_title' => 'The podcast to import',
'old_podcast_section_subtitle' =>
'Make sure you own the rights for this podcast before importing it. Copying and broadcasting a podcast without the proper rights is piracy and is liable to prosecution.',

View file

@ -17,6 +17,7 @@ return [
'episodes' => 'Episodes',
'episode-list' => 'All episodes',
'episode-create' => 'New episode',
'episode-deleted' => 'Recycle bin',
'analytics' => 'Analytics',
'podcast-analytics' => 'Audience overview',
'podcast-analytics-webpages' => 'Web pages visits',

View file

@ -15,7 +15,7 @@ return [
'site_icon' => 'Site icon',
'site_icon_delete' => 'Delete site icon',
'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.',
'site_icon_helper' => 'Icon must be squared with at least 512px wide and tall.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
'site_name' => 'Site name',
'site_description' => 'Site description',
'submit' => 'Save',

View file

@ -26,6 +26,8 @@ return [
'publish-edit' => 'edit publication',
'unpublish' => 'unpublish',
'delete' => 'delete',
'deleted' => 'deleted',
'delete-permanently' => 'delete permanently',
'fediverse' => 'fediverse',
'block-lists' => 'block lists',
'users' => 'users',

View file

@ -38,6 +38,15 @@ return [
'not_published' => 'Not published',
],
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episode',
'visibility' => 'Visibility',
'comments' => 'Comments',
@ -47,6 +56,24 @@ return [
'createSuccess' => 'Episode has been successfully created!',
'editSuccess' => 'Episode has been successfully updated!',
'publishCancelSuccess' => 'Episode publication successfully cancelled!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
@ -57,7 +84,7 @@ return [
'cover' => 'Episode cover',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared with at least 1400px wide and tall.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Title',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
@ -147,7 +174,7 @@ return [
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'Delete',
],

View file

@ -24,7 +24,7 @@ return [
'form' => [
'avatar' => 'Avatar',
'avatar_size_hint' =>
'Avatar must be squared with at least 400px wide and tall.',
'Avatar must be squared and at least 400px wide and tall.',
'full_name' => 'Full name',
'full_name_hint' => 'This is the full name or alias of the person.',
'unique_name' => 'Unique name',

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