From 5564f77502035111e1c1ea81a41e820cf9a60119 Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Thu, 14 Apr 2022 13:11:07 +0000
Subject: [PATCH] chore: new Crowdin updates

---
 app/Language/ar/Comment.php                   |   4 +-
 app/Language/ar/Fediverse.php                 |   2 +-
 app/Language/ar/Home.php                      |   6 +-
 app/Language/ar/Podcast.php                   |  10 +-
 app/Language/ar/Post.php                      |   4 +-
 app/Language/br/Comment.php                   |  17 +-
 app/Language/br/Common.php                    |   2 +-
 app/Language/br/Post.php                      |  15 +-
 app/Language/nn-NO/Comment.php                |  34 ++
 app/Language/nn-NO/Common.php                 |  29 +
 app/Language/nn-NO/Episode.php                |  33 ++
 app/Language/nn-NO/Fediverse.php              |  37 ++
 app/Language/nn-NO/Home.php                   |  20 +
 app/Language/nn-NO/Page.php                   |  17 +
 app/Language/nn-NO/Podcast.php                |  53 ++
 app/Language/nn-NO/Post.php                   |  40 ++
 app/Language/oc/Comment.php                   |  34 ++
 app/Language/oc/Common.php                    |  29 +
 app/Language/oc/Episode.php                   |  33 ++
 app/Language/oc/Fediverse.php                 |  37 ++
 app/Language/oc/Home.php                      |  20 +
 app/Language/oc/Page.php                      |  17 +
 app/Language/oc/Podcast.php                   |  53 ++
 app/Language/oc/Post.php                      |  40 ++
 app/Language/pt-BR/Comment.php                |  32 +-
 app/Language/pt-BR/Episode.php                |  32 +-
 app/Language/pt/Comment.php                   |  34 ++
 app/Language/pt/Common.php                    |  29 +
 app/Language/pt/Episode.php                   |  33 ++
 app/Language/pt/Fediverse.php                 |  37 ++
 app/Language/pt/Home.php                      |  20 +
 app/Language/pt/Page.php                      |  17 +
 app/Language/pt/Podcast.php                   |  53 ++
 app/Language/pt/Post.php                      |  40 ++
 docs/src/ar/getting-started/install.md        | 162 ++++++
 docs/src/ar/getting-started/security.md       |  26 +
 docs/src/ar/getting-started/update.md         |  93 ++++
 docs/src/ar/index.md                          | 216 ++++++++
 docs/src/br/getting-started/install.md        | 162 ++++++
 docs/src/br/getting-started/security.md       |  26 +
 docs/src/br/getting-started/update.md         |  93 ++++
 docs/src/br/index.md                          | 216 ++++++++
 docs/src/de/getting-started/install.md        | 162 ++++++
 docs/src/de/getting-started/security.md       |  26 +
 docs/src/de/getting-started/update.md         |  93 ++++
 docs/src/de/index.md                          | 219 ++++++++
 docs/src/el/getting-started/install.md        | 162 ++++++
 docs/src/el/getting-started/security.md       |  26 +
 docs/src/el/getting-started/update.md         |  93 ++++
 docs/src/el/index.md                          | 216 ++++++++
 docs/src/es/getting-started/install.md        | 162 ++++++
 docs/src/es/getting-started/security.md       |  26 +
 docs/src/es/getting-started/update.md         |  93 ++++
 docs/src/es/index.md                          | 216 ++++++++
 docs/src/fr/getting-started/install.md        | 169 ++++++
 docs/src/fr/getting-started/security.md       |  26 +
 docs/src/fr/getting-started/update.md         |  96 ++++
 docs/src/fr/index.md                          | 219 ++++++++
 docs/src/id/getting-started/install.md        | 162 ++++++
 docs/src/id/getting-started/security.md       |  26 +
 docs/src/id/getting-started/update.md         |  93 ++++
 docs/src/id/index.md                          | 216 ++++++++
 docs/src/it/getting-started/install.md        | 162 ++++++
 docs/src/it/getting-started/security.md       |  26 +
 docs/src/it/getting-started/update.md         |  93 ++++
 docs/src/it/index.md                          | 216 ++++++++
 docs/src/nl/getting-started/install.md        | 162 ++++++
 docs/src/nl/getting-started/security.md       |  26 +
 docs/src/nl/getting-started/update.md         |  93 ++++
 docs/src/nl/index.md                          | 216 ++++++++
 docs/src/nn-NO/getting-started/install.md     | 164 ++++++
 docs/src/nn-NO/getting-started/security.md    |  25 +
 docs/src/nn-NO/getting-started/update.md      |  89 ++++
 docs/src/nn-NO/index.md                       | 219 ++++++++
 docs/src/oc/getting-started/install.md        | 162 ++++++
 docs/src/oc/getting-started/security.md       |  26 +
 docs/src/oc/getting-started/update.md         |  93 ++++
 docs/src/oc/index.md                          | 216 ++++++++
 docs/src/pl/getting-started/install.md        | 162 ++++++
 docs/src/pl/getting-started/security.md       |  26 +
 docs/src/pl/getting-started/update.md         |  93 ++++
 docs/src/pl/index.md                          | 216 ++++++++
 docs/src/pt-BR/getting-started/install.md     | 166 ++++++
 docs/src/pt-BR/getting-started/security.md    |  28 +
 docs/src/pt-BR/getting-started/update.md      |  95 ++++
 docs/src/pt-BR/index.md                       | 219 ++++++++
 docs/src/pt/getting-started/install.md        | 162 ++++++
 docs/src/pt/getting-started/security.md       |  26 +
 docs/src/pt/getting-started/update.md         |  93 ++++
 docs/src/pt/index.md                          | 216 ++++++++
 docs/src/ru/getting-started/install.md        | 162 ++++++
 docs/src/ru/getting-started/security.md       |  26 +
 docs/src/ru/getting-started/update.md         |  93 ++++
 docs/src/ru/index.md                          | 216 ++++++++
 docs/src/sv/getting-started/install.md        | 162 ++++++
 docs/src/sv/getting-started/security.md       |  26 +
 docs/src/sv/getting-started/update.md         |  93 ++++
 docs/src/sv/index.md                          | 216 ++++++++
 modules/Admin/Language/ar/Breadcrumb.php      |   6 +-
 modules/Admin/Language/ar/Common.php          |   8 +-
 modules/Admin/Language/ar/Countries.php       |  32 +-
 modules/Admin/Language/ar/Episode.php         |  44 +-
 .../Admin/Language/ar/EpisodeNavigation.php   |   2 +-
 modules/Admin/Language/ar/Install.php         |   2 +-
 modules/Admin/Language/ar/Navigation.php      |   4 +-
 modules/Admin/Language/ar/Page.php            |   2 +-
 modules/Admin/Language/ar/Person.php          |   2 +-
 modules/Admin/Language/ar/Podcast.php         |   6 +-
 modules/Admin/Language/br/Breadcrumb.php      |   2 +-
 modules/Admin/Language/br/Charts.php          |  50 +-
 modules/Admin/Language/br/Common.php          |  58 +-
 modules/Admin/Language/br/Contributor.php     |  28 +-
 modules/Admin/Language/br/Countries.php       | 326 ++++++------
 modules/Admin/Language/br/Episode.php         | 231 ++++----
 .../Admin/Language/br/EpisodeNavigation.php   |  22 +-
 modules/Admin/Language/br/Fediverse.php       |  28 +-
 modules/Admin/Language/br/Podcast.php         |  42 +-
 modules/Admin/Language/el/Charts.php          |  50 +-
 modules/Admin/Language/el/Common.php          |  58 +-
 modules/Admin/Language/el/Contributor.php     |  38 +-
 modules/Admin/Language/el/Countries.php       | 500 +++++++++---------
 modules/Admin/Language/el/Episode.php         | 104 ++--
 modules/Admin/Language/es/Episode.php         |  24 +-
 modules/Admin/Language/fr/Fediverse.php       |   2 +-
 modules/Admin/Language/nn-NO/Admin.php        |  15 +
 modules/Admin/Language/nn-NO/Breadcrumb.php   |  48 ++
 modules/Admin/Language/nn-NO/Charts.php       |  38 ++
 modules/Admin/Language/nn-NO/Common.php       |  49 ++
 modules/Admin/Language/nn-NO/Contributor.php  |  41 ++
 modules/Admin/Language/nn-NO/Countries.php    | 264 +++++++++
 modules/Admin/Language/nn-NO/Episode.php      | 165 ++++++
 .../Language/nn-NO/EpisodeNavigation.php      |  23 +
 modules/Admin/Language/nn-NO/Fediverse.php    |  32 ++
 modules/Admin/Language/nn-NO/Home.php         |  14 +
 modules/Admin/Language/nn-NO/Install.php      |  61 +++
 modules/Admin/Language/nn-NO/MyAccount.php    |  18 +
 modules/Admin/Language/nn-NO/Navigation.php   |  41 ++
 modules/Admin/Language/nn-NO/Page.php         |  30 ++
 modules/Admin/Language/nn-NO/Pager.php        |  21 +
 modules/Admin/Language/nn-NO/Person.php       |  65 +++
 modules/Admin/Language/nn-NO/Platforms.php    |  30 ++
 modules/Admin/Language/nn-NO/Podcast.php      | 243 +++++++++
 .../Admin/Language/nn-NO/PodcastImport.php    |  37 ++
 .../Language/nn-NO/PodcastNavigation.php      |  35 ++
 modules/Admin/Language/nn-NO/Settings.php     |  56 ++
 modules/Admin/Language/nn-NO/Soundbite.php    |  31 ++
 modules/Admin/Language/nn-NO/User.php         |  54 ++
 modules/Admin/Language/nn-NO/Validation.php   |  18 +
 modules/Admin/Language/nn-NO/VideoClip.php    |  72 +++
 modules/Admin/Language/oc/Admin.php           |  15 +
 modules/Admin/Language/oc/Breadcrumb.php      |  48 ++
 modules/Admin/Language/oc/Charts.php          |  38 ++
 modules/Admin/Language/oc/Common.php          |  49 ++
 modules/Admin/Language/oc/Contributor.php     |  41 ++
 modules/Admin/Language/oc/Countries.php       | 264 +++++++++
 modules/Admin/Language/oc/Episode.php         | 165 ++++++
 .../Admin/Language/oc/EpisodeNavigation.php   |  23 +
 modules/Admin/Language/oc/Fediverse.php       |  32 ++
 modules/Admin/Language/oc/Home.php            |  14 +
 modules/Admin/Language/oc/Install.php         |  61 +++
 modules/Admin/Language/oc/MyAccount.php       |  18 +
 modules/Admin/Language/oc/Navigation.php      |  41 ++
 modules/Admin/Language/oc/Page.php            |  30 ++
 modules/Admin/Language/oc/Pager.php           |  21 +
 modules/Admin/Language/oc/Person.php          |  65 +++
 modules/Admin/Language/oc/Platforms.php       |  30 ++
 modules/Admin/Language/oc/Podcast.php         | 243 +++++++++
 modules/Admin/Language/oc/PodcastImport.php   |  37 ++
 .../Admin/Language/oc/PodcastNavigation.php   |  35 ++
 modules/Admin/Language/oc/Settings.php        |  56 ++
 modules/Admin/Language/oc/Soundbite.php       |  31 ++
 modules/Admin/Language/oc/User.php            |  54 ++
 modules/Admin/Language/oc/Validation.php      |  18 +
 modules/Admin/Language/oc/VideoClip.php       |  72 +++
 modules/Admin/Language/pt/Admin.php           |  15 +
 modules/Admin/Language/pt/Breadcrumb.php      |  48 ++
 modules/Admin/Language/pt/Charts.php          |  38 ++
 modules/Admin/Language/pt/Common.php          |  49 ++
 modules/Admin/Language/pt/Contributor.php     |  41 ++
 modules/Admin/Language/pt/Countries.php       | 264 +++++++++
 modules/Admin/Language/pt/Episode.php         | 165 ++++++
 .../Admin/Language/pt/EpisodeNavigation.php   |  23 +
 modules/Admin/Language/pt/Fediverse.php       |  32 ++
 modules/Admin/Language/pt/Home.php            |  14 +
 modules/Admin/Language/pt/Install.php         |  61 +++
 modules/Admin/Language/pt/MyAccount.php       |  18 +
 modules/Admin/Language/pt/Navigation.php      |  41 ++
 modules/Admin/Language/pt/Page.php            |  30 ++
 modules/Admin/Language/pt/Pager.php           |  21 +
 modules/Admin/Language/pt/Person.php          |  65 +++
 modules/Admin/Language/pt/Platforms.php       |  30 ++
 modules/Admin/Language/pt/Podcast.php         | 243 +++++++++
 modules/Admin/Language/pt/PodcastImport.php   |  37 ++
 .../Admin/Language/pt/PodcastNavigation.php   |  35 ++
 modules/Admin/Language/pt/Settings.php        |  56 ++
 modules/Admin/Language/pt/Soundbite.php       |  31 ++
 modules/Admin/Language/pt/User.php            |  54 ++
 modules/Admin/Language/pt/Validation.php      |  18 +
 modules/Admin/Language/pt/VideoClip.php       |  72 +++
 modules/Install/Language/el/Install.php       |  54 +-
 modules/Install/Language/nn-NO/Install.php    |  62 +++
 modules/Install/Language/oc/Install.php       |  62 +++
 modules/Install/Language/pt/Install.php       |  62 +++
 203 files changed, 14389 insertions(+), 917 deletions(-)
 create mode 100644 app/Language/nn-NO/Comment.php
 create mode 100644 app/Language/nn-NO/Common.php
 create mode 100644 app/Language/nn-NO/Episode.php
 create mode 100644 app/Language/nn-NO/Fediverse.php
 create mode 100644 app/Language/nn-NO/Home.php
 create mode 100644 app/Language/nn-NO/Page.php
 create mode 100644 app/Language/nn-NO/Podcast.php
 create mode 100644 app/Language/nn-NO/Post.php
 create mode 100644 app/Language/oc/Comment.php
 create mode 100644 app/Language/oc/Common.php
 create mode 100644 app/Language/oc/Episode.php
 create mode 100644 app/Language/oc/Fediverse.php
 create mode 100644 app/Language/oc/Home.php
 create mode 100644 app/Language/oc/Page.php
 create mode 100644 app/Language/oc/Podcast.php
 create mode 100644 app/Language/oc/Post.php
 create mode 100644 app/Language/pt/Comment.php
 create mode 100644 app/Language/pt/Common.php
 create mode 100644 app/Language/pt/Episode.php
 create mode 100644 app/Language/pt/Fediverse.php
 create mode 100644 app/Language/pt/Home.php
 create mode 100644 app/Language/pt/Page.php
 create mode 100644 app/Language/pt/Podcast.php
 create mode 100644 app/Language/pt/Post.php
 create mode 100644 docs/src/ar/getting-started/install.md
 create mode 100644 docs/src/ar/getting-started/security.md
 create mode 100644 docs/src/ar/getting-started/update.md
 create mode 100644 docs/src/ar/index.md
 create mode 100644 docs/src/br/getting-started/install.md
 create mode 100644 docs/src/br/getting-started/security.md
 create mode 100644 docs/src/br/getting-started/update.md
 create mode 100644 docs/src/br/index.md
 create mode 100644 docs/src/de/getting-started/install.md
 create mode 100644 docs/src/de/getting-started/security.md
 create mode 100644 docs/src/de/getting-started/update.md
 create mode 100644 docs/src/de/index.md
 create mode 100644 docs/src/el/getting-started/install.md
 create mode 100644 docs/src/el/getting-started/security.md
 create mode 100644 docs/src/el/getting-started/update.md
 create mode 100644 docs/src/el/index.md
 create mode 100644 docs/src/es/getting-started/install.md
 create mode 100644 docs/src/es/getting-started/security.md
 create mode 100644 docs/src/es/getting-started/update.md
 create mode 100644 docs/src/es/index.md
 create mode 100644 docs/src/fr/getting-started/install.md
 create mode 100644 docs/src/fr/getting-started/security.md
 create mode 100644 docs/src/fr/getting-started/update.md
 create mode 100644 docs/src/fr/index.md
 create mode 100644 docs/src/id/getting-started/install.md
 create mode 100644 docs/src/id/getting-started/security.md
 create mode 100644 docs/src/id/getting-started/update.md
 create mode 100644 docs/src/id/index.md
 create mode 100644 docs/src/it/getting-started/install.md
 create mode 100644 docs/src/it/getting-started/security.md
 create mode 100644 docs/src/it/getting-started/update.md
 create mode 100644 docs/src/it/index.md
 create mode 100644 docs/src/nl/getting-started/install.md
 create mode 100644 docs/src/nl/getting-started/security.md
 create mode 100644 docs/src/nl/getting-started/update.md
 create mode 100644 docs/src/nl/index.md
 create mode 100644 docs/src/nn-NO/getting-started/install.md
 create mode 100644 docs/src/nn-NO/getting-started/security.md
 create mode 100644 docs/src/nn-NO/getting-started/update.md
 create mode 100644 docs/src/nn-NO/index.md
 create mode 100644 docs/src/oc/getting-started/install.md
 create mode 100644 docs/src/oc/getting-started/security.md
 create mode 100644 docs/src/oc/getting-started/update.md
 create mode 100644 docs/src/oc/index.md
 create mode 100644 docs/src/pl/getting-started/install.md
 create mode 100644 docs/src/pl/getting-started/security.md
 create mode 100644 docs/src/pl/getting-started/update.md
 create mode 100644 docs/src/pl/index.md
 create mode 100644 docs/src/pt-BR/getting-started/install.md
 create mode 100644 docs/src/pt-BR/getting-started/security.md
 create mode 100644 docs/src/pt-BR/getting-started/update.md
 create mode 100644 docs/src/pt-BR/index.md
 create mode 100644 docs/src/pt/getting-started/install.md
 create mode 100644 docs/src/pt/getting-started/security.md
 create mode 100644 docs/src/pt/getting-started/update.md
 create mode 100644 docs/src/pt/index.md
 create mode 100644 docs/src/ru/getting-started/install.md
 create mode 100644 docs/src/ru/getting-started/security.md
 create mode 100644 docs/src/ru/getting-started/update.md
 create mode 100644 docs/src/ru/index.md
 create mode 100644 docs/src/sv/getting-started/install.md
 create mode 100644 docs/src/sv/getting-started/security.md
 create mode 100644 docs/src/sv/getting-started/update.md
 create mode 100644 docs/src/sv/index.md
 create mode 100644 modules/Admin/Language/nn-NO/Admin.php
 create mode 100644 modules/Admin/Language/nn-NO/Breadcrumb.php
 create mode 100644 modules/Admin/Language/nn-NO/Charts.php
 create mode 100644 modules/Admin/Language/nn-NO/Common.php
 create mode 100644 modules/Admin/Language/nn-NO/Contributor.php
 create mode 100644 modules/Admin/Language/nn-NO/Countries.php
 create mode 100644 modules/Admin/Language/nn-NO/Episode.php
 create mode 100644 modules/Admin/Language/nn-NO/EpisodeNavigation.php
 create mode 100644 modules/Admin/Language/nn-NO/Fediverse.php
 create mode 100644 modules/Admin/Language/nn-NO/Home.php
 create mode 100644 modules/Admin/Language/nn-NO/Install.php
 create mode 100644 modules/Admin/Language/nn-NO/MyAccount.php
 create mode 100644 modules/Admin/Language/nn-NO/Navigation.php
 create mode 100644 modules/Admin/Language/nn-NO/Page.php
 create mode 100644 modules/Admin/Language/nn-NO/Pager.php
 create mode 100644 modules/Admin/Language/nn-NO/Person.php
 create mode 100644 modules/Admin/Language/nn-NO/Platforms.php
 create mode 100644 modules/Admin/Language/nn-NO/Podcast.php
 create mode 100644 modules/Admin/Language/nn-NO/PodcastImport.php
 create mode 100644 modules/Admin/Language/nn-NO/PodcastNavigation.php
 create mode 100644 modules/Admin/Language/nn-NO/Settings.php
 create mode 100644 modules/Admin/Language/nn-NO/Soundbite.php
 create mode 100644 modules/Admin/Language/nn-NO/User.php
 create mode 100644 modules/Admin/Language/nn-NO/Validation.php
 create mode 100644 modules/Admin/Language/nn-NO/VideoClip.php
 create mode 100644 modules/Admin/Language/oc/Admin.php
 create mode 100644 modules/Admin/Language/oc/Breadcrumb.php
 create mode 100644 modules/Admin/Language/oc/Charts.php
 create mode 100644 modules/Admin/Language/oc/Common.php
 create mode 100644 modules/Admin/Language/oc/Contributor.php
 create mode 100644 modules/Admin/Language/oc/Countries.php
 create mode 100644 modules/Admin/Language/oc/Episode.php
 create mode 100644 modules/Admin/Language/oc/EpisodeNavigation.php
 create mode 100644 modules/Admin/Language/oc/Fediverse.php
 create mode 100644 modules/Admin/Language/oc/Home.php
 create mode 100644 modules/Admin/Language/oc/Install.php
 create mode 100644 modules/Admin/Language/oc/MyAccount.php
 create mode 100644 modules/Admin/Language/oc/Navigation.php
 create mode 100644 modules/Admin/Language/oc/Page.php
 create mode 100644 modules/Admin/Language/oc/Pager.php
 create mode 100644 modules/Admin/Language/oc/Person.php
 create mode 100644 modules/Admin/Language/oc/Platforms.php
 create mode 100644 modules/Admin/Language/oc/Podcast.php
 create mode 100644 modules/Admin/Language/oc/PodcastImport.php
 create mode 100644 modules/Admin/Language/oc/PodcastNavigation.php
 create mode 100644 modules/Admin/Language/oc/Settings.php
 create mode 100644 modules/Admin/Language/oc/Soundbite.php
 create mode 100644 modules/Admin/Language/oc/User.php
 create mode 100644 modules/Admin/Language/oc/Validation.php
 create mode 100644 modules/Admin/Language/oc/VideoClip.php
 create mode 100644 modules/Admin/Language/pt/Admin.php
 create mode 100644 modules/Admin/Language/pt/Breadcrumb.php
 create mode 100644 modules/Admin/Language/pt/Charts.php
 create mode 100644 modules/Admin/Language/pt/Common.php
 create mode 100644 modules/Admin/Language/pt/Contributor.php
 create mode 100644 modules/Admin/Language/pt/Countries.php
 create mode 100644 modules/Admin/Language/pt/Episode.php
 create mode 100644 modules/Admin/Language/pt/EpisodeNavigation.php
 create mode 100644 modules/Admin/Language/pt/Fediverse.php
 create mode 100644 modules/Admin/Language/pt/Home.php
 create mode 100644 modules/Admin/Language/pt/Install.php
 create mode 100644 modules/Admin/Language/pt/MyAccount.php
 create mode 100644 modules/Admin/Language/pt/Navigation.php
 create mode 100644 modules/Admin/Language/pt/Page.php
 create mode 100644 modules/Admin/Language/pt/Pager.php
 create mode 100644 modules/Admin/Language/pt/Person.php
 create mode 100644 modules/Admin/Language/pt/Platforms.php
 create mode 100644 modules/Admin/Language/pt/Podcast.php
 create mode 100644 modules/Admin/Language/pt/PodcastImport.php
 create mode 100644 modules/Admin/Language/pt/PodcastNavigation.php
 create mode 100644 modules/Admin/Language/pt/Settings.php
 create mode 100644 modules/Admin/Language/pt/Soundbite.php
 create mode 100644 modules/Admin/Language/pt/User.php
 create mode 100644 modules/Admin/Language/pt/Validation.php
 create mode 100644 modules/Admin/Language/pt/VideoClip.php
 create mode 100644 modules/Install/Language/nn-NO/Install.php
 create mode 100644 modules/Install/Language/oc/Install.php
 create mode 100644 modules/Install/Language/pt/Install.php

