chore(i18n): new Crowdin updates

This commit is contained in:
crowdin 2022-11-25 17:44:19 +00:00 committed by Yassine Doghri
parent c13cfa0ea0
commit 80666bc728
126 changed files with 3906 additions and 734 deletions

View File

@ -26,5 +26,5 @@ return [
'read_less' => 'Διαβάστε λιγότερα', 'read_less' => 'Διαβάστε λιγότερα',
'see_more' => 'Εμφάνιση περισσότερων', 'see_more' => 'Εμφάνιση περισσότερων',
'see_less' => 'Δείτε λιγότερα', 'see_less' => 'Δείτε λιγότερα',
'legal_notice' => 'Legal notice', 'legal_notice' => 'Νομικές επισημάνσεις',
]; ];

View File

@ -26,5 +26,5 @@ return [
'read_less' => 'Leugh nas lugha dheth', 'read_less' => 'Leugh nas lugha dheth',
'see_more' => 'Seall barrachd dheth', 'see_more' => 'Seall barrachd dheth',
'see_less' => 'Seall nas lugha dheth', 'see_less' => 'Seall nas lugha dheth',
'legal_notice' => 'Legal notice', 'legal_notice' => 'Sanas laghail',
]; ];

View File

@ -12,12 +12,12 @@ return [
'your_handle' => 'An t-aithnichear agad', 'your_handle' => 'An t-aithnichear agad',
'your_handle_hint' => 'Cuir a-steach an @ainm_cleachdaiche@àrainn leis a ghabhas tu gnìomh.', 'your_handle_hint' => 'Cuir a-steach an @ainm_cleachdaiche@àrainn leis a ghabhas tu gnìomh.',
'follow' => [ 'follow' => [
'label' => 'Lean air', 'label' => 'Lean',
'title' => 'Lean air {actorDisplayName}', 'title' => 'Lean {actorDisplayName}',
'subtitle' => 'Tha thu gu bhith leantainn air:', 'subtitle' => 'Tha thu gu bhith leantainn:',
'accountNotFound' => 'Cha deach an cunntas a lorg.', 'accountNotFound' => 'Cha deach an cunntas a lorg.',
'remoteFollowNotAllowed' => 'Tha coltas nach gabh am frithealaiche ri leantainn chèin…', 'remoteFollowNotAllowed' => 'Tha coltas nach gabh am frithealaiche ri leantainn chèin…',
'submit' => 'Lean air adhart gus leantainn air', 'submit' => 'Lean air adhart gus a leantainn',
], ],
'favourite' => [ 'favourite' => [
'title' => "Cuir am post aig {actorDisplayName} ris na h-annsachdan", 'title' => "Cuir am post aig {actorDisplayName} ris na h-annsachdan",

View File

@ -15,8 +15,8 @@ return [
'list_of_episodes_season' => 'list_of_episodes_season' =>
'Eapasodan seusan {seasonNumber} ({episodeCount})', 'Eapasodan seusan {seasonNumber} ({episodeCount})',
'no_episode' => 'Cha deach eapasod a lorg!', 'no_episode' => 'Cha deach eapasod a lorg!',
'follow' => 'Lean air', 'follow' => 'Lean',
'followTitle' => 'Lean air {actorDisplayName} sa cho-shaoghal!', 'followTitle' => 'Lean {actorDisplayName} sa cho-shaoghal!',
'followers' => '{numberOfFollowers, plural, 'followers' => '{numberOfFollowers, plural,
one {# neach-leantainn} one {# neach-leantainn}
two {# luchd-leantainn} two {# luchd-leantainn}

View File

@ -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 [
'title' => "Comentariul lui {actorDisplayName} pentru {episodeTitle}",
'back_to_comments' => 'Înapoi la comentarii',
'form' => [
'episode_message_placeholder' => 'Scrieți un comentariu…',
'reply_to_placeholder' => 'Răspundeți lui @{actorUsername}',
'submit' => 'Trimiteți',
'submit_reply' => 'Răspundeți',
],
'likes' => '{numberOfLikes, plural,
one {# apreciere}
other {# aprecieri}
}',
'replies' => '{numberOfReplies, plural,
one {# răspuns}
few {# răspunsuri}
other {# răspunsuri}
}',
'like' => 'Apreciază',
'reply' => 'Răspundeți',
'view_replies' => 'Vizualizați răspunsurile ({numberOfReplies})',
'block_actor' => 'Blocați utilizatorul @{actorUsername}',
'block_domain' => 'Blocați domeniul @{actorDomain}',
'delete' => 'Ștergeți comentariul',
];

View File

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'yes' => 'Da',
'no' => 'Nu',
'cancel' => 'Anulare',
'optional' => 'Opțional',
'close' => 'Închideți',
'home' => 'Acasă',
'explicit' => 'Conținut explicit',
'powered_by' => 'Dezvoltat de {castopod}',
'go_back' => 'Înapoi',
'play_episode_button' => [
'play' => 'Redare',
'playing' => 'În desfășurare',
],
'read_more' => 'Informații suplimentare',
'read_less' => 'Citește mai puţin',
'see_more' => 'Vizualizați mai mult',
'see_less' => 'Vizualizați mai puțin',
'legal_notice' => 'Mențiuni legale',
];

View File

@ -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 [
'season' => 'Sezonul {seasonNumber}',
'season_abbr' => 'Sezonul {seasonNumber}',
'number' => 'Episod {episodeNumber}',
'number_abbr' => 'Ep. {episodeNumber}',
'season_episode' => 'Sezonul {seasonNumber} episod {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
'persons' => '{personsCount, plural,
one {# răspuns}
few {# răspunsuri}
other {# răspunsuri}
}',
'persons_list' => 'Persoane',
'back_to_episodes' => 'Înapoi la episoadele {podcast}',
'comments' => 'Comentarii',
'activity' => 'Activitate',
'description' => 'Descrierea episodului',
'number_of_comments' => '{numberOfComments, plural,
one {# răspuns}
few {# răspunsuri}
other {# răspunsuri}
}',
'all_podcast_episodes' => 'Toate episoadele podcastului',
'back_to_podcast' => 'Înapoi la podcast',
];

View File

@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
/**
* @copyright 2021 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'your_handle' => 'ID-ul tău',
'your_handle_hint' => 'Introduceți numele@domeniu din care doriți să acționați',
'follow' => [
'label' => 'Urmăriţi',
'title' => 'Urmărește pe {actorDisplayName}',
'subtitle' => 'Îl veți urmări pe:',
'accountNotFound' => 'Contul nu a putut fi găsit.',
'remoteFollowNotAllowed' => 'Se pare că serverul nu permite urmărirea...',
'submit' => 'Continuați să urmăriți',
],
'favourite' => [
'title' => "Postarea favorită a lui {actorDisplayName}",
'subtitle' => 'Veți adăuga la favoriți:',
'submit' => 'Continuați să adăugați la favoriți',
],
'reblog' => [
'title' => "Distribuie postarea lui {actorDisplayName}",
'subtitle' => 'Veți distribui:',
'submit' => 'Continuați să distribuiți',
],
'reply' => [
'title' => "Răspundeți lui {actorDisplayName}",
'subtitle' => 'Îi veți răspunde lui:',
'submit' => 'Continuați să răspundeți',
],
];

20
app/Language/ro/Home.php Normal file
View File

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'all_podcasts' => 'Toate podcasturile',
'sort_by' => 'Sortați după',
'sort_options' => [
'activity' => 'Activitate recentă',
'created_desc' => 'Întâi cele mai noi',
'created_asc' => 'Întâi cele mai vechi',
],
'no_podcast' => 'Nu s-a găsit nici un podcast',
];

17
app/Language/ro/Page.php Normal file
View File

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'back_to_home' => 'Înapoi la pagina de start',
'map' => [
'title' => 'Hartă',
'description' => 'Descoperă episoadele podcastului pe {siteName} ce sunt plasate pe hartă! Navighează pe hartă și ascultă episoade ce vorbesc despre locații specifice.',
],
];

View File

@ -0,0 +1,58 @@
<?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' => 'Flux RSS Podcast',
'season' => 'Sezonul {seasonNumber}',
'list_of_episodes_year' => '{year} episoade ({episodeCount})',
'list_of_episodes_season' =>
'Sezonul {seasonNumber} episoadele ({episodeCount})',
'no_episode' => 'Nici un episod găsit!',
'follow' => 'Urmăriţi',
'followTitle' => 'Urmărește pe {actorDisplayName} în fediverse!',
'followers' => '{numberOfFollowers, plural,
one {# follower}
few {# followeri}
other {# followeri}
}',
'posts' => '{numberOfPosts, plural,
one {# postare}
few {# postări}
other {# postări}
}',
'activity' => 'Activitate',
'episodes' => 'Episoade',
'episodes_title' => 'Episoadele podcastului {podcastTitle}',
'about' => 'Despre noi',
'stats' => [
'title' => 'Statistici',
'number_of_seasons' => '{0, plural,
one {# sezon}
few {# sezoane}
other {# sezoane}
}',
'number_of_episodes' => '{0, plural,
one {# episod}
few {# episoade}
other {# episoade}
}',
'first_published_at' => 'Primul episod publicat pe {0, date, medium}',
],
'sponsor' => 'Sponsor',
'funding_links' => 'Link-uri de finanțare pentru {podcastTitle}',
'find_on' => 'Găsește {podcastTitle} pe',
'listen_on' => 'Ascultă pe',
'persons' => '{personsCount, plural,
one {# persoană}
few {# persoane}
other {# persoane}
}',
'persons_list' => 'Persoane',
];

40
app/Language/ro/Post.php Normal file
View File

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'title' => "Postarea lui {actorDisplayName}",
'back_to_actor_posts' => 'Înapoi la postările lui {actor}',
'actor_shared' => '{actor} a distribuit',
'reply_to' => 'Răspundeți lui @{actorUsername}',
'form' => [
'message_placeholder' => 'Scrie un mesaj...',
'episode_message_placeholder' => 'Scrie un mesaj pentru episodul…',
'episode_url_placeholder' => 'URL episod',
'reply_to_placeholder' => 'Răspundeți lui @{actorUsername}',
'submit' => 'Trimiteți',
'submit_reply' => 'Răspundeți',
],
'favourites' => '{numberOfFavourites, plural,
one {# favorit}
other {# favoriți}
}',
'reblogs' => '{numberOfReblogs, plural,
one {# distribuire}
other {# distribuiri}
}',
'replies' => '{numberOfReplies, plural,
one {# răspuns}
other {# răspunsuri}
}',
'expand' => 'Expandați postarea',
'block_actor' => 'Blocați utilizatorul @{actorUsername}',
'block_domain' => 'Blocați domeniul @{actorDomain}',
'delete' => 'Șterge postarea',
];

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ una base de dades Redis com a gestor de memòria cau.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -5,23 +5,24 @@ sidebarDepth: 3
# Ταυτοποίηση & εξουσιοδότηση # Ταυτοποίηση & εξουσιοδότηση
Castopod handles authentication and authorization using `codeigniter/shield` Ο Castopod χειρίζεται τον έλεγχο ταυτότητας και την έγκριση χρησιμοποιώντας
coupled with custom rules. Roles and permissions are defined at two levels: `codeigniter/shield` σε συνδυασμό με προσαρμοσμένους κανόνες. Οι ρόλοι και τα
δικαιώματα καθορίζονται σε δύο επίπεδα:
1. [instance wide](#1-instance-wide-roles-and-permissions) 1. [ευρεία παρουσία](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions) 2. [ανά podcast](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions ## 1. Διαχείριση ρόλων και δικαιωμάτων
### Instance roles ### Ρόλοι εμφάνισης
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section --> <!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions | | ρόλος | περιγραφή | δικαιώματα |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ | | ---------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks | | Υπερδιαχειριστής | Έχει πλήρη έλεγχο του Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage | | Διαχειριστής | Διαχείριση περιεχομένου του Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access | | Podcaster | Γενικοί χρήστες του Castopod. | admin.access |
<!-- AUTH-INSTANCE-ROLES-LIST:END --> <!-- AUTH-INSTANCE-ROLES-LIST:END -->

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -1,87 +1,88 @@
--- ---
title: Authentication & Authorization title: Autenticación & Autenticación
sidebarDepth: 3 sidebarDepth: 3
--- ---
# Authentication & Authorization # Autenticación & Autenticación
Castopod handles authentication and authorization using `codeigniter/shield` Castopod gestiona la autenticación y autorización usando `codeignitor/escudo`
coupled with custom rules. Roles and permissions are defined at two levels: emparejado con reglas personalizadas. Los roles y permisos se definen en dos
niveles:
1. [instance wide](#1-instance-wide-roles-and-permissions) 1. [por instancia](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions) 2. [por podcast](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions ## 1. Roles por instancia y permisos
### Instance roles ### Roles de instancia
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section --> <!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions | | roles | descripción | permisos |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ | | ------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks | | Super administrador | Tiene control completo sobre Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage | | Administrador | Gestiona el contenido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access | | Podcaster | Usuarios generales de Castopod. | admin.access |
<!-- AUTH-INSTANCE-ROLES-LIST:END --> <!-- AUTH-INSTANCE-ROLES-LIST:END -->
### Instance permissions ### Permisos de instancia
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section --> <!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description | | permisos | descripción |
| ----------------------- | ------------------------------------------------------------------ | | ----------------------- | ------------------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. | | admin.access | Puedes acceder al área de administración de Castopod. |
| admin.settings | Can access the Castopod settings. | | admin.settings | Puede acceder a la configuración de Castopod. |
| users.manage | Can manage Castopod users. | | users.manage | Puede administrar usuarios de Castopod. |
| persons.manage | Can manage persons. | | persons.manage | Puede administrar personas. |
| pages.manage | Can manage pages. | | pages.manage | Puede administrar páginas. |
| podcasts.view | Can view all podcasts. | | podcasts.view | Puede ver todos los podcasts. |
| podcasts.create | Can create new podcasts. | | podcasts.create | Puede crear nuevos podcasts. |
| podcasts.import | Can import podcasts. | | podcasts.import | Puede importar podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. | | fediverse.manage-blocks | Puedes bloquear la interacción de actores/dominios del fediverso con Castopod. |
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END --> <!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
## 2. Per podcast roles and permissions ## 2. Permisos y roles por podcast
### Per podcast roles ### Roles por podcast
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section --> <!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
| role | description | permissions | | roles | descripción | permisos |
| ------ | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #{id}. | \* | | Administrador | Tiene el control completo del podcast #{id}. | \* |
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments, episodes.manage-notifications | | Editor | Gestiona el contenido y las publicaciones del podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments, episodes.manage-notifications |
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips | | Autor | Gestiona el contenido del podcast #{id} pero no puede publicarlo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #{id}. | view, episodes.view | | Invitado | Colaborador general del podcast #{id}. | view, episodes.view |
<!-- AUTH-PODCAST-ROLES-LIST:END --> <!-- AUTH-PODCAST-ROLES-LIST:END -->
### Per podcast permissions ### Permisos por podcast
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section --> <!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permission | description | | permisos | descripción |
| ---------------------------- | ------------------------------------------------------------------------ | | ---------------------------- | -------------------------------------------------------------------------------------------------- |
| view | Can view dashboard and analytics of podcast #{id}. | | view | Puede ver el panel de control y análisis del podcast #{id}. |
| edit | Can edit podcast #{id}. | | edit | Puede editar podcast #{id}. |
| delete | Can delete podcast #{id}. | | delete | Puede borrar el podcast #{id}. |
| manage-import | Can synchronize imported podcast #{id}. | | manage-import | Puede sincronizar el podcast importado #{id}. |
| manage-persons | Can manage subscriptions of podcast #{id}. | | manage-persons | Puede administrar las suscripciones del podcast #{id}. |
| manage-subscriptions | Can manage subscriptions of podcast #{id}. | | manage-subscriptions | Puede administrar las suscripciones del podcast #{id}. |
| manage-contributors | Can manage contributors of podcast #{id}. | | manage-contributors | Puede administrar colaboradores del podcast #{id}. |
| manage-platforms | Can set/remove platform links of podcast #{id}. | | manage-platforms | Puede establecer/eliminar enlaces a la plataforma del podcast #{id}. |
| manage-publications | Can publish podcast #{id}. | | manage-publications | Puede publicar el podcast #{id}. |
| manage-notifications | Can view and mark notifications as read for podcast #{id}. | | manage-notifications | Puede ver y marcar las notificaciones como leídas para podcast #{id}. |
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. | | interact-as | Puede interactuar como el podcast #{id} para favoritar, compartir o responder a las publicaciones. |
| episodes.view | Can view dashboard and analytics of podcast #{id}. | | episodes.view | Puede ver el panel de control y analíticas del episodio #{id}. |
| episodes.create | Can create episodes for podcast #{id}. | | episodes.create | Puede crear episodios para el podcast #{id}. |
| episodes.edit | Can edit podcast #{id}. | | episodes.edit | Puede editar episodios #{id}. |
| episodes.delete | Can delete podcast #{id}. | | episodes.delete | Puede borrar el podcast #{id}. |
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. | | episodes.manage-persons | Puede administrar las suscripciones del podcast #{id}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. | | episodes.manage-clips | Puedes administrar video clips o sonidos del podcast #{id}. |
| episodes.manage-publications | Can publish podcast #{id}. | | episodes.manage-publications | Puede publicar el podcast #{id}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. | | episodes.manage-comments | Puede crear/eliminar los comentarios de episodio del podcast #{id}. |
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END --> <!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->

View File

@ -5,15 +5,15 @@ sidebarDepth: 3
# Imágenes oficiales de Docker # Imágenes oficiales de Docker
Castopod pushes 3 Docker images to the Docker Hub during its automated build Castopod lanza 3 imágenes Docker al DockerHub durante su proceso de construcción
process: automatizada:
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el paquete - [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el paquete
completo de Castopod con todas las dependencias. completo de Castopod con todas las dependencias.
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una - [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una
configuración Nginx para Castopod configuración Nginx para Castopod
- [**`castopod/video-clipper`**](https://hub.docker.com/r/castopod/video-clipper): - [**`castopod/videoclipper`**](https://hub.docker.com/r/castopod/video-clipper):
an optional image building videoclips thanks to ffmpeg una imagen opcional de creación de videoclips gracias a ffmpeg
Adicionalmente, Castopod requiere una base de datos compatible con MySQL. Adicionalmente, Castopod requiere una base de datos compatible con MySQL.
También se puede añadir una base de datos Redis como gestor de caché. También se puede añadir una base de datos Redis como gestor de caché.
@ -21,10 +21,10 @@ También se puede añadir una base de datos Redis como gestor de caché.
## Etiquetas admitidas ## Etiquetas admitidas
- `develop` [unstable], última rama de desarrollo construida - `develop` [unstable], última rama de desarrollo construida
- `beta` [stable], latest beta version build - `beta` [stable], última versión beta
- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`) - `1.0.0-beta.x` [stable], versión beta específica (desde `1.0.0-beta.22`)
- `latest` [stable], latest version build - `latest` [stable], última versión
- `1.x.x` [stable], specific version build (since `1.0.0`) - `1.x.x` [stable], versión específica de compilación (desde `1.0.0`)
## Ejemplo de uso ## Ejemplo de uso
@ -87,9 +87,9 @@ También se puede añadir una base de datos Redis como gestor de caché.
networks: networks:
- castopod-app - castopod-app
# this container is optional # este contenedor es opcional
# add this if you want to use the videoclips feature # agregue esto si desea usar la funcionalidad de videoclips
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:
@ -138,7 +138,7 @@ También se puede añadir una base de datos Redis como gestor de caché.
- **castopod/video-clipper** - **castopod/video-clipper**
| Nombre de la Variable | Tipo (`predeterminado`) | Default | | Nombre de la Variable | Tipo (`predeterminado`) | Por defecto |
| -------------------------- | ----------------------- | ---------------- | | -------------------------- | ----------------------- | ---------------- |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
@ -148,9 +148,9 @@ También se puede añadir una base de datos Redis como gestor de caché.
- **castopod/app** - **castopod/app**
| Nombre de la variable | Type (`default`) | Default | | Nombre de la variable | Tipo (`por defecto`) | Por defecto |
| ---------------------------- | ----------------------- | ---------------- | | ---------------------------- | ----------------------- | ---------------- |
| **`CP_URLBASE`** | string | `undefined` | | **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_URLBASE`** | ?string | `CP_BASEURL` | | **`CP_MEDIA_URLBASE`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
@ -174,6 +174,6 @@ También se puede añadir una base de datos Redis como gestor de caché.
- **castopod/web-server** - **castopod/web-server**
| Variable name | Type | Default | | Nombre de la variable | Tipo | Por defecto |
| --------------------- | ------- | ------- | | --------------------- | ------- | ----------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` | | **`CP_APP_HOSTNAME`** | ?string | `"app"` |

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -0,0 +1,88 @@
---
title: Autentificare & Autorizare
sidebarDepth: 3
---
# Autentificare & Autorizare
Castopod folosește pentru autentificare și autorizare `codeigniter/shield`
cuplat la reguli personalizate. Rolurile și permisiunile sunt definite la două
niveluri:
1. [întreaga instanță](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions)
## 1. Gestionați roluri şi permisiuni pe întreaga instanță
### Rolurile instanței
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
| rol | descriere | permisiuni |
| ----------- | ----------------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Deține controlul complet asupra Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Gestionează conținutul Castopodului. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Utilizatorii generali ai Castopod. | admin.access |
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
### Permisiuni instanță
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permisiune | descriere |
| ----------------------- | -------------------------------------------------------------------------- |
| admin.access | Poate accesa zona de administrare Castopod. |
| admin.settings | Poate accesa setările Castopod. |
| users.manage | Poate gestiona utilizatorii Castopod. |
| persons.manage | Poate gestiona persoane. |
| pages.manage | Poate gestiona pagini. |
| podcasts.view | Poate vedea toate podcast-urile. |
| podcasts.create | Poate crea noi podcast-uri. |
| podcasts.import | Poate importa podcast-uri. |
| fediverse.manage-blocks | Poate bloca actorilor/domenii din fediverse să interacționeze cu Castopod. |
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
## 2. Roluri și permisiuni per podcast
### Roluri per podcast
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
| rol | descriere | permisiuni |
| ------ | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Deține controlul complet asupra podcastului #{id}. | \* |
| Editor | Gestionează conținutul și publicațiile podcastului #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments, episodes.manage-notifications |
| Author | Gestionează conținutul podcastului #{id} dar nu poate publica. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | Contribuitor al podcastului #{id}. | view, episodes.view |
<!-- AUTH-PODCAST-ROLES-LIST:END -->
### Permisiuni per podcast
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
| permisiune | descriere |
| ---------------------------- | ------------------------------------------------------------------------------------------------------- |
| view | Poate vedea panoul de control și analiticele podcastului #{id}. |
| edit | Poate edita podcastul #{id}. |
| delete | Poate șterge podcastul #{id}. |
| manage-import | Poate sincroniza podcastul importat #{id}. |
| manage-persons | Poate administra abonamentele podcastului #{id}. |
| manage-subscriptions | Poate administra abonamentele podcastului #{id}. |
| manage-contributors | Poate administra colaboratorii podcastului #{id}. |
| manage-platforms | Poate seta/elimina link-urile podcastului #{id}. |
| manage-publications | Poate publica podcastul #{id}. |
| manage-notifications | Poate vizualiza și marca notificările ca fiind citite pentru podcastul #{id}. |
| interact-as | Poate interacționa ca podcastul #{id} pentru adăuga la favorite, a distribui sau a răspunde la postări. |
| episodes.view | Poate vizualiza panoul de control și analiticile podcastului #{id}. |
| episodes.create | Poate crea episoade pentru podcastul #{id}. |
| episodes.edit | Poate edita podcastul #{id}. |
| episodes.delete | Poate șterge podcastul #{id}. |
| episodes.manage-persons | Poate administra abonamentele podcastului #{id}. |
| episodes.manage-clips | Poate administra clipuri video sau biții de sunet ai podcastului #{id}. |
| episodes.manage-publications | Poate publica podcastul #{id}. |
| episodes.manage-comments | Poate crea/elimina comentariile episodului podcastului #{id}. |
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->

View File

@ -0,0 +1,177 @@
---
title: Imagini oficiale Docker
sidebarDepth: 3
---
# Imagini oficiale Docker
Castopod dă push la 3 imagini Docker pe Docker Hub pe parcursul procesului de
compilare automată
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): pachetul
aplicației cu toate dependințele Castopod
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): o
configurație Nginx pentru Castopod
- [**`castopod/video-clipper`**](https://hub.docker.com/r/castopod/video-clipper):
o imagine opțională ce compilează videoclipuri cu ajutorul ffmpeg
În plus, Castopod necesită o bază de date compatibilă cu MySQL. O bază de date
Redis poate fi adăugată pentru cache.
## Tag-uri acceptate
- `develop` [unstable], latest development branch build
- `beta` [stable], latest beta version build
- `1.0.0-beta.x` [stable], specific beta version build (since `1.0.0-beta.22`)
- `latest` [stable], latest version build
- `1.x.x` [stable], specific version build (since `1.0.0`)
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
```yml
version: "3.7"
services:
app:
image: castopod/app:latest
container_name: "castopod-app"
volumes:
- castopod-media:/opt/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "http://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
networks:
- castopod-app
- castopod-db
restart: unless-stopped
web-server:
image: castopod/web-server:latest
container_name: "castopod-web-server"
volumes:
- castopod-media:/var/www/html/media
networks:
- castopod-app
ports:
- 8080:80
restart: unless-stopped
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
volumes:
- castopod-cache:/data
networks:
- castopod-app
# this container is optional
# add this if you want to use the videoclips feature
video-clipper:
image: castopod/video-clipper:latest
container_name: "castopod-video-clipper"
volumes:
- castopod-media:/opt/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
networks:
- castopod-db
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
networks:
castopod-app:
castopod-db:
```
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
3. Setup a reverse proxy for TLS (SSL/HTTPS)
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
```
#castopod
castopod.example.com {
reverse_proxy localhost:8080
}
```
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables
- **castopod/video-clipper**
| Variable name | Type (`default`) | Default |
| -------------------------- | ---------------- | ---------------- |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
- **castopod/app**
| Variable name | Type (`default`) | Default |
| ---------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
- **castopod/web-server**
| Variable name | Type | Default |
| --------------------- | ------- | ------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |

View File

@ -0,0 +1,185 @@
---
title: Installation
sidebarDepth: 3
---
# How to install Castopod?
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
::: tip Note
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
:::
## Requirements
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
### PHP v8.1 or higher
PHP version 8.1 or higher is required, with the following extensions installed:
- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
**PNG** and **WEBP** libraries.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Additionally, make sure that the following extensions are enabled in your PHP:
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### MySQL compatible database
> We recommend using [MariaDB](https://mariadb.org).
::: warning Warning
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
will break with the previous MySQL v5.6 for example as its end of life was on
February 5, 2021.
:::
You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
#### Privileges
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
`REFERENCES`, `CREATE VIEW`.
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
want to generate Video Clips. The following extensions must be installed:
- **FreeType 2** library for
[gd](https://www.php.net/manual/en/image.installation.php).
### (Optional) Other recommendations
- Redis for better cache performances.
- CDN for static files caching and better performances.
- e-mail gateway for lost passwords.
## Install instructions
### Pre-requisites
0. Get a Web Server with [requirements](#requirements) installed
1. Create a MySQL database for Castopod with a user having access and
modification privileges (for more info, see
[MySQL compatible database](#mysql-compatible-database)).
2. Activate HTTPS on your domain with an _SSL certificate_.
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
the web server if you havent already.
- ⚠️ Set the web server document root to the `public/` sub-folder within the
`castopod` folder.
4. Add **cron tasks** on your web server for various background processes
(replace the paths accordingly):
- 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 edit the `.env` file manually
based on the `.env.example` file.
:::
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.
retrieving your forgotten password, sending instructions to premium subscribers,
…)
You may add your email configuration in your instance's `.env` like so:
```ini
# […]
email.fromEmail="your_email_address"
email.SMTPHost="your_smtp_host"
email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### Email config options
| Variable name | Type | Default |
| ---------------- | -------------------- | ------------ |
| **`fromEmail`** | string | `undefined` |
| **`fromName`** | string | `"Castopod"` |
| **`SMTPHost`** | string | `undefined` |
| **`SMTPUser`** | string | `undefined` |
| **`SMTPPass`** | string | `undefined` |
| **`SMTPPort`** | number | `25` |
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
## Community packages
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
### Install with YunoHost
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
made up of free and open-source software packages. It manages the hardships of
self-hosting for you.
<div class="flex flex-wrap items-center gap-4">
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
</a>
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
Repo</a>
</div>

View File

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

View File

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

303
docs/src/ro/index.md Normal file
View File

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

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ can be added as a cache handler.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -89,7 +89,7 @@ läggas till som cachehanterare.
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -88,7 +88,7 @@ Castopod 在其自动构建期间会将 3 个 Docker 映像推送到 Docker Hub
# this container is optional # this container is optional
# add this if you want to use the videoclips feature # add this if you want to use the videoclips feature
ffmpeg: video-clipper:
image: castopod/video-clipper:latest image: castopod/video-clipper:latest
container_name: "castopod-video-clipper" container_name: "castopod-video-clipper"
volumes: volumes:

View File

@ -31,7 +31,8 @@ return [
'delete' => 'احذف', 'delete' => 'احذف',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'الفديفرس', 'fediverse' => 'الفديفرس',
'block-lists' => 'قوائم حجب', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'مستخدمون', 'users' => 'مستخدمون',
'my-account' => 'حسابي', 'my-account' => 'حسابي',
'change-password' => 'تغيير الكلمة السرية', 'change-password' => 'تغيير الكلمة السرية',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'dilemel', 'delete' => 'dilemel',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'kevrebed', 'fediverse' => 'kevrebed',
'block-lists' => 'roll ar re stanket', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'implijerien·ezed', 'users' => 'implijerien·ezed',
'my-account' => 'ma c\'hont', 'my-account' => 'ma c\'hont',
'change-password' => 'kemmañ ar ger-tremen', 'change-password' => 'kemmañ ar ger-tremen',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'eliminar', 'delete' => 'eliminar',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'Fediverse', 'fediverse' => 'Fediverse',
'block-lists' => 'llista de bloquejats', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'usuaris', 'users' => 'usuaris',
'my-account' => 'el meu compte', 'my-account' => 'el meu compte',
'change-password' => 'canviar la contrasenya', 'change-password' => 'canviar la contrasenya',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'löschen', 'delete' => 'löschen',
'remove' => 'Entfernen', 'remove' => 'Entfernen',
'fediverse' => 'Fediversum', 'fediverse' => 'Fediversum',
'block-lists' => 'Sperrlisten', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'Benutzer', 'users' => 'Benutzer',
'my-account' => 'Mein Konto', 'my-account' => 'Mein Konto',
'change-password' => 'Passwort ändern', 'change-password' => 'Passwort ändern',

View File

@ -9,14 +9,14 @@ declare(strict_types=1);
*/ */
return [ return [
'title' => 'About Castopod', 'title' => 'Περί Του Castopod',
'host_name' => 'Host name', 'host_name' => 'Όνομα εξυπηρετητή',
'version' => 'Castopod version', 'version' => 'Έκδοση Castopod',
'php_version' => 'PHP version', 'php_version' => 'Έκδοση PHP',
'os' => 'Operating System', 'os' => 'Λειτουργικό σύστημα',
'languages' => 'Languages', 'languages' => 'Γλώσσες',
'update_database' => 'Update database', 'update_database' => 'Ενημέρωση Βάσης Δεδομένων',
'messages' => [ 'messages' => [
'databaseUpdateSuccess' => 'Database is up to date!', 'databaseUpdateSuccess' => 'Η βάση δεδομένων είναι ενημερωμένη!',
], ],
]; ];

View File

@ -14,24 +14,25 @@ return [
->gateway => 'Αρχική σελίδα', ->gateway => 'Αρχική σελίδα',
'podcasts' => 'podcasts', 'podcasts' => 'podcasts',
'episodes' => 'επεισόδια', 'episodes' => 'επεισόδια',
'subscriptions' => 'subscriptions', 'subscriptions' => 'συνδρομές',
'contributors' => 'συντελεστές', 'contributors' => 'συντελεστές',
'pages' => 'σελίδες', 'pages' => 'σελίδες',
'settings' => 'ρυθμίσεις', 'settings' => 'ρυθμίσεις',
'theme' => 'θέμα', 'theme' => 'θέμα',
'about' => 'about', 'about' => 'σχετικά',
'add' => 'προσθήκη', 'add' => 'προσθήκη',
'new' => 'νέο', 'new' => 'νέο',
'edit' => 'επεξεργασία', 'edit' => 'επεξεργασία',
'persons' => 'άτομα', 'persons' => 'άτομα',
'publish' => 'δημοσίευση', 'publish' => 'δημοσίευση',
'publish-edit' => 'επεξεργασία δημοσίευσης', 'publish-edit' => 'επεξεργασία δημοσίευσης',
'publish-date-edit' => 'edit publication date', 'publish-date-edit' => 'επεξεργασία ημερομηνίας δημοσίευσης',
'unpublish' => 'αναίρεση δημοσίευσης', 'unpublish' => 'αναίρεση δημοσίευσης',
'delete' => 'διαγραφή', 'delete' => 'διαγραφή',
'remove' => 'remove', 'remove' => 'αφαίρεση',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'λίστες αποκλεισμένων', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'χρήστες', 'users' => 'χρήστες',
'my-account' => 'ο λογαριασμός μου', 'my-account' => 'ο λογαριασμός μου',
'change-password' => 'αλλαγή κωδικού πρόσβασης', 'change-password' => 'αλλαγή κωδικού πρόσβασης',
@ -49,6 +50,6 @@ return [
'soundbites' => 'ήχοι', 'soundbites' => 'ήχοι',
'video-clips' => 'βίντεο κλιπς', 'video-clips' => 'βίντεο κλιπς',
'embed' => 'ενσωματώσιμος αναπαραγωγέας', 'embed' => 'ενσωματώσιμος αναπαραγωγέας',
'notifications' => 'notifications', 'notifications' => 'ειδοποιήσεις',
'suspend' => 'suspend', 'suspend' => 'αναστολή',
]; ];

View File

@ -35,6 +35,6 @@ return [
'by_weekday' => 'Την ημέρα της εβδομάδας (για τις τελευταίες 60 ημέρες)', 'by_weekday' => 'Την ημέρα της εβδομάδας (για τις τελευταίες 60 ημέρες)',
'by_hour' => 'Κατά την ώρα της ημέρας (για τις τελευταίες 60 ημέρες)', 'by_hour' => 'Κατά την ώρα της ημέρας (για τις τελευταίες 60 ημέρες)',
'podcast_by_bandwidth' => 'Ημερήσιο χρησιμοποιούμενο bandwidth (σε MB)', 'podcast_by_bandwidth' => 'Ημερήσιο χρησιμοποιούμενο bandwidth (σε MB)',
'total_storage_by_month' => 'Monthly storage (in MB)', 'total_storage_by_month' => 'Μηνιαία αποθήκευση (σε MB)',
'total_bandwidth_by_month' => 'Monthly used bandwidth (in MB)', 'total_bandwidth_by_month' => 'Μηνιαίο χρησιμοποιούμενο εύρος ζώνης (σε MB)',
]; ];

View File

@ -46,6 +46,6 @@ return [
'playing' => 'Αναπαράγεται', 'playing' => 'Αναπαράγεται',
], ],
'size_limit' => 'Όριο μεγέθους: {0}.', 'size_limit' => 'Όριο μεγέθους: {0}.',
'choose_interact' => 'Choose how to interact', 'choose_interact' => 'Επιλέξτε τον τρόπο αλληλεπίδρασης',
'view' => 'View', 'view' => 'Προβολή',
]; ];

View File

@ -9,20 +9,20 @@ declare(strict_types=1);
*/ */
return [ return [
'home' => 'Admin dashboard', 'home' => 'Πίνακας ελέγχου διαχειριστή',
'welcome_message' => 'Welcome to the admin area!', 'welcome_message' => 'Καλώς ήρθατε στην περιοχή διαχείρισης!',
'podcasts' => [ 'podcasts' => [
'title' => 'Podcasts', 'title' => 'Podcasts',
'not_found' => 'No published podcast', 'not_found' => 'Δεν υπάρχει δημοσιευμένο podcast',
'last_published' => 'Last published on {lastPublicationDate}', 'last_published' => 'Τελευταία δημοσίευση στις {lastPublicationDate}',
], ],
'episodes' => [ 'episodes' => [
'title' => 'Episodes', 'title' => 'Επεισόδια',
'not_found' => 'No published episode', 'not_found' => 'Κανένα δημοσιευμένο επεισόδιο',
'last_published' => 'Last published on {lastPublicationDate}', 'last_published' => 'Τελευταία δημοσίευση στις {lastPublicationDate}',
], ],
'storage' => [ 'storage' => [
'title' => 'Storage', 'title' => 'Αποθηκευτικός χώρος',
'subtitle' => '{totalUploaded} out of {totalStorage}', 'subtitle' => '{totalUploaded} από {totalStorage}',
], ],
]; ];

View File

@ -24,34 +24,34 @@ return [
'edit' => 'Επεξεργασία', 'edit' => 'Επεξεργασία',
'publish' => 'Δημοσίευση', 'publish' => 'Δημοσίευση',
'publish_edit' => 'Επεξεργασία δημοσίευσης', 'publish_edit' => 'Επεξεργασία δημοσίευσης',
'publish_date_edit' => 'Edit publication date', 'publish_date_edit' => 'Επεξεργασία ημερομηνίας δημοσίευσης',
'unpublish' => 'Αναίρεση δημοσίευσης', 'unpublish' => 'Αναίρεση δημοσίευσης',
'publish_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.', 'publish_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
'publish_edit_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.', 'publish_edit_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
'publish_cancel_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.', 'publish_cancel_error' => 'Το επεισόδιο έχει ήδη δημοσιευθεί.',
'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', 'publish_date_edit_error' => 'Το επεισόδιο δεν έχει δημοσιευθεί ακόμα, δεν μπορείτε να επεξεργαστείτε την ημερομηνία έκδοσής του.',
'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', 'publish_date_edit_future_error' => 'Η ημερομηνία δημοσίευσης του επεισοδίου μπορεί να οριστεί μόνο σε μια προηγούμενη ημερομηνία! Αν θέλετε να την προγραμματίσετε εκ νέου, αποδημοσιεύστε την πρώτα.',
'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'publish_date_edit_success' => 'Η ημερομηνία δημοσίευσης του επεισοδίου έχει ενημερωθεί με επιτυχία!',
'unpublish_error' => 'Το επεισόδιο δεν έχει δημοσιευθεί.', 'unpublish_error' => 'Το επεισόδιο δεν έχει δημοσιευθεί.',
'delete' => 'Διαγραφή', 'delete' => 'Διαγραφή',
'go_to_page' => 'Μετάβαση στη σελίδα', 'go_to_page' => 'Μετάβαση στη σελίδα',
'create' => 'Προσθήκη επεισοδίου', 'create' => 'Προσθήκη επεισοδίου',
'publication_status' => [ 'publication_status' => [
'published' => 'Δημοσιευμένο', 'published' => 'Δημοσιευμένο',
'with_podcast' => 'Published', 'with_podcast' => 'Δημοσιευμένο',
'scheduled' => 'Προγραμματισμένο', 'scheduled' => 'Προγραμματισμένο',
'not_published' => 'Δεν έχει δημοσιευτεί', 'not_published' => 'Δεν έχει δημοσιευτεί',
], ],
'with_podcast_hint' => 'To be published at the same time as the podcast', 'with_podcast_hint' => 'Να δημοσιευτεί ταυτόχρονα με το podcast',
'list' => [ 'list' => [
'search' => [ 'search' => [
'placeholder' => 'Search for an episode', 'placeholder' => 'Αναζήτηση ενός επεισοδίου',
'clear' => 'Clear search', 'clear' => 'Καθαρισμός αναζήτησης',
'submit' => 'Search', 'submit' => 'Αναζήτηση',
], ],
'number_of_episodes' => '{numberOfEpisodes, plural, 'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode} one {# επισόδειο}
other {# episodes} other {# επισόδεια}
}', }',
'episode' => 'Επεισόδιο', 'episode' => 'Επεισόδιο',
'visibility' => 'Ορατότητα', 'visibility' => 'Ορατότητα',
@ -62,31 +62,31 @@ return [
'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!', 'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Το επεισόδιο ενημερώθηκε με επιτυχία!', 'editSuccess' => 'Το επεισόδιο ενημερώθηκε με επιτυχία!',
'publishSuccess' => '{publication_status, select, 'publishSuccess' => '{publication_status, select,
published {Episode successfully published!} published {Το επεισόδιο δημοσιεύτηκε με επιτυχία!}
scheduled {Episode publication successfully scheduled!} scheduled {Η έκδοση για το επεισόδιο έχει προγραμματιστεί επιτυχώς!}
with_podcast {This episode will be published at the same time as the podcast.} with_podcast {Αυτό το επεισόδιο θα δημοσιευθεί ταυτόχρονα με το podcast.}
other {This episode is not published.} other {Αυτό το επεισόδιο δεν έχει δημοσιευθεί.}
}', }',
'publishCancelSuccess' => 'Η δημοσίευση του επεισοδίου ακυρώθηκε επιτυχώς!', 'publishCancelSuccess' => 'Η δημοσίευση του επεισοδίου ακυρώθηκε επιτυχώς!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.', 'unpublishBeforeDeleteTip' => 'Πρέπει να καταργήσετε τη δημοσίευση του επεισοδίου πριν τη διαγραφή.',
'scheduleDateError' => 'Schedule date must be set!', 'scheduleDateError' => 'Η ημερομηνία πρέπει να οριστεί!',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.', 'deletePublishedEpisodeError' => 'Πρέπει να καταργήσετε τη δημοσίευση του επεισοδίου πριν τη διαγραφή.',
'deleteSuccess' => 'Episode successfully deleted!', 'deleteSuccess' => 'Το επεισόδιο διαγράφτηκε με επιτυχία!',
'deleteError' => 'Failed to delete episode {type, select, 'deleteError' => 'Αποτυχία διαγραφής επεισοδίου {type, select,
transcript {transcript} transcript {transcript}
chapters {chapters} chapters {κεφάλαια}
image {cover} image {καλύπτουν}
audio {audio} audio {ήχος}
other {media} other {πολυμέσα}
}.', }.',
'deleteFileError' => 'Failed to delete {type, select, 'deleteFileError' => 'Αποτυχία διαγραφής {type, select,
transcript {transcript} transcript {transcript}
chapters {chapters} chapters {κεφάλαια}
image {cover} image {καλύψτε}
audio {audio} audio {ήχος}
other {media} other {πολυμέσα}
} file {file_path}. You may manually remove it from your disk.', } αρχείο {file_path}. Μπορείτε να το αφαιρέσετε χειροκίνητα από το δίσκο σας.',
'sameSlugError' => 'An episode with the chosen slug already exists.', 'sameSlugError' => 'Ένα επεισόδιο με το επιλεγμένο slug υπάρχει ήδη.',
], ],
'form' => [ 'form' => [
'file_size_error' => 'file_size_error' =>
@ -97,7 +97,7 @@ return [
'cover' => 'Εξώφυλλο επισοδίου', 'cover' => 'Εξώφυλλο επισοδίου',
'cover_hint' => 'cover_hint' =>
'Εάν δεν ορίσετε ένα εξώφυλλο, το εξώφυλλο του podcast θα χρησιμοποιηθεί αντ \'αυτού.', 'Εάν δεν ορίσετε ένα εξώφυλλο, το εξώφυλλο του podcast θα χρησιμοποιηθεί αντ \'αυτού.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.', 'cover_size_hint' => 'Το εξώφυλλο πρέπει να είναι τουλάχιστον 1400px πλάτος και ύψος.',
'title' => 'Τίτλος', 'title' => 'Τίτλος',
'title_hint' => 'title_hint' =>
'Θα πρέπει να υπάρχει ένα σαφές και συνοπτικό όνομα επεισοδίου. Μην καθορίσετε εδώ το επεισόδιο ή τους αριθμούς της σεζόν.', 'Θα πρέπει να υπάρχει ένα σαφές και συνοπτικό όνομα επεισοδίου. Μην καθορίσετε εδώ το επεισόδιο ή τους αριθμούς της σεζόν.',
@ -114,7 +114,7 @@ return [
'bonus_hint' => 'Επιπλέον περιεχόμενο για την παράσταση (για παράδειγμα, πίσω από τις σκηνές πληροφορίες ή συνεντεύξεις με τη cast) ή δια-διαφημιστικό περιεχόμενο για μια άλλη παράσταση', 'bonus_hint' => 'Επιπλέον περιεχόμενο για την παράσταση (για παράδειγμα, πίσω από τις σκηνές πληροφορίες ή συνεντεύξεις με τη cast) ή δια-διαφημιστικό περιεχόμενο για μια άλλη παράσταση',
], ],
'premium_title' => 'Premium', 'premium_title' => 'Premium',
'premium' => 'Episode must be accessible to premium subscribers only', 'premium' => 'Το επεισόδιο πρέπει να είναι προσβάσιμο μόνο σε συνδρομητές premium',
'parental_advisory' => [ 'parental_advisory' => [
'label' => 'Γονικός σύμβουλος', 'label' => 'Γονικός σύμβουλος',
'hint' => 'Μήπως το επεισόδιο περιέχει ακατάλληλο περιεχόμενο;', 'hint' => 'Μήπως το επεισόδιο περιέχει ακατάλληλο περιεχόμενο;',
@ -153,9 +153,9 @@ return [
'Αν χρειάζεστε ετικέτες RSS που δεν χειρίζεται το Castopod, ορίστε τις εδώ.', 'Αν χρειάζεστε ετικέτες RSS που δεν χειρίζεται το Castopod, ορίστε τις εδώ.',
'custom_rss' => 'Προσαρμοσμένες ετικέτες RSS για το επεισόδιο', 'custom_rss' => 'Προσαρμοσμένες ετικέτες RSS για το επεισόδιο',
'custom_rss_hint' => 'Αυτό θα ενεθεί εντός της ετικέτας "item".', 'custom_rss_hint' => 'Αυτό θα ενεθεί εντός της ετικέτας "item".',
'block' => 'Episode should be hidden from public catalogues', 'block' => 'Το επεισόδιο πρέπει να είναι κρυμμένο από όλες τις πλατφόρμες',
'block_hint' => 'block_hint' =>
'The episode show or hide status: toggling this on prevents the episode from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)', 'H κατάσταση εμφάνιση ή απόκρυψη επισοδείου: Η εναλλαγή αποτρέπει την εμφάνιση του επεισοδίου στο Apple Podcast Google Podcasts, και σε οποιεσδήποτε εφαρμογή τρίτων που τραβούν τις εμφανίσεις από αυτούς τους καταλόγους. (Μη εγγυημένη)',
'submit_create' => 'Δημιουργία επεισοδίου', 'submit_create' => 'Δημιουργία επεισοδίου',
'submit_edit' => 'Αποθήκευση επεισοδίου', 'submit_edit' => 'Αποθήκευση επεισοδίου',
], ],
@ -169,7 +169,7 @@ return [
'publication_method' => [ 'publication_method' => [
'now' => 'Τώρα', 'now' => 'Τώρα',
'schedule' => 'Προγραμματισμός', 'schedule' => 'Προγραμματισμός',
'with_podcast' => 'Publish alongside podcast', 'with_podcast' => 'Δημοσίευση παράλληλα με podcast',
], ],
'scheduled_publication_date' => 'Ημερομηνία προγραμματισμένης δημοσίευσης', 'scheduled_publication_date' => 'Ημερομηνία προγραμματισμένης δημοσίευσης',
'scheduled_publication_date_clear' => 'Εκκαθάριση ημερομηνίας δημοσίευσης', 'scheduled_publication_date_clear' => 'Εκκαθάριση ημερομηνίας δημοσίευσης',
@ -183,21 +183,21 @@ return [
'message_warning_submit' => 'Δημοσίευση ούτως ή άλλως', 'message_warning_submit' => 'Δημοσίευση ούτως ή άλλως',
], ],
'publish_date_edit_form' => [ 'publish_date_edit_form' => [
'new_publication_date' => 'New publication date', 'new_publication_date' => 'Ημερομηνία νέας δημοσίευσης',
'new_publication_date_hint' => 'Must be set to a past date.', 'new_publication_date_hint' => 'Πρέπει να οριστεί σε μια προηγούμενη ημερομηνία.',
'submit' => 'Edit publication date', 'submit' => 'Επεξεργασία ημερομηνίας δημοσίευσης',
], ],
'unpublish_form' => [ 'unpublish_form' => [
'disclaimer' => 'disclaimer' =>
"Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.", "Η κατάργηση της δημοσίευσης του επεισοδίου θα διαγράψει όλα τα σχόλια και τις δημοσιεύσεις που σχετίζονται με αυτό και θα τα αφαιρέσει από τη ροή RSS του podcast.",
'understand' => 'Καταλαβαίνω, θέλω να αποδημοσιεύσει το επεισόδιο', 'understand' => 'Καταλαβαίνω, θέλω να αποδημοσιεύσει το επεισόδιο',
'submit' => 'Αναίρεση δημοσίευσης', 'submit' => 'Αναίρεση δημοσίευσης',
], ],
'delete_form' => [ 'delete_form' => [
'disclaimer' => 'disclaimer' =>
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.", "Διαγράφοντας το επεισόδιο θα διαγράψετε όλα τα αρχεία πολυμέσων, τα σχόλια, τα βίντεο κλιπ και τα ηχητικά δεδομένα που σχετίζονται με αυτό.",
'understand' => 'Καταλαβαίνω, θέλω να διαγράψω το επεισόδιο', 'understand' => 'Καταλαβαίνω, θέλω να διαγράψω το επεισόδιο',
'submit' => 'Delete', 'submit' => 'Διαγραφή',
], ],
'embed' => [ 'embed' => [
'title' => 'Ενσωματώσιμος αναπαραγωγέας', 'title' => 'Ενσωματώσιμος αναπαραγωγέας',

View File

@ -9,11 +9,11 @@ declare(strict_types=1);
*/ */
return [ return [
'title' => 'Notifications', 'title' => 'Ειδοποιήσεις',
'reply' => '{actor_username} replied to your post', 'reply' => '{actor_username} απάντησε στο post σας',
'favourite' => '{actor_username} favourited your post', 'favourite' => '{actor_username} έβαλε αγαπημένη τη δημοσίευσή σας',
'reblog' => '{actor_username} shared your post', 'reblog' => '{actor_username} κοινοποίησε τη δημοσίευσή σας',
'follow' => '{actor_username} started following you', 'follow' => '{actor_username} ξεκίνησε να σας ακολουθεί',
'no_notifications' => 'No notifications', 'no_notifications' => 'Καμία ειδοποίηση',
'mark_all_as_read' => 'Mark all as read', 'mark_all_as_read' => 'Σήμανση όλων ως αναγνωσμένα',
]; ];

View File

@ -16,103 +16,103 @@ return [
'new_episode' => 'Νέο Επεισόδιο', 'new_episode' => 'Νέο Επεισόδιο',
'view' => 'Προβολή podcast', 'view' => 'Προβολή podcast',
'edit' => 'Επεξεργασία podcast', 'edit' => 'Επεξεργασία podcast',
'publish' => 'Publish podcast', 'publish' => 'Δημοσίευση podcast',
'publish_edit' => 'Edit publication', 'publish_edit' => 'Επεξεργασία δημοσίευσης',
'delete' => 'Διαγραφή podcast', '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' => 'Δείτε όλα τα επεισόδια',
'draft' => 'Draft', 'draft' => 'Πρόχειρο',
'messages' => [ 'messages' => [
'createSuccess' => 'Podcast successfully created!', 'createSuccess' => 'Το επεισόδιο δημιουργήθηκε με επιτυχία!',
'editSuccess' => 'Το Podcast ενημερώθηκε με επιτυχία!', 'editSuccess' => 'Το Podcast ενημερώθηκε με επιτυχία!',
'importSuccess' => 'Το Podcast εισήχθη με επιτυχία!', 'importSuccess' => 'Το Podcast εισήχθη με επιτυχία!',
'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!', 'deleteSuccess' => 'Το Podcast @{podcast_handle} διαγράφηκε επιτυχώς!',
'deletePodcastMediaError' => 'Failed to delete podcast {type, select, 'deletePodcastMediaError' => 'Αποτυχία διαγραφής podcast {type, select,
cover {cover} cover {εξώφυλλο}
banner {banner} banner {banner}
other {media} other {πολυμέσα}
}.', }.',
'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select, 'deleteEpisodeMediaError' => 'Αποτυχία διαγραφής του podcast επεισοδίου {episode_slug} {type, select,
transcript {transcript} transcript {transcript}
chapters {chapters} chapters {κεφάλαια}
image {cover} image {κάλυμμα}
audio {audio} audio {ήχος}
other {media} other {πολυμέσα}
}.', }.',
'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.', 'deletePodcastMediaFolderError' => 'Αποτυχία διαγραφής του φακέλου μέσων podcast {folder_path}. Μπορείτε να τον αφαιρέσετε χειροκίνητα από το δίσκο σας.',
'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural, 'podcastFeedUpdateSuccess' => 'Επιτυχημένη ενημέρωση: {number_of_new_episodes, plural,
one {# episode was} one {# επεισόδιο ήταν}
other {# episodes were} other {# επεισόδια ήταν}
} added to the podcast!', } προστέθηκαν στο podcast!',
'podcastFeedUpToDate' => 'Podcast is already up to date.', 'podcastFeedUpToDate' => 'Το Podcast είναι ήδη ενημερωμένο.',
'podcastNotImported' => 'Podcast could not be updated as it was not imported.', 'podcastNotImported' => 'Το Podcast δεν μπόρεσε να ενημερωθεί καθώς δεν εισήχθη.',
'publishError' => 'This podcast is either already published or scheduled for publication.', 'publishError' => 'Αυτό το podcast είτε έχει ήδη δημοσιευθεί είτε έχει προγραμματιστεί για δημοσίευση.',
'publishEditError' => 'This podcast is not scheduled for publication.', 'publishEditError' => 'Αυτό το podcast δεν έχει προγραμματιστεί για δημοσίευση.',
'publishCancelSuccess' => 'Podcast publication successfully cancelled!', 'publishCancelSuccess' => 'Η δημοσίευση του επεισοδίου ακυρώθηκε επιτυχώς!',
'scheduleDateError' => 'Schedule date must be set!', 'scheduleDateError' => 'Η ημερομηνία πρέπει να οριστεί!',
], ],
'form' => [ 'form' => [
'identity_section_title' => 'Αναγνωριστικό Podcast', 'identity_section_title' => 'Αναγνωριστικό Podcast',
'identity_section_subtitle' => 'Αυτά τα πεδία σας επιτρέπουν να ξεχωρίσει το podcast σας.', 'identity_section_subtitle' => 'Αυτά τα πεδία σας επιτρέπουν να ξεχωρίσει το podcast σας.',
'cover' => 'Podcast cover', 'cover' => 'Εξώφυλο podcast',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.', 'cover_size_hint' => 'Το εξώφυλλο πρέπει να είναι τουλάχιστον 1400px πλάτος και ύψος.',
'banner' => 'Podcast banner', 'banner' => 'Banner podcast',
'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.', 'banner_size_hint' => 'Το Banner πρέπει να έχει αναλογία 3:1 και να είναι τουλάχιστον 1500px πλάτος.',
'banner_delete' => 'Delete podcast banner', 'banner_delete' => 'Διαγραφή του podcast banner',
'title' => 'Title', 'title' => 'Τίτλος',
'handle' => 'Handle', 'handle' => 'Handle',
'handle_hint' => 'handle_hint' =>
'Used to identify the podcast. Uppercase, lowercase, numbers and underscores are accepted.', 'Χρησιμοποιείται για τον προσδιορισμό του podcast. Τα κεφαλαία, τα πεζά, οι αριθμοί και οι κάτω παύλες γίνονται αποδεκτές.',
'type' => [ 'type' => [
'label' => 'Type', 'label' => 'Είδος',
'episodic' => 'Episodic', 'episodic' => 'Episodic',
'episodic_hint' => 'If episodes are intended to be consumed without any specific order. Newest episodes will be presented first.', 'episodic_hint' => 'Εάν τα επεισόδια προορίζονται να καταναλωθούν χωρίς καμία συγκεκριμένη σειρά.',
'serial' => 'Serial', 'serial' => 'Σειριακός Αριθμός',
'serial_hint' => 'If episodes are intended to be consumed in sequential order. The oldest episodes will be presented first.', 'serial_hint' => 'Εάν τα επεισόδια προορίζονται να καταναλωθούν με διαδοχική σειρά. Τα παλαιότερα επεισόδια θα παρουσιαστούν πρώτα.',
], ],
'description' => 'Description', 'description' => 'Περιγραφή',
'classification_section_title' => 'Classification', 'classification_section_title' => 'Χαρακτηρισμός',
'classification_section_subtitle' => 'classification_section_subtitle' =>
'These fields will impact your audience and competition.', 'Αυτά τα πεδία θα επηρεάσουν το κοινό και τον ανταγωνισμό σας.',
'language' => 'Language', 'language' => 'Γλώσσα',
'category' => 'Category', 'category' => 'Κατηγορία',
'category_placeholder' => 'Select a category…', 'category_placeholder' => 'Επιλέξτε μια κατηγορία…',
'other_categories' => 'Other categories', 'other_categories' => 'Άλλες κατηγορίες',
'parental_advisory' => [ 'parental_advisory' => [
'label' => 'Parental advisory', 'label' => 'Γονικός σύμβουλος',
'hint' => 'Does it contain explicit content?', 'hint' => 'Μήπως το επεισόδιο περιέχει ακατάλληλο περιεχόμενο;',
'undefined' => 'undefined', 'undefined' => 'απροσδιόριστο',
'clean' => 'Clean', 'clean' => 'Καθαρισμός',
'explicit' => 'Explicit', 'explicit' => 'Άσεμνο περιεχόμενο',
], ],
'author_section_title' => 'Author', 'author_section_title' => 'Συντάκτης',
'author_section_subtitle' => 'Who is managing the podcast?', 'author_section_subtitle' => 'Ποιος διαχειρίζεται το podcast;',
'owner_name' => 'Owner name', 'owner_name' => 'Όνομα κατόχου',
'owner_name_hint' => 'owner_name_hint' =>
'For administrative use only. Visible in the public RSS feed.', 'Μόνο για διοικητική χρήση. Ορατό στη δημόσια τροφοδοσία RSS.',
'owner_email' => 'Owner email', 'owner_email' => 'Email ιδιοκτήτη',
'owner_email_hint' => 'owner_email_hint' =>
'Will be used by most platforms to verify the podcast ownership. Visible in the public RSS feed.', 'Θα χρησιμοποιηθεί από τις περισσότερες πλατφόρμες για να επαληθεύσει την ιδιοκτησία του podcast. Ορατό στη δημόσια τροφοδοσία RSS.',
'publisher' => 'Publisher', 'publisher' => 'Εκδότης',
'publisher_hint' => '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.', 'Η ομάδα που είναι υπεύθυνη για τη δημιουργία της παράστασης. Συχνά αναφέρεται στη μητρική εταιρεία ή στο δίκτυο ενός podcast. Αυτό το πεδίο μερικές φορές χαρακτηρίζεται ως \'Συγγραφέας\'.',
'copyright' => 'Copyright', 'copyright' => 'Πνευματικά δικαιώματα',
'location_section_title' => 'Location', 'location_section_title' => 'Τοποθεσία',
'location_section_subtitle' => 'What place is this podcast about?', 'location_section_subtitle' => 'Σε ποιο μέρος είναι αυτό το επεισόδιο;',
'location_name' => 'Location name or address', 'location_name' => 'Όνομα τοποθεσίας ή διεύθυνση',
'location_name_hint' => 'This can be a real place or fictional', 'location_name_hint' => 'Αυτό μπορεί να είναι ένα πραγματικό μέρος ή φανταστικό',
'monetization_section_title' => 'Monetization', 'monetization_section_title' => 'Monetization',
'monetization_section_subtitle' => 'monetization_section_subtitle' =>
'Earn money thanks to your audience.', 'Κερδίστε χρήματα χάρη στο κοινό σας.',
'premium' => 'Premium', 'premium' => 'Premium',
'premium_by_default' => 'Episodes must be set as premium by default', 'premium_by_default' => 'Τα επεισόδια πρέπει να ορίζονται ως premium από προεπιλογή',
'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'premium_by_default_hint' => 'Τα επεισόδια Podcast θα επισημανθούν ως premium από προεπιλογή. Μπορείτε ακόμα να επιλέξετε να ορίσετε κάποια επεισόδια, trailers ή μπόνους ως δημόσια.',
'payment_pointer' => 'Payment Pointer for Web Monetization', 'payment_pointer' => 'Δείκτης πληρωμής για Monetization Web',
'payment_pointer_hint' => 'payment_pointer_hint' =>
'This is your where you will receive money thanks to Web Monetization', 'Αυτό είναι το πού θα λάβετε χρήματα χάρη στην Monetization Web',
'advanced_section_title' => 'Advanced Parameters', 'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' => 'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.', 'If you need RSS tags that Castopod does not handle, set them here.',
@ -168,56 +168,56 @@ return [
'food' => 'Food', 'food' => 'Food',
'performing_arts' => 'Performing Arts', 'performing_arts' => 'Performing Arts',
'visual_arts' => 'Visual Arts', 'visual_arts' => 'Visual Arts',
'careers' => 'Careers', 'careers' => 'Καριέρες',
'entrepreneurship' => 'Entrepreneurship', 'entrepreneurship' => 'Επιχειρηματικότητα',
'investing' => 'Investing', 'investing' => 'Επενδύσεις',
'management' => 'Management', 'management' => 'Διαχείριση',
'marketing' => 'Marketing', 'marketing' => 'Μάρκετινγκ',
'non_profit' => 'Non-Profit', 'non_profit' => 'Μη κερδοσκοπικού χαρακτήρα',
'comedy_interviews' => 'Comedy Interviews', 'comedy_interviews' => 'Συνεντεύξεις Κωμωδίας',
'improv' => 'Improv', 'improv' => 'Βελτίωση',
'stand_up' => 'Stand-Up', 'stand_up' => 'Stand-Up',
'courses' => 'Courses', 'courses' => 'Σεμινάρια',
'how_to' => 'How To', 'how_to' => 'How To',
'language_learning' => 'Language Learning', 'language_learning' => 'Εκμάθηση γλωσσών',
'self_improvement' => 'Self-Improvement', 'self_improvement' => 'Αυτοβελτίωση',
'comedy_fiction' => 'Comedy Fiction', 'comedy_fiction' => 'Φαντασία Κωμωδίας',
'drama' => 'Drama', 'drama' => 'Δράμα',
'science_fiction' => 'Science Fiction', 'science_fiction' => 'Επιστημονικής φαντασίας',
'alternative_health' => 'Alternative Health', 'alternative_health' => 'Εναλλακτική Υγεία',
'fitness' => 'Fitness', 'fitness' => 'Γυμναστική',
'medicine' => 'Medicine', 'medicine' => 'Ιατρική',
'mental_health' => 'Mental Health', 'mental_health' => 'Ψυχική Υγεία',
'nutrition' => 'Nutrition', 'nutrition' => 'Διατροφή',
'sexuality' => 'Sexuality', 'sexuality' => 'Σεξουαλικότητα',
'education_for_kids' => 'Education for Kids', 'education_for_kids' => 'Εκπαίδευση για παιδιά',
'parenting' => 'Parenting', 'parenting' => 'Γονείς',
'pets_and_animals' => 'Pets &amp Animals', 'pets_and_animals' => 'Κατοικίδια &amp Ζώα',
'stories_for_kids' => 'Stories for Kids', 'stories_for_kids' => 'Ιστορίες για παιδιά',
'animation_and_manga' => 'Animation &amp Manga', 'animation_and_manga' => 'Animation &amp Manga',
'automotive' => 'Automotive', 'automotive' => 'Αυτοκίνητα',
'aviation' => 'Aviation', 'aviation' => 'Αεροπορία',
'crafts' => 'Crafts', 'crafts' => 'Χειροτεχνίες',
'games' => 'Games', 'games' => 'Παιχνίδια',
'hobbies' => 'Hobbies', 'hobbies' => 'Χόμπι',
'home_and_garden' => 'Home &amp Garden', 'home_and_garden' => 'Σπίτι &amp Κήπος',
'video_games' => 'Video Games', 'video_games' => 'Βιντεοπαιχνίδια',
'music_commentary' => 'Music Commentary', 'music_commentary' => 'Σχολιασμός Μουσικής',
'music_history' => 'Music History', 'music_history' => 'Ιστορία Μουσικής',
'music_interviews' => 'Music Interviews', 'music_interviews' => 'Συνεντεύξεις Μουσικής',
'business_news' => 'Business News', 'business_news' => 'Επιχειρηματικά Νέα',
'daily_news' => 'Daily News', 'daily_news' => 'Καθημερινές Ειδήσεις',
'entertainment_news' => 'Entertainment News', 'entertainment_news' => 'Ειδήσεις ψυχαγωγίας',
'news_commentary' => 'News Commentary', 'news_commentary' => 'News Commentary',
'politics' => 'Politics', 'politics' => 'Πολιτική',
'sports_news' => 'Sports News', 'sports_news' => 'Αθλητικά νέα',
'tech_news' => 'Tech News', 'tech_news' => 'Ειδήσεις Τεχνολογίας',
'buddhism' => 'Buddhism', 'buddhism' => 'Βουδισμός',
'christianity' => 'Christianity', 'christianity' => 'Χριστιανισμός',
'hinduism' => 'Hinduism', 'hinduism' => 'Hinduism',
'islam' => 'Islam', 'islam' => 'Ισλαμισμός',
'judaism' => 'Judaism', 'judaism' => 'Ιουδαϊσμός',
'religion' => 'Religion', 'religion' => 'Θρησκεία',
'spirituality' => 'Spirituality', 'spirituality' => 'Spirituality',
'astronomy' => 'Astronomy', 'astronomy' => 'Astronomy',
'chemistry' => 'Chemistry', 'chemistry' => 'Chemistry',
@ -272,39 +272,39 @@ return [
'submit_edit' => 'Edit publication', 'submit_edit' => 'Edit publication',
'cancel_publication' => 'Cancel publication', 'cancel_publication' => 'Cancel publication',
'message_warning' => 'You did not write a message for your announcement post!', '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 podcast.', 'message_warning_hint' => 'Έχοντας ένα μήνυμα αυξάνει την κοινωνική δέσμευση, με αποτέλεσμα μια καλύτερη ορατότητα για το podcast σας.',
'message_warning_submit' => 'Publish anyway', 'message_warning_submit' => 'Δημοσίευση ούτως ή άλλως',
], ],
'publication_status_banner' => [ 'publication_status_banner' => [
'draft_mode' => 'draft mode', 'draft_mode' => 'λειτουργία πρόχειρου',
'not_published' => 'This podcast is not yet published.', 'not_published' => 'Αυτό το podcast δεν έχει ακόμη δημοσιευθεί.',
'scheduled' => 'This podcast is scheduled for publication on {publication_date}.', 'scheduled' => 'Αυτό το podcast έχει προγραμματιστεί για δημοσίευση στις {publication_date}.',
], ],
'delete_form' => [ 'delete_form' => [
'disclaimer' => 'disclaimer' =>
"Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.", "Διαγράφοντας το podcast θα διαγράψει όλα τα επεισόδια, τα αρχεία πολυμέσων, τις δημοσιεύσεις και τα αναλυτικά στοιχεία που σχετίζονται με αυτό. Αυτή η ενέργεια είναι μη αναστρέψιμη, δεν θα είστε σε θέση να τις ανακτήσετε αργότερα.",
'understand' => 'I understand, I want the podcast to be permanently deleted', 'understand' => 'Καταλαβαίνω, θέλω το podcast να διαγραφεί οριστικά',
'submit' => 'Delete', 'submit' => 'Διαγραφή',
], ],
'by' => 'By {publisher}', 'by' => 'Από {publisher}',
'season' => 'Season {seasonNumber}', 'season' => 'Σεζόν {seasonNumber}',
'list_of_episodes_year' => '{year} episodes ({episodeCount})', 'list_of_episodes_year' => '{year} επεισόδια ({episodeCount})',
'list_of_episodes_season' => 'list_of_episodes_season' =>
'Season {seasonNumber} episodes ({episodeCount})', 'Σεζόν {seasonNumber} επεισόδεια ({episodeCount})',
'no_episode' => 'No episode found!', 'no_episode' => 'Δεν βρέθηκε επεισόδιο!',
'follow' => 'Follow', 'follow' => 'Ακολουθήστε',
'followers' => '{numberOfFollowers, plural, 'followers' => '{numberOfFollowers, plural,
one {# follower} one {# ακόλουθος}
other {# followers} other {# ακόλουθοι}
}', }',
'posts' => '{numberOfPosts, plural, 'posts' => '{numberOfPosts, plural,
one {# post} one {# δημοσίευση}
other {# posts} other {# δημοσιεύσεις}
}', }',
'activity' => 'Activity', 'activity' => 'Δραστηριότητα',
'episodes' => 'Episodes', 'episodes' => 'Επεισόδια',
'sponsor' => 'Sponsor', 'sponsor' => 'Χορηγός',
'funding_links' => 'Funding links for {podcastTitle}', 'funding_links' => 'Σύνδεσμοι χρηματοδότησης για το {podcastTitle}',
'find_on' => 'Find {podcastTitle} on', 'find_on' => 'Βρείτε το {podcastTitle} στο',
'listen_on' => 'Listen on', 'listen_on' => 'Ακούστε το',
]; ];

View File

@ -10,28 +10,28 @@ declare(strict_types=1);
return [ return [
'warning' => 'warning' =>
'This procedure may take a long time. As the current version does not show any progress while it runs, you will not see anything updated until it is done. In case of timeout error, increase `max_execution_time` value.', 'Αυτή η διαδικασία μπορεί να διαρκέσει πολύ. Καθώς η τρέχουσα έκδοση δεν εμφανίζει καμία πρόοδο ενώ εκτελείται, δεν θα δείτε τίποτα να ενημερώνεται μέχρι να ολοκληρωθεί. Σε περίπτωση σφάλματος χρονικού ορίου, αυξήστε την τιμή `max_execution_time`.',
'old_podcast_section_title' => 'The podcast to import', 'old_podcast_section_title' => 'Το podcast για εισαγωγή',
'old_podcast_section_subtitle' => '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.', 'Βεβαιωθείτε ότι έχετε τα δικαιώματα για αυτό το podcast πριν από την εισαγωγή του. Η αντιγραφή και μετάδοση ενός podcast χωρίς τα κατάλληλα δικαιώματα είναι πειρατεία και μπορεί να διωχθεί.',
'imported_feed_url' => 'Feed URL', 'imported_feed_url' => 'Διεύθυνση URL Ροής',
'imported_feed_url_hint' => 'The feed must be in xml or rss format.', 'imported_feed_url_hint' => 'To Url πρέπει να είναι σε μορφή xml ή rss.',
'new_podcast_section_title' => 'The new podcast', 'new_podcast_section_title' => 'Το νέο podcast',
'advanced_params_section_title' => 'Advanced parameters', 'advanced_params_section_title' => 'Παράμετροι για προχωρημένους',
'advanced_params_section_subtitle' => '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', 'slug_field' => 'Πεδίο που πρέπει να χρησιμοποιείται για τον υπολογισμό του slug του επεισοδίου',
'description_field' => 'description_field' =>
'Source field used for episode description / show notes', 'Πεδίο πηγής που χρησιμοποιείται για την περιγραφή επεισοδίου / εμφάνιση σημειώσεων',
'force_renumber' => 'Force episodes renumbering', 'force_renumber' => 'Force episodes renumbering',
'force_renumber_hint' => 'force_renumber_hint' =>
'Use this if your podcast does not have episode numbers but wish to set them during import.', 'Use this if your podcast does not have episode numbers but wish to set them during import.',
'season_number' => 'Season number', 'season_number' => 'Αριθμός σεζόν',
'season_number_hint' => 'season_number_hint' =>
'Use this if your podcast does not have a season number but wish to set one during import. Leave blank otherwise.', 'Χρησιμοποιήστε αυτό αν το podcast σας δεν έχει αριθμό σεζόν αλλά επιθυμεί να ορίσει έναν κατά την εισαγωγή. Αφήστε κενό διαφορετικά.',
'max_episodes' => 'Maximum number of episodes to import', 'max_episodes' => 'Μέγιστος αριθμός επεισοδίων εισαγωγής',
'max_episodes_hint' => 'Leave blank to import all episodes', 'max_episodes_hint' => 'Αφήστε κενό για την εισαγωγή όλων των επεισοδίων',
'lock_import' => 'lock_import' =>
'This feed is protected. You cannot import it. If you are the owner, unprotect it on the origin platform.', 'Αυτή η ροή προστατεύεται. Δεν μπορείτε να την εισάγετε. Αν είστε ο ιδιοκτήτης, μην την προστατεύετε στην πλατφόρμα προέλευσης.',
'submit' => 'Import podcast', 'submit' => 'Εισαγωγή podcast',
]; ];

View File

@ -9,30 +9,30 @@ declare(strict_types=1);
*/ */
return [ return [
'go_to_page' => 'Go to podcast page', 'go_to_page' => 'Μετάβαση στη σελίδα podcast',
'dashboard' => 'Podcast dashboard', 'dashboard' => 'Πίνακας ελέγχου Podcast',
'podcast-view' => 'Home', 'podcast-view' => 'Αρχική σελίδα',
'podcast-edit' => 'Edit podcast', 'podcast-edit' => 'Επεξεργασία podcast',
'podcast-persons-manage' => 'Manage persons', 'podcast-persons-manage' => 'Διαχείριση ατόμων',
'episodes' => 'Episodes', 'episodes' => 'Επεισόδια',
'episode-list' => 'All episodes', 'episode-list' => 'Όλα τα επεισόδια',
'episode-create' => 'New episode', 'episode-create' => 'Νέο Επεισόδιο',
'analytics' => 'Analytics', 'analytics' => 'Στατιστικά',
'podcast-analytics' => 'Audience overview', 'podcast-analytics' => 'Επισκόπηση κοινού',
'podcast-analytics-webpages' => 'Web pages visits', 'podcast-analytics-webpages' => 'Επίσκεψη ιστοσελίδων',
'podcast-analytics-locations' => 'Locations', 'podcast-analytics-locations' => 'Τοποθεσίες',
'podcast-analytics-unique-listeners' => 'Unique listeners', 'podcast-analytics-unique-listeners' => 'Μοναδικοί ακροατές',
'podcast-analytics-players' => 'Players', 'podcast-analytics-players' => 'Αναπαραγωγές',
'podcast-analytics-listening-time' => 'Listening time', 'podcast-analytics-listening-time' => 'Χρόνος ακρόασης',
'podcast-analytics-time-periods' => 'Time periods', 'podcast-analytics-time-periods' => 'Χρονικές περίοδοι',
'premium' => 'Premium', 'premium' => 'Premium',
'subscription-list' => 'All subscriptions', 'subscription-list' => 'Όλες οι συνδρομές',
'subscription-add' => 'Add subscription', 'subscription-add' => 'Προσθέστε συνδρομή',
'contributors' => 'Contributors', 'contributors' => 'Συντελεστές',
'contributor-list' => 'All contributors', 'contributor-list' => 'Όλοι οι συντελεστές',
'contributor-add' => 'Add contributor', 'contributor-add' => 'Προσθήκη συντελεστή',
'platforms' => 'External platforms', 'platforms' => 'Εξωτερικές πλατφόρμες',
'platforms-podcasting' => 'Podcasting', 'platforms-podcasting' => 'Podcasting',
'platforms-social' => 'Social networks', 'platforms-social' => 'Κοινωνικά δίκτυα',
'platforms-funding' => 'Funding', 'platforms-funding' => 'Χρηματοδότηση',
]; ];

View File

@ -9,50 +9,50 @@ declare(strict_types=1);
*/ */
return [ return [
'title' => 'General settings', 'title' => 'Γενικές ρυθμίσεις',
'instance' => [ 'instance' => [
'title' => 'Instance', 'title' => 'Διακομιστής',
'site_icon' => 'Site icon', 'site_icon' => 'Εικονίδιο ιστοσελίδας',
'site_icon_delete' => 'Delete site icon', 'site_icon_delete' => 'Διαγραφή εικονιδίου ιστότοπου',
'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_hint' => 'Τα εικονίδια της ιστοσελίδας είναι αυτά που βλέπετε στις καρτέλες του προγράμματος περιήγησης, στη γραμμή σελιδοδεικτών, και όταν προσθέτετε μια ιστοσελίδα ως συντόμευση σε κινητές συσκευές.',
'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.', 'site_icon_helper' => 'Το εικονίδιο πρέπει να είναι τετράγωνο και τουλάχιστον 512px πλάτος και ψηλό.',
'site_name' => 'Site name', 'site_name' => 'Όνομα ιστοτόπου',
'site_description' => 'Site description', 'site_description' => 'Περιγραφή ιστοτόπου',
'submit' => 'Save', 'submit' => 'Αποθήκευση',
'editSuccess' => 'Instance has been updated successfully!', 'editSuccess' => 'Ο Διακομιστής έχει ενημερωθεί με επιτυχία!',
'deleteIconSuccess' => 'Site icon has been remove successfully!', 'deleteIconSuccess' => 'Το εικονίδιο της ιστοσελίδας έχει καταργηθεί με επιτυχία!',
], ],
'images' => [ 'images' => [
'title' => 'Images', 'title' => 'Εικόνες',
'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.', 'subtitle' => 'Εδώ μπορείτε να επαναδημιουργήσετε όλες τις εικόνες με βάση τα πρωτότυπα που φορτώθηκαν. Για να χρησιμοποιηθεί αν βρείτε κάποιες εικόνες που λείπουν. Αυτή η εργασία μπορεί να διαρκέσει λίγο.',
'regenerate' => 'Regenerate images', 'regenerate' => 'Αναδημιουργία εικόνων',
'regenerationSuccess' => 'All images have been regenerated successfully!', 'regenerationSuccess' => 'Όλες οι εικόνες έχουν δημιουργηθεί επιτυχώς!',
], ],
'housekeeping' => [ 'housekeeping' => [
'title' => '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.', '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' => 'Επαναφορά μετρήσεων',
'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).', 'reset_counts_helper' => 'Αυτή η επιλογή θα επαναϋπολογίσει και θα επαναφέρει όλους τους αριθμούς δεδομένων (αριθμός των ακολούθων, αναρτήσεις, σχόλια, …).',
'rewrite_media' => 'Rewrite media metadata', 'rewrite_media' => 'Επανεγγραφή μεταδεδομένων πολυμέσων',
'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)', 'rewrite_media_helper' => 'Αυτή η επιλογή θα διαγράψει όλα τα περιττά αρχεία πολυμέσων και θα τα αναπαράγει (εικόνες, αρχεία ήχου, μεταγραφές, κεφάλαια, …)',
'rename_episodes_files' => 'Rename episode audio files', 'rename_episodes_files' => 'Μετονομασία αρχείων ήχου επεισοδίου',
'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'rename_episodes_files_hint' => 'Αυτή η επιλογή θα μετονομάσει όλα τα αρχεία ήχου επεισόδια σε μια τυχαία συμβολοσειρά χαρακτήρων. Χρησιμοποιήστε αυτό αν διαρρεύσει ένας από τους ιδιωτικούς συνδέσμους επεισοδίων σας, καθώς αυτό θα τον αποκρύψει αποτελεσματικά.',
'clear_cache' => 'Clear all cache', 'clear_cache' => 'Εκκαθάριση συνολικού cache',
'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.', 'clear_cache_helper' => 'Αυτή η επιλογή θα εκκαθαρίσει αρχεία cache redis ή εγγράψιμο/cache.',
'run' => 'Run housekeeping', 'run' => 'Run housekeeping',
'runSuccess' => 'Housekeeping has been run successfully!', 'runSuccess' => 'Housekeeping has been run successfully!',
], ],
'theme' => [ 'theme' => [
'title' => 'Theme', 'title' => 'Θέμα',
'accent_section_title' => 'Accent color', 'accent_section_title' => 'Χρώμα έμφασης',
'accent_section_subtitle' => 'Choose the color to determine the look and feel of all public pages.', 'accent_section_subtitle' => 'Επιλέξτε το χρώμα για να καθορίσετε την εμφάνιση και την αίσθηση όλων των δημόσιων σελίδων.',
'pine' => 'Pine', 'pine' => 'Πεύκο',
'crimson' => 'Crimson', 'crimson' => 'Βυσσινί',
'amber' => 'Amber', 'amber' => 'Κεχριμπάρι',
'lake' => 'Lake', 'lake' => 'Λίμνη',
'jacaranda' => 'Jacaranda', 'jacaranda' => 'Jacaranda',
'onyx' => 'Onyx', 'onyx' => 'Όνυξ',
'submit' => 'Save', 'submit' => 'Αποθήκευση',
'setInstanceThemeSuccess' => 'Theme has been updated successfully!', 'setInstanceThemeSuccess' => 'Το θέμα έχει ενημερωθεί με επιτυχία!',
], ],
]; ];

View File

@ -10,22 +10,22 @@ declare(strict_types=1);
return [ return [
'list' => [ 'list' => [
'title' => 'Soundbites', 'title' => 'Ήχοι',
'soundbite' => 'Soundbite', 'soundbite' => 'Ήχος',
], ],
'messages' => [ 'messages' => [
'createSuccess' => 'Soundbite has been successfully created!', 'createSuccess' => 'Το Soundbite δημιουργήθηκε με επιτυχία!',
'deleteSuccess' => 'Soundbite has been successfully removed!', 'deleteSuccess' => 'Το Soundbite αφαιρέθηκε με επιτυχία!',
], ],
'form' => [ 'form' => [
'title' => 'New soundbite', 'title' => 'Νέο soundbite',
'soundbite_title' => 'Soundbite title', 'soundbite_title' => 'Τίτλος Soundbite',
'start_time' => 'Start at', 'start_time' => 'Έναρξη από',
'duration' => 'Duration', 'duration' => 'Διάρκεια',
'submit' => 'Create soundbite', 'submit' => 'Δημιουργία soundbite',
], ],
'play' => 'Play soundbite', 'play' => 'Αναπαραγωγή soundbite',
'stop' => 'Stop soundbite', 'stop' => 'Σταμάτημα soundbite',
'create' => 'New soundbite', 'create' => 'Νέο soundbite',
'delete' => 'Delete soundbite', 'delete' => 'Διαγραφή soundbite',
]; ];

View File

@ -10,7 +10,7 @@ declare(strict_types=1);
return [ return [
'min_dims' => 'min_dims' =>
'{field} is either not an image, or it is not wide or tall enough.', '{field} είτε δεν είναι μια εικόνα, είτε δεν είναι αρκετά ευρεία ή ψηλή.',
'is_image_ratio' => 'is_image_ratio' =>
'{field} is either not an image or not of the right ratio.', '{field} είτε δεν είναι εικόνα είτε όχι της σωστής αναλογίας.',
]; ];

View File

@ -10,63 +10,63 @@ declare(strict_types=1);
return [ return [
'list' => [ 'list' => [
'title' => 'Video clips', 'title' => 'Βίντεο κλιπ',
'status' => [ 'status' => [
'label' => 'Status', 'label' => 'Κατάσταση',
'queued' => 'queued', 'queued' => 'στην ουρά',
'queued_hint' => 'Clip is waiting to be processed.', 'queued_hint' => 'Το κλιπ περιμένει να υποβληθεί σε επεξεργασία.',
'pending' => 'pending', 'pending' => 'εκκρεμεί',
'pending_hint' => 'Clip will be generated shortly.', 'pending_hint' => 'Το κλιπ θα δημιουργηθεί σύντομα.',
'running' => 'running', 'running' => 'εκτελείται',
'running_hint' => 'Clip is being generated.', 'running_hint' => 'Το κλιπ δημιουργείται.',
'failed' => 'failed', 'failed' => 'απέτυχε',
'failed_hint' => 'Clip could not be generated: script failure.', 'failed_hint' => 'Το κλιπ δεν μπόρεσε να δημιουργηθεί: αποτυχία δέσμης ενεργειών.',
'passed' => 'passed', 'passed' => 'passed',
'passed_hint' => 'Clip was generated successfully!', 'passed_hint' => 'Το κλιπ δημιουργήθηκε με επιτυχία!',
], ],
'clip' => 'Clip', 'clip' => 'Αποσπάσματα',
'duration' => 'Job duration', 'duration' => 'Διάρκεια εργασίας',
], ],
'title' => 'Video clip: {videoClipLabel}', 'title' => 'Βίντεο κλιπ: {videoClipLabel}',
'download_clip' => 'Download clip', 'download_clip' => 'Κατεβάστε το κλιπ',
'create' => 'New video clip', 'create' => 'Νέο βίντεο κλιπ',
'go_to_page' => 'Go to clip page', 'go_to_page' => 'Go to clip page',
'retry' => 'Retry clip generation', 'retry' => 'Retry clip generation',
'delete' => 'Delete clip', 'delete' => 'Διαγραφή κλιπ',
'logs' => 'Job logs', 'logs' => 'Αρχεία καταγραφής εργασίας',
'messages' => [ 'messages' => [
'alreadyExistingError' => 'The video clip you are trying to create already exists!', 'alreadyExistingError' => 'Το βίντεο κλιπ που προσπαθείτε να δημιουργήσετε υπάρχει ήδη!',
'addToQueueSuccess' => 'Video clip has been added to queue, awaiting to be created!', 'addToQueueSuccess' => 'Το βίντεο κλιπ έχει προστεθεί στην ουρά αναμονής, αναμένοντας να δημιουργηθεί!',
'deleteSuccess' => 'Video clip has been successfully removed!', 'deleteSuccess' => 'Το βίντεο κλιπ αφαιρέθηκε με επιτυχία!',
], ],
'format' => [ 'format' => [
'landscape' => 'Landscape', 'landscape' => 'Οριζόντια',
'portrait' => 'Portrait', 'portrait' => 'Κατακόρυφα',
'squared' => 'Squared', 'squared' => 'Τετράγωνα',
], ],
'form' => [ 'form' => [
'title' => 'New video clip', 'title' => 'Νέο βίντεο κλιπ',
'params_section_title' => 'Video clip parameters', 'params_section_title' => 'Παράμετροι βίντεο κλιπ',
'clip_title' => 'Clip title', 'clip_title' => 'Τίτλος κλιπ',
'format' => [ 'format' => [
'label' => 'Choose a format', 'label' => 'Επιλογή μορφής',
'landscape_hint' => 'With a 16:9 ratio, landscape videos are great for PeerTube, Youtube and Vimeo.', 'landscape_hint' => 'Με αναλογία 16:9, τα βίντεο τοπίου είναι υπέροχα για το PeerTube, το Youtube και το Vimeo.',
'portrait_hint' => 'With a 9:16 ratio, portrait videos are great for TikTok, Youtube shorts and Instagram stories.', 'portrait_hint' => 'Με αναλογία 9:16, πορτρέτο βίντεο είναι μεγάλη για TikTok, shorts Youtube και ιστορίες Instagram.',
'squared_hint' => 'With a 1:1 ratio, squared videos are great for Mastodon, Facebook, Twitter and LinkedIn.', 'squared_hint' => 'Με αναλογία 1:1, τα τετράγωνα βίντεο είναι υπέροχα για Mastodon, Facebook, Twitter και LinkedIn.',
], ],
'theme' => 'Select a theme', 'theme' => 'Επιλογή θέματος',
'start_time' => 'Start at', 'start_time' => 'Έναρξη από',
'duration' => 'Duration', 'duration' => 'Διάρκεια',
'trim_start' => 'Trim start', 'trim_start' => 'Περικοπή έναρξης',
'trim_end' => 'Trim end', 'trim_end' => 'Περικοπή τέλους',
'submit' => 'Create video clip', 'submit' => 'Δημιουργία βίντεο κλιπ',
], ],
'requirements' => [ 'requirements' => [
'title' => 'Missing requirements', 'title' => 'Λείπουν προαπαιτούμενα',
'missing' => 'You have missing requirements. Make sure to add all the required items to be allowed creating a video for this episode!', 'missing' => 'Έχετε απαιτήσεις που λείπουν. Σιγουρευτείτε ότι προσθέστε όλα τα απαιτούμενα στοιχεία για να μπορέσετε να δημιουργήσετε ένα βίντεο για αυτό το επεισόδιο!',
'ffmpeg' => 'FFmpeg', 'ffmpeg' => 'FFmpeg',
'gd' => 'Graphics Draw (GD)', 'gd' => 'Σχεδίαση Γραφικών (GD)',
'freetype' => 'Freetype library for GD', 'freetype' => 'Βιβλιοθήκη Freetype για GD',
'transcript' => 'Transcript file (.srt)', 'transcript' => 'Αρχείο απομαγνητοφώνησης (.srt)',
], ],
]; ];

View File

@ -9,14 +9,14 @@ declare(strict_types=1);
*/ */
return [ return [
'title' => 'About Castopod', 'title' => 'Acerca de Castopod',
'host_name' => 'Host name', 'host_name' => 'Nombre del host',
'version' => 'Castopod version', 'version' => 'Versión de Castopod',
'php_version' => 'PHP version', 'php_version' => 'Versión de PHP',
'os' => 'Operating System', 'os' => 'Sistema Operativo',
'languages' => 'Languages', 'languages' => 'Idiomas',
'update_database' => 'Update database', 'update_database' => 'Actualizar base de datos',
'messages' => [ 'messages' => [
'databaseUpdateSuccess' => 'Database is up to date!', 'databaseUpdateSuccess' => 'La base de datos esta actualizada!',
], ],
]; ];

View File

@ -14,24 +14,25 @@ return [
->gateway => 'Inicio', ->gateway => 'Inicio',
'podcasts' => 'podcasts', 'podcasts' => 'podcasts',
'episodes' => 'episodios', 'episodes' => 'episodios',
'subscriptions' => 'subscriptions', 'subscriptions' => 'suscripciones',
'contributors' => 'colaboradores', 'contributors' => 'colaboradores',
'pages' => 'páginas', 'pages' => 'páginas',
'settings' => 'configuración', 'settings' => 'configuración',
'theme' => 'tema', 'theme' => 'tema',
'about' => 'about', 'about' => 'acerca de',
'add' => 'añadir', 'add' => 'añadir',
'new' => 'nuevo', 'new' => 'nuevo',
'edit' => 'editar', 'edit' => 'editar',
'persons' => 'personas', 'persons' => 'personas',
'publish' => 'publicar', 'publish' => 'publicar',
'publish-edit' => 'editar publicación', 'publish-edit' => 'editar publicación',
'publish-date-edit' => 'edit publication date', 'publish-date-edit' => 'editar fecha de publicación',
'unpublish' => 'anular publicación', 'unpublish' => 'anular publicación',
'delete' => 'borrar', 'delete' => 'borrar',
'remove' => 'remove', 'remove' => 'eliminar',
'fediverse' => 'fediverso', 'fediverse' => 'fediverso',
'block-lists' => 'listas de bloqueo', 'blocked-actors' => 'actores bloqueado',
'blocked-domains' => 'dominios bloqueados',
'users' => 'usuarios', 'users' => 'usuarios',
'my-account' => 'mi cuenta', 'my-account' => 'mi cuenta',
'change-password' => 'cambiar contraseña', 'change-password' => 'cambiar contraseña',
@ -50,5 +51,5 @@ return [
'video-clips' => 'clips de vídeo', 'video-clips' => 'clips de vídeo',
'embed' => 'reproductor embebido', 'embed' => 'reproductor embebido',
'notifications' => 'notificaciones', 'notifications' => 'notificaciones',
'suspend' => 'suspend', 'suspend' => 'suspender',
]; ];

View File

@ -24,14 +24,14 @@ return [
'edit' => 'Editar', 'edit' => 'Editar',
'publish' => 'Publicar', 'publish' => 'Publicar',
'publish_edit' => 'Editar publicación', 'publish_edit' => 'Editar publicación',
'publish_date_edit' => 'Edit publication date', 'publish_date_edit' => 'Editar fecha de publicación',
'unpublish' => 'Anular publicación', 'unpublish' => 'Anular publicación',
'publish_error' => 'El episodio ya está publicado.', 'publish_error' => 'El episodio ya está publicado.',
'publish_edit_error' => 'El episodio ya está publicado.', 'publish_edit_error' => 'El episodio ya está publicado.',
'publish_cancel_error' => 'El episodio ya está publicado.', 'publish_cancel_error' => 'El episodio ya está publicado.',
'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.', 'publish_date_edit_error' => 'El episodio no ha sido publicado todavía, no puede editar su fecha de publicación.',
'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.', 'publish_date_edit_future_error' => '¡La fecha de publicación del episodio sólo puede establecerse a una fecha pasada! Si desea reprogramarla, despublicarla primero.',
'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!', 'publish_date_edit_success' => '¡La fecha de publicación del episodio se ha actualizado con éxito!',
'unpublish_error' => 'El episodio no está publicado.', 'unpublish_error' => 'El episodio no está publicado.',
'delete' => 'Borrar', 'delete' => 'Borrar',
'go_to_page' => 'Ir a la página', 'go_to_page' => 'Ir a la página',
@ -114,7 +114,7 @@ return [
'bonus_hint' => 'Contenido extra para la serie (por ejemplo, detrás de escenas o entrevistas con el elenco) o contenido promocional para otra serie', 'bonus_hint' => 'Contenido extra para la serie (por ejemplo, detrás de escenas o entrevistas con el elenco) o contenido promocional para otra serie',
], ],
'premium_title' => 'Premium', 'premium_title' => 'Premium',
'premium' => 'Episode must be accessible to premium subscribers only', 'premium' => 'El episodio debe ser accesible solamente para los suscriptores premium',
'parental_advisory' => [ 'parental_advisory' => [
'label' => 'Aviso parental', 'label' => 'Aviso parental',
'hint' => '¿El episodio contiene contenido explícito?', 'hint' => '¿El episodio contiene contenido explícito?',
@ -183,9 +183,9 @@ return [
'message_warning_submit' => 'Publicar de todos modos', 'message_warning_submit' => 'Publicar de todos modos',
], ],
'publish_date_edit_form' => [ 'publish_date_edit_form' => [
'new_publication_date' => 'New publication date', 'new_publication_date' => 'Nueva fecha de publicación',
'new_publication_date_hint' => 'Must be set to a past date.', 'new_publication_date_hint' => 'Debe establecerse en una fecha pasada.',
'submit' => 'Edit publication date', 'submit' => 'Editar fecha de publicación',
], ],
'unpublish_form' => [ 'unpublish_form' => [
'disclaimer' => 'disclaimer' =>

View File

@ -33,7 +33,7 @@ return [
'settings' => 'Configuración', 'settings' => 'Configuración',
'settings-general' => 'General', 'settings-general' => 'General',
'settings-theme' => 'Tema', 'settings-theme' => 'Tema',
'about' => 'About', 'about' => 'Acerca de',
'account' => [ 'account' => [
'my-account' => 'Mi cuenta', 'my-account' => 'Mi cuenta',
'change-password' => 'Cambiar contraseña', 'change-password' => 'Cambiar contraseña',

View File

@ -13,7 +13,7 @@ return [
'reply' => '{actor_username} respondió a tu publicación', 'reply' => '{actor_username} respondió a tu publicación',
'favourite' => '{actor_username} ha marcado como favorita tu publicación', 'favourite' => '{actor_username} ha marcado como favorita tu publicación',
'reblog' => '{actor_username} ha compartido tu publicación', 'reblog' => '{actor_username} ha compartido tu publicación',
'follow' => '{actor_username} started following you', 'follow' => '{actor_username} ha empezado a seguirte',
'no_notifications' => 'No hay notificaciones', 'no_notifications' => 'No hay notificaciones',
'mark_all_as_read' => 'Marcar todas como leídas', 'mark_all_as_read' => 'Marcar todas como leídas',
]; ];

View File

@ -108,8 +108,8 @@ return [
'monetization_section_subtitle' => 'monetization_section_subtitle' =>
'Gana dinero gracias a tu audiencia.', 'Gana dinero gracias a tu audiencia.',
'premium' => 'Premium', 'premium' => 'Premium',
'premium_by_default' => 'Episodes must be set as premium by default', 'premium_by_default' => 'Los episodios deben establecerse como premium por defecto',
'premium_by_default_hint' => 'Podcast episodes will be marked as premium by default. You can still choose to set some episodes, trailers or bonuses as public.', 'premium_by_default_hint' => 'Los episodios Podcast se marcarán como premium de forma predeterminada. Todavía puedes elegir establecer algunos episodios, trailers o bonificaciones como públicos.',
'payment_pointer' => 'Puntero de pago para Monetización web', 'payment_pointer' => 'Puntero de pago para Monetización web',
'payment_pointer_hint' => 'payment_pointer_hint' =>
'Aquí es donde usted recibirá dinero gracias a la Monetización Web', 'Aquí es donde usted recibirá dinero gracias a la Monetización Web',

View File

@ -26,8 +26,8 @@ return [
'podcast-analytics-listening-time' => 'Tiempo de escucha', 'podcast-analytics-listening-time' => 'Tiempo de escucha',
'podcast-analytics-time-periods' => 'Periodos de tiempo', 'podcast-analytics-time-periods' => 'Periodos de tiempo',
'premium' => 'Premium', 'premium' => 'Premium',
'subscription-list' => 'All subscriptions', 'subscription-list' => 'Todas las suscripciones',
'subscription-add' => 'Add subscription', 'subscription-add' => 'Añadir suscripción',
'contributors' => 'Colaboradores', 'contributors' => 'Colaboradores',
'contributor-list' => 'Todos los colaboradores', 'contributor-list' => 'Todos los colaboradores',
'contributor-add' => 'Añadir colaborador', 'contributor-add' => 'Añadir colaborador',

View File

@ -35,8 +35,8 @@ return [
'reset_counts_helper' => 'Esta opción recalculará y restablecerá todos los conteos de datos (número de seguidores, publicaciones, comentarios, …).', 'reset_counts_helper' => 'Esta opción recalculará y restablecerá todos los conteos de datos (número de seguidores, publicaciones, comentarios, …).',
'rewrite_media' => 'Reescribir metadatos de medios', 'rewrite_media' => 'Reescribir metadatos de medios',
'rewrite_media_helper' => 'Esta opción eliminará todos los archivos multimedia superfluos y los volverá a crear (imágenes, archivos de audio, transcripciones, capítulos, …)', 'rewrite_media_helper' => 'Esta opción eliminará todos los archivos multimedia superfluos y los volverá a crear (imágenes, archivos de audio, transcripciones, capítulos, …)',
'rename_episodes_files' => 'Rename episode audio files', 'rename_episodes_files' => 'Renombrar archivos de audio del episodio',
'rename_episodes_files_hint' => 'This option will rename all episodes audio files to a random string of characters. Use this if one of your private episodes link was leaked as this will effectively hide it.', 'rename_episodes_files_hint' => 'Esta opción renombrará todos los archivos de audio de episodios a una cadena aleatoria de caracteres. Usa esto si uno de tus episodios privados fue filtrado ya que esto lo ocultará efectivamente.',
'clear_cache' => 'Borrar toda la caché', 'clear_cache' => 'Borrar toda la caché',
'clear_cache_helper' => 'Esta opción eliminará la caché de redis o archivos de escritura/caché.', 'clear_cache_helper' => 'Esta opción eliminará la caché de redis o archivos de escritura/caché.',
'run' => 'Ejecutar tareas de mantenimiento', 'run' => 'Ejecutar tareas de mantenimiento',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'users', 'users' => 'users',
'my-account' => 'my account', 'my-account' => 'my account',
'change-password' => 'change password', 'change-password' => 'change password',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'supprimer', 'delete' => 'supprimer',
'remove' => 'retirer', 'remove' => 'retirer',
'fediverse' => 'fédiverse', 'fediverse' => 'fédiverse',
'block-lists' => 'listes de blocage', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'utilisateurs', 'users' => 'utilisateurs',
'my-account' => 'mon compte', 'my-account' => 'mon compte',
'change-password' => 'changer le mot de passe', 'change-password' => 'changer le mot de passe',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'users', 'users' => 'users',
'my-account' => 'my account', 'my-account' => 'my account',
'change-password' => 'change password', 'change-password' => 'change password',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'eliminar', 'delete' => 'eliminar',
'remove' => 'eliminar', 'remove' => 'eliminar',
'fediverse' => 'fediverso', 'fediverse' => 'fediverso',
'block-lists' => 'listas de bloqueo', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'usuarias', 'users' => 'usuarias',
'my-account' => 'a miña conta', 'my-account' => 'a miña conta',
'change-password' => 'cambiar contrasinal', 'change-password' => 'cambiar contrasinal',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'pengguna', 'users' => 'pengguna',
'my-account' => 'akun saya', 'my-account' => 'akun saya',
'change-password' => 'ubah kata sandi', 'change-password' => 'ubah kata sandi',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'elimina', 'delete' => 'elimina',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverso', 'fediverse' => 'fediverso',
'block-lists' => 'elenco bloccati', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'utenti', 'users' => 'utenti',
'my-account' => 'il mio profilo', 'my-account' => 'il mio profilo',
'change-password' => 'cambia la password', 'change-password' => 'cambia la password',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'users', 'users' => 'users',
'my-account' => 'my account', 'my-account' => 'my account',
'change-password' => 'change password', 'change-password' => 'change password',

View File

@ -14,7 +14,7 @@ return [
->gateway => 'Hoofdpagina', ->gateway => 'Hoofdpagina',
'podcasts' => 'podcasts', 'podcasts' => 'podcasts',
'episodes' => 'afleveringen', 'episodes' => 'afleveringen',
'subscriptions' => 'subscriptions', 'subscriptions' => 'abonnementen',
'contributors' => 'bijdragers', 'contributors' => 'bijdragers',
'pages' => 'paginas', 'pages' => 'paginas',
'settings' => 'instellingen', 'settings' => 'instellingen',
@ -29,9 +29,10 @@ return [
'publish-date-edit' => 'edit publication date', 'publish-date-edit' => 'edit publication date',
'unpublish' => 'publicatie ongedaan maken', 'unpublish' => 'publicatie ongedaan maken',
'delete' => 'verwijder', 'delete' => 'verwijder',
'remove' => 'remove', 'remove' => 'verwijder',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'blokkeerlijst', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'gebruikers', 'users' => 'gebruikers',
'my-account' => 'mijn account', 'my-account' => 'mijn account',
'change-password' => 'wachtwoord wijzigen', 'change-password' => 'wachtwoord wijzigen',

View File

@ -94,12 +94,12 @@ return [
'GG' => 'Guernsey', 'GG' => 'Guernsey',
'GH' => 'Ghana', 'GH' => 'Ghana',
'GI' => 'Gibraltar', 'GI' => 'Gibraltar',
'GL' => 'Greenland', 'GL' => 'Groenland',
'GM' => 'Gambia', 'GM' => 'Gambia',
'GN' => 'Guinea', 'GN' => 'Guinea',
'GP' => 'Guadeloupe', 'GP' => 'Guadeloupe',
'GQ' => 'Equatorial Guinea', 'GQ' => 'Equatorial Guinea',
'GR' => 'Greece', 'GR' => 'Griekenland',
'GS' => 'South Georgia and the South Sandwich Islands', 'GS' => 'South Georgia and the South Sandwich Islands',
'GT' => 'Guatemala', 'GT' => 'Guatemala',
'GU' => 'Guam', 'GU' => 'Guam',
@ -110,7 +110,7 @@ return [
'HN' => 'Honduras', 'HN' => 'Honduras',
'HR' => 'Croatia', 'HR' => 'Croatia',
'HT' => 'Haiti', 'HT' => 'Haiti',
'HU' => 'Hungary', 'HU' => 'Hongarije',
'ID' => 'Indonesia', 'ID' => 'Indonesia',
'IE' => 'Ireland', 'IE' => 'Ireland',
'IL' => 'Israel', 'IL' => 'Israel',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'slett', 'delete' => 'slett',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fødiverset', 'fediverse' => 'fødiverset',
'block-lists' => 'blokkeringslister', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'brukarar', 'users' => 'brukarar',
'my-account' => 'kontoen min', 'my-account' => 'kontoen min',
'change-password' => 'endre passord', 'change-password' => 'endre passord',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'users', 'users' => 'users',
'my-account' => 'my account', 'my-account' => 'my account',
'change-password' => 'change password', 'change-password' => 'change password',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'usuń', 'delete' => 'usuń',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'listy blokowanych', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'użytkownicy', 'users' => 'użytkownicy',
'my-account' => 'moje konto', 'my-account' => 'moje konto',
'change-password' => 'zmień hasło', 'change-password' => 'zmień hasło',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'excluir', 'delete' => 'excluir',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverso', 'fediverse' => 'fediverso',
'block-lists' => 'listas de bloqueio', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'usuários', 'users' => 'usuários',
'my-account' => 'minha conta', 'my-account' => 'minha conta',
'change-password' => 'alterar senha', 'change-password' => 'alterar senha',

View File

@ -31,7 +31,8 @@ return [
'delete' => 'delete', 'delete' => 'delete',
'remove' => 'remove', 'remove' => 'remove',
'fediverse' => 'fediverse', 'fediverse' => 'fediverse',
'block-lists' => 'block lists', 'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'users' => 'users', 'users' => 'users',
'my-account' => 'my account', 'my-account' => 'my account',
'change-password' => 'change password', 'change-password' => 'change password',

View File

@ -0,0 +1,22 @@
<?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' => 'About Castopod',
'host_name' => 'Host name',
'version' => 'Castopod version',
'php_version' => 'PHP version',
'os' => 'Operating System',
'languages' => 'Languages',
'update_database' => 'Update database',
'messages' => [
'databaseUpdateSuccess' => 'Database is up to date!',
],
];

View File

@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'label' => 'breadcrumb',
config('Admin')
->gateway => 'Home',
'podcasts' => 'podcasts',
'episodes' => 'episodes',
'subscriptions' => 'subscriptions',
'contributors' => 'contributors',
'pages' => 'pages',
'settings' => 'settings',
'theme' => 'theme',
'about' => 'about',
'add' => 'add',
'new' => 'new',
'edit' => 'edit',
'persons' => 'persons',
'publish' => 'publish',
'publish-edit' => 'edit publication',
'publish-date-edit' => 'edit publication date',
'unpublish' => 'unpublish',
'delete' => 'delete',
'remove' => 'remove',
'fediverse' => 'fediverse',
'blocked-actors' => 'blocked actors',
'blocked-domains' => 'blocked domains',
'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',
'notifications' => 'notifications',
'suspend' => 'suspend',
];

View File

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'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)',
'total_storage_by_month' => 'Monthly storage (in MB)',
'total_bandwidth_by_month' => 'Monthly used bandwidth (in MB)',
];

View File

@ -0,0 +1,51 @@
<?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}.',
'choose_interact' => 'Choose how to interact',
'view' => 'View',
];

View File

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

View File

@ -0,0 +1,28 @@
<?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 [
'home' => 'Admin dashboard',
'welcome_message' => 'Welcome to the admin area!',
'podcasts' => [
'title' => 'Podcasts',
'not_found' => 'No published podcast',
'last_published' => 'Last published on {lastPublicationDate}',
],
'episodes' => [
'title' => 'Episodes',
'not_found' => 'No published episode',
'last_published' => 'Last published on {lastPublicationDate}',
],
'storage' => [
'title' => 'Storage',
'subtitle' => '{totalUploaded} out of {totalStorage}',
],
];

View File

@ -0,0 +1,213 @@
<?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',
'publish_date_edit' => 'Edit publication date',
'unpublish' => 'Unpublish',
'publish_error' => 'Episode is already published.',
'publish_edit_error' => 'Episode is already published.',
'publish_cancel_error' => 'Episode is already published.',
'publish_date_edit_error' => 'Episode has not been published yet, you cannot edit its publication date.',
'publish_date_edit_future_error' => 'Episode\'s publication date can only be set to a past date! If you would like to reschedule it, unpublish it first.',
'publish_date_edit_success' => 'Episode\'s publication date has been updated successfully!',
'unpublish_error' => 'Episode is not published.',
'delete' => 'Delete',
'go_to_page' => 'Go to page',
'create' => 'Add an episode',
'publication_status' => [
'published' => 'Published',
'with_podcast' => 'Published',
'scheduled' => 'Scheduled',
'not_published' => 'Not published',
],
'with_podcast_hint' => 'To be published at the same time as the podcast',
'list' => [
'search' => [
'placeholder' => 'Search for an episode',
'clear' => 'Clear search',
'submit' => 'Search',
],
'number_of_episodes' => '{numberOfEpisodes, plural,
one {# episode}
other {# episodes}
}',
'episode' => 'Episode',
'visibility' => 'Visibility',
'comments' => 'Comments',
'actions' => 'Actions',
],
'messages' => [
'createSuccess' => 'Episode has been successfully created!',
'editSuccess' => 'Episode has been successfully updated!',
'publishSuccess' => '{publication_status, select,
published {Episode successfully published!}
scheduled {Episode publication successfully scheduled!}
with_podcast {This episode will be published at the same time as the podcast.}
other {This episode is not published.}
}',
'publishCancelSuccess' => 'Episode publication successfully cancelled!',
'unpublishBeforeDeleteTip' => 'You must unpublish the episode before deleting it.',
'scheduleDateError' => 'Schedule date must be set!',
'deletePublishedEpisodeError' => 'Please unpublish the episode before deleting it.',
'deleteSuccess' => 'Episode successfully deleted!',
'deleteError' => 'Failed to delete episode {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
}.',
'deleteFileError' => 'Failed to delete {type, select,
transcript {transcript}
chapters {chapters}
image {cover}
audio {audio}
other {media}
} file {file_path}. You may manually remove it from your disk.',
'sameSlugError' => 'An episode with the chosen slug already exists.',
],
'form' => [
'file_size_error' =>
'Your file size is too big! Max size is {0}. Increase the `memory_limit`, `upload_max_filesize` and `post_max_size` values in your php configuration file then restart your web server to upload your file.',
'audio_file' => 'Audio file',
'audio_file_hint' => 'Choose an .mp3 or .m4a audio file.',
'info_section_title' => 'Episode info',
'cover' => 'Episode cover',
'cover_hint' =>
'If you do not set a cover, the podcast cover will be used instead.',
'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.',
'title' => 'Title',
'title_hint' =>
'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.',
'permalink' => 'Permalink',
'season_number' => 'Season',
'episode_number' => 'Episode',
'type' => [
'label' => 'Type',
'full' => 'Full',
'full_hint' => 'Complete content (the episode)',
'trailer' => 'Trailer',
'trailer_hint' => 'Short, promotional piece of content that represents a preview of the current show',
'bonus' => 'Bonus',
'bonus_hint' => 'Extra content for the show (for example, behind the scenes info or interviews with the cast) or cross-promotional content for another show',
],
'premium_title' => 'Premium',
'premium' => 'Episode must be accessible to premium subscribers only',
'parental_advisory' => [
'label' => 'Parental advisory',
'hint' => 'Does the episode contain explicit content?',
'undefined' => 'undefined',
'clean' => 'Clean',
'explicit' => 'Explicit',
],
'show_notes_section_title' => 'Show notes',
'show_notes_section_subtitle' =>
'Up to 4000 characters, be clear and concise. Show notes help potential listeners in finding the episode.',
'description' => 'Description',
'description_footer' => 'Description footer',
'description_footer_hint' =>
'This text is added at the end of each episode description, it is a good place to input your social links for example.',
'additional_files_section_title' => 'Additional files',
'additional_files_section_subtitle' =>
'These files may be used by other platforms to provide better experience to your audience. See the {podcastNamespaceLink} for more information.',
'location_section_title' => 'Location',
'location_section_subtitle' => 'What place is this episode about?',
'location_name' => 'Location name or address',
'location_name_hint' => 'This can be a real or fictional location',
'transcript' => 'Transcript (subtitles / closed captions)',
'transcript_hint' => 'Only .srt are allowed.',
'transcript_download' => 'Download transcript',
'transcript_file' => 'Transcript file (.srt)',
'transcript_remote_url' => 'Remote url for transcript',
'transcript_file_delete' => 'Delete transcript file',
'chapters' => 'Chapters',
'chapters_hint' => 'File must be in JSON Chapters format.',
'chapters_download' => 'Download chapters',
'chapters_file' => 'Chapters file',
'chapters_remote_url' => 'Remote url for chapters file',
'chapters_file_delete' => 'Delete chapters file',
'advanced_section_title' => 'Advanced Parameters',
'advanced_section_subtitle' =>
'If you need RSS tags that Castopod does not handle, set them here.',
'custom_rss' => 'Custom RSS tags for the episode',
'custom_rss_hint' => 'This will be injected within the ❬item❭ tag.',
'block' => 'Episode should be hidden from public catalogues',
'block_hint' =>
'The episode show or hide status: toggling this on prevents the episode from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)',
'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',
'with_podcast' => 'Publish alongside podcast',
],
'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',
],
'publish_date_edit_form' => [
'new_publication_date' => 'New publication date',
'new_publication_date_hint' => 'Must be set to a past date.',
'submit' => 'Edit publication date',
],
'unpublish_form' => [
'disclaimer' =>
"Unpublishing the episode will delete all the comments and posts associated with it and remove it from the podcast's RSS feed.",
'understand' => 'I understand, I want to unpublish the episode',
'submit' => 'Unpublish',
],
'delete_form' => [
'disclaimer' =>
"Deleting the episode will delete all media files, comments, video clips and soundbites associated with it.",
'understand' => 'I understand, I want to delete the episode',
'submit' => 'Delete',
],
'embed' => [
'title' => 'Embeddable player',
'label' =>
'Pick a theme color, copy the embeddable player to clipboard, then paste it on your website.',
'clipboard_iframe' => 'Copy embeddable player to clipboard',
'clipboard_url' => 'Copy address to clipboard',
'dark' => 'Dark',
'dark-transparent' => 'Dark transparent',
'light' => 'Light',
'light-transparent' => 'Light transparent',
],
];

View File

@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'go_to_page' => 'View episode page',
'dashboard' => 'Episode dashboard',
'episode-view' => 'Home',
'episode-edit' => 'Edit episode',
'episode-persons-manage' => 'Manage persons',
'embed-add' => 'Embeddable player',
'clips' => 'Clips',
'video-clips-list' => 'Video clips',
'video-clips-create' => 'New video clip',
'soundbites-list' => 'Soundbites',
'soundbites-create' => 'New soundbite',
];

View File

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'messages' => [
'actorNotFound' => 'The account could not be found!',
'blockActorSuccess' => '{actor} has been blocked!',
'unblockActorSuccess' => 'Actor has been unblocked!',
'blockDomainSuccess' => '{domain} has been blocked!',
'unblockDomainSuccess' => '{domain} has been unblocked!',
],
'blocked_actors' => 'Blocked accounts',
'blocked_domains' => 'Blocked domains',
'block_lists_form' => [
'handle' => 'Account handle',
'handle_hint' => 'Input @username@domain account.',
'domain' => 'Domain name',
'submit' => 'Block!',
],
'list' => [
'actor' => 'Account',
'domain' => 'Domain name',
'unblock' => 'Unblock',
],
];

View File

@ -0,0 +1,14 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'all_podcasts' => 'All podcasts',
'no_podcast' => 'No podcast found',
];

View File

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

View File

@ -0,0 +1,42 @@
<?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',
'about' => 'About',
'account' => [
'my-account' => 'My account',
'change-password' => 'Change password',
'logout' => 'Logout',
],
];

View File

@ -0,0 +1,19 @@
<?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' => 'Notifications',
'reply' => '{actor_username} replied to your post',
'favourite' => '{actor_username} favourited your post',
'reblog' => '{actor_username} shared your post',
'follow' => '{actor_username} started following you',
'no_notifications' => 'No notifications',
'mark_all_as_read' => 'Mark all as read',
];

View File

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'back_to_home' => 'Back to home',
'page' => 'Page',
'all_pages' => 'All pages',
'create' => 'New page',
'go_to_page' => 'Go to page',
'edit' => 'Edit page',
'delete' => 'Delete page',
'form' => [
'title' => 'Title',
'permalink' => 'Permalink',
'content' => 'Content',
'submit_create' => 'Create page',
'submit_edit' => 'Save',
],
'messages' => [
'createSuccess' => 'The page “{pageTitle}” was created successfully!',
'editSuccess' => 'The page was successfully updated!',
],
];

View File

@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'pageNavigation' => 'Page navigation',
'first' => 'First',
'previous' => 'Previous',
'next' => 'Next',
'last' => 'Last',
'older' => 'Older',
'newer' => 'Newer',
'invalidTemplate' => '{0} is not a valid Pager template.',
'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
];

View File

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

View File

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
/**
* @copyright 2020 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'title' => 'Platforms',
'home_url' => 'Go to {platformName} website',
'submit_url' => 'Submit your podcast on {platformName}',
'visible' => 'Display in podcast homepage?',
'on_embed' => 'Display on embeddable player?',
'remove' => 'Remove {platformName}',
'submit' => 'Save',
'messages' => [
'updateSuccess' => 'Platform links have been successfully updated!',
'removeLinkSuccess' => 'The platform link has been removed.',
'removeLinkError' =>
'The platform link could not be removed. Try again.',
],
'description' => [
'podcasting' => 'The podcast ID on this platform',
'social' => 'The podcast account ID on this platform',
'funding' => 'Call to action message',
],
];

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