diff --git a/app/Language/ar/Episode.php b/app/Language/ar/Episode.php
index 2363eb39265de93f5510509a65801e1e0521f521..f9a0e2cb6f251b54cc906e32166cf5948cc363cc 100644
--- a/app/Language/ar/Episode.php
+++ b/app/Language/ar/Episode.php
@@ -29,5 +29,6 @@ return [
         other {# comments}
     }',
     'all_podcast_episodes' => 'كافة حلقات البودكاست',
+    'episodes_recycle_bin' => 'Recycle bin',
     'back_to_podcast' => 'العودة إلى البودكاست',
 ];
diff --git a/app/Language/br/Episode.php b/app/Language/br/Episode.php
index a8ff6012da148b5fbaadb29fa00c8cefc54cc339..29095970947ff6eb89f9d0c4f24c070b19869425 100644
--- a/app/Language/br/Episode.php
+++ b/app/Language/br/Episode.php
@@ -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',
 ];
diff --git a/app/Language/br/Podcast.php b/app/Language/br/Podcast.php
index e5f9008199ea971b20a227741d4a89cf193d7be6..4c669ee967f7d05ab9bc6974af88f4eddb85ad7c 100644
--- a/app/Language/br/Podcast.php
+++ b/app/Language/br/Podcast.php
@@ -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}',
diff --git a/app/Language/de/Episode.php b/app/Language/de/Episode.php
index 0f3022484e5d27f9ac19687732c30df31429376f..5dc017cc6a0ed88aa0b5991c719e90fd3603efc8 100644
--- a/app/Language/de/Episode.php
+++ b/app/Language/de/Episode.php
@@ -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',
 ];
diff --git a/app/Language/de/Podcast.php b/app/Language/de/Podcast.php
index e822f3b1b64a9cbaf1e732b2d2c6e22d3f8f9bac..67c3c00baa2dd1bef4d351c276cd0d902f8321ab 100644
--- a/app/Language/de/Podcast.php
+++ b/app/Language/de/Podcast.php
@@ -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',
 ];
diff --git a/app/Language/de/Post.php b/app/Language/de/Post.php
index cb84da880462b25e3682457ba35264b3131e7dbf..589c69076f021357e781c438e9e45a65466eb49d 100644
--- a/app/Language/de/Post.php
+++ b/app/Language/de/Post.php
@@ -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',
diff --git a/app/Language/el/Episode.php b/app/Language/el/Episode.php
index d7f8ee907171e8a47dcad1ed26e5aff15efb1249..fa8bfdb58b2bff05801881d99374dc9c6ab90ef6 100644
--- a/app/Language/el/Episode.php
+++ b/app/Language/el/Episode.php
@@ -29,5 +29,6 @@ return [
         other {# σχόλια}
     }',
     'all_podcast_episodes' => 'Όλα τα επεισόδια του podcast',
+    'episodes_recycle_bin' => 'Κάδος Aνακύκλωσης',
     'back_to_podcast' => 'Μετάβαση πίσω στο podcast',
 ];
diff --git a/app/Language/el/Podcast.php b/app/Language/el/Podcast.php
index 2d35d0e0edf3d68d9f194b409adcae8b71aed645..0287a94de7be4fb9362af17a31b69e0a6a51ac74 100644
--- a/app/Language/el/Podcast.php
+++ b/app/Language/el/Podcast.php
@@ -32,8 +32,8 @@ return [
     'stats' => [
         'title' => 'Στατιστικά',
         'number_of_seasons' => '{0, plural,
-            one {# σεζόν}
-            other {# σεζόνς}
+            one {# κύκλος}
+            other {# κύκλοι}
         }',
         'number_of_episodes' => '{0, plural,
             one {# επισόδειο}
diff --git a/app/Language/es/Episode.php b/app/Language/es/Episode.php
index ad8bb076d6193af8a0bedbb84601ae08d5ca68e5..8689a78530ffb2534dcf19ce1af19a310cd56f18 100644
--- a/app/Language/es/Episode.php
+++ b/app/Language/es/Episode.php
@@ -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',
 ];
diff --git a/app/Language/es/Podcast.php b/app/Language/es/Podcast.php
index f876c86d01525537bd09da9c452a63e313fd52ee..81b7d3ec5cd1d30caa55d03605afed9534c85371 100644
--- a/app/Language/es/Podcast.php
+++ b/app/Language/es/Podcast.php
@@ -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}',
diff --git a/app/Language/fa/Comment.php b/app/Language/fa/Comment.php
new file mode 100644
index 0000000000000000000000000000000000000000..1dd8f5eadc526542aa81b483ddc4dacf59e7e53c
--- /dev/null
+++ b/app/Language/fa/Comment.php
@@ -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',
+];
diff --git a/app/Language/fa/Common.php b/app/Language/fa/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..aff8136b83076d86f2d1ace1dffbeeaca050f7ac
--- /dev/null
+++ b/app/Language/fa/Common.php
@@ -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',
+];
diff --git a/app/Language/fa/Episode.php b/app/Language/fa/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..0b889707f1c6fdef6120fc2b4964712ab598b529
--- /dev/null
+++ b/app/Language/fa/Episode.php
@@ -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',
+];
diff --git a/app/Language/fa/Fediverse.php b/app/Language/fa/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..32f54c074f81481a0f66b3947080dc44759a6964
--- /dev/null
+++ b/app/Language/fa/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/app/Language/fa/Home.php b/app/Language/fa/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..1518239bd96c926ebab363ac66ff32b364789743
--- /dev/null
+++ b/app/Language/fa/Home.php
@@ -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',
+];
diff --git a/app/Language/fa/Page.php b/app/Language/fa/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..7cd606694eb09eaf9c60ba274336970a8e1a3c77
--- /dev/null
+++ b/app/Language/fa/Page.php
@@ -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.',
+    ],
+];
diff --git a/app/Language/fa/Podcast.php b/app/Language/fa/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..9b1e749aa1137bf2db218d00ab5bf213ca4a81e5
--- /dev/null
+++ b/app/Language/fa/Podcast.php
@@ -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',
+];
diff --git a/app/Language/fa/Post.php b/app/Language/fa/Post.php
new file mode 100644
index 0000000000000000000000000000000000000000..58d1cf800249dfd330154e111dd90186dc16aaf7
--- /dev/null
+++ b/app/Language/fa/Post.php
@@ -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',
+];
diff --git a/app/Language/fr/Episode.php b/app/Language/fr/Episode.php
index 86fa3453b061f88e29628901b91f264df8e56639..7ed01017f8d467e4995a97340533213cd6711556 100644
--- a/app/Language/fr/Episode.php
+++ b/app/Language/fr/Episode.php
@@ -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',
 ];
diff --git a/app/Language/gd/Comment.php b/app/Language/gd/Comment.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c9663e231b72280ac61731ef4ff6198c63904cb
--- /dev/null
+++ b/app/Language/gd/Comment.php
@@ -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',
+];
diff --git a/app/Language/gd/Common.php b/app/Language/gd/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..bbda7ca7163c8d44680b77cf342f67feb8e8c4cd
--- /dev/null
+++ b/app/Language/gd/Common.php
@@ -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',
+];
diff --git a/app/Language/gd/Episode.php b/app/Language/gd/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..1057112c60d5e56466559795568bf38b987514cf
--- /dev/null
+++ b/app/Language/gd/Episode.php
@@ -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',
+];
diff --git a/app/Language/gd/Fediverse.php b/app/Language/gd/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..d1dbaaef86907596562fa893760d5abfce6daf06
--- /dev/null
+++ b/app/Language/gd/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/app/Language/gd/Home.php b/app/Language/gd/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..63fa67b6ba5088ddbde3bebdd5850121d21264f6
--- /dev/null
+++ b/app/Language/gd/Home.php
@@ -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',
+];
diff --git a/app/Language/gd/Page.php b/app/Language/gd/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..57cd81b17e5834e4c79ab357f1269cd228ea3cf6
--- /dev/null
+++ b/app/Language/gd/Page.php
@@ -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.',
+    ],
+];
diff --git a/app/Language/gd/Podcast.php b/app/Language/gd/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..5fb7d3e87587333fa866c98bee1acfdc0ac5b998
--- /dev/null
+++ b/app/Language/gd/Podcast.php
@@ -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',
+];
diff --git a/app/Language/gd/Post.php b/app/Language/gd/Post.php
new file mode 100644
index 0000000000000000000000000000000000000000..ffceac5bc3d40a4c24f261f8473572d000c67c9b
--- /dev/null
+++ b/app/Language/gd/Post.php
@@ -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',
+];
diff --git a/app/Language/id/Episode.php b/app/Language/id/Episode.php
index ebe39336fc45d6f567b74c6a03c131b981afdc36..0b889707f1c6fdef6120fc2b4964712ab598b529 100644
--- a/app/Language/id/Episode.php
+++ b/app/Language/id/Episode.php
@@ -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',
 ];
diff --git a/app/Language/it/Episode.php b/app/Language/it/Episode.php
index ebe39336fc45d6f567b74c6a03c131b981afdc36..0b889707f1c6fdef6120fc2b4964712ab598b529 100644
--- a/app/Language/it/Episode.php
+++ b/app/Language/it/Episode.php
@@ -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',
 ];
diff --git a/app/Language/nl/Episode.php b/app/Language/nl/Episode.php
index e1989a296830e082f252051c4d0d9f7ecf1f886a..8d66f49d72c3311249efc9927a24eddfc9517e9b 100644
--- a/app/Language/nl/Episode.php
+++ b/app/Language/nl/Episode.php
@@ -29,5 +29,6 @@ return [
         other {# reacties}
     }',
     'all_podcast_episodes' => 'Alle podcast afleveringen',
+    'episodes_recycle_bin' => 'Recycle bin',
     'back_to_podcast' => 'Terug naar podcast',
 ];
diff --git a/app/Language/nl/Podcast.php b/app/Language/nl/Podcast.php
index edd796611fa0aedea114c4e528f29f08957fa760..45d3e188e4ec4f7fbdc7a7628aebc3d0075a8abf 100644
--- a/app/Language/nl/Podcast.php
+++ b/app/Language/nl/Podcast.php
@@ -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}',
diff --git a/app/Language/nn-NO/Episode.php b/app/Language/nn-NO/Episode.php
index e66b3bc223088767d6e48558a153d90678bb28a6..0209a59059985c3db381354a117eb4d693aa57cc 100644
--- a/app/Language/nn-NO/Episode.php
+++ b/app/Language/nn-NO/Episode.php
@@ -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',
 ];
diff --git a/app/Language/nn-NO/Podcast.php b/app/Language/nn-NO/Podcast.php
index 654b98e6d83ee058c6a4831a8c9ff4f72dcb80c7..ec81b1af8d36f93061e00c4f4172deb57501de28 100644
--- a/app/Language/nn-NO/Podcast.php
+++ b/app/Language/nn-NO/Podcast.php
@@ -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}',
diff --git a/app/Language/oc/Episode.php b/app/Language/oc/Episode.php
index ebe39336fc45d6f567b74c6a03c131b981afdc36..0b889707f1c6fdef6120fc2b4964712ab598b529 100644
--- a/app/Language/oc/Episode.php
+++ b/app/Language/oc/Episode.php
@@ -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',
 ];
diff --git a/app/Language/pl/Episode.php b/app/Language/pl/Episode.php
index 3f519cce45277de0f1341662524b59fca7458c2c..fdeb4fa07f3bbac88d1c2b9518b2ebdf63f9d6f2 100644
--- a/app/Language/pl/Episode.php
+++ b/app/Language/pl/Episode.php
@@ -31,5 +31,6 @@ return [
         other {# komentarzy}
     }',
     'all_podcast_episodes' => 'Wszystkie odcinki podcastu',
+    'episodes_recycle_bin' => 'Recycle bin',
     'back_to_podcast' => 'Wróć do podkastu',
 ];
diff --git a/app/Language/pl/Podcast.php b/app/Language/pl/Podcast.php
index af95b8701dedd09b1fd2ad98ecfb0e95a3945531..d04dd1581b67a5fe45bd7546de702557c1927917 100644
--- a/app/Language/pl/Podcast.php
+++ b/app/Language/pl/Podcast.php
@@ -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}',
diff --git a/app/Language/pt-BR/Episode.php b/app/Language/pt-BR/Episode.php
index 3dc334f281fb1ed518280a9e86a82ff11325ab42..fb1e44aaaaf11ff236b11e2a73998b34b9c33514 100644
--- a/app/Language/pt-BR/Episode.php
+++ b/app/Language/pt-BR/Episode.php
@@ -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',
 ];
diff --git a/app/Language/pt-BR/Podcast.php b/app/Language/pt-BR/Podcast.php
index 78a63e381c9d19c64c7208feffbe02ad7f3d1eaa..220725ac4b835c7faa55206f162bb8cc9f8556d5 100644
--- a/app/Language/pt-BR/Podcast.php
+++ b/app/Language/pt-BR/Podcast.php
@@ -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',
diff --git a/app/Language/pt/Episode.php b/app/Language/pt/Episode.php
index ebe39336fc45d6f567b74c6a03c131b981afdc36..0b889707f1c6fdef6120fc2b4964712ab598b529 100644
--- a/app/Language/pt/Episode.php
+++ b/app/Language/pt/Episode.php
@@ -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',
 ];
diff --git a/app/Language/ru/Episode.php b/app/Language/ru/Episode.php
index e97ac452179c124d9f4c0db8451bbe35ab160755..56c308b8c3390fc1a2fb45b194053a1f58e43429 100644
--- a/app/Language/ru/Episode.php
+++ b/app/Language/ru/Episode.php
@@ -33,5 +33,6 @@ return [
         other {# комментариев}
     }',
     'all_podcast_episodes' => 'Все выпуски подкаста',
+    'episodes_recycle_bin' => 'Recycle bin',
     'back_to_podcast' => 'Вернуться к подкасту',
 ];
diff --git a/app/Language/ru/Podcast.php b/app/Language/ru/Podcast.php
index fec19e741452b9c87675e635652a487df12bb71f..94fb76f55fc6a4c5b79fd59dc31c36181b225162 100644
--- a/app/Language/ru/Podcast.php
+++ b/app/Language/ru/Podcast.php
@@ -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}',
diff --git a/app/Language/sk/Comment.php b/app/Language/sk/Comment.php
new file mode 100644
index 0000000000000000000000000000000000000000..d40c4e5f935b518295187da567fa50cdcffae96a
--- /dev/null
+++ b/app/Language/sk/Comment.php
@@ -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',
+];
diff --git a/app/Language/sk/Common.php b/app/Language/sk/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..2be27e09d894481c74d942333dd59dd56dad2329
--- /dev/null
+++ b/app/Language/sk/Common.php
@@ -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',
+];
diff --git a/app/Language/sk/Episode.php b/app/Language/sk/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..67e9323ab5c8847bba6570d348feafa35ec34d99
--- /dev/null
+++ b/app/Language/sk/Episode.php
@@ -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',
+];
diff --git a/app/Language/sk/Fediverse.php b/app/Language/sk/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..33d0e923404aa17634a0488d310dcbb7695cbc23
--- /dev/null
+++ b/app/Language/sk/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/app/Language/sk/Home.php b/app/Language/sk/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..201a3c9086950d6c2f1cc7500cc771a62d938d79
--- /dev/null
+++ b/app/Language/sk/Home.php
@@ -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é',
+];
diff --git a/app/Language/sk/Page.php b/app/Language/sk/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..60ffc771a0aa47cc627fa7098f6673b4f3f62f95
--- /dev/null
+++ b/app/Language/sk/Page.php
@@ -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.',
+    ],
+];
diff --git a/app/Language/sk/Podcast.php b/app/Language/sk/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..a15fe02c16c256bff0f9bc90f2a8edf99a90042b
--- /dev/null
+++ b/app/Language/sk/Podcast.php
@@ -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',
+];
diff --git a/app/Language/sk/Post.php b/app/Language/sk/Post.php
new file mode 100644
index 0000000000000000000000000000000000000000..45ec87f6ab27f2c3fca56984637251d54a51fe03
--- /dev/null
+++ b/app/Language/sk/Post.php
@@ -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',
+];
diff --git a/app/Language/sv/Episode.php b/app/Language/sv/Episode.php
index ebe39336fc45d6f567b74c6a03c131b981afdc36..0b889707f1c6fdef6120fc2b4964712ab598b529 100644
--- a/app/Language/sv/Episode.php
+++ b/app/Language/sv/Episode.php
@@ -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',
 ];