diff --git a/app/Language/ar/Comment.php b/app/Language/ar/Comment.php
index b18780b7b0..c90984a1a4 100644
--- a/app/Language/ar/Comment.php
+++ b/app/Language/ar/Comment.php
@@ -9,11 +9,11 @@ declare(strict_types=1);
  */
 
 return [
-    'title' => "{actorDisplayName}'s comment for {episodeTitle}",
+    'title' => "تعليق {actorDisplayName} على {episodeTitle}",
     'back_to_comments' => 'العودة إلى التعليقات',
     'form' => [
         'episode_message_placeholder' => 'أكتب تعليقاً…',
-        'reply_to_placeholder' => 'Reply to @{actorUsername}',
+        'reply_to_placeholder' => 'رد على @{actorUsername}',
         'submit' => 'ارسل',
         'submit_reply' => 'رد',
     ],
diff --git a/app/Language/ar/Fediverse.php b/app/Language/ar/Fediverse.php
index 5373873a1c..1ad65f7b72 100644
--- a/app/Language/ar/Fediverse.php
+++ b/app/Language/ar/Fediverse.php
@@ -13,7 +13,7 @@ return [
     'your_handle_hint' => 'Enter the @username@domain you want to act from.',
     'follow' => [
         'label' => 'تابِع',
-        'title' => 'Follow {actorDisplayName}',
+        'title' => 'تابع {actorDisplayName}',
         'subtitle' => 'إنك بصدد متابعة:',
         'accountNotFound' => 'لا يمكن العثور على الحساب.',
         'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…',
diff --git a/app/Language/ar/Home.php b/app/Language/ar/Home.php
index e0276c0f20..885408062b 100644
--- a/app/Language/ar/Home.php
+++ b/app/Language/ar/Home.php
@@ -13,8 +13,8 @@ return [
     'sort_by' => 'ترتيب حسب',
     'sort_options' => [
         'activity' => 'آخر نشاط',
-        'created_desc' => 'Newest first',
-        'created_asc' => 'Oldest first',
+        'created_desc' => 'الأحدث أولًا',
+        'created_asc' => 'الأقدم أولاً',
     ],
-    'no_podcast' => 'No podcast found',
+    'no_podcast' => 'لا يوجد أي بودكاست',
 ];
diff --git a/app/Language/ar/Podcast.php b/app/Language/ar/Podcast.php
index 09b71dfe65..081d1167e2 100644
--- a/app/Language/ar/Podcast.php
+++ b/app/Language/ar/Podcast.php
@@ -10,13 +10,13 @@ declare(strict_types=1);
 
 return [
     'feed' => 'RSS Podcast feed',
-    'season' => 'Season {seasonNumber}',
+    'season' => 'الموسم {seasonNumber}',
     'list_of_episodes_year' => 'حلَقات {year} ({episodeCount})',
     'list_of_episodes_season' =>
-        'Season {seasonNumber} episodes ({episodeCount})',
-    'no_episode' => 'No episode found!',
+        'الموسم {seasonNumber} الحلقات ({episodeCount})',
+    'no_episode' => 'لم يتم العثور على أية حلقة!',
     'follow' => 'متابعة',
-    'followTitle' => 'Follow {actorDisplayName} on the fediverse!',
+    'followTitle' => 'تابع {actorDisplayName} على الفديفرس!',
     'followers' => '{numberOfFollowers, plural,
         one {<span class="font-semibold">#</span> follower}
         other {<span class="font-semibold">#</span> followers}
@@ -41,7 +41,7 @@ return [
         }',
         'first_published_at' => 'First episode published on <span class="font-semibold">{0, date, medium}</span>',
     ],
-    'sponsor' => 'Sponsor',
+    'sponsor' => 'الراعي',
     'funding_links' => 'Funding links for {podcastTitle}',
     'find_on' => 'Find {podcastTitle} on',
     'listen_on' => 'Listen on',
diff --git a/app/Language/ar/Post.php b/app/Language/ar/Post.php
index 436c3a1f7a..f92688abd0 100644
--- a/app/Language/ar/Post.php
+++ b/app/Language/ar/Post.php
@@ -34,7 +34,7 @@ return [
         other {# replies}
     }',
     'expand' => 'Expand post',
-    'block_actor' => 'Block user @{actorUsername}',
-    'block_domain' => 'Block domain @{actorDomain}',
+    'block_actor' => 'احجب المستخدم @{actorUsername}',
+    'block_domain' => 'احجب النطاق @{actorDomain}',
     'delete' => 'احذف المنشور',
 ];
diff --git a/app/Language/br/Comment.php b/app/Language/br/Comment.php
index 0675448470..65d9b9b18d 100644
--- a/app/Language/br/Comment.php
+++ b/app/Language/br/Comment.php
@@ -18,18 +18,25 @@ return [
         'submit_reply' => 'Respont',
     ],
     'likes' => '{numberOfLikes, plural,
-        one {# like}
-        other {# likes}
+        one {# muiañ-karet}
+        2 {# vuiañ-karet}
+        22 {# vuiañ-karet}
+        32 {# vuiañ-karet}
+        42 {# vuiañ-karet}
+        52 {# vuiañ-karet}
+        62 {# vuiañ-karet}
+        82 {# vuiañ-karet}
+        other {# muiañ-karet}
     }',
     'replies' => '{numberOfReplies, plural,
         0 {respont ebet}
         one {# respont}
         other {# respont}
     }',
-    'like' => 'Like',
+    'like' => 'Muiañ-karet',
     'reply' => 'Respont',
     'view_replies' => 'Gwelout an evezhiadennoù ({numberOfReplies})',
-    'block_actor' => 'Berzañ pep tra eus an implijer·ez @{actorUsername}',
-    'block_domain' => 'Berzañ pep tra eus @{actorDomain}',
+    'block_actor' => 'Stankañ an implijer·ez @{actorUsername}',
+    'block_domain' => 'Stankañ @{actorDomain}',
     'delete' => 'Dilemel an evezhiadenn',
 ];
diff --git a/app/Language/br/Common.php b/app/Language/br/Common.php
index 7192f77a6b..d50e0372cb 100644
--- a/app/Language/br/Common.php
+++ b/app/Language/br/Common.php
@@ -15,7 +15,7 @@ return [
     'optional' => 'Diret',
     'close' => 'Serriñ',
     'home' => 'Degemer',
-    'explicit' => 'Explicit',
+    'explicit' => "Endalc'had evit an oadourien",
     'powered_by' => 'Lusket gant {castopod}',
     'go_back' => 'Mont war-gil',
     'play_episode_button' => [
diff --git a/app/Language/br/Post.php b/app/Language/br/Post.php
index d81e3e0a64..972616419e 100644
--- a/app/Language/br/Post.php
+++ b/app/Language/br/Post.php
@@ -22,8 +22,15 @@ return [
         'submit_reply' => 'Respont',
     ],
     'favourites' => '{numberOfFavourites, plural,
-        one {# favourite}
-        other {# favourites}
+        one {# muiañ-karet}
+        2 {# vuiañ-karet}
+        22 {# vuiañ-karet}
+        32 {# vuiañ-karet}
+        42 {# vuiañ-karet}
+        52 {# vuiañ-karet}
+        62 {# vuiañ-karet}
+        82 {# vuiañ-karet}
+        other {# muiañ-karet}
     }',
     'reblogs' => '{numberOfReblogs, plural,
         0 {rannadur ebet}
@@ -36,7 +43,7 @@ return [
         other {# respont}
     }',
     'expand' => 'Astenn ar gemennadenn',
-    'block_actor' => 'Berzañ pep tra eus an implijer·ez @{actorUsername}',
-    'block_domain' => 'Berzañ pep tra eus @{actorDomain}',
+    'block_actor' => 'Stankañ an implijer·ez @{actorUsername}',
+    'block_domain' => 'Stankañ @{actorDomain}',
     'delete' => 'Dilemel ar gemennadenn',
 ];
diff --git a/app/Language/nn-NO/Comment.php b/app/Language/nn-NO/Comment.php
new file mode 100644
index 0000000000..57b8a09ede
--- /dev/null
+++ b/app/Language/nn-NO/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} sin kommentar til {episodeTitle}",
+    'back_to_comments' => 'Tilbake til kommentarane',
+    'form' => [
+        'episode_message_placeholder' => 'Skriv ein kommentar…',
+        'reply_to_placeholder' => 'Svar til @{actorUsername}',
+        'submit' => 'Send',
+        'submit_reply' => 'Svar',
+    ],
+    'likes' => '{numberOfLikes, plural,
+        one {# likar}
+        other {# likar}
+    }',
+    'replies' => '{numberOfReplies, plural,
+        one {# svar}
+        other {# svar}
+    }',
+    'like' => 'Lik',
+    'reply' => 'Svar',
+    'view_replies' => 'Vis svar ({numberOfReplies})',
+    'block_actor' => 'Blokker brukaren @{actorUsername}',
+    'block_domain' => 'Blokker domenet @{actorDomain}',
+    'delete' => 'Slett kommentaren',
+];
diff --git a/app/Language/nn-NO/Common.php b/app/Language/nn-NO/Common.php
new file mode 100644
index 0000000000..1a6b9f0d9e
--- /dev/null
+++ b/app/Language/nn-NO/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' => 'Ja',
+    'no' => 'Nei',
+    'cancel' => 'Avbryt',
+    'optional' => 'Valfritt',
+    'close' => 'Lukk',
+    'home' => 'Heim',
+    'explicit' => 'Grov prat',
+    'powered_by' => 'Køyrer på {castopod}',
+    'go_back' => 'Tilbake',
+    'play_episode_button' => [
+        'play' => 'Spel',
+        'playing' => 'Spelar',
+    ],
+    'read_more' => 'Les meir',
+    'read_less' => 'Les mindre',
+    'see_more' => 'Sjå meir',
+    'see_less' => 'Sjå mindre',
+];
diff --git a/app/Language/nn-NO/Episode.php b/app/Language/nn-NO/Episode.php
new file mode 100644
index 0000000000..e66b3bc223
--- /dev/null
+++ b/app/Language/nn-NO/Episode.php
@@ -0,0 +1,33 @@
+<?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' => 'Sesong {seasonNumber}',
+    'season_abbr' => 'S{seasonNumber}',
+    'number' => 'Episode {episodeNumber}',
+    'number_abbr' => 'Ep. {episodeNumber}',
+    'season_episode' => 'Sesong {seasonNumber} episode {episodeNumber}',
+    'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
+    'persons' => '{personsCount, plural,
+        one {# person}
+        other {# personar}
+    }',
+    'persons_list' => 'Personar',
+    'back_to_episodes' => 'Tilbake til episodane av {podcast}',
+    'comments' => 'Kommentarar',
+    'activity' => 'Aktivitet',
+    'description' => 'Skildring av episoden',
+    'number_of_comments' => '{numberOfComments, plural,
+        one {# kommentar}
+        other {# kommentarar}
+    }',
+    'all_podcast_episodes' => 'Alle podkast-episodane',
+    'back_to_podcast' => 'GÃ¥ tilbake til podkasten',
+];
diff --git a/app/Language/nn-NO/Fediverse.php b/app/Language/nn-NO/Fediverse.php
new file mode 100644
index 0000000000..22c203d8c8
--- /dev/null
+++ b/app/Language/nn-NO/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' => 'Handtaket ditt',
+    'your_handle_hint' => 'Skriv inn @brukarnamn@domene som du vil handla frå.',
+    'follow' => [
+        'label' => 'Fylg',
+        'title' => 'Fylg {actorDisplayName}',
+        'subtitle' => 'Du kjem til å fylgja:',
+        'accountNotFound' => 'Fann ikkje kontoen.',
+        'remoteFollowNotAllowed' => 'Det ser ut til at denne tenaren ikkje tillèt eksterne fylgjarar…',
+        'submit' => 'Hald fram for å fylgja',
+    ],
+    'favourite' => [
+        'title' => "Innlegg frå favoritten {actorDisplayName}",
+        'subtitle' => 'Du kjem til å merka som favoritt:',
+        'submit' => 'Hald fram for å merka som favoritt',
+    ],
+    'reblog' => [
+        'title' => "Del innlegget frå {actorDisplayName}",
+        'subtitle' => 'Du skal til å dela:',
+        'submit' => 'Hald fram for å dela',
+    ],
+    'reply' => [
+        'title' => "Svar til innlegget frå {actorDisplayName}",
+        'subtitle' => 'Du skal til å svara på:',
+        'submit' => 'Hald fram for å svara',
+    ],
+];
diff --git a/app/Language/nn-NO/Home.php b/app/Language/nn-NO/Home.php
new file mode 100644
index 0000000000..313343d639
--- /dev/null
+++ b/app/Language/nn-NO/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' => 'Alle podkastar',
+    'sort_by' => 'Sorter etter',
+    'sort_options' => [
+        'activity' => 'Ny aktivitet',
+        'created_desc' => 'Nyaste fyrst',
+        'created_asc' => 'Eldste fyrst',
+    ],
+    'no_podcast' => 'Fann ingen podkast',
+];
diff --git a/app/Language/nn-NO/Page.php b/app/Language/nn-NO/Page.php
new file mode 100644
index 0000000000..b28c7f8ce8
--- /dev/null
+++ b/app/Language/nn-NO/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' => 'Heimatt',
+    'map' => [
+        'title' => 'Kart',
+        'description' => 'Oppdag podkastepisodar frå {siteName} som er plasserte på eit kart! Gå gjennom kartet og høyr på episodar som pratar om bestemte stader.',
+    ],
+];
diff --git a/app/Language/nn-NO/Podcast.php b/app/Language/nn-NO/Podcast.php
new file mode 100644
index 0000000000..a3f834ecfc
--- /dev/null
+++ b/app/Language/nn-NO/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-straum for podkasten',
+    'season' => 'Sesong {seasonNumber}',
+    'list_of_episodes_year' => '{year}-episodar ({episodeCount})',
+    'list_of_episodes_season' =>
+        'Sesong {seasonNumber}-episodar ({episodeCount})',
+    'no_episode' => 'Fann ingen episode!',
+    'follow' => 'Fylg',
+    'followTitle' => 'Fylg {actorDisplayName} på fødiverset!',
+    'followers' => '{numberOfFollowers, plural,
+        one {<span class="font-semibold">#</span> fylgjar}
+        other {<span class="font-semibold">#</span> fylgjarar}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> innlegg}
+        other {<span class="font-semibold">#</span> innlegg}
+    }',
+    'activity' => 'Aktivitet',
+    'episodes' => 'Episodar',
+    'episodes_title' => 'Episodar av {podcastTitle}',
+    'about' => 'Om',
+    'stats' => [
+        'title' => 'Statistikk',
+        'number_of_seasons' => '{0, plural,
+            one {<span class="font-semibold">#</span> sesong}
+            other {<span class="font-semibold">#</span> sesongar}
+        }',
+        'number_of_episodes' => '{0, plural,
+            one {<span class="font-semibold">#</span> episode}
+            other {<span class="font-semibold">#</span> episodar}
+        }',
+        'first_published_at' => 'Den fyrste episoden vart lagt ut <span class="font-semibold">{0, date, medium}</span>',
+    ],
+    'sponsor' => 'Sponsor',
+    'funding_links' => 'Finansieringslenker for {podcastTitle}',
+    'find_on' => 'Finn {podcastTitle} på',
+    'listen_on' => 'Høyr på',
+    'persons' => '{personsCount, plural,
+        one {# person}
+        other {# personar}
+    }',
+    'persons_list' => 'Personar',
+];
diff --git a/app/Language/nn-NO/Post.php b/app/Language/nn-NO/Post.php
new file mode 100644
index 0000000000..85cb73890a
--- /dev/null
+++ b/app/Language/nn-NO/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' => "Innlegget frå {actorDisplayName}",
+    'back_to_actor_posts' => 'Tilbake til innlegga frå {actor}',
+    'actor_shared' => '{actor} delte',
+    'reply_to' => 'Svar til @{actorUsername}',
+    'form' => [
+        'message_placeholder' => 'Skriv ei melding…',
+        'episode_message_placeholder' => 'Skriv ei melding for episoden…',
+        'episode_url_placeholder' => 'Episode-URL',
+        'reply_to_placeholder' => 'Svar til @{actorUsername}',
+        'submit' => 'Send',
+        'submit_reply' => 'Svar',
+    ],
+    'favourites' => '{numberOfFavourites, plural,
+        one {# favoritt}
+        other {# favorittar}
+    }',
+    'reblogs' => '{numberOfReblogs, plural,
+        one {# deling}
+        other {# delingar}
+    }',
+    'replies' => '{numberOfReplies, plural,
+        one {# svar}
+        other {# svar}
+    }',
+    'expand' => 'Utvid innlegget',
+    'block_actor' => 'Blokker brukaren @{actorUsername}',
+    'block_domain' => 'Blokker domenet @{actorDomain}',
+    'delete' => 'Slett innlegget',
+];
diff --git a/app/Language/oc/Comment.php b/app/Language/oc/Comment.php
new file mode 100644
index 0000000000..1dd8f5eadc
--- /dev/null
+++ b/app/Language/oc/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/oc/Common.php b/app/Language/oc/Common.php
new file mode 100644
index 0000000000..aff8136b83
--- /dev/null
+++ b/app/Language/oc/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/oc/Episode.php b/app/Language/oc/Episode.php
new file mode 100644
index 0000000000..ebe39336fc
--- /dev/null
+++ b/app/Language/oc/Episode.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright  2020 Ad Aures
+ * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
+ * @link       https://castopod.org/
+ */
+
+return [
+    'season' => 'Season {seasonNumber}',
+    'season_abbr' => 'S{seasonNumber}',
+    'number' => 'Episode {episodeNumber}',
+    'number_abbr' => 'Ep. {episodeNumber}',
+    'season_episode' => 'Season {seasonNumber} episode {episodeNumber}',
+    'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
+    'persons' => '{personsCount, plural,
+        one {# person}
+        other {# persons}
+    }',
+    'persons_list' => 'Persons',
+    'back_to_episodes' => 'Back to episodes of {podcast}',
+    'comments' => 'Comments',
+    'activity' => 'Activity',
+    'description' => 'Episode description',
+    'number_of_comments' => '{numberOfComments, plural,
+        one {# comment}
+        other {# comments}
+    }',
+    'all_podcast_episodes' => 'All podcast episodes',
+    'back_to_podcast' => 'Go back to podcast',
+];
diff --git a/app/Language/oc/Fediverse.php b/app/Language/oc/Fediverse.php
new file mode 100644
index 0000000000..32f54c074f
--- /dev/null
+++ b/app/Language/oc/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/oc/Home.php b/app/Language/oc/Home.php
new file mode 100644
index 0000000000..1518239bd9
--- /dev/null
+++ b/app/Language/oc/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/oc/Page.php b/app/Language/oc/Page.php
new file mode 100644
index 0000000000..7cd606694e
--- /dev/null
+++ b/app/Language/oc/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/oc/Podcast.php b/app/Language/oc/Podcast.php
new file mode 100644
index 0000000000..d69cd86daf
--- /dev/null
+++ b/app/Language/oc/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 {<span class="font-semibold">#</span> follower}
+        other {<span class="font-semibold">#</span> followers}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> post}
+        other {<span class="font-semibold">#</span> posts}
+    }',
+    'activity' => 'Activity',
+    'episodes' => 'Episodes',
+    'episodes_title' => 'Episodes of {podcastTitle}',
+    'about' => 'About',
+    'stats' => [
+        'title' => 'Stats',
+        'number_of_seasons' => '{0, plural,
+            one {<span class="font-semibold">#</span> season}
+            other {<span class="font-semibold">#</span> seasons}
+        }',
+        'number_of_episodes' => '{0, plural,
+            one {<span class="font-semibold">#</span> episode}
+            other {<span class="font-semibold">#</span> episodes}
+        }',
+        'first_published_at' => 'First episode published on <span class="font-semibold">{0, date, medium}</span>',
+    ],
+    '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/oc/Post.php b/app/Language/oc/Post.php
new file mode 100644
index 0000000000..58d1cf8002
--- /dev/null
+++ b/app/Language/oc/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/pt-BR/Comment.php b/app/Language/pt-BR/Comment.php
index 1dd8f5eadc..1073c6c980 100644
--- a/app/Language/pt-BR/Comment.php
+++ b/app/Language/pt-BR/Comment.php
@@ -9,26 +9,26 @@ declare(strict_types=1);
  */
 
 return [
-    'title' => "{actorDisplayName}'s comment for {episodeTitle}",
-    'back_to_comments' => 'Back to comments',
+    'title' => "Comentário de {actorDisplayName} para {episodeTitle}",
+    'back_to_comments' => 'Voltar aos comentários',
     'form' => [
-        'episode_message_placeholder' => 'Write a comment…',
-        'reply_to_placeholder' => 'Reply to @{actorUsername}',
-        'submit' => 'Send',
-        'submit_reply' => 'Reply',
+        'episode_message_placeholder' => 'Escreva um comentário…',
+        'reply_to_placeholder' => 'Responder a @{actorUsername}',
+        'submit' => 'Enviar',
+        'submit_reply' => 'Responder',
     ],
     'likes' => '{numberOfLikes, plural,
-        one {# like}
-        other {# likes}
+        one {# curtida}
+        other {# curtidas}
     }',
     'replies' => '{numberOfReplies, plural,
-        one {# reply}
-        other {# replies}
+        one {# resposta}
+        other {# respostas}
     }',
-    'like' => 'Like',
-    'reply' => 'Reply',
-    'view_replies' => 'View replies ({numberOfReplies})',
-    'block_actor' => 'Block user @{actorUsername}',
-    'block_domain' => 'Block domain @{actorDomain}',
-    'delete' => 'Delete comment',
+    'like' => 'Curtir',
+    'reply' => 'Responder',
+    'view_replies' => 'Ver respostas ({numberOfReplies})',
+    'block_actor' => 'Bloquear usuário @{actorUsername}',
+    'block_domain' => 'Bloquear domínio @{actorDomain}',
+    'delete' => 'Excluir comentário',
 ];
diff --git a/app/Language/pt-BR/Episode.php b/app/Language/pt-BR/Episode.php
index ebe39336fc..3dc334f281 100644
--- a/app/Language/pt-BR/Episode.php
+++ b/app/Language/pt-BR/Episode.php
@@ -9,25 +9,25 @@ declare(strict_types=1);
  */
 
 return [
-    'season' => 'Season {seasonNumber}',
-    'season_abbr' => 'S{seasonNumber}',
-    'number' => 'Episode {episodeNumber}',
+    'season' => 'Temporada {seasonNumber}',
+    'season_abbr' => 'T{seasonNumber}',
+    'number' => 'Episódio {episodeNumber}',
     'number_abbr' => 'Ep. {episodeNumber}',
-    'season_episode' => 'Season {seasonNumber} episode {episodeNumber}',
-    'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
+    'season_episode' => 'Temporada {seasonNumber} episódio {episodeNumber}',
+    'season_episode_abbr' => 'T{seasonNumber}:E{episodeNumber}',
     'persons' => '{personsCount, plural,
-        one {# person}
-        other {# persons}
+        one {# pessoa}
+        other {# pessoas}
     }',
-    'persons_list' => 'Persons',
-    'back_to_episodes' => 'Back to episodes of {podcast}',
-    'comments' => 'Comments',
-    'activity' => 'Activity',
-    'description' => 'Episode description',
+    'persons_list' => 'Pessoas',
+    'back_to_episodes' => 'Voltar para episódios de {podcast}',
+    'comments' => 'Comentários',
+    'activity' => 'Atividade',
+    'description' => 'Descrição do episódio',
     'number_of_comments' => '{numberOfComments, plural,
-        one {# comment}
-        other {# comments}
+        one {# comentário}
+        other {# comentários}
     }',
-    'all_podcast_episodes' => 'All podcast episodes',
-    'back_to_podcast' => 'Go back to podcast',
+    'all_podcast_episodes' => 'Todos os episódios de podcast',
+    'back_to_podcast' => 'Voltar para o podcast',
 ];
diff --git a/app/Language/pt/Comment.php b/app/Language/pt/Comment.php
new file mode 100644
index 0000000000..1dd8f5eadc
--- /dev/null
+++ b/app/Language/pt/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/pt/Common.php b/app/Language/pt/Common.php
new file mode 100644
index 0000000000..aff8136b83
--- /dev/null
+++ b/app/Language/pt/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/pt/Episode.php b/app/Language/pt/Episode.php
new file mode 100644
index 0000000000..ebe39336fc
--- /dev/null
+++ b/app/Language/pt/Episode.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright  2020 Ad Aures
+ * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
+ * @link       https://castopod.org/
+ */
+
+return [
+    'season' => 'Season {seasonNumber}',
+    'season_abbr' => 'S{seasonNumber}',
+    'number' => 'Episode {episodeNumber}',
+    'number_abbr' => 'Ep. {episodeNumber}',
+    'season_episode' => 'Season {seasonNumber} episode {episodeNumber}',
+    'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
+    'persons' => '{personsCount, plural,
+        one {# person}
+        other {# persons}
+    }',
+    'persons_list' => 'Persons',
+    'back_to_episodes' => 'Back to episodes of {podcast}',
+    'comments' => 'Comments',
+    'activity' => 'Activity',
+    'description' => 'Episode description',
+    'number_of_comments' => '{numberOfComments, plural,
+        one {# comment}
+        other {# comments}
+    }',
+    'all_podcast_episodes' => 'All podcast episodes',
+    'back_to_podcast' => 'Go back to podcast',
+];
diff --git a/app/Language/pt/Fediverse.php b/app/Language/pt/Fediverse.php
new file mode 100644
index 0000000000..dae4472235
--- /dev/null
+++ b/app/Language/pt/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' => 'Seguir',
+        '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/pt/Home.php b/app/Language/pt/Home.php
new file mode 100644
index 0000000000..1518239bd9
--- /dev/null
+++ b/app/Language/pt/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/pt/Page.php b/app/Language/pt/Page.php
new file mode 100644
index 0000000000..7cd606694e
--- /dev/null
+++ b/app/Language/pt/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/pt/Podcast.php b/app/Language/pt/Podcast.php
new file mode 100644
index 0000000000..d69cd86daf
--- /dev/null
+++ b/app/Language/pt/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 {<span class="font-semibold">#</span> follower}
+        other {<span class="font-semibold">#</span> followers}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> post}
+        other {<span class="font-semibold">#</span> posts}
+    }',
+    'activity' => 'Activity',
+    'episodes' => 'Episodes',
+    'episodes_title' => 'Episodes of {podcastTitle}',
+    'about' => 'About',
+    'stats' => [
+        'title' => 'Stats',
+        'number_of_seasons' => '{0, plural,
+            one {<span class="font-semibold">#</span> season}
+            other {<span class="font-semibold">#</span> seasons}
+        }',
+        'number_of_episodes' => '{0, plural,
+            one {<span class="font-semibold">#</span> episode}
+            other {<span class="font-semibold">#</span> episodes}
+        }',
+        'first_published_at' => 'First episode published on <span class="font-semibold">{0, date, medium}</span>',
+    ],
+    '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/pt/Post.php b/app/Language/pt/Post.php
new file mode 100644
index 0000000000..58d1cf8002
--- /dev/null
+++ b/app/Language/pt/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/docs/src/ar/getting-started/install.md b/docs/src/ar/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/ar/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/ar/getting-started/security.md b/docs/src/ar/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/ar/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/ar/getting-started/update.md b/docs/src/ar/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/ar/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/ar/index.md b/docs/src/ar/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/ar/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/br/getting-started/install.md b/docs/src/br/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/br/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/br/getting-started/security.md b/docs/src/br/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/br/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/br/getting-started/update.md b/docs/src/br/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/br/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/br/index.md b/docs/src/br/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/br/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/de/getting-started/install.md b/docs/src/de/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/de/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/de/getting-started/security.md b/docs/src/de/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/de/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/de/getting-started/update.md b/docs/src/de/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/de/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/de/index.md b/docs/src/de/index.md
new file mode 100644
index 0000000000..37a52fccaf
--- /dev/null
+++ b/docs/src/de/index.md
@@ -0,0 +1,219 @@
+---
+sidebarDepth: 2
+---
+
+# Willkommen 👋
+
+[![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 ist eine freie & Open-Source-Hosting-Plattform für Podcastende, die ihr
+Publikum einbinden und mit ihnen interagieren möchten.
+
+Castopod ist einfach zu installieren und wurde auf
+[CodeIgniter4](https://codeigniter.com/) aufgebaut, ein mächtiges PHP Framework,
+mit einem sehr kleinen Fußabdruck.
+
+::: Info-Status
+
+Castopod ist derzeit in **Beta** aber bereits ziemlich stabil und wird von
+Podcastenden auf &nbsp;der&nbsp; ganzen Welt verwendet!
+
+:::
+
+<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">Installieren<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>
+
+## Merkmale
+
+- 🌱 Kostenlos & Open-Source (AGPL v3 Lizenz)
+- 🔐 &nbsp;Fokussiert auf die Datensouveränität: Ihre Inhalte, Ihr Publikum und
+  Analysen gehören zu Ihnen, und&nbsp;nur Ihnen&nbsp;
+- 🪄 &nbsp;Podcasting 2.0 features: GUID, locked, transcripts, funding, chapters,
+  location, persons, soundbites, …
+- 💬 &nbsp;Built-in social network:
+  - 🚀 &nbsp;Castopod is part of the Fediverse, a decentralized social network
+  - ❤️ &nbsp;Create posts, share, favourite, and comment on episodes
+- 📈 &nbsp;Built-in analytics:
+  - ⚖️ &nbsp;GDPR / CCPA / LGPD compliant
+  - 🪙 &nbsp;Standard IABv2 audience measurement
+  - 🏡 &nbsp;On-premises analytics, no third party involved
+- 📢 &nbsp;Built-in marketing tools:
+  - ✅ &nbsp;SEO ready (open-graph meta-tags, JSON-LD, …)
+  - 📱 &nbsp;PWA: install as a standalone app
+  - 🎨 &nbsp;Customizable theme colors
+  - 🎬 &nbsp;Generate ready-to-share Video clips from episodes
+  - 🔉 &nbsp;Generate soundbites
+  - ▶️ &nbsp;Embeddable player, embed your episodes on any website
+- 💸 &nbsp;Monetization:
+  - 🔗 &nbsp;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
+
+Das Podcasting-Ökosystem ist von Natur aus dezentralisiert: Du kannst deinen
+Podcast als RSS-Datei erstellen, im Web publizieren und von dort aus überall
+online teilen.
+
+Es ist in der Tat eines der einzigen Medien, die lange Zeit so geblieben sind.
+
+Da sich die Nutzungsmöglichkeiten weiterentwickeln, interessieren sich immer
+mehr Menschen für Podcasts: seien es Schöpfer, die neue Wege finden, ihre Ideen
+zu teilen, oder Zuhörer auf der Suche nach besseren Inhalten.
+
+Mit zunehmender Verbreitung des Podcasts versuchen einige Unternehmen, ihn auf
+ein stärker kontrollierbares und zentralisiertes Medium zu verlagern.
+
+Castopod wurde in dem Bestreben erstellt, eine offene und nachhaltige
+Alternative für das Hosting Ihrer Podcasts zu bieten. Die Förderung der
+Dezentralisierung soll sicherstellen, dass sich Podcaster in ihrer Kreativität
+frei entfalten können.
+
+Dieses Projekt wird von der Open-Source-Community und speziell von den
+[Fediverse](https://fediverse.party/en/fediverse/) und
+[Podcasting 2.0](https://podcastindex.org/) Bewegungen getragen.
+
+## Vergleiche mit anderen Lösungen
+
+Wir glauben, dass es nicht die eine Lösung für jeden gibt, es ist sehr abhängig
+von deinen Bedürfnissen. Also, hier sind Vergleiche mit anderen Tools, die Dir
+helfen sollen herauszufinden, ob Castopod das richtige für Dich ist.
+
+### Castopod vs Wordpress
+
+Castopod wird oft als "das Wordpress für Podcasts" bezeichnet, da die
+-Ähnlichkeiten zwischen den beiden übereinstimmen. In gewisser Hinsicht ist das
+richtig. Und tatsächlich war Castopod stark vom Wordpress-Ökosystem inspiriert,
+da es die einfache Ãœbernahme durch die Community und die Anzahl der Websites,
+auf denen es ausgeführt wird, sah.
+
+Genau wie Wordpress ist Castopod kostenlos; Open Source, erstellt mit PHP mit
+einer MySQL-Datenbank und ist so verpackt, dass Du es auf den Servern der
+meisten Websites problemlos installieren kannst.
+
+Wordpress ist ein großartiger Weg, um Deine Website zu erstellen und mit Plugins
+zu erweitern, um das zu bekommen, was Du willst. Es ist ein vollwertiges CMS
+welches dir hilft, jede Art von Webseite online zu bekommen.
+
+Auf der anderen Seite soll Castopod die Bedürfnisse von Podcastern erfüllen.
+Konzentriere Dich ausschließlich aufs Podcasten und sonst nichts. Du benötigst
+kein Plugin, um dein Podcasting zu beginnen.
+
+Dadurch lassen sich die Podcast-spezifischen Prozesse optimieren: von der
+Erstellung Ihrer Podcasts und die Veröffentlichung neuer Folgen bis hin zu
+Rundfunk, Marketing und Analytik.
+
+Schließlich können Wordpress und Castopod je nach Bedarf sogar nebeneinander
+existieren, da sie die gleichen Anforderungen haben!
+
+### Castopod vs Funkwale
+
+Funkwhale ist ein selbstgehosteter, moderner kostenloser und
+Open-Source-Musikserver. 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/el/getting-started/install.md b/docs/src/el/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/el/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/el/getting-started/security.md b/docs/src/el/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/el/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/el/getting-started/update.md b/docs/src/el/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/el/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/el/index.md b/docs/src/el/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/el/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/es/getting-started/install.md b/docs/src/es/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/es/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/es/getting-started/security.md b/docs/src/es/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/es/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/es/getting-started/update.md b/docs/src/es/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/es/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/es/index.md b/docs/src/es/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/es/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
new file mode 100644
index 0000000000..708808bade
--- /dev/null
+++ b/docs/src/fr/getting-started/install.md
@@ -0,0 +1,169 @@
+---
+title: Installation
+sidebarDepth: 3
+---
+
+# Comment installer Castopod ?
+
+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.
+
+## Prérequis
+
+- PHP v8.0 ou supérieure
+- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure
+- Prise en charge HTTPS
+
+### PHP v8.0 ou supérieure
+
+La version 8.0 ou supérieure de PHP est requise, avec les extensions suivantes
+installées :
+
+- [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) avec **JPEG**,
+  **PNG** et bibliothèques **WEBP**.
+- [exif](https://www.php.net/manual/en/exif.installation.php)
+
+De plus, assurez-vous que les extensions suivantes sont activées dans votre PHP
+:
+
+- json (activé par défaut - ne le désactivez pas)
+- xml (activé par défaut - ne pas le désactiver)
+- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
+
+### Base de données compatible MySQL
+
+> Nous vous recommandons d'utiliser [MariaDB](https://mariadb.org).
+
+::: avertissement
+
+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.
+
+:::
+
+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.
+
+#### 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`.
+
+### (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 :
+
+- bibliothèque **FreeType 2** pour
+  [gd](https://www.php.net/manual/en/image.installation.php).
+
+### (Facultatif) Autres recommandations
+
+- Redis pour de meilleures performances de cache.
+- CDN pour la mise en cache de fichiers statiques et de meilleures performances.
+- passerelle e-mail pour les mots de passe perdus.
+
+## Instructions d'installation
+
+### Pré-requis
+
+0. Obtenez un serveur Web avec [les pré-requis](#requirements) installés
+1. Créer une base de données MySQL pour Castopod avec un utilisateur ayant les
+   droits d'accès et les droits de modification (pour plus d'informations, cf.
+   [base de données compatible MySQL](#mysql-compatible-database)).
+2. Activez HTTPS sur votre domaine avec un _certificat SSL_.
+3. Téléchargez et dézippez le dernier [paquet Castopod](https://castopod.org/)
+   sur le serveur web si vous ne l'avez pas déjà fait.
+   - ⚠️ Faites pointer la racine du document du serveur web vers le sous-dossier
+     `public/` du dossier `castopod`.
+4. Ajoutez les **tâches cron** sur votre serveur web pour les différents
+   processus d'arrière-plan (définissez les chemins selon votre configuration) :
+
+   - Pour que les fonctionnalités sociales fonctionnent correctement, cette
+     tâche est utilisée pour diffuser des activités sociales à vos abonnés sur
+     le Fédivers :
+
+   ```bash
+      * * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
+   ```
+
+   - Pour que vos épisodes soient diffusés sur les hubs ouverts à la publication
+     en utilisant [WebSub](https://en.wikipedia.org/wiki/WebSub):
+
+   ```bash
+      * * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
+   ```
+
+   - Pour créer des clips vidéo (cf.
+     [pré-requis FFmpeg](#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/fr/getting-started/security.md b/docs/src/fr/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/fr/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/fr/getting-started/update.md b/docs/src/fr/getting-started/update.md
new file mode 100644
index 0000000000..6632c5f770
--- /dev/null
+++ b/docs/src/fr/getting-started/update.md
@@ -0,0 +1,96 @@
+---
+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.
+
+   - 👉 Assurez-vous d'exécuter les scripts sur votre interface phpmyadmin ou
+     utilisez la ligne de commande pour mettre à jour la base de données avec
+     les fichiers du paquet !
+   - cf.
+     [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
+
+5. Si vous utilisez redis, effacez votre cache.
+6. ✨ Votre nouvelle instance est prête !
+
+## Foire Aux Questions (FAQ)
+
+### Où puis-je trouver ma version de Castopod ?
+
+Allez dans votre panneau d'administration de Castopod, la version s'affiche en
+bas à gauche.
+
+Vous pouvez également trouver la version dans le fichier
+`app > Config > Constants.php`.
+
+### Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?
+
+Aucun souci ! Il suffit d'obtenir la dernière version comme décrit ci-dessus.
+Lorsque vous exécutez les instructions de mise à jour (4), lancez-les
+séquentiellement, de la plus ancienne à la plus récente.
+
+> Vous devriez sauvegarder votre instance selon la date de votre dernière mise à
+> jour de Castopod.
+
+Par exemple, si vous êtes en `v1.0.0-alpha.42` et souhaitez mettre à jour vers
+la `v1.0.0-beta.1` :
+
+0. (fortement recommandé) Faites une sauvegarde de vos fichiers et de votre base
+   de données.
+
+1. Téléchargez la dernière version, écrasez vos fichiers tout en conservant
+   `.env` et `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. ✨ Votre nouvelle instance est prête !
+
+### Dois-je faire une sauvegarde avant de mettre à jour ?
+
+Nous vous conseillons de le faire, afin de ne pas tout perdre si quelque chose
+se passait mal !
+
+Plus généralement, nous vous conseillons de faire des sauvegardes régulières de
+vos fichiers Castopod et de votre base de données afin d'éviter de tout perdre…
diff --git a/docs/src/fr/index.md b/docs/src/fr/index.md
new file mode 100644
index 0000000000..430867b2b9
--- /dev/null
+++ b/docs/src/fr/index.md
@@ -0,0 +1,219 @@
+---
+sidebarDepth: 2
+---
+
+# Bienvenue 👋
+
+[![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 est une plateforme d’hébergement gratuite & open-source conçue pour les
+podcasteurs qui veulent échanger et interagir avec leur public.
+
+Castopod est facile à installer et a été conçu avec
+[CodeIgniter4](https://codeigniter.com/), un framework PHP puissant de très
+petite taille.
+
+::: 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">Installation<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>
+
+## Fonctionnalités
+
+- 🌱 &nbsp;Libre, gratuit & open-source (Licence AGPL v3)
+- 🔐 &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, …
+- 💬 &nbsp;Réseau social intégré :
+  - 🚀 &nbsp;Castopod fait partie du Fédivers, un réseau social décentralisé
+  - ❤️ &nbsp;Créer des publications, partager, mettre en favori et commenter des
+    épisodes
+- 📈 &nbsp;Statistiques intégrées :
+  - ⚖️ &nbsp;Conforme GDPR / CCPA / LGPD
+  - 🪙&nbsp;Mesure d'audience IABv2
+  - 🏡 &nbsp;Statistiques intégrées, aucune tierce partie intermédiaire
+- 📢 &nbsp;Outils de marketing intégrés :
+  - ✅ &nbsp;Prêt pour le SEO (méta-tags open-graph, JSON-LD…)
+  - 📱 &nbsp;PWA: installez comme application autonome
+  - 🎨 &nbsp;Couleurs de thèmes personnalisables
+  - 🎬 &nbsp;Générez des clips vidéo prêts à partager à partir d'épisodes
+  - 🔉 &nbsp;Générez des extraits sonores
+  - ▶️ &nbsp;Intégrer vos épisodes dans n'importe quel site web
+- 💸 &nbsp;Monétisation:
+  - 🔗 &nbsp;Liens de financement
+  - 📲 &nbsp;publicité “listen-to-click”
+  - 🤝 &nbsp;value4value / WebMonetization
+- 📡&nbsp;Publiez vos épisodes partout avec RSS :
+  - 📱 &nbsp;Sur tous les index et toutes les applications : Podcast Index,
+    Podcasts Apple, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend…
+  - ⚡&nbsp;Diffusez instantanément vos épisodes avec WebSub
+- 📥 &nbsp;Importation de Podcast : déménagez votre podcast existant vers
+  Castopod
+- 📤 &nbsp;Déplacez votre podcast chez un autre hébergeur
+- 🔀 &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;support i18n: traduit en Anglais, Français, Polonais, Allemand &
+  Brésilien… et bientôt d'autres à venir !
+
+## 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.
+
+## Contribuer
+
+Vous appréciez Castopod et aimeriez donner un coup de main ? Jetez un œil à la
+documentation suivante pour démarrer.
+
+### 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
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/id/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/id/getting-started/security.md b/docs/src/id/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/id/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/id/getting-started/update.md b/docs/src/id/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/id/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/id/index.md b/docs/src/id/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/id/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/it/getting-started/install.md b/docs/src/it/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/it/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/it/getting-started/security.md b/docs/src/it/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/it/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/it/getting-started/update.md b/docs/src/it/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/it/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/it/index.md b/docs/src/it/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/it/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/nl/getting-started/install.md b/docs/src/nl/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/nl/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/nl/getting-started/security.md b/docs/src/nl/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/nl/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/nl/getting-started/update.md b/docs/src/nl/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/nl/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/nl/index.md b/docs/src/nl/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/nl/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/nn-NO/getting-started/install.md b/docs/src/nn-NO/getting-started/install.md
new file mode 100644
index 0000000000..fa6e5fa47b
--- /dev/null
+++ b/docs/src/nn-NO/getting-started/install.md
@@ -0,0 +1,164 @@
+---
+title: Installering
+sidebarDepth: 3
+---
+
+# Korleis installerer eg Castopod?
+
+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.
+
+## Krav
+
+- PHP v8.0 eller nyare
+- MySQL versjon 5.7 eller nyare, eller MariaDB versjon 10.2 eller nyare
+- Støtte for HTTPS
+
+### PHP v8.0 eller nyare
+
+PHP versjon 8.0 er eit krav, med desse utvidingane:
+
+- [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) med **JPEG**-,
+  **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:
+
+- json (vanlegvis aktivt - ikkje skru det av)
+- xml (vanlegvis aktivt - ikkje skru det av)
+- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
+
+### MySQL-kompatibel database
+
+> Me tilrår [MariaDB](https://mariadb.org).
+
+::: Ã…tvaring
+
+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.
+
+:::
+
+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.
+
+#### Tilgangsrettar
+
+Brukaren må minst ha desse tilgangsrettane på databasen for at Castopod skal
+fungera: `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:
+
+- **FreeType 2**-biblioteket for
+  [gd](https://www.php.net/manual/en/image.installation.php).
+
+### (Eventuelt) Andre tilrådingar
+
+- Redis for betre bufring.
+- Innhaldsnettverk (CDN) for å bufra statiske filer og betra ytinga.
+- Epostløysing for å nullstilla passord.
+
+## Korleis du installerer
+
+### Føresetnader
+
+0. FÃ¥ tak i ein vevtenar som fyller [krava](#requirements)
+1. Lag ein MySQL-database for Castopod der brukaren har tilgangs- og
+   endringsløyve (les meir om [MySQL-database](#mysql-compatible-database)).
+2. Ta i bruk HTTPS på domenet ditt ved hjelp av eit _SSL-sertifikat_.
+3. Last ned og pakk ut den nyaste [Castopod-pakka](https://castopod.org/) på
+   vevtenaren din, om du ikkje allereie har gjort det.
+   - ⚠️ Set dokumentrota til vevtenaren til undermappa `public/` i
+     `castopod`-mappa.
+4. Lag **cron-oppgåver** på vevtenaren din for ulike bakgrunnsprosessar (byt ut
+   stiane så dei passar til oppsettet ditt):
+
+   - For at sosiale funksjonar skal fungera, trengst denne oppgåva for å
+     kringkasta sosiale aktivitetar til fylgjarane dine på fødiverset:
+
+   ```bash
+      * * * * * /sti/til/php /sti/til/castopod/public/index.php scheduled-activities
+   ```
+
+   - For å kringkasta episodane på opne nettnav som bruker
+     [WebSub](https://en.wikipedia.org/wiki/WebSub):
+
+   ```bash
+      * * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
+   ```
+
+   - For å laga filmklypp (sjå
+     [FFmpeg-krava](#ffmpeg-v418-or-higher-for-video-clips)):
+
+   ```bash
+      * * * * * /sti/til/php /sti/til/castopod/public/index.php scheduled-video-clips
+   ```
+
+   > Desse oppgåvene blir utførte **kvart minutt**. Du kan setja opp kor ofte du
+   > treng å utføra oppgåvene: kvart 5., 10. minutt eller meir.
+
+### (Tilrådd) Autoinstallering
+
+1. Køyr Castopod-installasjonen ved å gå til autoinstalleringssida
+   (`https://domenet_ditt.no/cp-install`) i nettlesaren din.
+2. Fylg framgangsmåten på skjermen.
+3. Start å podkasta!
+
+::: info
+
+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).
+
+:::
+
+## 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.
+
+### 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.
+
+<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="Installer Castopod med 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-arkiv</a>
+
+</div>
+
+### Installer med Docker
+
+Viss du vil bruka Docker til å installera Castopod, er det mogleg takk vere
+[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
+
+Etter som mange spør etter Docker-installasjon, planlegg me å laga ei offisiell
+Docker-pakke for Castopod her i vårt eige arkiv.
+
+:::
diff --git a/docs/src/nn-NO/getting-started/security.md b/docs/src/nn-NO/getting-started/security.md
new file mode 100644
index 0000000000..c584a183f6
--- /dev/null
+++ b/docs/src/nn-NO/getting-started/security.md
@@ -0,0 +1,25 @@
+---
+title: Tryggleik
+---
+
+# Tryggleiksspørsmål
+
+Castopod er bygd på [CodeIgniter4](https://codeigniter.com/), som er eit
+PHP-rammeverk som oppmodar til
+[god tryggleikspraksis](https://codeigniter.com/user_guide/concepts/security.html).
+
+For å syta for best mogleg tryggleik på nettstaden din og hindra vondsinna åtak,
+tilrår me at du oppdaterer alle fil-tilgangsrettane til Castopod-filene etter du
+har installert (for å unngå tidlegare feil i tilgangsløyve):
+
+- `writable/`-mappa må vera **lesbar** og **skrivbar**.
+- `public/media/`-mappa må vera **lesbar** og **skrivbar**.
+- alle andre filer skal vera berre **lesbare**.
+
+Viss du til dømes bruker Apache eller NGINX med Ubuntu, kan du gjera dette:
+
+```bash
+sudo chown -R root:root /sti/til/castopod
+sudo chown -R www-data:www-data /sti/til/castopod/writable
+sudo chown -R www-data:www-data /sti/til/castopod/public/media
+```
diff --git a/docs/src/nn-NO/getting-started/update.md b/docs/src/nn-NO/getting-started/update.md
new file mode 100644
index 0000000000..9fd2b55d19
--- /dev/null
+++ b/docs/src/nn-NO/getting-started/update.md
@@ -0,0 +1,89 @@
+---
+title: Oppdatering
+sidebarDepth: 3
+---
+
+# Korleis oppdaterer eg Castopod?
+
+Når du har installert Castopod, kan det vera lurt å oppdatera nettstaden din til
+siste versjonen for å få nye funksjonar, ✨, feilrettingar 🐛 og betre yting ⚡.
+
+## Framgangsmåte for å oppdatera automatisk
+
+> Kjem snart... 👀
+
+## Framgangsmåte for å oppdatera manuelt
+
+1. GÃ¥ til
+   [sida med utgjevingar](https://code.castopod.org/adaures/castopod/-/releases)
+   og sjå om nettstaden din bruker siste utgåva av Castopod
+
+   - jfr.
+     [Kvar finn eg Castopod-versjonsnummeret?](#where-can-i-find-my-castopod-version)
+
+2. Last ned den nyaste pakka som heiter `Castopod Package`, du kan velja mellom
+   `zip`- eller `tar.gz`-arkiva
+
+   - ⚠️ Pass på at du lastar ned programpakka, og **IKKJE** kjeldekoden
+
+3. PÃ¥ vevtenaren din:
+
+   - Fjern alle filene utanom `.env` og `public/media`
+   - Kopier dei nye filene frå den nedlasta pakka til vevtenaren din
+
+     ::: info
+
+     Det kan henda du må nullstilla filtilgangsrettar slik du gjer når du
+     installerer. Sjå [Tryggleiksspørsmål](./security.md).
+
+     :::
+
+4. Nokre utgjevingar kan ha fleire oppdateringsinstruksar (sjå
+   [sida med utgjevingar](https://code.castopod.org/adaures/castopod/-/releases)).
+   Det gjeld vanlegvis migreringsskript i `.sql`-format for å oppdatera
+   databaseskjemaet ditt.
+
+   - 👉 Pass på at du køyrer skripta i phpmyadmin-panelet ditt eller
+     kommandolina for å oppdatera databasen i tillegg til pakkefilene!
+   - jfr.
+     [Eg har ikkje oppdatert på lenge… Kva skal eg gjera?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
+
+5. Viss du bruker redis, må du tøma bufferen.
+6. ✨ Ferdig!
+
+## Vanlege spørsmål (FAQ)
+
+### Kvar finn eg Castopod-versjonsnummeret?
+
+Gå til styringspanelet for Castopod. Versjonsnummeret står i nedste venstre
+hjørnet.
+
+Du kan òg finna versjonsnummeret i `app > Config > Constants.php`-fila.
+
+### Eg har ikkje oppdatert på lenge… Kva skal eg gjera?
+
+Ingen problem! Berre last ned den siste utgåva som skildra over. Hugs berre at
+når du går gjennom utgjevingsinstruksane (4), går du gjennom dei frå eldst til
+nyast.
+
+> Du bør truleg tryggingskopiera nettstaden din, avhengig av kor lenge sidan det
+> er du oppdaterte Castopod.
+
+Til dømes viss du er på `v1.0.0-alpha.42` og vil oppgradera til `v1.0.0-beta.1`:
+
+0. (stekt tilrådd) Ta ein tryggingskopi av filene og databasen din.
+
+1. Last ned siste utgåva, erstatt alle filene utanom `.env` og `public/media`.
+
+2. Gå gjennom alle oppdateringsinstruksane frå eldst til nyast. Start med
+   `v1.0.0-alpha.43`, `v1.0.0-alpha.44`, `v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
+
+3. ✨ Ferdig!
+
+### Bør eg tryggingskopiera før eg oppdaterer?
+
+Det bør du. Viss ikkje, kan du mista heile Castopod-nettstaden dersom noko går
+gale!
+
+I det heile bør du ta jamnlege tryggingskopiar av Castopod-filene og databasen
+for å unngå å mista noko…
diff --git a/docs/src/nn-NO/index.md b/docs/src/nn-NO/index.md
new file mode 100644
index 0000000000..4a03931141
--- /dev/null
+++ b/docs/src/nn-NO/index.md
@@ -0,0 +1,219 @@
+---
+sidebarDepth: 2
+---
+
+# Velkomen 👋
+
+[![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 er ei open og gratis løysing for dei som vil køyra si eiga
+podkasting-plattform, og for podkastarar som vil engasjera og samhandla med
+publikum.
+
+Castopod er lett å installera og er bygd på
+[CodeIgniter4](https://codeigniter.com/), eit kraftig PHP-rammeverk med små
+systemkrav.
+
+::: info Status
+
+Castopod er i **beta**-utgåve, men er allereie stabilt nok til at podkastarar
+over heile verda&nbsp;bruker&nbsp;det!
+
+:::
+
+<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">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;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…
+- 💬 &nbsp;Innebygd sosialt nettverk:
+  - 🚀 &nbsp;Castopod er ein del av fødiverset, som er eit desentralisert
+    sosialt nettverk
+  - ❤️ &nbsp;Skriv innlegg, del dei, favorittmerk dei, og kommenter episodane
+- 📈 &nbsp;Innebygde analyseverkty:
+  - ⚖️ &nbsp;Fylgjer GDPR / CCPA / LGPD
+  - 🪙 &nbsp;Standard IABv2-publikumsmåling
+  - 🏡 &nbsp;Eigen analyse, heilt utan utanforståande tredjepartar
+- 📢 &nbsp;Innebygd marknadsføring:
+  - ✅ &nbsp;Søkjemotorvenleg (open-graph meta-knaggar, JSON-LD, …)
+  - 📱 &nbsp;PWA: installer som frittståande app
+  - 🎨 &nbsp;Bruk eigne fargar
+  - 🎬 &nbsp;Lag og del filmklypp frå episodane
+  - 🔉 &nbsp;Lag lydbetar
+  - ▶️ &nbsp;Innbyggbar spelar, så du kan spela episodane dine på ein kvar
+    nettstad
+- 💸 &nbsp;Kommersialisering:
+  - 🔗 &nbsp;Donasjonslenker
+  - 📲 &nbsp;lytt-for-å-klikka-annonsar
+  - 🤝 &nbsp;value4value / WebMonetization
+- 📡 &nbsp;Kringkast episodane dine kvar som helst med RSS:
+  - 📱 &nbsp;På alle indeksar og appar: Podcast Index, Apple Podcasts, Spotify,
+    Google Podcasts, Deezer, Podcast Addict, Podfriend, …
+  - âš¡ &nbsp;Kringkast episodane dine straks med WebSub
+- 📥 &nbsp;Podkastimport: Flytt podkasten din til 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/oc/getting-started/install.md b/docs/src/oc/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/oc/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/oc/getting-started/security.md b/docs/src/oc/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/oc/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/oc/getting-started/update.md b/docs/src/oc/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/oc/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/oc/index.md b/docs/src/oc/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/oc/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/pl/getting-started/install.md b/docs/src/pl/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/pl/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/pl/getting-started/security.md b/docs/src/pl/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/pl/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/pl/getting-started/update.md b/docs/src/pl/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/pl/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/pl/index.md b/docs/src/pl/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/pl/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/pt-BR/getting-started/install.md b/docs/src/pt-BR/getting-started/install.md
new file mode 100644
index 0000000000..0edbbb39e9
--- /dev/null
+++ b/docs/src/pt-BR/getting-started/install.md
@@ -0,0 +1,166 @@
+---
+title: Instalação
+sidebarDepth: 3
+---
+
+# Como instalar o Castopod?
+
+Castopod foi pensado para ser fácil de instalar. Seja usando hospedagem dedicada
+ou compartilhada, você pode instalá-lo na maioria dos servidores web compatíveis
+com PHP-MySQL.
+
+## Requisitos
+
+- PHP v8.0 ou superior
+- MySQL versão 5.7 ou superior ou MariaDB versão 10.2 ou superior
+- Suporte a HTTPS
+
+### PHP v8.0 ou superior
+
+É 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)
+- [mbstring](https://php.net/manual/en/mbstring.installation.php)
+- [gd](https://www.php.net/manual/en/image.installation.php) com **JPEG**,
+  **PNG** e bibliotecas **WEBP**.
+- [exif](https://www.php.net/manual/en/exif.installation.php)
+
+Além disso, certifique-se de que as seguintes extensões estejam habilitadas em
+seu PHP:
+
+- json (habilitado por padrão - não desativar)
+- xml (habilitado por padrão - não desativar)
+- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
+
+### Banco de dados compatível com MySQL
+
+> Recomendamos usar o [MariaDB](https://mariadb.org).
+
+::: 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.
+
+:::
+
+Você vai precisar do hostname do servidor, nome do banco de dados, nome do
+usuário e senha para concluir o processo de instalação. Se você não os tem,
+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`,
+`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:
+
+- Biblioteca **FreeType 2** para
+  [gd](https://www.php.net/manual/en/image.installation.php).
+
+### (Opcional) Outras recomendações
+
+- Redis para melhores desempenhos de cache.
+- CDN para cache de arquivos estáticos e melhores desempenhos.
+- gateway de e-mail para senhas perdidas.
+
+## Instruções de instalação
+
+### Pré-requisitos
+
+0. Obter um servidor web com os [requisitos](#requirements) instalados
+1. Criar um banco de dados MySQL para Castopod com um usuário com privilégios de
+   acesso e de modificação (para mais informações, ver o
+   [banco de dados compatível com MySQL](#mysql-compatible-database)).
+2. Ativar HTTPS em seu domínio com um _certificado SSL_.
+3. Baixar e descompactar o último [Pacote Castopod](https://castopod.org/) no
+   servidor web, se você ainda não o fez.
+   - ⚠️ Definir a raiz do documento do servidor web para a subpasta `public/`
+     dentro da pasta `castopod`.
+4. Adicionar **tarefas cron** no seu servidor web para vários processos em
+   segundo plano (substitua os caminhos adequadamente):
+
+   - Para que os recursos sociais funcionem corretamente, esta tarefa é usada
+     para transmitir atividades sociais para seus seguidores no fediverso:
+
+   ```bash
+      * * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities
+   ```
+
+   - Para que seus episódios sejam transmitidos em hubs abertos após a
+     publicação usando [WebSub](https://en.wikipedia.org/wiki/WebSub):
+
+   ```bash
+      * * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish
+   ```
+
+   - Para que os clipes de vídeo sejam criados (veja
+     [requisitos de FFmpeg](#ffmpeg-v418-or-higher-for-video-clips)):
+
+   ```bash
+      * * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips
+   ```
+
+   > Essas tarefas são executadas **a cada minuto**. Você pode definir a
+   > freqüência dependendo de suas necessidades: a cada 5, 10 minutos ou mais.
+
+### (recomendado) Assistente de Instalação
+
+1. Execute o script de instalação do Castopod acessando a página do assistente
+   de instalação (`https://your_domain_name.com/cp-install`) no seu navegador
+   favorito.
+2. Siga as instruções na sua tela.
+3. Comece o podcast!
+
+::: info Nota
+
+O script de instalação grava um arquivo `.env` na raiz do pacote. Se você não
+puder passar pelo assistente de instalação, você pode
+[criar e atualizar o arquivo `.env` manualmente](#alternative-manual-configuration).
+
+:::
+
+## Pacotes comunitários
+
+Se você não quiser se preocupar em instalar o Castopod manualmente, você pode
+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
+dificuldades de auto-hospedagem para você.
+
+<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="Instalar Castopod com 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>
+
+### Instalar com o Docker
+
+Se você deseja usar o Docker para instalar o Castopod, é possível graças 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]">Instalar
+com o
+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
+
+Dado o alto nível de demanda por docker, planejamos manter uma imagem oficial do
+Castopod Docker diretamente no repositório do Castopod.
+
+:::
diff --git a/docs/src/pt-BR/getting-started/security.md b/docs/src/pt-BR/getting-started/security.md
new file mode 100644
index 0000000000..c4104d9a89
--- /dev/null
+++ b/docs/src/pt-BR/getting-started/security.md
@@ -0,0 +1,28 @@
+---
+title: Segurança
+---
+
+# Questões de segurança
+
+Castopod é construído sobre [CodeIgniter4](https://codeigniter.com/), um
+framework PHP que encoraja
+[boas práticas de segurança](https://codeigniter.com/user_guide/concepts/security.html).
+
+Para maximizar a segurança da sua instância e prevenir qualquer ataque
+malicioso, nós recomendamos que você atualize todas as suas permissões de
+arquivos do Castopod após a instalação ou atualizações (para evitar qualquer
+erro de permissão anterior):
+
+- A pasta `writable/` deve ser **legível (readable)** e **gravável (writable)**.
+- A pasta `public/media/` deve ser **legível (readable)** e **gravável
+  (writable)**.
+- qualquer outro arquivo deve ser definido como **somente leitura (readonly)**.
+
+Por exemplo, se você estiver usando Apache ou NGINX com Ubuntu, você pode fazer
+o seguinte:
+
+```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/pt-BR/getting-started/update.md b/docs/src/pt-BR/getting-started/update.md
new file mode 100644
index 0000000000..18449201d3
--- /dev/null
+++ b/docs/src/pt-BR/getting-started/update.md
@@ -0,0 +1,95 @@
+---
+title: Atualização
+sidebarDepth: 3
+---
+
+# Como atualizar o Castopod?
+
+Depois de instalar o Castopod, você pode querer atualizar sua instância para a
+última versão para desfrutar das últimas funcionalidades ✨, correção de bugs 🐛
+e melhorias de desempenho âš¡.
+
+## Instruções de atualização automática
+
+> Em breve... 👀
+
+## Instruções para atualização manual
+
+1. Vá para a
+   [página de versões](https://code.castopod.org/adaures/castopod/-/releases) e
+   veja se sua instância está atualizada com a última versão do Castopod
+
+   - cf.
+     [Onde posso encontrar minha versão do Castopod?](#where-can-i-find-my-castopod-version)
+
+2. Baixe o último pacote de versão chamado `Castopod Package`, você pode
+   escolher entre os arquivos `zip` ou `tar.gz`
+
+   - ⚠️ Certifique-se de baixar o pacote Castopod e **NÃO** o Código Fonte
+
+3. No seu servidor:
+
+   - Remova todos os arquivos, exceto `.env` e `public/media`
+   - Copie os novos arquivos do pacote baixado para o seu servidor
+
+     ::: info Nota
+
+     Talvez seja necessário redefinir as permissões de arquivos como durante o
+     processo de instalação. Verifique as
+     [Questões de segurança](./security.md).
+
+     :::
+
+4. Versões podem vir com instruções de atualização adicionais (veja a
+   [página de versões](https://code.castopod.org/adaures/castopod/-/releases)).
+   Geralmente são scripts de migração de banco de dados no formato `.sql` para
+   atualizar seu esquema de banco de dados.
+
+   - 👉 Certifique-se de executar os scripts em seu painel phpmyadmin ou use a
+     linha de comando para atualizar o banco de dados junto com os arquivos do
+     pacote!
+   - cf.
+     [Faz muito tempo que não atualizo minha instância… O que devo fazer?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
+
+5. Se você estiver usando redis, limpe seu cache.
+6. ✨ Aproveite sua instância atualizada, está tudo pronto!
+
+## Perguntas frequentes (FAQ)
+
+### Onde posso encontrar minha versão do Castopod?
+
+Vá para o painel de administração do Castopod, a versão é exibida no canto
+inferior esquerdo.
+
+Ou então, você pode encontrar a versão no arquivo
+`app > Config > Constants.php`.
+
+### Faz muito tempo que não atualizo minha instância… O que devo fazer?
+
+Sem problemas! Basta obter a versão mais recente, conforme descrito acima. Só
+que, ao passar pelas instruções da versão (4), execute-as sequencialmente, da
+mais antiga para a mais recente.
+
+> Você pode querer fazer backup de sua instância dependendo de quanto tempo você
+> não atualizou o Castopod.
+
+Por exemplo, se você estiver na `v1.0.0-alpha.42` e gostaria de atualizar para a
+`v1.0.0-beta.1`:
+
+0. (altamente recomendado) Faça um backup de seus arquivos e banco de dados.
+
+1. Baixe a versão mais recente, substitua seus arquivos enquanto mantém o `.env`
+   e `public/media`.
+
+2. Passe por cada instrução de atualização da versão sequencialmente (a partir
+   da mais antiga até a mais recente) começando com `v1.0.0-alpha.43`,
+   `v1.0.0-alpha.44`, `v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
+
+3. ✨ Aproveite sua instância atualizada, está tudo pronto!
+
+### Devo fazer um backup antes de atualizar?
+
+Aconselhamos você a fazer, assim você não perde tudo se algo der errado!
+
+De forma mais geral, recomendamos que você faça backups regulares dos seus
+arquivos de Castopod e banco de dados para evitar que você perca tudo…
diff --git a/docs/src/pt-BR/index.md b/docs/src/pt-BR/index.md
new file mode 100644
index 0000000000..a3591bd879
--- /dev/null
+++ b/docs/src/pt-BR/index.md
@@ -0,0 +1,219 @@
+---
+sidebarDepth: 2
+---
+
+# Bem-vindo 👋
+
+[![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 é uma plataforma de hospedagem de código livre & aberto feita para
+podcasters que querem se envolver e interagir com seu público.
+
+Castopod é fácil de instalar e foi construído em cima do
+[CodeIgniter4](https://codeigniter.com/), um poderoso framework PHP com uma
+pegada muito pequena.
+
+::: info Status
+
+O Castopod está atualmente em **beta**, mas já bastante estável e usado por
+podcasters em todo o mundo!
+
+:::
+
+<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">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
+
+- 🌱 &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;Rede social integrada:
+  - 🚀 &nbsp;Castopod é parte do Fediverso, uma rede social descentralizada
+  - ❤️ &nbsp;Crie publicações, compartilhe, favorite e comente em episódios
+- 📈 &nbsp;Estatísticas integradas:
+  - ⚖️ &nbsp;Compatível com GDPR / CCPA / LGPD
+  - 🪙 &nbsp;Medição de audiência no padrão do IABv2
+  - 🏡 &nbsp;Estatísticas feitas localmente, sem terceiros envolvidos
+- 📢 &nbsp;Ferramentas de marketing integradas:
+  - ✅ &nbsp;Pronto para SEO (meta-tags de open-graph, JSON-LD, …)
+  - 📱 &nbsp;PWA: instalar como um aplicativo autônomo
+  - 🎨 &nbsp;Cores de tema personalizáveis
+  - 🎬 &nbsp;Gere clipes de vídeo prontos para compartilhar a partir dos
+    episódios
+  - 🔉 &nbsp;Gere clipes de áudio
+  - ▶️ &nbsp;Player incorporável, incorpore seus episódios em qualquer site
+- 💸 &nbsp;Monetização:
+  - 🔗 &nbsp;Links de financiamento
+  - 📲 &nbsp;anúncios clique-para-ouvir
+  - 🤝 &nbsp;value4value / WebMonetization
+- 📡 &nbsp;Publique seus episódios em qualquer lugar com RSS:
+  - 📱 &nbsp;Em todos os agregadores e aplicativos: Podcast Index, Apple
+    Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, …
+  - ⚡ &nbsp;Transmita seus episódios instantaneamente com WebSub
+- 📥 &nbsp;Importação de Podcast: mova seu podcast existente para o Castopod
+- 📤 &nbsp;Mova seu podcast para fora do Castopod
+- 🔀 &nbsp;Multi-inquilino: hospede quantos podcasts você quiser
+- 👥 &nbsp;Multi-usuário: adicione contribuidores e defina cargos
+- 🌎 &nbsp;Suporte i18n: traduzido em inglês, francês, polonês, português
+  brasileiro, alemão e norueguês... e com mais a caminho!
+
+## Motivação
+
+O ecossistema de podcasting é descentralizado por natureza: você pode criar seu
+podcast como um arquivo RSS, publicar na web e compartilhar em qualquer lugar
+online.
+
+Na verdade, é um dos únicos meios de comunicação que permaneceram assim por
+muito tempo.
+
+À medida que os usos estão evoluindo, mais e mais pessoas estão entrando em
+podcasts: sejam criadores encontrando novas maneiras de compartilhar suas ideias
+ou então ouvintes em busca de melhor conteúdo.
+
+Com a mídia podcast se tornando mais amplamente utilizada, algumas empresas
+estão tentando mudá-la para um meio mais controlado e centralizado.
+
+O Castopod foi criado em um esforço para fornecer uma alternativa aberta e
+sustentável para hospedar seus podcasts, promovendo a descentralização para
+garantir que a criatividade dos podcasters possa se expressar.
+
+Este projeto é impulsionado pela comunidade de código aberto e, especificamente,
+pelo [Fediverso](https://fediverse.party/en/fediverse/) e movimentos
+[Podcasting 2.0](https://podcastindex.org/).
+
+## Comparação com outras soluções
+
+Acreditamos que uma solução não é necessariamente certa para todos, depende
+muito de suas necessidades. Então, aqui estão comparações com outras ferramentas
+para ajudá-lo a avaliar se o Castopod é o ideal para você.
+
+### Castopod vs Wordpress
+
+Castopod é frequentemente referido como "o Wordpress para podcasts" por causa
+das semelhanças entre os dois. De certa forma, isso é verdade. E, na verdade, o
+Castopod foi muito inspirado no ecossistema do Wordpress, vendo a facilidade de
+adoção da comunidade e o número de sites rodando ele.
+
+Assim como o Wordpress, o Castopod é livre e de código aberto, compilado
+utilizando PHP com um banco de dados MySQL e é empacotado de uma forma que você
+pode facilmente instalar na maioria dos servidores.
+
+Wordpress é uma ótima maneira de criar seu site e expandi-lo com plugins para
+obter o que você quer. É um CMS completo que ajuda você a ter qualquer tipo de
+site online.
+
+Por outro lado, o Castopod destina-se a atender especificamente às necessidades
+dos podcasters, concentrando-se em podcasting e nada mais. Você não precisa de
+nenhum plug-in para começar sua jornada podcastal.
+
+Isso permite otimizar os processos específicos do podcasting: desde a criação de
+seus podcasts e a publicação de novos episódios até a transmissão, marketing e
+estatísticas.
+
+Finalmente, dependendo de suas necessidades, Wordpress e Castopod podem até
+conviver lado a lado, pois compartilham os mesmos requisitos!
+
+### Castopod vs Funkwhale
+
+Funkwhale é um servidor de música auto-hospedado, moderno, livre e de código
+aberto. Assim como o Castopod, o Funkwhale está no fediverso, uma rede social
+descentralizada que permite a interoperabilidade entre os dois.
+
+Funkwhale foi inicialmente construído em torno da música. E mais tarde, à medida
+que o projeto evoluiu, a capacidade de hospedar podcasts foi introduzida.
+
+Ao contrário do Funkwhale, o Castopod foi projetado e construído exclusivamente
+para podcasting. Isso permite uma implementação mais fácil para recursos
+relacionados ao ecossistema de podcasting, como os recursos de podcasting 2.0
+(transcrições, capítulos, locais, pessoas, …).
+
+Portanto, você provavelmente deve usar o Funkwhale se quiser hospedar sua música
+e usar o Castopod se quiser hospedar seus podcasts.
+
+### Castopod vs outras hospedagens de podcast
+
+Existem muitas soluções para você hospedar seus podcasts, alguns dos quais são
+realmente ótimas e [muitas delas](https://podcastindex.org/apps) estão entrando
+na onda do Podcasting 2.0 assim como o Castopod!
+
+Cada uma dessas soluções difere uma da outra, você pode comparar com a
+[lista de recursos](#features).
+
+Dito isto, existem duas diferenças principais com outras soluções de podcasting:
+
+- Castopod pode ser auto-hospedado e é a única solução que permite manter o
+  controle total sobre o que você produz. Além disso, como é de código aberto,
+  você pode até personalizá-lo como desejar.
+
+- O Castopod é a única solução que atualmente integra uma rede social
+  descentralizada com o ActivityPub, bem como muitos dos recursos de podcasting
+  2.0, na esperança de preencher a lacuna entre as duas.
+
+## Contribuir
+
+Gostou do Castopod e gostaria de ajudar? Dê uma olhada na seguinte documentação
+para você começar.
+
+### Código de conduta
+
+Castopod adotou um Código de Conduta que esperamos que os participantes do
+projeto sigam. Por favor, leia o
+[manual CODE_OF_CONDUCT](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
+para que você possa entender quais ações serão e não serão toleradas.
+
+### Guia de contribuição
+
+Leia nosso [guia de contribuição](./contributing/guidelines.md) para saber mais
+sobre nosso processo de desenvolvimento, como propor correções de bugs e
+melhorias e como compilar e testar suas alterações no Castopod.
+
+## Contato
+
+Você pode nos contatar para obter ajuda ou fazer qualquer pergunta que tenha em:
+
+- [Discord](https://castopod.org/discord) (para interação direta com
+  desenvolvedores e a comunidade)
+- [Rastreador de problemas](https://code.castopod.org/adaures/castopod/-/issues)
+  (para solicitações de recursos e relatos de bugs)
+
+Como alternativa, você pode nos seguir nas redes sociais para obter notícias
+sobre o Castopod:
+
+- [podlibre.social](https://podlibre.social/@Castopod) (instância do Mastodon)
+- [Twitter](https://twitter.com/castopod)
+- [LinkedIn](https://linkedin.com/company/castopod)
+- [Facebook](https://www.facebook.com/castopod)
+
+## Patrocinadores
+
+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).
+
+<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>
+  <a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="Logo da NLnet" class="h-16" /></a>
+</div>
+
+## Licença
+
+[Licença Pública Geral GNU Affero 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
+[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/pt/getting-started/install.md b/docs/src/pt/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/pt/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/pt/getting-started/security.md b/docs/src/pt/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/pt/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/pt/getting-started/update.md b/docs/src/pt/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/pt/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/pt/index.md b/docs/src/pt/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/pt/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/ru/getting-started/install.md b/docs/src/ru/getting-started/install.md
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/ru/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/ru/getting-started/security.md b/docs/src/ru/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/ru/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/ru/getting-started/update.md b/docs/src/ru/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/ru/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/ru/index.md b/docs/src/ru/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/ru/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
new file mode 100644
index 0000000000..7d35b296f1
--- /dev/null
+++ b/docs/src/sv/getting-started/install.md
@@ -0,0 +1,162 @@
+---
+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.
+
+## 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
+
+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/sv/getting-started/security.md b/docs/src/sv/getting-started/security.md
new file mode 100644
index 0000000000..e205698df8
--- /dev/null
+++ b/docs/src/sv/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/sv/getting-started/update.md b/docs/src/sv/getting-started/update.md
new file mode 100644
index 0000000000..1f48e27492
--- /dev/null
+++ b/docs/src/sv/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/sv/index.md b/docs/src/sv/index.md
new file mode 100644
index 0000000000..161b99403a
--- /dev/null
+++ b/docs/src/sv/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/modules/Admin/Language/ar/Breadcrumb.php b/modules/Admin/Language/ar/Breadcrumb.php
index 0a26229896..396ae47444 100644
--- a/modules/Admin/Language/ar/Breadcrumb.php
+++ b/modules/Admin/Language/ar/Breadcrumb.php
@@ -33,12 +33,12 @@ return [
     'change-password' => 'تغيير الكلمة السرية',
     'import' => 'feed import',
     'platforms' => 'منصات',
-    'social' => 'social networks',
+    'social' => 'شبكات التواصل الاجتماعي',
     'funding' => 'funding',
     'analytics' => 'analytics',
     'locations' => 'locations',
-    'webpages' => 'web pages',
-    'unique-listeners' => 'unique listeners',
+    'webpages' => 'صفحات ويب',
+    'unique-listeners' => 'مستمعون فريدون',
     'players' => 'players',
     'listening-time' => 'listening time',
     'time-periods' => 'time periods',
diff --git a/modules/Admin/Language/ar/Common.php b/modules/Admin/Language/ar/Common.php
index 1bdd4f01cd..9021d57efb 100644
--- a/modules/Admin/Language/ar/Common.php
+++ b/modules/Admin/Language/ar/Common.php
@@ -32,13 +32,13 @@ return [
             'help' => 'Powered by markdown',
         ],
         'multiSelect' => [
-            'selectText' => 'Press to select',
-            'loadingText' => 'Loading…',
-            'noResultsText' => 'No results found',
+            'selectText' => 'اضغط للاختيار',
+            'loadingText' => 'جارٍ التحميل…',
+            'noResultsText' => 'لم يتم العثور على نتائج',
             'noChoicesText' => 'No choices to choose from',
             'maxItemText' => 'Cannot add more items',
         ],
-        'upload_file' => 'Upload a file',
+        'upload_file' => 'إرسال ملف',
         'remote_url' => 'Remote URL',
     ],
     'play_episode_button' => [
diff --git a/modules/Admin/Language/ar/Countries.php b/modules/Admin/Language/ar/Countries.php
index 1a9b33e023..a55d3d6021 100644
--- a/modules/Admin/Language/ar/Countries.php
+++ b/modules/Admin/Language/ar/Countries.php
@@ -157,9 +157,9 @@ return [
     'MK' => 'Macedonia, the Former Yugoslav Republic of',
     'ML' => 'مالي',
     'MM' => 'ميانمار',
-    'MN' => 'Mongolia',
-    'MO' => 'Macao',
-    'MP' => 'Northern Mariana Islands',
+    'MN' => 'منغوليا',
+    'MO' => 'ماكاو',
+    'MP' => 'جزر ماريانا الشمالية',
     'MQ' => 'Martinique',
     'MR' => 'موريتانيا',
     'MS' => 'مونتسيرات',
@@ -190,23 +190,23 @@ return [
     'PG' => 'بابوا غينيا الجديدة',
     'PH' => 'الفيليبين',
     'PK' => 'باكستان',
-    'PL' => 'Poland',
+    'PL' => 'بولندا',
     'PM' => 'Saint Pierre and Miquelon',
     'PN' => 'Pitcairn',
     'PR' => 'Puerto Rico',
-    'PS' => 'Palestine, State of',
-    'PT' => 'Portugal',
-    'PW' => 'Palau',
-    'PY' => 'Paraguay',
-    'QA' => 'Qatar',
+    'PS' => 'دولة فلسطين',
+    'PT' => 'البرتغال',
+    'PW' => 'بالاو',
+    'PY' => 'البراغواي',
+    'QA' => 'قطر',
     'RE' => 'Réunion',
-    'RO' => 'Romania',
-    'RS' => 'Serbia',
-    'RU' => 'Russian Federation',
-    'RW' => 'Rwanda',
-    'SA' => 'Saudi Arabia',
-    'SB' => 'Solomon Islands',
-    'SC' => 'Seychelles',
+    'RO' => 'رومانيا',
+    'RS' => 'صربيا',
+    'RU' => 'روسيا الاتحادية',
+    'RW' => 'رواندا',
+    'SA' => 'العربية السعودية',
+    'SB' => 'جزر سليمان',
+    'SC' => 'سيشيل',
     'SD' => 'السودان',
     'SE' => 'السويد',
     'SG' => 'سنغافورة',
diff --git a/modules/Admin/Language/ar/Episode.php b/modules/Admin/Language/ar/Episode.php
index 0e41bb0782..ff5a70a1f8 100644
--- a/modules/Admin/Language/ar/Episode.php
+++ b/modules/Admin/Language/ar/Episode.php
@@ -14,7 +14,7 @@ return [
     'number' => 'الحلقة {episodeNumber}',
     'number_abbr' => 'الحلقة {episodeNumber}',
     'season_episode' => 'الموسم {seasonNumber} الحلقة {episodeNumber}',
-    'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}',
+    'season_episode_abbr' => 'Ù…{seasonNumber}Ø­{episodeNumber}',
     'number_of_comments' => '{numberOfComments, plural,
         one {# comment}
         other {# comments}
@@ -23,45 +23,45 @@ return [
     'back_to_podcast' => 'العودة إلى البودكاست',
     'edit' => 'تعديل',
     'publish' => 'نشر',
-    'publish_edit' => 'Edit publication',
-    'unpublish' => 'Unpublish',
+    'publish_edit' => 'تعديل المنشور',
+    '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.',
+    'unpublish_error' => 'الحلقة غير منشورة.',
     'delete' => 'احذف',
     'go_to_page' => 'الانتقال إلى الصفحة',
     'create' => 'إضافة حلقة',
     'publication_status' => [
-        'published' => 'Published',
-        'scheduled' => 'Scheduled',
-        'not_published' => 'Not published',
+        'published' => 'نُشِرَت',
+        'scheduled' => 'مُبَرمَجة',
+        'not_published' => 'غير منشورة',
     ],
     'list' => [
         'episode' => 'الحلقة',
-        'visibility' => 'Visibility',
+        'visibility' => 'الظهور',
         'comments' => 'التعليقات',
         'actions' => 'الإجراءات',
     ],
     'messages' => [
-        'createSuccess' => 'Episode has been successfully created!',
-        'editSuccess' => 'Episode has been successfully updated!',
-        'publishCancelSuccess' => 'Episode publication successfully cancelled!',
+        'createSuccess' => 'تم إنشاء الحلقة بنجاح!',
+        'editSuccess' => 'تم تحديث الحلقة بنجاح!',
+        'publishCancelSuccess' => 'تم إلغاء نشر الحلقة بنجاح!',
     ],
     '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_hint' => 'Choose an .mp3 or .m4a audio file.',
-        'info_section_title' => 'Episode info',
-        'cover' => 'Episode cover',
+        'info_section_title' => 'معلومات الحلقة',
+        '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.',
         'title' => 'العنوان',
         'title_hint' =>
             'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
-        'permalink' => 'Permalink',
+        'permalink' => 'الرابط الدائم',
         'season_number' => 'الموسم',
         'episode_number' => 'الحلقة',
         'type' => [
@@ -87,7 +87,7 @@ return [
         '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_title' => 'ملفات إضافية',
         'additional_files_section_subtitle' =>
             'These files may be used by other platforms to provide better experience to your audience.<br />See the {podcastNamespaceLink} for more information.',
         'location_section_title' => 'Location',
@@ -122,8 +122,8 @@ return [
         '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',
+        'message_placeholder' => 'اكتب رسالتك…',
+        'publication_date' => 'تاريخ النشر',
         'publication_method' => [
             'now' => 'الآن',
             'schedule' => 'برمجة',
@@ -133,8 +133,8 @@ return [
         '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',
+        'submit_edit' => 'تعديل المنشور',
+        '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',
@@ -143,7 +143,7 @@ return [
         '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',
+        'submit' => 'إلغاء النشر',
     ],
     'delete_form' => [
         'disclaimer' =>
@@ -157,8 +157,8 @@ return [
             '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',
+        'dark' => 'داكن',
+        'dark-transparent' => 'داكن شفاف',
         'light' => 'Light',
         'light-transparent' => 'Light transparent',
     ],
diff --git a/modules/Admin/Language/ar/EpisodeNavigation.php b/modules/Admin/Language/ar/EpisodeNavigation.php
index 2f788b16f2..33409c678f 100644
--- a/modules/Admin/Language/ar/EpisodeNavigation.php
+++ b/modules/Admin/Language/ar/EpisodeNavigation.php
@@ -16,7 +16,7 @@ return [
     'episode-persons-manage' => 'Manage persons',
     'embed-add' => 'Embeddable player',
     'clips' => 'Clips',
-    'video-clips-list' => 'Video clips',
+    'video-clips-list' => 'مقاطع فيديو',
     'video-clips-create' => 'New video clip',
     'soundbites-list' => 'Soundbites',
     'soundbites-create' => 'New soundbite',
diff --git a/modules/Admin/Language/ar/Install.php b/modules/Admin/Language/ar/Install.php
index e8bedfca07..ffca09437b 100644
--- a/modules/Admin/Language/ar/Install.php
+++ b/modules/Admin/Language/ar/Install.php
@@ -43,7 +43,7 @@ return [
             'redis' => 'Redis',
             'predis' => 'Predis',
         ],
-        'next' => 'Next',
+        'next' => 'التالي',
         'submit' => 'إنهاء التثبيت',
         'create_superadmin' => 'Create your superadmin account',
         'email' => 'البريد الإلكتروني',
diff --git a/modules/Admin/Language/ar/Navigation.php b/modules/Admin/Language/ar/Navigation.php
index 49a4c93992..f264138acd 100644
--- a/modules/Admin/Language/ar/Navigation.php
+++ b/modules/Admin/Language/ar/Navigation.php
@@ -24,8 +24,8 @@ return [
     'fediverse' => 'الفديفرس',
     'fediverse-blocked-actors' => 'الحسابات المحظورة',
     'fediverse-blocked-domains' => 'النطاقات المحظورة',
-    'users' => 'Users',
-    'user-list' => 'All users',
+    'users' => 'مستخدمون',
+    'user-list' => 'كافة المستخدمين',
     'user-create' => 'مستخدم جديد',
     'pages' => 'الصفحات',
     'page-list' => 'كافة الصفحات',
diff --git a/modules/Admin/Language/ar/Page.php b/modules/Admin/Language/ar/Page.php
index 2da89b6308..d4145ddc21 100644
--- a/modules/Admin/Language/ar/Page.php
+++ b/modules/Admin/Language/ar/Page.php
@@ -25,6 +25,6 @@ return [
     ],
     'messages' => [
         'createSuccess' => 'The page “{pageTitle}” was created successfully!',
-        'editSuccess' => 'The page was successfully updated!',
+        'editSuccess' => 'تم تحديث الصفحة بنجاح!',
     ],
 ];
diff --git a/modules/Admin/Language/ar/Person.php b/modules/Admin/Language/ar/Person.php
index 72feda82c6..ac2d43c707 100644
--- a/modules/Admin/Language/ar/Person.php
+++ b/modules/Admin/Language/ar/Person.php
@@ -22,7 +22,7 @@ return [
         'deleteSuccess' => 'Person has been removed!',
     ],
     'form' => [
-        'avatar' => 'Avatar',
+        'avatar' => 'الصورة الرمزية',
         'avatar_size_hint' =>
             'Avatar must be squared with at least 400px wide and tall.',
         'full_name' => 'الإسم الكامل',
diff --git a/modules/Admin/Language/ar/Podcast.php b/modules/Admin/Language/ar/Podcast.php
index 09216c9ab1..f0aadbb531 100644
--- a/modules/Admin/Language/ar/Podcast.php
+++ b/modules/Admin/Language/ar/Podcast.php
@@ -9,10 +9,10 @@ declare(strict_types=1);
  */
 
 return [
-    'all_podcasts' => 'All podcasts',
+    'all_podcasts' => 'كافة البودكاستات',
     'no_podcast' => 'No podcast found!',
-    'create' => 'Create podcast',
-    'import' => 'Import podcast',
+    'create' => 'إنشاء بودكاست',
+    'import' => 'استيراد بودكاست',
     'new_episode' => 'حلقة جديدة',
     'view' => 'View podcast',
     'edit' => 'Edit podcast',
diff --git a/modules/Admin/Language/br/Breadcrumb.php b/modules/Admin/Language/br/Breadcrumb.php
index 86ce9bb524..9259d07094 100644
--- a/modules/Admin/Language/br/Breadcrumb.php
+++ b/modules/Admin/Language/br/Breadcrumb.php
@@ -27,7 +27,7 @@ return [
     'unpublish' => 'diembannañ',
     'delete' => 'dilemel',
     'fediverse' => 'kevrebed',
-    'block-lists' => 'roll ar re harzet',
+    'block-lists' => 'roll ar re stanket',
     'users' => 'implijerien·ezed',
     'my-account' => "ma c'hont",
     'change-password' => 'kemmañ ar ger-tremen',
diff --git a/modules/Admin/Language/br/Charts.php b/modules/Admin/Language/br/Charts.php
index dd6686564d..f737d0c006 100644
--- a/modules/Admin/Language/br/Charts.php
+++ b/modules/Admin/Language/br/Charts.php
@@ -9,30 +9,30 @@ declare(strict_types=1);
  */
 
 return [
-    'by_service_weekly' => 'Pellgargadurioù eus ar rannoù dre servij (e-pad ar sizhunvezh tremenet)',
-    'by_player_weekly' => 'Pellgargadurioù eus ar rannoù dre lenner (e-pad ar sizhunvezh tremenet)',
-    'by_player_yearly' => 'Pellgargadurioù eus ar rannoù dre servij (e-pad ar bloavezh tremenet)',
-    'by_device_weekly' => 'Pellgargadurioù eus ar rannoù dre venveg (e-pad ar sizhunvezh tremenet)',
-    'by_os_weekly' => 'Pellgargadurioù eus ar rannoù dre OS (e-pad ar sizhunvezh tremenet)',
-    'podcast_by_region' => 'Pellgargadurioù eus ar rannoù dre vro (e-pad ar sizhunvezh tremenet)',
-    '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',
+    'by_service_weekly' => 'Pellgargadurioù ar rannoù dre servij (e-pad ar sizhunvezh tremenet)',
+    'by_player_weekly' => 'Pellgargadurioù ar rannoù dre lenner (e-pad ar sizhunvezh tremenet)',
+    'by_player_yearly' => 'Pellgargadurioù ar rannoù dre servij (e-pad ar bloavezh tremenet)',
+    'by_device_weekly' => 'Pellgargadurioù ar rannoù dre venveg (e-pad ar sizhunvezh tremenet)',
+    'by_os_weekly' => 'Pellgargadurioù ar rannoù dre OS (e-pad ar sizhunvezh tremenet)',
+    'podcast_by_region' => 'Pellgargadurioù ar rannoù dre vro (e-pad ar sizhunvezh tremenet)',
+    'unique_daily_listeners' => 'Selaouerien·ezed unel pemdeziek',
+    'unique_monthly_listeners' => 'Selaouerien·ezed unel miziek',
+    'by_browser' => 'Darempred gant ar pajennoù web dre verdeer (e-pad ar sizhun tremenet)',
+    'podcast_by_day' => 'Pellgargadurioù pemdeziek ar rannoù',
+    'podcast_by_month' => 'Pellgargadurioù miziek ar rannoù',
+    'episode_by_day' => 'Pellgargadurioù pemdeziek ar rannoù (an 60 deizioù kentañ)',
+    'episode_by_month' => 'Pellgargadurioù miziek ar rannoù',
     '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)',
+        'Pellgargadurioù ar 5 rannoù diwezhañ (an 60 deizioù kentañ)',
+    'by_country_weekly' => 'Pellgargadurioù ar rannoù dre vro (e-pad ar sizhunvezh tremenet)',
+    'by_country_yearly' => 'Pellgargadurioù ar rannoù dre vro (e-pad ar bloavezh tremenet)',
+    'by_domain_weekly' => 'Darempred gant ar pajennoù web dre orin (e-pad ar sizhun tremenet)',
+    'by_domain_yearly' => 'Darempred gant ar pajennoù web dre orin (e-pad ar bloavezh tremenet)',
+    'by_entry_page' => 'Darempred gant ar pajennoù web dre bajenn vont-tre (e-pad ar sizhun tremenet)',
+    'podcast_bots' => 'Robotoù (crawlers)',
+    'daily_listening_time' => 'Sammad pemdeziek ar badelezh selaou',
+    'monthly_listening_time' => 'Sammad miziek ar badelezh selaou',
+    'by_weekday' => 'Dre zeiz ar sizhun (e-pad an 60 devezh diwezhañ)',
+    'by_hour' => 'Dre eur an devezh (e-pad an 60 devezh diwezhañ)',
+    'podcast_by_bandwidth' => "Lec'hed bann implijet bemdez (e MB)",
 ];
diff --git a/modules/Admin/Language/br/Common.php b/modules/Admin/Language/br/Common.php
index d97bcf991f..cbcb76c9ae 100644
--- a/modules/Admin/Language/br/Common.php
+++ b/modules/Admin/Language/br/Common.php
@@ -9,41 +9,41 @@ declare(strict_types=1);
  */
 
 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',
+    'yes' => 'Ya',
+    'no' => 'Ket',
+    'cancel' => 'Nullañ',
+    'optional' => 'Diret',
+    'more' => "Muioc'h",
+    'no_data' => 'Roadenn ebet kavet!',
+    'close' => 'Serriñ',
+    'edit' => 'Kemmañ',
+    'copy' => 'Eilañ',
+    'copied' => 'Eilet!',
+    'home' => 'Degemer',
+    'explicit' => "Endalc'had evit an oadourien",
+    'powered_by' => 'Lusket gant {castopod}',
+    'actions' => 'Obererezhioù',
+    'pageInfo' => 'Pajenn {currentPage} diwar {pageCount}',
+    'go_back' => 'Mont war-gil',
     'forms' => [
         'editor' => [
-            'write' => 'Write',
-            'preview' => 'Preview',
-            'help' => 'Powered by markdown',
+            'write' => 'Skrivañ',
+            'preview' => 'Alberz',
+            'help' => 'Lusket gant markdown',
         ],
         'multiSelect' => [
-            'selectText' => 'Press to select',
-            'loadingText' => 'Loading…',
-            'noResultsText' => 'No results found',
-            'noChoicesText' => 'No choices to choose from',
-            'maxItemText' => 'Cannot add more items',
+            'selectText' => 'Pouezañ da ziuzañ',
+            'loadingText' => 'O kargañ…',
+            'noResultsText' => "Disoc'h ebet kavet",
+            'noChoicesText' => "N'eus dibab ebet da ziuzañ",
+            'maxItemText' => "N'haller ket ouzhpennañ elfennoù all",
         ],
-        'upload_file' => 'Upload a file',
-        'remote_url' => 'Remote URL',
+        'upload_file' => 'Uskargit ur restr',
+        'remote_url' => 'URL a-bell',
     ],
     'play_episode_button' => [
-        'play' => 'Play',
-        'playing' => 'Playing',
+        'play' => 'Lenn',
+        'playing' => 'O lenn',
     ],
-    'size_limit' => 'Size limit: {0}.',
+    'size_limit' => 'Bevenn ar vent: {0}.',
 ];
diff --git a/modules/Admin/Language/br/Contributor.php b/modules/Admin/Language/br/Contributor.php
index 6d33ab630f..637fe9f125 100644
--- a/modules/Admin/Language/br/Contributor.php
+++ b/modules/Admin/Language/br/Contributor.php
@@ -9,33 +9,33 @@ declare(strict_types=1);
  */
 
 return [
-    'podcast_contributors' => 'Podcast contributors',
+    'podcast_contributors' => 'Perzhidi ha perzhiadezed ar podkast',
     'view' => "Perzh {username} e {podcastTitle}",
-    'add' => 'Add contributor',
-    'add_contributor' => 'Add a contributor for {0}',
-    'edit_role' => 'Update role for {0}',
-    'edit' => 'Edit',
-    'remove' => 'Remove',
+    'add' => 'Ouzhpennañ ur perzhiad pe ur berzhiadez',
+    'add_contributor' => 'Ouzhpennañ ur perzhiad pe ur berzhiadez da {0}',
+    'edit_role' => 'Hizivaat roll {0}',
+    'edit' => 'Kemmañ',
+    'remove' => 'Lemel',
     'list' => [
         'username' => 'Anv implijer·ez',
-        'role' => 'Role',
+        'role' => 'Roll',
     ],
     'form' => [
         'user' => 'Implijer·ez',
         'user_placeholder' => 'Dibabit un implijer·ez…',
-        'role' => 'Role',
-        'role_placeholder' => 'Select its role…',
-        'submit_add' => 'Add contributor',
-        'submit_edit' => 'Update role',
+        'role' => 'Roll',
+        'role_placeholder' => 'Dibabit e·he roll…',
+        'submit_add' => 'Ouzhpennañ ur perzhiad pe ur berzhiadez',
+        'submit_edit' => 'Hizivaat ar roll',
     ],
     'roles' => [
-        'podcast_admin' => 'Podcast admin',
+        'podcast_admin' => 'Merour podkastoù',
     ],
     'messages' => [
-        'removeOwnerError' => "You can't remove the podcast owner!",
+        'removeOwnerError' => "Ne c'hellit ket lemel perc'henn ar podkast!",
         'removeSuccess' =>
             'Lamet ho peus {username} diouzh {podcastTitle} gant berzh',
         'alreadyAddedError' =>
-            "The contributor you're trying to add has already been added!",
+            "Ar perzhiad pe ar berzhiadez emaoc'h o klask ouzhpennañ zo bet ouzhpennet dija!",
     ],
 ];
diff --git a/modules/Admin/Language/br/Countries.php b/modules/Admin/Language/br/Countries.php
index 4cd5d9c857..c7c3bbcabc 100644
--- a/modules/Admin/Language/br/Countries.php
+++ b/modules/Admin/Language/br/Countries.php
@@ -12,253 +12,253 @@ declare(strict_types=1);
 
 return [
     'AD' => 'Andorra',
-    'AE' => 'United Arab Emirates',
-    'AF' => 'Afghanistan',
-    'AG' => 'Antigua and Barbuda',
+    'AE' => 'Emirelezhioù-Arab-Unanet',
+    'AF' => 'Afganistan',
+    'AG' => 'Antigua ha Barbuda',
     'AI' => 'Anguilla',
-    'AL' => 'Albania',
+    'AL' => 'Albani',
     'AM' => 'Armenia',
     'AO' => 'Angola',
-    'AQ' => 'Antarctica',
-    'AR' => 'Argentina',
-    'AS' => 'American Samoa',
-    'AT' => 'Austria',
-    'AU' => 'Australia',
+    'AQ' => 'Antarktik',
+    'AR' => "Arc'hantin",
+    'AS' => 'Samoa Amerikan',
+    'AT' => 'Aostria',
+    'AU' => 'Aostralia',
     'AW' => 'Aruba',
-    'AX' => 'Ã…land Islands',
-    'AZ' => 'Azerbaijan',
-    'BA' => 'Bosnia and Herzegovina',
+    'AX' => 'Ã…land, Inizi',
+    'AZ' => 'Azerbaidjan',
+    'BA' => 'Bosnia ha Herzegovina',
     'BB' => 'Barbados',
     'BD' => 'Bangladesh',
-    'BE' => 'Belgium',
+    'BE' => 'Belgia',
     'BF' => 'Burkina Faso',
-    'BG' => 'Bulgaria',
-    'BH' => 'Bahrain',
+    'BG' => 'Bulgari',
+    'BH' => 'Bahrein',
     'BI' => 'Burundi',
     'BJ' => 'Benin',
-    'BL' => 'Saint Barthélemy',
+    'BL' => 'Sant-Barteleme',
     'BM' => 'Bermuda',
     'BN' => 'Brunei Darussalam',
-    'BO' => 'Bolivia, Plurinational State of',
-    'BQ' => 'Bonaire, Sint Eustatius and Saba',
+    'BO' => 'Bolivia, Stad Liesvroadel',
+    'BQ' => 'Bonaire, Sint Eustatius ha Saba',
     'BR' => 'Brazil',
     'BS' => 'Bahamas',
-    'BT' => 'Bhutan',
-    'BV' => 'Bouvet Island',
+    'BT' => 'Bhoutan',
+    'BV' => 'Bouvet, Inez',
     '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',
+    'CA' => 'Kanada',
+    'CC' => 'Cocos (Keeleng), Inizi',
+    'CD' => 'Republik Demokratel Kongo',
+    'CF' => 'Kreizafrikan, Republik',
+    'CG' => 'Kongo',
+    'CH' => 'Suis',
+    'CI' => "Aod an Olifant",
+    'CK' => 'Inizi Cook',
     'CL' => 'Chile',
-    'CM' => 'Cameroon',
-    'CN' => 'China',
-    'CO' => 'Colombia',
+    'CM' => 'Kameroun',
+    'CN' => 'Sina',
+    'CO' => 'Kolombia',
     'CR' => 'Costa Rica',
-    'CU' => 'Cuba',
-    'CV' => 'Cape Verde',
-    'CW' => 'Curaçao',
-    'CX' => 'Christmas Island',
-    'CY' => 'Cyprus',
-    'CZ' => 'Czech Republic',
-    'DE' => 'Germany',
+    'CU' => 'Kuba',
+    'CV' => 'Kab Glas',
+    'CW' => 'Kòrsou',
+    'CX' => 'Christmas, Enez',
+    'CY' => 'Kiprenez',
+    'CZ' => 'Tchekia',
+    'DE' => 'Alamagn',
     'DJ' => 'Djibouti',
-    'DK' => 'Denmark',
-    'DM' => 'Dominica',
-    'DO' => 'Dominican Republic',
-    'DZ' => 'Algeria',
+    'DK' => 'Danmark',
+    'DM' => 'Dominika',
+    'DO' => 'Dominikan, Republik',
+    'DZ' => 'Aljeria',
     'EC' => 'Ecuador',
     'EE' => 'Estonia',
-    'EG' => 'Egypt',
-    'EH' => 'Western Sahara',
+    'EG' => 'Egipt',
+    'EH' => "Sahara ar C'hornôg",
     'ER' => 'Eritrea',
-    'ES' => 'Spain',
-    'ET' => 'Ethiopia',
+    'ES' => 'Spagn',
+    'ET' => 'Etiopia',
     'FI' => 'Finland',
-    'FJ' => 'Fiji',
-    'FK' => 'Falkland Islands (Malvinas)',
-    'FM' => 'Micronesia, Federated States of',
-    'FO' => 'Faroe Islands',
-    'FR' => 'France',
+    'FJ' => 'Fidji',
+    'FK' => 'Maloù, Inizi (Malvinas)',
+    'FM' => 'Mikronezia, Stadoù Kevreet',
+    'FO' => 'Faroe, Inizi',
+    'FR' => "Bro-C'hall",
     'GA' => 'Gabon',
-    'GB' => 'United Kingdom',
+    'GB' => 'Rouantelezh Unanet',
     'GD' => 'Grenada',
-    'GE' => 'Georgia',
-    'GF' => 'French Guiana',
-    'GG' => 'Guernsey',
+    'GE' => 'Jorjia',
+    'GF' => 'Gwian',
+    'GG' => 'Gwernenez',
     'GH' => 'Ghana',
-    'GI' => 'Gibraltar',
-    'GL' => 'Greenland',
+    'GI' => 'Jibraltar',
+    'GL' => 'Greunland',
     'GM' => 'Gambia',
-    'GN' => 'Guinea',
-    'GP' => 'Guadeloupe',
-    'GQ' => 'Equatorial Guinea',
-    'GR' => 'Greece',
-    'GS' => 'South Georgia and the South Sandwich Islands',
+    'GN' => 'Ginea',
+    'GP' => 'Gwadeloup',
+    'GQ' => 'Republik Ginea',
+    'GR' => 'Gres',
+    'GS' => 'Georgia ar Su hag Inizi Sandwich ar Su',
     'GT' => 'Guatemala',
     'GU' => 'Guam',
-    'GW' => 'Guinea-Bissau',
+    'GW' => 'Ginea-Bissau',
     'GY' => 'Guyana',
     'HK' => 'Hong Kong',
-    'HM' => 'Heard Island and McDonald Islands',
+    'HM' => 'Heard ha McDonald, Inizi',
     'HN' => 'Honduras',
-    'HR' => 'Croatia',
+    'HR' => 'Koatia',
     'HT' => 'Haiti',
-    'HU' => 'Hungary',
-    'ID' => 'Indonesia',
-    'IE' => 'Ireland',
+    'HU' => 'Hungaria',
+    'ID' => 'Indonezia',
+    'IE' => 'Iwerzhon',
     'IL' => 'Israel',
-    'IM' => 'Isle of Man',
-    'IN' => 'India',
+    'IM' => 'Enez-Vanav',
+    'IN' => 'Indez',
     'IO' => 'British Indian Ocean Territory',
-    'IQ' => 'Iraq',
-    'IR' => 'Iran, Islamic Republic of',
-    'IS' => 'Iceland',
-    'IT' => 'Italy',
-    'JE' => 'Jersey',
-    'JM' => 'Jamaica',
-    'JO' => 'Jordan',
-    'JP' => 'Japan',
+    'IQ' => 'Irak',
+    'IR' => 'Iran',
+    'IS' => 'Island',
+    'IT' => 'Italia',
+    'JE' => 'Jerzenez',
+    'JM' => 'Jamaika',
+    'JO' => 'Jordani',
+    'JP' => 'Japon',
     'KE' => 'Kenya',
-    'KG' => 'Kyrgyzstan',
-    'KH' => 'Cambodia',
+    'KG' => 'Kirgizstan',
+    'KH' => 'Kambodj',
     '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',
+    'KM' => 'Komor',
+    'KN' => 'Sant Kitts ha Nevis',
+    'KP' => "Korea, Republik Demokratel ha Poblel",
+    'KR' => 'Korea, Republik',
+    'KW' => 'Kowait',
+    'KY' => 'Cayman, Inizi',
+    'KZ' => 'Kazakstan',
     'LA' => "Lao People's Democratic Republic",
-    'LB' => 'Lebanon',
-    'LC' => 'Saint Lucia',
+    'LB' => 'Liban',
+    'LC' => 'Santez-Lusia',
     'LI' => 'Liechtenstein',
     'LK' => 'Sri Lanka',
     'LR' => 'Liberia',
     'LS' => 'Lesotho',
-    'LT' => 'Lithuania',
-    'LU' => 'Luxembourg',
+    'LT' => 'Lituania',
+    'LU' => 'Luksembourg',
     'LV' => 'Latvia',
-    'LY' => 'Libya',
-    'MA' => 'Morocco',
-    'MC' => 'Monaco',
-    'MD' => 'Moldova, Republic of',
+    'LY' => 'Libia',
+    'MA' => 'Maroko',
+    'MC' => 'Monako',
+    'MD' => 'Moldova, Republik',
     'ME' => 'Montenegro',
-    'MF' => 'Saint Martin (French part)',
-    'MG' => 'Madagascar',
-    'MH' => 'Marshall Islands',
-    'MK' => 'Macedonia, the Former Yugoslav Republic of',
+    'MF' => 'Saint-Martin',
+    'MG' => 'Madagaskar',
+    'MH' => 'Marshall, Inizi',
+    'MK' => 'Makedonia, Republik',
     'ML' => 'Mali',
     'MM' => 'Myanmar',
     'MN' => 'Mongolia',
-    'MO' => 'Macao',
-    'MP' => 'Northern Mariana Islands',
-    'MQ' => 'Martinique',
-    'MR' => 'Mauritania',
+    'MO' => 'Makao',
+    'MP' => 'Mariana an Norzh, Inizi',
+    'MQ' => 'Martinik',
+    'MR' => 'Mauretania',
     'MS' => 'Montserrat',
     'MT' => 'Malta',
-    'MU' => 'Mauritius',
-    'MV' => 'Maldives',
+    'MU' => 'Moris',
+    'MV' => 'Maldivez',
     'MW' => 'Malawi',
-    'MX' => 'Mexico',
+    'MX' => "Mec'hiko",
     'MY' => 'Malaysia',
-    'MZ' => 'Mozambique',
-    'N/A' => 'Not Applicable (local IP…)',
+    'MZ' => 'Mozambik',
+    'N/A' => "E-maez danvez (IP lec'hel…)",
     'NA' => 'Namibia',
-    'NC' => 'New Caledonia',
+    'NC' => 'Kaledonia-Nevez',
     'NE' => 'Niger',
-    'NF' => 'Norfolk Island',
-    'NG' => 'Nigeria',
+    'NF' => 'Norfolk, Enez',
+    'NG' => 'Nijeria',
     'NI' => 'Nicaragua',
-    'NL' => 'Netherlands',
-    'NO' => 'Norway',
+    'NL' => 'Izelvroioù',
+    'NO' => 'Norvej',
     'NP' => 'Nepal',
     'NR' => 'Nauru',
     'NU' => 'Niue',
-    'NZ' => 'New Zealand',
+    'NZ' => 'Zeland Nevez',
     'OM' => 'Oman',
     'PA' => 'Panama',
-    'PE' => 'Peru',
-    'PF' => 'French Polynesia',
-    'PG' => 'Papua New Guinea',
-    'PH' => 'Philippines',
+    'PE' => 'Perou',
+    'PF' => "Polinezia C'hall",
+    'PG' => 'Papoua Ginea-Nevez',
+    'PH' => 'Filipinez',
     'PK' => 'Pakistan',
-    'PL' => 'Poland',
-    'PM' => 'Saint Pierre and Miquelon',
-    'PN' => 'Pitcairn',
+    'PL' => 'Pologn',
+    'PM' => 'Sant-Pêr-ha-Mikelon',
+    'PN' => 'Pitcairn, Inizi',
     'PR' => 'Puerto Rico',
-    'PS' => 'Palestine, State of',
+    'PS' => 'Palestin',
     'PT' => 'Portugal',
     'PW' => 'Palau',
     'PY' => 'Paraguay',
-    'QA' => 'Qatar',
-    'RE' => 'Réunion',
-    'RO' => 'Romania',
-    'RS' => 'Serbia',
-    'RU' => 'Russian Federation',
+    'QA' => 'Katar',
+    'RE' => 'Ar Reünion',
+    'RO' => 'Roumani',
+    'RS' => 'Serbi',
+    'RU' => 'Rusia, Kevread',
     'RW' => 'Rwanda',
-    'SA' => 'Saudi Arabia',
-    'SB' => 'Solomon Islands',
-    'SC' => 'Seychelles',
-    'SD' => 'Sudan',
-    'SE' => 'Sweden',
-    'SG' => 'Singapore',
+    'SA' => 'Arabia Saoudat',
+    'SB' => 'Inizi Solomon',
+    'SC' => 'Sechelez',
+    'SD' => 'Soudan',
+    'SE' => 'Sveden',
+    'SG' => 'Singapoura',
     'SH' => 'Saint Helena, Ascension and Tristan da Cunha',
-    'SI' => 'Slovenia',
-    'SJ' => 'Svalbard and Jan Mayen',
-    'SK' => 'Slovakia',
+    'SI' => 'Sloveni',
+    'SJ' => 'Svalbard ha Jan Mayen',
+    'SK' => 'Slovaki',
     'SL' => 'Sierra Leone',
     'SM' => 'San Marino',
     'SN' => 'Senegal',
     'SO' => 'Somalia',
-    'SR' => 'Suriname',
-    'SS' => 'South Sudan',
-    'ST' => 'Sao Tome and Principe',
+    'SR' => 'Surinam',
+    'SS' => 'Soudan ar Su',
+    'ST' => 'São Tomé ha Príncipe',
     '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',
+    'SX' => 'Sint Maarten',
+    'SY' => 'Siria',
+    'SZ' => 'Eswatini',
+    'TC' => 'Turks ha Caicos, Inizi',
+    'TD' => 'Tchad',
+    'TF' => 'Douaroù Aostral hag Antarktikel Frañs',
     'TG' => 'Togo',
     'TH' => 'Thailand',
-    'TJ' => 'Tajikistan',
+    'TJ' => 'Tadjikistan',
     'TK' => 'Tokelau',
-    'TL' => 'Timor-Leste',
+    'TL' => 'Timor ar Reter',
     'TM' => 'Turkmenistan',
-    'TN' => 'Tunisia',
+    'TN' => 'Tunizia',
     'TO' => 'Tonga',
-    'TR' => 'Turkey',
-    'TT' => 'Trinidad and Tobago',
+    'TR' => 'Turkia',
+    'TT' => 'Trinidad ha Tobago',
     'TV' => 'Tuvalu',
-    'TW' => 'Taiwan, Province of China',
-    'TZ' => 'Tanzania, United Republic of',
-    'UA' => 'Ukraine',
-    'UG' => 'Uganda',
+    'TW' => 'Taiwan',
+    'TZ' => 'Tanzania, Republik Unanet',
+    'UA' => 'Ukraina',
+    'UG' => 'Ouganda',
     'UM' => 'United States Minor Outlying Islands',
-    'US' => 'United States',
+    'US' => 'Stadoù-Unanet',
     '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',
+    'VA' => 'Vatikan',
+    'VC' => 'Sant Visant hag an Inizi Granadinas',
+    'VE' => 'Venezuela, Republik Volivarian',
+    'VG' => "Inizi Gwerc'h Breizhveurat",
+    'VI' => "Inizi Gwerc'h, S.U.",
+    'VN' => 'Vietnam',
     'VU' => 'Vanuatu',
-    'WF' => 'Wallis and Futuna',
+    'WF' => 'Wallis ha Futuna',
     'WS' => 'Samoa',
     'YE' => 'Yemen',
     'YT' => 'Mayotte',
-    'ZA' => 'South Africa',
+    'ZA' => 'Afrika ar Su',
     'ZM' => 'Zambia',
     'ZW' => 'Zimbabwe',
 ];
diff --git a/modules/Admin/Language/br/Episode.php b/modules/Admin/Language/br/Episode.php
index 5aa0098457..e6b8bf403f 100644
--- a/modules/Admin/Language/br/Episode.php
+++ b/modules/Admin/Language/br/Episode.php
@@ -9,157 +9,158 @@ declare(strict_types=1);
  */
 
 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}',
+    'season' => 'Koulzad {seasonNumber}',
+    'season_abbr' => 'K{seasonNumber}',
+    'number' => 'Rann {episodeNumber}',
+    'number_abbr' => 'R. {episodeNumber}',
+    'season_episode' => 'Koulzad {seasonNumber} rann {episodeNumber}',
+    'season_episode_abbr' => 'K{seasonNumber}R{episodeNumber}',
     'number_of_comments' => '{numberOfComments, plural,
-        one {# comment}
-        other {# comments}
+        0 {evezhiadenn ebet}
+        one {# evezhiadenn}
+        other {# evezhiadenn}
     }',
-    'all_podcast_episodes' => 'All podcast episodes',
-    'back_to_podcast' => 'Go back to podcast',
-    'edit' => 'Edit',
-    'publish' => 'Publish',
-    'publish_edit' => 'Edit publication',
-    'unpublish' => 'Unpublish',
-    'publish_error' => 'Episode is already published.',
-    'publish_edit_error' => 'Episode is already published.',
-    'publish_cancel_error' => 'Episode is already published.',
-    'unpublish_error' => 'Episode is not published.',
-    'delete' => 'Delete',
-    'go_to_page' => 'Go to page',
-    'create' => 'Add an episode',
+    'all_podcast_episodes' => 'Holl rannoù ar podkast',
+    'back_to_podcast' => "Mont d'ar podkast en-dro",
+    'edit' => 'Kemmañ',
+    'publish' => 'Embann',
+    'publish_edit' => 'Kemmañ an embannadur',
+    'unpublish' => 'Diembannañ',
+    'publish_error' => 'Embannet eo bet ar rann dija.',
+    'publish_edit_error' => 'Embannet eo bet ar rann dija.',
+    'publish_cancel_error' => 'Embannet eo bet ar rann dija.',
+    'unpublish_error' => "N'eo ket bet embannet ar rann.",
+    'delete' => 'Dilemel',
+    'go_to_page' => 'Gwelout ar bajenn',
+    'create' => 'Ouzhpennañ ur rann',
     'publication_status' => [
-        'published' => 'Published',
-        'scheduled' => 'Scheduled',
-        'not_published' => 'Not published',
+        'published' => 'Embannet',
+        'scheduled' => 'Steuñvet',
+        'not_published' => 'Diembann',
     ],
     'list' => [
-        'episode' => 'Episode',
-        'visibility' => 'Visibility',
-        'comments' => 'Comments',
-        'actions' => 'Actions',
+        'episode' => 'Rann',
+        'visibility' => 'Gwelusted',
+        'comments' => 'Evezhiadennoù',
+        'actions' => 'Obererezhioù',
     ],
     'messages' => [
-        'createSuccess' => 'Episode has been successfully created!',
-        'editSuccess' => 'Episode has been successfully updated!',
-        'publishCancelSuccess' => 'Episode publication successfully cancelled!',
+        '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!',
     ],
     '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',
+            "Re vras eo ho restr! {0} eo ar brasder uhelañ. Dav eo deoc'h kreskaat an talvoudoù `memory_limit`, `upload_max_filesize` ha `post_max_size` en ho restr kefluniañ, a-raok adloc'hañ ho servijer web hag uskargañ ho restr.",
+        'audio_file' => 'Restr aodio',
+        'audio_file_hint' => 'Dibabit ur restr .mp3 pe .m4a.',
+        'info_section_title' => 'Titouroù ar rann',
+        'cover' => 'Golo ar rann',
         '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.',
-        'title' => 'Title',
+            "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ñ.",
+        'title' => 'Titl',
         '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',
+            "Dleout a rafe anv ar rann, sklaer ha berr. Arabat lakaat niverenn ar rann pe ar c'houlzad amañ.",
+        'permalink' => 'Peurliamm',
+        'season_number' => 'Koulzad',
+        'episode_number' => 'Rann',
         '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',
+            'label' => 'Doare',
+            'full' => 'Klok',
+            'full_hint' => 'Rann a-bezh',
+            'trailer' => 'Tañvadenn',
+            'trailer_hint' => 'Tennad berr evit brudañ ar podkast',
+            'bonus' => 'Bonuz',
+            'bonus_hint' => 'Danvez ouzhpenn ar podkast (da skouer, titouroù diwar-benn kostezioù pe atersadennoù gant an aktourien·ezed), pe bruderezh kroaziet evit ur podkast all',
         ],
         'parental_advisory' => [
-            'label' => 'Parental advisory',
-            'hint' => 'Does the episode contain explicit content?',
-            'undefined' => 'undefined',
-            'clean' => 'Clean',
-            'explicit' => 'Explicit',
+            'label' => 'Kemenn evit ar gerent',
+            'hint' => "Hag ar rann-mañ a zo endalc'had ha ne zlefe ket gwelet gant bugale?",
+            'undefined' => 'andermenet',
+            'clean' => 'Dereat',
+            'explicit' => "Endalc'had evit an oadourien",
         ],
-        'show_notes_section_title' => 'Show notes',
+        'show_notes_section_title' => 'Notennoù ar rann',
         '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',
+            "Betek 4000 arouez, sklaer ha berr. Notennoù a rann a c'hell sikour selaouerien·ezed zo kavout anezhi.",
+        'description' => 'Deskrivadur',
+        'description_footer' => 'Traoñ an deskrivadur',
         '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',
+            "Emañ ouzhpennet an destenn-mañ e dibenn an holl rannoù. Ul lec'h mat eo evit lakaat liammoù ho rouedadoù sokial da skouer.",
+        'additional_files_section_title' => 'Restroù ouzhpenn',
         'additional_files_section_subtitle' =>
-            'These files may be used by other platforms to provide better experience to your audience.<br />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',
+            "Ar restroù-mañ a c'hell bezañ implijet gant savennoù all evit aesaat an traoù d'ho selaouerien·ezed.<br />Sellit ouzh {podcastNamespaceLink} evit muioc'h a ditouroù.",
+        'location_section_title' => "Lec'h",
+        'location_section_subtitle' => "Eus peseurt lec'h ez eus kaoz er rann-mañ?",
+        'location_name' => "Anv pe chomlec'h al lec'h",
+        'location_name_hint' => "Al lec'h-mañ a c'hell bezañ unan gwir pe unan faltaziet",
+        'transcript' => 'Treuzskrivadur (istitloù)',
+        'transcript_hint' => 'Aotreet e vez nemet .srt.',
+        'transcript_download' => 'Pellgargañ an treuzskrivadur',
+        'transcript_file' => 'Restr an treuzskrivadur (.srt)',
+        'transcript_remote_url' => 'URL a-bell evit restr an treuzskrivadur',
+        'transcript_file_delete' => 'Dilemel restr an treuzskrivadur',
+        'chapters' => 'Chabistroù',
+        'chapters_hint' => 'Dleout a ra ar restr bezañ er furmad JSON Chapters.',
+        'chapters_download' => 'Pellgargañ ar chabistroù',
+        'chapters_file' => 'Restr ar chabistroù',
+        'chapters_remote_url' => 'URL a-bell evit restr ar chabistroù',
+        'chapters_file_delete' => 'Dilemel restr ar chabistroù',
+        'advanced_section_title' => "Arventennoù kempleshoc'h",
         '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.',
+            "M'ho peus ezhomm eus balizennoù RSS ha n'eus ket anezho e Castopod e c'hellit o lakaat amañ.",
+        'custom_rss' => 'Balizennoù RSS personelaet evit ar rann',
+        'custom_rss_hint' => 'An dra-se a vo ouzhpennet e-barzh ar valizenn ❬item❭.',
         'block' => 'Ar rann-se a rankfe bezañ kuzhet diouzh an holl savennoù',
         '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',
+            "Gwelusted ar rann. Ma fell deoc'h e vefe skarzhet ar rann eus roll Apple, gweredekait ar vaezienn-mañ.",
+        'submit_create' => 'Krouiñ ar rann',
+        'submit_edit' => 'Enrollañ ar rann',
     ],
     'publish_form' => [
-        'back_to_episode_dashboard' => 'Back to episode dashboard',
-        'post' => 'Your announcement post',
+        'back_to_episode_dashboard' => 'Distreiñ da daolenn-stur ar rann',
+        'post' => 'Ho kemennadenn vrudañ',
         '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',
+            "Skrivit ur gemennadenn evit brudañ embannadur ho rann. Skignet e vo ar gemennadenn-se d'an holl re a heuilh ac'hanoc'h war ar c'hevrebed (fediverse) ha lakaet e vo war well war pajenn ho podkast.",
+        'message_placeholder' => 'Skrivit ho kemennadenn…',
+        'publication_date' => 'Deiziad embannadur',
         'publication_method' => [
-            'now' => 'Now',
-            'schedule' => 'Schedule',
+            'now' => 'Bremañ',
+            'schedule' => 'Steuñviñ',
         ],
-        'scheduled_publication_date' => 'Scheduled publication date',
-        'scheduled_publication_date_clear' => 'Clear publication date',
+        'scheduled_publication_date' => 'Deiziad embannadur steuñvet',
+        'scheduled_publication_date_clear' => 'Skarzhañ deiziad embannadur',
         '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',
+            'Gallout a rit steuñviñ embannadur ar rann en ur steuñviñ embannadur ar rann en dazont. Dleout a ra ar vaezienn bezañ er furmad YYYY-MM-DD HH:mm',
+        'submit' => 'Embann',
+        'submit_edit' => 'Kemmañ an embannadur',
+        'cancel_publication' => 'Nullañ an embannadur',
+        'message_warning' => "N'ho peus ket skrivet ur gemennadenn evit brudañ ho rann!",
+        'message_warning_hint' => "Ouzhpennañ ur gemennadenn a lakay muioc'h a dud er jeu, ha diwar se e vo gwelet muioc'h ho rann.",
+        'message_warning_submit' => 'Embann memestra',
     ],
     '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',
+            "Diembann ar rann a zilamo an holl gemennadennoù liammet outi ha skarzhet e vo eus lanv RSS ar podkast.",
+        'understand' => 'Komprennet eo, diembann ar rann a fell din',
+        'submit' => 'Diembann',
     ],
     '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',
-        'submit' => 'Delete',
+            "Dilemel ar rann a zilamo an holl gemennadennoù liammet outi ha skarzhet e vo eus lanv RSS ar podkast.",
+        'understand' => 'Komprennet eo, dilemel ar rann a fell din',
+        'submit' => 'Dilemel',
     ],
     'embed' => [
-        'title' => 'Embeddable player',
+        'title' => 'Lenner enkorfet',
         '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',
+            "Dibabit ul liv evit an tem, eilit ar c'hod er golver ha pegit anezhañ war ho lec'hienn.",
+        'clipboard_iframe' => 'Eilañ al lenner enkorfet er golver',
+        'clipboard_url' => "Eilañ ar chomlec'h er golver",
+        'dark' => 'Teñval',
+        'dark-transparent' => 'Teñval treuzwelus',
+        'light' => 'Sklaer',
+        'light-transparent' => 'Sklaer treuzwelus',
     ],
 ];
diff --git a/modules/Admin/Language/br/EpisodeNavigation.php b/modules/Admin/Language/br/EpisodeNavigation.php
index 1406e3010e..214e2aca7d 100644
--- a/modules/Admin/Language/br/EpisodeNavigation.php
+++ b/modules/Admin/Language/br/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' => 'Gwelet pajenn ar rann',
+    'dashboard' => 'Taolenn-stur ar rann',
+    'episode-view' => 'Degemer',
+    'episode-edit' => 'Kemm ar rann',
+    'episode-persons-manage' => 'Merañ an emellerien·ezed',
+    'embed-add' => 'Lenner enkorfet',
+    'clips' => 'Tennadoù',
+    'video-clips-list' => 'Tennadoù video',
+    'video-clips-create' => 'Tennad video nevez',
+    'soundbites-list' => 'Tennadoù son',
+    'soundbites-create' => 'Tennad son nevez',
 ];
diff --git a/modules/Admin/Language/br/Fediverse.php b/modules/Admin/Language/br/Fediverse.php
index 0e4ca66d89..f93aef578e 100644
--- a/modules/Admin/Language/br/Fediverse.php
+++ b/modules/Admin/Language/br/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' => "N'eo ket bet kavet ar gont-se!",
+        'blockActorSuccess' => 'Stanket eo bet {actor}!',
+        'unblockActorSuccess' => 'Distanket eo bet an implijer·ez!',
+        'blockDomainSuccess' => 'Stanket eo bet {domain}!',
+        'unblockDomainSuccess' => 'Distanket eo bet {domain}!',
     ],
-    'blocked_actors' => 'Blocked accounts',
-    'blocked_domains' => 'Blocked domains',
+    'blocked_actors' => 'Implijerien·ezed stanket',
+    'blocked_domains' => 'Domanioù stanket',
     'block_lists_form' => [
-        'handle' => 'Account handle',
-        'handle_hint' => 'Input @username@domain account.',
-        'domain' => 'Domain name',
-        'submit' => 'Block!',
+        'handle' => 'Dornell (lesanv)',
+        'handle_hint' => 'Skrivit @anv@domani an implijer·ez.',
+        'domain' => 'Anv domani',
+        'submit' => 'Stankañ!',
     ],
     'list' => [
-        'actor' => 'Account',
-        'domain' => 'Domain name',
-        'unblock' => 'Unblock',
+        'actor' => 'Implijer·ez',
+        'domain' => 'Anv domani',
+        'unblock' => 'Distankañ',
     ],
 ];
diff --git a/modules/Admin/Language/br/Podcast.php b/modules/Admin/Language/br/Podcast.php
index d9d0d11b03..efccc7d736 100644
--- a/modules/Admin/Language/br/Podcast.php
+++ b/modules/Admin/Language/br/Podcast.php
@@ -9,55 +9,55 @@ declare(strict_types=1);
  */
 
 return [
-    'all_podcasts' => 'All podcasts',
-    'no_podcast' => 'No podcast found!',
-    'create' => 'Create podcast',
-    'import' => 'Import podcast',
-    'new_episode' => 'New Episode',
+    'all_podcasts' => 'An holl bodkastoù',
+    'no_podcast' => "N'eo bet kavet podkast ebet!",
+    'create' => 'Krouiñ ur podkast',
+    'import' => 'Enporzhiañ ur podkast',
+    'new_episode' => 'Rann nevez',
     'view' => 'View podcast',
-    'edit' => 'Edit podcast',
-    'delete' => 'Delete podcast',
+    'edit' => 'Kemmañ ar podkast',
+    'delete' => 'Dilemel ar podkast',
     'see_episodes' => 'See episodes',
     'see_contributors' => 'See contributors',
-    'go_to_page' => 'Go to page',
-    'latest_episodes' => 'Latest episodes',
-    'see_all_episodes' => 'See all episodes',
+    'go_to_page' => 'Gwelout ar bajenn',
+    'latest_episodes' => 'Rannoù diwezhañ',
+    'see_all_episodes' => 'Gwelout an holl rannoù',
     'messages' => [
-        'createSuccess' => 'Podcast has been successfully created!',
-        'editSuccess' => 'Podcast has been successfully updated!',
-        'importSuccess' => 'Podcast has been successfully imported!',
+        'createSuccess' => 'Krouet eo bet ar podkast gant berzh!',
+        'editSuccess' => 'Hizivaet eo bet ar podkast gant berzh!',
+        'importSuccess' => 'Enporzhet eo bet ar podkast gant berzh!',
     ],
     'form' => [
         'identity_section_title' => 'Podcast identity',
         'identity_section_subtitle' => 'These fields allow you to get noticed.',
-        'cover' => 'Podcast cover',
+        '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',
-        'title' => 'Title',
+        'title' => 'Titl',
         'handle' => 'Handle',
         'handle_hint' =>
             'Used to identify the podcast. Uppercase, lowercase, numbers and underscores are accepted.',
         'type' => [
-            'label' => 'Type',
+            'label' => 'Doare',
             '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',
+        'description' => 'Deskrivadur',
+        'classification_section_title' => 'Rummatadur',
         'classification_section_subtitle' =>
             'These fields will impact your audience and competition.',
-        'language' => 'Language',
+        'language' => 'Yezh',
         'category' => 'Category',
         'category_placeholder' => 'Select a category…',
         'other_categories' => 'Other categories',
         'parental_advisory' => [
-            'label' => 'Parental advisory',
+            'label' => 'Kemenn evit ar gerent',
             'hint' => 'Does it contain explicit content?',
-            'undefined' => 'undefined',
+            'undefined' => 'andermenet',
             'clean' => 'Clean',
             'explicit' => 'Explicit',
         ],
diff --git a/modules/Admin/Language/el/Charts.php b/modules/Admin/Language/el/Charts.php
index d9a75a1d84..6e3568bf43 100644
--- a/modules/Admin/Language/el/Charts.php
+++ b/modules/Admin/Language/el/Charts.php
@@ -9,30 +9,30 @@ declare(strict_types=1);
  */
 
 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',
+    'by_service_weekly' => 'Λήψεις επεισοδίων ανά υπηρεσία (για την προηγούμενη εβδομάδα)',
+    'by_player_weekly' => 'Οι λήψεις επεισοδίων (για την προηγούμενη εβδομάδα)',
+    'by_player_yearly' => 'Οι λήψεις επεισοδίων (για τo προηγούμενο έτος)',
+    'by_device_weekly' => 'Λήψεις επεισοδίων ανά συσκευή (για την προηγούμενη εβδομάδα)',
+    'by_os_weekly' => 'Οι λήψεις επεισοδίων ανά λειτουργικό σύστημα (για την προηγούμενη εβδομάδα)',
+    'podcast_by_region' => 'Λήψεις επεισοδίων ανά περιοχή (για την προηγούμενη εβδομάδα)',
+    'unique_daily_listeners' => 'Καθημερινά μοναδικοί ακροατές',
+    'unique_monthly_listeners' => 'Μηνιαίοι μοναδικοί ακροατές',
+    'by_browser' => 'Χρήση ιστοσελίδων από το πρόγραμμα περιήγησης (για την προηγούμενη εβδομάδα)',
+    'podcast_by_day' => 'Ημερήσιες λήψεις του επισοδίου',
+    'podcast_by_month' => 'Μηνιαίες λήψεις επεισοδίων',
+    'episode_by_day' => 'Ημερήσιες λήψεις επισοδείου (πρώτες 60 ημέρες)',
+    'episode_by_month' => 'Μηνιαίες λήψεις επεισοδίων',
     '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)',
+        '5 τελευταίες λήψεις επεισοδίων (κατά τις πρώτες 60 ημέρες τους)',
+    'by_country_weekly' => 'Λήψεις επεισοδίων ανά χώρα (για την προηγούμενη εβδομάδα)',
+    'by_country_yearly' => 'Λήψεις επεισοδίων ανά χώρα (για το προηγούμενο έτος)',
+    'by_domain_weekly' => 'Επισκέψεις ιστοσελίδας ανά πηγή (για την προηγούμενη εβδομάδα)',
+    'by_domain_yearly' => 'Επισκέψεις ιστοσελίδας ανά πηγή (για το προηγούμενο έτος)',
+    'by_entry_page' => 'Επισκέψεις ιστοσελίδων ανά σελίδα προορισμού (για την προηγούμενη εβδομάδα)',
+    'podcast_bots' => 'Bots (Crawlers)',
+    'daily_listening_time' => 'Ημερήσιος αθροιστικός χρόνος ακρόασης',
+    'monthly_listening_time' => 'Μηνιαίος αθροιστικός χρόνος ακρόασης',
+    'by_weekday' => 'Την ημέρα της εβδομάδας (για τις τελευταίες 60 ημέρες)',
+    'by_hour' => 'Κατά την ώρα της ημέρας (για τις τελευταίες 60 ημέρες)',
+    'podcast_by_bandwidth' => 'Ημερήσιο χρησιμοποιούμενο bandwidth (σε MB)',
 ];
diff --git a/modules/Admin/Language/el/Common.php b/modules/Admin/Language/el/Common.php
index d97bcf991f..e19b3e7360 100644
--- a/modules/Admin/Language/el/Common.php
+++ b/modules/Admin/Language/el/Common.php
@@ -9,41 +9,41 @@ declare(strict_types=1);
  */
 
 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',
+    'yes' => 'Ναι',
+    'no' => 'Όχι',
+    'cancel' => 'Ακύρωση',
+    'optional' => 'Προαιρετικό',
+    'more' => 'Περισσότερα',
+    'no_data' => 'Δεν βρέθηκαν δεδομένα!',
+    'close' => 'Κλείσιμο',
+    'edit' => 'Επεξεργασία',
+    'copy' => 'Αντιγραφή',
+    'copied' => 'Αντιγράφηκε!',
+    'home' => 'Αρχική σελίδα',
+    'explicit' => 'Άσεμνο περιεχόμενο',
+    'powered_by' => 'Με την υποστήριξη του {castopod}',
+    'actions' => 'Ενέργειες',
+    'pageInfo' => 'Σελίδα {currentPage} από {pageCount}',
+    'go_back' => 'Επιστροφή',
     'forms' => [
         'editor' => [
-            'write' => 'Write',
-            'preview' => 'Preview',
-            'help' => 'Powered by markdown',
+            'write' => 'Εγγραφή',
+            'preview' => 'Προεπισκόπηση',
+            'help' => 'Με την υποστήριξη του markdown επεξεραστή',
         ],
         'multiSelect' => [
-            'selectText' => 'Press to select',
-            'loadingText' => 'Loading…',
-            'noResultsText' => 'No results found',
-            'noChoicesText' => 'No choices to choose from',
-            'maxItemText' => 'Cannot add more items',
+            'selectText' => 'Πατήστε για να επιλέξετε',
+            'loadingText' => 'Φόρτωση σε εξέλιξη…',
+            'noResultsText' => 'Δε βρέθηκαν αποτελέσματα',
+            'noChoicesText' => 'Δεν υπάρχουν επιλογές επιλογής από',
+            'maxItemText' => 'Αδυναμία προσθήκης περισσότερων αντικειμένων',
         ],
-        'upload_file' => 'Upload a file',
-        'remote_url' => 'Remote URL',
+        'upload_file' => 'Μεταφορτώστε ένα αρχείο',
+        'remote_url' => 'Απομακρυσμένη διεύθυνση URL',
     ],
     'play_episode_button' => [
-        'play' => 'Play',
-        'playing' => 'Playing',
+        'play' => 'Αναπαραγωγή',
+        'playing' => 'Αναπαράγεται',
     ],
-    'size_limit' => 'Size limit: {0}.',
+    'size_limit' => 'Όριο μεγέθους: {0}.',
 ];
diff --git a/modules/Admin/Language/el/Contributor.php b/modules/Admin/Language/el/Contributor.php
index d0f3b93d9f..132d9abb7d 100644
--- a/modules/Admin/Language/el/Contributor.php
+++ b/modules/Admin/Language/el/Contributor.php
@@ -9,33 +9,33 @@ declare(strict_types=1);
  */
 
 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',
+    'podcast_contributors' => 'Συντελεστές Podcast',
+    'view' => "Ο χρήστης {username} συνείσφερε στο {podcastTitle}",
+    'add' => 'Προσθήκη συντελεστή',
+    'add_contributor' => 'Προσθέστε έναν συνεισφέροντα για {0}',
+    'edit_role' => 'Ενημέρωση ρόλου για {0}',
+    'edit' => 'Επεξεργασία',
+    'remove' => 'Διαγραφή',
     'list' => [
-        'username' => 'Username',
-        'role' => 'Role',
+        'username' => 'Όνομα Χρήστη',
+        'role' => 'Ρόλος',
     ],
     'form' => [
-        'user' => 'User',
-        'user_placeholder' => 'Select a user…',
-        'role' => 'Role',
-        'role_placeholder' => 'Select its role…',
-        'submit_add' => 'Add contributor',
-        'submit_edit' => 'Update role',
+        'user' => 'Χρήστης',
+        'user_placeholder' => 'Επιλέξτε χρήστη…',
+        'role' => 'Ρόλος',
+        'role_placeholder' => 'Επιλέξτε το ρόλο του χρήστη…',
+        'submit_add' => 'Προσθήκη συντελεστή',
+        'submit_edit' => 'Ενημέρωση ρόλου',
     ],
     'roles' => [
-        'podcast_admin' => 'Podcast admin',
+        'podcast_admin' => 'Διαχειριστής Podcast',
     ],
     'messages' => [
-        'removeOwnerError' => "You can't remove the podcast owner!",
+        'removeOwnerError' => "Δεν μπορείτε να καταργήσετε τον ιδιοκτήτη podcast!",
         'removeSuccess' =>
-            'You have successfully removed {username} from {podcastTitle}',
+            'Έχετε αφαιρέσει με επιτυχία τον χρήστη {username} από το {podcastTitle}',
         'alreadyAddedError' =>
-            "The contributor you're trying to add has already been added!",
+            "Ο συνεισφέροντας που προσπαθείτε να προσθέσετε έχει ήδη προστεθεί!",
     ],
 ];
diff --git a/modules/Admin/Language/el/Countries.php b/modules/Admin/Language/el/Countries.php
index 4cd5d9c857..76a33e3ef7 100644
--- a/modules/Admin/Language/el/Countries.php
+++ b/modules/Admin/Language/el/Countries.php
@@ -11,254 +11,254 @@ declare(strict_types=1);
  */
 
 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',
+    'AD' => 'Ανδόρα',
+    'AE' => 'Ηνωμένα Αραβικά Εμιράτα',
+    'AF' => 'Αφγανιστάν',
+    'AG' => 'Αντίγκουα και Μπαρπούντα',
+    'AI' => 'Ανγκουΐλα',
+    'AL' => 'Αλβανία',
+    'AM' => 'Αρμενία',
+    'AO' => 'Αγκόλα',
+    'AQ' => 'Ανταρκτική',
+    'AR' => 'Αργεντινή',
+    'AS' => 'Αμερικανικές Σαμόα',
+    'AT' => 'Αυστρία',
+    'AU' => 'Αυστραλία',
+    'AW' => 'Αρούμπα',
+    'AX' => 'Νήσοι Άαλαντ',
+    'AZ' => 'Αζερμπαϊτζάν',
+    'BA' => 'Βοσνία Ερζεγοβίνη',
+    'BB' => 'Μπαρμπάντος',
+    'BD' => 'Μπανγκλαντές',
+    'BE' => 'Βέλγιο',
+    'BF' => 'Μπουρκίνα Φάσο',
+    'BG' => 'Βουλγαρία',
+    'BH' => 'Μπαχρέιν',
+    'BI' => 'Μπουρουντί',
+    'BJ' => 'Μπενίν',
+    'BL' => 'Άγιος Βαρθολομαίος',
+    'BM' => 'Βερμούδες',
+    'BN' => 'Μπρουνέι',
+    'BO' => 'Πολυεθνικό Κράτος της Βολιβίας',
+    'BQ' => 'Μπονέρ, Άγιος Ευστάθιος και Σάμπα',
+    'BR' => 'Βραζιλία',
+    'BS' => 'Μπαχάμες',
+    'BT' => 'Μπουτάν',
+    'BV' => 'Νήσος Μπουβέ',
+    'BW' => 'Μποτσουάνα',
+    'BY' => 'Λευκορωσία',
+    'BZ' => 'Μπελίζ',
+    'CA' => 'Καναδάς',
+    'CC' => 'Νησιά Κόκος (Κήλινγκ)',
+    'CD' => 'Λαϊκή Δημοκρατία του Κονγκό',
+    'CF' => 'Δημοκρατία Κεντρικής Αφρικής',
+    'CG' => 'Κονγκό',
+    'CH' => 'Ελβετία',
+    'CI' => "Ακτή του Ελεφαντοστού",
+    'CK' => 'Νήσοι Κουκ',
+    'CL' => 'Χιλή',
+    'CM' => 'Καμερούν',
+    'CN' => 'Κίνα',
+    'CO' => 'Κολομβία',
+    'CR' => 'Κόστα Ρίκα',
+    'CU' => 'Κούβα',
+    'CV' => 'Πράσινο Ακρωτήριο',
+    'CW' => 'Κουρασάο',
+    'CX' => 'Νήσος Χριστουγέννων',
+    'CY' => 'Κύπρος',
+    'CZ' => 'Δημοκρατία της Τσεχίας',
+    'DE' => 'Γερμανία',
+    'DJ' => 'Τζιμπουτί',
+    'DK' => 'Δανία',
+    'DM' => 'Ντομίνικα',
+    'DO' => 'Δομινικανή Δημοκρατία',
+    'DZ' => 'Αλγερία',
+    'EC' => 'Εκουαδόρ',
+    'EE' => 'Εσθονία',
+    'EG' => 'Αίγυπτος',
+    'EH' => 'Δυτική Σαχάρα',
+    'ER' => 'Ερυθραία',
+    'ES' => 'Ισπανία',
+    'ET' => 'Αιθιοπία',
+    'FI' => 'Φινλανδία',
+    'FJ' => 'Φίτζι',
+    'FK' => 'Νήσοι Φώκλαντ (Μαλβίνας)',
+    'FM' => 'Ομοσπονδιακές Πολιτείες της Μικρονησίας',
+    'FO' => 'Νήσοι Φερόες',
+    'FR' => 'Γαλλία',
+    'GA' => 'Γκαμπόν',
+    'GB' => 'Ηνωμένο Βασίλειο',
+    'GD' => 'Γρενάδα',
+    'GE' => 'Γεωργία',
+    'GF' => 'Γαλλική Γουϊάνα',
+    'GG' => 'Γκέρνσεϊ',
+    'GH' => 'Γκάνα',
+    'GI' => 'Γιβραλτάρ',
+    'GL' => 'Γροιλανδία',
+    'GM' => 'Γκάμπια',
+    'GN' => 'Γουϊνέα',
+    'GP' => 'Γουαδελούπη',
+    'GQ' => 'Ισημερινή Γουινέα',
+    'GR' => 'Ελλάδα',
+    'GS' => 'Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς',
+    'GT' => 'Γουατεμάλα',
+    'GU' => 'Γκουάμ',
+    'GW' => 'Γουινέα-Μπισάου',
+    'GY' => 'Γουϊάνα',
+    'HK' => 'Χονγκ Κονγκ',
+    'HM' => 'Νήσοι Χερντ και Μακντόναλντ',
+    'HN' => 'Ονδούρα',
+    'HR' => 'Κροατία',
+    'HT' => 'Αϊτή',
+    'HU' => 'Ουγγαρία',
+    'ID' => 'Ινδονησία',
+    'IE' => 'Ιρλανδία',
+    'IL' => 'Ισραήλ',
+    'IM' => 'Νήσος του Μαν',
+    'IN' => 'Ινδία',
+    'IO' => 'Βρετανικό Έδαφος του Ινδικού Ωκεανού',
+    'IQ' => 'Ιράκ',
+    'IR' => 'Ιράν',
+    'IS' => 'Ισλανδία',
+    'IT' => 'Ιταλία',
+    'JE' => 'Τζέρσεϊ',
+    'JM' => 'Τζαμάικα',
+    'JO' => 'Ιορδανία',
+    'JP' => 'Ιαπωνία',
+    'KE' => 'Κένυα',
+    'KG' => 'Κιργιστάν',
+    'KH' => 'Καμπότζη',
+    'KI' => 'Κιριμπάτι',
+    'KM' => 'Κομόρες',
+    'KN' => 'Σεν Κιτς και Νέβις',
+    'KP' => "Λαϊκή Δημοκρατία της Κορέας",
+    'KR' => 'Δημοκρατία της Κορέας',
+    'KW' => 'Κουβέιτ',
+    'KY' => 'Νησιά Καϋμάν',
+    'KZ' => 'Καζακστάν',
+    'LA' => "Λαϊκή Δημοκρατία του Λάος",
+    'LB' => 'Λίβανος',
+    'LC' => 'Αγία Λουκία',
+    'LI' => 'Λίχτενσταϊν',
+    'LK' => 'Σρι Λάνκα',
+    'LR' => 'Λιβερία',
+    'LS' => 'Λεσόθο',
+    'LT' => 'Λιθουανία',
+    'LU' => 'Λουξεμβούργο',
+    'LV' => 'Λετονία',
+    'LY' => 'Λιβύη',
+    'MA' => 'Μαρόκο',
+    'MC' => 'Μονακό',
+    'MD' => 'Δημοκρατία της Μολδαβίας',
+    'ME' => 'Μαυροβούνιο',
+    'MF' => 'Άγιος Μαρτίνος (Γαλλικό τμήμα)',
+    'MG' => 'Μαδαγασκάρη',
+    'MH' => 'Νήσοι Μάρσαλ',
+    'MK' => 'Βόρεια Μακεδονία, Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας',
+    'ML' => 'Μάλι',
+    'MM' => 'Μιανμάρ',
+    'MN' => 'Μογγολία',
+    'MO' => 'Μακάο',
+    'MP' => 'Βόρειες Μαριάνες Νήσοι',
+    'MQ' => 'Μαρτινίκα',
+    'MR' => 'Μαυριτανία',
+    'MS' => 'Μοντσερράτ',
+    'MT' => 'Μάλτα',
+    'MU' => 'Μαυρίκιος',
+    'MV' => 'Μαλδίβες',
+    'MW' => 'Μαλάουι',
+    'MX' => 'Μεξικό',
+    'MY' => 'Μαλαισία',
+    'MZ' => 'Μοζαμβίκη',
+    'N/A' => 'Δεν ισχύει (τοπική IP…)',
+    'NA' => 'Ναμίμπια',
+    'NC' => 'Νέα Καληδονία',
+    'NE' => 'Νιγηρία',
+    'NF' => 'Νήσος Νόρφολκ',
+    'NG' => 'Νιγηρία',
+    'NI' => 'Νικαράγουα',
+    'NL' => 'Ολλανδία',
+    'NO' => 'Νορβηγία',
+    'NP' => 'Νεπάλ',
+    'NR' => 'Ναουρού',
+    'NU' => 'Νιούε',
+    'NZ' => 'Νέα Ζηλανδία',
+    'OM' => 'Ομάν',
+    'PA' => 'Παναμάς',
+    'PE' => 'Περού',
+    'PF' => 'Γαλλική Πολυνησία',
+    'PG' => 'Παπούα Νέα Γουινέα',
+    'PH' => 'Φιλιππίνες',
+    'PK' => 'Πακιστάν',
+    'PL' => 'Πολωνία',
+    'PM' => 'Άγιος Πέτρος (Σεν Πιέρ) και Μικελόν',
+    'PN' => 'Νήσοι Πίτκαιρν',
+    'PR' => 'Πουέρτο Ρίκο',
+    'PS' => 'Κράτος της Παλαιστίνης',
+    'PT' => 'Πορτογαλία',
+    'PW' => 'Παλάου',
+    'PY' => 'Παραγουάη',
+    'QA' => 'Κατάρ',
+    'RE' => 'Ρεϋνιόν',
+    'RO' => 'Ρουμανία',
+    'RS' => 'Σερβία',
+    'RU' => 'Ρωσική Ομοσπονδία',
+    'RW' => 'Ρουάντα',
+    'SA' => 'Σαουδική Αραβία',
+    'SB' => 'Νήσοι Σολομώντος',
+    'SC' => 'Σεϋχέλλες',
+    'SD' => 'Σουδάν',
+    'SE' => 'Σουηδία',
+    'SG' => 'Σιγκαπούρη',
+    'SH' => 'Αγία Ελένη, της Αναλήψεως και Τριστάν ντα Κούνια',
+    'SI' => 'Σλοβενία',
+    'SJ' => 'Σβάλμπαρντ και Γιαν Μαγιέν',
+    'SK' => 'Σλοβακία',
+    'SL' => 'Σιέρα Λεόνε',
+    'SM' => 'Σαν Μαρίνο',
+    'SN' => 'Σενεγάλη',
+    'SO' => 'Σομαλία',
+    'SR' => 'Σουρινάμ',
+    'SS' => 'Νότιο Σουδάν',
+    'ST' => 'Άγιος Θωμάς και Πρίγκιπας (Σάο Τομέ και Πρίντσιπε)',
+    'SV' => 'Ελ Σαλβαδόρ',
+    'SX' => 'Άγιος Μαρτίνος (Γερμανικό τμήμα)',
+    'SY' => 'Αραβική Δημοκρατία της Συρίας',
+    'SZ' => 'Σουαζιλάνδη',
+    'TC' => 'Νήσοι Τερκς και Κάικος',
+    'TD' => 'Τσαντ',
+    'TF' => 'Γαλλικές περιοχές του νοτίου ημισφαιρίου',
+    'TG' => 'Τόγκο',
+    'TH' => 'Ταϊλάνδη',
+    'TJ' => 'Τατζικιστάν',
+    'TK' => 'Τοκελάου',
+    'TL' => 'Τιμόρ-Λέστε',
+    'TM' => 'Τουρκμενιστάν',
+    'TN' => 'Τυνησία',
+    'TO' => 'Τόνγκα',
+    'TR' => 'Τουρκία',
+    'TT' => 'Τρινιντάντ και Τομπάγκο',
+    'TV' => 'Τουβαλού',
+    'TW' => 'Ταϊβάν, Επαρχία της Κίνας',
+    'TZ' => 'Ενωμένη Δημοκρατία της Τανζανίας',
+    'UA' => 'Ουκρανία',
+    'UG' => 'Ουγκάντα',
+    'UM' => 'Απομακρυσμένες Νησίδες των Ηνωμένων Πολιτειών',
+    'US' => 'Ηνωμένες Πολιτείες',
+    'UY' => 'Ουρουγουάη',
+    'UZ' => 'Ουζμπεκιστάν',
+    'VA' => 'Αγία Έδρα (κράτος της πόλης του Βατικανού)',
+    'VC' => 'Άγιος Βικέντιος και Γρεναδίνες',
+    'VE' => 'Μπολιβαριανής Δημοκρατίας της Βενεζουέλας',
+    'VG' => 'Βρετανικές Παρθένοι Νήσοι',
+    'VI' => 'Παρθένοι Νήσοι, Η.Π.Α.',
+    'VN' => 'Βιετνάμ',
+    'VU' => 'Βανουάτου',
+    'WF' => 'Ουώλλις και Φουτούνα',
+    'WS' => 'Σαμόα',
+    'YE' => 'Υεμένη',
+    'YT' => 'Μαγιότ',
+    'ZA' => 'Νότια Αφρική',
+    'ZM' => 'Ζάμπια',
+    'ZW' => 'Ζιμπάμπουε',
 ];
diff --git a/modules/Admin/Language/el/Episode.php b/modules/Admin/Language/el/Episode.php
index 054a23c3b0..e90d5bb032 100644
--- a/modules/Admin/Language/el/Episode.php
+++ b/modules/Admin/Language/el/Episode.php
@@ -9,72 +9,72 @@ declare(strict_types=1);
  */
 
 return [
-    'season' => 'Season {seasonNumber}',
+    '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' => 'Επεισόδιο {episodeNumber}',
+    'number_abbr' => 'Επ. {episodeNumber}',
+    'season_episode' => 'Σεζόν {seasonNumber} επεισόδιο {episodeNumber}',
+    'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
     'number_of_comments' => '{numberOfComments, plural,
-        one {# comment}
-        other {# comments}
+        one {# σχόλιο}
+        other {# σχόλεια}
     }',
-    'all_podcast_episodes' => 'All podcast episodes',
-    'back_to_podcast' => 'Go back to podcast',
-    'edit' => 'Edit',
-    'publish' => 'Publish',
-    'publish_edit' => 'Edit publication',
-    'unpublish' => 'Unpublish',
-    'publish_error' => 'Episode is already published.',
-    'publish_edit_error' => 'Episode is already published.',
-    'publish_cancel_error' => 'Episode is already published.',
-    'unpublish_error' => 'Episode is not published.',
-    'delete' => 'Delete',
-    'go_to_page' => 'Go to page',
-    'create' => 'Add an episode',
+    'all_podcast_episodes' => 'Όλα τα επεισόδια του podcast',
+    'back_to_podcast' => 'Μετάβαση πίσω στο podcast',
+    'edit' => 'Επεξεργασία',
+    'publish' => 'Δημοσίευση',
+    'publish_edit' => 'Επεξεργασία δημοσίευσης',
+    'unpublish' => 'Αναίρεση δημοσίευσης',
+    'publish_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
+    'publish_edit_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
+    'publish_cancel_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
+    'unpublish_error' => 'Το επεισόδιο δεν έχει δημοσιευθεί.',
+    'delete' => 'Διαγραφή',
+    'go_to_page' => 'Μετάβαση στη σελίδα',
+    'create' => 'Προσθήκη επεισοδίου',
     'publication_status' => [
-        'published' => 'Published',
-        'scheduled' => 'Scheduled',
-        'not_published' => 'Not published',
+        'published' => 'Δημοσιευμένο',
+        'scheduled' => 'Προγραμματισμένο',
+        'not_published' => 'Δεν έχει δημοσιευτεί',
     ],
     'list' => [
-        'episode' => 'Episode',
-        'visibility' => 'Visibility',
-        'comments' => 'Comments',
-        'actions' => 'Actions',
+        'episode' => 'Επεισόδιο',
+        'visibility' => 'Ορατότητα',
+        'comments' => 'Σχόλια',
+        'actions' => 'Ενέργειες',
     ],
     'messages' => [
-        'createSuccess' => 'Episode has been successfully created!',
-        'editSuccess' => 'Episode has been successfully updated!',
-        'publishCancelSuccess' => 'Episode publication successfully cancelled!',
+        'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!',
+        'editSuccess' => 'Το επεισόδιο ενημερώθηκε με επιτυχία!',
+        'publishCancelSuccess' => 'Η δημοσίευση του επεισοδίου ακυρώθηκε επιτυχώς!',
     ],
     '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',
+            'Το μέγεθος του αρχείου σας είναι πολύ μεγάλο! Το μέγιστο μέγεθος είναι {0}. Αυξήστε τις τιμές `memory_limit`, `upload_max_filesize` και `post_max_size` στο αρχείο ρυθμίσεων php και έπειτα επανεκκινήστε τον διακομιστή web για να ανεβάσετε το αρχείο σας.',
+        'audio_file' => 'Αρχείο ήχου',
+        'audio_file_hint' => 'Επιλέξτε ένα αρχείο ήχου .mp3 ή .m4a.',
+        'info_section_title' => 'Πληροφορίες επεισοδίου',
+        '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.',
-        'title' => 'Title',
+            "Εάν δεν ορίσετε ένα εξώφυλλο, το εξώφυλλο του podcast θα χρησιμοποιηθεί αντ 'αυτού.",
+        'cover_size_hint' => 'Το εξώφυλλο πρέπει να είναι τουλάχιστον 1400px πλάτος και ύψος.',
+        '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',
+            'Θα πρέπει να υπάρχει ένα σαφές και συνοπτικό όνομα επεισοδίου. Μην καθορίσετε εδώ το επεισόδιο ή τους αριθμούς της σεζόν.',
+        'permalink' => 'Μόνιμος σύνδεσμος',
+        'season_number' => 'Σεζόν',
+        'episode_number' => 'Επεισόδιο',
         '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',
+            'label' => 'Είδος',
+            'full' => 'Πλήρης',
+            'full_hint' => 'Πλήρες περιεχόμενο (το επεισόδιο)',
+            'trailer' => 'Τρέιλερ',
+            'trailer_hint' => 'Σύντομο, προωθητικό περιεχόμενο που αντιπροσωπεύει μια προεπισκόπηση της τρέχουσας εμφάνισης',
+            'bonus' => 'Μπόνους',
+            'bonus_hint' => 'Επιπλέον περιεχόμενο για την παράσταση (για παράδειγμα, πίσω από τις σκηνές πληροφορίες ή συνεντεύξεις με τη cast) ή δια-διαφημιστικό περιεχόμενο για μια άλλη παράσταση',
         ],
         'parental_advisory' => [
-            'label' => 'Parental advisory',
+            'label' => 'Γονικός σύμβουλος',
             'hint' => 'Does the episode contain explicit content?',
             'undefined' => 'undefined',
             'clean' => 'Clean',
@@ -137,11 +137,11 @@ return [
         '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',
+        'message_warning_submit' => 'Δημοσίευση ούτως ή άλλως',
     ],
     'unpublish_form' => [
         'disclaimer' =>
-            "Unpublishing the episode will delete all the posts associated with it and remove it from the podcast's RSS feed.",
+            "Η κατάργηση της δημοσίευσης του επεισοδίου θα διαγράψει όλες τις δημοσιεύσεις που σχετίζονται με αυτό και θα τις αφαιρέσει από τη ροή RSS του podcast.",
         'understand' => 'I understand, I want to unpublish the episode',
         'submit' => 'Unpublish',
     ],
diff --git a/modules/Admin/Language/es/Episode.php b/modules/Admin/Language/es/Episode.php
index b810f2716f..8d161b45fb 100644
--- a/modules/Admin/Language/es/Episode.php
+++ b/modules/Admin/Language/es/Episode.php
@@ -50,15 +50,15 @@ return [
     ],
     '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.',
+            '¡El tamaño de tu archivo es demasiado grande! El tamaño máximo es {0}. Aumenta los valores de `memory_limit`, `upload_max_filesize` y `post_max_size` en tu archivo de configuración php y reinicia tu servidor web para subir tu archivo.',
         'audio_file' => 'Archivo de audio',
         'audio_file_hint' => 'Choose an .mp3 or .m4a audio file.',
-        'info_section_title' => 'Episode info',
+        'info_section_title' => 'Información de episodio',
         '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.',
-        'title' => 'Title',
+        'title' => 'Título',
         'title_hint' =>
             'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
         'permalink' => 'Enlace permanente',
@@ -123,9 +123,9 @@ return [
         '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_date' => 'Fecha de publicación',
         'publication_method' => [
-            'now' => 'Now',
+            'now' => 'Ahora',
             'schedule' => 'Schedule',
         ],
         'scheduled_publication_date' => 'Scheduled publication date',
@@ -137,29 +137,29 @@ return [
         'cancel_publication' => 'Cancelar publicación',
         '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',
+        'message_warning_submit' => 'Publicar de todos modos',
     ],
     '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',
+        'understand' => 'Lo entiendo, quiero anular la publicación del episodio',
+        'submit' => 'Anular publicación',
     ],
     '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',
-        'submit' => 'Delete',
+        'submit' => 'Borrar',
     ],
     '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',
+        'clipboard_url' => 'Copiar dirección al portapapeles',
+        'dark' => 'Oscuro',
         'dark-transparent' => 'Dark transparent',
-        'light' => 'Light',
+        'light' => 'Claro',
         'light-transparent' => 'Light transparent',
     ],
 ];
diff --git a/modules/Admin/Language/fr/Fediverse.php b/modules/Admin/Language/fr/Fediverse.php
index c999a16213..95d3a96427 100644
--- a/modules/Admin/Language/fr/Fediverse.php
+++ b/modules/Admin/Language/fr/Fediverse.php
@@ -22,7 +22,7 @@ return [
         'handle' => 'Identifiant',
         'handle_hint' => 'Saisissez l’utilisateur @nom@domaine.',
         'domain' => 'Nom de domaine',
-        'submit' => 'Sauvegarder les listes',
+        'submit' => 'Bloquer !',
     ],
     'list' => [
         'actor' => 'Utilisateur',
diff --git a/modules/Admin/Language/nn-NO/Admin.php b/modules/Admin/Language/nn-NO/Admin.php
new file mode 100644
index 0000000000..2b69c6971f
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Styringspanel',
+    'welcome_message' => 'Velkomen til styrarområdet!',
+    'choose_interact' => 'Vel korleis du vil samhandla',
+];
diff --git a/modules/Admin/Language/nn-NO/Breadcrumb.php b/modules/Admin/Language/nn-NO/Breadcrumb.php
new file mode 100644
index 0000000000..c7852453f6
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/Breadcrumb.php
@@ -0,0 +1,48 @@
+<?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' => 'navigeringslenke',
+    config('Admin')
+        ->gateway => 'Heim',
+    'podcasts' => 'podkastar',
+    'episodes' => 'episodar',
+    'contributors' => 'bidragsytarar',
+    'pages' => 'sider',
+    'settings' => 'innstillingar',
+    'theme' => 'bunad',
+    'add' => 'legg til',
+    'new' => 'ny',
+    'edit' => 'rediger',
+    'persons' => 'personar',
+    'publish' => 'legg ut',
+    'publish-edit' => 'rediger publiseringa',
+    'unpublish' => 'avpubliser',
+    'delete' => 'slett',
+    'fediverse' => 'fødiverset',
+    'block-lists' => 'blokkeringslister',
+    'users' => 'brukarar',
+    'my-account' => 'kontoen min',
+    'change-password' => 'endre passord',
+    'import' => 'importer straumar',
+    'platforms' => 'plattformer',
+    'social' => 'sosiale nettverk',
+    'funding' => 'finansiering',
+    'analytics' => 'analysar',
+    'locations' => 'stader',
+    'webpages' => 'nettsider',
+    'unique-listeners' => 'unike lyttarar',
+    'players' => 'spelarar',
+    'listening-time' => 'lyttetid',
+    'time-periods' => 'tidsperiodar',
+    'soundbites' => 'lydbetar',
+    'video-clips' => 'videoklypp',
+    'embed' => 'innbyggbar spelar',
+];
diff --git a/modules/Admin/Language/nn-NO/Charts.php b/modules/Admin/Language/nn-NO/Charts.php
new file mode 100644
index 0000000000..02035e04d7
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Episodenedlastingar etter tenest (siste veka)',
+    'by_player_weekly' => 'Episodenedlastingar etter spelar (siste veka)',
+    'by_player_yearly' => 'Episodenedlastingar etter spelar (siste året)',
+    'by_device_weekly' => 'Episodenedlastingar etter eining (siste veka)',
+    'by_os_weekly' => 'Episodenedlastingar etter operativsystem (siste veka)',
+    'podcast_by_region' => 'Episodenedlastingar etter område (siste veka)',
+    'unique_daily_listeners' => 'Unike lyttarar pr. dag',
+    'unique_monthly_listeners' => 'Unike lyttarar pr. månad',
+    'by_browser' => 'Nettsidebruk etter nettlesar (siste veka)',
+    'podcast_by_day' => 'Daglege episodenedlastingar',
+    'podcast_by_month' => 'Episodenedlastingar pr. månad',
+    'episode_by_day' => 'Daglege episodenedlastingar (dei fyrste 60 dagane)',
+    'episode_by_month' => 'Episodenedlastingar pr. månad',
+    'episodes_by_day' =>
+        'Nedlastingar av dei siste 5 episodane (i løpet av dei fyrste 60 dagane)',
+    'by_country_weekly' => 'Episodenedlastingar etter land (siste veka)',
+    'by_country_yearly' => 'Episodenedlastingar etter land (siste året)',
+    'by_domain_weekly' => 'Nettsidevisingar etter kjelde (siste veka)',
+    'by_domain_yearly' => 'Nettsidevisingar etter kjelde (siste året)',
+    'by_entry_page' => 'Nettsidevisingar etter landingsside (siste veka)',
+    'podcast_bots' => 'Botar (søkjeprogram)',
+    'daily_listening_time' => 'Dagleg kumulativ lyttetid',
+    'monthly_listening_time' => 'MÃ¥nadleg kumulativ lyttetid',
+    'by_weekday' => 'Etter vekedag (dei siste 60 dagane)',
+    'by_hour' => 'Etter tid på dagen (dei siste 60 dagane)',
+    'podcast_by_bandwidth' => 'Dagleg bandbreidde (i MB)',
+];
diff --git a/modules/Admin/Language/nn-NO/Common.php b/modules/Admin/Language/nn-NO/Common.php
new file mode 100644
index 0000000000..813bb910aa
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Ja',
+    'no' => 'Nei',
+    'cancel' => 'Avbryt',
+    'optional' => 'Valfritt',
+    'more' => 'Meir',
+    'no_data' => 'Fann ingen data!',
+    'close' => 'Lukk',
+    'edit' => 'Rediger',
+    'copy' => 'Kopier',
+    'copied' => 'Kopiert!',
+    'home' => 'Heim',
+    'explicit' => 'Grov prat',
+    'powered_by' => 'Køyrer på {castopod}',
+    'actions' => 'Handlingar',
+    'pageInfo' => 'Side {currentPage} av {pageCount}',
+    'go_back' => 'Tilbake',
+    'forms' => [
+        'editor' => [
+            'write' => 'Skriv',
+            'preview' => 'Førehandsvising',
+            'help' => 'Køyrer markdown',
+        ],
+        'multiSelect' => [
+            'selectText' => 'Trykk for å velja',
+            'loadingText' => 'Lastar…',
+            'noResultsText' => 'Fann ingen resultat',
+            'noChoicesText' => 'Ingen val å velja mellom',
+            'maxItemText' => 'Kan ikkje leggja til fleire element',
+        ],
+        'upload_file' => 'Last opp ei fil',
+        'remote_url' => 'Ekstern URL-adresse',
+    ],
+    'play_episode_button' => [
+        'play' => 'Spel',
+        'playing' => 'Spelar',
+    ],
+    'size_limit' => 'Maks storleik: {0}.',
+];
diff --git a/modules/Admin/Language/nn-NO/Contributor.php b/modules/Admin/Language/nn-NO/Contributor.php
new file mode 100644
index 0000000000..0fe4cc66fb
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Podkast-bidragsytarar',
+    'view' => "{username} sitt bidrag til {podcastTitle}",
+    'add' => 'Legg til bidragsytar',
+    'add_contributor' => 'Legg til bidragsytar til {0}',
+    'edit_role' => 'Oppdater rolla for {0}',
+    'edit' => 'Rediger',
+    'remove' => 'Fjern',
+    'list' => [
+        'username' => 'Brukarnamn',
+        'role' => 'Rolle',
+    ],
+    'form' => [
+        'user' => 'Brukar',
+        'user_placeholder' => 'Vel ein brukar…',
+        'role' => 'Rolle',
+        'role_placeholder' => 'Vel rolle…',
+        'submit_add' => 'Legg til bidragsytar',
+        'submit_edit' => 'Oppdater rolla',
+    ],
+    'roles' => [
+        'podcast_admin' => 'Podkaststyrar',
+    ],
+    'messages' => [
+        'removeOwnerError' => "Du kan ikkje fjerna podkast-eigaren!",
+        'removeSuccess' =>
+            'Du har fjerna {username} frå {podcastTitle}',
+        'alreadyAddedError' =>
+            "Denne bidragsytaren er allereie lagt til!",
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Countries.php b/modules/Admin/Language/nn-NO/Countries.php
new file mode 100644
index 0000000000..451541ffac
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Dei sameinte arabiske emirata',
+    'AF' => 'Afghanistan',
+    'AG' => 'Antigua og Barbuda',
+    'AI' => 'Anguilla',
+    'AL' => 'Albania',
+    'AM' => 'Armenia',
+    'AO' => 'Angola',
+    'AQ' => 'Antarktis',
+    'AR' => 'Argentina',
+    'AS' => 'Amerikansk Samoa',
+    'AT' => 'Austerrike',
+    'AU' => 'Australia',
+    'AW' => 'Aruba',
+    'AX' => 'Ã…land',
+    'AZ' => 'Aserbajdsjan',
+    'BA' => 'Bosnia og Herzegovina',
+    'BB' => 'Barbados',
+    'BD' => 'Bangladesh',
+    'BE' => 'Belgia',
+    'BF' => 'Burkina Faso',
+    'BG' => 'Bulgaria',
+    'BH' => 'Bahrain',
+    'BI' => 'Burundi',
+    'BJ' => 'Benin',
+    'BL' => 'Sankt Barthélemy',
+    'BM' => 'Bermuda',
+    'BN' => 'Brunei Darussalam',
+    'BO' => 'Den fleirnasjonale staten Bolivia',
+    'BQ' => 'Bonaire, Sint Eustatius og Saba',
+    'BR' => 'Brasil',
+    'BS' => 'Bahamas',
+    'BT' => 'Bhutan',
+    'BV' => 'Bouvet-øya',
+    'BW' => 'Botswana',
+    'BY' => 'Kviterussland',
+    'BZ' => 'Belize',
+    'CA' => 'Canada',
+    'CC' => 'Kokosøyane (Keelingøyane)',
+    'CD' => 'Den demokratiske republikken Kongo',
+    'CF' => 'Den sentralafrikanske republikken',
+    'CG' => 'Kongo',
+    'CH' => 'Sveits',
+    'CI' => "Elfenbeinskysten",
+    'CK' => 'Cook-øyane',
+    'CL' => 'Chile',
+    'CM' => 'Kamerun',
+    'CN' => 'Kina',
+    'CO' => 'Colombia',
+    'CR' => 'Costa Rica',
+    'CU' => 'Cuba',
+    'CV' => 'Kapp Verde',
+    'CW' => 'Curaçao',
+    'CX' => 'Christmasøya',
+    'CY' => 'Kypros',
+    'CZ' => 'Tsjekkia',
+    'DE' => 'Tyskland',
+    'DJ' => 'Djibouti',
+    'DK' => 'Danmark',
+    'DM' => 'Dominica',
+    'DO' => 'Den dominikanske republikken',
+    'DZ' => 'Algerie',
+    'EC' => 'Ecuador',
+    'EE' => 'Estland',
+    'EG' => 'Egypt',
+    'EH' => 'Vest-Sahara',
+    'ER' => 'Eritrea',
+    'ES' => 'Spania',
+    'ET' => 'Etiopia',
+    'FI' => 'Finland',
+    'FJ' => 'Fiji',
+    'FK' => 'Falklandsøyane (Malvinas)',
+    'FM' => 'Mikronesiaføderasjonen',
+    'FO' => 'Færøyane',
+    'FR' => 'Frankrike',
+    'GA' => 'Gabon',
+    'GB' => 'Storbritannia',
+    'GD' => 'Grenada',
+    'GE' => 'Georgia',
+    'GF' => 'Fransk Guyana',
+    'GG' => 'Guernsey',
+    'GH' => 'Ghana',
+    'GI' => 'Gibraltar',
+    'GL' => 'Grønland',
+    'GM' => 'Gambia',
+    'GN' => 'Guinea',
+    'GP' => 'Guadeloupe',
+    'GQ' => 'Ekvatorialguinea',
+    'GR' => 'Hellas',
+    'GS' => 'Sør-Georgia og Sør-Sandwichøyane',
+    'GT' => 'Guatemala',
+    'GU' => 'Guam',
+    'GW' => 'Guinea-Bissau',
+    'GY' => 'Guyana',
+    'HK' => 'Hong Kong',
+    'HM' => 'Heard- og McDonaldøyane',
+    'HN' => 'Honduras',
+    'HR' => 'Kroatia',
+    'HT' => 'Haiti',
+    'HU' => 'Ungarn',
+    'ID' => 'Indonesia',
+    'IE' => 'Irland',
+    'IL' => 'Israel',
+    'IM' => 'Man',
+    'IN' => 'India',
+    'IO' => 'Det britiske territoriet i Indiahavet',
+    'IQ' => 'Irak',
+    'IR' => 'Iran',
+    'IS' => 'Island',
+    'IT' => 'Italia',
+    'JE' => 'Jersey',
+    'JM' => 'Jamaica',
+    'JO' => 'Jordan',
+    'JP' => 'Japan',
+    'KE' => 'Kenya',
+    'KG' => 'Kirgisistan',
+    'KH' => 'Kambodsja',
+    'KI' => 'Kiribati',
+    'KM' => 'Komorane',
+    'KN' => 'Saint Kitts og Nevis',
+    'KP' => "Nord-Korea",
+    'KR' => 'Sør-Korea',
+    'KW' => 'Kuwait',
+    'KY' => 'Cayman-øyane',
+    'KZ' => 'Kasakhstan',
+    'LA' => "Laos",
+    'LB' => 'Libanon',
+    'LC' => 'Saint Lucia',
+    'LI' => 'Liechtenstein',
+    'LK' => 'Sri Lanka',
+    'LR' => 'Liberia',
+    'LS' => 'Lesotho',
+    'LT' => 'Litauen',
+    'LU' => 'Luxembourg',
+    'LV' => 'Latvia',
+    'LY' => 'Libya',
+    'MA' => 'Marokko',
+    'MC' => 'Monaco',
+    'MD' => 'Moldova',
+    'ME' => 'Montenegro',
+    'MF' => 'Saint Martin (fransk del)',
+    'MG' => 'Madagaskar',
+    'MH' => 'Marshall-øyane',
+    'MK' => 'Den tidlegare jugoslaviske republikken Makedonia',
+    'ML' => 'Mali',
+    'MM' => 'Myanmar',
+    'MN' => 'Mongolia',
+    'MO' => 'Macao',
+    'MP' => 'Nord-Marianane',
+    'MQ' => 'Martinique',
+    'MR' => 'Mauritania',
+    'MS' => 'Montserrat',
+    'MT' => 'Malta',
+    'MU' => 'Mauritius',
+    'MV' => 'Maldivane',
+    'MW' => 'Malawi',
+    'MX' => 'Mexico',
+    'MY' => 'Malaysia',
+    'MZ' => 'Mosambik',
+    'N/A' => 'Ikkje relevant (lokal IP…)',
+    'NA' => 'Namibia',
+    'NC' => 'Ny-Kaledonia',
+    'NE' => 'Niger',
+    'NF' => 'Norfolkøya',
+    'NG' => 'Nigeria',
+    'NI' => 'Nicaragua',
+    'NL' => 'Nederland',
+    'NO' => 'Noreg',
+    'NP' => 'Nepal',
+    'NR' => 'Nauru',
+    'NU' => 'Niue',
+    'NZ' => 'New Zealand',
+    'OM' => 'Oman',
+    'PA' => 'Panama',
+    'PE' => 'Peru',
+    'PF' => 'Fransk Polynesia',
+    'PG' => 'Papua Ny-Guinea',
+    'PH' => 'Filippinane',
+    'PK' => 'Pakistan',
+    'PL' => 'Polen',
+    'PM' => 'Saint Pierre og Miquelon',
+    'PN' => 'Pitcairn',
+    'PR' => 'Puerto Rico',
+    'PS' => 'Palestina',
+    'PT' => 'Portugal',
+    'PW' => 'Palau',
+    'PY' => 'Paraguay',
+    'QA' => 'Qatar',
+    'RE' => 'Réunion',
+    'RO' => 'Romania',
+    'RS' => 'Serbia',
+    'RU' => 'Den russiske føderasjonen',
+    'RW' => 'Rwanda',
+    'SA' => 'Saudi-Arabia',
+    'SB' => 'Solomonøyane',
+    'SC' => 'Seychellane',
+    'SD' => 'Sudan',
+    'SE' => 'Sverige',
+    'SG' => 'Singapore',
+    'SH' => 'St. Helena, Ascension og Tristan da Cunha',
+    'SI' => 'Slovenia',
+    'SJ' => 'Svalbard og Jan Mayen',
+    'SK' => 'Slovakia',
+    'SL' => 'Sierra Leone',
+    'SM' => 'San Marino',
+    'SN' => 'Senegal',
+    'SO' => 'Somalia',
+    'SR' => 'Surinam',
+    'SS' => 'Sør-Sudan',
+    'ST' => 'São Tomé og Príncipe',
+    'SV' => 'El Salvador',
+    'SX' => 'Sint Maarten (nederlandsk del)',
+    'SY' => 'Syria',
+    'SZ' => 'Swaziland',
+    'TC' => 'Turks- og Caicosøyane',
+    'TD' => 'Tsjad',
+    'TF' => 'Dei sørlege franske territoria',
+    'TG' => 'Togo',
+    'TH' => 'Thailand',
+    'TJ' => 'Tadsjikistan',
+    'TK' => 'Tokelau',
+    'TL' => 'Aust-Timor',
+    'TM' => 'Turkmenistan',
+    'TN' => 'Tunisia',
+    'TO' => 'Tonga',
+    'TR' => 'Tyrkia',
+    'TT' => 'Trinidad og Tobago',
+    'TV' => 'Tuvalu',
+    'TW' => 'Taiwan',
+    'TZ' => 'Tanzania',
+    'UA' => 'Ukraina',
+    'UG' => 'Uganda',
+    'UM' => 'Dei mindre ytre øyane i USA',
+    'US' => 'USA',
+    'UY' => 'Uruguay',
+    'UZ' => 'Usbekistan',
+    'VA' => 'Vatikanstaten',
+    'VC' => 'Sankt Vincent og Grenadinane',
+    'VE' => 'Venezuela',
+    'VG' => 'Dei britiske jomfruøyane',
+    'VI' => 'Dei amerikanske jomfruøyane',
+    'VN' => 'Vietnam',
+    'VU' => 'Vanuatu',
+    'WF' => 'Wallis og Futuna',
+    'WS' => 'Samoa',
+    'YE' => 'Jemen',
+    'YT' => 'Mayotte',
+    'ZA' => 'Sør-Afrika',
+    'ZM' => 'Zambia',
+    'ZW' => 'Zimbabwe',
+];
diff --git a/modules/Admin/Language/nn-NO/Episode.php b/modules/Admin/Language/nn-NO/Episode.php
new file mode 100644
index 0000000000..b585c3dca5
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/Episode.php
@@ -0,0 +1,165 @@
+<?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' => 'Sesong {seasonNumber}',
+    'season_abbr' => 'S{seasonNumber}',
+    'number' => 'Episode {episodeNumber}',
+    'number_abbr' => 'Ep. {episodeNumber}',
+    'season_episode' => 'Sesong {seasonNumber} episode {episodeNumber}',
+    'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}',
+    'number_of_comments' => '{numberOfComments, plural,
+        one {# kommentar}
+        other {# kommentarar}
+    }',
+    'all_podcast_episodes' => 'Alle podkast-episodane',
+    'back_to_podcast' => 'GÃ¥ tilbake til podkasten',
+    'edit' => 'Rediger',
+    'publish' => 'Legg ut',
+    'publish_edit' => 'Rediger publiseringa',
+    'unpublish' => 'Avpubliser',
+    'publish_error' => 'Episoden er allereie publisert.',
+    'publish_edit_error' => 'Episoden er allereie publisert.',
+    'publish_cancel_error' => 'Episoden er allereie publisert.',
+    'unpublish_error' => 'Episoden er ikkje publisert.',
+    'delete' => 'Slett',
+    'go_to_page' => 'GÃ¥ til side',
+    'create' => 'Legg til ein episode',
+    'publication_status' => [
+        'published' => 'Lagt ut',
+        'scheduled' => 'Planlagt',
+        'not_published' => 'Ikkje lagt ut',
+    ],
+    'list' => [
+        'episode' => 'Episode',
+        'visibility' => 'Synlegheit',
+        'comments' => 'Kommentarar',
+        'actions' => 'Handlingar',
+    ],
+    'messages' => [
+        'createSuccess' => 'Episoden er oppretta!',
+        'editSuccess' => 'Episoden er oppdatert!',
+        'publishCancelSuccess' => 'Du har avbrote å leggja ut episoden.',
+    ],
+    'form' => [
+        'file_size_error' =>
+            'Fila di er for stor! Maks filstorleik er {0}. Auk `memory_limit`, `upload_max_filesize` og `post_max_size`-verdiane i php-oppsettsfila di og start omatt vevtenaren din for å lasta opp fila di.',
+        'audio_file' => 'Lydfil',
+        'audio_file_hint' => 'Vel ei .mp3- eller .m4a-lydfil.',
+        'info_section_title' => 'Episodeinfo',
+        '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.',
+        'title' => 'Tittel',
+        'title_hint' =>
+            'Bør innehalda eit klårt og konsist episodenamn. Ikkje skriv inn nummer på episode eller sesong her.',
+        'permalink' => 'Fastlenke',
+        'season_number' => 'Sesong',
+        'episode_number' => 'Episode',
+        'type' => [
+            'label' => 'Type',
+            'full' => 'Full',
+            'full_hint' => 'Fullstendig innhald (episoden)',
+            'trailer' => 'Trailer',
+            'trailer_hint' => 'Kort stykke med blestingsinnhald som representerer denne episoden',
+            'bonus' => 'Bonus',
+            'bonus_hint' => 'Ekstra innhald (til dømes bakominfo eller intervju med skodespelarane) eller innhald for å framheva ein annan serie',
+        ],
+        'parental_advisory' => [
+            'label' => 'RÃ¥d til foreldre',
+            'hint' => 'Inneheld episoden grov prat?',
+            'undefined' => 'udefinert',
+            'clean' => 'Familievenleg',
+            'explicit' => 'Grovt',
+        ],
+        'show_notes_section_title' => 'Vis notat',
+        'show_notes_section_subtitle' =>
+            'Opp til 4000 teikn. Ver tydeleg og konsis. Skriv notat som hjelper lyttarane å finna episoden.',
+        'description' => 'Skildring',
+        'description_footer' => 'Botntekst for skildringa',
+        'description_footer_hint' =>
+            '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.<br />Sjå {podcastNamespaceLink} for meir informasjon.',
+        'location_section_title' => 'Stad',
+        'location_section_subtitle' => 'Kva stad handlar denne episoden om?',
+        'location_name' => 'Stadnamn eller adresse',
+        'location_name_hint' => 'Dette kan vera ein verkeleg eller oppdikta stad',
+        'transcript' => 'Transkribering (undertitlar eller teksting)',
+        'transcript_hint' => 'Berre .srt.',
+        'transcript_download' => 'Last ned transkriberinga',
+        'transcript_file' => 'Transkriberingsfil (.srt)',
+        'transcript_remote_url' => 'Ekstern URL for teksting',
+        'transcript_file_delete' => 'Slett transkriberingsfila',
+        'chapters' => 'Kapittel',
+        'chapters_hint' => 'Fila må vera i JSON-kapittelformat.',
+        'chapters_download' => 'Last ned kapittel',
+        'chapters_file' => 'Kapittelfil',
+        'chapters_remote_url' => 'Ekstern URL til kapittelfil',
+        'chapters_file_delete' => 'Slett kapittelfila',
+        'advanced_section_title' => 'Avanserte innstillingar',
+        'advanced_section_subtitle' =>
+            'Viss du treng RSS-merkelappar som Castopod ikkje handterer, kan du skriva dei inn her.',
+        'custom_rss' => 'Eigne RSS-merkelappar for episoden',
+        'custom_rss_hint' => 'Dette blir sett inn i ❬item❭-elementet.',
+        'block' => 'Episoden skal gøymast frå alle plattformer',
+        'block_hint' =>
+            'Gøym eller vis episoden. Viss du vil gøyma denne episoden frå Apple-katalogen, skrur du på denne.',
+        'submit_create' => 'Lag episode',
+        'submit_edit' => 'Lagre episode',
+    ],
+    'publish_form' => [
+        'back_to_episode_dashboard' => 'Tilbake til episodeoversikta',
+        'post' => 'Kunngjeringsinnlegget ditt',
+        'post_hint' =>
+            "Skriv ei melding for å kunngjera at du har lagt ut episoden din. Meldinga blir kringkasta til alle fylgjarane dine på fødiverset, og vil stå på heimesida til podkasten din.",
+        'message_placeholder' => 'Skriv meldinga…',
+        'publication_date' => 'Publiseringsdato',
+        'publication_method' => [
+            'now' => 'No',
+            'schedule' => 'Planlegg',
+        ],
+        'scheduled_publication_date' => 'Planlagt publiseringsdato',
+        'scheduled_publication_date_clear' => 'Tøm publiseringsdatoen',
+        'scheduled_publication_date_hint' =>
+            'Du kan planleggja å offengleggjera episoden seinare ved å skriva inn eit publiseringstidspunkt. Feltet må vera i formatet ÅÅÅÅ-MM-DD HH:mm',
+        'submit' => 'Legg ut',
+        'submit_edit' => 'Rediger publiseringa',
+        'cancel_publication' => 'Avbryt publisering',
+        'message_warning' => 'Du skreiv inga melding til kunngjeringsinnlegget ditt!',
+        'message_warning_hint' => 'Viss du skriv ei melding, kan det gje meir sosialt engasjement og syta for at episoden din blir meir synleg.',
+        'message_warning_submit' => 'Legg ut likevel',
+    ],
+    'unpublish_form' => [
+        'disclaimer' =>
+            "Viss du avpubliserer episoden, vil alle innlegga som knytte til han bli sletta, og episoden vil bli fjerna frå RSS-straumen til podkasten.",
+        'understand' => 'Eg forstår, eg vil avpublisera episoden',
+        'submit' => 'Avpubliser',
+    ],
+    '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.",
+        'understand' => 'Eg forstår, eg vil sletta episoden',
+        'submit' => 'Slett',
+    ],
+    'embed' => [
+        'title' => 'Innbyggbar spelar',
+        'label' =>
+            'Vel eit fargetema, kopier den innbyggbare spelaren til utklyppstavla og lim han inn på nettstaden din.',
+        'clipboard_iframe' => 'Kopier den innbyggbare spelaren til utklyppstavla',
+        'clipboard_url' => 'Kopier adressa til utklyppstavla',
+        'dark' => 'Mørk',
+        'dark-transparent' => 'Mørk gjennomsiktig',
+        'light' => 'Lys',
+        'light-transparent' => 'Lys gjennomsiktig',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/EpisodeNavigation.php b/modules/Admin/Language/nn-NO/EpisodeNavigation.php
new file mode 100644
index 0000000000..e0bf8199c0
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Vis episode-sida',
+    'dashboard' => 'Episodestyringspanelet',
+    'episode-view' => 'Heim',
+    'episode-edit' => 'Rediger episoden',
+    'episode-persons-manage' => 'Handter personar',
+    'embed-add' => 'Innbyggbar spelar',
+    'clips' => 'Klypp',
+    'video-clips-list' => 'Videoklypp',
+    'video-clips-create' => 'Nytt videoklypp',
+    'soundbites-list' => 'Lydbetar',
+    'soundbites-create' => 'Ny lydbete',
+];
diff --git a/modules/Admin/Language/nn-NO/Fediverse.php b/modules/Admin/Language/nn-NO/Fediverse.php
new file mode 100644
index 0000000000..1b136b7443
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Fann ikkje kontoen!',
+        'blockActorSuccess' => '{actor} er blokkert!',
+        'unblockActorSuccess' => 'Aktøren er avblokkert!',
+        'blockDomainSuccess' => '{domain} er blokkert!',
+        'unblockDomainSuccess' => '{domain} er avblokkert!',
+    ],
+    'blocked_actors' => 'Blokkerte kontoar',
+    'blocked_domains' => 'Blokkerte domene',
+    'block_lists_form' => [
+        'handle' => 'Kontohandtak',
+        'handle_hint' => 'Skriv inn ein @brukarnamn@domene-konto.',
+        'domain' => 'Domenenamn',
+        'submit' => 'Blokker!',
+    ],
+    'list' => [
+        'actor' => 'Konto',
+        'domain' => 'Domenenamn',
+        'unblock' => 'Avblokker',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Home.php b/modules/Admin/Language/nn-NO/Home.php
new file mode 100644
index 0000000000..3ef4750151
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Alle podkastar',
+    'no_podcast' => 'Fann ingen podkast',
+];
diff --git a/modules/Admin/Language/nn-NO/Install.php b/modules/Admin/Language/nn-NO/Install.php
new file mode 100644
index 0000000000..fefcb3657d
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Manuelt oppsett',
+    'manual_config_subtitle' =>
+        'Lag ei `.env`-fil med innstillingane dine og oppdater sida for å halda fram installasjonen.',
+    'form' => [
+        'instance_config' => 'Oppsett for nettstaden',
+        'hostname' => 'Vertsnamn',
+        'media_base_url' => 'Mediabase-URL',
+        'media_base_url_hint' =>
+            'Viss du bruker eit leveringsnettverk (CDN) og/eller ei ekstern analysetenest, kan du skriva dei inn her.',
+        'admin_gateway' => 'Innfallsport for styrar',
+        'admin_gateway_hint' =>
+            'Ruta for å koma til styringsområdet (td. https://eksempel.no/cp-admin). Standardvalet er cp-admin, me tilrår at du endrar det av omsyn til tryggleiken.',
+        'auth_gateway' => 'Innfallsport for autentisering',
+        'auth_gateway_hint' =>
+            'Ruta for å koma til autentiseringssidene (td. https://eksempel.no/cp-auth). Standardvalet er cp-auth, me tilrår at du endrar det av omsyn til tryggleiken.',
+        'database_config' => 'Databaseoppsett',
+        'database_config_hint' =>
+            'Castopod treng å kopla seg til MySQL (eller MariaDB)-databasen din. Viss du ikkje har opplysingane som trengst, må du kontakta systemansvarleg.',
+        'db_hostname' => 'Databasevertsnamn',
+        'db_name' => 'Databasenamn',
+        'db_username' => 'Databasebrukarnamn',
+        'db_password' => 'Databasepassord',
+        'db_prefix' => 'Databaseprefiks',
+        'db_prefix_hint' =>
+            "Prefikset til Castopod-tabellane. La det stå om du ikkje veit kva det tyder.",
+        'cache_config' => 'Mellomlagringsoppsett',
+        'cache_config_hint' =>
+            'Vel korleis du vil handtera mellomlageret. La stå som det er om du ikkje veit kva det tyder.',
+        'cache_handler' => 'Mellomlagerhandtering',
+        'cacheHandlerOptions' => [
+            'file' => 'Fil',
+            'redis' => 'Redis',
+            'predis' => 'Predis',
+        ],
+        'next' => 'Neste',
+        'submit' => 'Fullfør installeringa',
+        'create_superadmin' => 'Lag superstyrar-konto',
+        'email' => 'Epost',
+        'username' => 'Brukarnamn',
+        'password' => 'Passord',
+    ],
+    'messages' => [
+        'createSuperAdminSuccess' =>
+            'Superstyrar-kontoen din er oppretta. Logg inn for å byrja med podkasting!',
+        'databaseConnectError' =>
+            'Castopod greidde ikkje å kopla til databasen din. Sjå gjennom databaseoppsettet og prøv ein gong til.',
+        'writeError' =>
+            "Greidde ikkje laga eller skriva til `.env`-fila. Du må laga ho manuelt ved å fylgja `.env.example`-filmalen i Castopod-pakka.",
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/MyAccount.php b/modules/Admin/Language/nn-NO/MyAccount.php
new file mode 100644
index 0000000000..a853dc8aef
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Kontoinformasjonen min',
+    'changePassword' => 'Endra passordet mitt',
+    'messages' => [
+        'wrongPasswordError' => "Du skreiv inn feil passord. Prøv ein gong til.",
+        'passwordChangeSuccess' => 'Passordet er endra!',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Navigation.php b/modules/Admin/Language/nn-NO/Navigation.php
new file mode 100644
index 0000000000..ce1b2185b2
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Vis/gøym sidepanelet',
+    'go_to_website' => 'GÃ¥ til nettsida',
+    'go_to_admin' => 'GÃ¥ til styringspanelet',
+    'dashboard' => 'Styringspanel',
+    'admin' => 'Heim',
+    'podcasts' => 'Podkastar',
+    'podcast-list' => 'Alle podkastar',
+    'podcast-create' => 'Ny podkast',
+    'podcast-import' => 'Importer ein podkast',
+    'persons' => 'Personar',
+    'person-list' => 'Alle personar',
+    'person-create' => 'Ny person',
+    'fediverse' => 'Fødiverset',
+    'fediverse-blocked-actors' => 'Blokkerte kontoar',
+    'fediverse-blocked-domains' => 'Blokkerte domene',
+    'users' => 'Brukarar',
+    'user-list' => 'Alle brukarane',
+    'user-create' => 'Ny brukar',
+    'pages' => 'Sider',
+    'page-list' => 'Alle sidene',
+    'page-create' => 'Ny side',
+    'settings' => 'Innstillingar',
+    'settings-general' => 'Generelt',
+    'settings-theme' => 'Bunad',
+    'account' => [
+        'my-account' => 'Kontoen min',
+        'change-password' => 'Endre passord',
+        'logout' => 'Logg ut',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Page.php b/modules/Admin/Language/nn-NO/Page.php
new file mode 100644
index 0000000000..3533de5299
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Heimatt',
+    'page' => 'Side',
+    'all_pages' => 'Alle sidene',
+    'create' => 'Ny side',
+    'go_to_page' => 'GÃ¥ til side',
+    'edit' => 'Rediger sida',
+    'delete' => 'Slett sida',
+    'form' => [
+        'title' => 'Tittel',
+        'permalink' => 'Fastlenke',
+        'content' => 'Innhald',
+        'submit_create' => 'Lag side',
+        'submit_edit' => 'Lagre',
+    ],
+    'messages' => [
+        'createSuccess' => 'Sida “{pageTitle}” er oppretta!',
+        'editSuccess' => 'Sida er oppdatert!',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Pager.php b/modules/Admin/Language/nn-NO/Pager.php
new file mode 100644
index 0000000000..5b135b32d9
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Sidenavigering',
+    'first' => 'Fyrste',
+    'previous' => 'Førre',
+    'next' => 'Neste',
+    'last' => 'Siste',
+    'older' => 'Eldre',
+    'newer' => 'Nyare',
+    'invalidTemplate' => '{0} er ikkje ein gyldig sidenavigeringsmal.',
+    'invalidPaginationGroup' => '{0} er ikkje ei gyldig pagineringsgruppe.',
+];
diff --git a/modules/Admin/Language/nn-NO/Person.php b/modules/Admin/Language/nn-NO/Person.php
new file mode 100644
index 0000000000..c20bfedbf5
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Personar',
+    'all_persons' => 'Alle personar',
+    'no_person' => 'Fann ingen!',
+    'create' => 'Lag ein person',
+    'view' => 'Sjå personen',
+    'edit' => 'Rediger personen',
+    'delete' => 'Slett personen',
+    'messages' => [
+        'createSuccess' => 'Personen er oppretta!',
+        'editSuccess' => 'Personen er oppdatert!',
+        'deleteSuccess' => 'Personen er fjerna!',
+    ],
+    'form' => [
+        'avatar' => 'Profilbilete',
+        'avatar_size_hint' =>
+            'Profilbiletet må vera minst 400pkt breitt og høgt.',
+        'full_name' => 'Fullt namn',
+        'full_name_hint' => 'Dette er det fulle namnet eller aliaset til personen.',
+        'unique_name' => 'Unikt namn',
+        'unique_name_hint' => 'Brukt til URL-ar',
+        'information_url' => 'Informasjons-URL',
+        'information_url_hint' =>
+            'URL til ei relevant side med opplysingar om personen, slik som ei heimeside eller ei profilside hjå ein tredjepart.',
+        'submit_create' => 'Lag person',
+        'submit_edit' => 'Lagre person',
+    ],
+    'podcast_form' => [
+        'title' => 'Handter personar',
+        'add_section_title' => 'Legg personar til denne podkasten',
+        'add_section_subtitle' => 'Du kan velja fleire personar og roller.',
+        'persons' => 'Personar',
+        'persons_hint' =>
+            'Du kan velja ein eller fleire personar med same roller. Du må laga personane fyrst.',
+        'roles' => 'Roller',
+        'roles_hint' =>
+            'Du kan velja ingen, ei eller fleire roller for ein person.',
+        'submit_add' => 'Legg til person(ar)',
+        'remove' => 'Fjern',
+    ],
+    'episode_form' => [
+        'title' => 'Handter personar',
+        'add_section_title' => 'Legg personar til denne episoden',
+        'add_section_subtitle' => 'Du kan velja fleire personar og roller.',
+        'persons' => 'Personar',
+        'persons_hint' =>
+            'Du kan velja ein eller fleire personar med same roller. Du må laga personane fyrst.',
+        'roles' => 'Roller',
+        'roles_hint' =>
+            'Du kan velja ingen, ei eller fleire roller for ein person.',
+        'submit_add' => 'Legg til person(ar)',
+        'remove' => 'Fjern',
+    ],
+    'credits' => 'Bidragsytarar',
+];
diff --git a/modules/Admin/Language/nn-NO/Platforms.php b/modules/Admin/Language/nn-NO/Platforms.php
new file mode 100644
index 0000000000..3cf5f254df
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Plattformer',
+    'home_url' => 'GÃ¥ til {platformName}-nettstaden',
+    'submit_url' => 'Send podkasten din til {platformName}',
+    'visible' => 'Vis på heimesida til podkasten?',
+    'on_embed' => 'Vis i den innbyggbare spelaren?',
+    'remove' => 'Fjern {platformName}',
+    'submit' => 'Lagre',
+    'messages' => [
+        'updateSuccess' => 'Plattformlenkene er oppdaterte!',
+        'removeLinkSuccess' => 'Plattformlenka er fjerna.',
+        'removeLinkError' =>
+            'Greidde ikkje fjerna plattformlenka. Prøv ein gong til.',
+    ],
+    'description' => [
+        'podcasting' => 'Podkast-IDen på denne plattforma',
+        'social' => 'Konto-IDen til podkastane på denne plattforma',
+        'funding' => 'Oppmodingsmelding',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Podcast.php b/modules/Admin/Language/nn-NO/Podcast.php
new file mode 100644
index 0000000000..1e5eb58ac8
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/Podcast.php
@@ -0,0 +1,243 @@
+<?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' => 'Alle podkastar',
+    'no_podcast' => 'Fann ingen podkast!',
+    'create' => 'Lag ein podcast',
+    'import' => 'Importer ein podkast',
+    'new_episode' => 'Ny episode',
+    'view' => 'Sjå podkasten',
+    'edit' => 'Rediger podkasten',
+    'delete' => 'Slett podkasten',
+    'see_episodes' => 'Sjå episodane',
+    'see_contributors' => 'Sjå bidragsytarane',
+    'go_to_page' => 'GÃ¥ til side',
+    'latest_episodes' => 'Dei nyaste episodane',
+    'see_all_episodes' => 'Sjå alle episodane',
+    'messages' => [
+        'createSuccess' => 'Podkasten er oppretta!',
+        'editSuccess' => 'Podkasten er oppdatert!',
+        'importSuccess' => 'Podkasten er importert!',
+    ],
+    '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.',
+        'banner' => 'Podkastbanner',
+        'banner_size_hint' => 'Banneret må ha 3:1-forhold og vera minst 1500pkt breitt.',
+        'banner_delete' => 'Slett podkastbanneret',
+        'title' => 'Tittel',
+        'handle' => 'Handtak',
+        'handle_hint' =>
+            'Blir brukt til å identifisera podkasten. Du kan bruka store og små bokstavar, tal og understrek.',
+        'type' => [
+            'label' => 'Type',
+            'episodic' => 'Med episodar',
+            'episodic_hint' => 'Viss det er meininga at episodane skal kunna lyttast til uansett rekkjefylgje. Dei nyaste episodane blir presenterte fyrst.',
+            'serial' => 'I serie',
+            'serial_hint' => 'Viss det er meininga at episodane skal koma i ei bestemt rekkjefylgje. Dei eldste episodane blir presenterte fyrst.',
+        ],
+        'description' => 'Skildring',
+        'classification_section_title' => 'Klassifisering',
+        'classification_section_subtitle' =>
+            'Desse felta vil påverka publikummet og konkurransen din.',
+        'language' => 'Språk',
+        'category' => 'Kategori',
+        'category_placeholder' => 'Vel ein kategori…',
+        'other_categories' => 'Andre kategoriar',
+        'parental_advisory' => [
+            'label' => 'RÃ¥d til foreldre',
+            'hint' => 'Er det grov prat her?',
+            'undefined' => 'udefinert',
+            'clean' => 'Familievenleg',
+            'explicit' => 'Grovt',
+        ],
+        'author_section_title' => 'Forfattar',
+        'author_section_subtitle' => 'Kven styrer podkasten?',
+        'owner_name' => 'Namn på eigaren',
+        'owner_name_hint' =>
+            'Berre til administrativ bruk. Synleg i den offentlege RSS-straumen.',
+        'owner_email' => 'Epost til eigaren',
+        'owner_email_hint' =>
+            'Blir brukt av dei fleste plattformer til å stadfesta eigarskapen til podkasten. Synleg i den offentlege RSS-straumen.',
+        'publisher' => 'Utgjevar',
+        'publisher_hint' =>
+            'Gruppa som er ansvarleg for serien. Det er vanlegvis morselskapet eller nettverket til ein podkast. Dette feltet er stundom merka med «forfattar».',
+        'copyright' => 'Opphavsrett',
+        'location_section_title' => 'Stad',
+        'location_section_subtitle' => 'Kva stad handlar denne podkasten om?',
+        'location_name' => 'Stadnamn eller adresse',
+        'location_name_hint' => 'Dette kan vera ein verkeleg eller oppdikta stad',
+        'monetization_section_title' => 'Kommersialisering',
+        'monetization_section_subtitle' =>
+            'Ten pengar med hjelp frå publikummet ditt.',
+        'payment_pointer' => 'Betalingspunkt for nettkommersialisering',
+        'payment_pointer_hint' =>
+            'Det er her du vil få inn pengar frå nettkommersialiseringa',
+        'advanced_section_title' => 'Avanserte innstillingar',
+        'advanced_section_subtitle' =>
+            'Viss du treng RSS-merkelappar som Castopod ikkje handterer, kan du skriva dei inn her.',
+        'custom_rss' => 'Eigne RSS-merkelappar for podkasten',
+        '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.',
+        'partnership' => 'Partnarskap',
+        'partner_id' => 'ID',
+        'partner_link_url' => 'Lenke-URL',
+        'partner_image_url' => 'Bilet-URL',
+        'partner_id_hint' => 'Din eigen partnar-ID',
+        'partner_link_url_hint' => 'Lenkeadressa til den generelle partnaren',
+        'partner_image_url_hint' => 'Biletadressa til den generelle partnaren',
+        'status_section_title' => 'Status',
+        'block' => 'Podkasten skal gøymast frå alle plattformer',
+        'complete' => 'Podkasten vil ikkje få fleire episodar',
+        'lock' => 'Hindre at podkasten blir kopiert',
+        'lock_hint' =>
+            'Føremålet er å fortelja andre podkastplattformer om dei kan importera denne straumen. Dersom verdien er ja, blir alle forsøk på å importera denne straumen til ei ny plattform nekta.',
+        'submit_create' => 'Lag podkast',
+        'submit_edit' => 'Lagre podkasten',
+    ],
+    'category_options' => [
+        'uncategorized' => 'ukategorisert',
+        'arts' => 'Kunst',
+        'business' => 'Forretningar',
+        'comedy' => 'Komedie',
+        'education' => 'Utdanning',
+        'fiction' => 'Fiksjon',
+        'government' => 'Styresmakter',
+        'health_and_fitness' => 'Helse og trening',
+        'history' => 'Historie',
+        'kids_and_family' => 'Born &amp familie',
+        'leisure' => 'Fritid',
+        'music' => 'Musikk',
+        'news' => 'Nytt',
+        'religion_and_spirituality' => 'Religion &amp spiritualitet',
+        'science' => 'Vitskap',
+        'society_and_culture' => 'Samfunn &amp kultur',
+        'sports' => 'Idrett',
+        'technology' => 'Teknologi',
+        'true_crime' => 'Sann krim',
+        'tv_and_film' => 'TV &amp film',
+        'books' => 'Bøker',
+        'design' => 'Design',
+        'fashion_and_beauty' => 'Mote &amp venleik',
+        'food' => 'Mat',
+        'performing_arts' => 'Utøvande kunst',
+        'visual_arts' => 'Visuell kunst',
+        'careers' => 'Karriere',
+        'entrepreneurship' => 'Entreprenørskap',
+        'investing' => 'Investering',
+        'management' => 'Leiing',
+        'marketing' => 'Marknadsføring',
+        'non_profit' => 'Friviljug arbeid',
+        'comedy_interviews' => 'Humor-intervju',
+        'improv' => 'Improvisasjon',
+        'stand_up' => 'Ståkomikk',
+        'courses' => 'Kurs',
+        'how_to' => 'Slik gjer du',
+        'language_learning' => 'Språklæring',
+        'self_improvement' => 'Sjølvforbetring',
+        'comedy_fiction' => 'Oppdikta humor',
+        'drama' => 'Drama',
+        'science_fiction' => 'Science Fiction',
+        'alternative_health' => 'Alternativ helse',
+        'fitness' => 'Kom i form',
+        'medicine' => 'Medisin',
+        'mental_health' => 'Mental helse',
+        'nutrition' => 'Næring',
+        'sexuality' => 'Seksualitet',
+        'education_for_kids' => 'Utdanning for born',
+        'parenting' => 'Oppseding',
+        'pets_and_animals' => 'Kjæledyr &amp dyr',
+        'stories_for_kids' => 'Historier for born',
+        'animation_and_manga' => 'Animasjon &amp manga',
+        'automotive' => 'Bil og motor',
+        'aviation' => 'Luftfart',
+        'crafts' => 'Handverk',
+        'games' => 'Spel',
+        'hobbies' => 'Hobbyar',
+        'home_and_garden' => 'Heim og hage',
+        'video_games' => 'Videospel',
+        'music_commentary' => 'Musikkommentarar',
+        'music_history' => 'Musikkhistorie',
+        'music_interviews' => 'Musikkintervju',
+        'business_news' => 'Handelsnytt',
+        'daily_news' => 'Dagleg nytt',
+        'entertainment_news' => 'Underhaldningsnytt',
+        'news_commentary' => 'Kommentarar til nyhende',
+        'politics' => 'Politikk',
+        'sports_news' => 'Sportsnytt',
+        'tech_news' => 'Teknologinytt',
+        'buddhism' => 'Buddhisme',
+        'christianity' => 'Kristendom',
+        'hinduism' => 'Hinduisme',
+        'islam' => 'Islam',
+        'judaism' => 'Jødedom',
+        'religion' => 'Religion',
+        'spirituality' => 'Spiritualitet',
+        'astronomy' => 'Astronomi',
+        'chemistry' => 'Kjemi',
+        'earth_sciences' => 'Geofag',
+        'life_sciences' => 'Humaniora',
+        'mathematics' => 'Matematikk',
+        'natural_sciences' => 'Naturvitskap',
+        'nature' => 'Natur',
+        'physics' => 'Fysisk',
+        'social_sciences' => 'Sosialfag',
+        'documentary' => 'Dokumentar',
+        'personal_journals' => 'Personlege journalar',
+        'philosophy' => 'Filosofi',
+        'places_and_travel' => 'Stader &amp reise',
+        'relationships' => 'Forhold',
+        'baseball' => 'Baseball',
+        'basketball' => 'Basketball',
+        'cricket' => 'Cricket',
+        'fantasy_sports' => 'Fantasiidrettar',
+        'football' => 'Fotball',
+        'golf' => 'Golf',
+        'hockey' => 'Hockey',
+        'rugby' => 'Rugby',
+        'running' => 'Springing',
+        'soccer' => 'Fotball',
+        'swimming' => 'Symjing',
+        'tennis' => 'Tennis',
+        'volleyball' => 'Volleyball',
+        'wilderness' => 'Villmark',
+        'wrestling' => 'Bryting',
+        'after_shows' => 'Etterprogram',
+        'film_history' => 'Filmhistorie',
+        'film_interviews' => 'Filmintervju',
+        'film_reviews' => 'Filmmeldingar',
+        'tv_reviews' => 'TV-meldingar',
+    ],
+    'by' => 'Av {publisher}',
+    'season' => 'Sesong {seasonNumber}',
+    'list_of_episodes_year' => '{year}-episodar ({episodeCount})',
+    'list_of_episodes_season' =>
+        'Sesong {seasonNumber}-episodar ({episodeCount})',
+    'no_episode' => 'Fann ingen episode!',
+    'follow' => 'Fylg',
+    'followers' => '{numberOfFollowers, plural,
+        one {<span class="font-semibold">#</span> fylgjar}
+        other {<span class="font-semibold">#</span> fylgjarar}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> innlegg}
+        other {<span class="font-semibold">#</span> innlegg}
+    }',
+    'activity' => 'Aktivitet',
+    'episodes' => 'Episodar',
+    'sponsor' => 'Sponsor',
+    'funding_links' => 'Finansieringslenker for {podcastTitle}',
+    'find_on' => 'Finn {podcastTitle} på',
+    'listen_on' => 'Høyr på',
+];
diff --git a/modules/Admin/Language/nn-NO/PodcastImport.php b/modules/Admin/Language/nn-NO/PodcastImport.php
new file mode 100644
index 0000000000..9fb36b11c2
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' =>
+        '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.',
+    'imported_feed_url' => 'URL til straumen',
+    'imported_feed_url_hint' => 'Straumen må vera i xml- eller rss-format.',
+    'new_podcast_section_title' => 'Den nye podkasten',
+    'advanced_params_section_title' => 'Avanserte innstilingar',
+    'advanced_params_section_subtitle' =>
+        'Bruk standardverdiane viss du ikkje veit kva desse felta er til.',
+    'slug_field' => 'Felt som skal brukast til å laga kortadressa til episoden',
+    'description_field' =>
+        'Kjeldefelt som skal brukast for å skildra episoden og syna notat',
+    'force_renumber' => 'Tving renummerering av episodane',
+    'force_renumber_hint' =>
+        'Bruk dette viss podkasten din ikkje har episodenummer, men du vil laga nummer når du importerer.',
+    'season_number' => 'Sesongnummer',
+    'season_number_hint' =>
+        'Bruk dette viss podkasten din ikkje har eit sesongnummer, men du vil laga eit når du importerer. La stå tomt i andre tilfelle.',
+    'max_episodes' => 'Makstal på episodar å importera',
+    'max_episodes_hint' => 'La stå tomt for å importera alle episodane',
+    'lock_import' =>
+        'Denne straumen er verna. Du kan ikkje importera han. Viss du er eigaren, må du ta bort vernet på den originale plattforma.',
+    'submit' => 'Importer ein podkast',
+];
diff --git a/modules/Admin/Language/nn-NO/PodcastNavigation.php b/modules/Admin/Language/nn-NO/PodcastNavigation.php
new file mode 100644
index 0000000000..cf628d0ea2
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/PodcastNavigation.php
@@ -0,0 +1,35 @@
+<?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' => 'GÃ¥ til podkastsida',
+    'dashboard' => 'Podkast-styringspanel',
+    'podcast-view' => 'Heim',
+    'podcast-edit' => 'Rediger podkasten',
+    'podcast-persons-manage' => 'Handter personar',
+    'episodes' => 'Episodar',
+    'episode-list' => 'Alle episodane',
+    'episode-create' => 'Ny episode',
+    'analytics' => 'Analysar',
+    'podcast-analytics' => 'Oversikt over publikum',
+    'podcast-analytics-webpages' => 'Nettsidevisingar',
+    'podcast-analytics-locations' => 'Stader',
+    'podcast-analytics-unique-listeners' => 'Unike lyttarar',
+    'podcast-analytics-players' => 'Spelarar',
+    'podcast-analytics-listening-time' => 'Lyttetid',
+    'podcast-analytics-time-periods' => 'Tidsperiodar',
+    'contributors' => 'Bidragsytarar',
+    'contributor-list' => 'Alle bidragsytarane',
+    'contributor-add' => 'Legg til bidragsytar',
+    'platforms' => 'Eksterne plattformer',
+    'platforms-podcasting' => 'Podkasting',
+    'platforms-social' => 'Sosiale nettverk',
+    'platforms-funding' => 'Finansiering',
+];
diff --git a/modules/Admin/Language/nn-NO/Settings.php b/modules/Admin/Language/nn-NO/Settings.php
new file mode 100644
index 0000000000..2d100161d0
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Generelle innstillingar',
+    'instance' => [
+        'title' => 'Nettstad',
+        '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_name' => 'Nettstadnamn',
+        'site_description' => 'Skildring av nettstaden',
+        'submit' => 'Lagre',
+        'editSuccess' => 'Nettstaden er oppdatert!',
+        'deleteIconSuccess' => 'Nettstadikonet er fjerna!',
+    ],
+    'images' => [
+        'title' => 'Bilete',
+        'subtitle' => 'Her kan du regenerera alle bileta, basert på dei opplasta originalane. Dette gjer du dersom du ser at det manglar bilete. Dette kan ta ei stund.',
+        'regenerate' => 'Regenerer bilete',
+        'regenerationSuccess' => 'Alle bileta er regenererte!',
+    ],
+    'housekeeping' => [
+        'title' => 'Reinhald',
+        'subtitle' => 'Gjer ulike reinhaldsoppgåver. Bruk dette viss du kjem borti feil med mediafiler eller dataintegritet. Dette kan ta ei stund.',
+        'reset_counts' => 'Nullstill teljarar',
+        'reset_counts_helper' => 'Dette nullstiller alle datateljarar (tal på fylgjarar, innlegg, kommentarar…).',
+        'rewrite_media' => 'Overskriv metadata for medium',
+        'rewrite_media_helper' => 'Dette vil sletta alle overflødige mediafiler og laga dei på nytt (bilete, lydfiler, transkriberingar, kapittel, …)',
+        'clear_cache' => 'Slett bufferinnhald',
+        'clear_cache_helper' => 'Dette tømmer redis-mellomlageret eller skrivbare/mellomlagra filer.',
+        'run' => 'Gjer reinhald',
+        'runSuccess' => 'Reinhaldet er utført!',
+    ],
+    'theme' => [
+        'title' => 'Bunad',
+        'accent_section_title' => 'Framheva farge',
+        'accent_section_subtitle' => 'Vel kva farge som blir framheva på alle dei offentlege sidene.',
+        'pine' => 'Furu',
+        'crimson' => 'Karmosinraud',
+        'amber' => 'Rav',
+        'lake' => 'Innsjø',
+        'jacaranda' => 'Syrinblå',
+        'onyx' => 'Onyks',
+        'submit' => 'Lagre',
+        'setInstanceThemeSuccess' => 'Bunaden er oppdatert!',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Soundbite.php b/modules/Admin/Language/nn-NO/Soundbite.php
new file mode 100644
index 0000000000..65e06cab40
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Lydbetar',
+        'soundbite' => 'Lydbete',
+    ],
+    'messages' => [
+        'createSuccess' => 'Lydbeten er oppretta!',
+        'deleteSuccess' => 'Lydbeten er fjerna!',
+    ],
+    'form' => [
+        'title' => 'Ny lydbete',
+        'soundbite_title' => 'Tittel på lydbeten',
+        'start_time' => 'Start på',
+        'duration' => 'Lengd',
+        'submit' => 'Lag lydbete',
+    ],
+    'play' => 'Spel lydbeten',
+    'stop' => 'Stopp lydbeten',
+    'create' => 'Ny lydbete',
+    'delete' => 'Slett lydbeten',
+];
diff --git a/modules/Admin/Language/nn-NO/User.php b/modules/Admin/Language/nn-NO/User.php
new file mode 100644
index 0000000000..c11ee78e5e
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => "Endre rollene til {username}",
+    'forcePassReset' => 'Tving passordnullstilling',
+    'ban' => 'Steng ute',
+    'unban' => 'Slepp inn att',
+    'delete' => 'Slett',
+    'create' => 'Ny brukar',
+    'view' => "{username} sin informasjon",
+    'all_users' => 'Alle brukarane',
+    'list' => [
+        'user' => 'Brukar',
+        'roles' => 'Roller',
+        'banned' => 'Utestengd?',
+    ],
+    'form' => [
+        'email' => 'Epost',
+        'username' => 'Brukarnamn',
+        'password' => 'Passord',
+        'new_password' => 'Nytt passord',
+        'roles' => 'Roller',
+        'permissions' => 'Løyve',
+        'submit_create' => 'Lag brukar',
+        'submit_edit' => 'Lagre',
+        'submit_password_change' => 'Endre!',
+    ],
+    'roles' => [
+        'superadmin' => 'Superstyrar',
+    ],
+    'messages' => [
+        'createSuccess' =>
+            'Brukaren er oppretta! {username} vil få spørsmål om å endra passord fyrste gong hen loggar inn.',
+        'rolesEditSuccess' =>
+            "Rollene til {username} er oppdaterte.",
+        'forcePassResetSuccess' =>
+            '{username} vil bli beden om å endra passord neste gong hen loggar inn.',
+        'banSuccess' => '{username} er utestengd.',
+        'unbanSuccess' => '{username} fekk sleppa inn att.',
+        'banSuperAdminError' =>
+            '{username} er superstyrar, og du stengjer ikkje ute ein superstyrar…',
+        'deleteSuperAdminError' =>
+            '{username} er superstyrar, og du slettar ikkje ein superstyrar…',
+        'deleteSuccess' => '{username} er sletta.',
+    ],
+];
diff --git a/modules/Admin/Language/nn-NO/Validation.php b/modules/Admin/Language/nn-NO/Validation.php
new file mode 100644
index 0000000000..ed99da37d8
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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} er anten ikkje eit bilete, eller er ikkje breitt og høgt nok.',
+    'is_image_ratio' =>
+        '{field} er anten ikkje eit bilete, eller har feil forhold mellom høgd og breidd.',
+    'validate_url' =>
+        '{field}-feltet må vera ei gyldig nettadresse (td. https://eksempel.no/).',
+];
diff --git a/modules/Admin/Language/nn-NO/VideoClip.php b/modules/Admin/Language/nn-NO/VideoClip.php
new file mode 100644
index 0000000000..64e1698de7
--- /dev/null
+++ b/modules/Admin/Language/nn-NO/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' => 'Videoklypp',
+        'status' => [
+            'label' => 'Status',
+            'queued' => 'i kø',
+            'queued_hint' => 'Klyppet ventar på handsaming.',
+            'pending' => 'ventar',
+            'pending_hint' => 'Klyppet blir generert snart.',
+            'running' => 'køyrer',
+            'running_hint' => 'Klyppet blir generert.',
+            'failed' => 'mislukka',
+            'failed_hint' => 'Greidde ikkje laga klyppet: skriptfeil.',
+            'passed' => 'utført',
+            'passed_hint' => 'Klyppet vart laga!',
+        ],
+        'clip' => 'Klypp',
+        'duration' => 'Jobbtid',
+    ],
+    'title' => 'Filmklypp: {videoClipLabel}',
+    'download_clip' => 'Last ned klyppet',
+    'create' => 'Nytt filmklypp',
+    'go_to_page' => 'GÃ¥ til filmklyppsida',
+    'retry' => 'Prøv å laga klyppet på nytt',
+    'delete' => 'Slett klyppet',
+    'logs' => 'Arbeidsloggar',
+    'messages' => [
+        'alreadyExistingError' => 'Filmen du prøver å laga finst frå før!',
+        'addToQueueSuccess' => 'Filmklyppet er lagt i kø og ventar på å bli laga!',
+        'deleteSuccess' => 'Filmklyppet er fjerna!',
+    ],
+    'format' => [
+        'landscape' => 'Liggjande',
+        'portrait' => 'Ståande',
+        'squared' => 'Kvadratisk',
+    ],
+    'form' => [
+        'title' => 'Nytt filmklypp',
+        'params_section_title' => 'Innstillingar for filmklypp',
+        'clip_title' => 'Namn på filmklyppet',
+        'format' => [
+            'label' => 'Vel format',
+            'landscape_hint' => 'Filmar i liggjande 16:9-format er fine til Peertube, Youtube og Vimeo.',
+            'portrait_hint' => 'Filmar i ståande 9:16-format er fine til Tiktok, korte Youtube-filmar og Instagram-historier.',
+            'squared_hint' => 'Filmar i kvadratisk 1:1-format er fine til Mastodon, Facebook, Twitter og Linkedin.',
+        ],
+        'theme' => 'Vel bunad',
+        'start_time' => 'Start på',
+        'duration' => 'Lengd',
+        'trim_start' => 'Skjer til starten',
+        'trim_end' => 'Skjer til slutten',
+        'submit' => 'Lag videoklypp',
+    ],
+    'requirements' => [
+        'title' => 'Manglande krav',
+        'missing' => 'Du har manglande krav. Pass på å leggja til alle dei påkravde elementa for å laga ein film til denne episoden!',
+        'ffmpeg' => 'FFmpeg',
+        'gd' => 'Graphics Draw (GD)',
+        'freetype' => 'Freetype-bibliotek for GD',
+        'transcript' => 'Transkriberingsfil (.srt)',
+    ],
+];
diff --git a/modules/Admin/Language/oc/Admin.php b/modules/Admin/Language/oc/Admin.php
new file mode 100644
index 0000000000..5e3942371f
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Breadcrumb.php b/modules/Admin/Language/oc/Breadcrumb.php
new file mode 100644
index 0000000000..d9400ca786
--- /dev/null
+++ b/modules/Admin/Language/oc/Breadcrumb.php
@@ -0,0 +1,48 @@
+<?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',
+    '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/oc/Charts.php b/modules/Admin/Language/oc/Charts.php
new file mode 100644
index 0000000000..d9a75a1d84
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Common.php b/modules/Admin/Language/oc/Common.php
new file mode 100644
index 0000000000..d97bcf991f
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Contributor.php b/modules/Admin/Language/oc/Contributor.php
new file mode 100644
index 0000000000..d0f3b93d9f
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Countries.php b/modules/Admin/Language/oc/Countries.php
new file mode 100644
index 0000000000..4cd5d9c857
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Episode.php b/modules/Admin/Language/oc/Episode.php
new file mode 100644
index 0000000000..054a23c3b0
--- /dev/null
+++ b/modules/Admin/Language/oc/Episode.php
@@ -0,0 +1,165 @@
+<?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' => [
+        '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!',
+    ],
+    '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 with 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.<br />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 the posts associated with it and remove it from the podcast's RSS feed.",
+        '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/oc/EpisodeNavigation.php b/modules/Admin/Language/oc/EpisodeNavigation.php
new file mode 100644
index 0000000000..1406e3010e
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Fediverse.php b/modules/Admin/Language/oc/Fediverse.php
new file mode 100644
index 0000000000..0e4ca66d89
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Home.php b/modules/Admin/Language/oc/Home.php
new file mode 100644
index 0000000000..3ff4c04dc8
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Install.php b/modules/Admin/Language/oc/Install.php
new file mode 100644
index 0000000000..36e373a285
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/MyAccount.php b/modules/Admin/Language/oc/MyAccount.php
new file mode 100644
index 0000000000..6ebbb30ef7
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Navigation.php b/modules/Admin/Language/oc/Navigation.php
new file mode 100644
index 0000000000..68d4609d5d
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Page.php b/modules/Admin/Language/oc/Page.php
new file mode 100644
index 0000000000..b6f49de574
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Pager.php b/modules/Admin/Language/oc/Pager.php
new file mode 100644
index 0000000000..e25ee63810
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Person.php b/modules/Admin/Language/oc/Person.php
new file mode 100644
index 0000000000..fa9bba2118
--- /dev/null
+++ b/modules/Admin/Language/oc/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 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',
+        '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/oc/Platforms.php b/modules/Admin/Language/oc/Platforms.php
new file mode 100644
index 0000000000..ab17d5999b
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Podcast.php b/modules/Admin/Language/oc/Podcast.php
new file mode 100644
index 0000000000..d9d0d11b03
--- /dev/null
+++ b/modules/Admin/Language/oc/Podcast.php
@@ -0,0 +1,243 @@
+<?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!',
+    ],
+    '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.',
+        'banner' => 'Podcast banner',
+        'banner_size_hint' => 'Banner must have a 3:1 ratio with 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.',
+        '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',
+    ],
+    '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 {<span class="font-semibold">#</span> follower}
+        other {<span class="font-semibold">#</span> followers}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> post}
+        other {<span class="font-semibold">#</span> 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/oc/PodcastImport.php b/modules/Admin/Language/oc/PodcastImport.php
new file mode 100644
index 0000000000..e9cfc1c4ce
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/PodcastNavigation.php b/modules/Admin/Language/oc/PodcastNavigation.php
new file mode 100644
index 0000000000..b619573154
--- /dev/null
+++ b/modules/Admin/Language/oc/PodcastNavigation.php
@@ -0,0 +1,35 @@
+<?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',
+    '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/oc/Settings.php b/modules/Admin/Language/oc/Settings.php
new file mode 100644
index 0000000000..0d6368ccd2
--- /dev/null
+++ b/modules/Admin/Language/oc/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 with 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/oc/Soundbite.php b/modules/Admin/Language/oc/Soundbite.php
new file mode 100644
index 0000000000..a3f828fe09
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/User.php b/modules/Admin/Language/oc/User.php
new file mode 100644
index 0000000000..8b2e478bf7
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/Validation.php b/modules/Admin/Language/oc/Validation.php
new file mode 100644
index 0000000000..750b19688f
--- /dev/null
+++ b/modules/Admin/Language/oc/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/oc/VideoClip.php b/modules/Admin/Language/oc/VideoClip.php
new file mode 100644
index 0000000000..638de697bb
--- /dev/null
+++ b/modules/Admin/Language/oc/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/pt/Admin.php b/modules/Admin/Language/pt/Admin.php
new file mode 100644
index 0000000000..5e3942371f
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Breadcrumb.php b/modules/Admin/Language/pt/Breadcrumb.php
new file mode 100644
index 0000000000..d9400ca786
--- /dev/null
+++ b/modules/Admin/Language/pt/Breadcrumb.php
@@ -0,0 +1,48 @@
+<?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',
+    '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/pt/Charts.php b/modules/Admin/Language/pt/Charts.php
new file mode 100644
index 0000000000..d9a75a1d84
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Common.php b/modules/Admin/Language/pt/Common.php
new file mode 100644
index 0000000000..d97bcf991f
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Contributor.php b/modules/Admin/Language/pt/Contributor.php
new file mode 100644
index 0000000000..d0f3b93d9f
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Countries.php b/modules/Admin/Language/pt/Countries.php
new file mode 100644
index 0000000000..4cd5d9c857
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Episode.php b/modules/Admin/Language/pt/Episode.php
new file mode 100644
index 0000000000..054a23c3b0
--- /dev/null
+++ b/modules/Admin/Language/pt/Episode.php
@@ -0,0 +1,165 @@
+<?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' => [
+        '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!',
+    ],
+    '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 with 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.<br />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 the posts associated with it and remove it from the podcast's RSS feed.",
+        '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/pt/EpisodeNavigation.php b/modules/Admin/Language/pt/EpisodeNavigation.php
new file mode 100644
index 0000000000..1406e3010e
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Fediverse.php b/modules/Admin/Language/pt/Fediverse.php
new file mode 100644
index 0000000000..0e4ca66d89
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Home.php b/modules/Admin/Language/pt/Home.php
new file mode 100644
index 0000000000..3ff4c04dc8
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Install.php b/modules/Admin/Language/pt/Install.php
new file mode 100644
index 0000000000..36e373a285
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/MyAccount.php b/modules/Admin/Language/pt/MyAccount.php
new file mode 100644
index 0000000000..6ebbb30ef7
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Navigation.php b/modules/Admin/Language/pt/Navigation.php
new file mode 100644
index 0000000000..68d4609d5d
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Page.php b/modules/Admin/Language/pt/Page.php
new file mode 100644
index 0000000000..b6f49de574
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Pager.php b/modules/Admin/Language/pt/Pager.php
new file mode 100644
index 0000000000..e25ee63810
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Person.php b/modules/Admin/Language/pt/Person.php
new file mode 100644
index 0000000000..fa9bba2118
--- /dev/null
+++ b/modules/Admin/Language/pt/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 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',
+        '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/pt/Platforms.php b/modules/Admin/Language/pt/Platforms.php
new file mode 100644
index 0000000000..ab17d5999b
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Podcast.php b/modules/Admin/Language/pt/Podcast.php
new file mode 100644
index 0000000000..d9d0d11b03
--- /dev/null
+++ b/modules/Admin/Language/pt/Podcast.php
@@ -0,0 +1,243 @@
+<?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!',
+    ],
+    '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.',
+        'banner' => 'Podcast banner',
+        'banner_size_hint' => 'Banner must have a 3:1 ratio with 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.',
+        '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',
+    ],
+    '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 {<span class="font-semibold">#</span> follower}
+        other {<span class="font-semibold">#</span> followers}
+    }',
+    'posts' => '{numberOfPosts, plural,
+        one {<span class="font-semibold">#</span> post}
+        other {<span class="font-semibold">#</span> 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/pt/PodcastImport.php b/modules/Admin/Language/pt/PodcastImport.php
new file mode 100644
index 0000000000..e9cfc1c4ce
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/PodcastNavigation.php b/modules/Admin/Language/pt/PodcastNavigation.php
new file mode 100644
index 0000000000..b619573154
--- /dev/null
+++ b/modules/Admin/Language/pt/PodcastNavigation.php
@@ -0,0 +1,35 @@
+<?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',
+    '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/pt/Settings.php b/modules/Admin/Language/pt/Settings.php
new file mode 100644
index 0000000000..0d6368ccd2
--- /dev/null
+++ b/modules/Admin/Language/pt/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 with 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/pt/Soundbite.php b/modules/Admin/Language/pt/Soundbite.php
new file mode 100644
index 0000000000..a3f828fe09
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/User.php b/modules/Admin/Language/pt/User.php
new file mode 100644
index 0000000000..8b2e478bf7
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/Validation.php b/modules/Admin/Language/pt/Validation.php
new file mode 100644
index 0000000000..750b19688f
--- /dev/null
+++ b/modules/Admin/Language/pt/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/pt/VideoClip.php b/modules/Admin/Language/pt/VideoClip.php
new file mode 100644
index 0000000000..638de697bb
--- /dev/null
+++ b/modules/Admin/Language/pt/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/Install/Language/el/Install.php b/modules/Install/Language/el/Install.php
index 42ea1b19cb..c8edb13909 100644
--- a/modules/Install/Language/el/Install.php
+++ b/modules/Install/Language/el/Install.php
@@ -15,48 +15,48 @@ return [
         'Δημιουργήστε ένα αρχείο `.env` με τις ρυθμίσεις σας και ανανεώστε τη σελίδα για να συνεχίσετε την εγκατάσταση.',
     'form' => [
         'instance_config' => 'Ρύθμιση παραμέτρων εμφάνισης',
-        'hostname' => 'Hostname',
-        'media_base_url' => 'Media base URL',
+        '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/Install/Language/nn-NO/Install.php b/modules/Install/Language/nn-NO/Install.php
new file mode 100644
index 0000000000..46c72d259e
--- /dev/null
+++ b/modules/Install/Language/nn-NO/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-installering',
+    'manual_config' => 'Manuelt oppsett',
+    'manual_config_subtitle' =>
+        'Lag ei `.env`-fil med innstillingane dine og oppdater sida for å halda fram installasjonen.',
+    'form' => [
+        'instance_config' => 'Oppsett for nettstaden',
+        'hostname' => 'Vertsnamn',
+        'media_base_url' => 'Mediabase-URL',
+        'media_base_url_hint' =>
+            'Viss du bruker eit leveringsnettverk (CDN) og/eller ei ekstern analysetenest, kan du skriva dei inn her.',
+        'admin_gateway' => 'Innfallsport for styrar',
+        'admin_gateway_hint' =>
+            'Ruta for å koma til styringsområdet (td. https://eksempel.no/cp-admin). Standardvalet er cp-admin, me tilrår at du endrar det av omsyn til tryggleiken.',
+        'auth_gateway' => 'Innfallsport for autentisering',
+        'auth_gateway_hint' =>
+            'Ruta for å koma til autentiseringssidene (td. https://eksempel.no/cp-auth). Standardvalet er cp-auth, me tilrår at du endrar det av omsyn til tryggleiken.',
+        'database_config' => 'Databaseoppsett',
+        'database_config_hint' =>
+            'Castopod treng å kopla seg til MySQL (eller MariaDB)-databasen din. Viss du ikkje har opplysingane som trengst, må du kontakta systemansvarleg.',
+        'db_hostname' => 'Databasevertsnamn',
+        'db_name' => 'Databasenamn',
+        'db_username' => 'Databasebrukarnamn',
+        'db_password' => 'Databasepassord',
+        'db_prefix' => 'Databaseprefiks',
+        'db_prefix_hint' =>
+            "Prefikset til Castopod-tabellane. La det stå om du ikkje veit kva det tyder.",
+        'cache_config' => 'Mellomlagringsoppsett',
+        'cache_config_hint' =>
+            'Vel korleis du vil handtera mellomlageret. La stå som det er om du ikkje veit kva det tyder.',
+        'cache_handler' => 'Mellomlagerhandtering',
+        'cacheHandlerOptions' => [
+            'file' => 'Fil',
+            'redis' => 'Redis',
+            'predis' => 'Predis',
+        ],
+        'next' => 'Neste',
+        'submit' => 'Fullfør installeringa',
+        'create_superadmin' => 'Lag superstyrar-konto',
+        'email' => 'Epost',
+        'username' => 'Brukarnamn',
+        'password' => 'Passord',
+    ],
+    'messages' => [
+        'createSuperAdminSuccess' =>
+            'Superstyrar-kontoen din er oppretta. Logg inn for å byrja med podkasting!',
+        'databaseConnectError' =>
+            'Castopod greidde ikkje å kopla til databasen din. Sjå gjennom databaseoppsettet og prøv ein gong til.',
+        'writeError' =>
+            "Greidde ikkje laga eller skriva til `.env`-fila. Du må laga ho manuelt ved å fylgja `.env.example`-filmalen i Castopod-pakka.",
+    ],
+];
diff --git a/modules/Install/Language/oc/Install.php b/modules/Install/Language/oc/Install.php
new file mode 100644
index 0000000000..1f66ef118f
--- /dev/null
+++ b/modules/Install/Language/oc/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/pt/Install.php b/modules/Install/Language/pt/Install.php
new file mode 100644
index 0000000000..1f66ef118f
--- /dev/null
+++ b/modules/Install/Language/pt/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.",
+    ],
+];
-- 
GitLab