diff --git a/docs/src/ar/getting-started/install.md b/docs/src/ar/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/ar/getting-started/install.md
+++ b/docs/src/ar/getting-started/install.md
@@ -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
diff --git a/docs/src/br/getting-started/install.md b/docs/src/br/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/br/getting-started/install.md
+++ b/docs/src/br/getting-started/install.md
@@ -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
diff --git a/docs/src/de/getting-started/install.md b/docs/src/de/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/de/getting-started/install.md
+++ b/docs/src/de/getting-started/install.md
@@ -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
diff --git a/docs/src/el/getting-started/install.md b/docs/src/el/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/el/getting-started/install.md
+++ b/docs/src/el/getting-started/install.md
@@ -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
diff --git a/docs/src/el/index.md b/docs/src/el/index.md
index 87cdbbcf7db94a432c8d5a91f105228beac085bc..ec4e77693695a7e82b63247782ce8b05db61ae77 100644
--- a/docs/src/el/index.md
+++ b/docs/src/el/index.md
@@ -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
diff --git a/docs/src/es/getting-started/install.md b/docs/src/es/getting-started/install.md
index d12e2d347556905558766b989ecc52a473ce4928..db0e0e8f94ae7de77799ac21f1a17ff583b9a818 100644
--- a/docs/src/es/getting-started/install.md
+++ b/docs/src/es/getting-started/install.md
@@ -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
+:::
+
+## Requerimientos
+
+- PHP v8.0 o superior
+- MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior
+- Soporte HTTPS
 
-PHP version 8.0 or higher is required, with the following extensions installed:
+### 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 haven’t 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.
 
 :::
diff --git a/docs/src/es/getting-started/update.md b/docs/src/es/getting-started/update.md
index 46e5c0bf388934a89335238cd915353242dc7490..a5dd5b173e14257bc57a706f1166f2432576cf8c 100644
--- a/docs/src/es/getting-started/update.md
+++ b/docs/src/es/getting-started/update.md
@@ -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.
+
+No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?</p></li> </ul>
+
+     5. Si estás usando redis, limpia tu caché.
 
-5. If you are using redis, clear your cache.
-6. ✨ Enjoy your fresh instance, you're all done!
+6. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
 
-## Frequently asked questions (FAQ)
+## Preguntas Frecuentes (FAQ)
 
-### Where can I find my Castopod version?
+### ¿Dónde puedo encontrar mi versión de Castopod?
 
-Go to your Castopod admin panel, the version is displayed on the bottom left
-corner.
+Ve al panel de administración de Castopod, la versión se muestra en la esquina
+inferior izquierda.
 
-Alternatively, you can find the version in the `app > Config > Constants.php`
-file.
+Alternativamente, puedes encontrar la versión en el archivo
+`app > Config > Constants.php`.
 
-### [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)
+### No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
 
-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.
+¡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.
 
-> You may want to backup your instance depending on how long you haven't updated
-> Castopod.
+> Puede que quieras hacer una copia de seguridad de tu instancia dependiendo del
+> tiempo que no hayas actualizado Castopod.
 
-For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
+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…
diff --git a/docs/src/es/index.md b/docs/src/es/index.md
index 0e9492854866f76b0fc132f29ac0c9095fb4c612..2ee1b150af89687da48c0c608e52be05063c3191 100644
--- a/docs/src/es/index.md
+++ b/docs/src/es/index.md
@@ -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
diff --git a/docs/src/fa/getting-started/install.md b/docs/src/fa/getting-started/install.md
new file mode 100644
index 0000000000000000000000000000000000000000..c63d2fe13acf3b7637f6eae2542b163729f2d007
--- /dev/null
+++ b/docs/src/fa/getting-started/install.md
@@ -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 haven’t 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.
+
+:::
diff --git a/docs/src/fa/getting-started/security.md b/docs/src/fa/getting-started/security.md
new file mode 100644
index 0000000000000000000000000000000000000000..e205698df8a8029f080840922a212f01da1baa7e
--- /dev/null
+++ b/docs/src/fa/getting-started/security.md
@@ -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
+```
diff --git a/docs/src/fa/getting-started/update.md b/docs/src/fa/getting-started/update.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f48e274922fd3affdc428ffd59a8d79909dcab7
--- /dev/null
+++ b/docs/src/fa/getting-started/update.md
@@ -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…
diff --git a/docs/src/fa/index.md b/docs/src/fa/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..87cdbbcf7db94a432c8d5a91f105228beac085bc
--- /dev/null
+++ b/docs/src/fa/index.md
@@ -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
diff --git a/docs/src/fr/getting-started/install.md b/docs/src/fr/getting-started/install.md
index fbdf5a5ddd3a6021c45c16455ceffb04444846bf..4d3bd938c403596ab4dcda4d49b0416dca2f51e9 100644
--- a/docs/src/fr/getting-started/install.md
+++ b/docs/src/fr/getting-started/install.md
@@ -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.
 
 :::
diff --git a/docs/src/fr/index.md b/docs/src/fr/index.md
index 0ee270ab061b9973bc79c915c8dd68dcd3ba376e..15f4b81beea29c3256eb7a308daf14c864f18bcc 100644
--- a/docs/src/fr/index.md
+++ b/docs/src/fr/index.md
@@ -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
diff --git a/docs/src/gd/getting-started/install.md b/docs/src/gd/getting-started/install.md
new file mode 100644
index 0000000000000000000000000000000000000000..c63d2fe13acf3b7637f6eae2542b163729f2d007
--- /dev/null
+++ b/docs/src/gd/getting-started/install.md
@@ -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 haven’t 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.
+
+:::
diff --git a/docs/src/gd/getting-started/security.md b/docs/src/gd/getting-started/security.md
new file mode 100644
index 0000000000000000000000000000000000000000..e205698df8a8029f080840922a212f01da1baa7e
--- /dev/null
+++ b/docs/src/gd/getting-started/security.md
@@ -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
+```
diff --git a/docs/src/gd/getting-started/update.md b/docs/src/gd/getting-started/update.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f48e274922fd3affdc428ffd59a8d79909dcab7
--- /dev/null
+++ b/docs/src/gd/getting-started/update.md
@@ -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…
diff --git a/docs/src/gd/index.md b/docs/src/gd/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..87cdbbcf7db94a432c8d5a91f105228beac085bc
--- /dev/null
+++ b/docs/src/gd/index.md
@@ -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
diff --git a/docs/src/id/getting-started/install.md b/docs/src/id/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/id/getting-started/install.md
+++ b/docs/src/id/getting-started/install.md
@@ -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
diff --git a/docs/src/it/getting-started/install.md b/docs/src/it/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/it/getting-started/install.md
+++ b/docs/src/it/getting-started/install.md
@@ -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
diff --git a/docs/src/nl/getting-started/install.md b/docs/src/nl/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/nl/getting-started/install.md
+++ b/docs/src/nl/getting-started/install.md
@@ -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
diff --git a/docs/src/nn-NO/getting-started/install.md b/docs/src/nn-NO/getting-started/install.md
index 85991dcf96ef08b222f6e33d721bc78fa28e83e2..ea1ffea679125f421aa09d4a8935c4e1ce7a5e0d 100644
--- a/docs/src/nn-NO/getting-started/install.md
+++ b/docs/src/nn-NO/getting-started/install.md
@@ -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.
 
 :::
diff --git a/docs/src/nn-NO/index.md b/docs/src/nn-NO/index.md
index 8a73232306067c889e9748bb2b9be29b1625f46f..843876b2b7226e7be554fe06246b8334cc7e6b85 100644
--- a/docs/src/nn-NO/index.md
+++ b/docs/src/nn-NO/index.md
@@ -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]:
diff --git a/docs/src/oc/getting-started/install.md b/docs/src/oc/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/oc/getting-started/install.md
+++ b/docs/src/oc/getting-started/install.md
@@ -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
diff --git a/docs/src/oc/index.md b/docs/src/oc/index.md
index 87cdbbcf7db94a432c8d5a91f105228beac085bc..2587da275f1e067ef5d66cb1b9094b46149e02c5 100644
--- a/docs/src/oc/index.md
+++ b/docs/src/oc/index.md
@@ -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
diff --git a/docs/src/pl/getting-started/install.md b/docs/src/pl/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/pl/getting-started/install.md
+++ b/docs/src/pl/getting-started/install.md
@@ -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
diff --git a/docs/src/pt-BR/getting-started/install.md b/docs/src/pt-BR/getting-started/install.md
index 85c178f5a9922306d6cb33ea7381178f585ec8bb..468f4359866e65410810eddeec40cf1416cbff20 100644
--- a/docs/src/pt-BR/getting-started/install.md
+++ b/docs/src/pt-BR/getting-started/install.md
@@ -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">
diff --git a/docs/src/pt-BR/index.md b/docs/src/pt-BR/index.md
index 74576aa1f549e78ed18f8984a370c89a1d9edb49..43c8f7bd353b744fa37a024d1d89dfa3ae60c92d 100644
--- a/docs/src/pt-BR/index.md
+++ b/docs/src/pt-BR/index.md
@@ -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
diff --git a/docs/src/pt/getting-started/install.md b/docs/src/pt/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/pt/getting-started/install.md
+++ b/docs/src/pt/getting-started/install.md
@@ -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
diff --git a/docs/src/ru/getting-started/install.md b/docs/src/ru/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/ru/getting-started/install.md
+++ b/docs/src/ru/getting-started/install.md
@@ -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
diff --git a/docs/src/sk/getting-started/install.md b/docs/src/sk/getting-started/install.md
new file mode 100644
index 0000000000000000000000000000000000000000..c63d2fe13acf3b7637f6eae2542b163729f2d007
--- /dev/null
+++ b/docs/src/sk/getting-started/install.md
@@ -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 haven’t 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.
+
+:::
diff --git a/docs/src/sk/getting-started/security.md b/docs/src/sk/getting-started/security.md
new file mode 100644
index 0000000000000000000000000000000000000000..e205698df8a8029f080840922a212f01da1baa7e
--- /dev/null
+++ b/docs/src/sk/getting-started/security.md
@@ -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
+```
diff --git a/docs/src/sk/getting-started/update.md b/docs/src/sk/getting-started/update.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f48e274922fd3affdc428ffd59a8d79909dcab7
--- /dev/null
+++ b/docs/src/sk/getting-started/update.md
@@ -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…
diff --git a/docs/src/sk/index.md b/docs/src/sk/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..87cdbbcf7db94a432c8d5a91f105228beac085bc
--- /dev/null
+++ b/docs/src/sk/index.md
@@ -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
diff --git a/docs/src/sv/getting-started/install.md b/docs/src/sv/getting-started/install.md
index 7d35b296f1e2381798bd654c8fb79902178a36f7..c63d2fe13acf3b7637f6eae2542b163729f2d007 100644
--- a/docs/src/sv/getting-started/install.md
+++ b/docs/src/sv/getting-started/install.md
@@ -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
diff --git a/modules/Admin/Language/ar/Breadcrumb.php b/modules/Admin/Language/ar/Breadcrumb.php
index 396ae47444525b08e3db539a4f3215536765a049..0a02006987c2a22a6dbfe9dca35373ef417eacb5 100644
--- a/modules/Admin/Language/ar/Breadcrumb.php
+++ b/modules/Admin/Language/ar/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'edit publication',
     'unpublish' => 'unpublish',
     'delete' => 'احذف',
+    'deleted' => 'deleted',
+    'delete-permanently' => 'delete permanently',
     'fediverse' => 'الفديفرس',
     'block-lists' => 'قوائم حجب',
     'users' => 'مستخدمون',
diff --git a/modules/Admin/Language/ar/Episode.php b/modules/Admin/Language/ar/Episode.php
index e53b4885eedff90a4975efc9af374089692c55b7..a077a3a9dc7d2a064081d1c4c1205e89ec13d5b6 100644
--- a/modules/Admin/Language/ar/Episode.php
+++ b/modules/Admin/Language/ar/Episode.php
@@ -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',
diff --git a/modules/Admin/Language/ar/Person.php b/modules/Admin/Language/ar/Person.php
index ac2d43c707a120171c7854f3bbf498f55af14c10..4c60c7c8823e8d7ee95721150cb657ceab3f0dfb 100644
--- a/modules/Admin/Language/ar/Person.php
+++ b/modules/Admin/Language/ar/Person.php
@@ -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',
diff --git a/modules/Admin/Language/ar/Podcast.php b/modules/Admin/Language/ar/Podcast.php
index b83e2065a3b20ab1f0693199017c9ebf7361bda5..6470de020f9d89d4e99aa906c9a06b846e038717 100644
--- a/modules/Admin/Language/ar/Podcast.php
+++ b/modules/Admin/Language/ar/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/ar/PodcastImport.php b/modules/Admin/Language/ar/PodcastImport.php
index cccbaa65a63217f202a4177ce8a20a89235e5a47..27a7f39fcd017238d6c8b54b9f547ca58723db16 100644
--- a/modules/Admin/Language/ar/PodcastImport.php
+++ b/modules/Admin/Language/ar/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/ar/PodcastNavigation.php b/modules/Admin/Language/ar/PodcastNavigation.php
index 04ee9a93d2a7f407269b35a3cb8efbcd04f6579f..90526ea5b1fdfb69bb79158747dc9f8566842260 100644
--- a/modules/Admin/Language/ar/PodcastNavigation.php
+++ b/modules/Admin/Language/ar/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/ar/Settings.php b/modules/Admin/Language/ar/Settings.php
index daee3f9c14792c24b893f3adf806f706facc3ddf..6cce90a1815b2d4f29b2a4829df64834b4a90834 100644
--- a/modules/Admin/Language/ar/Settings.php
+++ b/modules/Admin/Language/ar/Settings.php
@@ -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' => 'حفظ',
diff --git a/modules/Admin/Language/br/Breadcrumb.php b/modules/Admin/Language/br/Breadcrumb.php
index c3ea93ff27cb65a8eaf9fae284c3dca901db48a6..43f6e74b78b88cf36f40664bcf318c2406e482e2 100644
--- a/modules/Admin/Language/br/Breadcrumb.php
+++ b/modules/Admin/Language/br/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/br/Episode.php b/modules/Admin/Language/br/Episode.php
index aed951b761f51ce06944f850a0e37096b24cb640..734033579082705d87be7f0770f066b5782bcdde 100644
--- a/modules/Admin/Language/br/Episode.php
+++ b/modules/Admin/Language/br/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/br/Page.php b/modules/Admin/Language/br/Page.php
index b6f49de57496ec4830246641f0bf8897e7c9a2f9..4cfefec67a62a00f8a4b9cbf53617c0cd66426da 100644
--- a/modules/Admin/Language/br/Page.php
+++ b/modules/Admin/Language/br/Page.php
@@ -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!',
     ],
 ];
diff --git a/modules/Admin/Language/br/Pager.php b/modules/Admin/Language/br/Pager.php
index e25ee638108dba1e0bfa602b45969381dd8ebd57..776905f93ef3c5003800a8978131bcddc604cce2 100644
--- a/modules/Admin/Language/br/Pager.php
+++ b/modules/Admin/Language/br/Pager.php
@@ -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.',
 ];
diff --git a/modules/Admin/Language/br/Person.php b/modules/Admin/Language/br/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..c28087d8f724b43f4ef25d54e0bf30f5fa93190a 100644
--- a/modules/Admin/Language/br/Person.php
+++ b/modules/Admin/Language/br/Person.php
@@ -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',
diff --git a/modules/Admin/Language/br/Podcast.php b/modules/Admin/Language/br/Podcast.php
index 9eddb6a5dc68c1f5acc6f9341bef53bee56fa927..93e35298480d77374c46ae5d53a4d9fb72698404 100644
--- a/modules/Admin/Language/br/Podcast.php
+++ b/modules/Admin/Language/br/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/br/PodcastImport.php b/modules/Admin/Language/br/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/br/PodcastImport.php
+++ b/modules/Admin/Language/br/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/br/PodcastNavigation.php b/modules/Admin/Language/br/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/br/PodcastNavigation.php
+++ b/modules/Admin/Language/br/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/br/Settings.php b/modules/Admin/Language/br/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/br/Settings.php
+++ b/modules/Admin/Language/br/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/de/Breadcrumb.php b/modules/Admin/Language/de/Breadcrumb.php
index 01449c4af3911afa7c1d692e9506fea9ccd3da8c..2f4a1cb0352460bf1f63da63e1d63773a08d2d3e 100644
--- a/modules/Admin/Language/de/Breadcrumb.php
+++ b/modules/Admin/Language/de/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/de/Contributor.php b/modules/Admin/Language/de/Contributor.php
index c72b7feba3743a8cf4f7e2ffd5fcae247ac0f17f..dc59434889b1efb51c6e8a93a6d3a2cf4bd38182 100644
--- a/modules/Admin/Language/de/Contributor.php
+++ b/modules/Admin/Language/de/Contributor.php
@@ -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!",
     ],
 ];
diff --git a/modules/Admin/Language/de/Episode.php b/modules/Admin/Language/de/Episode.php
index aec9f687fa3cbcaa71ada1347b91a01e703b367a..5def2441923431613a5f3354a1825cb8f5969909 100644
--- a/modules/Admin/Language/de/Episode.php
+++ b/modules/Admin/Language/de/Episode.php
@@ -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',
diff --git a/modules/Admin/Language/de/Navigation.php b/modules/Admin/Language/de/Navigation.php
index 0be75a2cae3316166e7d394f18c1532968e24baf..04fad13755293c526c21ca619e2bb5d36d5663fc 100644
--- a/modules/Admin/Language/de/Navigation.php
+++ b/modules/Admin/Language/de/Navigation.php
@@ -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',
diff --git a/modules/Admin/Language/de/Person.php b/modules/Admin/Language/de/Person.php
index b8b8071580e268065bef936a555fc714f7f0f801..96724be08d5062db5ce8681f9541345c076ce6cc 100644
--- a/modules/Admin/Language/de/Person.php
+++ b/modules/Admin/Language/de/Person.php
@@ -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',
diff --git a/modules/Admin/Language/de/Podcast.php b/modules/Admin/Language/de/Podcast.php
index be9d11d33e194c3976d7a8e9e7d69b487639c703..938367e3c4f0884ec84a8790f773d9dc0ce99513 100644
--- a/modules/Admin/Language/de/Podcast.php
+++ b/modules/Admin/Language/de/Podcast.php
@@ -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',
diff --git a/modules/Admin/Language/de/PodcastImport.php b/modules/Admin/Language/de/PodcastImport.php
index affc41ed4a53adad4d498edea2951c011f46b7e6..c44dd1a2c94d14dd231ae65d153c2d01897e26f4 100644
--- a/modules/Admin/Language/de/PodcastImport.php
+++ b/modules/Admin/Language/de/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/de/PodcastNavigation.php b/modules/Admin/Language/de/PodcastNavigation.php
index 68126d7fefe4b680f80dad321fd1a4e68c75c66b..4f5688df0e3ffdf9cda64579a390f0a526834cf9 100644
--- a/modules/Admin/Language/de/PodcastNavigation.php
+++ b/modules/Admin/Language/de/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/de/Settings.php b/modules/Admin/Language/de/Settings.php
index 50b7789a1a0493f7b8b3a616919615f508017449..f08af7a621688318b403ea7da20bd5d71c70e7b5 100644
--- a/modules/Admin/Language/de/Settings.php
+++ b/modules/Admin/Language/de/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/el/Breadcrumb.php b/modules/Admin/Language/el/Breadcrumb.php
index c235a34f9742243c23fbce02b6ef588714b54747..c1bd9717205c104b33d30614f67b42d92e7791d9 100644
--- a/modules/Admin/Language/el/Breadcrumb.php
+++ b/modules/Admin/Language/el/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'επεξεργασία δημοσίευσης',
     'unpublish' => 'αναίρεση δημοσίευσης',
     'delete' => 'διαγραφή',
+    'deleted' => 'διαγράφηκε',
+    'delete-permanently' => 'οριστική διαγραφή',
     'fediverse' => 'fediverse',
     'block-lists' => 'λίστες αποκλεισμένων',
     'users' => 'χρήστες',
diff --git a/modules/Admin/Language/el/Episode.php b/modules/Admin/Language/el/Episode.php
index 0ae908e51d57283e512f860343f75ca97264d266..3e93590bf90ab09d39d64d210c5eaf1ff2eb8c6e 100644
--- a/modules/Admin/Language/el/Episode.php
+++ b/modules/Admin/Language/el/Episode.php
@@ -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' => 'Ανοιχτό διαφανές',
     ],
 ];
diff --git a/modules/Admin/Language/el/EpisodeNavigation.php b/modules/Admin/Language/el/EpisodeNavigation.php
index 1406e3010ef4383a6d8ef32ff88497e7bdeb9fa4..c2a9ccddce47f62eb9307836bd1272673ea8ec79 100644
--- a/modules/Admin/Language/el/EpisodeNavigation.php
+++ b/modules/Admin/Language/el/EpisodeNavigation.php
@@ -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',
 ];
diff --git a/modules/Admin/Language/el/Fediverse.php b/modules/Admin/Language/el/Fediverse.php
index 0e4ca66d89cd7d6191d36c0325647b0b3932ac6e..b75a73f1f66198eec8e5ed2ebdf7e967e692caaf 100644
--- a/modules/Admin/Language/el/Fediverse.php
+++ b/modules/Admin/Language/el/Fediverse.php
@@ -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' => 'Ξεμπλοκάρισμα',
     ],
 ];
diff --git a/modules/Admin/Language/el/Home.php b/modules/Admin/Language/el/Home.php
index 3ff4c04dc8a8f2576b3e04638184ae375f488a54..c160f26df3b3512f135e93da4c6f31887ae46019 100644
--- a/modules/Admin/Language/el/Home.php
+++ b/modules/Admin/Language/el/Home.php
@@ -9,6 +9,6 @@ declare(strict_types=1);
  */
 
 return [
-    'all_podcasts' => 'All podcasts',
-    'no_podcast' => 'No podcast found',
+    'all_podcasts' => 'Όλα τα podcasts',
+    'no_podcast' => 'Δεν βρέθηκαν podcast',
 ];
diff --git a/modules/Admin/Language/el/Install.php b/modules/Admin/Language/el/Install.php
index 36e373a2858779a2deb77f1cbc6f629dda223f19..80c070263bd3e836a6ce6bb015a5637d745ca110 100644
--- a/modules/Admin/Language/el/Install.php
+++ b/modules/Admin/Language/el/Install.php
@@ -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.",
     ],
 ];
diff --git a/modules/Admin/Language/el/MyAccount.php b/modules/Admin/Language/el/MyAccount.php
index 6ebbb30ef70a5e3e86a9bab867f7c732ce79db26..fe2dc34e8b12fd1562319ccfa99836aeec1bf047 100644
--- a/modules/Admin/Language/el/MyAccount.php
+++ b/modules/Admin/Language/el/MyAccount.php
@@ -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' => 'Ο κωδικός πρόσβασής σας άλλαξε με επιτυχία!',
     ],
 ];
diff --git a/modules/Admin/Language/el/Navigation.php b/modules/Admin/Language/el/Navigation.php
index 68d4609d5d94a5770f237ee23207ad47d1262c70..2325bd3800b2a59aea3f3fde4fd2b76a0461b47a 100644
--- a/modules/Admin/Language/el/Navigation.php
+++ b/modules/Admin/Language/el/Navigation.php
@@ -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' => 'Αποσυνδέση',
     ],
 ];
diff --git a/modules/Admin/Language/el/Page.php b/modules/Admin/Language/el/Page.php
index b6f49de57496ec4830246641f0bf8897e7c9a2f9..00358402b084c938cd821b313f6aea7869f73496 100644
--- a/modules/Admin/Language/el/Page.php
+++ b/modules/Admin/Language/el/Page.php
@@ -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' => 'Η σελίδα ενημερώθηκε επιτυχώς!',
     ],
 ];
diff --git a/modules/Admin/Language/el/Pager.php b/modules/Admin/Language/el/Pager.php
index e25ee638108dba1e0bfa602b45969381dd8ebd57..31c0354d2d7a7e991ae13e0f910b94c311dee0f1 100644
--- a/modules/Admin/Language/el/Pager.php
+++ b/modules/Admin/Language/el/Pager.php
@@ -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} δεν είναι μια έγκυρη ομάδα σελιδοποίησης.',
 ];
diff --git a/modules/Admin/Language/el/Person.php b/modules/Admin/Language/el/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..4235a3374faf6533b98f7912ec055d0ca7174bfd 100644
--- a/modules/Admin/Language/el/Person.php
+++ b/modules/Admin/Language/el/Person.php
@@ -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' => 'Συντελεστές',
 ];
diff --git a/modules/Admin/Language/el/Platforms.php b/modules/Admin/Language/el/Platforms.php
index ab17d5999b1626535499464902c12f5c3bcb7aa8..4b5f2fb555a11a0eb8cbafa29be636eeb31b4742 100644
--- a/modules/Admin/Language/el/Platforms.php
+++ b/modules/Admin/Language/el/Platforms.php
@@ -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' => 'Κλήση σε μήνυμα δράσης',
     ],
 ];
diff --git a/modules/Admin/Language/el/Podcast.php b/modules/Admin/Language/el/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..44c802b0c77944d132be42ec22d53a60c550dffa 100644
--- a/modules/Admin/Language/el/Podcast.php
+++ b/modules/Admin/Language/el/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/el/PodcastImport.php b/modules/Admin/Language/el/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/el/PodcastImport.php
+++ b/modules/Admin/Language/el/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/el/PodcastNavigation.php b/modules/Admin/Language/el/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/el/PodcastNavigation.php
+++ b/modules/Admin/Language/el/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/el/Settings.php b/modules/Admin/Language/el/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/el/Settings.php
+++ b/modules/Admin/Language/el/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/es/Breadcrumb.php b/modules/Admin/Language/es/Breadcrumb.php
index ee7001fce077e1d888635463e824140121c7d70b..47ae562813a39203eaaae5821aaf9148e55469f9 100644
--- a/modules/Admin/Language/es/Breadcrumb.php
+++ b/modules/Admin/Language/es/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/es/Episode.php b/modules/Admin/Language/es/Episode.php
index ca5ee1f8dade18c49ecb3299b5a10757b66cb106..5b2ab917277057b1cdf0075093f8cf579e14e778 100644
--- a/modules/Admin/Language/es/Episode.php
+++ b/modules/Admin/Language/es/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/es/Person.php b/modules/Admin/Language/es/Person.php
index 1d40394d510e93a579275eecd1554239f63d7d92..15a70f41b0acbb93fa2caa28a145ec35c2b4ae2e 100644
--- a/modules/Admin/Language/es/Person.php
+++ b/modules/Admin/Language/es/Person.php
@@ -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',
diff --git a/modules/Admin/Language/es/Podcast.php b/modules/Admin/Language/es/Podcast.php
index 52a8f076209c7e7bba253679343da31f628722cc..db32975d6df4b535b8499d95de1eb2009d7dad6a 100644
--- a/modules/Admin/Language/es/Podcast.php
+++ b/modules/Admin/Language/es/Podcast.php
@@ -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',
diff --git a/modules/Admin/Language/es/PodcastImport.php b/modules/Admin/Language/es/PodcastImport.php
index ceefce1b49fea46441b6f958ccee803e6f93437a..9d281ce66b78d4f1bc6fbb555f7659bfbab5e2cc 100644
--- a/modules/Admin/Language/es/PodcastImport.php
+++ b/modules/Admin/Language/es/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/es/PodcastNavigation.php b/modules/Admin/Language/es/PodcastNavigation.php
index 6e1a40910986404017f211c4b93dc6ff44a8c67f..df138c532f8fabee2c5570c7cb6c6cbb271e60e1 100644
--- a/modules/Admin/Language/es/PodcastNavigation.php
+++ b/modules/Admin/Language/es/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/es/Settings.php b/modules/Admin/Language/es/Settings.php
index 65fbde062b92360af42b734a69e19abb75efcdfc..9ee6763f9e8fa8f6e9c47920c0cad448824f1d0d 100644
--- a/modules/Admin/Language/es/Settings.php
+++ b/modules/Admin/Language/es/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/fa/Admin.php b/modules/Admin/Language/fa/Admin.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e3942371fb59c6cbc560b147310907cedd3696f
--- /dev/null
+++ b/modules/Admin/Language/fa/Admin.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Breadcrumb.php b/modules/Admin/Language/fa/Breadcrumb.php
new file mode 100644
index 0000000000000000000000000000000000000000..69915453e36c52d14ac93481f37266118e6abce0
--- /dev/null
+++ b/modules/Admin/Language/fa/Breadcrumb.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Charts.php b/modules/Admin/Language/fa/Charts.php
new file mode 100644
index 0000000000000000000000000000000000000000..d9a75a1d8455cf9f83bb562a2988adc5e75a3674
--- /dev/null
+++ b/modules/Admin/Language/fa/Charts.php
@@ -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)',
+];
diff --git a/modules/Admin/Language/fa/Common.php b/modules/Admin/Language/fa/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..d97bcf991f67faf9d20d2742cffbe9e059eb7ea1
--- /dev/null
+++ b/modules/Admin/Language/fa/Common.php
@@ -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}.',
+];
diff --git a/modules/Admin/Language/fa/Contributor.php b/modules/Admin/Language/fa/Contributor.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0f3b93d9ff29bbf2086380e374c7e35b5c7539a
--- /dev/null
+++ b/modules/Admin/Language/fa/Contributor.php
@@ -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!",
+    ],
+];
diff --git a/modules/Admin/Language/fa/Countries.php b/modules/Admin/Language/fa/Countries.php
new file mode 100644
index 0000000000000000000000000000000000000000..4cd5d9c857baf9bb5f255aafe2b66d915dabebde
--- /dev/null
+++ b/modules/Admin/Language/fa/Countries.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Episode.php b/modules/Admin/Language/fa/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef
--- /dev/null
+++ b/modules/Admin/Language/fa/Episode.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/fa/EpisodeNavigation.php b/modules/Admin/Language/fa/EpisodeNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..1406e3010ef4383a6d8ef32ff88497e7bdeb9fa4
--- /dev/null
+++ b/modules/Admin/Language/fa/EpisodeNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Fediverse.php b/modules/Admin/Language/fa/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e4ca66d89cd7d6191d36c0325647b0b3932ac6e
--- /dev/null
+++ b/modules/Admin/Language/fa/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Home.php b/modules/Admin/Language/fa/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..3ff4c04dc8a8f2576b3e04638184ae375f488a54
--- /dev/null
+++ b/modules/Admin/Language/fa/Home.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Install.php b/modules/Admin/Language/fa/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..36e373a2858779a2deb77f1cbc6f629dda223f19
--- /dev/null
+++ b/modules/Admin/Language/fa/Install.php
@@ -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.",
+    ],
+];
diff --git a/modules/Admin/Language/fa/MyAccount.php b/modules/Admin/Language/fa/MyAccount.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ebbb30ef70a5e3e86a9bab867f7c732ce79db26
--- /dev/null
+++ b/modules/Admin/Language/fa/MyAccount.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Navigation.php b/modules/Admin/Language/fa/Navigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..68d4609d5d94a5770f237ee23207ad47d1262c70
--- /dev/null
+++ b/modules/Admin/Language/fa/Navigation.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Page.php b/modules/Admin/Language/fa/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..b6f49de57496ec4830246641f0bf8897e7c9a2f9
--- /dev/null
+++ b/modules/Admin/Language/fa/Page.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Pager.php b/modules/Admin/Language/fa/Pager.php
new file mode 100644
index 0000000000000000000000000000000000000000..e25ee638108dba1e0bfa602b45969381dd8ebd57
--- /dev/null
+++ b/modules/Admin/Language/fa/Pager.php
@@ -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.',
+];
diff --git a/modules/Admin/Language/fa/Person.php b/modules/Admin/Language/fa/Person.php
new file mode 100644
index 0000000000000000000000000000000000000000..a652be9fda1f4aeb73bcb01c35f13a452a6d4741
--- /dev/null
+++ b/modules/Admin/Language/fa/Person.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Platforms.php b/modules/Admin/Language/fa/Platforms.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab17d5999b1626535499464902c12f5c3bcb7aa8
--- /dev/null
+++ b/modules/Admin/Language/fa/Platforms.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Podcast.php b/modules/Admin/Language/fa/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..2561b8766768e5ff907834836905bea73ab5ec0c
--- /dev/null
+++ b/modules/Admin/Language/fa/Podcast.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/PodcastImport.php b/modules/Admin/Language/fa/PodcastImport.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9
--- /dev/null
+++ b/modules/Admin/Language/fa/PodcastImport.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/PodcastNavigation.php b/modules/Admin/Language/fa/PodcastNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69
--- /dev/null
+++ b/modules/Admin/Language/fa/PodcastNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/Settings.php b/modules/Admin/Language/fa/Settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..345976be7f307ddd34bb7b3cf1d5a95d62935e6e
--- /dev/null
+++ b/modules/Admin/Language/fa/Settings.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Soundbite.php b/modules/Admin/Language/fa/Soundbite.php
new file mode 100644
index 0000000000000000000000000000000000000000..a3f828fe09fa68f902251e7438bb54a2727ac8cb
--- /dev/null
+++ b/modules/Admin/Language/fa/Soundbite.php
@@ -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',
+];
diff --git a/modules/Admin/Language/fa/User.php b/modules/Admin/Language/fa/User.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b2e478bf7b6c5d97364e6888e9724b8fa24188f
--- /dev/null
+++ b/modules/Admin/Language/fa/User.php
@@ -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.',
+    ],
+];
diff --git a/modules/Admin/Language/fa/Validation.php b/modules/Admin/Language/fa/Validation.php
new file mode 100644
index 0000000000000000000000000000000000000000..750b19688f973df85a6ebdc861745225b28d0c54
--- /dev/null
+++ b/modules/Admin/Language/fa/Validation.php
@@ -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/).',
+];
diff --git a/modules/Admin/Language/fa/VideoClip.php b/modules/Admin/Language/fa/VideoClip.php
new file mode 100644
index 0000000000000000000000000000000000000000..638de697bba7f2c0fbc240dace9dd73bfeb77615
--- /dev/null
+++ b/modules/Admin/Language/fa/VideoClip.php
@@ -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)',
+    ],
+];
diff --git a/modules/Admin/Language/fr/Breadcrumb.php b/modules/Admin/Language/fr/Breadcrumb.php
index 814b02c0ede4dffe2a006850de8f5cd7126b14cb..a1c9f37b7218d7d46bbe74224144eb1b34bfd7e5 100644
--- a/modules/Admin/Language/fr/Breadcrumb.php
+++ b/modules/Admin/Language/fr/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/fr/Episode.php b/modules/Admin/Language/fr/Episode.php
index 4b8d039fd91a263f35f77042cef234ae0e47d33a..aab767533fd27c6349ef7b621b27c63a55cd00ea 100644
--- a/modules/Admin/Language/fr/Episode.php
+++ b/modules/Admin/Language/fr/Episode.php
@@ -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 d’image, 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, c’est 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 d’autres plate-formes pour procurer une meilleure expérience à vos auditeurs. Consulter le {podcastNamespaceLink} pour plus d’informations.',
+            '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é',
diff --git a/modules/Admin/Language/fr/Person.php b/modules/Admin/Language/fr/Person.php
index da49f4eb9d36d6733548e7d3688fa7a40225c254..e5f3128aadff7cecd8d0dde1fe674f49363aac89 100644
--- a/modules/Admin/Language/fr/Person.php
+++ b/modules/Admin/Language/fr/Person.php
@@ -24,7 +24,7 @@ return [
     'form' => [
         'avatar' => 'Avatar',
         'avatar_size_hint' =>
-            'L’image 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 l’intervenant',
         'unique_name' => 'Nom unique',
diff --git a/modules/Admin/Language/fr/Podcast.php b/modules/Admin/Language/fr/Podcast.php
index db374b4ef3df883aefda68cd6ff2747456a79482..f923adb0fed305291a4fa2a782ad370dcdda374a 100644
--- a/modules/Admin/Language/fr/Podcast.php
+++ b/modules/Admin/Language/fr/Podcast.php
@@ -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 d’hébergeur. Par défaut, ce champ est rempli avec l’URL 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',
diff --git a/modules/Admin/Language/fr/PodcastImport.php b/modules/Admin/Language/fr/PodcastImport.php
index 45d52548b02090c66c30391e25dff971c0ff20bc..71991c5c024d7d8f2b4e219c7b9c1731ed50911c 100644
--- a/modules/Admin/Language/fr/PodcastImport.php
+++ b/modules/Admin/Language/fr/PodcastImport.php
@@ -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 l’exécution, vous ne pourrez voir aucun changement avant la fin. En cas d’erreur 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 l’exécution, vous ne pourrez voir aucun changement avant la fin.<br/>En cas d’erreur 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 l’importer. Copier et diffuser un podcast sans en détenir les droits est assimilable à de la contrefaçon et est passible de poursuites.',
diff --git a/modules/Admin/Language/fr/PodcastNavigation.php b/modules/Admin/Language/fr/PodcastNavigation.php
index ddce3a3147d5f7eec253266c960c5da1a957e904..d865d127ae51e1c1a290ce0b048a15e2f316611e 100644
--- a/modules/Admin/Language/fr/PodcastNavigation.php
+++ b/modules/Admin/Language/fr/PodcastNavigation.php
@@ -17,6 +17,7 @@ return [
     'episodes' => 'Épisodes',
     'episode-list' => 'Tous les épisodes',
     'episode-create' => 'Créer un épisode',
+    'episode-deleted' => 'Recycle bin',
     'analytics' => 'Mesures d’audience',
     'podcast-analytics' => 'Vue d’ensemble',
     'podcast-analytics-webpages' => 'Visites des pages web',
diff --git a/modules/Admin/Language/fr/Settings.php b/modules/Admin/Language/fr/Settings.php
index 297c0c570ad928b2440f67caa7cbd0087bc9c4c7..d8538c438b0a64b75370ac90de3c0fcba8796326 100644
--- a/modules/Admin/Language/fr/Settings.php
+++ b/modules/Admin/Language/fr/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/gd/Admin.php b/modules/Admin/Language/gd/Admin.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e3942371fb59c6cbc560b147310907cedd3696f
--- /dev/null
+++ b/modules/Admin/Language/gd/Admin.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Breadcrumb.php b/modules/Admin/Language/gd/Breadcrumb.php
new file mode 100644
index 0000000000000000000000000000000000000000..69915453e36c52d14ac93481f37266118e6abce0
--- /dev/null
+++ b/modules/Admin/Language/gd/Breadcrumb.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Charts.php b/modules/Admin/Language/gd/Charts.php
new file mode 100644
index 0000000000000000000000000000000000000000..d9a75a1d8455cf9f83bb562a2988adc5e75a3674
--- /dev/null
+++ b/modules/Admin/Language/gd/Charts.php
@@ -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)',
+];
diff --git a/modules/Admin/Language/gd/Common.php b/modules/Admin/Language/gd/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..d97bcf991f67faf9d20d2742cffbe9e059eb7ea1
--- /dev/null
+++ b/modules/Admin/Language/gd/Common.php
@@ -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}.',
+];
diff --git a/modules/Admin/Language/gd/Contributor.php b/modules/Admin/Language/gd/Contributor.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0f3b93d9ff29bbf2086380e374c7e35b5c7539a
--- /dev/null
+++ b/modules/Admin/Language/gd/Contributor.php
@@ -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!",
+    ],
+];
diff --git a/modules/Admin/Language/gd/Countries.php b/modules/Admin/Language/gd/Countries.php
new file mode 100644
index 0000000000000000000000000000000000000000..4cd5d9c857baf9bb5f255aafe2b66d915dabebde
--- /dev/null
+++ b/modules/Admin/Language/gd/Countries.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Episode.php b/modules/Admin/Language/gd/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef
--- /dev/null
+++ b/modules/Admin/Language/gd/Episode.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/gd/EpisodeNavigation.php b/modules/Admin/Language/gd/EpisodeNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..1406e3010ef4383a6d8ef32ff88497e7bdeb9fa4
--- /dev/null
+++ b/modules/Admin/Language/gd/EpisodeNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Fediverse.php b/modules/Admin/Language/gd/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e4ca66d89cd7d6191d36c0325647b0b3932ac6e
--- /dev/null
+++ b/modules/Admin/Language/gd/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Home.php b/modules/Admin/Language/gd/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..3ff4c04dc8a8f2576b3e04638184ae375f488a54
--- /dev/null
+++ b/modules/Admin/Language/gd/Home.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Install.php b/modules/Admin/Language/gd/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..36e373a2858779a2deb77f1cbc6f629dda223f19
--- /dev/null
+++ b/modules/Admin/Language/gd/Install.php
@@ -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.",
+    ],
+];
diff --git a/modules/Admin/Language/gd/MyAccount.php b/modules/Admin/Language/gd/MyAccount.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ebbb30ef70a5e3e86a9bab867f7c732ce79db26
--- /dev/null
+++ b/modules/Admin/Language/gd/MyAccount.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Navigation.php b/modules/Admin/Language/gd/Navigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..68d4609d5d94a5770f237ee23207ad47d1262c70
--- /dev/null
+++ b/modules/Admin/Language/gd/Navigation.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Page.php b/modules/Admin/Language/gd/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..b6f49de57496ec4830246641f0bf8897e7c9a2f9
--- /dev/null
+++ b/modules/Admin/Language/gd/Page.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Pager.php b/modules/Admin/Language/gd/Pager.php
new file mode 100644
index 0000000000000000000000000000000000000000..e25ee638108dba1e0bfa602b45969381dd8ebd57
--- /dev/null
+++ b/modules/Admin/Language/gd/Pager.php
@@ -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.',
+];
diff --git a/modules/Admin/Language/gd/Person.php b/modules/Admin/Language/gd/Person.php
new file mode 100644
index 0000000000000000000000000000000000000000..a652be9fda1f4aeb73bcb01c35f13a452a6d4741
--- /dev/null
+++ b/modules/Admin/Language/gd/Person.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Platforms.php b/modules/Admin/Language/gd/Platforms.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab17d5999b1626535499464902c12f5c3bcb7aa8
--- /dev/null
+++ b/modules/Admin/Language/gd/Platforms.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Podcast.php b/modules/Admin/Language/gd/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..2561b8766768e5ff907834836905bea73ab5ec0c
--- /dev/null
+++ b/modules/Admin/Language/gd/Podcast.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/PodcastImport.php b/modules/Admin/Language/gd/PodcastImport.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9
--- /dev/null
+++ b/modules/Admin/Language/gd/PodcastImport.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/PodcastNavigation.php b/modules/Admin/Language/gd/PodcastNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69
--- /dev/null
+++ b/modules/Admin/Language/gd/PodcastNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/Settings.php b/modules/Admin/Language/gd/Settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..345976be7f307ddd34bb7b3cf1d5a95d62935e6e
--- /dev/null
+++ b/modules/Admin/Language/gd/Settings.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Soundbite.php b/modules/Admin/Language/gd/Soundbite.php
new file mode 100644
index 0000000000000000000000000000000000000000..a3f828fe09fa68f902251e7438bb54a2727ac8cb
--- /dev/null
+++ b/modules/Admin/Language/gd/Soundbite.php
@@ -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',
+];
diff --git a/modules/Admin/Language/gd/User.php b/modules/Admin/Language/gd/User.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b2e478bf7b6c5d97364e6888e9724b8fa24188f
--- /dev/null
+++ b/modules/Admin/Language/gd/User.php
@@ -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.',
+    ],
+];
diff --git a/modules/Admin/Language/gd/Validation.php b/modules/Admin/Language/gd/Validation.php
new file mode 100644
index 0000000000000000000000000000000000000000..750b19688f973df85a6ebdc861745225b28d0c54
--- /dev/null
+++ b/modules/Admin/Language/gd/Validation.php
@@ -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/).',
+];
diff --git a/modules/Admin/Language/gd/VideoClip.php b/modules/Admin/Language/gd/VideoClip.php
new file mode 100644
index 0000000000000000000000000000000000000000..638de697bba7f2c0fbc240dace9dd73bfeb77615
--- /dev/null
+++ b/modules/Admin/Language/gd/VideoClip.php
@@ -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)',
+    ],
+];
diff --git a/modules/Admin/Language/id/Breadcrumb.php b/modules/Admin/Language/id/Breadcrumb.php
index d9400ca786ad22820c4bda166f6f11e61a0cb199..69915453e36c52d14ac93481f37266118e6abce0 100644
--- a/modules/Admin/Language/id/Breadcrumb.php
+++ b/modules/Admin/Language/id/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/id/Episode.php b/modules/Admin/Language/id/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/id/Episode.php
+++ b/modules/Admin/Language/id/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/id/Person.php b/modules/Admin/Language/id/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/id/Person.php
+++ b/modules/Admin/Language/id/Person.php
@@ -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',
diff --git a/modules/Admin/Language/id/Podcast.php b/modules/Admin/Language/id/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/id/Podcast.php
+++ b/modules/Admin/Language/id/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/id/PodcastImport.php b/modules/Admin/Language/id/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/id/PodcastImport.php
+++ b/modules/Admin/Language/id/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/id/PodcastNavigation.php b/modules/Admin/Language/id/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/id/PodcastNavigation.php
+++ b/modules/Admin/Language/id/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/id/Settings.php b/modules/Admin/Language/id/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/id/Settings.php
+++ b/modules/Admin/Language/id/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/it/Breadcrumb.php b/modules/Admin/Language/it/Breadcrumb.php
index d9400ca786ad22820c4bda166f6f11e61a0cb199..69915453e36c52d14ac93481f37266118e6abce0 100644
--- a/modules/Admin/Language/it/Breadcrumb.php
+++ b/modules/Admin/Language/it/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/it/Episode.php b/modules/Admin/Language/it/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/it/Episode.php
+++ b/modules/Admin/Language/it/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/it/Person.php b/modules/Admin/Language/it/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/it/Person.php
+++ b/modules/Admin/Language/it/Person.php
@@ -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',
diff --git a/modules/Admin/Language/it/Podcast.php b/modules/Admin/Language/it/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/it/Podcast.php
+++ b/modules/Admin/Language/it/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/it/PodcastImport.php b/modules/Admin/Language/it/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/it/PodcastImport.php
+++ b/modules/Admin/Language/it/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/it/PodcastNavigation.php b/modules/Admin/Language/it/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/it/PodcastNavigation.php
+++ b/modules/Admin/Language/it/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/it/Settings.php b/modules/Admin/Language/it/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/it/Settings.php
+++ b/modules/Admin/Language/it/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/nl/Breadcrumb.php b/modules/Admin/Language/nl/Breadcrumb.php
index ecb81fc78fedf7dcdb7b42d652b70e34738a68a9..edf2a67ef936eccbddce9dfe5b99dc390ebead6b 100644
--- a/modules/Admin/Language/nl/Breadcrumb.php
+++ b/modules/Admin/Language/nl/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'publicatie aanpassen',
     'unpublish' => 'publicatie ongedaan maken',
     'delete' => 'verwijder',
+    'deleted' => 'deleted',
+    'delete-permanently' => 'delete permanently',
     'fediverse' => 'fediverse',
     'block-lists' => 'blokkeerlijst',
     'users' => 'gebruikers',
diff --git a/modules/Admin/Language/nl/Episode.php b/modules/Admin/Language/nl/Episode.php
index 0fc11e32013755f9eb9dcc6bf2cdb0cb93200054..4f8fcf3e66c1e2a6064cd2870ee80c972b957332 100644
--- a/modules/Admin/Language/nl/Episode.php
+++ b/modules/Admin/Language/nl/Episode.php
@@ -38,6 +38,15 @@ return [
         'not_published' => 'Niet gepubliceerd',
     ],
     'list' => [
+        'search' => [
+            'placeholder' => 'Search for an episode',
+            'clear' => 'Clear search',
+            'submit' => 'Search',
+        ],
+        'number_of_episodes' => '{numberOfEpisodes, plural,
+            one {# episode}
+            other {# episodes}
+        }',
         'episode' => 'Aflevering',
         'visibility' => 'Zichtbaarheid',
         'comments' => 'Reacties',
@@ -47,6 +56,24 @@ return [
         'createSuccess' => 'Aflevering is succesvol aangemaakt!',
         'editSuccess' => 'Aflevering is succesvol bijgewerkt!',
         'publishCancelSuccess' => 'Aflevering publicatie is geannuleerd!',
+        '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' => 'Aflevering omslag',
         'cover_hint' =>
             'Als je geen omslag instelt, zal de podcast omslag worden gebruikt.',
-        'cover_size_hint' => 'Omslag moet minstens 1400px breed en hoog zijn.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'title' => 'Titel',
         'title_hint' =>
             'Moet een duidelijke en beknopte afleveringsnaam bevatten. Geef hier geen aflevering of seizoen nummers op.',
@@ -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',
     ],
diff --git a/modules/Admin/Language/nl/Person.php b/modules/Admin/Language/nl/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/nl/Person.php
+++ b/modules/Admin/Language/nl/Person.php
@@ -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',
diff --git a/modules/Admin/Language/nl/Podcast.php b/modules/Admin/Language/nl/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/nl/Podcast.php
+++ b/modules/Admin/Language/nl/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/nl/PodcastImport.php b/modules/Admin/Language/nl/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/nl/PodcastImport.php
+++ b/modules/Admin/Language/nl/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/nl/PodcastNavigation.php b/modules/Admin/Language/nl/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/nl/PodcastNavigation.php
+++ b/modules/Admin/Language/nl/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/nl/Settings.php b/modules/Admin/Language/nl/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/nl/Settings.php
+++ b/modules/Admin/Language/nl/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/nn-NO/Breadcrumb.php b/modules/Admin/Language/nn-NO/Breadcrumb.php
index c7852453f635f6e6298d8ef6de082c23db0bd719..38afbb41836ceea9a9f938335dab4737eb106ec4 100644
--- a/modules/Admin/Language/nn-NO/Breadcrumb.php
+++ b/modules/Admin/Language/nn-NO/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'rediger publiseringa',
     'unpublish' => 'avpubliser',
     'delete' => 'slett',
+    'deleted' => 'deleted',
+    'delete-permanently' => 'delete permanently',
     'fediverse' => 'fødiverset',
     'block-lists' => 'blokkeringslister',
     'users' => 'brukarar',
diff --git a/modules/Admin/Language/nn-NO/Episode.php b/modules/Admin/Language/nn-NO/Episode.php
index fa998be71414239295372e1bb772425bc7802475..88257737d7db74abf1a8daafda8372004f93ab32 100644
--- a/modules/Admin/Language/nn-NO/Episode.php
+++ b/modules/Admin/Language/nn-NO/Episode.php
@@ -38,6 +38,15 @@ return [
         'not_published' => 'Ikkje lagt ut',
     ],
     'list' => [
+        'search' => [
+            'placeholder' => 'Search for an episode',
+            'clear' => 'Clear search',
+            'submit' => 'Search',
+        ],
+        'number_of_episodes' => '{numberOfEpisodes, plural,
+            one {# episode}
+            other {# episodes}
+        }',
         'episode' => 'Episode',
         'visibility' => 'Synlegheit',
         'comments' => 'Kommentarar',
@@ -47,6 +56,24 @@ return [
         'createSuccess' => 'Episoden er oppretta!',
         'editSuccess' => 'Episoden er oppdatert!',
         'publishCancelSuccess' => 'Du har avbrote å leggja ut episoden.',
+        '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' => 'Episodeomslag',
         'cover_hint' =>
             'Viss du ikkje bruker eige omslag, blir omslaget til podkasten brukt i staden.',
-        'cover_size_hint' => 'Omslaget må vera kvadratisk, og minst 1400 breitt og høgt.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'title' => 'Tittel',
         'title_hint' =>
             'Bør innehalda eit klårt og konsist episodenamn. Ikkje skriv inn nummer på episode eller sesong her.',
@@ -89,7 +116,7 @@ return [
             'Denne teksten ligg på slutten av kvar episodeskildring, og er ein god stad å ha lenker til td. sosiale nettverk.',
         'additional_files_section_title' => 'Fleire filer',
         'additional_files_section_subtitle' =>
-            'Desse filene kan brukast av andre plattformer for å gje publikum ei betre oppleving. Sjå {podcastNamespaceLink} for meir informasjon.',
+            'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
         'location_section_title' => 'Stad',
         'location_section_subtitle' => 'Kva stad handlar denne episoden om?',
         'location_name' => 'Stadnamn eller adresse',
@@ -147,9 +174,9 @@ return [
     ],
     'delete_form' => [
         'disclaimer' =>
-            "Viss du slettar episoden, blir alle innlegga som er knytte til han sletta, og han blir sletta frå RSS-straumen til podkasten.",
+            "Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
         'understand' => 'Eg forstår, eg vil sletta episoden',
-        'submit' => 'Slett',
+        'submit' => 'Delete',
     ],
     'embed' => [
         'title' => 'Innbyggbar spelar',
diff --git a/modules/Admin/Language/nn-NO/Person.php b/modules/Admin/Language/nn-NO/Person.php
index c20bfedbf56b332e14c85ab190b26183eae2711c..3b12626f581208d6228651ea7b5044b8c19a9f3b 100644
--- a/modules/Admin/Language/nn-NO/Person.php
+++ b/modules/Admin/Language/nn-NO/Person.php
@@ -24,7 +24,7 @@ return [
     'form' => [
         'avatar' => 'Profilbilete',
         'avatar_size_hint' =>
-            'Profilbiletet må vera minst 400pkt breitt og høgt.',
+            'Avatar must be squared and at least 400px wide and tall.',
         'full_name' => 'Fullt namn',
         'full_name_hint' => 'Dette er det fulle namnet eller aliaset til personen.',
         'unique_name' => 'Unikt namn',
diff --git a/modules/Admin/Language/nn-NO/Podcast.php b/modules/Admin/Language/nn-NO/Podcast.php
index 236ad1ab3a41b43c5eaf4340b9596425b40e48ce..2df0c19c390a1923a2e5deb435a35254393acd4e 100644
--- a/modules/Admin/Language/nn-NO/Podcast.php
+++ b/modules/Admin/Language/nn-NO/Podcast.php
@@ -26,14 +26,34 @@ return [
         'createSuccess' => 'Podkasten er oppretta!',
         'editSuccess' => 'Podkasten er oppdatert!',
         'importSuccess' => 'Podkasten er importert!',
+        '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' => 'Podkastidentitet',
         'identity_section_subtitle' => 'Desse felta gjer at du blir lagt merke til.',
         'cover' => 'Podkastomslag',
-        'cover_size_hint' => 'Omslaget må vera kvadratisk, og minst 1400pkt breitt og høgt.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'banner' => 'Podkastbanner',
-        'banner_size_hint' => 'Banneret må ha 3:1-forhold og vera minst 1500pkt breitt.',
+        'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
         'banner_delete' => 'Slett podkastbanneret',
         'title' => 'Tittel',
         'handle' => 'Handtak',
@@ -90,6 +110,9 @@ return [
         'custom_rss_hint' => 'Dette blir sett inn i ❬channel❭-elementet.',
         'new_feed_url' => 'Ny straum-URL',
         'new_feed_url_hint' => 'Bruk dette feltet når du flyttar til eit anna domene eller vertsplattform. Standardvalet for verdien er den noverande RSS-adresse viss podkasten er importert.',
+        'old_feed_url' => 'Old feed URL',
+        'update_feed' => 'Update feed',
+        'update_feed_tip' => 'Import this podcast\'s latest episodes',
         'partnership' => 'Partnarskap',
         'partner_id' => 'ID',
         'partner_link_url' => 'Lenke-URL',
@@ -219,6 +242,12 @@ return [
         'film_reviews' => 'Filmmeldingar',
         'tv_reviews' => 'TV-meldingar',
     ],
+    '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' => 'Av {publisher}',
     'season' => 'Sesong {seasonNumber}',
     'list_of_episodes_year' => '{year}-episodar ({episodeCount})',
@@ -227,12 +256,12 @@ return [
     'no_episode' => 'Fann ingen episode!',
     'follow' => 'Fylg',
     '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',
diff --git a/modules/Admin/Language/nn-NO/PodcastImport.php b/modules/Admin/Language/nn-NO/PodcastImport.php
index 9a27842a45eb19537f00bab97e27517fb9e361b2..9fb36b11c2a97f7bed3132551b570e0a23f9f89f 100644
--- a/modules/Admin/Language/nn-NO/PodcastImport.php
+++ b/modules/Admin/Language/nn-NO/PodcastImport.php
@@ -10,7 +10,7 @@ declare(strict_types=1);
 
 return [
     'warning' =>
-        'Dette kan ta lang tid. Denne versjonen syner ikkje framgangen medan importen går, så du vil ikkje sjå noko før han er ferdig. Viss du får feil med tidsavbrot, aukar du `max_execution_time`-verdien.',
+        'Dette kan ta lang tid.<br/>Denne versjonen syner ikkje framgangen medan importen går, så du vil ikkje sjå noko før han er ferdig.<br/>Viss du får feil med tidsavbrot, aukar du `max_execution_time`-verdien.',
     'old_podcast_section_title' => 'Podkast å importera',
     'old_podcast_section_subtitle' =>
         'Syt for at du har rettane til podkasten før du importerer han. Å kopiera og kringkasta ein podkast utan løyve er ulovleg og straffbart.',
diff --git a/modules/Admin/Language/nn-NO/PodcastNavigation.php b/modules/Admin/Language/nn-NO/PodcastNavigation.php
index cf628d0ea27111764c873162d8797ef2bb5deb1b..29d612f566fe97584309b3bd0d1d4942b9bbdebb 100644
--- a/modules/Admin/Language/nn-NO/PodcastNavigation.php
+++ b/modules/Admin/Language/nn-NO/PodcastNavigation.php
@@ -17,6 +17,7 @@ return [
     'episodes' => 'Episodar',
     'episode-list' => 'Alle episodane',
     'episode-create' => 'Ny episode',
+    'episode-deleted' => 'Recycle bin',
     'analytics' => 'Analysar',
     'podcast-analytics' => 'Oversikt over publikum',
     'podcast-analytics-webpages' => 'Nettsidevisingar',
diff --git a/modules/Admin/Language/nn-NO/Settings.php b/modules/Admin/Language/nn-NO/Settings.php
index 2d100161d0ee8da191017f533f739453c303202a..2ef7b6c92a383a43a1f01b598f942030c763ce52 100644
--- a/modules/Admin/Language/nn-NO/Settings.php
+++ b/modules/Admin/Language/nn-NO/Settings.php
@@ -15,7 +15,7 @@ return [
         'site_icon' => 'Sideikon',
         'site_icon_delete' => 'Slett sideikonet',
         'site_icon_hint' => 'Nettstadikon er det du ser i fanene på nettlesaren, bokmerkelina og når du legg til ein nettstad som snarveg på mobile einingar.',
-        'site_icon_helper' => 'Ikonet må vera kvadratisk og minst 512pkt breitt og høgt.',
+        'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
         'site_name' => 'Nettstadnamn',
         'site_description' => 'Skildring av nettstaden',
         'submit' => 'Lagre',
diff --git a/modules/Admin/Language/oc/Breadcrumb.php b/modules/Admin/Language/oc/Breadcrumb.php
index d9400ca786ad22820c4bda166f6f11e61a0cb199..69915453e36c52d14ac93481f37266118e6abce0 100644
--- a/modules/Admin/Language/oc/Breadcrumb.php
+++ b/modules/Admin/Language/oc/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/oc/Episode.php b/modules/Admin/Language/oc/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/oc/Episode.php
+++ b/modules/Admin/Language/oc/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/oc/Person.php b/modules/Admin/Language/oc/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/oc/Person.php
+++ b/modules/Admin/Language/oc/Person.php
@@ -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',
diff --git a/modules/Admin/Language/oc/Podcast.php b/modules/Admin/Language/oc/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/oc/Podcast.php
+++ b/modules/Admin/Language/oc/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/oc/PodcastImport.php b/modules/Admin/Language/oc/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/oc/PodcastImport.php
+++ b/modules/Admin/Language/oc/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/oc/PodcastNavigation.php b/modules/Admin/Language/oc/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/oc/PodcastNavigation.php
+++ b/modules/Admin/Language/oc/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/oc/Settings.php b/modules/Admin/Language/oc/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/oc/Settings.php
+++ b/modules/Admin/Language/oc/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/pl/Breadcrumb.php b/modules/Admin/Language/pl/Breadcrumb.php
index 6ad15119c92a6210f4f368dded98666a796b11d9..f7ced27709ce8aca60b0d5bb264d04522cba1480 100644
--- a/modules/Admin/Language/pl/Breadcrumb.php
+++ b/modules/Admin/Language/pl/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'edytuj publikacjÄ™',
     'unpublish' => 'cofnij publikacjÄ™',
     'delete' => 'usuń',
+    'deleted' => 'deleted',
+    'delete-permanently' => 'delete permanently',
     'fediverse' => 'fediverse',
     'block-lists' => 'listy blokowanych',
     'users' => 'użytkownicy',
diff --git a/modules/Admin/Language/pl/Episode.php b/modules/Admin/Language/pl/Episode.php
index c69567219b7a442a5d8c1941bfcbd4cebd8e4934..5cb039d900221d03e50dbc750ab551c64f7ce39c 100644
--- a/modules/Admin/Language/pl/Episode.php
+++ b/modules/Admin/Language/pl/Episode.php
@@ -39,6 +39,15 @@ return [
         'not_published' => 'Nieopublikowany',
     ],
     'list' => [
+        'search' => [
+            'placeholder' => 'Search for an episode',
+            'clear' => 'Clear search',
+            'submit' => 'Search',
+        ],
+        'number_of_episodes' => '{numberOfEpisodes, plural,
+            one {# episode}
+            other {# episodes}
+        }',
         'episode' => 'Odcinek',
         'visibility' => 'Widoczność',
         'comments' => 'Komentarze',
@@ -48,6 +57,24 @@ return [
         'createSuccess' => 'Odcinek został pomyślnie utworzony!',
         'editSuccess' => 'Odcinek został pomyślnie zaktualizowany!',
         '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' =>
@@ -58,7 +85,7 @@ return [
         'cover' => 'Okładka odcinka',
         'cover_hint' =>
             'Jeśli nie ustawisz okładki, zamiast niej zostanie użyta okładka podcastu.',
-        'cover_size_hint' => 'Okładka musi być kwadratowa o szerokości i wysokości co najmniej 1400 pikseli.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'title' => 'Tytuł',
         'title_hint' =>
             'Powinien zawierać jasną i zwięzłą nazwę odcinka. Nie podawaj tutaj numerów odcinków ani sezonów.',
@@ -90,7 +117,7 @@ return [
             'Ten tekst jest dodawany na końcu każdego opisu odcinka; jest to dobre miejsce do wpisania np. linków społecznościowych.',
         'additional_files_section_title' => 'Dodatkowe pliki',
         'additional_files_section_subtitle' =>
-            'Pliki te mogą być używane przez inne platformy, aby zapewnić lepsze wrażenia odbiorcom. Więcej informacji znajdziesz w {podcastNamespaceLink}.',
+            'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
         'location_section_title' => 'Lokalizacja',
         'location_section_subtitle' => 'O jakim miejscu jest ten odcinek?',
         'location_name' => 'Nazwa lub adres lokalizacji',
@@ -148,9 +175,9 @@ return [
     ],
     'delete_form' => [
         'disclaimer' =>
-            "Usunięcie odcinka spowoduje usunięcie wszystkich powiązanych z nim wpisów i usunięcie go z kanału RSS podcastu.",
+            "Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
         'understand' => 'Rozumiem, chcę usunąć odcinek',
-        'submit' => 'Usuń',
+        'submit' => 'Delete',
     ],
     'embed' => [
         'title' => 'Odtwarzacz osadzalny',
diff --git a/modules/Admin/Language/pl/Person.php b/modules/Admin/Language/pl/Person.php
index b1143eb70bcf2fad5cb1d8c5a300693d5de63f7f..baf670946bc47b9e75f7c201ca31212cdd09fecf 100644
--- a/modules/Admin/Language/pl/Person.php
+++ b/modules/Admin/Language/pl/Person.php
@@ -24,7 +24,7 @@ return [
     'form' => [
         'avatar' => 'Awatar',
         'avatar_size_hint' =>
-            'Awatar musi być kwadratowy o szerokości i wysokości co najmniej 400 pikseli.',
+            'Avatar must be squared and at least 400px wide and tall.',
         'full_name' => 'Pełne imię i nazwisko',
         'full_name_hint' => 'To jest pełne imię i nazwisko lub pseudonim osoby.',
         'unique_name' => 'Unikalna nazwa',
diff --git a/modules/Admin/Language/pl/Podcast.php b/modules/Admin/Language/pl/Podcast.php
index 88b05f429096d0b4e9bfa72fae775a398f0fe30f..2902375fdca8d8777c1c65b863bc7d6f4212a899 100644
--- a/modules/Admin/Language/pl/Podcast.php
+++ b/modules/Admin/Language/pl/Podcast.php
@@ -26,14 +26,34 @@ return [
         'createSuccess' => 'Podcast został pomyślnie utworzony!',
         'editSuccess' => 'Podcast został pomyślnie zaktualizowany!',
         'importSuccess' => 'Podcast został pomyślnie zaimportowany!',
+        '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' => 'Tożsamość podcastu',
         'identity_section_subtitle' => 'Te pola pozwalają Ci zostać zauważonym.',
         'cover' => 'Okładka podcastu',
-        'cover_size_hint' => 'Okładka musi być kwadratowa o szerokości i wysokości co najmniej 1400 pikseli.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'banner' => 'Baner podcastu',
-        'banner_size_hint' => 'Baner musi mieć proporcje 3:1 i co najmniej 1500 pikseli szerokości.',
+        'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
         'banner_delete' => 'Usuń baner podcastu',
         'title' => 'Tytuł',
         'handle' => 'Uchwyt',
@@ -90,6 +110,9 @@ return [
         'custom_rss_hint' => 'Zostaną wstawione w tagu ❬channel❭.',
         'new_feed_url' => 'Nowy adres URL kanału',
         'new_feed_url_hint' => 'Użyj tego pola, gdy przenosisz się do innej domeny lub platformy hostingowej podcastu. Domyślnie wartość jest ustawiona na bieżący adres URL RSS, jeśli podcast jest importowany.',
+        'old_feed_url' => 'Old feed URL',
+        'update_feed' => 'Update feed',
+        'update_feed_tip' => 'Import this podcast\'s latest episodes',
         'partnership' => 'Partnerstwo',
         'partner_id' => 'ID',
         'partner_link_url' => 'Adres URL linku',
@@ -219,6 +242,12 @@ return [
         'film_reviews' => 'Recenzje filmów',
         'tv_reviews' => 'Recenzje telewizyjne',
     ],
+    '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' => 'Przez {publisher}',
     'season' => 'Sezon {seasonNumber}',
     'list_of_episodes_year' => '{year} odcinki ({episodeCount})',
@@ -227,13 +256,12 @@ return [
     'no_episode' => 'Nie znaleziono odcinków!',
     'follow' => 'Obserwuj',
     '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',
diff --git a/modules/Admin/Language/pl/PodcastImport.php b/modules/Admin/Language/pl/PodcastImport.php
index eeceb4fd16fc5125ef73565f4f199d74d0b6c30d..468d844760a09b10ad6a0c1eb0677e14edc982a2 100644
--- a/modules/Admin/Language/pl/PodcastImport.php
+++ b/modules/Admin/Language/pl/PodcastImport.php
@@ -10,7 +10,7 @@ declare(strict_types=1);
 
 return [
     'warning' =>
-        'Ta procedura może zająć dużo czasu. Ponieważ bieżąca wersja nie pokazuje żadnego postępu podczas działania, nie zobaczysz żadnych aktualizacji dopóki nie zostanie wykonana. W przypadku błędu przekroczenia limitu czasu, zwiększ wartość `max_execution_time`.',
+        'Ta procedura może zająć dużo czasu.<br/>Ponieważ bieżąca wersja nie pokazuje żadnego postępu podczas działania, nie zobaczysz żadnych aktualizacji dopóki nie zostanie wykonana.<br/>W przypadku błędu przekroczenia limitu czasu, zwiększ wartość `max_execution_time`.',
     'old_podcast_section_title' => 'Podcast do zaimportowania',
     'old_podcast_section_subtitle' =>
         'Upewnij się, że masz prawa do tego podcastu zanim go zaimportujesz. Kopiowanie i nadawanie podcastu bez odpowiednich praw jest piractwem i podlega ściganiu.',
diff --git a/modules/Admin/Language/pl/PodcastNavigation.php b/modules/Admin/Language/pl/PodcastNavigation.php
index 38b73ffbe161f220f6f8fa30fc4484eb9b99208d..d643e2c3d46c3e6012875ee875092a3ab4a9f7ca 100644
--- a/modules/Admin/Language/pl/PodcastNavigation.php
+++ b/modules/Admin/Language/pl/PodcastNavigation.php
@@ -17,6 +17,7 @@ return [
     'episodes' => 'Odcinki',
     'episode-list' => 'Wszystkie odcinki',
     'episode-create' => 'Nowy odcinek',
+    'episode-deleted' => 'Recycle bin',
     'analytics' => 'Analityka',
     'podcast-analytics' => 'Przegląd odbiorców',
     'podcast-analytics-webpages' => 'Odwiedziny stron internetowych',
diff --git a/modules/Admin/Language/pl/Settings.php b/modules/Admin/Language/pl/Settings.php
index 1abb1409c5c5856d27ac16f11baeb95f90224464..308012aea766f97c5429c9bc6c8dd5c60d52a24f 100644
--- a/modules/Admin/Language/pl/Settings.php
+++ b/modules/Admin/Language/pl/Settings.php
@@ -15,7 +15,7 @@ return [
         'site_icon' => 'Ikona witryny',
         'site_icon_delete' => 'Usuń ikonę witryny',
         'site_icon_hint' => 'Ikony witryny są widoczne na kartach przeglądarki, paskach zakładek oraz po dodaniu witryny jako skrótu na urządzeniach mobilnych.',
-        'site_icon_helper' => 'Ikona musi być kwadratowa o szerokości i wysokości co najmniej 512 pikseli.',
+        'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
         'site_name' => 'Nazwa strony',
         'site_description' => 'Opis strony',
         'submit' => 'Zapisz',
diff --git a/modules/Admin/Language/pt-BR/Breadcrumb.php b/modules/Admin/Language/pt-BR/Breadcrumb.php
index ea0d019c4056b0cd802313d878099c7a29949794..e84748324bc6bed31013963f528f3fd77c67479e 100644
--- a/modules/Admin/Language/pt-BR/Breadcrumb.php
+++ b/modules/Admin/Language/pt-BR/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'editar publicação',
     'unpublish' => 'despublicar',
     'delete' => 'excluir',
+    'deleted' => 'excluído',
+    'delete-permanently' => 'excluir permanentemente',
     'fediverse' => 'fediverso',
     'block-lists' => 'listas de bloqueio',
     'users' => 'usuários',
diff --git a/modules/Admin/Language/pt-BR/Episode.php b/modules/Admin/Language/pt-BR/Episode.php
index d02778a26c795fabdb32a4309c2cd03b4f131597..2c320e07404c33c95b8c870dab3980bc92174642 100644
--- a/modules/Admin/Language/pt-BR/Episode.php
+++ b/modules/Admin/Language/pt-BR/Episode.php
@@ -38,6 +38,15 @@ return [
         'not_published' => 'Não publicado',
     ],
     'list' => [
+        'search' => [
+            'placeholder' => 'Search for an episode',
+            'clear' => 'Clear search',
+            'submit' => 'Search',
+        ],
+        'number_of_episodes' => '{numberOfEpisodes, plural,
+            one {# episode}
+            other {# episodes}
+        }',
         'episode' => 'Episódio',
         'visibility' => 'Visibilidade',
         'comments' => 'Comentários',
@@ -47,6 +56,24 @@ return [
         'createSuccess' => 'Episódio foi criado com sucesso!',
         'editSuccess' => 'Episódio foi atualizado com sucesso!',
         'publishCancelSuccess' => 'Publicação do episódio cancelada!',
+        'unpublishBeforeDeleteTip' => 'Você deve despublicar o episódio antes de excluí-lo.',
+        'deletePublishedEpisodeError' => 'Por favor, despublique o episódio antes de excluí-lo.',
+        'deleteSuccess' => 'Episódio excluído com sucesso!',
+        'deleteError' => 'Falha ao excluir o episódio {type, select,
+            transcript {transcrição}
+            chapters {capítulos}
+            image {cupa}
+            audio {áudio}
+            other {mídia}
+        }.',
+        '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' => 'Um episódio com o slug escolhido já existe.',
     ],
     'form' => [
         'file_size_error' =>
@@ -57,7 +84,7 @@ return [
         'cover' => 'Capa de episódio',
         'cover_hint' =>
             'Se você não definir uma capa, a capa do podcast será usada no lugar.',
-        'cover_size_hint' => 'Capa deve ser quadrada com pelo menos 1400px de largura e altura.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'title' => 'Título',
         'title_hint' =>
             'Deve conter um nome de episódio claro e conciso. Não especifique o número de episódio ou de temporada aqui.',
@@ -89,7 +116,7 @@ return [
             'Este texto é adicionado no final de cada descrição de episódio, é um bom lugar para inserir seus links sociais por exemplo.',
         'additional_files_section_title' => 'Arquivos adicionais',
         'additional_files_section_subtitle' =>
-            'Estes arquivos podem ser usados por outras plataformas para fornecer uma melhor experiência ao seu público. Veja {podcastNamespaceLink} para mais informações.',
+            'Estes arquivos podem ser usados por outras plataformas para fornecer uma melhor experiência ao seu público. Veja o {podcastNamespaceLink} para mais informações.',
         'location_section_title' => 'Localização',
         'location_section_subtitle' => 'Sobre que lugar é este episódio?',
         'location_name' => 'Nome ou endereço da localização',
@@ -147,7 +174,7 @@ return [
     ],
     'delete_form' => [
         'disclaimer' =>
-            "Excluir o episódio vai deletar todas as publicações associadas a ele e removê-lo do feed RSS do podcast.",
+            "Excluir o episódio irá excluir todos os arquivos de mídia, comentários, clipes de vídeo e clipes de áudio associados a ele.",
         'understand' => 'Eu entendo, eu quero excluir o episódio',
         'submit' => 'Excluir',
     ],
diff --git a/modules/Admin/Language/pt-BR/Person.php b/modules/Admin/Language/pt-BR/Person.php
index 74d38de9576404e1d1ae1c7aa52f268e33d315b2..fc48401d291395f2fca0bd06233556280af39273 100644
--- a/modules/Admin/Language/pt-BR/Person.php
+++ b/modules/Admin/Language/pt-BR/Person.php
@@ -24,7 +24,7 @@ return [
     'form' => [
         'avatar' => 'Avatar',
         'avatar_size_hint' =>
-            'Avatar deve ser quadrado com pelo menos 400px de largura e altura.',
+            'Avatar must be squared and at least 400px wide and tall.',
         'full_name' => 'Nome completo',
         'full_name_hint' => 'Este é o nome completo ou apelido da pessoa.',
         'unique_name' => 'Nome único',
diff --git a/modules/Admin/Language/pt-BR/Podcast.php b/modules/Admin/Language/pt-BR/Podcast.php
index 99e5f98c49f5cce4086e78d7fcb1421cb3def204..e14ebf764d5df424cc37d5345c75a8378d850cc4 100644
--- a/modules/Admin/Language/pt-BR/Podcast.php
+++ b/modules/Admin/Language/pt-BR/Podcast.php
@@ -26,14 +26,34 @@ return [
         'createSuccess' => 'Podcast foi criado com sucesso!',
         'editSuccess' => 'Podcast foi atualizado com sucesso!',
         'importSuccess' => 'Podcast foi importado com sucesso!',
+        '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' => 'Identidade do podcast',
         'identity_section_subtitle' => 'Esses campos permitem que você seja notado.',
         'cover' => 'Capa do podcast',
-        'cover_size_hint' => 'Capa deve ser quadrada com pelo menos 1400px de largura e altura.',
+        'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
         'banner' => 'Banner do podcast',
-        'banner_size_hint' => 'Banner deve ter uma proporção 3:1 com ao menos 1500px de largura.',
+        'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.',
         'banner_delete' => 'Excluir banner do podcast',
         'title' => 'Título',
         'handle' => 'Identificador',
@@ -90,6 +110,9 @@ return [
         'custom_rss_hint' => 'Isto será injetado dentro da tag ❬channel❭.',
         'new_feed_url' => 'Nova URL de feed',
         'new_feed_url_hint' => 'Use este campo ao mover este podcast para outro domínio ou alterar hosts. Por padrão, este campo é preenchido com a URL do feed RSS atual se o podcast for importado.',
+        'old_feed_url' => 'Old feed URL',
+        'update_feed' => 'Update feed',
+        'update_feed_tip' => 'Import this podcast\'s latest episodes',
         'partnership' => 'Parceria',
         'partner_id' => 'ID',
         'partner_link_url' => 'URL do link',
@@ -219,6 +242,12 @@ return [
         'film_reviews' => 'Avaliações de Filmes',
         'tv_reviews' => 'Avaliações 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' => 'Episódios de {year} ({episodeCount})',
@@ -227,16 +256,16 @@ return [
     'no_episode' => 'Nenhum episódio encontrado!',
     'follow' => 'Seguir',
     'followers' => '{numberOfFollowers, plural,
-        one {# seguidor}
-        other {# seguidores}
+        one {# follower}
+        other {# followers}
     }',
     'posts' => '{numberOfPosts, plural,
-        one {# publicação}
-        other {# publicações}
+        one {# post}
+        other {# posts}
     }',
     'activity' => 'Atividade',
     'episodes' => 'Episódios',
-    'sponsor' => 'Patrocinador',
+    'sponsor' => 'Apoiar',
     'funding_links' => 'Links de financiamento para {podcastTitle}',
     'find_on' => 'Encontrar {podcastTitle} em',
     'listen_on' => 'Ouvir em',
diff --git a/modules/Admin/Language/pt-BR/PodcastImport.php b/modules/Admin/Language/pt-BR/PodcastImport.php
index f1d59e2b7a3c2b114a69ae3f6ec456e41e706999..a4aceeaa3e60997f37b501c8dfb8e8cd20fed250 100644
--- a/modules/Admin/Language/pt-BR/PodcastImport.php
+++ b/modules/Admin/Language/pt-BR/PodcastImport.php
@@ -10,7 +10,7 @@ declare(strict_types=1);
 
 return [
     'warning' =>
-        'Este procedimento pode levar muito tempo. Como a versão atual não mostra nenhum progresso enquanto é executada, você não verá nada atualizado até que seja finalizado. Em caso de erro de tempo limite, aumente o valor de `max_execution_time`.',
+        'Este procedimento pode levar muito tempo.<br/>Como a versão atual não mostra nenhum progresso enquanto é executada, você não verá nada atualizado até que seja finalizado.<br/>Em caso de erro de tempo limite, aumente o valor de `max_execution_time`.',
     'old_podcast_section_title' => 'O podcast para importar',
     'old_podcast_section_subtitle' =>
         'Certifique-se de possuir os direitos para esse podcast antes de importá-lo. Copiar e transmitir um podcast sem os direitos adequados é uma pirataria e corre o risco de ser processado.',
diff --git a/modules/Admin/Language/pt-BR/PodcastNavigation.php b/modules/Admin/Language/pt-BR/PodcastNavigation.php
index 2214743c57ea43104a774983d6f80c68037c9685..382033fc63c4508d4682ea3fed300a68bb28d39a 100644
--- a/modules/Admin/Language/pt-BR/PodcastNavigation.php
+++ b/modules/Admin/Language/pt-BR/PodcastNavigation.php
@@ -17,6 +17,7 @@ return [
     'episodes' => 'Episódios',
     'episode-list' => 'Todos os episódios',
     'episode-create' => 'Novo episódio',
+    'episode-deleted' => 'Lixeira',
     'analytics' => 'Estatísticas',
     'podcast-analytics' => 'Visão geral da audiência',
     'podcast-analytics-webpages' => 'Visitas às páginas web',
diff --git a/modules/Admin/Language/pt-BR/Settings.php b/modules/Admin/Language/pt-BR/Settings.php
index 605bbbe33bd108b12cd6a121fe5f427291da90b2..d4f4f0274d5ac79f1692eefd89032ed41d9089a8 100644
--- a/modules/Admin/Language/pt-BR/Settings.php
+++ b/modules/Admin/Language/pt-BR/Settings.php
@@ -15,7 +15,7 @@ return [
         'site_icon' => 'Ícone do site',
         'site_icon_delete' => 'Excluir ícone do site',
         'site_icon_hint' => 'Ícones de sites são o que você vê nas abas do seu navegador, barra de favoritos e quando você adiciona um site como um atalho em dispositivos móveis.',
-        'site_icon_helper' => 'O ícone deve ser quadrado com pelo menos 512px de largura e altura.',
+        'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.',
         'site_name' => 'Nome do site',
         'site_description' => 'Descrição do site',
         'submit' => 'Salvar',
diff --git a/modules/Admin/Language/pt/Breadcrumb.php b/modules/Admin/Language/pt/Breadcrumb.php
index d9400ca786ad22820c4bda166f6f11e61a0cb199..69915453e36c52d14ac93481f37266118e6abce0 100644
--- a/modules/Admin/Language/pt/Breadcrumb.php
+++ b/modules/Admin/Language/pt/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/pt/Episode.php b/modules/Admin/Language/pt/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/pt/Episode.php
+++ b/modules/Admin/Language/pt/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/pt/Person.php b/modules/Admin/Language/pt/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/pt/Person.php
+++ b/modules/Admin/Language/pt/Person.php
@@ -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',
diff --git a/modules/Admin/Language/pt/Podcast.php b/modules/Admin/Language/pt/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/pt/Podcast.php
+++ b/modules/Admin/Language/pt/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/pt/PodcastImport.php b/modules/Admin/Language/pt/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/pt/PodcastImport.php
+++ b/modules/Admin/Language/pt/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/pt/PodcastNavigation.php b/modules/Admin/Language/pt/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/pt/PodcastNavigation.php
+++ b/modules/Admin/Language/pt/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/pt/Settings.php b/modules/Admin/Language/pt/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/pt/Settings.php
+++ b/modules/Admin/Language/pt/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/ru/Breadcrumb.php b/modules/Admin/Language/ru/Breadcrumb.php
index 8f4438fff8ca3cb4299609a485bdf0101c308105..93dd4625b1c63846a5f94394c20402e35931acfd 100644
--- a/modules/Admin/Language/ru/Breadcrumb.php
+++ b/modules/Admin/Language/ru/Breadcrumb.php
@@ -26,6 +26,8 @@ return [
     'publish-edit' => 'редактировать публикацию',
     'unpublish' => 'снять с публикации',
     'delete' => 'удалить',
+    'deleted' => 'deleted',
+    'delete-permanently' => 'delete permanently',
     'fediverse' => 'Федивёрс',
     'block-lists' => 'список блокируемых',
     'users' => 'пользователи',
diff --git a/modules/Admin/Language/ru/Episode.php b/modules/Admin/Language/ru/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/ru/Episode.php
+++ b/modules/Admin/Language/ru/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/ru/Person.php b/modules/Admin/Language/ru/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/ru/Person.php
+++ b/modules/Admin/Language/ru/Person.php
@@ -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',
diff --git a/modules/Admin/Language/ru/Podcast.php b/modules/Admin/Language/ru/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/ru/Podcast.php
+++ b/modules/Admin/Language/ru/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/ru/PodcastImport.php b/modules/Admin/Language/ru/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/ru/PodcastImport.php
+++ b/modules/Admin/Language/ru/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/ru/PodcastNavigation.php b/modules/Admin/Language/ru/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/ru/PodcastNavigation.php
+++ b/modules/Admin/Language/ru/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/ru/Settings.php b/modules/Admin/Language/ru/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/ru/Settings.php
+++ b/modules/Admin/Language/ru/Settings.php
@@ -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',
diff --git a/modules/Admin/Language/sk/Admin.php b/modules/Admin/Language/sk/Admin.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e3942371fb59c6cbc560b147310907cedd3696f
--- /dev/null
+++ b/modules/Admin/Language/sk/Admin.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/Breadcrumb.php b/modules/Admin/Language/sk/Breadcrumb.php
new file mode 100644
index 0000000000000000000000000000000000000000..b6868c5c2095610520b637dba795e48925745575
--- /dev/null
+++ b/modules/Admin/Language/sk/Breadcrumb.php
@@ -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' => 'pridať',
+    'new' => 'new',
+    'edit' => 'upraviť',
+    'persons' => 'persons',
+    'publish' => 'zverejniť',
+    'publish-edit' => 'upraviť zverejnené',
+    'unpublish' => 'unpublish',
+    'delete' => 'vymazať',
+    'deleted' => 'vymazané',
+    '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',
+];
diff --git a/modules/Admin/Language/sk/Charts.php b/modules/Admin/Language/sk/Charts.php
new file mode 100644
index 0000000000000000000000000000000000000000..d9a75a1d8455cf9f83bb562a2988adc5e75a3674
--- /dev/null
+++ b/modules/Admin/Language/sk/Charts.php
@@ -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)',
+];
diff --git a/modules/Admin/Language/sk/Common.php b/modules/Admin/Language/sk/Common.php
new file mode 100644
index 0000000000000000000000000000000000000000..73e4cd69fe75413d751f38b4adabf6188024c048
--- /dev/null
+++ b/modules/Admin/Language/sk/Common.php
@@ -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' => 'Zavrieť',
+    'edit' => 'Upraviť',
+    'copy' => 'Copy',
+    'copied' => 'Copied!',
+    'home' => 'Domov',
+    'explicit' => 'Chúlostivé',
+    'powered_by' => 'Poháňané cez {castopod}',
+    'actions' => 'Actions',
+    'pageInfo' => 'Page {currentPage} out of {pageCount}',
+    'go_back' => 'Ísť späť',
+    'forms' => [
+        'editor' => [
+            'write' => 'Písať',
+            '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' => 'Nahrať súbor',
+        'remote_url' => 'Remote URL',
+    ],
+    'play_episode_button' => [
+        'play' => 'Prehrať',
+        'playing' => 'Prehrávané',
+    ],
+    'size_limit' => 'Size limit: {0}.',
+];
diff --git a/modules/Admin/Language/sk/Contributor.php b/modules/Admin/Language/sk/Contributor.php
new file mode 100644
index 0000000000000000000000000000000000000000..94072a9391a35d09f56dd5bfe9db299a3790038c
--- /dev/null
+++ b/modules/Admin/Language/sk/Contributor.php
@@ -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' => 'Pridať prispievateľa',
+    'add_contributor' => 'Pridať prispievateľa pre {0}',
+    'edit_role' => 'Upraviť rolu pre {0}',
+    'edit' => 'Upraviť',
+    'remove' => 'Odstrániť',
+    'list' => [
+        'username' => 'Užívateľské meno',
+        'role' => 'Rola',
+    ],
+    'form' => [
+        'user' => 'Užívateľ',
+        'user_placeholder' => 'Vybrať užívateľa…',
+        'role' => 'Rola',
+        'role_placeholder' => 'Vybrať jeho úlohu…',
+        'submit_add' => 'Pridať prispievateľa',
+        '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!",
+    ],
+];
diff --git a/modules/Admin/Language/sk/Countries.php b/modules/Admin/Language/sk/Countries.php
new file mode 100644
index 0000000000000000000000000000000000000000..3febee2613969fa83aca9279d89333271ecb06af
--- /dev/null
+++ b/modules/Admin/Language/sk/Countries.php
@@ -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' => 'Spojené Arabské Emiráty',
+    'AF' => 'Afghanistan',
+    'AG' => 'Antigua and Barbuda',
+    'AI' => 'Anguilla',
+    'AL' => 'Albánsko',
+    'AM' => 'Arménsko',
+    'AO' => 'Angola',
+    'AQ' => 'Antarktída',
+    'AR' => 'Argentína',
+    'AS' => 'Americká Samoa',
+    'AT' => 'Rakúsko',
+    'AU' => 'Austrália',
+    'AW' => 'Aruba',
+    'AX' => 'Ã…land Islands',
+    'AZ' => 'Azerbaijan',
+    'BA' => 'Bosna a Hercegovina',
+    'BB' => 'Barbados',
+    'BD' => 'Bangladéš',
+    'BE' => 'Belgicko',
+    'BF' => 'Burkina Faso',
+    'BG' => 'Bulharsko',
+    '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' => 'Vianočný Ostrov',
+    'CY' => 'Cyprus',
+    'CZ' => 'Česká republika',
+    'DE' => 'Nemecko',
+    'DJ' => 'Djibouti',
+    'DK' => 'Dánsko',
+    'DM' => 'Dominica',
+    'DO' => 'Dominikánska republika',
+    'DZ' => 'Alžírsko',
+    'EC' => 'Ekvádor',
+    'EE' => 'Estónsko',
+    'EG' => 'Egypt',
+    'EH' => 'Western Sahara',
+    'ER' => 'Eritrea',
+    'ES' => 'Å panielsko',
+    'ET' => 'Etiópia',
+    'FI' => 'Fínsko',
+    'FJ' => 'Fiji',
+    'FK' => 'Falklandské ostrovy (Malvíny)',
+    'FM' => 'Micronesia, Federated States of',
+    'FO' => 'Faroe Islands',
+    'FR' => 'Francúzsko',
+    'GA' => 'Gabon',
+    'GB' => 'United Kingdom',
+    'GD' => 'Grenada',
+    'GE' => 'Georgia',
+    'GF' => 'French Guiana',
+    'GG' => 'Guernsey',
+    'GH' => 'Ghana',
+    'GI' => 'Gibraltar',
+    'GL' => 'Grónsko',
+    'GM' => 'Gambia',
+    'GN' => 'Guinea',
+    'GP' => 'Guadeloupe',
+    'GQ' => 'Equatorial Guinea',
+    'GR' => 'Grécko',
+    'GS' => 'Južná Georgia a Južné Sandwichove ostrovy',
+    'GT' => 'Guatemala',
+    'GU' => 'Guam',
+    'GW' => 'Guinea-Bissau',
+    'GY' => 'Guyana',
+    'HK' => 'Hong Kong',
+    'HM' => 'Teritórium Heardovho ostrova a Macdonaldových ostrovov',
+    'HN' => 'Honduras',
+    'HR' => 'Chorvátsko',
+    'HT' => 'Haiti',
+    'HU' => 'Maďarsko',
+    'ID' => 'Indonézia',
+    'IE' => 'Írsko',
+    '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' => 'Libanon',
+    'LC' => 'Svätá Lucia',
+    'LI' => 'Lichtenštajnsko',
+    'LK' => 'Sri Lanka',
+    'LR' => 'Libéria',
+    'LS' => 'Lesotho',
+    'LT' => 'Litva',
+    'LU' => 'Luxembursko',
+    'LV' => 'Lotyšsko',
+    'LY' => 'Líbia',
+    'MA' => 'Maroko',
+    'MC' => 'Monako',
+    'MD' => 'Moldavská Republika',
+    'ME' => 'ÄŒierna Hora',
+    'MF' => 'Saint Martin (French part)',
+    'MG' => 'Madagaskar',
+    'MH' => 'Marshall Islands',
+    'MK' => 'Macedónsko-Bývalá Juhoslovanská Republika',
+    'ML' => 'Mali',
+    'MM' => 'Mjanmarsko',
+    'MN' => 'Mongolsko',
+    'MO' => 'Macao',
+    'MP' => 'Northern Mariana Islands',
+    'MQ' => 'Martinique',
+    'MR' => 'Mauritania',
+    'MS' => 'Montserrat',
+    'MT' => 'Malta',
+    'MU' => 'Mauritius',
+    'MV' => 'Maldives',
+    'MW' => 'Malawi',
+    'MX' => 'Mexiko',
+    'MY' => 'Malajzia',
+    'MZ' => 'Mozambique',
+    'N/A' => 'Not Applicable (local IP…)',
+    'NA' => 'Namibia',
+    'NC' => 'New Caledonia',
+    'NE' => 'Niger',
+    'NF' => 'Norfolk Island',
+    'NG' => 'Nigéria',
+    'NI' => 'Nikaragua',
+    'NL' => 'Holandsko',
+    'NO' => 'Nórsko',
+    'NP' => 'Nepál',
+    'NR' => 'Nauru',
+    'NU' => 'Niue',
+    'NZ' => 'Nový Zéland',
+    'OM' => 'Omán',
+    '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' => 'Slovinsko',
+    'SJ' => 'Svalbard and Jan Mayen',
+    'SK' => 'Slovensko',
+    'SL' => 'Sierra Leone',
+    'SM' => 'San Marino',
+    'SN' => 'Senegal',
+    'SO' => 'Somálsko',
+    'SR' => 'Suriname',
+    'SS' => 'Južný Sudán',
+    'ST' => 'Sao Tome and Principe',
+    'SV' => 'Salvádor',
+    'SX' => 'Sint Maarten (Dutch part)',
+    'SY' => 'Syrian Arab Republic',
+    'SZ' => 'Svazijsko',
+    'TC' => 'Turks and Caicos Islands',
+    'TD' => 'Chad',
+    'TF' => 'Francúzske južné územia',
+    'TG' => 'Togo',
+    'TH' => 'Thajsko',
+    'TJ' => 'Tadžikistan',
+    'TK' => 'Tokelau',
+    'TL' => 'Timor-Leste',
+    'TM' => 'Turkménsko',
+    'TN' => 'Tunisko',
+    'TO' => 'Tonga',
+    'TR' => 'Turkey',
+    'TT' => 'Trinidad and Tobago',
+    'TV' => 'Tuvalu',
+    'TW' => 'Taiwan, provincia Číny',
+    'TZ' => 'Tanzánia',
+    'UA' => 'Ukraina',
+    'UG' => 'Uganda',
+    'UM' => 'United States Minor Outlying Islands',
+    'US' => 'Spojené Štáty',
+    'UY' => 'Uruguaj',
+    'UZ' => 'Uzbekistán',
+    'VA' => 'Svätá Stolica (Vatikánsky Mestský Štát)',
+    'VC' => 'Svätý Vincent a Grenadíny',
+    'VE' => 'Venezuela, Bolívarovská republika',
+    'VG' => 'Britské Panenské ostrovy',
+    'VI' => 'Americké Panenské ostrovy',
+    'VN' => 'Vietnam',
+    'VU' => 'Vanuatu',
+    'WF' => 'Wallis and Futuna',
+    'WS' => 'Samoa',
+    'YE' => 'Jemen',
+    'YT' => 'Mayotte',
+    'ZA' => 'Južná Afrika',
+    'ZM' => 'Zambia',
+    'ZW' => 'Zimbabwe',
+];
diff --git a/modules/Admin/Language/sk/Episode.php b/modules/Admin/Language/sk/Episode.php
new file mode 100644
index 0000000000000000000000000000000000000000..3eb42c7b3d77c0813a88f8615536e25e5a06975c
--- /dev/null
+++ b/modules/Admin/Language/sk/Episode.php
@@ -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' => 'Viditeľnosť',
+        'comments' => 'Komentáre',
+        'actions' => 'Úkony',
+    ],
+    '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' => 'Zvukový súbor',
+        'audio_file_hint' => 'Vyberte zvukový súbor .mp3, alebo .m4a.',
+        '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' => 'Epizóda',
+        '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' => 'Popis',
+        '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' => 'Lokácia',
+        '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' => 'Stiahnuť prepis',
+        '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' => 'Vytvoriť epizódu',
+        'submit_edit' => 'Uložiť epizódu',
+    ],
+    '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',
+    ],
+];
diff --git a/modules/Admin/Language/sk/EpisodeNavigation.php b/modules/Admin/Language/sk/EpisodeNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..1406e3010ef4383a6d8ef32ff88497e7bdeb9fa4
--- /dev/null
+++ b/modules/Admin/Language/sk/EpisodeNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/Fediverse.php b/modules/Admin/Language/sk/Fediverse.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e4ca66d89cd7d6191d36c0325647b0b3932ac6e
--- /dev/null
+++ b/modules/Admin/Language/sk/Fediverse.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Home.php b/modules/Admin/Language/sk/Home.php
new file mode 100644
index 0000000000000000000000000000000000000000..3ff4c04dc8a8f2576b3e04638184ae375f488a54
--- /dev/null
+++ b/modules/Admin/Language/sk/Home.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/Install.php b/modules/Admin/Language/sk/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..36e373a2858779a2deb77f1cbc6f629dda223f19
--- /dev/null
+++ b/modules/Admin/Language/sk/Install.php
@@ -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.",
+    ],
+];
diff --git a/modules/Admin/Language/sk/MyAccount.php b/modules/Admin/Language/sk/MyAccount.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ebbb30ef70a5e3e86a9bab867f7c732ce79db26
--- /dev/null
+++ b/modules/Admin/Language/sk/MyAccount.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Navigation.php b/modules/Admin/Language/sk/Navigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..68d4609d5d94a5770f237ee23207ad47d1262c70
--- /dev/null
+++ b/modules/Admin/Language/sk/Navigation.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Page.php b/modules/Admin/Language/sk/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..b6f49de57496ec4830246641f0bf8897e7c9a2f9
--- /dev/null
+++ b/modules/Admin/Language/sk/Page.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Pager.php b/modules/Admin/Language/sk/Pager.php
new file mode 100644
index 0000000000000000000000000000000000000000..e25ee638108dba1e0bfa602b45969381dd8ebd57
--- /dev/null
+++ b/modules/Admin/Language/sk/Pager.php
@@ -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.',
+];
diff --git a/modules/Admin/Language/sk/Person.php b/modules/Admin/Language/sk/Person.php
new file mode 100644
index 0000000000000000000000000000000000000000..a652be9fda1f4aeb73bcb01c35f13a452a6d4741
--- /dev/null
+++ b/modules/Admin/Language/sk/Person.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/Platforms.php b/modules/Admin/Language/sk/Platforms.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab17d5999b1626535499464902c12f5c3bcb7aa8
--- /dev/null
+++ b/modules/Admin/Language/sk/Platforms.php
@@ -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',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Podcast.php b/modules/Admin/Language/sk/Podcast.php
new file mode 100644
index 0000000000000000000000000000000000000000..2561b8766768e5ff907834836905bea73ab5ec0c
--- /dev/null
+++ b/modules/Admin/Language/sk/Podcast.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/PodcastImport.php b/modules/Admin/Language/sk/PodcastImport.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9
--- /dev/null
+++ b/modules/Admin/Language/sk/PodcastImport.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/PodcastNavigation.php b/modules/Admin/Language/sk/PodcastNavigation.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69
--- /dev/null
+++ b/modules/Admin/Language/sk/PodcastNavigation.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/Settings.php b/modules/Admin/Language/sk/Settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..345976be7f307ddd34bb7b3cf1d5a95d62935e6e
--- /dev/null
+++ b/modules/Admin/Language/sk/Settings.php
@@ -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!',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Soundbite.php b/modules/Admin/Language/sk/Soundbite.php
new file mode 100644
index 0000000000000000000000000000000000000000..a3f828fe09fa68f902251e7438bb54a2727ac8cb
--- /dev/null
+++ b/modules/Admin/Language/sk/Soundbite.php
@@ -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',
+];
diff --git a/modules/Admin/Language/sk/User.php b/modules/Admin/Language/sk/User.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b2e478bf7b6c5d97364e6888e9724b8fa24188f
--- /dev/null
+++ b/modules/Admin/Language/sk/User.php
@@ -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.',
+    ],
+];
diff --git a/modules/Admin/Language/sk/Validation.php b/modules/Admin/Language/sk/Validation.php
new file mode 100644
index 0000000000000000000000000000000000000000..750b19688f973df85a6ebdc861745225b28d0c54
--- /dev/null
+++ b/modules/Admin/Language/sk/Validation.php
@@ -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/).',
+];
diff --git a/modules/Admin/Language/sk/VideoClip.php b/modules/Admin/Language/sk/VideoClip.php
new file mode 100644
index 0000000000000000000000000000000000000000..638de697bba7f2c0fbc240dace9dd73bfeb77615
--- /dev/null
+++ b/modules/Admin/Language/sk/VideoClip.php
@@ -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)',
+    ],
+];
diff --git a/modules/Admin/Language/sv/Breadcrumb.php b/modules/Admin/Language/sv/Breadcrumb.php
index d9400ca786ad22820c4bda166f6f11e61a0cb199..69915453e36c52d14ac93481f37266118e6abce0 100644
--- a/modules/Admin/Language/sv/Breadcrumb.php
+++ b/modules/Admin/Language/sv/Breadcrumb.php
@@ -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',
diff --git a/modules/Admin/Language/sv/Episode.php b/modules/Admin/Language/sv/Episode.php
index 82ed40dc7546dc79a09da219c1c3ed6c2fb37125..e82ff8ca8b5b8ba3696f0f66d5f25cf67d1d69ef 100644
--- a/modules/Admin/Language/sv/Episode.php
+++ b/modules/Admin/Language/sv/Episode.php
@@ -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',
     ],
diff --git a/modules/Admin/Language/sv/Person.php b/modules/Admin/Language/sv/Person.php
index fa9bba211896b6ff9670ca46df0e36667e5a5af3..a652be9fda1f4aeb73bcb01c35f13a452a6d4741 100644
--- a/modules/Admin/Language/sv/Person.php
+++ b/modules/Admin/Language/sv/Person.php
@@ -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',
diff --git a/modules/Admin/Language/sv/Podcast.php b/modules/Admin/Language/sv/Podcast.php
index 67335c104face3c7339f7a274606553ad744e8ba..2561b8766768e5ff907834836905bea73ab5ec0c 100644
--- a/modules/Admin/Language/sv/Podcast.php
+++ b/modules/Admin/Language/sv/Podcast.php
@@ -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})',
diff --git a/modules/Admin/Language/sv/PodcastImport.php b/modules/Admin/Language/sv/PodcastImport.php
index 7c3ef67d1f998b7f3d7e5d658d2ae7b99851f4f5..e9cfc1c4ceb8cc1efcac98540a65a5d8481716e9 100644
--- a/modules/Admin/Language/sv/PodcastImport.php
+++ b/modules/Admin/Language/sv/PodcastImport.php
@@ -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.',
diff --git a/modules/Admin/Language/sv/PodcastNavigation.php b/modules/Admin/Language/sv/PodcastNavigation.php
index b619573154735a9370f5c222b74bf39acc09c8c8..f9a75b1a9eecf125e07e0a15c66f0aee28bd8c69 100644
--- a/modules/Admin/Language/sv/PodcastNavigation.php
+++ b/modules/Admin/Language/sv/PodcastNavigation.php
@@ -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',
diff --git a/modules/Admin/Language/sv/Settings.php b/modules/Admin/Language/sv/Settings.php
index 0d6368ccd2ee625e9cf6e7b718e9c235672d3358..345976be7f307ddd34bb7b3cf1d5a95d62935e6e 100644
--- a/modules/Admin/Language/sv/Settings.php
+++ b/modules/Admin/Language/sv/Settings.php
@@ -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',
diff --git a/modules/Install/Language/fa/Install.php b/modules/Install/Language/fa/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f66ef118fd188c73e37e5009c5cdd22c7fdd3f2
--- /dev/null
+++ b/modules/Install/Language/fa/Install.php
@@ -0,0 +1,62 @@
+<?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' => 'Castopod installer',
+    '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.",
+    ],
+];
diff --git a/modules/Install/Language/gd/Install.php b/modules/Install/Language/gd/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f66ef118fd188c73e37e5009c5cdd22c7fdd3f2
--- /dev/null
+++ b/modules/Install/Language/gd/Install.php
@@ -0,0 +1,62 @@
+<?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' => 'Castopod installer',
+    '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.",
+    ],
+];
diff --git a/modules/Install/Language/sk/Install.php b/modules/Install/Language/sk/Install.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f66ef118fd188c73e37e5009c5cdd22c7fdd3f2
--- /dev/null
+++ b/modules/Install/Language/sk/Install.php
@@ -0,0 +1,62 @@
+<?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' => 'Castopod installer',
+    '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.",
+    ],
+];