From 3fc973416171e37dd807570ea8be63a3693cb635 Mon Sep 17 00:00:00 2001 From: crowdin <project2_bot@noreply.code.castopod.org> Date: Tue, 6 Sep 2022 14:55:46 +0000 Subject: [PATCH] chore: new Crowdin updates --- app/Language/ca/Comment.php | 34 ++ app/Language/ca/Common.php | 30 ++ app/Language/ca/Episode.php | 33 ++ app/Language/ca/Fediverse.php | 37 +++ app/Language/ca/Home.php | 20 ++ app/Language/ca/Page.php | 17 + app/Language/ca/Podcast.php | 53 +++ app/Language/ca/Post.php | 40 +++ app/Language/id/Comment.php | 30 +- app/Language/id/Common.php | 32 +- app/Language/id/Episode.php | 26 +- app/Language/id/Fediverse.php | 28 +- app/Language/id/Home.php | 12 +- app/Language/id/Page.php | 2 +- app/Language/id/Podcast.php | 41 +-- app/Language/id/Post.php | 30 +- app/Language/sk/Podcast.php | 12 +- app/Language/zh-Hans/Comment.php | 34 ++ app/Language/zh-Hans/Common.php | 30 ++ app/Language/zh-Hans/Episode.php | 33 ++ app/Language/zh-Hans/Fediverse.php | 37 +++ app/Language/zh-Hans/Home.php | 20 ++ app/Language/zh-Hans/Page.php | 17 + app/Language/zh-Hans/Podcast.php | 53 +++ app/Language/zh-Hans/Post.php | 40 +++ docs/src/ca/getting-started/docker.md | 144 ++++++++ docs/src/ca/getting-started/install.md | 161 +++++++++ docs/src/ca/getting-started/security.md | 26 ++ docs/src/ca/getting-started/update.md | 94 ++++++ docs/src/ca/index.md | 298 +++++++++++++++++ docs/src/es/getting-started/docker.md | 134 ++++---- docs/src/es/getting-started/install.md | 131 ++++---- docs/src/es/index.md | 255 ++++++++------- docs/src/id/index.md | 75 ++--- docs/src/zh-Hans/getting-started/docker.md | 141 ++++++++ docs/src/zh-Hans/getting-started/install.md | 146 +++++++++ docs/src/zh-Hans/getting-started/security.md | 23 ++ docs/src/zh-Hans/getting-started/update.md | 79 +++++ docs/src/zh-Hans/index.md | 261 +++++++++++++++ modules/Admin/Language/ca/Breadcrumb.php | 49 +++ modules/Admin/Language/ca/Charts.php | 40 +++ modules/Admin/Language/ca/Common.php | 51 +++ modules/Admin/Language/ca/Contributor.php | 41 +++ modules/Admin/Language/ca/Countries.php | 264 +++++++++++++++ modules/Admin/Language/ca/Dashboard.php | 28 ++ modules/Admin/Language/ca/Episode.php | 202 ++++++++++++ .../Admin/Language/ca/EpisodeNavigation.php | 23 ++ modules/Admin/Language/ca/Fediverse.php | 32 ++ modules/Admin/Language/ca/Home.php | 14 + modules/Admin/Language/ca/Install.php | 61 ++++ modules/Admin/Language/ca/MyAccount.php | 18 + modules/Admin/Language/ca/Navigation.php | 41 +++ modules/Admin/Language/ca/Notifications.php | 19 ++ modules/Admin/Language/ca/Page.php | 30 ++ modules/Admin/Language/ca/Pager.php | 21 ++ modules/Admin/Language/ca/Person.php | 65 ++++ modules/Admin/Language/ca/Platforms.php | 30 ++ modules/Admin/Language/ca/Podcast.php | 307 ++++++++++++++++++ modules/Admin/Language/ca/PodcastImport.php | 37 +++ .../Admin/Language/ca/PodcastNavigation.php | 35 ++ modules/Admin/Language/ca/Settings.php | 56 ++++ modules/Admin/Language/ca/Soundbite.php | 31 ++ modules/Admin/Language/ca/User.php | 54 +++ modules/Admin/Language/ca/Validation.php | 18 + modules/Admin/Language/ca/VideoClip.php | 72 ++++ modules/Admin/Language/es/Breadcrumb.php | 2 +- modules/Admin/Language/es/Charts.php | 4 +- modules/Admin/Language/es/Common.php | 4 +- modules/Admin/Language/es/Dashboard.php | 18 +- modules/Admin/Language/es/Episode.php | 48 +-- modules/Admin/Language/es/Notifications.php | 14 +- modules/Admin/Language/es/Person.php | 2 +- modules/Admin/Language/es/Podcast.php | 120 +++---- modules/Admin/Language/es/PodcastImport.php | 2 +- modules/Admin/Language/es/Settings.php | 2 +- modules/Admin/Language/gl/Breadcrumb.php | 6 +- modules/Admin/Language/gl/Countries.php | 6 +- modules/Admin/Language/gl/Episode.php | 78 ++--- modules/Admin/Language/gl/Fediverse.php | 6 +- modules/Admin/Language/gl/MyAccount.php | 8 +- modules/Admin/Language/id/Breadcrumb.php | 8 +- modules/Admin/Language/sk/Breadcrumb.php | 4 +- modules/Admin/Language/sk/Charts.php | 6 +- modules/Admin/Language/sk/Countries.php | 48 +-- modules/Admin/Language/sk/Dashboard.php | 6 +- modules/Admin/Language/sk/Episode.php | 10 +- .../Admin/Language/sk/EpisodeNavigation.php | 8 +- modules/Admin/Language/sk/Person.php | 4 +- modules/Admin/Language/sk/Podcast.php | 6 +- modules/Admin/Language/zh-Hans/Breadcrumb.php | 49 +++ modules/Admin/Language/zh-Hans/Charts.php | 40 +++ modules/Admin/Language/zh-Hans/Common.php | 51 +++ .../Admin/Language/zh-Hans/Contributor.php | 41 +++ modules/Admin/Language/zh-Hans/Countries.php | 264 +++++++++++++++ modules/Admin/Language/zh-Hans/Dashboard.php | 28 ++ modules/Admin/Language/zh-Hans/Episode.php | 202 ++++++++++++ .../Language/zh-Hans/EpisodeNavigation.php | 23 ++ modules/Admin/Language/zh-Hans/Fediverse.php | 32 ++ modules/Admin/Language/zh-Hans/Home.php | 14 + modules/Admin/Language/zh-Hans/Install.php | 61 ++++ modules/Admin/Language/zh-Hans/MyAccount.php | 18 + modules/Admin/Language/zh-Hans/Navigation.php | 41 +++ .../Admin/Language/zh-Hans/Notifications.php | 19 ++ modules/Admin/Language/zh-Hans/Page.php | 30 ++ modules/Admin/Language/zh-Hans/Pager.php | 21 ++ modules/Admin/Language/zh-Hans/Person.php | 65 ++++ modules/Admin/Language/zh-Hans/Platforms.php | 30 ++ modules/Admin/Language/zh-Hans/Podcast.php | 307 ++++++++++++++++++ .../Admin/Language/zh-Hans/PodcastImport.php | 37 +++ .../Language/zh-Hans/PodcastNavigation.php | 35 ++ modules/Admin/Language/zh-Hans/Settings.php | 56 ++++ modules/Admin/Language/zh-Hans/Soundbite.php | 31 ++ modules/Admin/Language/zh-Hans/User.php | 54 +++ modules/Admin/Language/zh-Hans/Validation.php | 18 + modules/Admin/Language/zh-Hans/VideoClip.php | 72 ++++ modules/Install/Language/ca/Install.php | 62 ++++ modules/Install/Language/zh-Hans/Install.php | 62 ++++ 117 files changed, 5919 insertions(+), 612 deletions(-) create mode 100644 app/Language/ca/Comment.php create mode 100644 app/Language/ca/Common.php create mode 100644 app/Language/ca/Episode.php create mode 100644 app/Language/ca/Fediverse.php create mode 100644 app/Language/ca/Home.php create mode 100644 app/Language/ca/Page.php create mode 100644 app/Language/ca/Podcast.php create mode 100644 app/Language/ca/Post.php create mode 100644 app/Language/zh-Hans/Comment.php create mode 100644 app/Language/zh-Hans/Common.php create mode 100644 app/Language/zh-Hans/Episode.php create mode 100644 app/Language/zh-Hans/Fediverse.php create mode 100644 app/Language/zh-Hans/Home.php create mode 100644 app/Language/zh-Hans/Page.php create mode 100644 app/Language/zh-Hans/Podcast.php create mode 100644 app/Language/zh-Hans/Post.php create mode 100644 docs/src/ca/getting-started/docker.md create mode 100644 docs/src/ca/getting-started/install.md create mode 100644 docs/src/ca/getting-started/security.md create mode 100644 docs/src/ca/getting-started/update.md create mode 100644 docs/src/ca/index.md create mode 100644 docs/src/zh-Hans/getting-started/docker.md create mode 100644 docs/src/zh-Hans/getting-started/install.md create mode 100644 docs/src/zh-Hans/getting-started/security.md create mode 100644 docs/src/zh-Hans/getting-started/update.md create mode 100644 docs/src/zh-Hans/index.md create mode 100644 modules/Admin/Language/ca/Breadcrumb.php create mode 100644 modules/Admin/Language/ca/Charts.php create mode 100644 modules/Admin/Language/ca/Common.php create mode 100644 modules/Admin/Language/ca/Contributor.php create mode 100644 modules/Admin/Language/ca/Countries.php create mode 100644 modules/Admin/Language/ca/Dashboard.php create mode 100644 modules/Admin/Language/ca/Episode.php create mode 100644 modules/Admin/Language/ca/EpisodeNavigation.php create mode 100644 modules/Admin/Language/ca/Fediverse.php create mode 100644 modules/Admin/Language/ca/Home.php create mode 100644 modules/Admin/Language/ca/Install.php create mode 100644 modules/Admin/Language/ca/MyAccount.php create mode 100644 modules/Admin/Language/ca/Navigation.php create mode 100644 modules/Admin/Language/ca/Notifications.php create mode 100644 modules/Admin/Language/ca/Page.php create mode 100644 modules/Admin/Language/ca/Pager.php create mode 100644 modules/Admin/Language/ca/Person.php create mode 100644 modules/Admin/Language/ca/Platforms.php create mode 100644 modules/Admin/Language/ca/Podcast.php create mode 100644 modules/Admin/Language/ca/PodcastImport.php create mode 100644 modules/Admin/Language/ca/PodcastNavigation.php create mode 100644 modules/Admin/Language/ca/Settings.php create mode 100644 modules/Admin/Language/ca/Soundbite.php create mode 100644 modules/Admin/Language/ca/User.php create mode 100644 modules/Admin/Language/ca/Validation.php create mode 100644 modules/Admin/Language/ca/VideoClip.php create mode 100644 modules/Admin/Language/zh-Hans/Breadcrumb.php create mode 100644 modules/Admin/Language/zh-Hans/Charts.php create mode 100644 modules/Admin/Language/zh-Hans/Common.php create mode 100644 modules/Admin/Language/zh-Hans/Contributor.php create mode 100644 modules/Admin/Language/zh-Hans/Countries.php create mode 100644 modules/Admin/Language/zh-Hans/Dashboard.php create mode 100644 modules/Admin/Language/zh-Hans/Episode.php create mode 100644 modules/Admin/Language/zh-Hans/EpisodeNavigation.php create mode 100644 modules/Admin/Language/zh-Hans/Fediverse.php create mode 100644 modules/Admin/Language/zh-Hans/Home.php create mode 100644 modules/Admin/Language/zh-Hans/Install.php create mode 100644 modules/Admin/Language/zh-Hans/MyAccount.php create mode 100644 modules/Admin/Language/zh-Hans/Navigation.php create mode 100644 modules/Admin/Language/zh-Hans/Notifications.php create mode 100644 modules/Admin/Language/zh-Hans/Page.php create mode 100644 modules/Admin/Language/zh-Hans/Pager.php create mode 100644 modules/Admin/Language/zh-Hans/Person.php create mode 100644 modules/Admin/Language/zh-Hans/Platforms.php create mode 100644 modules/Admin/Language/zh-Hans/Podcast.php create mode 100644 modules/Admin/Language/zh-Hans/PodcastImport.php create mode 100644 modules/Admin/Language/zh-Hans/PodcastNavigation.php create mode 100644 modules/Admin/Language/zh-Hans/Settings.php create mode 100644 modules/Admin/Language/zh-Hans/Soundbite.php create mode 100644 modules/Admin/Language/zh-Hans/User.php create mode 100644 modules/Admin/Language/zh-Hans/Validation.php create mode 100644 modules/Admin/Language/zh-Hans/VideoClip.php create mode 100644 modules/Install/Language/ca/Install.php create mode 100644 modules/Install/Language/zh-Hans/Install.php diff --git a/app/Language/ca/Comment.php b/app/Language/ca/Comment.php new file mode 100644 index 0000000000..92ffa0c67c --- /dev/null +++ b/app/Language/ca/Comment.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => "Comentari de {actorDisplayName} per {episodeTitle}", + 'back_to_comments' => 'Retornar als comentaris', + 'form' => [ + 'episode_message_placeholder' => 'Escriviu un comentari...', + 'reply_to_placeholder' => 'Respondre a @{actorUsername}', + 'submit' => 'Enviar', + 'submit_reply' => 'Respondre', + ], + 'likes' => '{numberOfLikes, plural, + one {# m\'agrada} + other {# m\'agrada} + }', + 'replies' => '{numberOfReplies, plural, + one {# resposta} + other {# respostes} + }', + 'like' => 'M\'agrada', + 'reply' => 'Respondre', + 'view_replies' => 'Veure respostes ({numberOfReplies})', + 'block_actor' => 'Bloquejar l\'usuari @{actorUsername}', + 'block_domain' => 'Bloquejar el domini @{actorDomain}', + 'delete' => 'Esborrar el comentari', +]; diff --git a/app/Language/ca/Common.php b/app/Language/ca/Common.php new file mode 100644 index 0000000000..5be3e2eb94 --- /dev/null +++ b/app/Language/ca/Common.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'yes' => 'SÃ', + 'no' => 'No', + 'cancel' => 'Cancel·lar', + 'optional' => 'Opcional', + 'close' => 'Tancar', + 'home' => 'Inici', + 'explicit' => 'ExplÃcit', + 'powered_by' => 'Powered by {castopod}', + 'go_back' => 'Tornar enrere', + 'play_episode_button' => [ + 'play' => 'Reproduir', + 'playing' => 'S\'està reproduint', + ], + 'read_more' => 'Més informació', + 'read_less' => 'Menys informació', + 'see_more' => 'Veure més', + 'see_less' => 'Veure menys', + 'legal_notice' => 'AvÃs Legal', +]; diff --git a/app/Language/ca/Episode.php b/app/Language/ca/Episode.php new file mode 100644 index 0000000000..001ea5ac92 --- /dev/null +++ b/app/Language/ca/Episode.php @@ -0,0 +1,33 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'season' => 'Temporada {seasonNumber}', + 'season_abbr' => 'S{seasonNumber}', + 'number' => 'Episodi {episodeNumber}', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => 'Temporada {seasonNumber} episodi {episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', + 'persons' => '{personsCount, plural, + one {# persona} + other {# persones} + }', + 'persons_list' => 'Persones', + 'back_to_episodes' => 'Tornar als episodis de {podcast}', + 'comments' => 'Comentaris', + 'activity' => 'Activitat', + 'description' => 'Descripció de l\'episodi', + 'number_of_comments' => '{numberOfComments, plural, + one {# comentari} + other {# comentaris} + }', + 'all_podcast_episodes' => 'Tots els episodis del podcast', + 'back_to_podcast' => 'Tornar al podcast', +]; diff --git a/app/Language/ca/Fediverse.php b/app/Language/ca/Fediverse.php new file mode 100644 index 0000000000..d5d6dbdfc4 --- /dev/null +++ b/app/Language/ca/Fediverse.php @@ -0,0 +1,37 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'your_handle' => 'El vostre alias', + 'your_handle_hint' => 'Escriviu el vostre @nomusuari@domini que vulgueu emprar per interactuar.', + 'follow' => [ + 'label' => 'Seguir', + 'title' => 'Seguir a {actorDisplayName}', + 'subtitle' => 'Seguireu a:', + 'accountNotFound' => 'No s\'ha trobat el compte.', + 'remoteFollowNotAllowed' => 'Sembla que el servidor del compte no permet seguiments remots...', + 'submit' => 'Procedir a seguir', + ], + 'favourite' => [ + 'title' => "Publicacions favorites de {actorDisplayName}", + 'subtitle' => 'Aneu a marcar com a favorit:', + 'submit' => 'Procedir a marcar com a favorit ', + ], + 'reblog' => [ + 'title' => "Compartir la publicació de {actorDisplayName}", + 'subtitle' => 'Aneu a compartir:', + 'submit' => 'Procedir a compartir', + ], + 'reply' => [ + 'title' => "Respondre a la publicació de {actorDisplayName}", + 'subtitle' => 'Aneu a respondre a:', + 'submit' => 'Procedir a respondre', + ], +]; diff --git a/app/Language/ca/Home.php b/app/Language/ca/Home.php new file mode 100644 index 0000000000..0119560dc5 --- /dev/null +++ b/app/Language/ca/Home.php @@ -0,0 +1,20 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'all_podcasts' => 'Tots els podcasts', + 'sort_by' => 'Ordenar per', + 'sort_options' => [ + 'activity' => 'Activitat recent', + 'created_desc' => 'El més recent primer', + 'created_asc' => 'El més antic primer', + ], + 'no_podcast' => 'No s\'han trobat podcasts', +]; diff --git a/app/Language/ca/Page.php b/app/Language/ca/Page.php new file mode 100644 index 0000000000..7e6b4aa0fb --- /dev/null +++ b/app/Language/ca/Page.php @@ -0,0 +1,17 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'back_to_home' => 'Tornar a l\'inici', + 'map' => [ + 'title' => 'Mapa', + 'description' => 'Descobriu episodis de podcasts a {siteName} que es col·loquen en un mapa! Viatjeu pel mapa i escolteu episodis que parlen de llocs concrets.', + ], +]; diff --git a/app/Language/ca/Podcast.php b/app/Language/ca/Podcast.php new file mode 100644 index 0000000000..0610244159 --- /dev/null +++ b/app/Language/ca/Podcast.php @@ -0,0 +1,53 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'feed' => 'Fil RSS del podcast', + 'season' => 'Temporada {seasonNumber}', + 'list_of_episodes_year' => 'Episodis del {year} ({episodeCount})', + 'list_of_episodes_season' => + 'Episodis de la temporada {seasonNumber} ({episodeCount})', + 'no_episode' => 'No s\'han trobat episodis.', + 'follow' => 'Seguir', + 'followTitle' => 'Seguir a {actorDisplayName} al Fediverse!', + 'followers' => '{numberOfFollowers, plural, + one {# seguidor} + other {# seguidors} + }', + 'posts' => '{numberOfPosts, plural, + one {# publicació} + other {# publicacions} + }', + 'activity' => 'Activitat', + 'episodes' => 'Episodis', + 'episodes_title' => 'Episodis de {podcastTitle}', + 'about' => 'Quant a', + 'stats' => [ + 'title' => 'EstadÃstiques', + 'number_of_seasons' => '{0, plural, + one {# temporada} + other {# temporades} + }', + 'number_of_episodes' => '{0, plural, + one {# episodi} + other {# episodis} + }', + 'first_published_at' => 'El primer episodi va ser publicat el {0, date, medium}', + ], + 'sponsor' => 'Patrocinador', + 'funding_links' => 'Enllaços de finançament per {podcastTitle}', + 'find_on' => 'Trobar {podcastTitle} a', + 'listen_on' => 'Escoltant', + 'persons' => '{personsCount, plural, + one {# persona} + other {# persones} + }', + 'persons_list' => 'Persones', +]; diff --git a/app/Language/ca/Post.php b/app/Language/ca/Post.php new file mode 100644 index 0000000000..2f659f8df7 --- /dev/null +++ b/app/Language/ca/Post.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => "Publicat per {actorDisplayName}", + 'back_to_actor_posts' => 'Tornar a les publicacions de {actor}', + 'actor_shared' => '{actor} ha compartit', + 'reply_to' => 'Respondre a @{actorUsername}', + 'form' => [ + 'message_placeholder' => 'Escriviu un missatge...', + 'episode_message_placeholder' => 'Escriviu un missatge per l\'episodi…', + 'episode_url_placeholder' => 'URL de l\'episodi', + 'reply_to_placeholder' => 'Respondre a @{actorUsername}', + 'submit' => 'Enviar', + 'submit_reply' => 'Respondre', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# favorit} + other {# favorits} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# compartició} + other {# comparticions} + }', + 'replies' => '{numberOfReplies, plural, + one {# resposta} + other {# respostes} + }', + 'expand' => 'Expandir publicació', + 'block_actor' => 'Bloquejar a l\'usuari @{actorUsername}', + 'block_domain' => 'Bloquejar al domini @{actorDomain}', + 'delete' => 'Esborrar publicació', +]; diff --git a/app/Language/id/Comment.php b/app/Language/id/Comment.php index 1dd8f5eadc..74375b0df3 100644 --- a/app/Language/id/Comment.php +++ b/app/Language/id/Comment.php @@ -9,26 +9,24 @@ declare(strict_types=1); */ return [ - 'title' => "{actorDisplayName}'s comment for {episodeTitle}", - 'back_to_comments' => 'Back to comments', + 'title' => "Komentar {actorDisplayName} pada {episodeTitle}", + 'back_to_comments' => 'Kembali ke komentar', 'form' => [ - 'episode_message_placeholder' => 'Write a comment…', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', - 'submit' => 'Send', - 'submit_reply' => 'Reply', + 'episode_message_placeholder' => 'Tulis komentar…', + 'reply_to_placeholder' => 'Membalas @{actorUsername}', + 'submit' => 'Kirim', + 'submit_reply' => 'Balas', ], 'likes' => '{numberOfLikes, plural, - one {# like} - other {# likes} + other {# suka} }', 'replies' => '{numberOfReplies, plural, - one {# reply} - other {# replies} + other {# balasan} }', - 'like' => 'Like', - 'reply' => 'Reply', - 'view_replies' => 'View replies ({numberOfReplies})', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', - 'delete' => 'Delete comment', + 'like' => 'Sukai', + 'reply' => 'Balas', + 'view_replies' => 'Lihat balasan ({numberOfReplies})', + 'block_actor' => 'Blokir pengguna @{actorUsername}', + 'block_domain' => 'Blokir domain @{actorDomain}', + 'delete' => 'Hapus komentar', ]; diff --git a/app/Language/id/Common.php b/app/Language/id/Common.php index 1258afcc19..5781ef5c1e 100644 --- a/app/Language/id/Common.php +++ b/app/Language/id/Common.php @@ -9,22 +9,22 @@ declare(strict_types=1); */ return [ - 'yes' => 'Yes', - 'no' => 'No', - 'cancel' => 'Cancel', - 'optional' => 'Optional', - 'close' => 'Close', - 'home' => 'Home', - 'explicit' => 'Explicit', - 'powered_by' => 'Powered by {castopod}', - 'go_back' => 'Go back', + 'yes' => 'Ya', + 'no' => 'Tidak', + 'cancel' => 'Batal', + 'optional' => 'Opsional', + 'close' => 'Tutup', + 'home' => 'Beranda', + 'explicit' => 'Eksplisit', + 'powered_by' => 'Didukung oleh {castopod}', + 'go_back' => 'Kembali', 'play_episode_button' => [ - 'play' => 'Play', - 'playing' => 'Playing', + 'play' => 'Putar', + 'playing' => 'Sedang Diputar', ], - 'read_more' => 'Read more', - 'read_less' => 'Read less', - 'see_more' => 'See more', - 'see_less' => 'See less', - 'legal_notice' => 'Legal notice', + 'read_more' => 'Baca lebih lanjut', + 'read_less' => 'Baca lebih singkat', + 'see_more' => 'Lihat lebih banyak', + 'see_less' => 'Lihat lebih sedikit', + 'legal_notice' => 'Pemberitahuan hukum', ]; diff --git a/app/Language/id/Episode.php b/app/Language/id/Episode.php index ebe39336fc..c64b5eb8d2 100644 --- a/app/Language/id/Episode.php +++ b/app/Language/id/Episode.php @@ -9,25 +9,23 @@ declare(strict_types=1); */ return [ - 'season' => 'Season {seasonNumber}', + 'season' => 'Musim {seasonNumber}', 'season_abbr' => 'S{seasonNumber}', 'number' => 'Episode {episodeNumber}', - 'number_abbr' => 'Ep. {episodeNumber}', - 'season_episode' => 'Season {seasonNumber} episode {episodeNumber}', + 'number_abbr' => 'Eps. {episodeNumber}', + 'season_episode' => 'Musim {seasonNumber} episode {episodeNumber}', 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', 'persons' => '{personsCount, plural, - one {# person} - other {# persons} + other {# orang} }', - 'persons_list' => 'Persons', - 'back_to_episodes' => 'Back to episodes of {podcast}', - 'comments' => 'Comments', - 'activity' => 'Activity', - 'description' => 'Episode description', + 'persons_list' => 'Orang', + 'back_to_episodes' => 'Kembali ke episode-episode pada {podcast}', + 'comments' => 'Komentar', + 'activity' => 'Aktivitas', + 'description' => 'Keterangan episode', 'number_of_comments' => '{numberOfComments, plural, - one {# comment} - other {# comments} + other {# komentar} }', - 'all_podcast_episodes' => 'All podcast episodes', - 'back_to_podcast' => 'Go back to podcast', + 'all_podcast_episodes' => 'Semua episode siniar', + 'back_to_podcast' => 'Kembali ke siniar', ]; diff --git a/app/Language/id/Fediverse.php b/app/Language/id/Fediverse.php index 32f54c074f..18a4213dd6 100644 --- a/app/Language/id/Fediverse.php +++ b/app/Language/id/Fediverse.php @@ -12,26 +12,26 @@ return [ 'your_handle' => 'Your handle', 'your_handle_hint' => 'Enter the @username@domain you want to act from.', 'follow' => [ - 'label' => 'Follow', - 'title' => 'Follow {actorDisplayName}', - 'subtitle' => 'You are going to follow:', - 'accountNotFound' => 'The account could not be found.', + 'label' => 'Ikuti', + 'title' => 'Ikuti {actorDisplayName}', + 'subtitle' => 'Anda akan mengikuti:', + 'accountNotFound' => 'Akun tidak ditemukan.', 'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…', - 'submit' => 'Proceed to follow', + 'submit' => 'Lanjut mengikuti', ], 'favourite' => [ - 'title' => "Favourite {actorDisplayName}'s post", - 'subtitle' => 'You are going to favourite:', - 'submit' => 'Proceed to favourite', + 'title' => "Favoritkan postingan {actorDisplayName}", + 'subtitle' => 'Anda akan memfavoritkan:', + 'submit' => 'Lanjut memfavoritkan', ], 'reblog' => [ - 'title' => "Share {actorDisplayName}'s post", - 'subtitle' => 'You are going to share:', - 'submit' => 'Proceed to share', + 'title' => "Bagikan postingan {actorDisplayName}", + 'subtitle' => 'Anda akan membagikan:', + 'submit' => 'Lanjut membagikan', ], 'reply' => [ - 'title' => "Reply to {actorDisplayName}'s post", - 'subtitle' => 'You are going to reply to:', - 'submit' => 'Proceed to reply', + 'title' => "Balas postingan {actorDisplayName}", + 'subtitle' => 'Anda akan membalas:', + 'submit' => 'Lanjut membalas', ], ]; diff --git a/app/Language/id/Home.php b/app/Language/id/Home.php index 1518239bd9..21de5f8374 100644 --- a/app/Language/id/Home.php +++ b/app/Language/id/Home.php @@ -9,12 +9,12 @@ declare(strict_types=1); */ return [ - 'all_podcasts' => 'All podcasts', - 'sort_by' => 'Sort by', + 'all_podcasts' => 'Semua siniar', + 'sort_by' => 'Urutkan berdasarkan', 'sort_options' => [ - 'activity' => 'Recent activity', - 'created_desc' => 'Newest first', - 'created_asc' => 'Oldest first', + 'activity' => 'Aktivitas baru-baru ini', + 'created_desc' => 'Terbaru lebih dulu', + 'created_asc' => 'Terlama lebih dulu', ], - 'no_podcast' => 'No podcast found', + 'no_podcast' => 'Tak ada siniar yang ditemukan', ]; diff --git a/app/Language/id/Page.php b/app/Language/id/Page.php index 7cd606694e..794c7e7f33 100644 --- a/app/Language/id/Page.php +++ b/app/Language/id/Page.php @@ -9,7 +9,7 @@ declare(strict_types=1); */ return [ - 'back_to_home' => 'Back to home', + 'back_to_home' => 'Kembali ke beranda', 'map' => [ 'title' => 'Map', 'description' => 'Discover podcast episodes on {siteName} that are placed on a map! Travel through the map and listen to episodes that talk about specific locations.', diff --git a/app/Language/id/Podcast.php b/app/Language/id/Podcast.php index 9b1e749aa1..e8b2723985 100644 --- a/app/Language/id/Podcast.php +++ b/app/Language/id/Podcast.php @@ -10,44 +10,39 @@ declare(strict_types=1); return [ 'feed' => 'RSS Podcast feed', - 'season' => 'Season {seasonNumber}', + 'season' => 'Musim {seasonNumber}', 'list_of_episodes_year' => '{year} episodes ({episodeCount})', 'list_of_episodes_season' => - 'Season {seasonNumber} episodes ({episodeCount})', - 'no_episode' => 'No episode found!', - 'follow' => 'Follow', - 'followTitle' => 'Follow {actorDisplayName} on the fediverse!', + 'Episode-episode pada musim {seasonNumber} ({episodeCount})', + 'no_episode' => 'Tak ditemukan episode!', + 'follow' => 'Ikuti', + 'followTitle' => 'Ikuti {actorDisplayName} di fediverse!', 'followers' => '{numberOfFollowers, plural, - one {# follower} - other {# followers} + other {# pengikut} }', 'posts' => '{numberOfPosts, plural, - one {# post} - other {# posts} + other {# postingan} }', - 'activity' => 'Activity', - 'episodes' => 'Episodes', - 'episodes_title' => 'Episodes of {podcastTitle}', - 'about' => 'About', + 'activity' => 'Aktivitas', + 'episodes' => 'Episode', + 'episodes_title' => 'Episode-episode {podcastTitle}', + 'about' => 'Tentang', 'stats' => [ - 'title' => 'Stats', + 'title' => 'Statistik', 'number_of_seasons' => '{0, plural, - one {# season} - other {# seasons} + other {# musim} }', 'number_of_episodes' => '{0, plural, - one {# episode} - other {# episodes} + other {# episode} }', - 'first_published_at' => 'First episode published on {0, date, medium}', + 'first_published_at' => 'Episode pertama diterbitkan pada {0, date, medium}', ], 'sponsor' => 'Sponsor', 'funding_links' => 'Funding links for {podcastTitle}', - 'find_on' => 'Find {podcastTitle} on', + 'find_on' => 'Cari {podcastTitle} di', 'listen_on' => 'Listen on', 'persons' => '{personsCount, plural, - one {# person} - other {# persons} + other {# orang} }', - 'persons_list' => 'Persons', + 'persons_list' => 'Orang', ]; diff --git a/app/Language/id/Post.php b/app/Language/id/Post.php index 58d1cf8002..6dd5161ff1 100644 --- a/app/Language/id/Post.php +++ b/app/Language/id/Post.php @@ -11,30 +11,28 @@ declare(strict_types=1); return [ 'title' => "{actorDisplayName}'s post", 'back_to_actor_posts' => 'Back to {actor} posts', - 'actor_shared' => '{actor} shared', - 'reply_to' => 'Reply to @{actorUsername}', + 'actor_shared' => '{actor} membagikan', + 'reply_to' => 'Balas @{actorUsername}', 'form' => [ - 'message_placeholder' => 'Write a message…', - 'episode_message_placeholder' => 'Write a message for the episode…', - 'episode_url_placeholder' => 'Episode URL', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', - 'submit' => 'Send', - 'submit_reply' => 'Reply', + 'message_placeholder' => 'Tulis pesan…', + 'episode_message_placeholder' => 'Tulis pesan untuk episode ini…', + 'episode_url_placeholder' => 'URL episode', + 'reply_to_placeholder' => 'Balas @{actorUsername}', + 'submit' => 'Kirim', + 'submit_reply' => 'Balas', ], 'favourites' => '{numberOfFavourites, plural, - one {# favourite} - other {# favourites} + other {# favorit} }', 'reblogs' => '{numberOfReblogs, plural, one {# share} other {# shares} }', 'replies' => '{numberOfReplies, plural, - one {# reply} - other {# replies} + other {# balasan} }', - 'expand' => 'Expand post', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', - 'delete' => 'Delete post', + 'expand' => 'Perluas postingan', + 'block_actor' => 'Blokir pengguna @{actorUsername}', + 'block_domain' => 'Blokir domain @{actorDomain}', + 'delete' => 'Hapus postingan', ]; diff --git a/app/Language/sk/Podcast.php b/app/Language/sk/Podcast.php index bf3b232f7f..aa228d4542 100644 --- a/app/Language/sk/Podcast.php +++ b/app/Language/sk/Podcast.php @@ -30,8 +30,8 @@ return [ other {# prÃspevkov} }', 'activity' => 'Aktivita', - 'episodes' => 'Epizódy', - 'episodes_title' => 'Epizódy {podcastTitle}', + 'episodes' => 'ÄŒasti', + 'episodes_title' => 'ÄŒasti {podcastTitle}', 'about' => 'O', 'stats' => [ 'title' => 'Å tatistiky', @@ -42,10 +42,10 @@ return [ other {# sériÃ} }', 'number_of_episodes' => '{0, plural, - one {# epizóda} - few {# epizódy} - many {# epizód} - other {# epizód} + one {# ÄasÅ¥} + few {# ÄastÃ} + many {# ÄastÃ} + other {# Äasti} }', 'first_published_at' => 'Prvá epizóda publikovaná {0, date, medium}', ], diff --git a/app/Language/zh-Hans/Comment.php b/app/Language/zh-Hans/Comment.php new file mode 100644 index 0000000000..bc009a414d --- /dev/null +++ b/app/Language/zh-Hans/Comment.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => "{actorDisplayName} 在 {episodeTitle} 的评论", + 'back_to_comments' => '返回评论页é¢', + 'form' => [ + 'episode_message_placeholder' => '写点儿评论å§...', + 'reply_to_placeholder' => '回å¤ç»™ @{actorUsername}', + 'submit' => 'å‘é€', + 'submit_reply' => '回å¤', + ], + 'likes' => '{numberOfLikes, plural, + one {# 喜欢} + other {# 喜欢} + }', + 'replies' => '{numberOfReplies, plural, + one {# 回å¤} + other {# 回å¤} + }', + 'like' => '喜欢', + 'reply' => '回å¤', + 'view_replies' => 'æŸ¥çœ‹å›žå¤ ({numberOfReplies})', + 'block_actor' => 'å±è”½ç”¨æˆ· @{actorUsername}', + 'block_domain' => 'å±è”½æ¥è‡ª @{actorDomain} 的内容', + 'delete' => 'åˆ é™¤è¯„è®º', +]; diff --git a/app/Language/zh-Hans/Common.php b/app/Language/zh-Hans/Common.php new file mode 100644 index 0000000000..75373a1c66 --- /dev/null +++ b/app/Language/zh-Hans/Common.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'yes' => '是', + 'no' => 'å¦', + 'cancel' => 'å–消', + 'optional' => 'å¯é€‰', + 'close' => 'å…³é—', + 'home' => '主页', + 'explicit' => 'é™åˆ¶çº§', + 'powered_by' => 'ç”± {castopod} æ供支æŒ', + 'go_back' => '返回', + 'play_episode_button' => [ + 'play' => 'æ’放', + 'playing' => 'æ£åœ¨æ’放', + ], + 'read_more' => '阅读更多', + 'read_less' => '阅读简略', + 'see_more' => '了解更多', + 'see_less' => 'éšè—部分', + 'legal_notice' => '法律声明', +]; diff --git a/app/Language/zh-Hans/Episode.php b/app/Language/zh-Hans/Episode.php new file mode 100644 index 0000000000..12530cc036 --- /dev/null +++ b/app/Language/zh-Hans/Episode.php @@ -0,0 +1,33 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'season' => '第{seasonNumber} å£', + 'season_abbr' => '第{seasonNumber} å£', + 'number' => '第 {episodeNumber} 集', + 'number_abbr' => '第 {episodeNumber} 集', + 'season_episode' => '第 {seasonNumber} å£ç¬¬ {episodeNumber} 集', + 'season_episode_abbr' => '第 {seasonNumber} å£ç¬¬ {episodeNumber} 集', + 'persons' => '{personsCount, plural, + one {# 人} + other {# 人} + }', + 'persons_list' => '人', + 'back_to_episodes' => '回到剧集 {podcast} ä¸', + 'comments' => '评论', + 'activity' => '活动', + 'description' => '剧集æè¿°', + 'number_of_comments' => '{numberOfComments, plural, + one {# 评论} + other {# 评论} + }', + 'all_podcast_episodes' => '所有æ’客剧集', + 'back_to_podcast' => '返回æ’客', +]; diff --git a/app/Language/zh-Hans/Fediverse.php b/app/Language/zh-Hans/Fediverse.php new file mode 100644 index 0000000000..d5e2a92e73 --- /dev/null +++ b/app/Language/zh-Hans/Fediverse.php @@ -0,0 +1,37 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'your_handle' => 'ä½ çš„å¸å·', + 'your_handle_hint' => '输入 @username@domain æ‰§è¡Œä½ æƒ³è¦è¿›è¡Œçš„æ“作。', + 'follow' => [ + 'label' => '关注', + 'title' => '关注 {actorDisplayName}', + 'subtitle' => 'ä½ å°†ä¼šå…³æ³¨ï¼š', + 'accountNotFound' => 'æ— æ³•æ‰¾åˆ°æ¤å¸æˆ·ã€‚', + 'remoteFollowNotAllowed' => '好åƒæ¤å¸æˆ·æœåŠ¡å™¨ä¸å…许远程关注…', + 'submit' => '继ç»å…³æ³¨', + ], + 'favourite' => [ + 'title' => "喜欢 {actorDisplayName} 的帖å", + 'subtitle' => 'ä½ å°†ä¼šå–œæ¬¢ï¼š', + 'submit' => 'å·²æ·»åŠ åˆ°å–œæ¬¢', + ], + 'reblog' => [ + 'title' => "分享 {actorDisplayName} 的帖å", + 'subtitle' => 'ä½ å°†è¦åˆ†äº«ï¼š', + 'submit' => '继ç»åˆ†äº«', + ], + 'reply' => [ + 'title' => "å›žå¤ {actorDisplayName} 的帖å", + 'subtitle' => 'ä½ å°†ä¼šå›žå¤åˆ°ï¼š', + 'submit' => '继ç»å›žå¤', + ], +]; diff --git a/app/Language/zh-Hans/Home.php b/app/Language/zh-Hans/Home.php new file mode 100644 index 0000000000..65cf875482 --- /dev/null +++ b/app/Language/zh-Hans/Home.php @@ -0,0 +1,20 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'all_podcasts' => '全部æ’客', + 'sort_by' => '排åºæ–¹å¼', + 'sort_options' => [ + 'activity' => '近期活动', + 'created_desc' => '按时间顺åºæœ€æ–°çš„优先', + 'created_asc' => '按时间顺åºæœ€æ—§çš„优先', + ], + 'no_podcast' => '没有找到æ’客', +]; diff --git a/app/Language/zh-Hans/Page.php b/app/Language/zh-Hans/Page.php new file mode 100644 index 0000000000..a3a03ba71c --- /dev/null +++ b/app/Language/zh-Hans/Page.php @@ -0,0 +1,17 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'back_to_home' => '返回主页', + 'map' => [ + 'title' => '地图', + 'description' => 'å‘现 {siteName} 上的æ’客剧集ï¼æµè§ˆç›¸å…³ä¿¡æ¯ï¼Œå¹¶æ”¶å¬ç›¸å…³å‰§é›†ã€‚', + ], +]; diff --git a/app/Language/zh-Hans/Podcast.php b/app/Language/zh-Hans/Podcast.php new file mode 100644 index 0000000000..475bc4a977 --- /dev/null +++ b/app/Language/zh-Hans/Podcast.php @@ -0,0 +1,53 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'feed' => 'æ’客订阅æº', + 'season' => '第 {seasonNumber} å£', + 'list_of_episodes_year' => '{year} 剧集 ({episodeCount})', + 'list_of_episodes_season' => + '第 {seasonNumber} å£(第 {episodeCount} 集)', + 'no_episode' => '没有找到剧集ï¼', + 'follow' => '关注', + 'followTitle' => '在è”邦宇宙ä¸å…³æ³¨ {actorDisplayName} ï¼', + 'followers' => '{numberOfFollowers, plural, + one {# 关注者} + other {# 关注者} + }', + 'posts' => '{numberOfPosts, plural, + one {# 帖å} + other {# 帖å} + }}', + 'activity' => '活动', + 'episodes' => '剧集', + 'episodes_title' => '{podcastTitle} 的剧集', + 'about' => '关于', + 'stats' => [ + 'title' => '统计信æ¯', + 'number_of_seasons' => '{0, plural, + one {# å£} + other {# å£} + }', + 'number_of_episodes' => '{0, plural, + one {# 剧集} + other {# 剧集} + }', + 'first_published_at' => '首集å‘布于 {0, date, medium}', + ], + 'sponsor' => '赞助者', + 'funding_links' => '{podcastTitle} 的赞助链接', + 'find_on' => '查找 {podcastTitle} 于', + 'listen_on' => '收å¬', + 'persons' => '{personsCount, plural, + one {# 人} + other {# 人} + }', + 'persons_list' => '人', +]; diff --git a/app/Language/zh-Hans/Post.php b/app/Language/zh-Hans/Post.php new file mode 100644 index 0000000000..23d385cf68 --- /dev/null +++ b/app/Language/zh-Hans/Post.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => "{actorDisplayName} 的帖å", + 'back_to_actor_posts' => '返回 {actor} 的帖å', + 'actor_shared' => '{actor} 已分享', + 'reply_to' => '回å¤ç»™ @{actorUsername}', + 'form' => [ + 'message_placeholder' => '输入消æ¯...', + 'episode_message_placeholder' => '为剧集写一æ¡æ¶ˆæ¯â€¦', + 'episode_url_placeholder' => '剧集网å€', + 'reply_to_placeholder' => '回å¤ç»™ @{actorUsername}', + 'submit' => 'å‘é€', + 'submit_reply' => '回å¤', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# 喜欢} + other {# 喜欢} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# 分享} + other {# 分享} + }', + 'replies' => '{numberOfReplies, plural, + one {# 回å¤} + other {# 回å¤} + }', + 'expand' => '展开帖å', + 'block_actor' => 'å±è”½ç”¨æˆ· @{actorUsername}', + 'block_domain' => 'å±è”½æ¥è‡ª @{actorDomain} 的内容', + 'delete' => 'åˆ é™¤å¸–å', +]; diff --git a/docs/src/ca/getting-started/docker.md b/docs/src/ca/getting-started/docker.md new file mode 100644 index 0000000000..eb31d5d43f --- /dev/null +++ b/docs/src/ca/getting-started/docker.md @@ -0,0 +1,144 @@ +--- +title: Imatges Docker oficials +sidebarDepth: 3 +--- + +# Imatges Docker oficials + +Castopod envia 2 imatges de Docker al Docker Hub durant el seu procés de creació +automatitzada: + +- [** code>castopod/app</code>**](https://hub.docker.com/r/castopod/app): el + paquet incloent Castopod i totes les dependències +- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una + configuració de Nginx per a Castopod + +A més, Castopod requereix una base de dades compatible amb MySQL. Es pot afegir +una base de dades Redis com a gestor de memòria cau. + +## Etiquetes compatibles + +- `develop` [no-estable], darrera versió de la branca de desenvolupament + +// més etiquetes per venir! + +## Exemple d'ús + +1. Instal·leu [docker](https://docs.docker.com/get-docker/) i + [docker-compose](https://docs.docker.com/compose/install/) +2. Creeu un fitxer `docker-compose.yml` amb el següent: + + ```yml + version: "3.7" + + services: + app: + image: castopod/app:develop + container_name: "castopod-app" + volumes: + - castopod-media:/opt/castopod/public/media + environment: + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: canvieu-me + CP_BASEURL: "http://castopod.exemple.com" + CP_ANALYTICS_SALT: canvieu-me + CP_CACHE_HANDLER: redis + CP_REDIS_HOST: redis + networks: + - castopod-app + - castopod-db + restart: unless-stopped + + web-server: + image: castopod/web-server:develop + 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: canvieu-me + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: canvieu-me + restart: unless-stopped + + redis: + image: redis:7.0-alpine + container_name: "castopod-redis" + volumes: + - castopod-cache:/data + networks: + - castopod-app + + volumes: + castopod-media: + castopod-db: + castopod-cache: + + networks: + castopod-app: + castopod-db: + ``` + + Heu d'adaptar algunes variables a les vostres necessitats (per exemple, + `CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` i + `CP_ANALYTICS_SALT`). + +3. Configureu un `reverse proxy` per a TLS (SSL/HTTPS) + + TLS és obligatori perquè ActivityPub funcioni. Aquest feina es pot gestionar + fà cilment amb un `reverse proxy`, per exemple amb + [Caddy](https://caddyserver.com/): + + ``` + #castopod + castopod.exemple.com { + reverse_proxy localhost:8080 + } + ``` + +4. Executeu `docker-compose up -d`, espereu que s'inicialitzi i aneu a + `https://castopod.exemple.com/cp-install` per acabar de configurar Castopod! + +5. Ja esteu a punt, podeu començar a fer podcasts! 🎙ï¸ðŸš€ + +## Variables d'entorn + +- **castopod/app** + + | Nom de la variable | Tipus (`default`) | + | -------------------------- | ---------------------------------- | + | **`CP_BASEURL`** | string (`undefined`) | + | **`CP_MEDIA_BASEURL`** | ?string (`(buit)`) | + | **`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"` o `"redis"`] (`"file"`) | + | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | + | **`CP_REDIS_PASSWORD`** | ?string (`null`) | + | **`CP_REDIS_PORT`** | ?number (`6379`) | + | **`CP_REDIS_DATABASE`** | ?number (`0`) | + +- **castopod/web-server** + + | Nom de la variable | Type (`default`) | + | --------------------- | ----------------- | + | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | diff --git a/docs/src/ca/getting-started/install.md b/docs/src/ca/getting-started/install.md new file mode 100644 index 0000000000..68e2a0cd52 --- /dev/null +++ b/docs/src/ca/getting-started/install.md @@ -0,0 +1,161 @@ +--- +title: Instal·lació +sidebarDepth: 3 +--- + +# Com instal·lar Castopod? + +Castopod va ser pensat per ser fà cil d'instal·lar. Ja sigui utilitzant un +allotjament dedicat o un compartit, podeu instal·lar-lo a la majoria de +servidors web compatibles amb PHP-MySQL. + +::: tip Nota + +Hem publicat imatges oficials de Docker per a Castopod! + +Si preferiu utilitzar Docker, podeu ometre això i anar directament a la +[documentació de Docker](./docker.md) per a Castopod. + +::: + +## Requisits + +- PHP v8.0 o superior +- MySQL versió 5.7 o superior o MariaDB versió 10.2 o superior +- Support d'HTTPS + +### PHP v8.0 o superior + +Es requereix PHP versió 8.0 o superior, amb les extensions següents +instal·lades: + +- [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) amb les llibreries + **JPEG**, **PNG** i **WEBP**. +- [exif](https://www.php.net/manual/en/exif.installation.php) + +A més, assegureu-vos que les extensions següents estiguin habilitades al vostre +PHP: + +- json (activat per defecte; no el desactiveu) +- xml (activat per defecte; no el desactiveu) +- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php) + +### Base de dades compatible amb MySQL + +> Us recomanem que utilitzeu [MariaDB](https://mariadb.org). + +::: warning AvÃs + +Castopod només funciona amb bases de dades compatibles amb MySQL 5.7 o superior. +No funcionarà amb l'anterior MySQL v5.6, per exemple, ja que el seu final de +vida va ser el 5 de febrer de 2021. + +::: + +Necessitareu el nom d'amfitrió del servidor (hostname), el nom de la base de +dades, el nom d'usuari i la contrasenya per completar el procés d'instal·lació. +Si no els teniu, poseu-vos en contacte amb l'administrador del vostre servidor. + +#### Privilegis + +L'usuari ha de tenir almenys aquests privilegis a la base de dades perquè +Castopod funcioni: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, +`SELECT`, `UPDATE`. + +### (Opcional) FFmpeg v4.1.8 o superior per fer videoclips + +Si voleu generar videoclips, cal [FFmpeg](https://www.ffmpeg.org/) versió 4.1.8 +o superior. Cal instal·lar les següents extensions: + +- La llibreria **FreeType 2** per + [gd](https://www.php.net/manual/en/image.installation.php). + +### (Opcional) Altres recomanacions + +- Redis per a un millor rendiment de la memòria cau. +- CDN per a la memòria cau de fitxers està tics i millors rendiments. +- Passarel·la de correu electrònic per a contrasenyes perdudes. + +## Instruccions d'instal·lació + +### Pre-requisits + +0. Obteniu un servidor web amb els [requisits](#requirements) instal·lats +1. Creeu una base de dades MySQL per a Castopod amb un usuari amb privilegis + d'accés i modificació (per a més informació, vegeu + [base de dades compatible MySQL](#mysql-compatible-database)). +2. Activeu HTTPS al vostre domini amb un _certificat SSL_. +3. Baixeu i descomprimiu el darrer [paquet Castopod](https://castopod.org/) al + servidor web si encara no ho heu fet. + - âš ï¸ Establiu l'arrel del document del servidor web a la subcarpeta + `castopod/public/`. +4. Afegiu **tasques cron** al vostre servidor web per a diversos processos en + segon pla (substituïu les rutes d'acord a la vostra configuració de fitxers): + + - Perquè les funcions socials funcionin correctament, aquesta tasca + s'utilitza per transmetre activitats socials als vostres seguidors al + Fediverse: + + ```bash + * * * * * /ruta/al/php /ruta/al/castopod/public/index.php scheduled-activities + ``` + + - Per transmetre els vostres episodis en hubs oberts després de la publicació + mitjançant [WebSub](https://en.wikipedia.org/wiki/WebSub): + + ```bash + * * * * * /ruta/al/php /rutal/al/castopod/public/index.php scheduled-websub-publish + ``` + + - Per crear clips de vÃdeo (consulteu + [requisits de FFmpeg](#ffmpeg-v418-or-higher-for-video-clips)): + + ```bash + * * * * * /ruta/al/php /ruta/al/castopod/public/index.php scheduled-video-clips + ``` + + > Aquestes tasques s'executen **cada minut**. Podeu configurar la freqüència + > segons les vostres necessitats: cada 5, 10 minuts o més. + +### (recomanat) Assistent d'instal·lació + +1. Executeu l'script d'instal·lació de Castopod anant a la pà gina web de + l'assistent d'instal·lació (`https://exemple.com/cp-install`) al vostre + navegador web preferit. +2. Seguiu les instruccions a la vostra pantalla. +3. Comenceu a fer podcasts! + +::: info Nota + +L'script d'instal·lació escriu un fitxer `.env` a l'arrel del paquet. Si no +podeu fer còrrer l'assistent web d'instal·lació, podeu +[crear i actualitzar el fitxer `.env` manualment](#alternative-manual-configuration). + +::: + +## Paquets de la comunitat + +Si no us voleu molestar amb la instal·lació manual de Castopod, podeu utilitzar +un dels paquets creats i mantinguts per la comunitat de codi obert. + +### Instal·lar amb YunoHost + +[YunoHost](https://yunohost.org/) és una distribució basada en Debian GNU/Linux +formada per paquets de programari lliure i de codi obert. Gestiona les +dificultats de l'auto-allotjament per tu. + +<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="Instal·lar Castopod amb 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>Repositori +a Github</a> + +</div> diff --git a/docs/src/ca/getting-started/security.md b/docs/src/ca/getting-started/security.md new file mode 100644 index 0000000000..54caee001e --- /dev/null +++ b/docs/src/ca/getting-started/security.md @@ -0,0 +1,26 @@ +--- +title: Seguretat +--- + +# Detalls de seguretat + +Castopod està fet amb [CodeIgniter4](https://codeigniter.com/), un framework PHP +que fomenta les +[bones prà ctiques de seguretat](https://codeigniter.com/user_guide/concepts/security.html). + +Per maximitzar la seguretat de la vostra instà ncia i evitar qualsevol atac +maliciós, us recomanem que actualitzeu tots els permisos dels fitxers de +Castopod després de la instal·lació o actualitzacions (per evitar qualsevol +error de permÃs previ): + +- el directori `writable/` ha de ser **llegible** i **escrivible**. +- el directori `public/media/` ha de ser **llegible** i **escrivible**. +- qualsevol altre fitxer ha de ser definit com a **només-lectura**. + +Per exemple, si utilitzeu Apache o NGINX amb Ubuntu, podeu fer el següent: + +```bash +sudo chown -R root:root /ruta/cap/a/castopod +sudo chown -R www-data:www-data /ruta/cap/a/castopod/writable +sudo chown -R www-data:www-data /ruta/cap/a/castopod/public/media +``` diff --git a/docs/src/ca/getting-started/update.md b/docs/src/ca/getting-started/update.md new file mode 100644 index 0000000000..cd28237259 --- /dev/null +++ b/docs/src/ca/getting-started/update.md @@ -0,0 +1,94 @@ +--- +title: Actualitzar +sidebarDepth: 3 +--- + +# Com actualitzar Castopod? + +Després d'instal·lar Castopod, és possible que vulgueu actualitzar la vostra +instà ncia a la darrera versió per gaudir de les últimes funcions ✨, correccions +d'errors 🛠i millores de rendiment âš¡. + +## Instruccions d'actualització automà tica + +> Aviat... 👀 + +## Instruccions d'actualització manual + +1. Aneu a la + [pà gina de llançaments](https://code.castopod.org/adaures/castopod/-/releases) + i comproveu si la vostra instà ncia està actualitzada amb la darrera versió de + Castopod + + - [On puc trobar la meva versió de Castopod?](#where-can-i-find-my-castopod-version) + +2. Baixeu l'últim paquet de llançament anomenat `Castopod Package`, podeu triar + entre els fitxers `zip` o `tar.gz` + + - âš ï¸ Assegureu-vos de descarregar el paquet Castopod i **NO** el codi font + +3. Al vostre servidor: + + - Elimina tots els fitxers excepte `.env` i `public/media` + - Copieu els fitxers nous del paquet descarregat al vostre servidor + + ::: info Nota + + És possible que hà giu de restablir els permisos dels fitxers durant el + procés d'instal·lació. Comproveu els [Detalls de seguretat](./security.md). + + ::: + +4. Les diferents versions poden incloure instruccions d'actualització + addicionals (vegeu la + [pà gina de versions](https://code.castopod.org/adaures/castopod/-/releases)). + Normalment són scripts de migració de bases de dades en format `.sql` per + actualitzar l'esquema de la base de dades. + + - 👉 Assegureu-vos que executeu els scripts al vostre panell phpmyadmin o + utilitzeu la lÃnia d'ordres per actualitzar la base de dades juntament amb + els fitxers del paquet. + - [Fa molt de temps que no actualitzo la meva instà ncia... Què hauria de fer?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do) + +5. Si utilitzeu redis, esborreu la memòria cau. +6. ✨ Gaudiu de la vostra nova instà ncia, tot fet i preparat! + +## Preguntes més freqüents (FAQ) + +### On puc trobar la meva versió de Castopod? + +Aneu al vostre panell de control de Castopod, la versió es mostra a la cantonada +inferior esquerra. + +Alternativament, podeu trobar la versió al fitxer +`app > Config > Constants.php`. + +### Fa temps que no actualitzo la meva instà ncia... Què hauria de fer? + +Cap problema. Només heu d'obtenir l'última versió tal com es descriu +anteriorment. Només, quan seguiu les instruccions de la versió en qüestió (4), +realitzeu-les de manera seqüencial, de la més antiga a la més nova. + +> És possible que vulgueu fer una còpia de seguretat de la vostra instà ncia en +> funció del temps que no heu actualitzat Castopod. + +Per exemple, si sou a `v1.0.0-alpha.42` i voleu actualitzar a `v1.0.0-beta.1`: + +0. (molt recomanable) Feu una còpia de seguretat dels vostres fitxers i base de + dades. + +1. Baixeu la darrera versió, sobreescriu els vostres fitxers mantenint `.env` i + `public/media`. + +2. Seguiu les instruccions d'actualització de cada versió seqüencialment (de la + més antiga a la més recent) començant per `v1.0.0-alpha.43`, + `v1.0.0-alpha.44`, `v1.0.0-alpha.45`, ..., `v1.0.0-beta.1`. + +3. ✨ Gaudiu de la vostra nova instà ncia, tot fet i preparat! + +### Hauria de fer una còpia de seguretat abans d'actualitzar? + +T'aconsellem que ho facis, perquè no ho perdis tot si alguna cosa va malament! + +De manera més general, us aconsellem que feu còpies de seguretat periòdiques +dels vostres fitxers i base de dades de Castopod per evitar que ho perdeu tot... diff --git a/docs/src/ca/index.md b/docs/src/ca/index.md new file mode 100644 index 0000000000..b7a2b4ebab --- /dev/null +++ b/docs/src/ca/index.md @@ -0,0 +1,298 @@ +--- +sidebarDepth: 2 +--- + +# Benvinguts 👋 + +[![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars] + +Castopod és una plataforma d'allotjament gratuïta i de codi obert creada per a +podcasters que volen involucrar i interactuar amb el seu públic. + +Castopod és fà cil d'instal·lar i s'ha creat amb +[CodeIgniter4](https://codeigniter.com/), un marc PHP potent amb una empremta +molt petita. + +::: info Estat + +Castopod es troba actualment en **beta**, però ja és bastant estable i +l'utilitzen els podcasters d'arreu del món! + +::: + +<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">Instal·lar<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> + +## CaracterÃstiques + +- 🌱 Gratis i de codi obert (llicència AGPL v3) +- 🔠Centrat en la sobirania de les dades: el vostre contingut, audiència + i estadÃstiques us pertanyen, i només a vosaltres +- 🪄 Funcions de podcasting 2.0: GUID, bloqueigos, transcripcions, + finançament, capÃtols, geo-localització, persones, fragments d'à udio, … +- 💬 Xarxa social integrada: + - 🚀 Castopod forma part de Fediverse, una xarxa social descentralitzada + - â¤ï¸ Creeu publicacions, compartiu-les, afegiu-hi com a preferits i + comenteu episodis +- 📈 EstadÃstiques integrades: + - âš–ï¸ Complint amb GDPR / CCPA / LGPD + - 🪙 Mesura d'audiència segons l'està ndard IABv2 + - 🡠EstadÃstiques locals, sense cap tercer implicat +- 📢 Eines de mà rqueting integrades: + - ✅ Preparada per a SEO (metaetiquetes de grà fics oberts, JSON-LD, …) + - 📱 PWA: instal·lable pels oients com a aplicació autònoma + - 🎨 Colors del tema personalitzables + - 🎬 Genereu videoclips d'episodis preparats per compartir + - 🔉 Genera fragments d'à udio de cada episodi + - â–¶ï¸ Reproductor incrustable, per incrustar els episodis a qualsevol + lloc web +- 💸 Monetització: + - 🔗 Enllaços de finançament + - 📲 Anuncis per escoltar-fent-clic + - 🤠Integració amb value4value i WebMonetization +- 📡 Publiqueu els vostres episodis a tot arreu amb RSS: + - 📱 A tots els directoris i aplicacions: Podcast Index, Apple Podcasts, + Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … + - âš¡ Emeteu els vostres episodis a l'instant amb WebSub +- 📥 Importació de podcasts: moveu el vostre podcast existent a Castopod +- 📤 Traieu el vostre podcast fora de Castopod +- 🔀 Multi-podcast: allotgeu tants programes com vulgueu en un mateix lloc +- 👥 Multi-usuari: afegiu col·laboradors i definiu rols +- 🌎 Suport i18n: traduït a l'anglès, català , espanyol, xinès, francès, + polonès, alemany, portuguès brasiler ... i + [més per venir](https://translate.castopod.org)! + +## Motivació + +L'ecosistema de podcasting ès descentralitzat per naturalesa: podeu crear el +vostre podcast com a fitxer RSS, publicar-lo a la web i compartir-lo a tot arreu +en lÃnia. + +De fet, és un dels únics mitjans que s'han mantingut durant molt de temps +(dècades!). + +A mesura que els usos evolucionen, cada vegada hi ha més gent que s'incorpora +als podcasts: ja siguin els creadors que troben noves maneres de compartir les +seves idees o els oients a la recerca de millors continguts. + +Essent el podcasting cada cop més utilitzat, algunes empreses intenten +canviar-lo cap a un mitjà més controlat i centralitzat, creant plataformes de +publicació sota el seu control. + +Castopod es va crear amb l'objectiu de proporcionar una alternativa oberta i +sostenible per a que allotjeu els vostres podcasts, promovent la +descentralització i aixà garantir que la creativitat dels podcasters pugui +expressar-se. + +Aquest projecte és impulsat per la comunitat de codi obert, i concretament pels +moviments [Fediverse](https://fediverse.party/en/fediverse/) i [Podcasting +2.0](https://podcastindex .org/). + +## Comparació amb altres solucions + +Creiem que una mateixa solució no és necessà riament adequada per a tothom, depèn +molt de les vostres necessitats. Per tant, aquà us mostrem comparacions amb +altres eines per ajudar-vos a determinar si Castopod és l'adequat per a +vosaltres. + +### Castopod vs Wordpress + +Casopod es coneix sovint com "el Wordpress per a podcasts" a causa de les +similituds entre els dos. D'alguna manera això és cert. I, de fet, Castopod es +va inspirar molt en l'ecosistema de Wordpress, veient la facilitat d'adopció per +part de la comunitat i el nombre de llocs web que l'executen. + +Igual que Wordpress, Castopod és gratuït i de codi obert, fet amb PHP amb una +base de dades MySQL i està empaquetat de manera que es pot instal·lar fà cilment +a la majoria del servidors web. + +Wordpress és una manera fantà stica de crear el vostre lloc web i ampliar-lo amb +complements per obtenir el que voleu. És un CMS complet que us ajuda a tenir +qualsevol tipus de lloc web en lÃnia. + +D'altra banda, Castopod està pensat per atendre les necessitats dels podcasters +especÃficament, centrant-se en el podcasting i res més. No necessiteu cap +complement o connector per començar el vostre viatge de podcasting. + +Això permet optimitzar els processos especÃfics del podcasting: des de la +creació dels teus podcasts i la publicació de nous episodis fins a la difusió, +el mà rqueting i l'anà lisi estadÃstica. + +Finalment, depenent de les vostres necessitats, Wordpress i Castopod poden +conviure fins i tot, ja que comparteixen els mateixos requisits! + +### Castopod vs Funkwhale + +Funkwhale és un servidor de música de codi obert, modern i auto-allotjat. Igual +que Castopod, Funkwhale es troba al Fediverse, una xarxa social descentralitzada +que permet la interoperabilitat entre ambdues. + +Funkwhale es va construir inicialment al voltant de la música. I més tard, a +mesura que el projecte anava evolucionant, es va introduir la possibilitat +d'allotjar podcasts. + +A diferència de Funkwhale, Castopod ha estat dissenyat i construït exclusivament +al voltant del podcasting. Això permet una implementació més fà cil de funcions +relacionades amb l'ecosistema del podcasting, com ara les funcions del +podcasting 2.0 (transcripcions, capÃtols, geo-localitzacions, persones, ...). + +Per tant, probablement haurÃeu d'utilitzar Funkwhale si voleu allotjar la vostra +música i utilitzar Castopod si voleu allotjar els vostres podcasts. + +### Castopod vs altres plataformes de podcast + +Hi ha moltes solucions per allotjar els vostres podcasts, algunes de les quals +són realment fantà stiques i [moltes](https://podcastindex.org/apps) s'estan +incorporant al carro Podcasting 2.0. com Castopod! + +Cadascuna d'aquestes solucions difereix entre si, podeu comparar-les amb la +[llista de funcions](#features). + +Dit això, hi ha dues diferències principals amb altres solucions de podcasting: + +- Castopod es pot auto-allotjar i és la única solució que us permet mantenir el + control total sobre el que produïu. A més, com que és de codi obert, fins i + tot podeu personalitzar-lo com vulgueu. + +- Castopod és l'única solució que actualment integra tant una xarxa social + descentralitzada amb ActivityPub com moltes de les funcions de podcasting 2.0, + amb l'esperança de salvar la bretxa entre les dues. + +## Col·laborar + +Us agrada Castopod i voleu ajudar? Fes una ullada a la documentació següent per +començar. + +### Codi de conducta + +Castopod ha adoptat un codi de conducta que esperem que els participants del +projecte compleixin. Si us plau, llegiu el +[manual CODE_OF_CONDUCT](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md) +perquè pugueu entendre quines accions seran o no tolerades. + +### Guia de col·laboració + +Llegiu la nostra [guia de col·laboració](./contributing/guidelines.md) per +conèixer el nostre procés de desenvolupament, com proposar correccions d'errors +i millores, i com construir i prova els teus canvis a Castopod. + +## Col·laboradors ✨ + +Grà cies a aquestes persones meravelloses +([clau emoji](https://allcontributors.org/docs/en/emoji-key)): + +<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> +<!-- prettier-ignore-start --> +<!-- markdownlint-disable --> +<table> + <tr> + <td align="center"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt=""/><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"><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=""/><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"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td> + <td align="center"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Patryk MiÅ›</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><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=""/><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"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt=""/><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"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><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"><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=""/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + </tr> + <tr> + <td align="center"><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=""/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/e18d44b28edd0ada.png?s=100" width="100px;" alt=""/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><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"><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=""/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td> + </tr> +</table> + +<!-- markdownlint-restore --> +<!-- prettier-ignore-end --> + +<!-- ALL-CONTRIBUTORS-LIST:END --> + +Aquest projecte segueix l'especificació +[all-contributors](https://github.com/all-contributors/all-contributors). +Benvingudes les col·laboracions de qualsevol mena! + +## Contacte + +Podeu contactar amb nosaltres per demanar ajuda o fer qualsevol pregunta que +tingueu via: + +- [Discord](https://castopod.org/discord) (per a la interacció directa amb + desenvolupadors i la comunitat) +- [Seguiment d'incidències](https://code.castopod.org/adaures/castopod/-/issues) + (per a sol·licituds de noves funcionalitats i informes d'errors) + +Alternativament, podeu seguir-nos a les plataformes de xarxes socials per rebre +notÃcies sobre Castopod: + +- [podlibre.social](https://podlibre.social/@Castopod) (instà ncia de Mastodon) +- [Twitter](https://twitter.com/castopod) +- [LinkedIn](https://linkedin.com/company/castopod) +- [Facebook](https://www.facebook.com/castopod) + +## Patrocinadors + +El desenvolupament continu de Castopod és possible amb el suport dels seus +patrocinadors. Si voleu ajudar, considereu +[patrocinar el desenvolupament de Castopod](https://opencollective.com/castopod/contribute). + +<div class="flex flex-wrap gap-x-16 gap-y-8"> + <a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="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> + +## Llicència + +[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) + +Copyright © 2020-avui, [Ad Aures](https://adaures.com/). +https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release +https://img.shields.io/github/license/ad-aures/castopod?color=blue +https://img.shields.io/badge/contributions-welcome-brightgreen.svg +https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg +https://img.shields.io/github/stars/ad-aures/castopod?style=social + +[release]: https://code.castopod.org/adaures/castopod/-/releases +[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md +[contributions]: https://code.castopod.org/adaures/castopod/-/issues +[semantic-release]: https://github.com/semantic-release/semantic-release +[discord]: https://castopod.org/discord +[stars]: https://github.com/ad-aures/castopod/stargazers +[crowdin]: https://translate.castopod.org/project/castopod diff --git a/docs/src/es/getting-started/docker.md b/docs/src/es/getting-started/docker.md index 5c245a115e..f1e75bcc33 100644 --- a/docs/src/es/getting-started/docker.md +++ b/docs/src/es/getting-started/docker.md @@ -8,19 +8,19 @@ sidebarDepth: 3 Castopod lanza 2 imágenes Docker al Docker Hub durante su proceso de construcción automatizada: -- [**`castopod/aplicación`**](https://hub.docker.com/r/castopod/app): el paquete - de aplicación -- [**`castopod/servidor-web`**](https://hub.docker.com/r/castopod/web-server): - una configuración Nginx para Castopod +- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el paquete + completo de Castopod con todas las dependencias. +- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una + configuración Nginx para Castopod -Adicionalmente, Castopod requiere una base de datos compatible con MySQL. Una -base de datos Redis puede ser añadida como gestor de caché. +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é. ## Etiquetas admitidas -- `desarrollo` [unstable], última rama de desarrollo construida +- `develop` [unstable], última rama de desarrollo construida -// más etiquetas por llegar! +// más etiquetas por venir! ## Ejemplo de uso @@ -29,116 +29,116 @@ base de datos Redis puede ser añadida como gestor de caché. 2. Crear un archivo `docker-compose.yml` con lo siguiente: ```yml - versión: "3.7" + version: "3.7" - servicios: - applicación: - imagen: castopod/app:develop - nombre_contenedor: "castopod-app" - volúmenes: + services: + app: + image: castopod/app:develop + container_name: "castopod-app" + volumes: - castopod-media:/opt/castopod/public/media - ambiente: + environment: MYSQL_DATABASE: castopod MYSQL_USER: castopod - MYSQL_PASSWORD: cámbiame + MYSQL_PASSWORD: changeme CP_BASEURL: "http://castopod.example.com" - CP_ANALYTICS_SALT: cámbiame + CP_ANALYTICS_SALT: changeme CP_CACHE_HANDLER: redis CP_REDIS_HOST: redis - redes: + networks: - castopod-app - castopod-db - reiniciar: unless-stopped + restart: unless-stopped - servidor-web: - imagen: castopod/web-server:develop - nombre_contenedor: "castopod-web-server" - volúmenes: + web-server: + image: castopod/web-server:develop + container_name: "castopod-web-server" + volumes: - castopod-media:/var/www/html/media - redes: + networks: - castopod-app - puertos: + ports: - 8080:80 - reiniciar: unless-stopped + restart: unless-stopped mariadb: - imagen: mariadb:10.5 - nombre_contenedor: "castopod-mariadb" - redes: + image: mariadb:10.5 + container_name: "castopod-mariadb" + networks: - castopod-db - volúmenes: + volumes: - castopod-db:/var/lib/mysql - ambiente: - MYSQL_ROOT_PASSWORD: cámbiame + environment: + MYSQL_ROOT_PASSWORD: changeme MYSQL_DATABASE: castopod MYSQL_USER: castopod - MYSQL_PASSWORD: cámbiame - reiniciar: unless-stopped + MYSQL_PASSWORD: changeme + restart: unless-stopped redis: - imagen: redis:7.0-alpine - nombre_contenedor: "castopod-redis" - volúmenes: + image: redis:7.0-alpine + container_name: "castopod-redis" + volumes: - castopod-cache:/data - redes: + networks: - castopod-app - volúmenes: + volumes: castopod-media: castopod-db: castopod-cache: - redes: + networks: castopod-app: castopod-db: ``` Debes adaptar algunas variables a tus necesidades (ej. `CP_BASEURL`, - `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`). + `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` y `CP_ANALYTICS_SALT`). -3. Configura un proxy inverso para TLS (SSL/HTTPS) +3. Configura un servidor proxy inverso para TLS (SSL/HTTPS). - TLS es obligatorio para que ActivityPub funcione. Este trabajo puede ser + TLS es imprescindible para que ActivityPub funcione. Este trabajo puede ser fácilmente manejado por un proxy inverso, por ejemplo con [Caddy](https://caddyserver.com/): ``` #castopod - castopod.example.com { + castopod.mi_dominio.com { reverse_proxy localhost:8080 } ``` 4. Ejecuta `docker-compose -d`, espera a que se inicie y ve a - `https://castopod.example.com/cp-install` para terminar de configurar + `https://castopod.mi_dominio.com/cp-install` para terminar de configurar Castopod! -5. Todo listo, empieza a podcastear! 🎙ï¸ðŸš€ +5. Todo listo, empieza a hacer podcasting! 🎙ï¸ðŸš€ -## Variables del Entorno +## Variables de Entorno - **castopod/app** - | Nombre de la Variable | Escribe (`predeterminado`) | - | ----------------------------- | ----------------------------------- | - | **`CP_URLBASE`** | string (`indefinido`) | - | **`CP_MEDIA_URLBASE`** | ?string (`(vacÃo)`) | - | **`CP_PUERTA_ADMINISTRADOR`** | ?string (`"cp-admin"`) | - | **`CP_AUTH_PUERTA`** | ?string (`"cp-auth"`) | - | **`CP_ANALÃTICAS_SALT`** | string (`indefinido`) | - | **`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`) | + | Nombre de la Variable | Tipo (`predeterminado`) | + | -------------------------- | ---------------------------------- | + | **`CP_URLBASE`** | string (`undefined`) | + | **`CP_MEDIA_URLBASE`** | ?string (`(vacÃo)`) | + | **`CP_ADMIN_GATEWAY`** | ?string (`"cp-admin"`) | + | **`CP_AUTH_GATEWAY`** | ?string (`"cp-auth"`) | + | **`CP_ANALYTICS_SALT`** | string (`indefinido`) | + | **`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"` o `"redis"`] (`"file"`) | + | **`CP_REDIS_HOST`** | ?string (`"localhost"`) | + | **`CP_REDIS_PASSWORD`** | ?string (`null`) | + | **`CP_REDIS_PORT`** | ?number (`6379`) | + | **`CP_REDIS_DATABASE`** | ?number (`0`) | - **castopod/web-server** - | Variable name | Type (`default`) | - | --------------------- | ----------------- | - | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | + | Nombre de la variable | Tipo (`predeterminado`) | + | --------------------- | ----------------------- | + | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | diff --git a/docs/src/es/getting-started/install.md b/docs/src/es/getting-started/install.md index 7c2b5cee24..0cbcccb2ed 100644 --- a/docs/src/es/getting-started/install.md +++ b/docs/src/es/getting-started/install.md @@ -9,16 +9,16 @@ Castopod está pensado para ser fácil de instalar. Ya sea usando un alojamiento dedicado o compartido, puedes instalarlo en la mayorÃa de servidores web compatibles con PHP-MySQL. -::: tip Note +::: tip Nota -We've released official Docker images for Castopod! +¡Hemos publicado imágenes oficiales de Docker para Castopod! -If you prefer using Docker, you may skip this and go straight to the -[docker documentation](./docker.md) for Castopod. +Si prefieres usar Docker, puedes saltarte esto e ir directamente a la +[documentación sobre docker](./docker.md) para Castopod. ::: -## Requerimientos +## Requisitos - PHP v8.0 o superior - MySQL versión 5.7 o superior o MariaDB versión 10.2 o superior @@ -26,7 +26,8 @@ If you prefer using Docker, you may skip this and go straight to the ### PHP v8.0 o superior -PHP version 8.0 or higher is required, with the following extensions installed: +Se requiere PHP versión 8.0 o superior con las siguientes extensiones +instaladas: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) @@ -35,7 +36,7 @@ PHP version 8.0 or higher is required, with the following extensions installed: **JPEG**, **PNG** y **WEBP**. - [exif](https://www.php.net/manual/en/exif.installation.php) -Additionally, make sure that the following extensions are enabled in your PHP: +Además, asegúrate de que las siguientes extensiones están habilitadas en tu PHP: - json (habilitada por defecto - no la desactives) - xml (habilitada por defecto - no la desactives) @@ -43,29 +44,31 @@ Additionally, make sure that the following extensions are enabled in your PHP: ### Base de datos compatible con MySQL -> Recomendamos usar [MariaDB](https://mariadb.org). +> Se recomienda usar [MariaDB](https://mariadb.org). -::: warning Warning +::: warning Alerta -Castopod only works with supported MySQL 5.7 or higher compatible databases. It -will break with the previous MySQL v5.6 for example as its end of life was on -February 5, 2021. +Castopod solo funciona con base de datos compatibles con MySQL 5.7 o superior. +No funcionará por ejemplo con la version previa MySQL v5.6, ya que su vida útil +terminó el 5 de febrero de 2021. ::: -You will need the server hostname, database name, username and password to -complete the installation process. If you do not have these, please contact your -server administrator. +Necesitarás la dirección/nombre del servidor (hostname), el nombre de la base de +datos, el usuario y la contraseña para completar el proceso de instalación. Si +no cuentas con esta información, contacta con el administrador de tu servidor. #### Privilegios -User must have at least these privileges on the database for Castopod to work: -`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`. +El usuario de la base de datos debe tener al menos estos privilegios sobre la +base de datos para que Castopod funcione: `CREATE`, `ALTER`, `DELETE`, +`EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`. -### (Opcional) FFmpeg v4.1.8 o superior para clips de video +### (Opcional) FFmpeg v4.1.8 o superior para poder generar clips de vÃdeo (recortes de vÃdeo) -[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: +Es necesario tener instalado [FFmpeg](https://www.ffmpeg.org/) versión 4.1.8 o +superior si desea generar recorte de vÃdeos. Se debe instalar las siguientes +extensiones: - LibrerÃa **FreeType 2** para [gd](https://www.php.net/manual/en/image.installation.php). @@ -74,85 +77,85 @@ want to generate Video Clips. The following extensions must be installed: - Redis para mejores rendimientos de caché. - CDN para almacenamiento en caché de archivos estáticos y mejores rendimientos. -- puerta de enlace de email para pérdidas de contraseña. +- Pasarela de correo para recuperación de contraseñas olvidadas. ## Instrucciones de instalación -### Prerequisitos +### Pre-requisitos -0. Consigue un Servidor Web con [requerimientos](#requirements) instalados +0. Consigue un servidor web que cuente con todos los [requisitos](#requirements) + recomendados. 1. Crea una base de datos MySQL para Castopod con un usuario que tenga acceso y privilegios de modificación (para más información, ver - [MySQL base de datos compatible](#mysql-compatible-database)). -2. Activa HTTPS en tu domino con un _certificado SSL_. -3. Descarga y descomprime el último [paquete Castopod](https://castopod.org/) en - el servidor de la web si aún no lo has hecho. - - âš ï¸ Establece la raiz del documento del servidor web en la subcarpeta - `pública/` en la carpeta `castopod`. -4. Añade **cron tasks** en tu servidor web para varios procesos en segundo plano - (reemplaza las rutas accorde con): - - - Para que las caracterÃsticas sociales funcionen correctamente, esta tarea - se utiliza para transmitir las actividades sociales a tus seguidores en el - Fediverso: + [base de datos compatible con MySQL](#mysql-compatible-database)). +2. Activa HTTPS en tu dominio web mediante un _certificado SSL_. +3. Descarga y descomprime en tu servidor la última versión de + [Castopod](https://castopod.org/), si aún no lo has hecho. + - âš ï¸ Edita la configuración de tu servidor para que el "document root" sea la + subcarpeta `castopod/public/`. +4. Añade tareas en el **cron** de tu servidor web para hacer funcionar varios + procesos de Castopod en segundo plano (reemplaza las rutas de acuerdo a la + estructura de directorios de tu servidor): + + - Esta tarea se utiliza para transmitir las actividades sociales a tus + seguidores en el Fediverso: ```bash - * * * * * /path/to/php /path/to/castopod/public/index.php actividades programadas + * * * * * /ruta/al/php /ruta/a/castopod/public/index.php scheduled-activities ``` - - Para que tus episodios sean transmitidos en hubs abiertos sobre - publicaciones usando [WebSub](https://en.wikipedia.org/wiki/WebSub): + - Para que tus episodios sean transmitidos a los hubs abiertos que usan el + nuevo protocolo [WebSub](https://en.wikipedia.org/wiki/WebSub) (2018): ```bash - * * * * * /usr/local/bin/php /castopod/public/index.php publicaciones-websub-programadas + * * * * * /ruta/al/php /castopod/public/index.php scheduled-websub-publish ``` - - Para crear Clips de video (ver - [requerimientos FFmpeg ](#ffmpeg-v418-or-higher-for-video-clips)): + - Para generar Recortes de video (ver + [requisitos FFmpeg ](#ffmpeg-v418-or-higher-for-video-clips)): ```bash - * * * * * /path/to/php /path/to/castopod/public/index.php clips-devideo-programados + * * * * * /ruta/al/php /path/to/castopod/public/index.php scheduled-video-clips ``` - > Estas tareas se ejecutan **cada minuto**. Debes establecer la frecuencia - > dependiendo de tus necesidades: cada 5, 10 minutos o más. + > Estas tareas asà definidas se ejecutarán **cada minuto**. Pero puedes + > definir una frecuencia más acorde a tus necesidades: cada 5, 10 minutos o + > más. Ejemplo: si reemplazas el último asterisco por \*/30 se ejecutará cada + > 30 minutos. + > ([más ejemplos](https://blog.carreralinux.com.ar/2016/09/ejemplos-de-cron-tareas-linux/)) -### (recomendado) Instalar Wizard +### (recomendado) Asistente web de instalación -1. Ejecuta el script de instalación de Castopod yendo a la página de instalación - de wizard (`https://your_domain_name.com/cp-install`) en tu navegador web - preferido. -2. Sigue las instrucciones de la pantalla. -3. ¡Empieza a crear podcasting! +1. Ejecuta el script de instalación de Castopod visitando en tu navegador web + esta dirección: `https://tu_nombre_de_dominio.com/cp-install` +2. Sigue las instrucciones en pantalla. +3. ¡Empieza a hacer podcasting! -::: info Note +::: info Nota -The install script writes a `.env` file in the package root. If you cannot go -through the install wizard, you can -[create and update the `.env` file manually](#alternative-manual-configuration). +El script de instalación crea un archivo `.env` en la raÃz de castopod. Si no +puedes usar el asistente web de instalación, puedes +[crear y configurar manualmente el archivo `.env`](#alternative-manual-configuration). ::: ## Paquetes de la comunidad -If you don't want to bother with installing Castopod manually, you may use one -of the packages created and maintained by the open-source community. +Si no quieres molestarte en instalar Castopod manualmente, puedes utilizar uno +de los paquetes creados y mantenidos por la comunidad de código abierto. ### Instalar con YunoHost -[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux -made up of free and open-source software packages. It manages the hardships of -self-hosting for you. +[YunoHost](https://yunohost.org/) es una distribución GNU/Linux basada en Debian +compuesta por paquetes de software libre y de código abierto. Te ayuda a +gestionar las partes difÃciles de autoalojamiento. <div class="flex flex-wrap items-center gap-4"> <a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer"> - <img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Instalar Castopod con YunoHost" class="align-middle" /> + <img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Instalar Castopod con YunoHost." class="align-middle" /> </a> -<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg - 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> +<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"> </div> diff --git a/docs/src/es/index.md b/docs/src/es/index.md index 3c416619a4..10a386e527 100644 --- a/docs/src/es/index.md +++ b/docs/src/es/index.md @@ -2,180 +2,191 @@ sidebarDepth: 2 --- -# Bienvenido 👋 +# Bienvenid@ 👋 [![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars] -Castopod es una plataforma de alojamiento libre & de código abierto hecha para -podcasters que quieren comprometerse e interactuar con su audiencia. +Castopod es una plataforma gratuita y de código abierto para hospedar podcasts +hecha para podcasters que quieren involucrar e interactuar más con su audiencia. -Castopod es fácil de instalar y se construyó sobre -[CodeIgniter4](https://codeigniter.com/), un potente framework PHP con un muy -pequeña huella. +Castopod es fácil de instalar y se ha desarrollado sobre +[CodeIgniter4](https://codeigniter.com/), un potente y muy ligero framework PHP. -::: Estado de información +::: info Estado del desarrollo -Castopod está actualmente en **beta** pero ya es bastante estable y es utilizado -por podcasters alrededor de el mundo! +Castopod actualmente está en **beta** pero ya es bastante estable y está sinedo +utilizado por podcasters alrededor del mundo. ::: <div class="flex items-center"> - <a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Instalar<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a> + <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">Instalación<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> ## CaracterÃsticas -- 🌱 Gratis & de código abierto (AGPL v3 Licencia) -- 🔠Centrado en la soberanÃa de los datos: su contenido, audiencia, y - analÃticas le pertenecen a usted, y solo a usted -- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding, - chapters, location, persons, soundbites, … -- :speech \_balloon: Red social integrada: +- 🌱 Gratis & de código abierto (licencia AGPL v3). +- 🔠Centrado en la soberanÃa de los datos: tu contenido, tu audiencia, y + tus estadÃsticas te pertenecen a ti y solo a ti. +- 🪄 Funciones de Podcasting 2.0: GUID (interfaz gráfica de usuario), + protección y bloqueo del podcast, transcripciones, monetización, episodios, + geo-localización, personas, fragmentos de audio, … +- 💬 Integración con redes sociales: - 🚀 Castopod es parte del Fediverso, una red social descentralizada - - â¤ï¸ Crear mensajes, compartir, favoritos y comentarios en episodios -- 📈 Análisis integrados: + - â¤ï¸ Se puede crear mensajes, compartir, agregar a favoritos y comentar + en episodios +- 📈 Análisis estadÃsticos integrados: - âš–ï¸ Compatible con GDPR / CCPA / LGPD - - Medida estándar de audiencia IABv2 - - 🡠EstadÃsticas sin terceros involucrados + - 🪙 Medida de audiencia con el estándar IABv2 + - 🡠EstadÃsticas sin terceras partes involucradas - 📢 Herramientas de marketing incorporadas: - - ✅ SEO listo (meta-etiquetas de open-graph, JSON-LD, …) - - 📱 PWA: instalar como una aplicación independiente - - 🎨 Colores del tema personalizables - - 🎬 Genera videoclips listos para compartir a partir de episodios - - 🔉 Genera fragmentos de sonido - - â–¶ï¸ Reproductor incrustable, inserta tus episodios en cualquier sitio - web + - ✅ Listo para SEO (meta-etiquetas de open-graph, JSON-LD, …) + - 📱 PWA: instalable como una aplicación independiente + - 🎨 Personalizar los colores del tema + - 🎬 Generar recortes de vÃdeo listos para compartir, a partir de tus + episodios + - 🔉 Generar fragmentos de audio (Soundbites) para la promoción de tus + episodios. + - â–¶ï¸ Reproductor incrustable, con el que insertar tus episodios en + cualquier sitio web! - 💸 Monetización: - 🔗 Enlaces de financiación - - 📲 anuncios de click para escuchar - - 🤠valor por valor/ Monetización web + - 📲 Anuncios publicitarios del tipo click-para-escuchar + - 🤠value4value / WebMonetization (criptomonedas para creadores de + contenido). - 📡 Publica tus episodios en todas partes con RSS: - 📱 En todos los directorios y aplicaciones: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … - - âš¡ Emite tus episodios al instante con WebSub -- 📥 Importación de Podcast: mueve tu podcast existente a Castopod -- 📤 Mueve tu podcast fuera de Castopod -- 🔀 Multi-podcast: alojar tantos podcasts como quieras -- 👥 Multi-usuario: añadir colaboradores y establecer roles -- 🌎 i18n support: translated in English, French, Polish, German, - Brazilian Portuguese & Spanish… with - [more to come](https://translate.castopod.org)! + - âš¡ Emite tus episodios al instante con WebSub. +- 📥 Importación de podcasts: mueve tu podcast existente en otro servicio + a tu servidor Castopod. +- 📤 Mueve tu podcast fuera de Castopod. +- 🔀 Multi-podcast: aloja tantos podcasts como quieras en una misma + instancia/panel de CASTOPOD. +- 👥 Multi-usuario: añade colaboradores y define roles. +- 🌎 Soporte multilingüe i18n: traducido al Inglés, Francés, Polaco, + Alemán, Portugués brasileño, Español, Noruego, … ¡y + [más por venir](https://translate.castopod.org)! ## Motivación -El ecosistema de podcasting está descentralizado por naturaleza: puedes crear tu +El ecosistema de podcasting es descentralizado por naturaleza: puedes crear tu podcast como un archivo RSS, publicarlo en la web y compartirlo en todas partes. De hecho, es uno de los únicos medios de comunicación que se han mantenido asà durante mucho tiempo. -A medida que los usos evolucionan, más y más personas se involucran en los -podcasts: ya sea que son los creadores que encuentran nuevas formas de compartir -sus ideas, o los oyentes en busca para un mejor contenido. +A medida que los usos evolucionan, más y más personas se introducen en el mundo +del podcast: ya sea que sean creadores que buscando nuevas formas de compartir +sus ideas, u oyentes en busca de mejores contenidos. -Con el uso más amplio del podcast, algunas empresas están intentando desplazarlo -hacia un medio más controlado y centralizado. +A medida que aumenta el uso del podcast, algunas empresas están tratando de +convertirlo en un medio más controlado y centralizado. -Castopod fue creado en un esfuerzo por proporcionar una alternativa abierta y -sostenible. para alojar sus podcasts, promover la descentralización para -garantizar que los podcasters y su creatividad pueda expresarse. +Castopod fue creado en un esfuerzo por aportar una alternativa abierta y +sostenible para alojar tus podcasts, promoviendo la descentralización y asà +garantizar que los podcasters y su creatividad pueda expresarse sin +restricciones. -Este proyecto es promovido por la comunidad de código abierto, y especÃficamente -por los movimientos [Fediverso](https://fediverse.party/en/fediverse/) y +Este proyecto goza del apoyo de la comunidad de código abierto, y +especÃficamente de los movimientos del +[Fediverso](https://fediverse.party/en/fediverse/) y el [Podcasting 2.0](https://podcastindex.org/). ## Comparación con otras soluciones -Creemos que una solución no es necesariamente adecuada para todos, ya que -depende de tus necesidades. Por lo tanto, aquà hay comparaciones con otras -herramientas para ayudarte a medir si Castopod es el adecuado para ti. +Creemos que una misma solución no es necesariamente adecuada para todos, ya que +depende de las necesidades de cada quien. Por lo tanto, vamos a comparar +Castopod con otras herramientas para ayudarte a medir si es el más adecuado para +ti. -### Castopod contra Wordpress +### Castopod vs. Wordpress -Castopod se denomina a menudo "el Wordpress para podcasts" debido a las -similitudes entre ambos. En cierto modo esto es cierto. Y en realidad, Castopod -se inspiró en gran medida en el ecosistema de Wordpress, viendo la facilidad de -adopción de la comunidad y el número de sitios web que funcionan ella. +Castopod a menudo lo llaman "el Wordpress para podcasts" debido a las +similitudes entre ambos. En cierto modo es cierto. Y es que en realidad, +Castopod se inspiró en gran medida en el ecosistema de Wordpress, viendo la +facilidad de adopción de la comunidad y el número de sitios web que funcionan +con WP. -Al igual que Wordpress, Castopod es libre & de código abierto, construido usando -PHP con una base de datos MySQL y está empaquetado de una manera que puede -instalar fácilmente en la mayorÃa de servidores web. +Al igual que Wordpress, Castopod es software libre, gratuito y de código +abierto, construido con PHP y una base de datos MySQL, y empaquetado de una +manera que puede instalar fácilmente en la mayorÃa de los servidores web. -Wordpress ofrece una gran manera de crear su sitio web y extenderlo con plugins -para obtener lo que quiere. Es un CMS completo que lo ayuda a obtener cualquier -tipo de sitio web en lÃnea. +Wordpress ofrece una buena manera de crear tu sitio web y extenderlo con plugins +para obtener lo que quieres. Es un CMS completo que te ayuda a tener en lÃnea +cualquier tipo de sitio web. -Por otro lado, Castopod está pensado para abordar las necesidades de los -podcasters especÃficamente, centrándose en el podcasting y nada más. No -necesitas ningún plugin para empezar con tu podcasting journey. +Por otro lado, Castopod está pensado para atender especÃficamente las +necesidades de los podcasters, centrándose en el podcasting y nada más. No +necesitas ningún plugin para empezar con tu viaje por el mundo del podcast. Esto permite optimizar los procesos especÃficos del podcasting: desde la creación de tus podcasts y la publicación de nuevos episodios hasta la -transmisión, marketing y análisis. +transmisión, marketing y análisis estadÃstico. -Por último, dependiendo de sus necesidades, Wordpress y Castopod incluso puede -vivir lado a lado ya que comparten los mismos requisitos! +Por último, dependiendo de sus necesidades, Wordpress y Castopod incluso pueden +convivir codo con codo en el mismo servidor, ¡ya que comparten los mismos +requisitos! -### Castopod vs Funkwhale +### Castopod vs. Funkwhale -Funkwhale es un servidor de música autoalojado, moderno y gratuito y de código -abierto. Asà como Castopod, Funkwhale está en el fediverso, una red social -descentralizada que permite interoperabilidad entre ambos. +Funkwhale es un servidor de música auto-hospedado, moderno y gratuito y de +código abierto. Igual que Castopod, Funkwhale está en el fediverso, una red +social descentralizada, permitiendo la interoperabilidad entre ambos. -Funkwhale se construyó inicialmente en torno a la música. Y más adelante, al +Funkwhale se desarrolló inicialmente en torno a la música. Y más adelante, al evolucionar como proyecto, se introdujo la capacidad de alojar podcasts. -A diferencia de Funkwhale, Castopod ha sido diseñado y construido exclusivamente -en torno al podcasting. Esto permite una implementación más fácil para -caracterÃsticas relacionadas con el ecosistema de podcasting , tales como las -caracterÃsticas de podcasting 2.0 (transcripciones, capÃtulos, ubicaciones, -personas, …). +A diferencia de Funkwhale, Castopod ha sido diseñado y desarrollado +exclusivamente para el podcasting. Esto permite una implementación más fácil +para funciones relacionadas con el ecosistema del podcasting, tales como las del +podcasting 2.0 (transcripciones, episodios, geo-localizaciones, personas, …). Por lo tanto, probablemente deberÃas usar Funkwhale si quieres alojar tu música y usar Castopod si quieres alojar tus podcasts. -### Castopod vs otras plataformas de podcast +### Castopod vs. otras plataformas de podcast -Hay muchas soluciones para que usted aloje sus podcasts, algunos de los cuales -son realmente geniales y [muchos de ellos](https://podcastindex. org/apps) están -saltando al vagón del Podcasting 2.0, como Castopod! +Hay muchas soluciones para alojar tus podcasts, algunas de las cuales son +realmente geniales y [muchas de ellas](https://podcastindex. org/apps) están +dando el salto al tren del Podcasting 2.0, ¡como ya ha hecho Castopod! -Cada una de estas soluciones difiere entre sÃ, puedes comparar con la +Cada una de estas soluciones difiere entre sÃ, puedes compararlas en esta [lista de caracterÃsticas](#features). Dicho esto, hay dos diferencias principales con otras soluciones de podcasting: -- Castopod puede ser autoalojado y es la única solución que te permite mantener - control completo sobre lo que produces. También, como es de código abierto, - puedes incluso personalizarlo como desees. +- Castopod puede ser auto-hospedado en tu propio servidor y es la única solución + que te permite mantener un control completo sobre los contenidos que produces. + También, como es de código abierto, puedes incluso personalizarlo como desees + y necesites. -- Castopod es la única solución que actualmente integra tanto una red social - descentralizada con ActivityPub como muchas de las caracterÃsticas del - podcasting 2.0, con la esperanza de cerrar la brecha entre ambos. +- Castopod es la única solución que hasta el momento integra tanto una red + social descentralizada con ActivityPub asà como muchas de las caracterÃsticas + del podcasting 2.0, con la esperanza de cerrar la brecha entre ambos. -## Contribuciones +## Cómo colaborar -¿Te encanta Castopod y te gustarÃa ayudar? Eche un vistazo a la siguiente -documentación para que usted comience. +¿Te encanta Castopod y te gustarÃa ayudar? Echa un vistazo a la siguiente +documentación para que puedas empezar. ### Código de conducta -Castopod ha adoptado un Código de Conducta que esperamos que los participantes -del proyecto cumplan. Por favor, lea el -[manual CODE_OF_CONDUCT](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md) -para que pueda entender qué acciones serán y no serán toleradas. +Castopod ha adoptado un Código de Conducta al que esperamos que los +participantes del proyecto se adhieran. Por favor, lea el +[manual del CÓDIGO DE CONDUCTA](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md) +para que pueda entender qué acciones serán y no serán toleradas. -### GuÃa de Contribución +### GuÃa para colaborar -Lee nuestra [guÃa de contribución](./contributing/guidelines.md) para aprender -más sobre nuestro proceso de desarrollo. cómo proponer correcciones de errores y -mejoras, y cómo compilar y probar sus cambios en Castopod. +Lee nuestra [guÃa para colaborar](./contributing/guidelines.md) para aprender +más sobre nuestro proceso de desarrollo, cómo proponer correcciones de errores y +sugerir mejoras, y cómo compilar y probar tus cambios en Castopod. -## Contributors ✨ +## Colaboradores ✨ -Thanks goes to these wonderful people -([emoji key](https://allcontributors.org/docs/en/emoji-key)): +Los agradecimientos van a estas estupendas personas +([clave emoji](https://allcontributors.org/docs/en/emoji-key)): <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> @@ -240,43 +251,43 @@ Thanks goes to these wonderful people <!-- ALL-CONTRIBUTORS-LIST:END --> -This project follows the -[all-contributors](https://github.com/all-contributors/all-contributors) -specification. Contributions of any kind welcome! +Este proyecto sigue la especificación +[all-contributors](https://github.com/all-contributors/all-contributors). ¡Son +bienvenidas colaboraciones de cualquier tipo! -## Contact +## Contacto -You may reach us for help or ask any question you have on: +Puedes contactarnos para ayuda o hacer cualquier pregunta que tengas en: - [Discord](https://castopod.org/discord) (para interacción directa con desarrolladores y la comunidad) -- [Rastreador de problemas](https://code.castopod.org/adaures/castopod/-/issues) - (para solicitudes de caracterÃsticas & informes de errores) +- [Seguimiento de incidencias](https://code.castopod.org/adaures/castopod/-/issues) + (para informar de errores y solicitar nuevas funcionalidades) -Alternatively, you can follow us on social media platforms to get news about -Castopod: +También puedes seguirnos en redes sociales para obtener noticias sobre Castopod: -- [podlibre.social](https://podlibre.social/@Castopod) (Instancia de Mastodon) -- [Twitter](https://twitter.com/castopod) -- [LinkedIn](https://linkedin.com/company/castopod) -- [Facebook](https://www.facebook.com/castopod) +- [podlibre.social](https://podlibre.social/@castopod) (instancia de Mastodon) +- [[Twitter](https://twitter.com/castopod)](https://twitter.com/castopod) +- [[LinkedIn](https://linkedin.com/company/ad-aures)](https://linkedin.com/company/castopod) +- [Facebook (próximamente?)](https://www.facebook.com/castopod) -## Sponsors +## Patrocinadores -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). +El desarrollo en curso de Castopod es posible gracias al apoyo de sus +patrocinadores. Si quieres ayudar, por favor considera +[cooperar económicamente](https://opencollective.com/castopod/contribute) con el +desarrollo de Castopod. <div class="flex flex-wrap gap-x-16 gap-y-8"> <a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Logo de Ad Aures" class="h-16" /></a> <a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="Logo de NLnet" class="h-16" /></a> </div> -## License +## Licencia [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) -Copyright © 2020-present, [Ad Aures](https://adaures.com/). +Copyright © 2020-presente, [Ad Aures](https://adaures.com/). https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release https://img.shields.io/github/license/ad-aures/castopod?color=blue https://img.shields.io/badge/contributions-welcome-brightgreen.svg diff --git a/docs/src/id/index.md b/docs/src/id/index.md index cb12ac591a..7875000107 100644 --- a/docs/src/id/index.md +++ b/docs/src/id/index.md @@ -2,12 +2,12 @@ sidebarDepth: 2 --- -# Welcome 👋 +# Selamat Datang 👋 [![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars] -Castopod is a free & open-source hosting platform made for podcasters who want -engage and interact with their audience. +Castopod adalah platform hosting yang gratis & sumber terbuka untuk pembuat +siniar yang ingin berinteraksi dengan pendengar mereka. Castopod is easy to install and was built on top of [CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very @@ -15,27 +15,28 @@ small footprint. ::: info Status -Castopod is currently in **beta** but already quite stable and used by -podcasters around the world! +Castopod saat ini masih dalam fase **beta** namun sudah cukup stabil dan telah +digunakan oleh pembuat siniar di seluruh dunia! ::: <div class="flex items-center"> - <a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Install<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a> + <a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Pasang<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 +## Fitur-fitur -- 🌱 Free & open-source (AGPL v3 License) +- 🌱 Gratis & sumber terbuka (Lisensi AGPL v3) - 🔠Focused on data sovereignty: your content, audience, and analytics belong to you, and you only - 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding, chapters, location, persons, soundbites, … -- 💬 Built-in social network: - - 🚀 Castopod is part of the Fediverse, a decentralized social network +- 💬 Jaringan sosial bawaan: + - 🚀 Castopod termasuk bagian dari Fediverse, jaringan sosial + terdesentralisasi - â¤ï¸ Create posts, share, favourite, and comment on episodes -- 📈 Built-in analytics: - - âš–ï¸ GDPR / CCPA / LGPD compliant +- 📈 Analitik bawaan: + - âš–ï¸ Sesuai dengan GDPR / CCPA / LGPD - 🪙 Standard IABv2 audience measurement - 🡠On-premises analytics, no third party involved - 📢 Built-in marketing tools: @@ -49,7 +50,7 @@ podcasters around the world! - 🔗 Funding links - 📲 listen-to-click ads - 🤠value4value / WebMonetization -- 📡 Publish your episodes everywhere with RSS: +- 📡 Terbitkan episode-episode Anda dimana pun dengan RSS: - 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, … - âš¡ Broadcast your episodes instantly with WebSub @@ -61,7 +62,7 @@ podcasters around the world! Brazilian Portuguese & Spanish… with [more to come](https://translate.castopod.org)! -## Motivation +## Motivasi 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. @@ -83,18 +84,18 @@ 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 +## Perbandingan dengan solusi lain -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 you. +Kami percaya bahwa tidak semua solusi sesuai untuk semua orang, ini sangat +bergantung pada kebutuhan Anda. Jadi, inilah perbandingan dengan alat-alat lain +untuk membantu Anda untuk mengetahui apa Castopod sesuai untuk Anda. ### 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 it. +Castopod sering disebut sebagai "Wordpress-nya siniar" karena kemiripan antara +Castopod dan Wordpress. 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 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 @@ -117,9 +118,9 @@ 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 adalah server musik modern yang dihosting sendiri, gratis dan sumber +terbuka. 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. @@ -151,10 +152,9 @@ That being said, there are two main differences with other podcasting solutions: social network with ActivityPub as well as many of the podcasting 2.0 features, hoping to bridge the gap between the two. -## Contributing +## Berkontribusi -Love Castopod and would like to help? Take a look at the following documentation -to get you started. +Suka Castopod dan ingin membantu? Lihat dokumentasi berikut untuk mulai. ### Code of conduct @@ -163,13 +163,13 @@ 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 tolerated. -### Contributing guide +### Panduan berkontribusi 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 ✨ +## Kontributor-kontributor ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): @@ -241,9 +241,10 @@ This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! -## Contact +## Kontak -You may reach us for help or ask any question you have on: +Anda dapat menghubungi kami untuk mendapatkan bantuan atau untuk menanyakan +pertanyaan di: - [Discord](https://castopod.org/discord) (for direct interaction with developers and the community) @@ -258,22 +259,22 @@ Castopod: - [LinkedIn](https://linkedin.com/company/castopod) - [Facebook](https://www.facebook.com/castopod) -## Sponsors +## Sponsor-sponsor 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> + <a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Logo Ad Aures" class="h-16" /></a> + <a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="Logo NLnet" class="h-16" /></a> </div> -## License +## Lisensi [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) -Copyright © 2020-present, [Ad Aures](https://adaures.com/). +Hak Cipta © 2020-sekarang, [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 diff --git a/docs/src/zh-Hans/getting-started/docker.md b/docs/src/zh-Hans/getting-started/docker.md new file mode 100644 index 0000000000..962401a49b --- /dev/null +++ b/docs/src/zh-Hans/getting-started/docker.md @@ -0,0 +1,141 @@ +--- +title: 官方 Docker é•œåƒ +sidebarDepth: 3 +--- + +# 官方 Docker é•œåƒ + +Castopod 在 Docker Hub 自动构建 程åºä¸å°† Docker é•œåƒæŽ¨é€è‡³ Docker Hub : + +- [**`castopod/app`**](https://hub.docker.com/r/castopod/app):应用程åºåŒ…ï¼ŒåŒ…å« + 所有 Castopod ä¾èµ–关系 +- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server):Castopod + çš„ Nginx é…ç½® + +æ¤å¤–,Castopod 需è¦ä¸€ä¸ªä¸Ž MySQL 兼容的数æ®åº“。 Redis æ•°æ®åº“ å¯ä»¥æ·»åŠ 为缓å˜å¤„ç†å™¨ +。 + +## ç›®å‰æ”¯æŒçš„æ ‡ç¾ + +- `develop` [unstable], 最新开å‘分支版本 + +æ›´å¤šæ ‡ç¾å³å°†åˆ°æ¥ï¼ + +## 用法示例: + +1. 安装 [Docker](https://docs.docker.com/get-docker/) å’Œ + [docker-compose](https://docs.docker.com/compose/install/) +2. 创建 `docker-compose.yml` æ–‡ä»¶ï¼Œå¹¶æ·»åŠ ä»¥ä¸‹å†…å®¹ï¼š + + ```yml + version: "3.7" + + services: + app: + image: castopod/app:develop + 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:develop + 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 + + volumes: + castopod-media: + castopod-db: + castopod-cache: + + networks: + castopod-app: + castopod-db: + ``` + + ä½ è¿˜éœ€è¦è°ƒæ•´ä¸€äº›å˜é‡ã€‚(例如:`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, + `MYSQL_PASSSWORD` å’Œ `CP_ANALYTICS_SALT`) + +3. 设置 TLS åå‘ä»£ç† (SSL/HTTPS) + + TLS 是 ActivePub 工作的强制性è¦æ±‚。 æ¤æ“作å¯ç”¨é€šè¿‡åå‘代ç†è½»æ¾è§£å†³ï¼Œä¾‹å¦‚使用 + [Caddy](https://caddyserver.com/) 处ç†ï¼š + + ``` + #castopod + castopod.example.com { + reverse_proxy localhost:8080 + } + ``` + +4. è¿è¡Œå‘½ä»¤ `docker-compose up -d`, ç‰å¾…åˆå§‹åŒ–åŽè·³è½¬åˆ° + `https://castopod.example.com/cp-install` æ¥å®Œæˆ Castopod çš„è®¾ç½®ï¼ + +5. 一切准备就绪,开始åšå®¢å§ï¼ 🎙ï¸ðŸš€ + +## 环境å˜é‡ + +- **castopod/app** + + | å˜é‡å称 | 类型 (`默认值`) | + | -------------------------- | ----------------------------------- | + | **`CP_BASEURL`** | string (`undefined`) | + | **`CP_MEDIA_BASEURL`** | ?string (`(empty)`) | + | **`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`) | + +- **castopod/web-server** + + | å˜é‡å称 | 类型 (`默认值`) | + | --------------------- | ----------------- | + | **`CP_APP_HOSTNAME`** | ?string (`"app"`) | diff --git a/docs/src/zh-Hans/getting-started/install.md b/docs/src/zh-Hans/getting-started/install.md new file mode 100644 index 0000000000..114756cc3a --- /dev/null +++ b/docs/src/zh-Hans/getting-started/install.md @@ -0,0 +1,146 @@ +--- +title: 安装 +sidebarDepth: 3 +--- + +# 如何安装 Castopod ? + +Castopod 的安装éžå¸¸ç®€å•ã€‚ ä½ èƒ½åœ¨å¤§å¤šæ•°å…¼å®¹çš„ PHP-MySQL çš„æœåŠ¡å™¨ä¸Šå®‰è£… Castopod, +æ— è®ºæ˜¯ä¸“ç”¨è¿˜æ˜¯ 共享主机。 + +::: æ³¨æ„ + +我们已ç»å‘布 Castopod 的官方 Docker é•œåƒï¼ + +å¦‚æžœä½ æ›´å–œæ¬¢ä½¿ç”¨ Docker,则å¯ä»¥è·³è¿‡æ¤æ¥éª¤ï¼Œç›´æŽ¥å‰å¾€ Castopod çš„ +[Docker 文档](./docker.md)。 + +::: + +## è¦æ±‚ + +- PHP 8.0 或更高版本 +- MySQL 5.7 或更高版本与 MariaDB 10.2 或更高版本 +- HTTPS æ”¯æŒ + +### PHP 8.0 或更高版本 + +éœ€è¦ PHP 8.0 或更高版本,并安装以下扩展: + +- [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) 与 **JPEG**, + **PNG** å’Œ **WEBP** 库。 +- [exif](https://www.php.net/manual/en/exif.installation.php) + +æ¤å¤–,请确ä¿åœ¨ PHP ä¸å¯ç”¨ä»¥ä¸‹æ‰©å±•ï¼š + +- json (默认å¯ç”¨-ä¸è¦å…³é—) +- xml (默认å¯ç”¨-ä¸è¦å…³é—) +- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php) + +### 兼容 MySQL çš„æ•°æ®åº“ + +> 我们建议使用 [MariaDB](https://mariadb.org)。 + +::: è¦å‘Š + +Castopod 仅适用于å—支æŒçš„ MySQL 5.7 或更高版本的兼容数æ®åº“。 例如,MySQL 5.6 å·² +ç»ä¸å—支æŒï¼Œå› 为它于 2021 å¹´ 2 月 5 日已åœæ¢æ›´æ–°ã€‚ + +::: + +ä½ éœ€è¦å¡«å†™æœåŠ¡å™¨ä¸»æœºåã€æ•°æ®åº“å称ã€ç”¨æˆ·å和密ç æ‰èƒ½å®Œæˆå®‰è£…过程。 如果没有这些 +ï¼Œè¯·ä¸Žä½ çš„æœåŠ¡å™¨ç®¡ç†å‘˜è”系。 + +#### æƒé™ + +用户至少需è¦åœ¨æ•°æ®åº“ä¸æœ‰è¿™äº›æƒé™ï¼ŒCastopod æ‰èƒ½å·¥ä½œï¼š `CREATE`, `ALTER`, +`DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`。 + +### (å¯é€‰ï¼‰FFmpeg v4.1.8 æˆ–æ›´é«˜ç‰ˆæœ¬ï¼Œç”¨äºŽè§†é¢‘ç´ æ + +å¦‚æžœä½ éœ€è¦è§†é¢‘ç´ æï¼Œåˆ™éœ€è¦ [FFFmpeg](https://www.ffmpeg.org/) 4.1.8 或更高版本。 +必须安装以下扩展: + +- **FreeType 2** æ¥è‡ªåº“ + [gd](https://www.php.net/manual/en/image.installation.php) + +### (å¯é€‰ï¼‰å…¶ä»–建议 + +- 使用 Redis æ高缓å˜æ€§èƒ½ã€‚ +- CDN 用于é™æ€æ–‡ä»¶ç¼“å˜ä»¥å®žçŽ°æ›´å¥½çš„性能。 +- 电å邮件用于找回密ç 。 + +## 安装说明 + +### 准备环境 + +0. 需è¦ä¸€å°å·²ç»å®žçŽ° [环境è¦æ±‚](#requirements)çš„ Web æœåŠ¡å™¨ +1. 为 Castopod 创建一个 MySQL æ•°æ®åº“,其ä¸ç”¨æˆ·å…·æœ‰è®¿é—®å’Œä¿®æ”¹æƒé™ï¼ˆæœ‰å…³è¯¦ç»†ä¿¡æ¯ï¼Œ + 请å‚阅 [MySQL 兼容数æ®åº“](#mysql-compatible-database))。 +2. 使用 _SSL è¯ä¹¦_ 在您的域激活 HTTPS。 +3. 下载最新的 [Castopod](https://castopod.org/) 到 web æœåŠ¡å™¨å¹¶è§£åŽ‹ï¼ˆå¦‚果尚未下 + 载)。 + - âš ï¸ å°† web æœåŠ¡å™¨æ ¹ç›®å½•è®¾ç½®ä¸º `castopod` 文件夹ä¸çš„ `public/` å文件夹。 +4. 在 Web æœåŠ¡å™¨ä¸Šä¸ºå„ç§åŽå°è¿›ç¨‹æ·»åŠ **cron 任务** (相应地替æ¢è·¯å¾„) + + - 为了使社交功能æ£å¸¸å·¥ä½œï¼Œæ¤ä»»åŠ¡ç”¨äºŽå‘è”邦宇宙ä¸çš„关注者å‘é€æ´»åŠ¨ï¼š + + ```bash + * * * * * /path/to/php /path/to/castopod/public/index.php scheduled-activities + ``` + + - 使用 [WebSub](https://en.wikipedia.org/wiki/WebSub) 在å‘å¸ƒæ—¶å°†æ‚¨çš„å‰§é›†å¹¿æ’ + 在公共平å°ï¼š + + ```bash + * * * * * /usr/local/bin/php /castopod/public/index.php scheduled-websub-publish + ``` + + - 如果需è¦ä½¿ç”¨è§†é¢‘ç´ æ(请å‚阅 + [FFmpeg è¦æ±‚](#ffmpeg-v418-or-higher-for-video-clips)): + + ```bash + * * * * * /path/to/php /path/to/castopod/public/index.php scheduled-video-clips + ``` + + > 这些任务 **æ¯åˆ†é’Ÿ**è¿è¡Œä¸€æ¬¡ã€‚ ä½ å¯ä»¥æ ¹æ®éœ€è¦è®¾ç½®é¢‘çŽ‡ï¼šæ¯ 5 分钟,10 分钟或 + > 更长的时间。 + +### (推è) 安装å‘导 + +1. å‰å¾€ä½ 最喜欢的æµè§ˆå™¨å¹¶è·³è½¬è‡³å®‰è£…å‘å¯¼é¡µé¢ + (`https://your_domain_name.com/cp-install`)è¿è¡Œ Castopod 安装脚本。 +2. 请按照å±å¹•ä¸Šçš„说明进行æ“作。 +3. 开始æ’å®¢ï¼ + +::: æ³¨æ„ + +å®‰è£…è„šæœ¬å°†ä¼šåœ¨æ ¹ç›®å½•ä¸åˆ›å»ºä¸€ä¸ª `.env` 文件并写入数æ®ã€‚ å¦‚æžœæ— æ³•æ‰§è¡Œå®‰è£…å‘å¯¼ï¼Œå¯ +以 [手动创建并更新 `.env` 文件](#alternative-manual-configuration)。 + +::: + +## ç¤¾åŒºå¥—é¤ + +å¦‚æžœä½ ä¸æƒ³æ‰‹åŠ¨å®‰è£… Castopod,å¯ä»¥ä½¿ç”¨å¼€æºç¤¾åŒºåˆ›å»ºå’Œç»´æŠ¤çš„软件包。 + +### 使用 YunoHost 安装 + +[Yunohost](https://yunohost.org/) 是一个基于 Debian GNU/Linux çš„å‘行版,由自由和 +å¼€æºè½¯ä»¶åŒ…组æˆã€‚ 它å¯ä»¥ä¸ºä½ 解决自托管的困难。 + +<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="从 YunoHost 安装 Castopod" 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> diff --git a/docs/src/zh-Hans/getting-started/security.md b/docs/src/zh-Hans/getting-started/security.md new file mode 100644 index 0000000000..15a51f92bb --- /dev/null +++ b/docs/src/zh-Hans/getting-started/security.md @@ -0,0 +1,23 @@ +--- +title: 安全性 +--- + +# 安全问题 + +Castopod 构建于 [CodeIgniter4](https://codeigniter.com/), PHP 框架上,鼓励 +[更好的安全实践](https://codeigniter.com/user_guide/concepts/security.html)。 + +为了最大é™åº¦åœ°æé«˜ä½ å®žä¾‹çš„å®‰å…¨æ€§å¹¶é˜²æ¢ä»»ä½•æ¶æ„攻击。 我们 å»ºè®®ä½ åœ¨å®‰è£…æˆ–æ›´æ–°åŽæ£€ +查所有的 Castopod 文件æƒé™(é¿å…任何之å‰çš„æƒé™é”™è¯¯): + +- `writable/` 文件夹æƒé™ä¸º **å¯è¯»** å’Œ **å¯å†™**。 +- `public/media/` 文件夹æƒé™ä¸º **å¯è¯»** å’Œ **å¯å†™**。 +- 任何其他文件都必须设置为**åªè¯»**。 + +ä¾‹å¦‚ï¼Œå¦‚æžœä½ åœ¨ Ubuntu 上使用 Apache 或 NGINXï¼Œä½ å¯ä»¥è¿™æ ·åšï¼š + +```bash +sudo chown -R root:root /path/to/castopod +sudo chown -R www-data:www-data /path/to/castopod/writable +sudo chown -R www-data:www-data /path/to/castopod/public/media +``` diff --git a/docs/src/zh-Hans/getting-started/update.md b/docs/src/zh-Hans/getting-started/update.md new file mode 100644 index 0000000000..4662479258 --- /dev/null +++ b/docs/src/zh-Hans/getting-started/update.md @@ -0,0 +1,79 @@ +--- +title: æ›´æ–° +sidebarDepth: 3 +--- + +# 如何更新 Castopod ? + +安装 Castopod åŽï¼Œä½ å¯èƒ½å¸Œæœ›å°†å®žä¾‹æ›´æ–°åˆ°æœ€æ–°ç‰ˆæœ¬ 版本以享å—最新功能 ✨, ä¿®å¤é”™è¯¯ +🛠和性能æå‡ âš¡ã€‚ + +## 自动更新说明 + +> å³å°†åˆ°æ¥... 👀 + +## 手动更新说明 + +1. 跳转至 [å‘布页é¢](https://code.castopod.org/adaures/castopod/-/releases) 并且 + 查看自己的实例是å¦ä¸ºæœ€æ–°ç‰ˆæœ¬çš„ Castopod + + - å‚考 + [在哪里å¯ä»¥æ‰¾åˆ°æˆ‘çš„ Castopod 版本å·ï¼Ÿ](#where-can-i-find-my-castopod-version) + +2. 下载命å为 `Castopod Package`çš„æœ€æ–°ç‰ˆæœ¬ï¼Œä½ å¯ä»¥é€‰æ‹© `zip` 或 `tar.gz` 压缩包 + + - âš ï¸ è¯·ç¡®ä¿ä½ 下载的是 Castopod 软件包而 **ä¸æ˜¯** æºä»£ç + +3. åœ¨ä½ çš„æœåŠ¡å™¨ä¸Šï¼š + + - åˆ é™¤é™¤ `.env` 文件和 `public/media` 目录之外的所有文件 + - 将下载软件包ä¸çš„新文件å¤åˆ¶åˆ°ä½ çš„æœåŠ¡å™¨ä¸ + + ::: æ³¨æ„ + + ä½ å¯èƒ½åœ¨æ›´æ–°è¿‡ç¨‹ä¸éœ€è¦é‡ç½®æ–‡ä»¶æƒé™ã€‚ 检查 [安全问题](./security.md)。 + + ::: + +4. 新版本å¯èƒ½æœ‰é¢å¤–的更新说明(请å‚阅 + [å‘布页é¢](https://code.castopod.org/adaures/castopod/-/releases))。 通常以 + `.sql` æ ¼å¼çš„æ•°æ®åº“è¿ç§»è„šæœ¬æ›´æ–°ä½ çš„æ•°æ®åº“结构。 + + - 👉 ç¡®ä¿åœ¨ phpmyadmin é¢æ¿ä¸Šè¿è¡Œè„šæœ¬æˆ–使用命令 è¡Œæ¥æ›´æ–°æ•°æ®åº“以åŠåŒ…æ–‡ä»¶ï¼ + - å‚阅 + [我很长时间没有更新我的实例… 我该怎么办?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do) + +5. å¦‚æžœä½ æ£åœ¨ä½¿ç”¨ redis,请清除缓å˜ã€‚ +6. ✨ 享å—ä½ çš„æ–°å®žä¾‹, ä½ å·²ç»æ›´æ–°å®Œæ¯•ï¼ + +## 常è§é—®é¢˜ï¼ˆFAQ) + +### 在哪里å¯ä»¥æ‰¾åˆ°æˆ‘çš„ Castopod 版本å·ï¼Ÿ + +è·³è½¬åˆ°ä½ çš„ Castopod 管ç†é¢æ¿ï¼Œç‰ˆæœ¬å·æ˜¾ç¤ºåœ¨å·¦ä¸‹è§’。 + +æˆ–è€…ï¼Œä½ å¯ä»¥åœ¨ `åº”ç”¨ç¨‹åº > é…ç½® > Constants.php` 文件ä¸æ‰¾åˆ°ç‰ˆæœ¬å·ã€‚ + +### 我很长时间没有更新我的实例… 我该怎么办? + +æ²¡é—®é¢˜ï¼ åªéœ€å¦‚上所述获å–最新版本。 在执行上文æ¥éª¤ (4) 时,将脚本按旧到新ä¾æ¬¡æ‰§ +行。 + +> ä½ å¯èƒ½æƒ³è¦å¤‡ä»½ä½ 的实例,这å–决于您多久没有更新过 Castopod 。 + +ä¾‹å¦‚ï¼Œå¦‚æžœä½ åœ¨ `v1.0.0-alpha.42` 并想è¦å‡çº§åˆ° `v1.0.0-beta.1` + +0. (强烈推è) å¤‡ä»½ä½ çš„æ–‡ä»¶å’Œæ•°æ®åº“。 + +1. 下载最新版本,覆盖您的文件,åŒæ—¶ä¿ç•™ `.env` 文件和 `public/media` 文件夹。 + +2. 从 `v1.0.0-alpha.43` 开始,按顺åºæ‰§è¡Œæ¯ä¸ªç‰ˆæœ¬æ›´æ–°æŒ‡ä»¤(从è€ç‰ˆæœ¬åˆ° 最新版本), + 然åŽæ˜¯ `v1.0.0-alpha.44`,`v1.0.0-alpha.45`,…,直到 `v1.0.0-beta.1`。 + +3. ✨ 享å—ä½ çš„æ–°å®žä¾‹, ä½ å·²ç»æ›´æ–°å®Œæ¯•ï¼ + +### 我是å¦åº”该在更新å‰å¤‡ä»½ï¼Ÿ + +æˆ‘ä»¬å»ºè®®ä½ è¿™æ ·åšï¼Œè¿™æ ·å°±ä¸ä¼šåœ¨å‡ºçŽ°ä»»ä½•é—®é¢˜æ—¶ä¸¢å¤±æ•°æ®ï¼ + +æ›´ç¬¼ç»Ÿåœ°è¯´ï¼Œæˆ‘ä»¬å»ºè®®ä½ å®šæœŸå¤‡ä»½æ‚¨çš„ Castopod 文件和 æ•°æ®åº“,防æ¢ä¸¢å¤±æ‰€æœ‰å†…容…… diff --git a/docs/src/zh-Hans/index.md b/docs/src/zh-Hans/index.md new file mode 100644 index 0000000000..b327a6ead9 --- /dev/null +++ b/docs/src/zh-Hans/index.md @@ -0,0 +1,261 @@ +--- +sidebarDepth: 2 +--- + +# 欢迎 👋 + +[![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars] + +Castopod 是一个å…费的开æºæ’客托管平å°ï¼Œä¸ºé‚£äº›æƒ³è¦å’Œå¬ä¼—接触与互动的æ’客们制作的 +。 + +Castopod 易于安装,并使用 [CodeIgniter4](https://codeigniter.com/) 构建, 这是一 +个强大的 PHP 框架,并且å 用æžå°ã€‚ + +::: çŠ¶æ€ + +Castopod 虽然目å‰å¤„于 **测试阶段** ,但相当稳定,已ç»è¢«ä¸–ç•Œå„地的æ’å®¢ä½¿ç”¨ï¼ + +::: + +<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">安装<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> + +## 功能特色 + +- 🌱 å…费与开æºï¼ˆAGPL v3 许å¯è¯ï¼‰ +- 🔠专注于数æ®ä¸»æƒï¼šä½ 的内容ã€å—众和分æžå±žäºŽä½ ,而且åªå±žäºŽä½ +- 🪄 æ’客 2.0 功能:GUID,é”å®šï¼ŒæŠ¥è¡¨ï¼Œèµ„é‡‘ï¼Œç« èŠ‚ï¼Œä½ç½®ä¿¡æ¯ï¼Œäººå‘˜ï¼ŒåŽŸå£°æ‘˜è¦ + ... +- 💬 内置社交网络: + - 🚀 Castopod 是è”邦宇宙的一部分,è”邦宇宙是一个去ä¸å¿ƒåŒ–的社交网络 + - â¤ï¸ 创建帖åã€åˆ†äº«ã€æ”¶è—和评论剧集。 +- 📈 内置分æžï¼š + - âš–ï¸ ç¬¦åˆ GDPR / CCPA / LGPD æ ‡å‡† + - 🪙 æ ‡å‡† IABv2 å—ä¼—æµ‹é‡ + - 🡠本地分æžï¼Œä¸æ¶‰åŠç¬¬ä¸‰æ–¹ +- 📢 内置è¥é”€å·¥å…·ï¼š + - ✅ SEO 开箱å³ç”¨ï¼ˆopen-graph meta-tags,JSON-LD ç‰ï¼‰ + - 📱 PWA:作为独立应用安装 + - 🎨 自定义的主题颜色 + - 🎬 从å•ä¸ªå‰§é›†ç”Ÿæˆéšæ—¶å¯ä»¥å…±äº«çš„è§†é¢‘ç´ æ + - 🔉 生æˆåŽŸå£°æ‘˜è¦ + - â–¶ï¸ åµŒå…¥å¼æ’æ”¾å™¨ï¼Œå°†ä½ çš„å‰§é›†åµŒå…¥ä»»ä½•ç½‘ç«™ +- 💸 è´§å¸ï¼š + - 🔗 资金链接 + - 📲 点击收å¬å¹¿å‘Š + - 🤠value4value / 网络货å¸åŒ– +- 📡 使用 RSS å°†ä½ çš„å‰§é›†å‘布到任何地方 + - 📱 支æŒä¼—多索引和应用程åºï¼šPodcast Index,Apple + Podcasts,Spotify,Google Podcasts,Deezer,Podcast Addict,Podfriend... + - âš¡ 使用 WebSub å³æ—¶å¹¿æ’ä½ çš„å‰§é›† +- 📥 æ’客导入:将现有æ’客移至 Castopod +- 📤 也支æŒå°†æ’客移出 Castopod +- 🔀 å¤šç§Ÿæˆ·ï¼šæ ¹æ®éœ€è¦æ‰˜ç®¡ä»»æ„æ•°é‡çš„æ’客 +- 👥 å¤šç”¨æˆ·ï¼šæ·»åŠ è´¡çŒ®è€…å¹¶è®¾ç½®è§’è‰² +- 🌎 i18n 支æŒï¼šç¿»è¯‘æˆè‹±è¯ï¼Œæ³•è¯ï¼Œæ³¢å…°è¯ï¼Œå¾·è¯ï¼Œå·´è¥¿è‘¡è„牙è¯å’Œè¥¿çç‰™è¯ + ...[还有更多](https://translate.castopod.org)ï¼ + +## 创作动机 + +æ’客生æ€ç³»ç»Ÿæœ¬è´¨ä¸Šæ˜¯åŽ»ä¸å¿ƒåŒ–çš„ï¼šä½ å¯ä»¥åˆ›å»ºè‡ªå·±çš„æ’客订阅æºï¼Œå°†å…¶å‘布到网络上并在 +线共享。 + +事实上,它是唯一长期ä¿æŒè¿™ç§çŠ¶æ€çš„媒体之一。 + +éšç€ä¹ 惯的å‘展,越æ¥è¶Šå¤šçš„人开始接触æ’客:å…许创作者寻找新的方å¼æ¥åˆ†äº«ä»–们的想法 +,或是让å¬ä¼—获得更好的内容。 + +éšç€æ’客的使用越æ¥è¶Šå¹¿æ³›ï¼Œä¸€äº›å…¬å¸æ£è¯•å›¾æŽ§åˆ¶æ’客与集ä¸åŒ–。 + +Castopod 的创建旨在æ供一ç§å¼€æ”¾ä¸”å¯æŒç»çš„替代方案æ¥æ‰˜ç®¡ä½ çš„æ’客,促进æƒåŠ›ä¸‹æ”¾ï¼Œ +ç¡®ä¿æ’客å¯ä»¥ç”¨åˆ›é€ 力表达自己。 + +æ¤é¡¹ç›®ç”±å¼€æºç¤¾åŒºæŽ¨åŠ¨çš„,特别是 +ç”±[è”邦宇宙](https://fediverse.party/en/fediverse/) å’Œ +[æ’客 2.0](https://podcastindex.org/) 推动。 + +## 与其他解决方案的对比 + +我们相信æ¤è§£å†³æ–¹æ¡ˆä¸ä¸€å®šé€‚åˆæ‰€æœ‰äººï¼Œå®ƒåªå–å†³äºŽä½ æ˜¯å¦éœ€è¦ã€‚ å› æ¤ï¼Œä¸‹é¢æ˜¯ä¸Žå…¶ä»–解 +决方案的比较,å¯å¸®åŠ©åˆ¤æ– Castopod 是å¦é€‚åˆä½ 。 + +### Castopod 对比 Wordpress + +Castopod ç»å¸¸è¢«ç§°ä¸º “æ’客ä¸çš„ Wordpressâ€ï¼Œå› 为两者有很多相似之处。 在æŸäº›æ–¹é¢ï¼Œ +确实如æ¤ã€‚ 实际上,Castopod å—到 WordPress 生æ€çš„æžå¤§å¯å‘,看到了采用社区的易用 +性 以åŠè¿è¡Œå®ƒçš„网站数é‡ã€‚ + +å°±åƒ Wordpress ä¸€æ ·ï¼ŒCastopod 是å…费且开æºçš„,PHP 构建并使用 MySQL æ•°æ®åº“,å¯ä»¥ +在大多数 Web æœåŠ¡å™¨ä¸Šè½»æ¾å®‰è£…。 + +Wordpress æ˜¯åˆ›å»ºä½ çš„ç½‘ç«™ï¼Œå¹¶ä½¿ç”¨æ’件扩展以获得想è¦å†…容的好办法。 这是一个æˆç†Ÿçš„ +CMS,å¯ä»¥å¸®åŠ©ä½ 在线访问任何类型的网站。 + +å¦ä¸€æ–¹é¢ï¼ŒCastopod 旨在专门满足æ’客的需求,专注于æ’客,而ä¸æ˜¯å…¶ä»–。 ä½ ä¸éœ€è¦ä»»ä½• +æ’件å³å¯è½»æ¾å¼€å§‹æ’客之旅。 + +还拥有对æ’客的独特优化:从æ’客的创建和新剧集的å‘布一直到广æ’,è¥é”€å’Œåˆ†æžã€‚ + +最åŽï¼Œæ ¹æ®ä½ 的需è¦ï¼ŒWordpress å’Œ Castopod 甚至å¯ä»¥å…±å˜ï¼Œå› 为他们有相åŒçš„é…置环境 +ï¼ + +### Castopod 对比 Funkwhale + +Funkwhale 是一个自托管ã€çŽ°ä»£ç•Œé¢ã€å…费开æºçš„音ä¹æœåŠ¡å™¨ã€‚ å°±åƒ Castopod ä¸€æ · +,Funkwhale 也ä½äºŽè”邦宇宙ä¸ï¼Œè¿™æ˜¯ä¸€ä¸ªåŽ»ä¸å¿ƒåŒ–的社交网络,å…许两者的互è”。 + +Funkwhale 最åˆæ˜¯å›´ç»•éŸ³ä¹åˆ¶ä½œçš„。 åŽæ¥ï¼Œéšç€é¡¹ç›®çš„å‘展,引入了托管æ’客的能力。 + +与 Funkwhale ä¸åŒï¼ŒCastopod 是åªå›´ç»•æ’客设计和构建的。 è¿™æ ·å¯ä»¥æ›´ç®€å•åœ°å®žçŽ°ä¸Žæ’ +客相关的生æ€ç³»ç»Ÿï¼Œä¾‹å¦‚æ’客 2.0 åŠŸèƒ½ï¼ˆæŠ¥è¡¨ã€ ç« èŠ‚ã€åœ°ç‚¹ã€äººå‘˜â€¦ï¼‰ã€‚ + +å› æ¤ï¼Œå¦‚æžœä½ æƒ³æ‰˜ç®¡ä½ çš„éŸ³ä¹åº“ï¼Œä½ å¯èƒ½åº”该使用 Funkwhale,如果您想主æŒä¸€ä¸ªæ’客,请 +使用 Castopod。 + +### Castopod 与其他æ’客 + +有许多éžå¸¸æ£’的解决方案å¯ä¾›ä½ 托管æ’客,并 +且[很多](https://podcastindex.org/apps)æ£åœ¨æ上æ’客 2.0 çš„ä¾¿è½¦ï¼Œå°±åƒ Castopod 一 +æ ·ï¼ + +这些解决方案å„ä¸ç›¸åŒï¼Œä½ å¯ä»¥å¯¹æ¯” [功能列表](#features)。 + +è¯è™½å¦‚æ¤ï¼ŒCastopod 与其他æ’客解决方案有两个主è¦åŒºåˆ«ï¼š + +- Castopod 是自托管的,唯一å…è®¸ä½ æŽ§åˆ¶æ‰€æœ‰æ•°æ®çš„方案。 并且,由于是开æºçš„ï¼Œç”šè‡³å¯ + 以按自己的想法修改。 + +- Castopod 是目å‰å”¯ä¸€ä¸€ä¸ªåŒæ—¶é›†æˆåŽ»ä¸å¿ƒåŒ–的,带有 ActivePub 的社交网络以åŠå¾ˆå¤šæ’ + 客 2.0 功能集æˆçš„解决方案,希望弥åˆä¸¤è€…之间的差è·ã€‚ + +## 贡献 + +喜欢 Castopod 并且想帮忙å—? è¯·æŸ¥çœ‹ä»¥ä¸‹æ–‡æ¡£ä»¥å¸®åŠ©ä½ å…¥é—¨ã€‚ + +### 行为准则 + +Castopod å·²ç»é€šè¿‡äº†ä¸€é¡¹è¡Œä¸ºå‡†åˆ™ï¼Œå¹¶å¸Œæœ›æ‰€æœ‰çš„å‚与者都能够éµå¾ªæœ¬è¡Œä¸ºå‡†åˆ™ã€‚ 请阅 +读[行为准则](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md) +以便了解哪些行为被å…许,哪些行为ä¸ä¼šè¢«å®¹å¿ã€‚ + +### è´¡çŒ®æŒ‡å— + +阅读我们的 [贡献指å—](./contributing/guidelines.md) ,了解我们的开å‘过程。æ出错 +误修æ£å’Œæ”¹è¿›æƒ³æ³•ï¼Œä»¥åŠå¦‚何构建和测试 Castopod 。 + +## 贡献者 ✨ + +感谢这些了ä¸èµ·çš„人 +([表情符å·é”®](https://allcontributors.org/docs/en/emoji-key)): + +<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> +<!-- prettier-ignore-start --> +<!-- markdownlint-disable --> +<table> + <tr> + <td align="center"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt=""/><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"><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=""/><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"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td> + <td align="center"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Patryk MiÅ›</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt=""/><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"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><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=""/><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"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><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"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt=""/><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"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><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"><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=""/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + </tr> + <tr> + <td align="center"><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=""/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/e18d44b28edd0ada.png?s=100" width="100px;" alt=""/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><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"><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=""/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><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=""/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">ðŸŒ</a></td> + <td align="center"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt=""/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td> + </tr> +</table> + +<!-- markdownlint-restore --> +<!-- prettier-ignore-end --> + +<!-- ALL-CONTRIBUTORS-LIST:END --> + +æ¤é¡¹ç›®éµå¾ª [所有贡献者](https://github.com/all-contributors/all-contributors) 规 +范。 欢迎任何形å¼çš„è´¡çŒ®ï¼ + +## è”ç³» + +ä½ å¯ä»¥è”系我们寻求帮助或æ出任何问题: + +- [Discord](https://castopod.org/discord) (用于与开å‘人员和社区直接互动) +- [问题跟踪器](https://code.castopod.org/adaures/castopod/-/issues)(用于功能请 + 求和错误报告) + +æˆ–è€…ï¼Œä½ å¯ä»¥åœ¨ç¤¾äº¤åª’体上关注我们,以获å–有关 Castopod 的新闻: + +- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon 实例) +- [推特](https://twitter.com/castopod) +- [领英](https://linkedin.com/company/castopod) +- [脸书](https://www.facebook.com/castopod) + +## 赞助商 + +Castopod çš„å‘展离ä¸å¼€èµžåŠ©å•†çš„支æŒã€‚ å¦‚æžœä½ æƒ³è¦å¸®åŠ©æˆ‘们,请考 +虑[赞助 Castopod çš„å¼€å‘](https://opencollective.com/castopod/contribute). + +<div class="flex flex-wrap gap-x-16 gap-y-8"> + <a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="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> + +## 许å¯è¯ + +[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) + +Copyright © 2020-present, [Ad Aures](https://adaures.com/). +https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release +https://img.shields.io/github/license/ad-aures/castopod?color=blue +https://img.shields.io/badge/contributions-welcome-brightgreen.svg +https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg +https://img.shields.io/github/stars/ad-aures/castopod?style=social + +[release]: https://code.castopod.org/adaures/castopod/-/releases +[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md +[contributions]: https://code.castopod.org/adaures/castopod/-/issues +[semantic-release]: https://github.com/semantic-release/semantic-release +[discord]: https://castopod.org/discord +[stars]: https://github.com/ad-aures/castopod/stargazers +[crowdin]: https://translate.castopod.org/project/castopod diff --git a/modules/Admin/Language/ca/Breadcrumb.php b/modules/Admin/Language/ca/Breadcrumb.php new file mode 100644 index 0000000000..797e181798 --- /dev/null +++ b/modules/Admin/Language/ca/Breadcrumb.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'label' => 'Ruta de navegació', + config('Admin') + ->gateway => 'Inici', + 'podcasts' => 'podcasts', + 'episodes' => 'episodis', + 'contributors' => 'col·laboradors', + 'pages' => 'pà gines', + 'settings' => 'preferències', + 'theme' => 'tema', + 'add' => 'afegir', + 'new' => 'nova', + 'edit' => 'editar', + 'persons' => 'persones', + 'publish' => 'publicar', + 'publish-edit' => 'editar la publicació', + 'unpublish' => 'desfer la publicació', + 'delete' => 'eliminar', + 'fediverse' => 'Fediverse', + 'block-lists' => 'llista de bloquejats', + 'users' => 'usuaris', + 'my-account' => 'el meu compte', + 'change-password' => 'canviar la contrasenya', + 'import' => 'importar un feed', + 'platforms' => 'plataformes', + 'social' => 'xarxes socials', + 'funding' => 'financiació', + 'analytics' => 'estadÃstiques', + 'locations' => 'ubicacions', + 'webpages' => 'pà gines web', + 'unique-listeners' => 'oients únics', + 'players' => 'reproductors', + 'listening-time' => 'temps d\'escolta', + 'time-periods' => 'perÃodes de temps', + 'soundbites' => 'fragments d\'à udio', + 'video-clips' => 'vÃdeoclips', + 'embed' => 'reproductor incrustable', + 'notifications' => 'notificacions', +]; diff --git a/modules/Admin/Language/ca/Charts.php b/modules/Admin/Language/ca/Charts.php new file mode 100644 index 0000000000..4873a6ee55 --- /dev/null +++ b/modules/Admin/Language/ca/Charts.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'by_service_weekly' => 'Baixades d\'episodis per servei (durant la setmana passada)', + 'by_player_weekly' => 'Baixades d\'episodis per reproductor (durant la setmana passada)', + 'by_player_yearly' => 'Baixades d\'episodis per reproductor (durant l\'any passat)', + 'by_device_weekly' => 'Baixades d\'episodis per dispositiu (durant la setmana passada)', + 'by_os_weekly' => 'Baixades d\'episodis per sistema operatiu (durant la setmana passada)', + 'podcast_by_region' => 'Baixades d\'episodis per regió (durant la setmana passada)', + 'unique_daily_listeners' => 'Oients únics diaris', + 'unique_monthly_listeners' => 'Oients únics mensuals', + 'by_browser' => 'Pà gines vistes per navegador (durant la setmana passada)', + 'podcast_by_day' => 'Baixades dià ries d\'episodis', + 'podcast_by_month' => 'Baixades mensuals d\'episodis', + 'episode_by_day' => 'Baixades dià ries d\'episodi (primers 60 dies)', + 'episode_by_month' => 'Baixades mensuals d\'episodis', + 'episodes_by_day' => + 'Baixades dels 5 darrers episodis (durant els seus primers 60 dies)', + 'by_country_weekly' => 'Baixades d\'episodis per paÃs (durant la setmana passada)', + 'by_country_yearly' => 'Baixades d\'episodis per paÃs (durant l\'any passat)', + 'by_domain_weekly' => 'Pà gines vistes per origen (durant la setmana passada)', + 'by_domain_yearly' => 'Pà gines vistes per origen (durant l\'any passat)', + 'by_entry_page' => 'Pà gines vistes per pà gina d\'arribada (durant la setmana passada)', + 'podcast_bots' => 'Bots (exploradors)', + 'daily_listening_time' => 'Temps acumulat d\'escolta dià ria', + 'monthly_listening_time' => 'Temps acumulat d\'escolta mensual', + 'by_weekday' => 'Per dia de la setmana (darrers 60 dies) ', + 'by_hour' => 'Per hora del dia (darrers 60 dies)', + 'podcast_by_bandwidth' => 'Ample de banda emprat dià riament (en MB)', + 'total_storage_by_month' => 'Emmagatzematge mensual (en MB)', + 'total_bandwidth_by_month' => 'Ample de banda emprat mensualment (en MB)', +]; diff --git a/modules/Admin/Language/ca/Common.php b/modules/Admin/Language/ca/Common.php new file mode 100644 index 0000000000..c178db6099 --- /dev/null +++ b/modules/Admin/Language/ca/Common.php @@ -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' => 'SÃ', + 'no' => 'No', + 'cancel' => 'Cancel·lar', + 'optional' => 'Opcional', + 'more' => 'Més', + 'no_data' => 'No s\'han trobat dades.', + 'close' => 'Tancar', + 'edit' => 'Editar', + 'copy' => 'Copiar', + 'copied' => 'Copiat.', + 'home' => 'Inici', + 'explicit' => 'ExplÃcit', + 'powered_by' => 'Powered by {castopod}', + 'actions' => 'Accions', + 'pageInfo' => 'Pà gina {currentPage} de {pageCount}', + 'go_back' => 'Tornar enrere', + 'forms' => [ + 'editor' => [ + 'write' => 'Escriure', + 'preview' => 'Vista prèvia', + 'help' => 'Powered by markdown', + ], + 'multiSelect' => [ + 'selectText' => 'Premeu per seleccionar', + 'loadingText' => 'S\'està carregant…', + 'noResultsText' => 'No s\'han trobat resultats.', + 'noChoicesText' => 'No hi ha opcions per triar', + 'maxItemText' => 'No es poden afegir més elements', + ], + 'upload_file' => 'Pujar un fitxer', + 'remote_url' => 'URL remota', + ], + 'play_episode_button' => [ + 'play' => 'Reproduir', + 'playing' => 'S\'està reproduint', + ], + 'size_limit' => 'LÃmit de mida: {0}.', + 'choose_interact' => 'Escolliu com interactuar', + 'view' => 'Vista', +]; diff --git a/modules/Admin/Language/ca/Contributor.php b/modules/Admin/Language/ca/Contributor.php new file mode 100644 index 0000000000..61a8b38090 --- /dev/null +++ b/modules/Admin/Language/ca/Contributor.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_contributors' => 'Col·laboradors del podcast', + 'view' => "Aportació de {username} a {podcastTitle}", + 'add' => 'Afegir un col·laborador', + 'add_contributor' => 'Afegir un col·laborador de {0}', + 'edit_role' => 'Actualitzar el rol de {0}', + 'edit' => 'Editar', + 'remove' => 'Eliminar', + 'list' => [ + 'username' => 'Nom de l\'usuari', + 'role' => 'Rol', + ], + 'form' => [ + 'user' => 'Usuari', + 'user_placeholder' => 'Seleccionar un usuari…', + 'role' => 'Rol', + 'role_placeholder' => 'Seleccionar el seu rol…', + 'submit_add' => 'Afegir un col·laborador', + 'submit_edit' => 'Actualitzar el rol', + ], + 'roles' => [ + 'podcast_admin' => 'Administrador del podcast', + ], + 'messages' => [ + 'removeOwnerError' => "No podeu eliminar al propietari del podcast!", + 'removeSuccess' => + 'S\'ha eliminat a {username} de {podcastTitle}', + 'alreadyAddedError' => + "El col·laborador que esteu intentant afegir ja ha estat afegit!", + ], +]; diff --git a/modules/Admin/Language/ca/Countries.php b/modules/Admin/Language/ca/Countries.php new file mode 100644 index 0000000000..4636231f1c --- /dev/null +++ b/modules/Admin/Language/ca/Countries.php @@ -0,0 +1,264 @@ +<?php + +declare(strict_types=1); + +/** + * ISO 3166 country codes + * + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'AD' => 'Andorra', + 'AE' => 'Emirats Àrabs Units', + 'AF' => 'Afganistan', + 'AG' => 'Antigua i Barbuda', + 'AI' => 'Anguilla', + 'AL' => 'Albà nia', + 'AM' => 'Armènia', + 'AO' => 'Angola', + 'AQ' => 'Antà rtida', + 'AR' => 'Argentina', + 'AS' => 'Samoa Americana', + 'AT' => 'Àustria', + 'AU' => 'Austrà lia', + 'AW' => 'Aruba', + 'AX' => 'Illes Ã…land', + 'AZ' => 'Azerbaidjan', + 'BA' => 'Bòsnia i Herzegovina', + 'BB' => 'Barbados', + 'BD' => 'Bangladesh', + 'BE' => 'Bèlgica', + 'BF' => 'Burkina Faso', + 'BG' => 'Bulgà ria', + 'BH' => 'Bahrain', + 'BI' => 'Burundi', + 'BJ' => 'BenÃn', + 'BL' => 'Saint Barthélemy', + 'BM' => 'Bermudes', + 'BN' => 'Brunei Darussalam', + 'BO' => 'BolÃvia', + 'BQ' => 'Bonaire, Saint Eustatius i Saba', + 'BR' => 'Brasil', + 'BS' => 'Bahames', + 'BT' => 'Bhutan', + 'BV' => 'Illa Bouvet', + 'BW' => 'Botswana', + 'BY' => 'Bielorússia', + 'BZ' => 'Belize', + 'CA' => 'Canadà ', + 'CC' => 'Illes Cocos (Keeling)', + 'CD' => 'Congo, República Democrà tica del', + 'CF' => 'República Centreafricana', + 'CG' => 'Congo', + 'CH' => 'Suïssa', + 'CI' => "Costa d'Ivori", + 'CK' => 'Illes Cook', + 'CL' => 'Xile', + 'CM' => 'Camerun', + 'CN' => 'Xina', + 'CO' => 'Colòmbia', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CV' => 'Cap Verd', + 'CW' => 'Curaçao', + 'CX' => 'Illa Christmas', + 'CY' => 'Xipre', + 'CZ' => 'República Txeca', + 'DE' => 'Alemanya', + 'DJ' => 'Djibouti', + 'DK' => 'Dinamarca', + 'DM' => 'Dominica', + 'DO' => 'República Dominicana', + 'DZ' => 'Algèria', + 'EC' => 'Equador', + 'EE' => 'Estònia', + 'EG' => 'Egipte', + 'EH' => 'Sà hara Occidental', + 'ER' => 'Eritrea', + 'ES' => 'Espanya', + 'ET' => 'Etiòpia', + 'FI' => 'Finlà ndia', + 'FJ' => 'Illes Fiji', + 'FK' => 'Illes Malvines (Falkland)', + 'FM' => 'Micronèsia, Estats Federats de', + 'FO' => 'Illes Fèroe', + 'FR' => 'França', + 'GA' => 'Gabon', + 'GB' => 'Regne Unit', + 'GD' => 'Granada', + 'GE' => 'Geòrgia', + 'GF' => 'Guaiana Francesa', + 'GG' => 'Guernsey', + 'GH' => 'Ghana', + 'GI' => 'Gibraltar', + 'GL' => 'Groenlà ndia', + 'GM' => 'Gà mbia', + 'GN' => 'Guinea', + 'GP' => 'Guadalupe', + 'GQ' => 'Guinea Equatorial', + 'GR' => 'Grècia', + 'GS' => 'Illes Geòrgia del Sud i Sandwich del Sud', + 'GT' => 'Guatemala', + 'GU' => 'Guam', + 'GW' => 'Guinea-Bissau', + 'GY' => 'Guaiana', + 'HK' => 'Hong Kong', + 'HM' => 'Illa Heard i Illes McDonald', + 'HN' => 'Hondures', + 'HR' => 'Croà cia', + 'HT' => 'HaitÃ', + 'HU' => 'Hongria', + 'ID' => 'Indonèsia', + 'IE' => 'Irlanda', + 'IL' => 'Israel', + 'IM' => 'Illa de Man', + 'IN' => 'Ãndia', + 'IO' => 'Territori Brità nic de l’Oceà Ãndic', + 'IQ' => 'Iraq', + 'IR' => 'República Islà mica d\'Iran', + 'IS' => 'Islà ndia', + 'IT' => 'Ità lia', + 'JE' => 'Jersey', + 'JM' => 'Jamaica', + 'JO' => 'Jordà nia', + 'JP' => 'Japó', + 'KE' => 'Kènia', + 'KG' => 'Kirguizistan', + 'KH' => 'Cambodja', + 'KI' => 'Kiribati', + 'KM' => 'Comores', + 'KN' => 'Saint Kitts i Nevis', + 'KP' => "Corea, República Popular Democrà tica de", + 'KR' => 'Corea, República de', + 'KW' => 'Kuwait', + 'KY' => 'Illes Caiman', + 'KZ' => 'Kazakhstan', + 'LA' => "República Democrà tica Popular Laos", + 'LB' => 'LÃban', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LR' => 'Libèria', + 'LS' => 'Lesoto', + 'LT' => 'Lituà nia', + 'LU' => 'Luxemburg', + 'LV' => 'Letònia', + 'LY' => 'LÃbia', + 'MA' => 'Marroc', + 'MC' => 'Mònaco', + 'MD' => 'Moldà via', + 'ME' => 'Montenegro', + 'MF' => 'Saint Martin (part francesa)', + 'MG' => 'Madagascar', + 'MH' => 'Illes Marshall', + 'MK' => 'Macedònia', + 'ML' => 'Mali', + 'MM' => 'Myanmar', + 'MN' => 'Mongòlia', + 'MO' => 'Macau', + 'MP' => 'Illes Mariannes del Nord', + 'MQ' => 'Martinica', + 'MR' => 'Maurità nia', + 'MS' => 'Montserrat', + 'MT' => 'Malta', + 'MU' => 'Maurici', + 'MV' => 'Maldives', + 'MW' => 'Malaui', + 'MX' => 'Mèxic', + 'MY' => 'Malà isia', + 'MZ' => 'Moçambic', + 'N/A' => 'No aplicable (IP local...)', + 'NA' => 'NamÃbia', + 'NC' => 'Nova Caledònia', + 'NE' => 'NÃger', + 'NF' => 'Illa Norfolk', + 'NG' => 'Nigèria', + 'NI' => 'Nicaragua', + 'NL' => 'Països Baixos', + 'NO' => 'Noruega', + 'NP' => 'Nepal', + 'NR' => 'Naüru', + 'NU' => 'Niue', + 'NZ' => 'Nova Zelanda', + 'OM' => 'Oman', + 'PA' => 'Panamà ', + 'PE' => 'Perú', + 'PF' => 'Polinèsia Francesa', + 'PG' => 'Papua Nova Guinea', + 'PH' => 'Filipines', + 'PK' => 'Pakistan', + 'PL' => 'Polònia', + 'PM' => 'Saint Pierre i Miquelon', + 'PN' => 'Illes Pitcairn', + 'PR' => 'Puerto Rico', + 'PS' => 'Palestina', + 'PT' => 'Portugal', + 'PW' => 'Palau', + 'PY' => 'Paraguai', + 'QA' => 'Qatar', + 'RE' => 'Illa de la Reunió', + 'RO' => 'Romania', + 'RS' => 'Sèrbia', + 'RU' => 'Rússia', + 'RW' => 'Ruanda', + 'SA' => 'Arà bia Saudita', + 'SB' => 'Illes Salomó', + 'SC' => 'Seychelles', + 'SD' => 'Sudan', + 'SE' => 'Suècia', + 'SG' => 'Singapur', + 'SH' => 'Santa Helena, Ascensió i Tristan da Cunha', + 'SI' => 'Eslovènia', + 'SJ' => 'Svalbard i Jan Mayen', + 'SK' => 'Eslovà quia', + 'SL' => 'Sierra Leona', + 'SM' => 'San Marino', + 'SN' => 'Senegal', + 'SO' => 'Somà lia', + 'SR' => 'Surinam', + 'SS' => 'Sudan del Sud', + 'ST' => 'São Tomé i PrÃncipe', + 'SV' => 'El Salvador', + 'SX' => 'Sint Maarten (part neerlandesa)', + 'SY' => 'SÃria', + 'SZ' => 'Swazilà ndia', + 'TC' => 'Illes Turks i Caicos', + 'TD' => 'Txad', + 'TF' => 'Territoris Francesos del Sud', + 'TG' => 'Togo', + 'TH' => 'Tailà ndia', + 'TJ' => 'Tatgiquistan', + 'TK' => 'Tokelau', + 'TL' => 'Timor Oriental', + 'TM' => 'Turkmenistan', + 'TN' => 'TunÃsia', + 'TO' => 'Tonga', + 'TR' => 'Turquia', + 'TT' => 'Trinidad i Tobago', + 'TV' => 'Tuvalu', + 'TW' => 'Taiwan', + 'TZ' => 'Tanzà nia', + 'UA' => 'Ucraïna', + 'UG' => 'Uganda', + 'UM' => 'Illes Perifèriques Menors dels Eua', + 'US' => 'Estats Units d\'Amèrica', + 'UY' => 'Uruguai', + 'UZ' => 'Uzbekistan', + 'VA' => 'Ciutat del Vaticà ', + 'VC' => 'Saint Vincent i les Grenadines', + 'VE' => 'Veneçuela', + 'VG' => 'Illes Verges brità niques', + 'VI' => 'Illes Verges Nord-americanes', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WF' => 'Wallis i Futuna', + 'WS' => 'Samoa', + 'YE' => 'Iemen', + 'YT' => 'Mayotte', + 'ZA' => 'Sud-à frica', + 'ZM' => 'Zà mbia', + 'ZW' => 'Zimbabwe', +]; diff --git a/modules/Admin/Language/ca/Dashboard.php b/modules/Admin/Language/ca/Dashboard.php new file mode 100644 index 0000000000..3e484fdf25 --- /dev/null +++ b/modules/Admin/Language/ca/Dashboard.php @@ -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' => 'Panell de control', + 'welcome_message' => 'Benvinguts al panell de control.', + 'podcasts' => [ + 'title' => 'Podcasts', + 'not_found' => 'No hi ha podcasts publicats', + 'last_published' => 'Darrera publicació el {lastPublicationDate}', + ], + 'episodes' => [ + 'title' => 'Episodis', + 'not_found' => 'No hi ha episodis publicats', + 'last_published' => 'Darrera publicació el {lastPublicationDate}', + ], + 'storage' => [ + 'title' => 'Emmagatzematge', + 'subtitle' => '{totalUploaded} de {totalStorage}', + ], +]; diff --git a/modules/Admin/Language/ca/Episode.php b/modules/Admin/Language/ca/Episode.php new file mode 100644 index 0000000000..5be116ab12 --- /dev/null +++ b/modules/Admin/Language/ca/Episode.php @@ -0,0 +1,202 @@ +<?php + +declare(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' => 'Temporada {seasonNumber}', + 'season_abbr' => 'S{seasonNumber}', + 'number' => 'Episodi {episodeNumber}', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => 'Temporada {seasonNumber} episodi {episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}', + 'number_of_comments' => '{numberOfComments, plural, + one {# comentari} + other {# comentaris} + }', + 'all_podcast_episodes' => 'Tots els episodis del podcast', + 'back_to_podcast' => 'Tornar al podcast', + 'edit' => 'Editar', + 'publish' => 'Publicar', + 'publish_edit' => 'Editar la publicació', + 'unpublish' => 'Desfer la publicació', + 'publish_error' => 'L\'episodi ja està publicat.', + 'publish_edit_error' => 'L\'episodi ja està publicat.', + 'publish_cancel_error' => 'L\'episodi ja està publicat.', + 'unpublish_error' => 'L\'episodi no està publicat.', + 'delete' => 'Eliminar', + 'go_to_page' => 'Anar a la pà gina ', + 'create' => 'Afegir un episodi', + 'publication_status' => [ + 'published' => 'Publicat', + 'with_podcast' => 'Publicat', + 'scheduled' => 'Programat', + 'not_published' => 'No publicat', + ], + 'with_podcast_hint' => 'Per ser publicat al mateix temps que el podcast', + 'list' => [ + 'search' => [ + 'placeholder' => 'Cerca d\'un episodi', + 'clear' => 'Netejar la cerca', + 'submit' => 'Cercar', + ], + 'number_of_episodes' => '{numberOfEpisodes, plural, + one {# episodi} + other {# episodis} + }', + 'episode' => 'Episodi', + 'visibility' => 'Visibilitat', + 'comments' => 'Comentaris', + 'actions' => 'Accions', + ], + 'messages' => [ + 'createSuccess' => 'S\'ha creat l\'episodi correctament.', + 'editSuccess' => 'L\'episodi s\'ha actualitzat.', + 'publishSuccess' => '{publication_status, select, + published {L\'episodi s\'ha creat correctament.} + scheduled {S\'ha programat la publicació de l\'episodi.} + with_podcast {Aquest episodi serà publicat al mateix temps que el podcast.} + other {Aquest episodi no està publicat.} + }', + 'publishCancelSuccess' => 'S\'ha cancel·lat la publicació de l\'episodi.', + 'unpublishBeforeDeleteTip' => 'Heu de desfer la publicació de l\'episodi abans d\'esborrar-lo.', + 'scheduleDateError' => 'S\'ha de definir una data de publicació!', + 'deletePublishedEpisodeError' => 'Heu de desfer la publicació de l\'episodi abans d\'esborrar-lo.', + 'deleteSuccess' => 'S\'ha esborrat l\'episodi.', + 'deleteError' => 'No s\'ha pogut esborrar {type, select, + transcript {la transcripció} + chapters {els capÃtols} + image {la portada} + audio {l\'à udio} + other {el material} + } de l\'episodi.', + 'deleteFileError' => 'No s\'ha pogut esborrar el fitxer {file_path} {type, select, + transcript {de la transcripció} + chapters {dels episodis} + image {de la portada} + audio {de l\'à udio} + other {del material} + }. Podeu esborrar-los manualment del disc.', + 'sameSlugError' => 'Ja existeix un episodi amb aquest à lies.', + ], + 'form' => [ + 'file_size_error' => + 'El vostre fitxer és massa gran per ser pujat al servidor! La mida mà xima és {0}. Augmenteu els valors de `memory_limit`, `upload_max_filesize` i `post_max_size` al vostre fitxer de configuració php i després reinicieu el vostre servidor web per carregar el vostre fitxer.', + 'audio_file' => 'Fitxer d’à udio', + 'audio_file_hint' => 'Trieu un fitxer d\'à udio .mp3 o .m4a', + 'info_section_title' => 'Informació de l\'episodi', + 'cover' => 'Portada de l\'episodi', + 'cover_hint' => + 'Si no configureu cap portada, s\'utilitzarà la portada del podcast.', + 'cover_size_hint' => 'La portada ha de ser quadrada i com a mÃnim de 1400 px d\'amplada i alçada.', + 'title' => 'TÃtol', + 'title_hint' => + 'Hauria de contenir un nom de l\'episodi clar i concÃs. No especifiqueu aquà els números d\'episodi o temporada.', + 'permalink' => 'Enllaç permanent', + 'season_number' => 'Temporada ', + 'episode_number' => 'Episodi', + 'type' => [ + 'label' => 'Tipus', + 'full' => 'Complet', + 'full_hint' => 'Contingut complet (l\'episodi)', + 'trailer' => 'Trà iler', + 'trailer_hint' => 'Contingut breu i promocional que presenta una vista prèvia d\'aquest programa', + 'bonus' => 'Bonificació', + 'bonus_hint' => 'Contingut addicional per al programa (per exemple, informació entre bastidors o entrevistes amb el repartiment) o contingut promocional creuat per a un altre programa', + ], + 'parental_advisory' => [ + 'label' => 'AvÃs parental', + 'hint' => 'L\'episodi conté contingut explÃcit?', + 'undefined' => 'indefinit', + 'clean' => 'Net', + 'explicit' => 'ExplÃcit', + ], + 'show_notes_section_title' => 'Mostrar les notes', + 'show_notes_section_subtitle' => + 'Fins a 4000 carà cters, sigueu clar i concÃs. Les notes del programa ajuden els oients potencials a trobar l\'episodi.', + 'description' => 'Descripció', + 'description_footer' => 'Al peu de la descripció', + 'description_footer_hint' => + 'Aquest text s\'afegeix al final de la descripció de cada episodi, és un bon lloc per introduir els vostres enllaços socials, per exemple.', + 'additional_files_section_title' => 'Fitxers addicionals', + 'additional_files_section_subtitle' => + 'Aquests fitxers poden ser utilitzats per altres plataformes per oferir una millor experiència al vostre públic. Consulteu el {podcastNamespaceLink} per obtenir més informació.', + 'location_section_title' => 'Ubicació', + 'location_section_subtitle' => 'De quin lloc tracta aquest episodi?', + 'location_name' => 'Nom i adreça de la ubicació', + 'location_name_hint' => 'Pot ser una ubicació real o fictÃcia', + 'transcript' => 'Transcripció (subtÃtols)', + 'transcript_hint' => 'Només es permet fitxers .srt', + 'transcript_download' => 'Baixar la transcripció', + 'transcript_file' => 'Fitxer de la transcripció (.srt)', + 'transcript_remote_url' => 'URL remota per a la transcripció', + 'transcript_file_delete' => 'Eliminar el fitxer de la transcripció', + 'chapters' => 'CapÃtols', + 'chapters_hint' => 'El fitxer ha de tenir el format de capÃtols JSON.', + 'chapters_download' => 'Baixar els capÃtols', + 'chapters_file' => 'Fitxer dels capÃtols', + 'chapters_remote_url' => 'URL remota del fitxer de capÃtols', + 'chapters_file_delete' => 'Eliminar el fitxer de capÃtols', + 'advanced_section_title' => 'Parà metres avançats', + 'advanced_section_subtitle' => + 'Si necessiteu etiquetes RSS que Castopod no manega, configureu-les aquÃ.', + 'custom_rss' => 'Etiquetes RSS personalitzades pel podcast', + 'custom_rss_hint' => 'Això s\'injectarà dins de l\'etiqueta â¬itemâ.', + 'block' => 'L\'episodi s\'ha d\'amagar dels catà legs públics', + 'block_hint' => + 'L\'estat de visibilitat de l\'episodi: activar aquesta opció evita que l\'episodi aparegui a Apple Podcasts, Google Podcasts i qualsevol aplicació de tercers que extreu programes d\'aquests directoris. (No garantit)', + 'submit_create' => 'Crear un episodi', + 'submit_edit' => 'Desar l\'episodi', + ], + 'publish_form' => [ + 'back_to_episode_dashboard' => 'Tornar al panell de control dels episodis', + 'post' => 'La vostra publicació d\'anunci', + 'post_hint' => + "Escriviu un missatge per anunciar la publicació del vostre episodi. El missatge s'emetrà a tots els vostres seguidors al Fediverse i apareixerà a la pà gina d'inici del vostre podcast.", + 'message_placeholder' => 'Escriviu un missatge...', + 'publication_date' => 'Data de publicació', + 'publication_method' => [ + 'now' => 'Ara', + 'schedule' => 'Programar', + 'with_podcast' => 'Publicar juntament amb el podcast', + ], + 'scheduled_publication_date' => 'Data de publicació programada', + 'scheduled_publication_date_clear' => 'Netejar la data de publicació', + 'scheduled_publication_date_hint' => + 'Podeu programar el llançament de l\'episodi fixant una data de publicació futura. Aquest camp ha de tenir el format AAAA-MM-DD HH:mm', + 'submit' => 'Publicar', + 'submit_edit' => 'Editar la publicació', + 'cancel_publication' => 'Cancel·lar la publicació', + 'message_warning' => 'No heu escrit cap missatge per la publicació del vostre anunci!', + 'message_warning_hint' => 'Tenir un missatge augmenta la implicació social, donant lloc a una millor visibilitat del vostre episodi.', + 'message_warning_submit' => 'Publicar de totes maneres', + ], + 'unpublish_form' => [ + 'disclaimer' => + "Si desfeu la publicació de l'episodi, se suprimiran tots els comentaris i publicacions associades amb ell i s'eliminarà del fil RSS del podcast.", + 'understand' => 'Entenc, vull desfer la publicació de l\'episodi', + 'submit' => 'Desfer la publicació', + ], + 'delete_form' => [ + 'disclaimer' => + "Si suprimiu l'episodi, se suprimiran tots els fitxers multimèdia, comentaris, videoclips i fragments d'à udio associats amb ell.", + 'understand' => 'Entenc, vull suprimir aquest episodi', + 'submit' => 'Eliminar', + ], + 'embed' => [ + 'title' => 'Reproductor incrustable', + 'label' => + 'Trieu un color de tema, copieu el reproductor incrustable al porta-retalls i enganxeu-lo al vostre lloc web.', + 'clipboard_iframe' => 'Copiar el reproductor incrustable al porta-retalls', + 'clipboard_url' => 'Copiar l\'adreça al porta-retalls', + 'dark' => 'Fosc', + 'dark-transparent' => 'Fosc i transparent', + 'light' => 'Clar', + 'light-transparent' => 'Clar i transparent', + ], +]; diff --git a/modules/Admin/Language/ca/EpisodeNavigation.php b/modules/Admin/Language/ca/EpisodeNavigation.php new file mode 100644 index 0000000000..037761d4bd --- /dev/null +++ b/modules/Admin/Language/ca/EpisodeNavigation.php @@ -0,0 +1,23 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'go_to_page' => 'Veure la pà gina de l\'episodi', + 'dashboard' => 'Panell de control de l\'episodi', + 'episode-view' => 'Inici', + 'episode-edit' => 'Editar l\'episodi', + 'episode-persons-manage' => 'Administrar persones', + 'embed-add' => 'Reproductor incrustable', + 'clips' => 'Retalls', + 'video-clips-list' => 'VÃdeoclips', + 'video-clips-create' => 'Nou videoclip', + 'soundbites-list' => 'Fragments d\'à udio', + 'soundbites-create' => 'Nou fragment', +]; diff --git a/modules/Admin/Language/ca/Fediverse.php b/modules/Admin/Language/ca/Fediverse.php new file mode 100644 index 0000000000..c24839b137 --- /dev/null +++ b/modules/Admin/Language/ca/Fediverse.php @@ -0,0 +1,32 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'messages' => [ + 'actorNotFound' => 'No s\'ha trobat el compte!', + 'blockActorSuccess' => '{actor} ha estat bloquejat.', + 'unblockActorSuccess' => '{actor} ha estat desbloquejat.', + 'blockDomainSuccess' => '{domain} ha estat bloquejat.', + 'unblockDomainSuccess' => '{domain} ha estat desbloquejat.', + ], + 'blocked_actors' => 'Comptes bloquejats', + 'blocked_domains' => 'Dominis bloquejats', + 'block_lists_form' => [ + 'handle' => 'Àlias del compte', + 'handle_hint' => 'Escriviu el @nomusuari@domini del compte.', + 'domain' => 'Nom del domini', + 'submit' => 'Bloquejat!', + ], + 'list' => [ + 'actor' => 'Compte', + 'domain' => 'Nom del domini', + 'unblock' => 'Desbloquejar', + ], +]; diff --git a/modules/Admin/Language/ca/Home.php b/modules/Admin/Language/ca/Home.php new file mode 100644 index 0000000000..efac49c063 --- /dev/null +++ b/modules/Admin/Language/ca/Home.php @@ -0,0 +1,14 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'all_podcasts' => 'Tots els podcasts', + 'no_podcast' => 'No s\'han trobat podcasts', +]; diff --git a/modules/Admin/Language/ca/Install.php b/modules/Admin/Language/ca/Install.php new file mode 100644 index 0000000000..a8ae121caa --- /dev/null +++ b/modules/Admin/Language/ca/Install.php @@ -0,0 +1,61 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'manual_config' => 'Configuració manual', + 'manual_config_subtitle' => + 'Creeu un fitxer `.env` amb la vostra configuració i actualitzeu la pà gina per continuar amb la instal·lació.', + 'form' => [ + 'instance_config' => 'Configuració de la instà ncia', + 'hostname' => 'Nom del servidor (hostname)', + 'media_base_url' => 'URL de base pel multimèdia', + 'media_base_url_hint' => + 'Si utilitzeu un CDN i/o un servei d\'anà lisi de trà fic extern, podeu configurar-los aquÃ.', + 'admin_gateway' => 'Configurar la porta d\'enllaç (gateway)', + 'admin_gateway_hint' => + 'La ruta per accedir a l\'à rea d\'administració (p. ex., https://exemple.com/cp-admin). Està configurat per defecte com a cp-admin, us recomanem que el canvieu per motius de seguretat.', + 'auth_gateway' => 'Autenticació a la porta d\'enllaç', + 'auth_gateway_hint' => + 'La ruta per accedir a les pà gines d\'autenticació (p. ex. https://exemple.com/cp-auth). Està configurada per defecte com a cp-auth, us recomanem que el canvieu per motius de seguretat.', + 'database_config' => 'Configuració de la Base de Dades', + 'database_config_hint' => + 'Castopod s\'ha de connectar a la vostra base de dades MySQL (o MariaDB). Si no teniu aquesta informació necessà ria, poseu-vos en contacte amb l\'administrador del vostre servidor.', + 'db_hostname' => 'Nom del servidor (host) de la base de dades', + 'db_name' => 'Nom de la base de dades', + 'db_username' => 'Usuari de la base de dades', + 'db_password' => 'Contrasenya de la base de dades', + 'db_prefix' => 'Prefix de la base de dades', + 'db_prefix_hint' => + "El prefix emprat als noms de les taules de Castopod, deixeu-lo com està si no sabeu què significa.", + 'cache_config' => 'Configuració de la memòria cau', + 'cache_config_hint' => + 'Trieu el vostre gestor de memòria cau preferit. Deixeu-lo com a valor predeterminat si no teniu ni idea del que significa.', + 'cache_handler' => 'Gestor de memòria cau', + 'cacheHandlerOptions' => [ + 'file' => 'Fitxer', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => 'Següent', + 'submit' => 'Finalitzar la instal·lació', + 'create_superadmin' => 'Crear el vostre compte de super-usuari', + 'email' => 'Correu electrònic', + 'username' => 'Nom de l\'usuari', + 'password' => 'Contrasenya', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'El vostre compte de superadministrador s\'ha creat correctament. Inicieu sessió per començar a fer podcasts!', + 'databaseConnectError' => + 'Castopod no s\'ha pogut connectar a la vostra base de dades. Editeu la configuració de la vostra base de dades i torneu-ho a provar.', + 'writeError' => + "No s'ha pogut crear/escriure el fitxer `.env`. Heu de crear-lo manualment seguint la plantilla de fitxer `.env.example` del paquet Castopod.", + ], +]; diff --git a/modules/Admin/Language/ca/MyAccount.php b/modules/Admin/Language/ca/MyAccount.php new file mode 100644 index 0000000000..3522f7694d --- /dev/null +++ b/modules/Admin/Language/ca/MyAccount.php @@ -0,0 +1,18 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'info' => 'Informació del meu compte', + 'changePassword' => 'Canviar la meva contrasenya', + 'messages' => [ + 'wrongPasswordError' => "Heu introduït una contrasenya incorrecta, torneu a provar.", + 'passwordChangeSuccess' => 'S\'ha canviat correctament la contrasenya.', + ], +]; diff --git a/modules/Admin/Language/ca/Navigation.php b/modules/Admin/Language/ca/Navigation.php new file mode 100644 index 0000000000..77b48aee6e --- /dev/null +++ b/modules/Admin/Language/ca/Navigation.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'toggle_sidebar' => 'Ocultar/mostrar barra lateral', + 'go_to_website' => 'Anar al lloc web', + 'go_to_admin' => 'Anar al panell de control', + 'dashboard' => 'Panell de control', + 'admin' => 'Inici', + 'podcasts' => 'Podcasts', + 'podcast-list' => 'Tots els podcasts', + 'podcast-create' => 'Nou podcast', + 'podcast-import' => 'Importar un podcast', + 'persons' => 'Persones', + 'person-list' => 'Totes les persones', + 'person-create' => 'Persona nova', + 'fediverse' => 'Fediverse', + 'fediverse-blocked-actors' => 'Comptes bloquejats', + 'fediverse-blocked-domains' => 'Dominis bloquejats', + 'users' => 'Usuaris', + 'user-list' => 'Tots els usuaris', + 'user-create' => 'Nou usuari', + 'pages' => 'Pà gines', + 'page-list' => 'Totes les pà gines', + 'page-create' => 'Pà gina nova', + 'settings' => 'Preferències', + 'settings-general' => 'General', + 'settings-theme' => 'Tema', + 'account' => [ + 'my-account' => 'El meu compte', + 'change-password' => 'Canviar la contrasenya', + 'logout' => 'Tancar la sessió', + ], +]; diff --git a/modules/Admin/Language/ca/Notifications.php b/modules/Admin/Language/ca/Notifications.php new file mode 100644 index 0000000000..15b33d09a4 --- /dev/null +++ b/modules/Admin/Language/ca/Notifications.php @@ -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' => 'Notificacions', + 'reply' => '{actor_username} ha respost a la vostra publicació', + 'favourite' => '{actor_username} ha marcat com a preferit la vostra publicació', + 'reblog' => '{actor_username} ha compartit la vostra publicació', + 'follow' => '{actor_username} ha començat a seguir a {target_actor_username}', + 'no_notifications' => 'Cap notificació', + 'mark_all_as_read' => 'Marca tot com a llegit', +]; diff --git a/modules/Admin/Language/ca/Page.php b/modules/Admin/Language/ca/Page.php new file mode 100644 index 0000000000..26a9b5d3f3 --- /dev/null +++ b/modules/Admin/Language/ca/Page.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'back_to_home' => 'Tornar a l\'inici', + 'page' => 'Pà gina', + 'all_pages' => 'Totes les pà gines', + 'create' => 'Nova pà gina', + 'go_to_page' => 'Anar a la pà gina ', + 'edit' => 'Editar pà gina', + 'delete' => 'Suprimir la pà gina', + 'form' => [ + 'title' => 'TÃtol', + 'permalink' => 'Enllaç permanent', + 'content' => 'Contingut', + 'submit_create' => 'Crear una pà gina', + 'submit_edit' => 'Desar', + ], + 'messages' => [ + 'createSuccess' => 'La pà gina "{pageTitle}" s\'ha creat correctament.', + 'editSuccess' => 'La pà gina s\'ha actualitzat correctament.', + ], +]; diff --git a/modules/Admin/Language/ca/Pager.php b/modules/Admin/Language/ca/Pager.php new file mode 100644 index 0000000000..4401c8918d --- /dev/null +++ b/modules/Admin/Language/ca/Pager.php @@ -0,0 +1,21 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'pageNavigation' => 'Navegació de pà gina', + 'first' => 'Primera', + 'previous' => 'Anterior', + 'next' => 'Següent', + 'last' => 'Darrera', + 'older' => 'Més antiga', + 'newer' => 'Més recent', + 'invalidTemplate' => '{0} no és una plantilla de pà gina và lida.', + 'invalidPaginationGroup' => '{0} no és un grup de de paginació và lida', +]; diff --git a/modules/Admin/Language/ca/Person.php b/modules/Admin/Language/ca/Person.php new file mode 100644 index 0000000000..c82b805b85 --- /dev/null +++ b/modules/Admin/Language/ca/Person.php @@ -0,0 +1,65 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'persons' => 'Persones', + 'all_persons' => 'Totes les persones', + 'no_person' => 'No s\'ha trobat ningú.', + 'create' => 'Crear una persona', + 'view' => 'Veure la persona', + 'edit' => 'Editar la persona', + 'delete' => 'Esborrar la persona', + 'messages' => [ + 'createSuccess' => 'S\'ha creat la persona.', + 'editSuccess' => 'S\'ha actualitzat la persona.', + 'deleteSuccess' => 'S\'ha esborrat la persona.', + ], + 'form' => [ + 'avatar' => 'Avatar', + 'avatar_size_hint' => + 'L\'avatar ha de ser quadrat i com a mÃnim de 400 px d\'amplada i alçada.', + 'full_name' => 'Nom complet', + 'full_name_hint' => 'Aquest és el nom complet o à lies de la persona.', + 'unique_name' => 'Nom únic', + 'unique_name_hint' => 'Emprat en adreces URLs', + 'information_url' => 'URL informativa', + 'information_url_hint' => + 'URL d\'un recurs d\'informació rellevant sobre la persona, com ara una pà gina d\'inici o un perfil a una plataforma de tercers.', + 'submit_create' => 'Crear una persona', + 'submit_edit' => 'Desar canvis de la persona', + ], + 'podcast_form' => [ + 'title' => 'Administrar persones', + 'add_section_title' => 'Afegir una persona a aquest podcast', + 'add_section_subtitle' => 'Podeu triar diverses persones i rols.', + 'persons' => 'Persones', + 'persons_hint' => + 'Podeu seleccionar una o diverses persones amb les mateixes funcions. Primer heu de crear les persones.', + 'roles' => 'Rols', + 'roles_hint' => + 'Podeu seleccionar cap, un o diversos rols per a una persona.', + 'submit_add' => 'Afegir persones', + 'remove' => 'Eliminar', + ], + 'episode_form' => [ + 'title' => 'Administrar persones', + 'add_section_title' => 'Afegir persones a aquest episodi', + 'add_section_subtitle' => 'Podeu triar diverses persones i rols.', + 'persons' => 'Persones', + 'persons_hint' => + 'Podeu seleccionar una o diverses persones amb les mateixes funcions. Primer heu de crear les persones.', + 'roles' => 'Rols', + 'roles_hint' => + 'Podeu seleccionar cap, un o diversos rols per a una persona.', + 'submit_add' => 'Afegir persones', + 'remove' => 'Eliminar', + ], + 'credits' => 'Crèdits', +]; diff --git a/modules/Admin/Language/ca/Platforms.php b/modules/Admin/Language/ca/Platforms.php new file mode 100644 index 0000000000..cb1abfffc9 --- /dev/null +++ b/modules/Admin/Language/ca/Platforms.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => 'Plataformes', + 'home_url' => 'Visitar el lloc web de {platformName}', + 'submit_url' => 'Enviar el vostre podcast a {platformName}', + 'visible' => 'Mostrar a la pà gina d\'inici del podcast?', + 'on_embed' => 'Mostrar al reproductor incrustable?', + 'remove' => 'Suprimir {platformName}', + 'submit' => 'Desar', + 'messages' => [ + 'updateSuccess' => 'Els enllaços de les plataformes s\'han actualitzat correctament.', + 'removeLinkSuccess' => 'S\'ha eliminat l\'enllaç de la plataforma.', + 'removeLinkError' => + 'No s\'ha pogut eliminar l\'enllaç de la plataforma. Torneu a provar-ho.', + ], + 'description' => [ + 'podcasting' => 'L\'identificador del podcast en aquesta plataforma', + 'social' => 'L\'identificador del compte del podcast en aquesta plataforma', + 'funding' => 'Missatge de crida a l\'acció', + ], +]; diff --git a/modules/Admin/Language/ca/Podcast.php b/modules/Admin/Language/ca/Podcast.php new file mode 100644 index 0000000000..df8a8e3f92 --- /dev/null +++ b/modules/Admin/Language/ca/Podcast.php @@ -0,0 +1,307 @@ +<?php + +declare(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' => 'Tots els podcasts', + 'no_podcast' => 'No s\'han trobat podcasts!', + 'create' => 'Crear un podcast', + 'import' => 'Importar el podcast', + 'new_episode' => 'Nou episodi', + 'view' => 'Veure el podcast', + 'edit' => 'Editar el podcast', + 'publish' => 'Publicar el podcast', + 'publish_edit' => 'Editar la publicació', + 'delete' => 'Suprimir el podcast', + 'see_episodes' => 'Veure els episodis', + 'see_contributors' => 'Veure els col·laboradors', + 'go_to_page' => 'Anar a la pà gina ', + 'latest_episodes' => 'Darrers episodis', + 'see_all_episodes' => 'Veure tots els episodis', + 'draft' => 'Esborrany', + 'messages' => [ + 'createSuccess' => 'Podcast creat correctament.', + 'editSuccess' => 'El podcast s´ha actualitzat correctament.', + 'importSuccess' => 'El podcast s\'ha importat correctament.', + 'deleteSuccess' => 'El podcast @{podcast_handle} s\'ha eliminat correctament.', + 'deletePodcastMediaError' => 'No s\'ha pogut eliminar {type, select, + cover {la portada} + banner {el bà ner} + other {el material} + } del podcast.', + 'deleteEpisodeMediaError' => 'No s\'ha pogut eliminar {type, select, + transcript {la transcripció} + chapters {els capÃtols} + image {la portada} + audio {l\'à udio} + other {el material} + } de l\'episodi {episode_slug}.', + 'deletePodcastMediaFolderError' => 'No s\'ha pogut suprimir la carpeta multimèdia del podcast {folder_path}. Podeu eliminar-la manualment del vostre disc.', + 'podcastFeedUpdateSuccess' => 'Correctar actualització: {number_of_new_episodes, plural, + one {s\'ha afegit 1 episodi} + other {s\'han afegit # episodis} + } al podcast.', + 'podcastFeedUpToDate' => 'El podcast ja està actualitzat.', + 'podcastNotImported' => 'No s\'ha pogut actualitzar el podcast perquè no s\'havia importat.', + 'publishError' => 'Aquest podcast ja està publicat o bé està programat per a la seva publicació.', + 'publishEditError' => 'Aquest podcast no està programat per a la seva publicació.', + 'publishCancelSuccess' => 'La publicació del podcast s\'ha cancel·lat correctament.', + 'scheduleDateError' => 'S\'ha de definir una data de publicació!', + ], + 'form' => [ + 'identity_section_title' => 'Identitat del podcast', + 'identity_section_subtitle' => 'Aquests camps permeten fer-se notar.', + 'cover' => 'Portada del podcast', + 'cover_size_hint' => 'La portada ha de ser quadrada i com a mÃnim de 1400 px d\'amplada i alçada.', + 'banner' => 'Bà ner del podcast', + 'banner_size_hint' => 'El bà ner ha de tenir una proporció de 3:1 i tenir una amplada mÃnima de 1500 pÃxels.', + 'banner_delete' => 'Eliminar el bà ner del podcast', + 'title' => 'TÃtol', + 'handle' => 'Àlias', + 'handle_hint' => + 'S\'utilitza per identificar el podcast. S\'accepten NOMÉS majúscules, minúscules, números i guions baixos.', + 'type' => [ + 'label' => 'Tipus', + 'episodic' => 'Episòdic', + 'episodic_hint' => 'Si els episodis estan pensats per ser consumits sense cap ordre especÃfic. Els episodis més recents es presentaran primer.', + 'serial' => 'En sèrie', + 'serial_hint' => 'Si els episodis estan pensats per ser consumits en ordre seqüencial. Primer es presentaran els episodis més antics.', + ], + 'description' => 'Descripció', + 'classification_section_title' => 'Classificació', + 'classification_section_subtitle' => + 'Aquests camps afectaran el vostre públic i competència.', + 'language' => 'Idioma', + 'category' => 'Categoria', + 'category_placeholder' => 'Seleccioneu una categoria', + 'other_categories' => 'Altres categories', + 'parental_advisory' => [ + 'label' => 'AvÃs parental', + 'hint' => 'L\'episodi conté contingut explÃcit?', + 'undefined' => 'indefinit', + 'clean' => 'Net', + 'explicit' => 'ExplÃcit', + ], + 'author_section_title' => 'Autor', + 'author_section_subtitle' => 'Qui administra el podcast?', + 'owner_name' => 'Nom del propietari', + 'owner_name_hint' => + 'Només per a ús administratiu. Visible al fil RSS públic.', + 'owner_email' => 'Correu electrònic del propietari', + 'owner_email_hint' => + 'La majoria de plataformes l\'utilitzaran per verificar la propietat del podcast. Visible al fil RSS públic.', + 'publisher' => 'Editor', + 'publisher_hint' => + 'El grup encarregat de crear el programa. Sovint es refereix a l\'empresa matriu o a la xarxa d\'un podcast. Aquest camp de vegades s\'etiqueta com a "Autor".', + 'copyright' => 'Copyright', + 'location_section_title' => 'Ubicació', + 'location_section_subtitle' => 'De quin lloc tracta aquest podcast?', + 'location_name' => 'Nom i adreça de la ubicació', + 'location_name_hint' => 'Aquest pot ser un lloc real o fictici', + 'monetization_section_title' => 'Monetització', + 'monetization_section_subtitle' => + 'Guanyeu diners grà cies al vostre públic.', + 'payment_pointer' => '`Payment Pointer` per a `Web Monetization`', + 'payment_pointer_hint' => + 'Aquà és on rebreu diners grà cies al servei `Web Monetization`', + 'advanced_section_title' => 'Parà metres avançats', + 'advanced_section_subtitle' => + 'Si necessiteu etiquetes RSS que Castopod no manega, configureu-les aquÃ.', + 'custom_rss' => 'Etiquetes RSS personalitzades per al podcast', + 'custom_rss_hint' => 'Això s\'injectarà dins de l\'etiqueta â¬channelâ.', + 'new_feed_url' => 'Nova adreça URL del fil RSS', + 'new_feed_url_hint' => 'Utilitzeu aquest camp quan us moveu a un altre domini o plataforma d\'allotjament de podcasts. De manera predeterminada, el valor s\'estableix a l\'URL RSS actual si s\'importa el podcast.', + 'old_feed_url' => 'Antiga adreça URL del fil RSS', + 'update_feed' => 'Actualitzar el fil', + 'update_feed_tip' => 'Importar els darrers episodis d\'aquest podcast', + 'partnership' => 'Socis', + 'partner_id' => 'ID', + 'partner_link_url' => 'URL de l\'enllaç', + 'partner_image_url' => 'URL de la imatge', + 'partner_id_hint' => 'El vostre propi ID de soci', + 'partner_link_url_hint' => 'L\'adreça genèrica de l\'enllaç del soci', + 'partner_image_url_hint' => 'L\'adreça genèrica de la imatge del soci', + 'status_section_title' => 'Estat', + 'block' => 'El podcast s\'ha d\'amagar als catà legs públics', + 'block_hint' => + 'L\'estat de visibilitat del podcast: activar aquesta opció evita que el podcast aparegui a Apple Podcasts, Google Podcasts i qualsevol aplicació de tercers que extreu programes d\'aquests directoris. (No garantit)', + 'complete' => 'El podcast no tindrà capÃtols nous', + 'lock' => 'Eviteu que es el podcast sigui copiat', + 'lock_hint' => + 'L\'objectiu és indicar a altres plataformes de podcasts si tenen permÃs per importar aquest podcast i els seus episodis. Un valor de sà significa que s\'ha de rebutjar qualsevol intent d\'importar aquest podcast a una altra plataforma.', + 'submit_create' => 'Crear un podcast', + 'submit_edit' => 'Desar el podcast', + ], + 'category_options' => [ + 'uncategorized' => 'sense categoria', + 'arts' => 'Arts', + 'business' => 'Negocis', + 'comedy' => 'Comèdia', + 'education' => 'Educació', + 'fiction' => 'Ficció', + 'government' => 'Govern', + 'health_and_fitness' => 'Salut i fitness', + 'history' => 'Història', + 'kids_and_family' => 'Quitxalla i FamÃlia', + 'leisure' => 'Lleure', + 'music' => 'Música', + 'news' => 'NotÃcies', + 'religion_and_spirituality' => 'Religió i espiritualitat', + 'science' => 'Ciència', + 'society_and_culture' => 'Societat i cultura', + 'sports' => 'Esports', + 'technology' => 'Tecnologia', + 'true_crime' => 'Crims reals', + 'tv_and_film' => 'TV i pelÃcul·les', + 'books' => 'Llibres', + 'design' => 'Disseny', + 'fashion_and_beauty' => 'Moda i bellesa', + 'food' => 'Menjar', + 'performing_arts' => 'Arts escèniques', + 'visual_arts' => 'Arts visuals', + 'careers' => 'Carreres', + 'entrepreneurship' => 'Empreniment', + 'investing' => 'Inversió', + 'management' => 'Gestió', + 'marketing' => 'Mà rqueting', + 'non_profit' => 'Sense à nim de lucre', + 'comedy_interviews' => 'Entrevistes de comèdia', + 'improv' => 'Millora', + 'stand_up' => 'Monòlegs', + 'courses' => 'Cursos', + 'how_to' => 'Tutorials', + 'language_learning' => 'Aprenentatge d\'idiomes', + 'self_improvement' => 'Millora personal', + 'comedy_fiction' => 'Comèdia de ficció', + 'drama' => 'Drama', + 'science_fiction' => 'Ciència-ficció', + 'alternative_health' => 'Salut alternativa', + 'fitness' => 'Fitness', + 'medicine' => 'Medicina', + 'mental_health' => 'Salut mental', + 'nutrition' => 'Nutrició', + 'sexuality' => 'Sexualitat', + 'education_for_kids' => 'Educació infantil', + 'parenting' => 'Criança', + 'pets_and_animals' => 'Mascotes i animals', + 'stories_for_kids' => 'Contes per la quitxalla', + 'animation_and_manga' => 'Animació i manga', + 'automotive' => 'Automoció', + 'aviation' => 'Aviació', + 'crafts' => 'Artesanies', + 'games' => 'Jocs', + 'hobbies' => 'Aficions', + 'home_and_garden' => 'Llar i jardineria', + 'video_games' => 'Videojocs', + 'music_commentary' => 'Música, anà lisi', + 'music_history' => 'Música, història', + 'music_interviews' => 'Música, entrevistes', + 'business_news' => 'NotÃcies sobre negocis', + 'daily_news' => 'NotÃcies del dia', + 'entertainment_news' => 'NotÃcies d\'entreteniment', + 'news_commentary' => 'Comentaris sobre notÃcies', + 'politics' => 'PolÃtica', + 'sports_news' => 'NotÃcies d\'esports', + 'tech_news' => 'NotÃcies de tecnologia', + 'buddhism' => 'Budisme', + 'christianity' => 'Cristianisme', + 'hinduism' => 'Hinduisme', + 'islam' => 'Islam', + 'judaism' => 'Judaisme', + 'religion' => 'Religió', + 'spirituality' => 'Espiritualitat', + 'astronomy' => 'Astronomia', + 'chemistry' => 'QuÃmica', + 'earth_sciences' => 'Ciències ambientals', + 'life_sciences' => 'Ciències de la Vida', + 'mathematics' => 'Matemà tiques', + 'natural_sciences' => 'Ciències naturals', + 'nature' => 'Natura', + 'physics' => 'FÃsica', + 'social_sciences' => 'Ciències socials', + 'documentary' => 'Documentals', + 'personal_journals' => 'Diaris personals', + 'philosophy' => 'Filosofia', + 'places_and_travel' => 'Llocs i viatges', + 'relationships' => 'Relacions', + 'baseball' => 'Beisbol', + 'basketball' => 'Bà squet', + 'cricket' => 'Criquet', + 'fantasy_sports' => 'Esports de fantasia', + 'football' => 'Futbol', + 'golf' => 'Golf', + 'hockey' => 'Hoquei', + 'rugby' => 'Rugby', + 'running' => 'Córrer', + 'soccer' => 'Futbol soccer', + 'swimming' => 'Natació', + 'tennis' => 'Tennis', + 'volleyball' => 'Voleibol', + 'wilderness' => 'Naturalesa', + 'wrestling' => 'Lluita lliure', + 'after_shows' => 'Espectacles nocturns', + 'film_history' => 'Història del cinema', + 'film_interviews' => 'Entrevistes i cinema', + 'film_reviews' => 'Ressenyes de cinema', + 'tv_reviews' => 'Ressenyes de TV', + ], + 'publish_form' => [ + 'back_to_podcast_dashboard' => 'Tornar al panell de control del podcast', + 'post' => 'La vostra publicació d\'anunci', + 'post_hint' => + "Escriviu un missatge per anunciar la publicació del teu podcast. El missatge apareixerà destacat a la pà gina d'inici del vostre podcast.", + 'message_placeholder' => 'Escriviu un missatge...', + 'submit' => 'Publicar', + 'publication_date' => 'Data de publicació', + 'publication_method' => [ + 'now' => 'Ara', + 'schedule' => 'Programar', + ], + 'scheduled_publication_date' => 'Data de publicació programada', + 'scheduled_publication_date_hint' => + 'Podeu programar el llançament del podcast fixant una data de publicació futura. Aquest camp ha de tenir el format AAAA-MM-DD HH:mm', + 'submit_edit' => 'Editar la publicació', + 'cancel_publication' => 'Cancel·lar la publicació', + 'message_warning' => 'No heu escrit cap missatge per la publicació del vostre anunci!', + 'message_warning_hint' => 'Tenir un missatge augmenta la implicació social, donant lloc a una millor visibilitat del vostre podcast.', + 'message_warning_submit' => 'Publicar de totes maneres', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'mode d\'esborrany', + 'not_published' => 'Aquest podcast encara no s\'ha publicat.', + 'scheduled' => 'La publicació d\'aquest podcast està programada el dia {publication_date}.', + ], + 'delete_form' => [ + 'disclaimer' => + "Si suprimiu el podcast, se suprimiran tots els episodis, fitxers multimèdia, publicacions i estadÃstiques associats amb ell. Aquesta acció és irreversible, no els podreu recuperar després.", + 'understand' => 'Entenc, vull que el podcast s\'elimini permanentment', + 'submit' => 'Eliminar', + ], + 'by' => 'Per {publisher}', + 'season' => 'Temporada {seasonNumber}', + 'list_of_episodes_year' => 'Episodis del {year} ({episodeCount})', + 'list_of_episodes_season' => + 'Episodis de la temporada {seasonNumber} ({episodeCount})', + 'no_episode' => 'No s\'han trobat episodis.', + 'follow' => 'Seguir', + 'followers' => '{numberOfFollowers, plural, + one {# seguidor} + other {# seguidors} + }', + 'posts' => '{numberOfPosts, plural, + one {# publicació} + other {# publicacions} + }', + 'activity' => 'Activitat', + 'episodes' => 'Episodis', + 'sponsor' => 'Patrocinador', + 'funding_links' => 'Enllaços de finançament per {podcastTitle}', + 'find_on' => 'Trobar {podcastTitle} a', + 'listen_on' => 'Escoltant', +]; diff --git a/modules/Admin/Language/ca/PodcastImport.php b/modules/Admin/Language/ca/PodcastImport.php new file mode 100644 index 0000000000..81de5fdf62 --- /dev/null +++ b/modules/Admin/Language/ca/PodcastImport.php @@ -0,0 +1,37 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'warning' => + 'Aquest procediment pot trigar molt de temps. Com que la versió actual no mostra cap progrés mentre s\'executa, no veureu res actualitzat fins que no s\'hagi fet. En cas d\'error de temps d\'espera, augmenteu el valor `max_execution_time` a la configuració del PHP del servidor.', + 'old_podcast_section_title' => 'El podcast a importar', + 'old_podcast_section_subtitle' => + 'Assegura\'t de tenir els drets d\'aquest podcast abans d\'importar-lo. Copiar i difondre un podcast sense els drets adequats és pirateria i pot ser processat.', + 'imported_feed_url' => 'Adreça URL del fil', + 'imported_feed_url_hint' => 'El contingut del fil ha d\'estar en format xml o rss.', + 'new_podcast_section_title' => 'El nou podcast', + 'advanced_params_section_title' => 'Parà metres avançats', + 'advanced_params_section_subtitle' => + 'Mantingueu els valors predeterminats si no teniu idea de per a què serveixen els camps.', + 'slug_field' => 'Camp que s\'utilitzarà per calcular l\'à lies d\'un episodi', + 'description_field' => + 'Camp d\'origen utilitzat per a la descripció de l\'episodi / notes del programa', + 'force_renumber' => 'Forçar la renumeració dels episodis', + 'force_renumber_hint' => + 'Utilitzeu aquesta funcionalitat si el vostre podcast no té números d\'episodi però voleu configurar-los durant la importació.', + 'season_number' => 'Número de temporada', + 'season_number_hint' => + 'Utilitzeu aquesta opció si el vostre podcast no té un número de temporada però voleu establir-ne un durant la importació. Deixeu en blanc en cas contrari.', + 'max_episodes' => 'Nombre mà xim d\'episodis per importar', + 'max_episodes_hint' => 'Deixeu en blanc per importar tots els episodis', + 'lock_import' => + 'Aquest feed està protegit. No el podeu importar. Si sou el propietari, desprotegiu-lo a la plataforma d\'origen.', + 'submit' => 'Importar el podcast', +]; diff --git a/modules/Admin/Language/ca/PodcastNavigation.php b/modules/Admin/Language/ca/PodcastNavigation.php new file mode 100644 index 0000000000..39bf30ad0a --- /dev/null +++ b/modules/Admin/Language/ca/PodcastNavigation.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'go_to_page' => 'Anar a la pà gina del podcast', + 'dashboard' => 'Panell de control del podcast', + 'podcast-view' => 'Inici', + 'podcast-edit' => 'Editar el podcast', + 'podcast-persons-manage' => 'Administrar persones', + 'episodes' => 'Episodis', + 'episode-list' => 'Tots els episodis', + 'episode-create' => 'Nou episodi', + 'analytics' => 'EstadÃstiques', + 'podcast-analytics' => 'Visió general de l\'audiència', + 'podcast-analytics-webpages' => 'Visites a pà gines web', + 'podcast-analytics-locations' => 'Ubicacions', + 'podcast-analytics-unique-listeners' => 'Oients únics', + 'podcast-analytics-players' => 'Reproductors', + 'podcast-analytics-listening-time' => 'Temps d\'escolta', + 'podcast-analytics-time-periods' => 'PerÃodes de temps', + 'contributors' => 'Col·laboradors', + 'contributor-list' => 'Tots els col·laboradors', + 'contributor-add' => 'Afegir un col·laborador', + 'platforms' => 'Plataformes de tercers', + 'platforms-podcasting' => 'Podcasts', + 'platforms-social' => 'Xarxes socials', + 'platforms-funding' => 'Financiació', +]; diff --git a/modules/Admin/Language/ca/Settings.php b/modules/Admin/Language/ca/Settings.php new file mode 100644 index 0000000000..9ce4f305aa --- /dev/null +++ b/modules/Admin/Language/ca/Settings.php @@ -0,0 +1,56 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => 'Configuració general', + 'instance' => [ + 'title' => 'Instà ncia', + 'site_icon' => 'Icona del lloc', + 'site_icon_delete' => 'Esborra la icona del lloc', + 'site_icon_hint' => 'Les icones del lloc són el que veieu a les pestanyes del navegador, a la barra d\'adreces d\'interès i quan afegiu un lloc web com a drecera als dispositius mòbils.', + 'site_icon_helper' => 'La icona ha de ser quadrada i com a mÃnim 512 pÃxels d\'ample i d\'alçada.', + 'site_name' => 'Nom del lloc', + 'site_description' => 'Descripció de la web', + 'submit' => 'Desar', + 'editSuccess' => 'La instà ncia s\'ha actualitzat correctament.', + 'deleteIconSuccess' => 'La icona del lloc s\'ha eliminat correctament.', + ], + 'images' => [ + 'title' => 'Imatges', + 'subtitle' => 'Aquà podeu regenerar totes les imatges en funció dels originals que s\'han pujat. S\'utilitzarà si trobeu que falten algunes imatges. Aquesta tasca pot portar una estona.', + 'regenerate' => 'Regenerar les imatges', + 'regenerationSuccess' => 'Totes les imatges s\'han regenerat correctament.', + ], + 'housekeeping' => [ + 'title' => 'Tasques de neteja', + 'subtitle' => 'Realitzar diferents tasques de neteja. Utilitzeu aquesta funció si mai trobeu problemes amb els fitxers multimèdia o la integritat de les dades. Aquestes tasques poden trigar una estona.', + 'reset_counts' => 'Restablir els comptes', + 'reset_counts_helper' => 'Aquesta opció tornarà a calcular i restablir tots els recomptes de dades (nombre de seguidors, publicacions, comentaris, …).', + 'rewrite_media' => 'Reescriure les metadades multimèdia', + 'rewrite_media_helper' => 'Aquesta opció suprimirà tots els fitxers multimèdia superflus i els recrearà (imatges, fitxers d\'à udio, transcripcions, capÃtols, ...)', + 'clear_cache' => 'Esborrar tota la memòria cau', + 'clear_cache_helper' => 'Aquesta opció esborrarà la memòria cau redis o els fitxers de memòria cau.', + 'run' => 'Executar la neteja', + 'runSuccess' => 'S\'ha conclòs correctament la neteja!', + ], + 'theme' => [ + 'title' => 'Tema', + 'accent_section_title' => 'Color d\'èmfasi', + 'accent_section_subtitle' => 'Trieu el color per determinar l\'aspecte de totes les pà gines públiques.', + 'pine' => 'Pi', + 'crimson' => 'CarmesÃ', + 'amber' => 'Ambre', + 'lake' => 'Llac', + 'jacaranda' => 'Jacaranda', + 'onyx' => 'Onyx', + 'submit' => 'Desar', + 'setInstanceThemeSuccess' => 'El tema s\'ha actualitzat correctament.', + ], +]; diff --git a/modules/Admin/Language/ca/Soundbite.php b/modules/Admin/Language/ca/Soundbite.php new file mode 100644 index 0000000000..0a1e5eaece --- /dev/null +++ b/modules/Admin/Language/ca/Soundbite.php @@ -0,0 +1,31 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'list' => [ + 'title' => 'Fragments d\'à udio', + 'soundbite' => 'Fragment d\'à udio', + ], + 'messages' => [ + 'createSuccess' => 'El fragment d\'à udio s\'ha creat correctament.', + 'deleteSuccess' => 'El fragment d\'à udio s\'ha suprimit correctament.', + ], + 'form' => [ + 'title' => 'Nou fragment', + 'soundbite_title' => 'TÃtol del fragment', + 'start_time' => 'Començar a', + 'duration' => 'Durada', + 'submit' => 'Crear un fragment', + ], + 'play' => 'Reproduir el fragment', + 'stop' => 'Aturar el fragment', + 'create' => 'Nou fragment', + 'delete' => 'Suprimir el fragment', +]; diff --git a/modules/Admin/Language/ca/User.php b/modules/Admin/Language/ca/User.php new file mode 100644 index 0000000000..74228ec7bb --- /dev/null +++ b/modules/Admin/Language/ca/User.php @@ -0,0 +1,54 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'edit_roles' => "Editar els rols de {username}", + 'forcePassReset' => 'Força el restabliment de la contrasenya', + 'ban' => 'Bandejar', + 'unban' => 'Re-admetre', + 'delete' => 'Eliminar', + 'create' => 'Nou usuari', + 'view' => "Informació de {username}", + 'all_users' => 'Tots els usuaris', + 'list' => [ + 'user' => 'Usuari', + 'roles' => 'Rols', + 'banned' => 'Bandejat?', + ], + 'form' => [ + 'email' => 'Correu electrònic', + 'username' => 'Nom de l\'usuari', + 'password' => 'Contrasenya', + 'new_password' => 'Nova contrasenya', + 'roles' => 'Rols', + 'permissions' => 'Permisos', + 'submit_create' => 'Crea un usuari', + 'submit_edit' => 'Desar', + 'submit_password_change' => 'Canviat!', + ], + 'roles' => [ + 'superadmin' => 'Super administrador/a', + ], + 'messages' => [ + 'createSuccess' => + 'S\'ha creat l\'usuari! Es demanarà a {username} un restabliment de la contrasenya durant la primera autenticació.', + 'rolesEditSuccess' => + "S'han actualitzat correctament els rols de {username}.", + 'forcePassResetSuccess' => + 'Es demanarà a {username} un restabliment de contrasenya durant la següent visita.', + 'banSuccess' => '{username} ha estat bandejat.', + 'unbanSuccess' => '{username} ha estat desbandejat.', + 'banSuperAdminError' => + '{username} és un superadministrador, hom simplement no bandeja a un superadministrador...', + 'deleteSuperAdminError' => + '{username} és un superadministrador, hom simplement no elimina a un superadministrador...', + 'deleteSuccess' => '{username} ha estat eliminat.', + ], +]; diff --git a/modules/Admin/Language/ca/Validation.php b/modules/Admin/Language/ca/Validation.php new file mode 100644 index 0000000000..6740204a44 --- /dev/null +++ b/modules/Admin/Language/ca/Validation.php @@ -0,0 +1,18 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'min_dims' => + '{field} no és una imatge, o no és prou ample o alt.', + 'is_image_ratio' => + '{field} no és una imatge o no té la proporció correcta.', + 'validate_url' => + 'El camp {field} ha de ser una adreça URL và lida (p. ex., https://exemple.com/).', +]; diff --git a/modules/Admin/Language/ca/VideoClip.php b/modules/Admin/Language/ca/VideoClip.php new file mode 100644 index 0000000000..b8b49f8011 --- /dev/null +++ b/modules/Admin/Language/ca/VideoClip.php @@ -0,0 +1,72 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'list' => [ + 'title' => 'VÃdeoclips', + 'status' => [ + 'label' => 'Estat', + 'queued' => 'en cua', + 'queued_hint' => 'El clip està esperant a ser processat.', + 'pending' => 'pendent', + 'pending_hint' => 'El clip es generarà aviat.', + 'running' => 'en execució', + 'running_hint' => 'S\'està generant el clip.', + 'failed' => 'ha fallat', + 'failed_hint' => 'No s\'ha pogut generar el clip: error de l\'script.', + 'passed' => 'passat', + 'passed_hint' => 'El clip s\'ha generat correctament.', + ], + 'clip' => 'Clip', + 'duration' => 'Duració de la tasca', + ], + 'title' => 'Videoclip: {videoClipLabel}', + 'download_clip' => 'Baixar el clip', + 'create' => 'Nou videoclip', + 'go_to_page' => 'Anar a la pà gina del clip ', + 'retry' => 'Intentar de nou la generació del clip', + 'delete' => 'Eliminar el clip', + 'logs' => 'Registres de la tasca', + 'messages' => [ + 'alreadyExistingError' => 'El videoclip que intenteu crear ja existeix!', + 'addToQueueSuccess' => 'El videoclip s\'ha afegit a la cua, a l\'espera de ser creat!', + 'deleteSuccess' => 'El videoclip s\'ha eliminat correctament.', + ], + 'format' => [ + 'landscape' => 'Horitzontal', + 'portrait' => 'Vertical', + 'squared' => 'Quadrat', + ], + 'form' => [ + 'title' => 'Nou videoclip', + 'params_section_title' => 'Parà metres del videoclip', + 'clip_title' => 'TÃtol del videoclip', + 'format' => [ + 'label' => 'Trieu el format', + 'landscape_hint' => 'Amb una proporció de 16:9, els vÃdeos horitzontals són ideals per a PeerTube, Youtube i Vimeo.', + 'portrait_hint' => 'Amb una proporció de 9:16, els vÃdeos verticals són ideals per a TikTok, curts de Youtube i històries d\'Instagram.', + 'squared_hint' => 'Amb una proporció 1:1, els vÃdeos quadrats són ideals per a Mastodon, Facebook, Twitter i LinkedIn.', + ], + 'theme' => 'Trieu un tema', + 'start_time' => 'Començar a', + 'duration' => 'Durada', + 'trim_start' => 'Retallar l\'inici', + 'trim_end' => 'Retallar el final', + 'submit' => 'Crear videoclip', + ], + 'requirements' => [ + 'title' => 'Falten requisits', + 'missing' => 'Et falten requisits. Assegureu-vos d\'afegir tots els elements necessaris per poder crear un vÃdeo per a aquest episodi.', + 'ffmpeg' => 'FFmpeg', + 'gd' => 'Graphics Draw (GD)', + 'freetype' => 'Llibreria `FreeType` per a GD', + 'transcript' => 'Fitxer de la transcripció (.srt)', + ], +]; diff --git a/modules/Admin/Language/es/Breadcrumb.php b/modules/Admin/Language/es/Breadcrumb.php index e06fe65784..fe47d6e83f 100644 --- a/modules/Admin/Language/es/Breadcrumb.php +++ b/modules/Admin/Language/es/Breadcrumb.php @@ -45,5 +45,5 @@ return [ 'soundbites' => 'fragmentos de sonido', 'video-clips' => 'clips de vÃdeo', 'embed' => 'reproductor embebido', - 'notifications' => 'notifications', + 'notifications' => 'notificaciones', ]; diff --git a/modules/Admin/Language/es/Charts.php b/modules/Admin/Language/es/Charts.php index e7acb71ca5..fee7dda4b3 100644 --- a/modules/Admin/Language/es/Charts.php +++ b/modules/Admin/Language/es/Charts.php @@ -35,6 +35,6 @@ return [ 'by_weekday' => 'Por dÃa de semana (para los últimos 60 dÃas)', 'by_hour' => 'Por hora del dÃa (para los últimos 60 dÃas)', 'podcast_by_bandwidth' => 'Ancho de banda diario usado (en MB)', - 'total_storage_by_month' => 'Monthly storage (in MB)', - 'total_bandwidth_by_month' => 'Monthly used bandwidth (in MB)', + 'total_storage_by_month' => 'Almacenamiento mensual (en MB)', + 'total_bandwidth_by_month' => 'Ancho de banda mensual usado (en MB)', ]; diff --git a/modules/Admin/Language/es/Common.php b/modules/Admin/Language/es/Common.php index 91d41dc1ca..b64ee73d48 100644 --- a/modules/Admin/Language/es/Common.php +++ b/modules/Admin/Language/es/Common.php @@ -46,6 +46,6 @@ return [ 'playing' => 'Reproduciendo', ], 'size_limit' => 'LÃmite de tamaño: {0}.', - 'choose_interact' => 'Choose how to interact', - 'view' => 'View', + 'choose_interact' => 'Elegir cómo interactuar', + 'view' => 'Ver', ]; diff --git a/modules/Admin/Language/es/Dashboard.php b/modules/Admin/Language/es/Dashboard.php index 881073fd26..e797f0a031 100644 --- a/modules/Admin/Language/es/Dashboard.php +++ b/modules/Admin/Language/es/Dashboard.php @@ -9,20 +9,20 @@ declare(strict_types=1); */ return [ - 'home' => 'Admin dashboard', - 'welcome_message' => 'Welcome to the admin area!', + 'home' => 'Panel de control', + 'welcome_message' => '¡Bienvenid@ al área de administración!', 'podcasts' => [ 'title' => 'Podcasts', - 'not_found' => 'No published podcast', - 'last_published' => 'Last published on {lastPublicationDate}', + 'not_found' => 'Podcasts sin publicar', + 'last_published' => 'Últimas publicaciones en {lastPublicationDate}', ], 'episodes' => [ - 'title' => 'Episodes', - 'not_found' => 'No published episode', - 'last_published' => 'Last published on {lastPublicationDate}', + 'title' => 'Episodios', + 'not_found' => 'Episodios sin publicar', + 'last_published' => 'Últimas publicaciones en {lastPublicationDate}', ], 'storage' => [ - 'title' => 'Storage', - 'subtitle' => '{totalUploaded} out of {totalStorage}', + 'title' => 'Almacenamiento', + 'subtitle' => '{totalUploaded} de {totalStorage}', ], ]; diff --git a/modules/Admin/Language/es/Episode.php b/modules/Admin/Language/es/Episode.php index 7c7c7047bd..4804039570 100644 --- a/modules/Admin/Language/es/Episode.php +++ b/modules/Admin/Language/es/Episode.php @@ -34,20 +34,20 @@ return [ 'create' => 'Añadir un episodio', 'publication_status' => [ 'published' => 'Publicado', - 'with_podcast' => 'Published', + 'with_podcast' => 'Publicado', 'scheduled' => 'Programado', 'not_published' => 'No publicado', ], - 'with_podcast_hint' => 'To be published at the same time as the podcast', + 'with_podcast_hint' => 'A publicar al mismo tiempo que el podcast', 'list' => [ 'search' => [ - 'placeholder' => 'Search for an episode', - 'clear' => 'Clear search', - 'submit' => 'Search', + 'placeholder' => 'Buscar un episodio', + 'clear' => 'Limpiar la búsqueda', + 'submit' => 'Buscar', ], 'number_of_episodes' => '{numberOfEpisodes, plural, - one {# episode} - other {# episodes} + one {# episodio} + other {# episodios} }', 'episode' => 'Episodio', 'visibility' => 'Visibilidad', @@ -58,14 +58,14 @@ return [ 'createSuccess' => '¡El episodio ha sido creado correctamente!', 'editSuccess' => '¡El episodio ha sido actualizado correctamente!', '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.} + published {¡Episodio publicado con éxito!} + scheduled {¡Publicación del episodio programada con éxito!} + with_podcast {Este episodio se publicará al mismo tiempo que el podcast.} + other {Este episodio no está publicado.} }', 'publishCancelSuccess' => '¡La publicación del episodio ha sido cancelada correctamente!', 'unpublishBeforeDeleteTip' => 'Debe anular la publicación del episodio antes de eliminarlo.', - 'scheduleDateError' => 'Schedule date must be set!', + 'scheduleDateError' => '¡Se debe definir una fecha de publicación!', 'deletePublishedEpisodeError' => 'Por favor, anule la publicación del episodio antes de eliminarlo.', 'deleteSuccess' => '¡Episodio eliminado con éxito!', 'deleteError' => 'Error al eliminar episodio {type, select, @@ -75,13 +75,13 @@ return [ 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.', + 'deleteFileError' => 'Hubo un problema al tratar de eliminar el archivo {file_path} {type, select, + transcript {de la transcripción} + chapters {de los episodios} + image {de la portada} + audio {del audio} + other {} + }. Puedes eliminarlo manualmente de tu disco.', 'sameSlugError' => 'Ya existe un episodio con el slug elegido.', ], 'form' => [ @@ -93,7 +93,7 @@ return [ 'cover' => 'Portada del episodio', 'cover_hint' => 'Si no establece una portada, la portada del podcast se utilizará en su lugar.', - 'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.', + 'cover_size_hint' => 'La portada debe ser cuadrada con al menos 1400 px de ancho y alto.', 'title' => 'TÃtulo', 'title_hint' => 'Debe contener un nombre de episodio claro y conciso. No especifique los números de episodio o temporada aquÃ.', @@ -147,9 +147,9 @@ return [ 'Si necesita etiquetas RSS que Castopod no maneja, póngalas aquÃ.', 'custom_rss' => 'Etiquetas RSS personalizadas para el episodio', 'custom_rss_hint' => 'Esto se inyectará dentro de la etiqueta del {item}.', - 'block' => 'Episode should be hidden from public catalogues', + 'block' => 'El episodio debe ocultarse a los catálogos públicos', '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)', + 'El estado de visibilidad del episodio: al activar esto se impide que el episodio aparezca en Apple Podcasts, Google Podcasts y cualquier aplicación de terceros que extraiga episodios de estos directorios. (no está garantizado al 100%)', 'submit_create' => 'Crear episodio', 'submit_edit' => 'Guardar episodio', ], @@ -163,7 +163,7 @@ return [ 'publication_method' => [ 'now' => 'Ahora', 'schedule' => 'Programar', - 'with_podcast' => 'Publish alongside podcast', + 'with_podcast' => 'Publicar junto al podcast', ], 'scheduled_publication_date' => 'Fecha programada de publicación', 'scheduled_publication_date_clear' => 'Borrar fecha de publicación', @@ -178,7 +178,7 @@ return [ ], '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.", + "Al anular la publicación del episodio se eliminarán todos los comentarios y mensajes asociados a él y el episodio será eliminado del feed RSS del podcast.", 'understand' => 'Lo entiendo, quiero anular la publicación del episodio', 'submit' => 'Anular publicación', ], diff --git a/modules/Admin/Language/es/Notifications.php b/modules/Admin/Language/es/Notifications.php index 1772ba76b2..7f2a0a290b 100644 --- a/modules/Admin/Language/es/Notifications.php +++ b/modules/Admin/Language/es/Notifications.php @@ -9,11 +9,11 @@ declare(strict_types=1); */ 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 {target_actor_username}', - 'no_notifications' => 'No notifications', - 'mark_all_as_read' => 'Mark all as read', + 'title' => 'Notificaciones', + 'reply' => '{actor_username} respondió a tu publicación', + 'favourite' => '{actor_username} ha marcado como favorita tu publicación', + 'reblog' => '{actor_username} ha compartido tu publicación', + 'follow' => '{actor_username} ha comenzado a seguir a {target_actor_username}', + 'no_notifications' => 'No hay notificaciones', + 'mark_all_as_read' => 'Marcar todas como leÃdas', ]; diff --git a/modules/Admin/Language/es/Person.php b/modules/Admin/Language/es/Person.php index 15a70f41b0..c9e4c1a6ee 100644 --- a/modules/Admin/Language/es/Person.php +++ b/modules/Admin/Language/es/Person.php @@ -24,7 +24,7 @@ return [ 'form' => [ 'avatar' => 'Avatar', 'avatar_size_hint' => - 'Avatar must be squared and at least 400px wide and tall.', + 'El avatar debe ser cuadrado y al menos 400 px de ancho y alto.', 'full_name' => 'Nombre completo', 'full_name_hint' => 'Este es el nombre completo o el alias de la persona.', 'unique_name' => 'Nombre único', diff --git a/modules/Admin/Language/es/Podcast.php b/modules/Admin/Language/es/Podcast.php index 5d885d73e4..33abd9b6b4 100644 --- a/modules/Admin/Language/es/Podcast.php +++ b/modules/Admin/Language/es/Podcast.php @@ -16,51 +16,51 @@ return [ 'new_episode' => 'Nuevo episodio', 'view' => 'Ver Podcast', 'edit' => 'Editar el Podcast', - 'publish' => 'Publish podcast', - 'publish_edit' => 'Edit publication', + 'publish' => 'Publicar podcast', + 'publish_edit' => 'Editar la publicación', 'delete' => 'Eliminar podcast', 'see_episodes' => 'Ver episodios', 'see_contributors' => 'Ver colaboradores', 'go_to_page' => 'Ir a la página', 'latest_episodes' => 'Últimos Episodios', 'see_all_episodes' => 'Mostrar todos los episodios', - 'draft' => 'Draft', + 'draft' => 'Borrador', 'messages' => [ - 'createSuccess' => 'Podcast successfully created!', + 'createSuccess' => '¡El Podcast ha sido creado con éxito!', 'editSuccess' => 'El Podcast se ha actualizado correctamente!', 'importSuccess' => 'El Podcast se ha importado correctamente!', - 'deleteSuccess' => 'Podcast @{podcast_handle} successfully deleted!', - 'deletePodcastMediaError' => 'Failed to delete podcast {type, select, - cover {cover} - banner {banner} - other {media} - }.', - 'deleteEpisodeMediaError' => 'Failed to delete podcast episode {episode_slug} {type, select, - transcript {transcript} - chapters {chapters} - image {cover} - audio {audio} - other {media} - }.', - 'deletePodcastMediaFolderError' => 'Failed to delete podcast media folder {folder_path}. You may manually remove it from your disk.', - 'podcastFeedUpdateSuccess' => 'Successful update: {number_of_new_episodes, plural, - one {# episode was} - other {# episodes were} - } added to the podcast!', - 'podcastFeedUpToDate' => 'Podcast is already up to date.', - 'podcastNotImported' => 'Podcast could not be updated as it was not imported.', - 'publishError' => 'This podcast is either already published or scheduled for publication.', - 'publishEditError' => 'This podcast is not scheduled for publication.', - 'publishCancelSuccess' => 'Podcast publication successfully cancelled!', - 'scheduleDateError' => 'Schedule date must be set!', + 'deleteSuccess' => '¡El Podcast @{podcast_handle} ha sido eliminado con éxito!', + 'deletePodcastMediaError' => 'No se ha podido eliminar {type, select, + cover {la portada} + banner {el cartel} + other {el material} + } del podcast.', + 'deleteEpisodeMediaError' => 'No se ha podido elminar {type, select, + transcript {la transcripción} + chapters {los episodios} + image {la portada} + audio {el audio} + other {el material} + } del episodio {episode_slug}.', + 'deletePodcastMediaFolderError' => 'No se pudo eliminar la carpeta del material del podcast {folder_path}. Puedes eliminarla manualmente del disco.', + 'podcastFeedUpdateSuccess' => '¡Actualización exitosa: {number_of_new_episodes, plural, + one {se ha añadido un episodio} + other {se han añadido # episodios} + } al podcast!', + 'podcastFeedUpToDate' => 'El Podcast ya está actualizado.', + 'podcastNotImported' => 'Podcast no pudo ser actualizado porque no fue importado.', + 'publishError' => 'Este podcast ya ha sido publicado o está programado para su publicación.', + 'publishEditError' => 'Este podcast no está programado para ser publicado.', + 'publishCancelSuccess' => '¡La publicación del podcast ha sido cancelada con éxito!', + 'scheduleDateError' => '¡Se debe definir una fecha de publicación!', ], 'form' => [ 'identity_section_title' => 'Identidad de Podcast', 'identity_section_subtitle' => 'Estos campos le permiten recibir un aviso.', 'cover' => 'Portada de Podcast', - 'cover_size_hint' => 'Cover must be squared and at least 1400px wide and tall.', + 'cover_size_hint' => 'La portada debe ser cuadrada y con al menos 1400 px de ancho y alto.', 'banner' => 'Cartel del Podcast', - 'banner_size_hint' => 'Banner must have a 3:1 ratio and be at least 1500px wide.', + 'banner_size_hint' => 'El cartel debe tener una relación de 3:1 con al menos 1500 px de ancho.', 'banner_delete' => 'Borrar el cartel del podcast', 'title' => 'TÃtulo', 'handle' => 'Alias', @@ -117,9 +117,9 @@ return [ 'custom_rss_hint' => 'Esto se inyectará dentro de la etiqueta de canal.', 'new_feed_url' => 'Nueva URL de feed', 'new_feed_url_hint' => 'Utilice este campo cuando se mueva a otro dominio o plataforma de alojamiento podcast. De forma predeterminada, el valor se establece en la URL actual de RSS si el podcast es importado.', - 'old_feed_url' => 'Old feed URL', - 'update_feed' => 'Update feed', - 'update_feed_tip' => 'Import this podcast\'s latest episodes', + 'old_feed_url' => 'Antigua URL del feed RSS', + 'update_feed' => 'Actualizar el feed', + 'update_feed_tip' => 'Importar los últimos episodios de este podcast', 'partnership' => 'Asociación', 'partner_id' => 'ID', 'partner_link_url' => 'URL del enlace', @@ -128,9 +128,9 @@ return [ 'partner_link_url_hint' => 'La dirección genérica de enlace de socio', 'partner_image_url_hint' => 'La dirección de imagen genérica del socio', 'status_section_title' => 'Estado', - 'block' => 'Podcast should be hidden from public catalogues', + 'block' => 'El podcast debe ocultarse a los catálogos públicos', 'block_hint' => - 'The podcast show or hide status: toggling this on prevents the entire podcast from appearing in Apple Podcasts, Google Podcasts, and any third party apps that pull shows from these directories. (Not guaranteed)', + 'El estado de visibilidad del podcast: al activar esto se impide que este podcast al completo aparezca en Apple Podcasts, Google Podcasts y cualquier aplicación de terceros que extraiga episodios de estos directorios. (no está garantizado al 100%)', 'complete' => 'El Podcast no tendrá nuevos episodios', 'lock' => 'Evitar que el podcast sea copiado', 'lock_hint' => @@ -252,36 +252,36 @@ return [ 'tv_reviews' => 'Reseñas de TV', ], 'publish_form' => [ - 'back_to_podcast_dashboard' => 'Back to podcast dashboard', - 'post' => 'Your announcement post', + 'back_to_podcast_dashboard' => 'Regresar al panel de control del podcast', + 'post' => 'Tu publicación de anuncio', 'post_hint' => - "Write a message to announce the publication of your podcast. The message will be featured in your podcast's homepage.", - 'message_placeholder' => 'Write your message…', - 'submit' => 'Publish', - 'publication_date' => 'Publication date', + "Escribe un mensaje para anunciar la publicación de tu podcast. El mensaje aparecerá destacado en la página principal del podcast.", + 'message_placeholder' => 'Redacta tu mensaje…', + 'submit' => 'Publicar', + 'publication_date' => 'Fecha de publicación', 'publication_method' => [ - 'now' => 'Now', - 'schedule' => 'Schedule', + 'now' => 'Ahora', + 'schedule' => 'Programación', ], - 'scheduled_publication_date' => 'Scheduled publication date', + 'scheduled_publication_date' => 'Fecha de publicación programada', 'scheduled_publication_date_hint' => - 'You can schedule the podcast release by setting a future publication date. This field must be formatted as YYYY-MM-DD HH:mm', - '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 podcast.', - 'message_warning_submit' => 'Publish anyway', + 'Puede programar el lanzamiento del podcast definiendo una fecha de publicación futura. Este campo debe ser formateado asà YYYY-MM-DD HH:mm', + 'submit_edit' => 'Editar publicación', + 'cancel_publication' => 'Cancelar publicación', + 'message_warning' => '¡No has escrito un mensaje para el anuncio tu publicación!', + 'message_warning_hint' => 'Incluir un mensaje aumenta el interés en las redes sociales, resultando en una mayor visibilidad de tu podcast.', + 'message_warning_submit' => 'Publicar de todos modos', ], 'publication_status_banner' => [ - 'draft_mode' => 'draft mode', - 'not_published' => 'This podcast is not yet published.', - 'scheduled' => 'This podcast is scheduled for publication on {publication_date}.', + 'draft_mode' => 'modo borrador', + 'not_published' => 'Este podcast aún no ha sido publicado.', + 'scheduled' => 'Este podcast está programado para su publicación el {publication_date}.', ], 'delete_form' => [ 'disclaimer' => - "Deleting the podcast will delete all episodes, media files, posts and analytics associated with it. This action is irreversible, you will not be able to retrieve them afterwards.", - 'understand' => 'I understand, I want the podcast to be permanently deleted', - 'submit' => 'Delete', + "Al eliminar el podcast, se eliminarán todos los episodios, archivos multimedia, mensajes y estadÃsticas asociados a él. Esta acción es irreversible, no podrá recuperarlos después de la eliminación.", + 'understand' => 'Entiendo, quiero que el podcast sea eliminado permanentemente', + 'submit' => 'Eliminar', ], 'by' => 'Por {publisher}', 'season' => 'Temporada {seasonNumber}', @@ -291,12 +291,12 @@ return [ 'no_episode' => '¡No se encontró el episodio!', 'follow' => 'Seguir', 'followers' => '{numberOfFollowers, plural, - one {# follower} - other {# followers} + one {Un seguidor} + other {# seguidores} }', 'posts' => '{numberOfPosts, plural, - one {# post} - other {# posts} + one {Una publicación} + other {# publicaciones} }', 'activity' => 'Actividad', 'episodes' => 'Episodios', diff --git a/modules/Admin/Language/es/PodcastImport.php b/modules/Admin/Language/es/PodcastImport.php index dbe489f493..96cef94d9d 100644 --- a/modules/Admin/Language/es/PodcastImport.php +++ b/modules/Admin/Language/es/PodcastImport.php @@ -10,7 +10,7 @@ declare(strict_types=1); return [ 'warning' => - '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.', + 'Este procedimiento puede llevar mucho tiempo. Como la versión actual no muestra ningún progreso mientras se ejecuta, no verás nada actualizado hasta que termine. En el caso de recibir un mensaje de error por falta de tiempo (Timeout error), incrementa el valor `max_execution_time` en la configuración del PHP del servidor.', 'old_podcast_section_title' => 'Podcasts para importar', 'old_podcast_section_subtitle' => 'Asegúrese de que tiene los derechos para este podcast antes de importarlo. Copiar y difundir un podcast sin los derechos apropiados es piraterÃa y puede ser procesado.', diff --git a/modules/Admin/Language/es/Settings.php b/modules/Admin/Language/es/Settings.php index 9ee6763f9e..0094dada0a 100644 --- a/modules/Admin/Language/es/Settings.php +++ b/modules/Admin/Language/es/Settings.php @@ -15,7 +15,7 @@ return [ 'site_icon' => 'Icono del sitio', 'site_icon_delete' => 'Borrar icono del sitio', 'site_icon_hint' => 'Los iconos del sitio son lo que ves en las pestañas del navegador, la barra de marcadores y cuando agregas un sitio web como un acceso directo en los dispositivos móviles.', - 'site_icon_helper' => 'Icon must be squared and at least 512px wide and tall.', + 'site_icon_helper' => 'El icono debe ser cuadrado con al menos 512 px de ancho y alto.', 'site_name' => 'Nombre del sitio', 'site_description' => 'Descripción del sitio', 'submit' => 'Guardar', diff --git a/modules/Admin/Language/gl/Breadcrumb.php b/modules/Admin/Language/gl/Breadcrumb.php index 93ead034bf..60f9326f1b 100644 --- a/modules/Admin/Language/gl/Breadcrumb.php +++ b/modules/Admin/Language/gl/Breadcrumb.php @@ -9,7 +9,7 @@ declare(strict_types=1); */ return [ - 'label' => 'breadcrumb', + 'label' => 'menú', config('Admin') ->gateway => 'Inicio', 'podcasts' => 'podcasts', @@ -42,8 +42,8 @@ return [ 'players' => 'reprodutores', 'listening-time' => 'tempo de escoita', 'time-periods' => 'perÃodo de tempo', - 'soundbites' => 'soundbites', + 'soundbites' => 'anaquiños', 'video-clips' => 'clips de vÃdeo', 'embed' => 'reprodutor para incluÃr', - 'notifications' => 'notifications', + 'notifications' => 'notificacións', ]; diff --git a/modules/Admin/Language/gl/Countries.php b/modules/Admin/Language/gl/Countries.php index cf34b15ff5..587c4d49a5 100644 --- a/modules/Admin/Language/gl/Countries.php +++ b/modules/Admin/Language/gl/Countries.php @@ -12,9 +12,9 @@ declare(strict_types=1); return [ 'AD' => 'Andorra', - 'AE' => 'United Arab Emirates', - 'AF' => 'Afghanistan', - 'AG' => 'Antigua and Barbuda', + 'AE' => 'Emiratos Ãrabes Unidos', + 'AF' => 'Afganistán', + 'AG' => 'Antigua e Barbuda', 'AI' => 'Anguilla', 'AL' => 'Albania', 'AM' => 'Armenia', diff --git a/modules/Admin/Language/gl/Episode.php b/modules/Admin/Language/gl/Episode.php index bfc6647af5..71c87d0460 100644 --- a/modules/Admin/Language/gl/Episode.php +++ b/modules/Admin/Language/gl/Episode.php @@ -9,9 +9,9 @@ declare(strict_types=1); */ return [ - 'season' => 'Season {seasonNumber}', + 'season' => 'Tempada {seasonNumber}', 'season_abbr' => 'S{seasonNumber}', - 'number' => 'Episode {episodeNumber}', + 'number' => 'Episodio {episodeNumber}', 'number_abbr' => 'Ep. {episodeNumber}', 'season_episode' => 'Tempada {seasonNumber} episodio {episodeNumber}', 'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}', @@ -86,7 +86,7 @@ return [ ], 'form' => [ 'file_size_error' => - 'Your file size is too big! Max size is {0}. Increase the `memory_limit`, `upload_max_filesize` and `post_max_size` values in your php configuration file then restart your web server to upload your file.', + 'O ficheiro é demasiado grande! O máximo é {0}. Aumenta os valores de `memory_limit`, `upload_max_filesize` e `post_max_size` no ficheiro de configuración php e reinicia o servidor web.', 'audio_file' => 'Ficheiro de son', 'audio_file_hint' => 'Elixe un ficheiro .mp3 ou un .m4a de audio.', 'info_section_title' => 'Info do episodio', @@ -146,57 +146,57 @@ return [ 'advanced_section_subtitle' => 'Se precisas etiquetas RSS que Castopod non xestiona, establéceas aquÃ.', 'custom_rss' => 'Etiquetas RSS personalizadas para o episodio', - 'custom_rss_hint' => 'This will be injected within the â¬itemâ tag.', - 'block' => 'Episode should be hidden from public catalogues', + 'custom_rss_hint' => 'Esto vai ir incluÃdo na etiqueta â¬itemâ.', + 'block' => 'O episodio estará oculto para os catálogos públicos', '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', + 'O estado oculto ou visible: este control evita que o episodio apareza en Apple Podcasts, Google Podcasts, e calquera outra app de terceiros que obteña os programas destos directorios. (Non garantido)', + 'submit_create' => 'Crear episodio', + 'submit_edit' => 'Gardar episodio', ], 'publish_form' => [ - 'back_to_episode_dashboard' => 'Back to episode dashboard', - 'post' => 'Your announcement post', + 'back_to_episode_dashboard' => 'Volver ao taboleiro do episodio', + 'post' => 'Publicación co anuncio', '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', + "Escribe unha mensaxe para anunciar a publicación do episodio. Esta mensaxe será enviada a tódalas túas seguidoras no fediverso e aparecerá na páxina de inicio do teu podcast.", + 'message_placeholder' => 'Escribe a mensaxe…', + 'publication_date' => 'Data de publicación', 'publication_method' => [ - 'now' => 'Now', - 'schedule' => 'Schedule', - 'with_podcast' => 'Publish alongside podcast', + 'now' => 'Agora', + 'schedule' => 'Programar', + 'with_podcast' => 'Publicar xunto co podcast', ], - 'scheduled_publication_date' => 'Scheduled publication date', - 'scheduled_publication_date_clear' => 'Clear publication date', + 'scheduled_publication_date' => 'Data da publicación programada', + 'scheduled_publication_date_clear' => 'Limpar data de publicación', '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', + 'Podes programar nunha data futura a publicación do episodio. Este campo debe ter formato YYYY-MM-DD HH:mm', + 'submit' => 'Publicar', + 'submit_edit' => 'Editar publicación', + 'cancel_publication' => 'Cancelar publicación', + 'message_warning' => 'Non escribiches unha mensaxe anunciando a publicación!', + 'message_warning_hint' => 'Ao escribir unha mensaxe aumentas o alcance social, resultando en maior visibilidade para o teu episodio.', + 'message_warning_submit' => 'Publicar igualmente', ], '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', + "Retirando o episodio eliminarás tódolos comentarios e publicacións asociadas con el e tamén o eliminarás da fonte RSS do podcast.", + 'understand' => 'Enténdoo e quero retirar o episodio', + 'submit' => 'Retirar episodio', ], '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', + "Eliminando o episodio eliminarás tódolos ficheiros multimedia, comentarios, clips de vÃdeo e extractos de son asociados a el.", + 'understand' => 'Enténdoo e quero eliminar o episodio', + 'submit' => 'Eliminar', ], 'embed' => [ - 'title' => 'Embeddable player', + 'title' => 'Reprodutor para incluÃr', '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', + 'Elixe a cor do decorado, copia o código para o reprodutor a incluir e pégao no teu sitio web.', + 'clipboard_iframe' => 'Copia o reprodutor ao portapapeis', + 'clipboard_url' => 'Copiar enderezo ao portapapeis', + 'dark' => 'Escuro', + 'dark-transparent' => 'Escuro transparente', + 'light' => 'Claro', + 'light-transparent' => 'Claro transparente', ], ]; diff --git a/modules/Admin/Language/gl/Fediverse.php b/modules/Admin/Language/gl/Fediverse.php index 9eecfa2af3..6402a7e4b5 100644 --- a/modules/Admin/Language/gl/Fediverse.php +++ b/modules/Admin/Language/gl/Fediverse.php @@ -10,9 +10,9 @@ declare(strict_types=1); return [ 'messages' => [ - 'actorNotFound' => 'The account could not be found!', - 'blockActorSuccess' => '{actor} has been blocked!', - 'unblockActorSuccess' => 'Actor has been unblocked!', + 'actorNotFound' => 'Non se atopou a conta!', + 'blockActorSuccess' => '{actor} foi bloqueado!', + 'unblockActorSuccess' => '{actor} foi desbloqueado!', 'blockDomainSuccess' => '{domain} foi bloqueado!', 'unblockDomainSuccess' => '{domain} foi desbloqueado!', ], diff --git a/modules/Admin/Language/gl/MyAccount.php b/modules/Admin/Language/gl/MyAccount.php index 6ebbb30ef7..43b1e4708d 100644 --- a/modules/Admin/Language/gl/MyAccount.php +++ b/modules/Admin/Language/gl/MyAccount.php @@ -9,10 +9,10 @@ declare(strict_types=1); */ return [ - 'info' => 'My account info', - 'changePassword' => 'Change my password', + 'info' => 'Info da miña conta', + 'changePassword' => 'Cambiar o meu contrasinal', 'messages' => [ - 'wrongPasswordError' => "You've entered the wrong password, try again.", - 'passwordChangeSuccess' => 'Password has been successfully changed!', + 'wrongPasswordError' => "Escribiches un contrasinal incorrecto, volve a intentalo.", + 'passwordChangeSuccess' => 'Cambiaches correctamente o contrasinal!', ], ]; diff --git a/modules/Admin/Language/id/Breadcrumb.php b/modules/Admin/Language/id/Breadcrumb.php index 24bece0140..02b2107267 100644 --- a/modules/Admin/Language/id/Breadcrumb.php +++ b/modules/Admin/Language/id/Breadcrumb.php @@ -28,14 +28,14 @@ return [ 'delete' => 'delete', 'fediverse' => 'fediverse', 'block-lists' => 'block lists', - 'users' => 'users', - 'my-account' => 'my account', - 'change-password' => 'change password', + 'users' => 'pengguna', + 'my-account' => 'akun saya', + 'change-password' => 'ubah kata sandi', 'import' => 'feed import', 'platforms' => 'platforms', 'social' => 'social networks', 'funding' => 'funding', - 'analytics' => 'analytics', + 'analytics' => 'analitik', 'locations' => 'locations', 'webpages' => 'web pages', 'unique-listeners' => 'unique listeners', diff --git a/modules/Admin/Language/sk/Breadcrumb.php b/modules/Admin/Language/sk/Breadcrumb.php index e9a9b17d8b..34a69e4a45 100644 --- a/modules/Admin/Language/sk/Breadcrumb.php +++ b/modules/Admin/Language/sk/Breadcrumb.php @@ -13,7 +13,7 @@ return [ config('Admin') ->gateway => 'Úvod', 'podcasts' => 'podcasty', - 'episodes' => 'epizódy', + 'episodes' => 'Äasti', 'contributors' => 'prispievatelia', 'pages' => 'stránky', 'settings' => 'nastavenia', @@ -45,5 +45,5 @@ return [ 'soundbites' => 'zvukové ukážky', 'video-clips' => 'video klipy', 'embed' => 'vnorený', - 'notifications' => 'notifications', + 'notifications' => 'oboznámenia', ]; diff --git a/modules/Admin/Language/sk/Charts.php b/modules/Admin/Language/sk/Charts.php index b205c28677..8c29dff3ba 100644 --- a/modules/Admin/Language/sk/Charts.php +++ b/modules/Admin/Language/sk/Charts.php @@ -20,10 +20,10 @@ return [ 'by_browser' => 'PoužÃvanie web stránok podľa prehliadaÄa (za uplynulý týždeň)', 'podcast_by_day' => 'Denné prevzatia epizód', 'podcast_by_month' => 'MesaÄné prevzatia epizód', - 'episode_by_day' => 'Denné prevzatia epizód (prvých 60 dnÃ)', - 'episode_by_month' => 'MesaÄné prevzatia epizód', + 'episode_by_day' => 'Denné prevzatia Äastà (prvých 60 dnÃ)', + 'episode_by_month' => 'MesaÄné prevzatia ÄastÃ', 'episodes_by_day' => - '5 posledných prevzatà epizód (poÄas ich prvých 60 dnÃ)', + '5 posledných prevzatà Äastà (poÄas ich prvých 60 dnÃ)', 'by_country_weekly' => 'Prevzatia epizód podľa krajiny (za uplynulý týždeň)', 'by_country_yearly' => 'Prevzatia epizód podľa krajiny (za uplynulý rok)', 'by_domain_weekly' => 'NávÅ¡tevy web stránok podľa zdroja (za uplynulý týždeň)', diff --git a/modules/Admin/Language/sk/Countries.php b/modules/Admin/Language/sk/Countries.php index 98d7161d26..1077917eea 100644 --- a/modules/Admin/Language/sk/Countries.php +++ b/modules/Admin/Language/sk/Countries.php @@ -14,7 +14,7 @@ return [ 'AD' => 'Andorra', 'AE' => 'Spojené Arabské Emiráty', 'AF' => 'Afghanistan', - 'AG' => 'Antigua and Barbuda', + 'AG' => 'Antigua a Barbuda', 'AI' => 'Anguilla', 'AL' => 'Albánsko', 'AM' => 'Arménsko', @@ -26,7 +26,7 @@ return [ 'AU' => 'Austrália', 'AW' => 'Aruba', 'AX' => 'Ã…land Islands', - 'AZ' => 'Azerbaijan', + 'AZ' => 'Azerbajdžan', 'BA' => 'Bosna a Hercegovina', 'BB' => 'Barbados', 'BD' => 'Bangladéš', @@ -58,10 +58,10 @@ return [ 'CK' => 'Cook Islands', 'CL' => 'Chile', 'CM' => 'Cameroon', - 'CN' => 'China', - 'CO' => 'Colombia', - 'CR' => 'Costa Rica', - 'CU' => 'Cuba', + 'CN' => 'ÄŒÃna', + 'CO' => 'Kolumbia', + 'CR' => 'Kostarika', + 'CU' => 'Kuba', 'CV' => 'Cape Verde', 'CW' => 'Curaçao', 'CX' => 'VianoÄný Ostrov', @@ -84,10 +84,10 @@ return [ 'FJ' => 'Fidži', 'FK' => 'Falklandské ostrovy (MalvÃny)', 'FM' => 'Micronesia, Federated States of', - 'FO' => 'Faroe Islands', + 'FO' => 'Faerské Ostrovy', 'FR' => 'Francúzsko', 'GA' => 'Gabon', - 'GB' => 'United Kingdom', + 'GB' => 'Spojené Kráľovstvo', 'GD' => 'Grenada', 'GE' => 'GruzÃnsko', 'GF' => 'French Guiana', @@ -114,20 +114,20 @@ return [ 'ID' => 'Indonézia', 'IE' => 'Ãrsko', 'IL' => 'Israel', - 'IM' => 'Isle of Man', + 'IM' => 'Ostrov Man', 'IN' => 'India', - 'IO' => 'British Indian Ocean Territory', - 'IQ' => 'Iraq', - 'IR' => 'Iran, Islamic Republic of', - 'IS' => 'Iceland', - 'IT' => 'Italy', + 'IO' => 'Britské indickooceánske územie', + 'IQ' => 'Irak', + 'IR' => 'Irán, Islamská republika', + 'IS' => 'Island', + 'IT' => 'Taliansko', 'JE' => 'Jersey', - 'JM' => 'Jamaica', - 'JO' => 'Jordan', - 'JP' => 'Japan', - 'KE' => 'Kenya', - 'KG' => 'Kyrgyzstan', - 'KH' => 'Cambodia', + 'JM' => 'Jamajka', + 'JO' => 'Jordánsko', + 'JP' => 'Japonsko', + 'KE' => 'Keňa', + 'KG' => 'Kirgizsko', + 'KH' => 'Kambodža', 'KI' => 'Kiribati', 'KM' => 'Comoros', 'KN' => 'Saint Kitts and Nevis', @@ -172,7 +172,7 @@ return [ 'MZ' => 'Mozambique', 'N/A' => 'Not Applicable (local IP…)', 'NA' => 'Namibia', - 'NC' => 'New Caledonia', + 'NC' => 'Nová Kaledónia', 'NE' => 'Niger', 'NF' => 'Norfolk Island', 'NG' => 'Nigéria', @@ -194,15 +194,15 @@ return [ 'PM' => 'Saint Pierre and Miquelon', 'PN' => 'Pitcairn', 'PR' => 'Puerto Rico', - 'PS' => 'Palestine, State of', - 'PT' => 'Portugal', + 'PS' => 'PalestÃnske okupované územia', + 'PT' => 'Portugalsko', 'PW' => 'Palau', 'PY' => 'Paraguay', 'QA' => 'Qatar', 'RE' => 'Réunion', 'RO' => 'Romania', 'RS' => 'Serbia', - 'RU' => 'Russian Federation', + 'RU' => 'Ruská Federácia', 'RW' => 'Rwanda', 'SA' => 'Saudi Arabia', 'SB' => 'Solomon Islands', diff --git a/modules/Admin/Language/sk/Dashboard.php b/modules/Admin/Language/sk/Dashboard.php index 881073fd26..aaa4ba40c4 100644 --- a/modules/Admin/Language/sk/Dashboard.php +++ b/modules/Admin/Language/sk/Dashboard.php @@ -17,9 +17,9 @@ return [ 'last_published' => 'Last published on {lastPublicationDate}', ], 'episodes' => [ - 'title' => 'Episodes', - 'not_found' => 'No published episode', - 'last_published' => 'Last published on {lastPublicationDate}', + 'title' => 'ÄŒasti', + 'not_found' => 'Žiadna zverejnená ÄasÅ¥', + 'last_published' => 'Naposledy zverejnené dňa {lastPublicationDate}', ], 'storage' => [ 'title' => 'Storage', diff --git a/modules/Admin/Language/sk/Episode.php b/modules/Admin/Language/sk/Episode.php index 1675c6edf2..93730ec0c9 100644 --- a/modules/Admin/Language/sk/Episode.php +++ b/modules/Admin/Language/sk/Episode.php @@ -93,15 +93,15 @@ return [ 'Your file size is too big! Max size is {0}. Increase the `memory_limit`, `upload_max_filesize` and `post_max_size` values in your php configuration file then restart your web server to upload your file.', 'audio_file' => 'Zvukový súbor', 'audio_file_hint' => 'Vyberte zvukový súbor .mp3, alebo .m4a.', - 'info_section_title' => 'Episode info', - 'cover' => 'Episode cover', + 'info_section_title' => 'Informácie o Äasti', + 'cover' => 'Obal k Äasti', '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' => 'Názov', 'title_hint' => 'Should contain a clear and concise episode name. Do not specify the episode or season numbers here.', - 'permalink' => 'Permalink', + 'permalink' => 'Trvalý odkaz', 'season_number' => 'Season', 'episode_number' => 'Epizóda', 'type' => [ @@ -118,7 +118,7 @@ return [ 'hint' => 'Does the episode contain explicit content?', 'undefined' => 'undefined', 'clean' => 'Clean', - 'explicit' => 'Explicit', + 'explicit' => 'Chúlostivé', ], 'show_notes_section_title' => 'Show notes', 'show_notes_section_subtitle' => diff --git a/modules/Admin/Language/sk/EpisodeNavigation.php b/modules/Admin/Language/sk/EpisodeNavigation.php index be3a1e2560..d60ef39646 100644 --- a/modules/Admin/Language/sk/EpisodeNavigation.php +++ b/modules/Admin/Language/sk/EpisodeNavigation.php @@ -9,13 +9,13 @@ declare(strict_types=1); */ return [ - 'go_to_page' => 'View episode page', + 'go_to_page' => 'ZobraziÅ¥ stránku Äasti', 'dashboard' => 'Episode dashboard', - 'episode-view' => 'Home', - 'episode-edit' => 'Edit episode', + 'episode-view' => 'Domov', + 'episode-edit' => 'UpraviÅ¥ ÄasÅ¥', 'episode-persons-manage' => 'Manage persons', 'embed-add' => 'Vnorený prehrávaÄ', - 'clips' => 'Clips', + 'clips' => 'Klipy', 'video-clips-list' => 'Video clips', 'video-clips-create' => 'New video clip', 'soundbites-list' => 'Soundbites', diff --git a/modules/Admin/Language/sk/Person.php b/modules/Admin/Language/sk/Person.php index b6bf1dc7ed..5ce1e02f45 100644 --- a/modules/Admin/Language/sk/Person.php +++ b/modules/Admin/Language/sk/Person.php @@ -49,10 +49,10 @@ return [ 'remove' => 'Remove', ], 'episode_form' => [ - 'title' => 'Manage persons', + 'title' => 'SpravovaÅ¥ osobnosti', 'add_section_title' => 'Add persons to this episode', 'add_section_subtitle' => 'You may pick several persons and roles.', - 'persons' => 'Persons', + 'persons' => 'Osobnosti', 'persons_hint' => 'Môžete vybraÅ¥ jednu alebo viac osôb s tou istou rolou. Najprv by ste mali osobnosti vytvoriÅ¥.', 'roles' => 'Roly', diff --git a/modules/Admin/Language/sk/Podcast.php b/modules/Admin/Language/sk/Podcast.php index 19a022b563..5585a766eb 100644 --- a/modules/Admin/Language/sk/Podcast.php +++ b/modules/Admin/Language/sk/Podcast.php @@ -13,7 +13,7 @@ return [ 'no_podcast' => 'No podcast found!', 'create' => 'Create podcast', 'import' => 'Import podcast', - 'new_episode' => 'New Episode', + 'new_episode' => 'Nová ÄasÅ¥', 'view' => 'View podcast', 'edit' => 'Edit podcast', 'publish' => 'Publish podcast', @@ -22,8 +22,8 @@ return [ 'see_episodes' => 'See episodes', 'see_contributors' => 'See contributors', 'go_to_page' => 'Go to page', - 'latest_episodes' => 'Latest episodes', - 'see_all_episodes' => 'See all episodes', + 'latest_episodes' => 'Posledné Äasti', + 'see_all_episodes' => 'PozrieÅ¥ vÅ¡etky Äasti', 'draft' => 'Draft', 'messages' => [ 'createSuccess' => 'Podcast successfully created!', diff --git a/modules/Admin/Language/zh-Hans/Breadcrumb.php b/modules/Admin/Language/zh-Hans/Breadcrumb.php new file mode 100644 index 0000000000..b41de54fbe --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Breadcrumb.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'label' => 'é¢åŒ…屑导航', + config('Admin') + ->gateway => '主页', + 'podcasts' => 'æ’客', + 'episodes' => '剧集', + 'contributors' => '贡献者', + 'pages' => '页', + 'settings' => '设置', + 'theme' => '主题', + 'add' => 'æ·»åŠ ', + 'new' => '新建', + 'edit' => '编辑', + 'persons' => '人', + 'publish' => 'å‘布', + 'publish-edit' => '编辑å‘布', + 'unpublish' => 'å–消å‘布', + 'delete' => 'åˆ é™¤', + 'fediverse' => 'è”邦宇宙', + 'block-lists' => 'å°ç¦åˆ—表', + 'users' => '用户', + 'my-account' => '我的å¸æˆ·', + 'change-password' => '修改密ç ', + 'import' => '订阅æºå¯¼å…¥', + 'platforms' => 'å¹³å°', + 'social' => '社交网络', + 'funding' => '资金支æŒ', + 'analytics' => '统计数æ®', + 'locations' => 'ä½ç½®', + 'webpages' => '网页', + 'unique-listeners' => '独特的å¬ä¼—', + 'players' => 'æ’放', + 'listening-time' => '收å¬æ—¶é—´', + 'time-periods' => '时间段', + 'soundbites' => '原声摘è¦', + 'video-clips' => 'è§†é¢‘ç´ æ', + 'embed' => '嵌入å¼æ’放器', + 'notifications' => '通知', +]; diff --git a/modules/Admin/Language/zh-Hans/Charts.php b/modules/Admin/Language/zh-Hans/Charts.php new file mode 100644 index 0000000000..e623691a91 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Charts.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'by_service_weekly' => '按æœåŠ¡åˆ†ç±»çš„剧集下载é‡(过去一周)', + 'by_player_weekly' => '按æ’放é‡çš„剧集下载é‡(过去一周)', + 'by_player_yearly' => '按æ’放é‡çš„剧集下载é‡(过去一年)', + 'by_device_weekly' => '按设备分类的剧集下载é‡(过去一周)', + 'by_os_weekly' => '按æ“作系统分类的剧集下载é‡(过去一周)', + 'podcast_by_region' => '按地区的剧集下载é‡(过去一周)', + 'unique_daily_listeners' => 'æ¯æ—¥ç‹¬ç«‹å¬ä¼—', + 'unique_monthly_listeners' => 'æ¯æœˆç‹¬ç«‹å¬ä¼—', + 'by_browser' => '网页端使用情况(过去一周)', + 'podcast_by_day' => '剧集æ¯æ—¥ä¸‹è½½é‡', + 'podcast_by_month' => '剧集æ¯æœˆä¸‹è½½é‡', + 'episode_by_day' => '剧集æ¯æ—¥ä¸‹è½½(å‰60天)', + 'episode_by_month' => '剧集æ¯æœˆä¸‹è½½', + 'episodes_by_day' => + '5 个最新剧集下载(å‰60天)', + 'by_country_weekly' => '按国家/地区的剧集下载é‡(过去一周)', + 'by_country_yearly' => '按国家/地区的剧集下载é‡(过去一年)', + 'by_domain_weekly' => '网页端访问情况(过去一周)', + 'by_domain_yearly' => '网页端访问情况(过去一年)', + 'by_entry_page' => '登录页é¢çš„访问情况(过去一周)', + 'podcast_bots' => '机器人(爬虫)', + 'daily_listening_time' => 'æ¯æ—¥ç´¯è®¡æ”¶å¬æ—¶é—´', + 'monthly_listening_time' => 'æ¯æœˆç´¯è®¡æ”¶å¬æ—¶é—´', + 'by_weekday' => '按工作日(过去60天)', + 'by_hour' => '按一天ä¸çš„时间(过去60天)', + 'podcast_by_bandwidth' => 'æ¯æ—¥ä½¿ç”¨å¸¦å®½(MB)', + 'total_storage_by_month' => 'æ¯æœˆå˜å‚¨é‡ (MB)', + 'total_bandwidth_by_month' => 'æ¯æœˆä½¿ç”¨å¸¦å®½(MB)', +]; diff --git a/modules/Admin/Language/zh-Hans/Common.php b/modules/Admin/Language/zh-Hans/Common.php new file mode 100644 index 0000000000..1ecaf5420f --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Common.php @@ -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' => '是', + 'no' => 'å¦', + 'cancel' => 'å–消', + 'optional' => 'å¯é€‰', + 'more' => '更多', + 'no_data' => '找ä¸åˆ°æ•°æ®ï¼', + 'close' => 'å…³é—', + 'edit' => '编辑', + 'copy' => 'å¤åˆ¶', + 'copied' => 'å¤åˆ¶æˆåŠŸï¼', + 'home' => '主页', + 'explicit' => 'é™åˆ¶çº§', + 'powered_by' => 'ç”± {castopod} æ供支æŒ', + 'actions' => 'æ“作', + 'pageInfo' => '第 {currentPage} 页,共 {pageCount} 页', + 'go_back' => '返回', + 'forms' => [ + 'editor' => [ + 'write' => '内容编辑', + 'preview' => '预览', + 'help' => 'ç”± Markdown 驱动', + ], + 'multiSelect' => [ + 'selectText' => '点击选择', + 'loadingText' => '载入ä¸...', + 'noResultsText' => '没有找到结果', + 'noChoicesText' => '没有å¯ä¾›é€‰æ‹©çš„选项', + 'maxItemText' => 'æ— æ³•æ·»åŠ æ›´å¤šé¡¹ç›®', + ], + 'upload_file' => 'ä¸Šä¼ æ–‡ä»¶', + 'remote_url' => '远程网å€', + ], + 'play_episode_button' => [ + 'play' => 'æ’放', + 'playing' => 'æ£åœ¨æ’放', + ], + 'size_limit' => '大å°é™åˆ¶ï¼š{0}。', + 'choose_interact' => '选择互动方å¼', + 'view' => '查看', +]; diff --git a/modules/Admin/Language/zh-Hans/Contributor.php b/modules/Admin/Language/zh-Hans/Contributor.php new file mode 100644 index 0000000000..d90ef87d65 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Contributor.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'podcast_contributors' => 'æ’客贡献者', + 'view' => "{username} 对 {podcastTitle} 的贡献", + 'add' => 'æ·»åŠ è´¡çŒ®è€…', + 'add_contributor' => '为 {0} æ·»åŠ è´¡çŒ®è€…', + 'edit_role' => 'æ›´æ–° {0} 的角色', + 'edit' => '编辑', + 'remove' => '移除', + 'list' => [ + 'username' => '用户å', + 'role' => '角色', + ], + 'form' => [ + 'user' => '用户', + 'user_placeholder' => '选择一个用户...', + 'role' => '角色', + 'role_placeholder' => '选择角色…', + 'submit_add' => 'æ·»åŠ è´¡çŒ®è€…', + 'submit_edit' => '更新角色', + ], + 'roles' => [ + 'podcast_admin' => 'æ’客管ç†å‘˜', + ], + 'messages' => [ + 'removeOwnerError' => "ä½ æ— æ³•åˆ é™¤æ’客所有者ï¼", + 'removeSuccess' => + 'ä½ ä»Ž {username} 移除 {podcastTitle}', + 'alreadyAddedError' => + "ä½ å°è¯•æ·»åŠ çš„è´¡çŒ®è€…å·²æ·»åŠ ï¼", + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Countries.php b/modules/Admin/Language/zh-Hans/Countries.php new file mode 100644 index 0000000000..5c66deed82 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Countries.php @@ -0,0 +1,264 @@ +<?php + +declare(strict_types=1); + +/** + * ISO 3166 country codes + * + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'AD' => '安é“å°”', + 'AE' => '阿拉伯è”åˆé…‹é•¿å›½', + 'AF' => '阿富汗', + 'AG' => '安æ瓜和巴布达', + 'AI' => '安åœæ‹‰', + 'AL' => '阿尔巴尼亚', + 'AM' => '亚美尼亚', + 'AO' => '安哥拉', + 'AQ' => 'å—æžæ´²', + 'AR' => 'é˜¿æ ¹å»·', + 'AS' => '美属è¨æ‘©äºš', + 'AT' => '奥地利', + 'AU' => '澳大利亚', + 'AW' => '阿é²å·´', + 'AX' => '奥兰群岛', + 'AZ' => '阿塞拜疆', + 'BA' => '波黑', + 'BB' => '巴巴多斯', + 'BD' => 'åŸåŠ 拉国', + 'BE' => '比利时', + 'BF' => '布基纳法索', + 'BG' => 'ä¿åŠ 利亚', + 'BH' => 'å·´æž—', + 'BI' => '布隆迪', + 'BJ' => 'è´å®', + 'BL' => '圣巴泰勒米', + 'BM' => '百慕大', + 'BN' => '文莱达é²è¨å…°å›½', + 'BO' => '玻利维亚', + 'BQ' => 'è·å…°åŠ 勒比区', + 'BR' => '巴西', + 'BS' => '巴哈马', + 'BT' => 'ä¸ä¸¹', + 'BV' => '布韦岛', + 'BW' => 'åšèŒ¨ç“¦çº³', + 'BY' => '白俄罗斯', + 'BZ' => '伯利兹', + 'CA' => 'åŠ æ‹¿å¤§', + 'CC' => '科科斯(基林) 群岛', + 'CD' => '刚果(金)', + 'CF' => 'ä¸éžå…±å’Œå›½', + 'CG' => '刚果', + 'CH' => '瑞士', + 'CI' => "科特迪瓦", + 'CK' => '库克群岛', + 'CL' => '智利', + 'CM' => '喀麦隆', + 'CN' => 'ä¸å›½', + 'CO' => '哥伦比亚', + 'CR' => 'å“¥æ–¯è¾¾é»ŽåŠ ', + 'CU' => 'å¤å·´', + 'CV' => '佛得角', + 'CW' => '库拉索', + 'CX' => '圣诞岛', + 'CY' => '塞浦路斯', + 'CZ' => 'æ·å…‹', + 'DE' => '德国', + 'DJ' => 'å‰å¸ƒæ', + 'DK' => '丹麦', + 'DM' => '多米尼克', + 'DO' => 'å¤šç±³å°¼åŠ ', + 'DZ' => '阿尔åŠåˆ©äºš', + 'EC' => '厄瓜多尔', + 'EE' => '爱沙尼亚', + 'EG' => '埃åŠ', + 'EH' => '西撒哈拉', + 'ER' => '厄立特里亚', + 'ES' => '西ç牙', + 'ET' => '埃塞俄比亚', + 'FI' => '芬兰', + 'FJ' => 'æ–济', + 'FK' => 'ç¦å…‹å…°ç¾¤å²›(马尔维纳斯)', + 'FM' => '密克罗尼西亚è”邦', + 'FO' => '法罗群岛', + 'FR' => '法国', + 'GA' => 'åŠ è“¬', + 'GB' => '英国', + 'GD' => 'æ ¼æž—çº³è¾¾', + 'GE' => 'æ ¼é²å‰äºš', + 'GF' => '法属åœäºšé‚£', + 'GG' => 'æ ¹è¥¿å²›', + 'GH' => 'åŠ çº³', + 'GI' => '直布罗陀', + 'GL' => 'æ ¼é™µå…°', + 'GM' => '冈比亚', + 'GN' => 'å‡ å†…äºš', + 'GP' => '法属瓜德罗普岛', + 'GQ' => '赤é“å‡ å†…äºš', + 'GR' => '希腊', + 'GS' => 'å—乔治亚和å—æ¡‘å¨å¥‡ç¾¤å²›', + 'GT' => 'å±åœ°é©¬æ‹‰', + 'GU' => '关岛', + 'GW' => 'å‡ å†…äºšæ¯”ç»', + 'GY' => 'åœäºšé‚£', + 'HK' => 'ä¸å›½é¦™æ¸¯', + 'HM' => '赫德岛和麦克å”纳群岛', + 'HN' => '洪都拉斯', + 'HR' => '克罗地亚', + 'HT' => '海地', + 'HU' => '匈牙利', + 'ID' => 'å°åº¦å°¼è¥¿äºš', + 'IE' => '爱尔兰', + 'IL' => '以色列', + 'IM' => '马æ©å²›', + 'IN' => 'å°åº¦', + 'IO' => '英属å°åº¦æ´‹é¢†åœ°', + 'IQ' => '伊拉克', + 'IR' => '伊朗', + 'IS' => '冰岛', + 'IT' => 'æ„大利', + 'JE' => '泽西', + 'JM' => 'ç‰™ä¹°åŠ ', + 'JO' => '约旦', + 'JP' => '日本', + 'KE' => '肯尼亚', + 'KG' => 'å‰å°”å‰æ–¯æ–¯å¦', + 'KH' => '柬埔寨', + 'KI' => '基里巴斯', + 'KM' => '科摩罗', + 'KN' => '圣基茨和尼维斯', + 'KP' => "æœé²œ", + 'KR' => '韩国', + 'KW' => '科å¨ç‰¹', + 'KY' => '开曼群岛', + 'KZ' => '哈è¨å…‹æ–¯å¦', + 'LA' => "è€æŒ", + 'LB' => '黎巴嫩', + 'LC' => '圣å¢è¥¿äºš', + 'LI' => '列支敦士登', + 'LK' => '斯里兰å¡', + 'LR' => '利比里亚', + 'LS' => '莱索托', + 'LT' => '立陶宛', + 'LU' => 'å¢æ£®å ¡', + 'LV' => '拉脱维亚', + 'LY' => '利比亚', + 'MA' => '摩洛哥', + 'MC' => '摩纳哥', + 'MD' => '摩尔多瓦', + 'ME' => '黑山', + 'MF' => '法属圣马ä¸', + 'MG' => 'é©¬è¾¾åŠ æ–¯åŠ ', + 'MH' => '马ç»å°”群岛', + 'MK' => '马其顿ã€å‰å—斯拉夫共和国', + 'ML' => '马里', + 'MM' => '缅甸', + 'MN' => 'è’™å¤', + 'MO' => 'ä¸å›½æ¾³é—¨', + 'MP' => '北马里亚纳群岛', + 'MQ' => '马æ尼克岛', + 'MR' => '毛里塔尼亚', + 'MS' => '蒙特塞拉特', + 'MT' => '马耳他', + 'MU' => '毛里求斯', + 'MV' => '马尔代夫', + 'MW' => '马拉维', + 'MX' => '墨西哥', + 'MY' => '马æ¥è¥¿äºš', + 'MZ' => '莫桑比克', + 'N/A' => 'ä¸é€‚用(本地IP…)', + 'NA' => '纳米比亚', + 'NC' => '新喀里多尼亚', + 'NE' => '尼日尔', + 'NF' => '诺ç¦å°”å…‹å²›', + 'NG' => '尼日利亚', + 'NI' => 'å°¼åŠ æ‹‰ç“œ', + 'NL' => 'è·å…°', + 'NO' => '挪å¨', + 'NP' => '尼泊尔', + 'NR' => 'ç‘™é²', + 'NU' => '纽埃', + 'NZ' => '新西兰', + 'OM' => '阿曼', + 'PA' => '巴拿马', + 'PE' => '秘é²', + 'PF' => '法属波利尼西亚', + 'PG' => 'å·´å¸ƒäºšæ–°å‡ å†…äºš', + 'PH' => 'è²å¾‹å®¾', + 'PK' => '巴基斯å¦', + 'PL' => '波兰', + 'PM' => '圣皮埃尔和密克隆', + 'PN' => '皮特凯æ©ç¾¤å²›', + 'PR' => '波多黎å„', + 'PS' => 'å·´å‹’æ–¯å¦', + 'PT' => 'è‘¡è„牙', + 'PW' => '帕劳', + 'PY' => '巴拉åœ', + 'QA' => 'å¡å¡”å°”', + 'RE' => '留尼旺', + 'RO' => '罗马尼亚', + 'RS' => '塞尔维亚', + 'RU' => 'ä¿„ç½—æ–¯', + 'RW' => 'å¢æ—ºè¾¾', + 'SA' => '沙特阿拉伯', + 'SB' => '所罗门群岛', + 'SC' => '塞舌尔', + 'SD' => 'è‹ä¸¹', + 'SE' => 'ç‘žå…¸', + 'SG' => 'æ–°åŠ å¡', + 'SH' => '圣赫勒拿ã€é˜¿æ£®æ¾ä¸Žç‰¹é‡Œæ–¯å¦è¾¾åº“尼亚', + 'SI' => '斯洛文尼亚', + 'SJ' => '斯瓦尔巴和扬马延岛', + 'SK' => '斯洛ä¼å…‹', + 'SL' => '塞拉利昂', + 'SM' => '圣马力诺', + 'SN' => 'å¡žå†…åŠ å°”', + 'SO' => '索马里', + 'SR' => 'è‹é‡Œå—', + 'SS' => 'å—è‹ä¸¹', + 'ST' => '圣多美和普林西比', + 'SV' => 'è¨å°”瓦多', + 'SX' => 'è·å±žåœ£é©¬ä¸', + 'SY' => 'å™åˆ©äºš', + 'SZ' => 'æ–¯å¨å£«å…°', + 'TC' => '特克斯和凯科斯群岛', + 'TD' => 'ä¹å¾—', + 'TF' => '法属å—åŠçƒé¢†åœ°', + 'TG' => '多哥', + 'TH' => '泰国', + 'TJ' => 'å¡”å‰å…‹æ–¯å¦', + 'TK' => '托克劳', + 'TL' => '东å¸æ±¶', + 'TM' => '土库曼斯å¦', + 'TN' => 'çªå°¼æ–¯', + 'TO' => 'æ±¤åŠ ', + 'TR' => '土耳其', + 'TT' => '特立尼达和多巴哥', + 'TV' => '图瓦å¢', + 'TW' => 'ä¸å›½å°æ¹¾', + 'TZ' => 'å¦æ¡‘尼亚', + 'UA' => '乌克兰', + 'UG' => '乌干达', + 'UM' => '美国本土外å°å²›å±¿', + 'US' => '美国', + 'UY' => '乌拉åœ', + 'UZ' => '乌兹别克斯å¦', + 'VA' => '梵蒂冈', + 'VC' => 'åœ£æ–‡æ£®ç‰¹å’Œæ ¼æž—çº³ä¸æ–¯', + 'VE' => '委内瑞拉', + 'VG' => '英属维京群岛', + 'VI' => '美属维京群岛', + 'VN' => '越å—', + 'VU' => '瓦努阿图', + 'WF' => '瓦利斯和富图纳', + 'WS' => 'è¨æ‘©äºš', + 'YE' => '也门', + 'YT' => '马约特', + 'ZA' => 'å—éž', + 'ZM' => '赞比亚', + 'ZW' => '津巴布韦', +]; diff --git a/modules/Admin/Language/zh-Hans/Dashboard.php b/modules/Admin/Language/zh-Hans/Dashboard.php new file mode 100644 index 0000000000..2dd43f9fa2 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Dashboard.php @@ -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' => '管ç†é¢æ¿', + 'welcome_message' => '欢迎æ¥åˆ°ç®¡ç†åŒºåŸŸï¼', + 'podcasts' => [ + 'title' => 'æ’客', + 'not_found' => '没有已å‘布的æ’客', + 'last_published' => '最åŽå‘布于 {lastPublicationDate}', + ], + 'episodes' => [ + 'title' => '剧集', + 'not_found' => '没有已å‘布的剧集', + 'last_published' => '最åŽå‘布于 {lastPublicationDate}', + ], + 'storage' => [ + 'title' => 'å˜å‚¨', + 'subtitle' => '{totalUploaded} å…± {totalStorage}', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Episode.php b/modules/Admin/Language/zh-Hans/Episode.php new file mode 100644 index 0000000000..351d7afadc --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Episode.php @@ -0,0 +1,202 @@ +<?php + +declare(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' => '第 {seasonNumber} å£', + 'season_abbr' => '第 {seasonNumber} å£', + 'number' => '第 {episodeNumber} 集', + 'number_abbr' => '第 {episodeNumber} 集', + 'season_episode' => '第 {seasonNumber} å£ç¬¬ {episodeNumber} 集', + 'season_episode_abbr' => '第 {seasonNumber} å£ç¬¬ {episodeNumber} 集', + 'number_of_comments' => '{numberOfComments, plural, + other {# 评论} + other {# 评论} + }', + 'all_podcast_episodes' => '所有æ’客剧集', + 'back_to_podcast' => '返回æ’客', + 'edit' => '编辑', + 'publish' => 'å‘布', + 'publish_edit' => '编辑å‘布', + 'unpublish' => 'å–消å‘布', + 'publish_error' => '剧集已被å‘布。', + 'publish_edit_error' => '剧集已被å‘布。', + 'publish_cancel_error' => '剧集已被å‘布。', + 'unpublish_error' => '剧集尚未å‘布。', + 'delete' => 'åˆ é™¤', + 'go_to_page' => '转到页é¢', + 'create' => 'æ·»åŠ å‰§é›†', + 'publication_status' => [ + 'published' => 'å·²å‘布', + 'with_podcast' => 'å·²å‘布', + 'scheduled' => '已预约', + 'not_published' => '未å‘布', + ], + 'with_podcast_hint' => '与æ’客åŒæ—¶å‘布', + 'list' => [ + 'search' => [ + 'placeholder' => 'æœç´¢å‰§é›†', + 'clear' => '清除æœç´¢å†…容', + 'submit' => 'æœç´¢', + ], + 'number_of_episodes' => '{numberOfEpisodes, plural, + other {# 剧集} + other {# 剧集} + }', + 'episode' => '剧集', + 'visibility' => 'å¯è§æ€§', + 'comments' => '评论', + 'actions' => 'æ“作', + ], + 'messages' => [ + 'createSuccess' => '剧集已创建ï¼', + 'editSuccess' => '剧集已更新ï¼', + 'publishSuccess' => '{publication_status, select, + published {剧集已æˆåŠŸå‘布ï¼} + scheduled {剧集已æˆåŠŸé¢„约ï¼} + with_podcast {剧集将与æ’客åŒæ—¶å‘布。} + other {æ¤å‰§é›†æœªå‘布。} + }', + 'publishCancelSuccess' => 'æˆåŠŸå–消剧集å‘布ï¼', + 'unpublishBeforeDeleteTip' => 'ä½ å¿…é¡»åœ¨åˆ é™¤ä¹‹å‰å–消å‘布剧集。', + 'scheduleDateError' => '计划日期必须设置ï¼', + 'deletePublishedEpisodeError' => 'è¯·åœ¨åˆ é™¤ä¹‹å‰å–消å‘布该剧集。', + 'deleteSuccess' => 'å·²åˆ é™¤å‰§é›†ï¼', + 'deleteError' => 'æœªèƒ½åˆ é™¤å‰§é›† {type, select, + transcript {å—幕} + chapters {ç« èŠ‚} + image {å°é¢} + audio {音频} + other {媒体} + }', + 'deleteFileError' => 'æ— æ³•åˆ é™¤ {type, select, + transcript {å—幕} + chapters {ç« èŠ‚} + image {å°é¢} + audio {音频} + other {媒体} + } 文件 {file_path}。您å¯ä»¥æ‰‹åŠ¨å°†å…¶ä»Žç£ç›˜åˆ 除。', + 'sameSlugError' => '选ä¸çš„剧集已å˜åœ¨ã€‚', + ], + 'form' => [ + 'file_size_error' => + 'ä½ çš„æ–‡ä»¶å¤ªå¤§äº†ï¼æœ€å¤§å°ºå¯¸æ˜¯ {0}。 åœ¨ä½ çš„ php é…置文件ä¸å¢žåŠ `memory_limit`, `upload_max_filesize` å’Œ `post_max_size` 值,然åŽé‡å¯ä½ çš„ web æœåŠ¡å™¨ä¸Šä¼ 文件。', + 'audio_file' => '音频文件', + 'audio_file_hint' => '选择一个 .mp3 或 .m4a 音频文件。', + 'info_section_title' => '剧集信æ¯', + 'cover' => '剧集å°é¢', + 'cover_hint' => + 'å¦‚æžœä½ æ²¡æœ‰è®¾ç½®å°é¢ï¼Œå°†ä½¿ç”¨æ’客å°é¢ã€‚', + 'cover_size_hint' => 'å°é¢å¿…须是方形,而且至少 1400 px 宽度和高度。', + 'title' => 'æ ‡é¢˜', + 'title_hint' => + '应包å«æ¸…晰简æ´çš„剧集å称。 ä¸è¦åœ¨æ¤å¤„指定剧集或å£ç¼–å·ã€‚', + 'permalink' => '永久链接', + 'season_number' => 'å£', + 'episode_number' => '剧集', + 'type' => [ + 'label' => '类型', + 'full' => 'å…¨å±', + 'full_hint' => '完整内容 (剧集)', + 'trailer' => '预告片', + 'trailer_hint' => '代表当å‰å‰§é›†çš„的摘è¦', + 'bonus' => '奖金', + 'bonus_hint' => '剧集趣闻(例如,幕åŽä¿¡æ¯ä¸Žå¯¹æ¼”员的采访)或å¦ä¸€ä¸ªå‰§é›†çš„推è', + ], + 'parental_advisory' => [ + 'label' => 'è¦å‘Šæ ‡è®°', + 'hint' => '剧集是å¦åŒ…å«é™åˆ¶çº§å†…容?', + 'undefined' => '未定义', + 'clean' => '清ç†', + 'explicit' => 'é™åˆ¶çº§', + ], + 'show_notes_section_title' => '显示备注', + 'show_notes_section_subtitle' => + '清晰简æ´ï¼Œæœ€å¤š 4000 个å—。显示笔记能帮助潜在的å¬ä¼—找到剧集。', + 'description' => 'æè¿°', + 'description_footer' => '说明页脚', + 'description_footer_hint' => + 'æ¤æ–‡æœ¬æ·»åŠ 在æ¯é›†æè¿°çš„æœ«å°¾ï¼Œä¾‹å¦‚ï¼Œæ˜¯è¾“å…¥ä½ é“¾æŽ¥çš„å¥½ä½ç½®ã€‚', + 'additional_files_section_title' => '附件', + 'additional_files_section_subtitle' => + '这些文件å¯èƒ½è¢«å…¶ä»–æ’客平å°ç”¨æ¥ç”Ÿæˆæ供更好的体验。 想è¦äº†è§£ï¼Œè¯·å‚阅 {podcastNamespaceLink}。', + 'location_section_title' => 'ä½ç½®', + 'location_section_subtitle' => '这个剧集在哪里?', + 'location_name' => 'ä½ç½®å称或地å€', + 'location_name_hint' => '真或å‡ä½ç½®éƒ½å¯ä»¥', + 'transcript' => 'å—幕(å—幕/éšè—å—幕)', + 'transcript_hint' => 'ä»…å…许使用 .srt。', + 'transcript_download' => '下载å—幕', + 'transcript_file' => 'å—幕文件(.srt)', + 'transcript_remote_url' => '用于å—幕的网å€', + 'transcript_file_delete' => 'åˆ é™¤å—幕文件', + 'chapters' => 'ç« èŠ‚', + 'chapters_hint' => '文件必须为 JSON æ ¼å¼ã€‚', + 'chapters_download' => 'ä¸‹è½½ç« èŠ‚', + 'chapters_file' => 'ç« èŠ‚æ–‡ä»¶', + 'chapters_remote_url' => 'ç« èŠ‚æ–‡ä»¶ç½‘å€', + 'chapters_file_delete' => 'åˆ é™¤ç« èŠ‚æ–‡ä»¶', + 'advanced_section_title' => '高级å‚æ•°', + 'advanced_section_subtitle' => + 'å¦‚æžœä½ ä¸éœ€è¦ Castopod 处ç†æŸäº›è®¢é˜…æºæ ‡ç¾ï¼Œè¯·åœ¨æ¤å¤„设置。', + 'custom_rss' => 'å‰§é›†çš„è‡ªå®šä¹‰è®¢é˜…æ ‡ç¾', + 'custom_rss_hint' => '这将被注入到 â¬itemâ æ ‡ç¾ä¸ã€‚', + 'block' => '剧集应该在公共目录ä¸éšè—', + 'block_hint' => + '剧集显示或éšè—状æ€ï¼šæ‰“å¼€æ¤é€‰é¡¹å¯é˜²æ¢æ•´ä¸ªå‰§é›†å‡ºçŽ°åœ¨ Apple æ’客ã€Google æ’客以åŠä»Žæ¤ç›®å½•ä¸æå–剧集的任何第三方应用程åºä¸ã€‚(ä¸ä¿è¯ï¼‰', + 'submit_create' => '创建剧集', + 'submit_edit' => 'ä¿å˜å‰§é›†', + ], + 'publish_form' => [ + 'back_to_episode_dashboard' => '返回剧集控制é¢æ¿', + 'post' => 'ä½ çš„å…¬å‘Šæ’æ–‡', + 'post_hint' => + "写一æ¡æ¶ˆæ¯æ¥å®£å¸ƒä½ 有剧集å‘布。 æ¤æ¶ˆæ¯å°†å‘è”邦宇宙ä¸æ‰€æœ‰ä½ 的关注者推é€ï¼Œå¹¶åœ¨ä½ çš„æ’客主页ä¸å‡ºçŽ°ã€‚", + 'message_placeholder' => 'å†™ä¸‹ä½ çš„æ¶ˆæ¯â€¦', + 'publication_date' => 'å‘布日期', + 'publication_method' => [ + 'now' => '现在', + 'schedule' => '计划', + 'with_podcast' => '与æ’客一起å‘布', + ], + 'scheduled_publication_date' => '计划å‘布日期', + 'scheduled_publication_date_clear' => '清除å‘布日期', + 'scheduled_publication_date_hint' => + 'ä½ å¯ä»¥é€šè¿‡è®¾ç½®æœªæ¥å‘布日期æ¥å®‰æŽ’剧集å‘布。æ¤å—æ®µå¿…é¡»æ ¼å¼ä¸º YYYY-MM-DD HH:mm', + 'submit' => 'å‘布', + 'submit_edit' => '编辑å‘布', + 'cancel_publication' => 'å–消å‘布', + 'message_warning' => 'ä½ æ²¡æœ‰ä¸ºä½ çš„å…¬å‘Šæ’文写一æ¡æ¶ˆæ¯ï¼', + 'message_warning_hint' => '有消æ¯å‘é€å¯ä»¥å¢žåŠ 社交å‚与度,从而æé«˜ä½ çš„å‰§é›†æ›å…‰åº¦ã€‚', + 'message_warning_submit' => 'ä»ç„¶å‘布', + ], + 'unpublish_form' => [ + 'disclaimer' => + "å–消å‘å¸ƒè¯¥å‰§é›†å°†åˆ é™¤ç›¸å…³çš„æ‰€æœ‰è¯„è®ºå’Œæ’文,并将其从æ’客的订阅æºä¸åˆ 除。", + 'understand' => '我明白,我想å–消å‘布æ¤å‰§é›†', + 'submit' => 'å–消å‘布', + ], + 'delete_form' => [ + 'disclaimer' => + "åˆ é™¤å‰§é›†å°†åˆ é™¤ç›¸å…³çš„æ‰€æœ‰åª’ä½“æ–‡ä»¶ã€è¯„论ã€è§†é¢‘ç´ æ和原声摘è¦ã€‚", + 'understand' => 'æˆ‘æ˜Žç™½ï¼Œæˆ‘æƒ³åˆ é™¤å‰§é›†', + 'submit' => 'åˆ é™¤', + ], + 'embed' => [ + 'title' => '嵌入å¼æ’放器', + 'label' => + '选择主题色,将嵌入å¼æ’放器å¤åˆ¶åˆ°å‰ªè´´æ¿ï¼Œç„¶åŽç²˜è´´åˆ°ä½ 的网站。', + 'clipboard_iframe' => 'å¤åˆ¶åµŒå…¥æ’放器到剪贴æ¿', + 'clipboard_url' => 'å¤åˆ¶åœ°å€åˆ°å‰ªè´´æ¿', + 'dark' => '暗色', + 'dark-transparent' => '暗色é€æ˜Ž', + 'light' => '亮色', + 'light-transparent' => '亮色é€æ˜Ž', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/EpisodeNavigation.php b/modules/Admin/Language/zh-Hans/EpisodeNavigation.php new file mode 100644 index 0000000000..6e6e320d5e --- /dev/null +++ b/modules/Admin/Language/zh-Hans/EpisodeNavigation.php @@ -0,0 +1,23 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'go_to_page' => '查看剧集页é¢', + 'dashboard' => '剧集控制é¢æ¿', + 'episode-view' => '主页', + 'episode-edit' => '编辑剧集', + 'episode-persons-manage' => '管ç†å‘˜', + 'embed-add' => '嵌入å¼æ’放器', + 'clips' => 'ç´ æ', + 'video-clips-list' => 'è§†é¢‘ç´ æ', + 'video-clips-create' => 'æ–°å»ºè§†é¢‘ç´ æ', + 'soundbites-list' => '原声摘è¦', + 'soundbites-create' => '新建原声摘è¦', +]; diff --git a/modules/Admin/Language/zh-Hans/Fediverse.php b/modules/Admin/Language/zh-Hans/Fediverse.php new file mode 100644 index 0000000000..10d172d224 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Fediverse.php @@ -0,0 +1,32 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'messages' => [ + 'actorNotFound' => 'æ— æ³•æ‰¾åˆ°æ¤å¸æˆ·ï¼', + 'blockActorSuccess' => '{actor} 已被å°ç¦ï¼', + 'unblockActorSuccess' => '该用户已被解除å°ç¦', + 'blockDomainSuccess' => '{domain} 已被å°ç¦ï¼', + 'unblockDomainSuccess' => '{domain} 已解除å°ç¦ã€‚', + ], + 'blocked_actors' => 'å·²å±è”½å¸æˆ·', + 'blocked_domains' => 'å·²å±è”½åŸŸå', + 'block_lists_form' => [ + 'handle' => 'å¸æˆ·å称', + 'handle_hint' => '输入 @username@domain å¸æˆ·ã€‚', + 'domain' => '域å', + 'submit' => 'å°ç¦ï¼', + ], + 'list' => [ + 'actor' => 'å¸æˆ·', + 'domain' => '域å', + 'unblock' => '解除å°ç¦', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Home.php b/modules/Admin/Language/zh-Hans/Home.php new file mode 100644 index 0000000000..291e6d3bc2 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Home.php @@ -0,0 +1,14 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'all_podcasts' => '全部æ’客', + 'no_podcast' => '没有找到æ’客', +]; diff --git a/modules/Admin/Language/zh-Hans/Install.php b/modules/Admin/Language/zh-Hans/Install.php new file mode 100644 index 0000000000..0c86dcab7d --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Install.php @@ -0,0 +1,61 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'manual_config' => '手动é…ç½®', + 'manual_config_subtitle' => + 'åˆ›å»ºä¸€ä¸ªå¸¦æœ‰ä½ è®¾ç½®çš„â€œ.envâ€æ–‡ä»¶ï¼Œå¹¶åˆ·æ–°é¡µé¢ä»¥ç»§ç»å®‰è£…。', + 'form' => [ + 'instance_config' => '实例é…ç½®', + 'hostname' => '主机å', + 'media_base_url' => '媒体基础 URL', + 'media_base_url_hint' => + 'å¦‚æžœä½ ä½¿ç”¨ CDN å’Œ/或外部分æžæœåŠ¡ï¼Œå¯ä»¥åœ¨æ¤å¤„设置它们。', + 'admin_gateway' => '管ç†ç½‘å…³', + 'admin_gateway_hint' => + '访问管ç†åŒºåŸŸçš„路由(例如,https://example.com/cp-admin)。默认设置为 cp-adminï¼Œå¤„äºŽå®‰å…¨åŽŸå› ï¼Œæˆ‘ä»¬å»ºè®®ä½ ä¿®æ”¹å®ƒã€‚', + 'auth_gateway' => '认è¯ç½‘å…³', + 'auth_gateway_hint' => + '访问认è¯é¡µé¢çš„路由(例如,https://example.com/cp-auth)。默认设置为 cp-authï¼Œå¤„äºŽå®‰å…¨åŽŸå› ï¼Œæˆ‘ä»¬å»ºè®®ä½ ä¿®æ”¹å®ƒã€‚', + 'database_config' => 'æ•°æ®åº“é…ç½®', + 'database_config_hint' => + 'Castopod 需è¦è¿žæŽ¥åˆ°ä½ çš„ MySQL (or MariaDB) æ•°æ®åº“ã€‚å¦‚æžœä½ æ²¡æœ‰è¿™äº›æ‰€éœ€ä¿¡æ¯ï¼Œè¯·è”ç³»ä½ çš„æœåŠ¡å™¨ç®¡ç†å‘˜ã€‚', + 'db_hostname' => 'æ•°æ®åº“主机', + 'db_name' => 'æ•°æ®åº“å', + 'db_username' => 'æ•°æ®åº“用户å', + 'db_password' => 'æ•°æ®åº“密ç ', + 'db_prefix' => 'æ•°æ®åº“å‰ç¼€', + 'db_prefix_hint' => + "Castopod 表åçš„å‰ç¼€ï¼Œå¦‚果您ä¸çŸ¥é“它的å«ä¹‰ï¼Œè¯·ä¿æŒé»˜è®¤ã€‚", + 'cache_config' => '缓å˜é…ç½®', + 'cache_config_hint' => + 'é€‰æ‹©ä½ å–œæ¬¢çš„ç¼“å˜å¤„ç†ç¨‹åºã€‚å¦‚æžœä½ ä¸çŸ¥é“它的å«ä¹‰ï¼Œè¯·ä¿ç•™é»˜è®¤å€¼ã€‚', + 'cache_handler' => '缓å˜å¤„ç†æ–¹æ³•', + 'cacheHandlerOptions' => [ + 'file' => '文件', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => '下一æ¥', + 'submit' => '完æˆå®‰è£…', + 'create_superadmin' => 'åˆ›å»ºä½ çš„è¶…çº§ç®¡ç†å‘˜å¸æˆ·', + 'email' => '邮箱', + 'username' => '用户å', + 'password' => '密ç ', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'ä½ çš„è¶…çº§ç®¡ç†å‘˜å¸æˆ·å·²åˆ›å»ºã€‚登录开始æ’客ï¼', + 'databaseConnectError' => + 'Castopod æ— æ³•è¿žæŽ¥åˆ°ä½ çš„æ•°æ®åº“ã€‚ç¼–è¾‘ä½ çš„æ•°æ®åº“é…置,然åŽé‡è¯•ã€‚', + 'writeError' => + "æ— æ³•åˆ›å»ºæˆ–å†™å…¥ `.env` æ–‡ä»¶ã€‚ä½ å¿…é¡»æ‰‹åŠ¨æŒ‰ç…§ Castopod ä¸çš„ `.env.example` 文件模æ¿åˆ›å»ºå®ƒã€‚", + ], +]; diff --git a/modules/Admin/Language/zh-Hans/MyAccount.php b/modules/Admin/Language/zh-Hans/MyAccount.php new file mode 100644 index 0000000000..3822e48fce --- /dev/null +++ b/modules/Admin/Language/zh-Hans/MyAccount.php @@ -0,0 +1,18 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'info' => '账户信æ¯', + 'changePassword' => '修改密ç ', + 'messages' => [ + 'wrongPasswordError' => "密ç 错误,请é‡è¯•ã€‚", + 'passwordChangeSuccess' => '密ç 已更改ï¼', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Navigation.php b/modules/Admin/Language/zh-Hans/Navigation.php new file mode 100644 index 0000000000..d6f7e11b11 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Navigation.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'toggle_sidebar' => '切æ¢ä¾§è¾¹æ ', + 'go_to_website' => '访问网站', + 'go_to_admin' => '登录到管ç†å‘˜', + 'dashboard' => '控制é¢æ¿', + 'admin' => '主页', + 'podcasts' => 'æ’客', + 'podcast-list' => '全部æ’客', + 'podcast-create' => 'æ–°æ’客', + 'podcast-import' => '导入æ’客', + 'persons' => '人', + 'person-list' => '所有人', + 'person-create' => 'æ–°æˆå‘˜', + 'fediverse' => 'è”邦宇宙', + 'fediverse-blocked-actors' => 'å·²å±è”½å¸æˆ·', + 'fediverse-blocked-domains' => 'å·²å±è”½åŸŸå', + 'users' => '用户', + 'user-list' => '所有用户', + 'user-create' => '新用户', + 'pages' => '页', + 'page-list' => '所有页é¢', + 'page-create' => '新页é¢', + 'settings' => '设置', + 'settings-general' => '通用', + 'settings-theme' => '主题', + 'account' => [ + 'my-account' => '我的å¸æˆ·', + 'change-password' => '修改密ç ', + 'logout' => '注销', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Notifications.php b/modules/Admin/Language/zh-Hans/Notifications.php new file mode 100644 index 0000000000..ded7c984f5 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Notifications.php @@ -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' => '通知', + 'reply' => '{actor_username} 回å¤äº†ä½ 的帖å', + 'favourite' => '{actor_username} å–œæ¬¢äº†ä½ çš„å¸–å', + 'reblog' => '{actor_username} åˆ†äº«äº†ä½ çš„å¸–å', + 'follow' => '{actor_username} 开始关注 {target_actor_username}', + 'no_notifications' => '没有通知', + 'mark_all_as_read' => 'å…¨éƒ¨æ ‡è®°ä¸ºå·²è¯»', +]; diff --git a/modules/Admin/Language/zh-Hans/Page.php b/modules/Admin/Language/zh-Hans/Page.php new file mode 100644 index 0000000000..845da7d032 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Page.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'back_to_home' => '返回主页', + 'page' => '页é¢', + 'all_pages' => '所有页é¢', + 'create' => '新建页é¢', + 'go_to_page' => '转到页é¢', + 'edit' => '编辑页é¢', + 'delete' => 'åˆ é™¤é¡µé¢', + 'form' => [ + 'title' => 'æ ‡é¢˜', + 'permalink' => '永久链接', + 'content' => '内容', + 'submit_create' => '创建页é¢', + 'submit_edit' => 'ä¿å˜', + ], + 'messages' => [ + 'createSuccess' => 'é¡µé¢ â€œ{pageTitle}†已创建ï¼', + 'editSuccess' => '页é¢å·²æ›´æ–°ï¼', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Pager.php b/modules/Admin/Language/zh-Hans/Pager.php new file mode 100644 index 0000000000..3abbc5835d --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Pager.php @@ -0,0 +1,21 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'pageNavigation' => '页é¢å¯¼èˆª', + 'first' => '首页', + 'previous' => '上一个', + 'next' => '下一页', + 'last' => '上一页', + 'older' => '年长者', + 'newer' => '新人', + 'invalidTemplate' => '{0} ä¸æ˜¯æœ‰æ•ˆçš„分页模æ¿ã€‚', + 'invalidPaginationGroup' => '{0} ä¸æ˜¯æœ‰æ•ˆçš„分页组。', +]; diff --git a/modules/Admin/Language/zh-Hans/Person.php b/modules/Admin/Language/zh-Hans/Person.php new file mode 100644 index 0000000000..80243c1db0 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Person.php @@ -0,0 +1,65 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'persons' => '人', + 'all_persons' => '所有人', + 'no_person' => '未找到该用户ï¼', + 'create' => '创建人员', + 'view' => '查看人员', + 'edit' => '编辑人员', + 'delete' => 'åˆ é™¤äººå‘˜', + 'messages' => [ + 'createSuccess' => '人员已创建ï¼', + 'editSuccess' => '人员已更新ï¼', + 'deleteSuccess' => 'äººå‘˜å·²è¢«åˆ é™¤ï¼', + ], + 'form' => [ + 'avatar' => '头åƒ', + 'avatar_size_hint' => + '头åƒå¿…须是方形,而且至少 400 px 宽度和高度。', + 'full_name' => 'å…¨å', + 'full_name_hint' => '这是æ¤äººçš„å…¨å或别å。', + 'unique_name' => '唯一å称', + 'unique_name_hint' => '用于 URL', + 'information_url' => 'ä¿¡æ¯ URL', + 'information_url_hint' => + '指å‘æ¤äººçš„相关信æ¯èµ„æºçš„ Url,例如主页或第三方个人资料平å°ã€‚', + 'submit_create' => '创建人员', + 'submit_edit' => 'ä¿å˜äººå‘˜', + ], + 'podcast_form' => [ + 'title' => '管ç†äººå‘˜', + 'add_section_title' => 'æ·»åŠ æ¤äººåˆ°æ’客ä¸', + 'add_section_subtitle' => 'ä½ å¯ä»¥é€‰æ‹©å‡ 个人和他们的角色。', + 'persons' => '人', + 'persons_hint' => + 'ä½ å¯ä»¥é€‰æ‹©ä¸€ä¸ªæˆ–多个具有相åŒè§’色的人。 但需è¦å…ˆåˆ›å»ºäººã€‚', + 'roles' => '角色', + 'roles_hint' => + 'ä½ å¯ä»¥ä¸ºä¸€ä¸ªäººé€‰æ‹©é›¶ã€ä¸€ä¸ªæˆ–多个角色。', + 'submit_add' => 'æ·»åŠ äººå‘˜', + 'remove' => '移除', + ], + 'episode_form' => [ + 'title' => '管ç†äººå‘˜', + 'add_section_title' => 'æ·»åŠ äººåˆ°æ¤å‰§é›†', + 'add_section_subtitle' => 'ä½ å¯ä»¥é€‰æ‹©å‡ 个人和他们的角色。', + 'persons' => '人', + 'persons_hint' => + 'ä½ å¯ä»¥é€‰æ‹©ä¸€ä¸ªæˆ–多个具有相åŒè§’色的人。 但需è¦å…ˆåˆ›å»ºäººã€‚', + 'roles' => '角色', + 'roles_hint' => + 'ä½ å¯ä»¥ä¸ºä¸€ä¸ªäººé€‰æ‹©é›¶ã€ä¸€ä¸ªæˆ–多个角色。', + 'submit_add' => 'æ·»åŠ äººå‘˜', + 'remove' => '移除', + ], + 'credits' => '鸣谢', +]; diff --git a/modules/Admin/Language/zh-Hans/Platforms.php b/modules/Admin/Language/zh-Hans/Platforms.php new file mode 100644 index 0000000000..6a71b42a45 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Platforms.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => 'å¹³å°', + 'home_url' => '转至 {platformName} 网站', + 'submit_url' => '在 {platformName} 上æäº¤ä½ çš„æ’客', + 'visible' => '在æ’客主页上显示?', + 'on_embed' => '在嵌入å¼æ’放器上显示?', + 'remove' => '移除 {platformName}', + 'submit' => 'ä¿å˜', + 'messages' => [ + 'updateSuccess' => 'å¹³å°é“¾æŽ¥å·²æ›´æ–°ï¼', + 'removeLinkSuccess' => 'å¹³å°é“¾æŽ¥å·²è¢«ç§»é™¤ã€‚', + 'removeLinkError' => + 'æ— æ³•åˆ é™¤å¹³å°é“¾æŽ¥ã€‚ å†è¯•ä¸€æ¬¡ã€‚', + ], + 'description' => [ + 'podcasting' => 'æ¤å¹³å°ä¸Šçš„æ’客 ID', + 'social' => 'æ¤å¹³å°ä¸Šçš„æ’客账å·ID', + 'funding' => 'å·å¬å£å·', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Podcast.php b/modules/Admin/Language/zh-Hans/Podcast.php new file mode 100644 index 0000000000..7e6df1e200 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Podcast.php @@ -0,0 +1,307 @@ +<?php + +declare(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' => '全部æ’客', + 'no_podcast' => '没有找到æ’客!', + 'create' => '创建æ’客', + 'import' => '导入æ’客', + 'new_episode' => '新剧集', + 'view' => 'æµè§ˆåšå®¢', + 'edit' => '编辑æ’客', + 'publish' => 'å‘布æ’客', + 'publish_edit' => '编辑å‘布', + 'delete' => 'åˆ é™¤æ’客', + 'see_episodes' => '查看剧集', + 'see_contributors' => '查看贡献者', + 'go_to_page' => '转到页é¢', + 'latest_episodes' => '最新剧集', + 'see_all_episodes' => '查看所有剧集', + 'draft' => 'è‰ç¨¿', + 'messages' => [ + 'createSuccess' => 'æ’客创建æˆåŠŸï¼', + 'editSuccess' => 'æ’客已更新ï¼', + 'importSuccess' => 'æ’客已导入ï¼', + 'deleteSuccess' => 'æ’客 @{podcast_handle} å·²åˆ é™¤ï¼', + 'deletePodcastMediaError' => 'åˆ é™¤æ’客失败 {type, select, + cover {å°é¢} + banner {横幅} + other {媒体} + }', + 'deleteEpisodeMediaError' => 'æ— æ³•åˆ é™¤åšå®¢å‰§é›† {episode_slug} {type, select, + transcript {å—幕} + chapters {ç« èŠ‚} + image {å°é¢} + audio {音频} + other {媒体} + }。', + 'deletePodcastMediaFolderError' => 'æ— æ³•åˆ é™¤æ’客媒体文件夹 {folder_path}。 ä½ å¯ä»¥æ‰‹åŠ¨å°†å…¶ä»Žç£ç›˜ä¸åˆ 除。', + 'podcastFeedUpdateSuccess' => 'æˆåŠŸæ›´æ–°ï¼š{number_of_new_episodes, plural, + one {#剧集} + other {# 剧集} + } æ·»åŠ åˆ°æ’客ï¼', + 'podcastFeedUpToDate' => 'æ’客已ç»æ˜¯æœ€æ–°çŠ¶æ€ã€‚', + 'podcastNotImported' => 'æ’å®¢æ— æ³•æ›´æ–°ï¼Œå› ä¸ºå®ƒæ²¡æœ‰è¢«å¯¼å…¥ã€‚', + 'publishError' => 'æ¤æ’客已ç»å‘布或计划å‘布。', + 'publishEditError' => 'æ¤æ’客未计划å‘布。', + 'publishCancelSuccess' => 'å–消æ’客å‘布ï¼', + 'scheduleDateError' => '计划日期必须设置ï¼', + ], + 'form' => [ + 'identity_section_title' => 'æ’å®¢æ ‡è¯†', + 'identity_section_subtitle' => '这些å—段å¯èƒ½è®©ä½ 脱颖而出。', + 'cover' => 'æ’客å°é¢', + 'cover_size_hint' => 'å°é¢å¿…须是方形,而且至少 1400 px 宽度和高度。', + 'banner' => 'æ’客横幅', + 'banner_size_hint' => '横幅必须有 3:1 比例,宽度至少为 1500px。', + 'banner_delete' => 'åˆ é™¤æ’客横幅', + 'title' => 'æ ‡é¢˜', + 'handle' => 'æ ‡å¤´', + 'handle_hint' => + '用于识别æ’客。å…许使用大å°å†™ã€æ•°å—和下划线。', + 'type' => [ + 'label' => '类型', + 'episodic' => '剧集', + 'episodic_hint' => '如果在没有任何特定情况下进行剧集排åºã€‚那么最新剧集优先显示。', + 'serial' => '系列', + 'serial_hint' => '如果指定剧集排åºæ–¹å¼ã€‚那么最久剧集将优先显示。', + ], + 'description' => 'æè¿°', + 'classification_section_title' => '分类', + 'classification_section_subtitle' => + '这些å—段将影å“ä½ çš„å—众。', + 'language' => '切æ¢è¯è¨€', + 'category' => '类别', + 'category_placeholder' => '选择分类...', + 'other_categories' => '其他分类', + 'parental_advisory' => [ + 'label' => 'è¦å‘Šæ ‡è®°', + 'hint' => '是å¦åŒ…å«é™åˆ¶çº§å†…容?', + 'undefined' => '未定义', + 'clean' => '清ç†', + 'explicit' => 'é™åˆ¶çº§', + ], + 'author_section_title' => '作者', + 'author_section_subtitle' => 'è°åœ¨ç®¡ç†æ’客?', + 'owner_name' => '所有者å称', + 'owner_name_hint' => + '仅供管ç†ä½¿ç”¨ï¼Œåœ¨å…¬å¼€ RSS æè¦ä¸å¯è§ã€‚', + 'owner_email' => '所有者邮箱', + 'owner_email_hint' => + '大多数平å°å°†ä½¿ç”¨å®ƒæ¥éªŒè¯æ’客的所有æƒã€‚ 在公开 RSS æè¦ä¸å¯è§ã€‚', + 'publisher' => 'å‘布者', + 'publisher_hint' => + '负责制作节目的å°ç»„。 通常指æ’客的æ¯å…¬å¸æˆ–网络。 æœ‰æ—¶ä¼šè¢«æ ‡è®°ä¸ºâ€œä½œè€…â€ã€‚', + 'copyright' => '版æƒ', + 'location_section_title' => '地点', + 'location_section_subtitle' => '这个æ’客在哪里?', + 'location_name' => 'ä½ç½®å称或地å€', + 'location_name_hint' => '真或å‡çš„地方都å¯ä»¥', + 'monetization_section_title' => 'è´§å¸åŒ–', + 'monetization_section_subtitle' => + 'æ„Ÿè°¢ä½ çš„å¬ä¼—支æŒã€‚', + 'payment_pointer' => '网络货å¸åŒ–支付指å—', + 'payment_pointer_hint' => + '借助网络货å¸åŒ–ï¼Œä½ å¯ä»¥åœ¨æ¤æ”¶æ¬¾', + 'advanced_section_title' => '高级å‚æ•°', + 'advanced_section_subtitle' => + 'å¦‚æžœä½ ä¸éœ€è¦ Castopod 处ç†æŸäº›è®¢é˜…æºæ ‡ç¾ï¼Œè¯·åœ¨æ¤å¤„设置。', + 'custom_rss' => 'æ’å®¢çš„è‡ªå®šä¹‰è®¢é˜…æ ‡ç¾', + 'custom_rss_hint' => '这将被注入到â¬channelâæ ‡ç¾ä¸ã€‚', + 'new_feed_url' => '新订阅æºç½‘å€', + 'new_feed_url_hint' => 'å½“ä½ è¿ç§»åˆ°å¦ä¸€ä¸ªåŸŸæˆ–æ’客托管平å°æ—¶ï¼Œè¯·ä½¿ç”¨æ¤å—段。 默认情况下,æ’客导入时,该值为当å‰çš„订阅æºç½‘å€ã€‚', + 'old_feed_url' => '旧订阅æºç½‘å€', + 'update_feed' => '更新订阅æº', + 'update_feed_tip' => '导入æ¤æ’客的最新剧集', + 'partnership' => 'åˆä½œä¼™ä¼´', + 'partner_id' => 'ID', + 'partner_link_url' => '链接网å€', + 'partner_image_url' => '图片网å€', + 'partner_id_hint' => 'ä½ è‡ªå·±çš„åˆä½œä¼™ä¼´ ID', + 'partner_link_url_hint' => '通用åˆä½œä¼™ä¼´é“¾æŽ¥åœ°å€', + 'partner_image_url_hint' => '通用åˆä½œä¼™ä¼´å›¾ç‰‡åœ°å€', + 'status_section_title' => '状æ€', + 'block' => 'æ’客应该在公共目录ä¸éšè—', + 'block_hint' => + 'æ’客显示或éšè—状æ€ï¼šæ‰“å¼€æ¤é€‰é¡¹å¯é˜²æ¢æ•´ä¸ªæ’客出现在 Apple æ’客ã€Google æ’客以åŠä»Žæ¤ç›®å½•ä¸æå–剧集的任何第三方应用程åºä¸ã€‚(ä¸ä¿è¯ï¼‰', + 'complete' => 'æ’客没有新剧集', + 'lock' => '防æ¢æ’客被盗用', + 'lock_hint' => + '目的是告诉其他æ’客平å°æ˜¯å¦å…许导入æ¤è®¢é˜…æºã€‚ 值为是表示拒ç»å°†æ¤è®¢é˜…æºå¯¼å…¥ä»»ä½•å¹³å°ã€‚', + 'submit_create' => '创建æ’客', + 'submit_edit' => 'ä¿å˜æ’客', + ], + 'category_options' => [ + 'uncategorized' => '未分类', + 'arts' => '艺术', + 'business' => '商业', + 'comedy' => '喜剧', + 'education' => '教育', + 'fiction' => 'å°è¯´', + 'government' => '政府', + 'health_and_fitness' => 'å¥åº·å’Œå¥èº«', + 'history' => '历å²', + 'kids_and_family' => '儿童与家åº', + 'leisure' => '休闲娱ä¹', + 'music' => '音ä¹', + 'news' => 'æ–°é—»', + 'religion_and_spirituality' => '宗教与精神', + 'science' => '科å¦', + 'society_and_culture' => '社会与文化', + 'sports' => '体育è¿åŠ¨', + 'technology' => '技术', + 'true_crime' => '真实犯罪', + 'tv_and_film' => '电视与电影', + 'books' => '图书', + 'design' => '设计', + 'fashion_and_beauty' => '时尚与美容', + 'food' => '美食', + 'performing_arts' => '表演艺术', + 'visual_arts' => '视觉艺术', + 'careers' => 'èŒä¸šç”Ÿæ¶¯', + 'entrepreneurship' => '创业', + 'investing' => '金èžæŠ•èµ„', + 'management' => '管ç†', + 'marketing' => '市场è¥é”€', + 'non_profit' => 'éžç›ˆåˆ©æ´»åŠ¨', + 'comedy_interviews' => '喜剧采访', + 'improv' => 'å³å…´è¡¨æ¼”', + 'stand_up' => 'å•å£ç›¸å£°', + 'courses' => '课程', + 'how_to' => '动手能力', + 'language_learning' => 'è¯è¨€å¦ä¹ ', + 'self_improvement' => '自我æå‡', + 'comedy_fiction' => '喜剧å°è¯´', + 'drama' => 'æˆå‰§', + 'science_fiction' => '科幻', + 'alternative_health' => 'ä¿å¥', + 'fitness' => 'å¥èº«', + 'medicine' => '医å¦', + 'mental_health' => '心ç†å¥åº·', + 'nutrition' => 'è¥å…»å¦', + 'sexuality' => '性', + 'education_for_kids' => '儿童教育', + 'parenting' => '育儿', + 'pets_and_animals' => 'å® ç‰©ä¸ŽåŠ¨ç‰©', + 'stories_for_kids' => 'ç«¥è¯æ•…事', + 'animation_and_manga' => '动漫', + 'automotive' => '汽车', + 'aviation' => '航空', + 'crafts' => '工艺', + 'games' => '游æˆ', + 'hobbies' => '兴趣爱好', + 'home_and_garden' => '家居与å›è‰º', + 'video_games' => '电å游æˆ', + 'music_commentary' => '音ä¹è¯„论', + 'music_history' => '音ä¹å²', + 'music_interviews' => '音ä¹é‡‡è®¿', + 'business_news' => '商业新闻', + 'daily_news' => 'æ¯æ—¥æ–°é—»', + 'entertainment_news' => '娱ä¹æ–°é—»', + 'news_commentary' => '新闻评论', + 'politics' => '政治', + 'sports_news' => '体育新闻', + 'tech_news' => '科技新闻', + 'buddhism' => '佛教', + 'christianity' => '基ç£æ•™', + 'hinduism' => 'å°åº¦æ•™', + 'islam' => '伊斯兰教', + 'judaism' => '犹太教', + 'religion' => '宗教信仰', + 'spirituality' => '精神生活', + 'astronomy' => '天文å¦', + 'chemistry' => '化å¦', + 'earth_sciences' => '地çƒç§‘å¦', + 'life_sciences' => '生命科å¦', + 'mathematics' => 'æ•°å¦', + 'natural_sciences' => '自然科å¦', + 'nature' => '自然', + 'physics' => '物ç†å¦', + 'social_sciences' => '社会科å¦', + 'documentary' => '纪实', + 'personal_journals' => '个人日记', + 'philosophy' => '哲å¦', + 'places_and_travel' => '地方与旅行', + 'relationships' => '人际关系', + 'baseball' => '棒çƒ', + 'basketball' => '篮çƒ', + 'cricket' => 'æ¿çƒ', + 'fantasy_sports' => '梦幻体育', + 'football' => '足çƒ', + 'golf' => '高尔夫çƒ', + 'hockey' => '曲æ£çƒ', + 'rugby' => '橄榄çƒ', + 'running' => 'è·‘æ¥', + 'soccer' => '英å¼è¶³çƒ', + 'swimming' => '游泳', + 'tennis' => '网çƒ', + 'volleyball' => '排çƒ', + 'wilderness' => 'è’野', + 'wrestling' => '摔跤', + 'after_shows' => '幕åŽ', + 'film_history' => '电影å²', + 'film_interviews' => '电影采访', + 'film_reviews' => '电影评论', + 'tv_reviews' => '电视评论', + ], + 'publish_form' => [ + 'back_to_podcast_dashboard' => '返回æ’客控制é¢æ¿', + 'post' => 'ä½ çš„å…¬å‘Šæ’æ–‡', + 'post_hint' => + "写一æ¡æ¶ˆæ¯æ¥å®£å¸ƒæ‚¨çš„æ’客å‘布。该消æ¯å°†åœ¨æ‚¨çš„æ’客主页ä¸æ˜¾ç¤ºã€‚", + 'message_placeholder' => 'å†™ä¸‹ä½ çš„æ¶ˆæ¯â€¦', + 'submit' => 'å‘布', + 'publication_date' => 'å‘布日期', + 'publication_method' => [ + 'now' => '现在', + 'schedule' => '计划', + ], + 'scheduled_publication_date' => '计划å‘布日期', + 'scheduled_publication_date_hint' => + 'ä½ å¯ä»¥é€šè¿‡è®¾ç½®æœªæ¥å‘布日期æ¥å®‰æŽ’æ’客å‘布。æ¤å—æ®µå¿…é¡»æ ¼å¼ä¸º YYYY-MM-DD HH:mm', + 'submit_edit' => '编辑å‘布', + 'cancel_publication' => 'å–消å‘布', + 'message_warning' => 'ä½ æ²¡æœ‰ä¸ºä½ çš„å…¬å‘Šæ’文写一æ¡æ¶ˆæ¯ï¼', + 'message_warning_hint' => '有消æ¯å‘é€å¯ä»¥å¢žåŠ 社交å‚与度,从而æé«˜ä½ çš„æ’客æ›å…‰åº¦ã€‚', + 'message_warning_submit' => 'ä»ç„¶å‘布', + ], + 'publication_status_banner' => [ + 'draft_mode' => 'è‰ç¨¿æ¨¡å¼', + 'not_published' => '该æ’客尚未å‘布。', + 'scheduled' => '该æ’客计划在 {publication_date} å‘布。', + ], + 'delete_form' => [ + 'disclaimer' => + "åˆ é™¤æ’å®¢å°†åˆ é™¤ç›¸å…³çš„æ‰€æœ‰å‰§é›†ã€åª’体文件ã€å¸–å和分æžã€‚ æ¤æ“作ä¸å¯é€†ï¼Œæ— 法æ¢å¤ã€‚", + 'understand' => 'æˆ‘æ˜Žç™½ï¼Œæˆ‘å¸Œæœ›æ°¸ä¹…åˆ é™¤æ’客。', + 'submit' => 'åˆ é™¤', + ], + 'by' => 'ç”± {publisher} 推出', + 'season' => '第 {seasonNumber} å£', + 'list_of_episodes_year' => '{year} 剧集 ({episodeCount})', + 'list_of_episodes_season' => + '第 {seasonNumber} å£(第 {episodeCount} 集)', + 'no_episode' => '没有找到剧集ï¼', + 'follow' => '关注', + 'followers' => '{numberOfFollowers, plural, + one {# 关注者} + other {#关注者} + }', + 'posts' => '{numberOfPosts, plural, + one {# 帖å} + other {# 帖å} + }', + 'activity' => '活动', + 'episodes' => '剧集', + 'sponsor' => '赞助者', + 'funding_links' => '{podcastTitle} çš„æ助链接', + 'find_on' => '找到 {podcastTitle} 在', + 'listen_on' => '收å¬', +]; diff --git a/modules/Admin/Language/zh-Hans/PodcastImport.php b/modules/Admin/Language/zh-Hans/PodcastImport.php new file mode 100644 index 0000000000..ad5732e685 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/PodcastImport.php @@ -0,0 +1,37 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'warning' => + 'æ¤è¿‡ç¨‹å¯èƒ½éœ€è¦å¾ˆé•¿æ—¶é—´ã€‚ 由于当å‰ç‰ˆæœ¬åœ¨è¿è¡Œæ—¶æœªæ˜¾ç¤ºä»»ä½•è¿›åº¦ï¼Œå› æ¤åœ¨å®Œæˆä¹‹å‰æ‚¨ä¸ä¼šçœ‹åˆ°ä»»ä½•æ示。 åœ¨è¶…æ—¶é”™è¯¯çš„æƒ…å†µä¸‹ï¼Œå¢žåŠ `max_execution_time` 值。', + 'old_podcast_section_title' => 'è¦å¯¼å…¥çš„æ’客', + 'old_podcast_section_subtitle' => + '请确ä¿æ‚¨åœ¨å¯¼å…¥ä¹‹å‰æ‹¥æœ‰æ¤æ’客的æƒé™ã€‚ 在没有æƒé™çš„情况下å¤åˆ¶å’Œå¹¿æ’æ’客是盗版行为,å¯èƒ½å—到起诉。', + 'imported_feed_url' => '订阅æºçš„ URL', + 'imported_feed_url_hint' => '订阅æºå¿…须是 xml 或 rss æ ¼å¼ã€‚', + 'new_podcast_section_title' => 'æ–°æ’客', + 'advanced_params_section_title' => '高级å‚æ•°', + 'advanced_params_section_subtitle' => + '如果您ä¸çŸ¥é“这些å—段的用途,请ä¿ç•™é»˜è®¤å€¼ã€‚', + 'slug_field' => '用于计算剧集 Slug çš„å—段', + 'description_field' => + '用于剧集æè¿°/节目说明的æºå—段', + 'force_renumber' => '强制剧集é‡æ–°ç¼–å·', + 'force_renumber_hint' => + 'å¦‚æžœä½ çš„æ’客没有剧集编å·ä½†å¸Œæœ›åœ¨å¯¼å…¥æ—¶è®¾ç½®ï¼Œè¯·ä½¿ç”¨æ¤é€‰é¡¹ã€‚', + 'season_number' => 'å£å·', + 'season_number_hint' => + '如果您的æ’客没有å£å·ï¼Œä½†å¸Œæœ›åœ¨å¯¼å…¥æ—¶è®¾ç½®ï¼Œè¯·ä½¿ç”¨æ¤é€‰é¡¹ï¼Œå¦åˆ™ç•™ç©ºã€‚', + 'max_episodes' => 'è¦å¯¼å…¥çš„最大剧集数', + 'max_episodes_hint' => '留空导入所有剧集', + 'lock_import' => + 'æ¤è®¢é˜…æºå—到ä¿æŠ¤ã€‚ä½ ä¸èƒ½å¯¼å…¥å®ƒã€‚å¦‚æžœä½ æ˜¯æ‰€æœ‰è€…ï¼Œè¯·åœ¨åŽŸå¹³å°å–消ä¿æŠ¤ã€‚', + 'submit' => '导入æ’客', +]; diff --git a/modules/Admin/Language/zh-Hans/PodcastNavigation.php b/modules/Admin/Language/zh-Hans/PodcastNavigation.php new file mode 100644 index 0000000000..ba11a317a2 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/PodcastNavigation.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'go_to_page' => '转到æ’客页é¢', + 'dashboard' => 'æ’客控制é¢æ¿', + 'podcast-view' => '主页', + 'podcast-edit' => '编辑æ’客', + 'podcast-persons-manage' => '管ç†äººå‘˜', + 'episodes' => '剧集', + 'episode-list' => '所有剧集', + 'episode-create' => '新剧集', + 'analytics' => '统计数æ®', + 'podcast-analytics' => 'å¬ä¼—概览', + 'podcast-analytics-webpages' => '网页访问', + 'podcast-analytics-locations' => 'ä½ç½®ä¿¡æ¯', + 'podcast-analytics-unique-listeners' => '独特å¬ä¼—', + 'podcast-analytics-players' => 'æ’放', + 'podcast-analytics-listening-time' => '收å¬æ—¶é—´', + 'podcast-analytics-time-periods' => '时间段', + 'contributors' => '贡献者', + 'contributor-list' => '所有贡献者', + 'contributor-add' => 'æ·»åŠ è´¡çŒ®è€…', + 'platforms' => '外部平å°', + 'platforms-podcasting' => 'æ’客', + 'platforms-social' => '社交网络', + 'platforms-funding' => '资金支æŒ', +]; diff --git a/modules/Admin/Language/zh-Hans/Settings.php b/modules/Admin/Language/zh-Hans/Settings.php new file mode 100644 index 0000000000..8c7768cedb --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Settings.php @@ -0,0 +1,56 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => '常用设置', + 'instance' => [ + 'title' => '实例', + 'site_icon' => 'ç«™ç‚¹å›¾æ ‡', + 'site_icon_delete' => 'åˆ é™¤ç«™ç‚¹å›¾æ ‡', + 'site_icon_hint' => 'ç«™ç‚¹å›¾æ ‡æ˜¯æ‚¨åœ¨æµè§ˆå™¨æ ‡ç¾é¡µã€ä¹¦ç¾æ åŠå°†ç½‘ç«™æ·»åŠ ä¸ºç§»åŠ¨è®¾å¤‡ä¸Šçš„å¿«æ·æ–¹å¼æ—¶çœ‹åˆ°çš„内容。', + 'site_icon_helper' => 'å›¾æ ‡å¿…é¡»æ˜¯æ–¹å½¢ï¼Œè€Œä¸”è‡³å°‘ 512px 宽度和高度。', + 'site_name' => '站点å称', + 'site_description' => '站点æè¿°', + 'submit' => 'ä¿å˜', + 'editSuccess' => '实例已更新ï¼', + 'deleteIconSuccess' => 'ç«™ç‚¹å›¾æ ‡å·²ç§»é™¤ï¼', + ], + 'images' => [ + 'title' => '图åƒ', + 'subtitle' => 'åœ¨è¿™é‡Œï¼Œä½ å¯ä»¥æ ¹æ®ä¸Šä¼ 的原始图åƒé‡æ–°ç”Ÿæˆæ‰€æœ‰å›¾åƒã€‚ 如果å‘现æŸäº›å›¾åƒä¸¢å¤±ï¼Œè¯·ä½¿ç”¨æ¤é¡¹åŠŸèƒ½ã€‚æ¤åŠŸèƒ½å¯èƒ½éœ€è¦æ‰§è¡Œä¸€æ®µæ—¶é—´ã€‚', + 'regenerate' => 'é‡æ–°ç”Ÿæˆå›¾ç‰‡', + 'regenerationSuccess' => '所有图片已é‡æ–°ç”Ÿæˆï¼', + ], + 'housekeeping' => [ + 'title' => '维护任务', + 'subtitle' => 'è¿è¡Œç»´æŠ¤ä»»åŠ¡ã€‚如果é‡åˆ°åª’体文件或数æ®ä¸¢å¤±ï¼Œè¯·ä½¿ç”¨æ¤åŠŸèƒ½ã€‚这些任务å¯èƒ½éœ€è¦ä¸€æ®µæ—¶é—´ã€‚', + 'reset_counts' => 'é‡ç½®è®¡æ•°', + 'reset_counts_helper' => 'æ¤é€‰é¡¹å°†é‡æ–°è®¡ç®—并é‡ç½®æ‰€æœ‰æ•°æ®ç»Ÿè®¡(关注者数目ã€å¸–åã€è¯„论〠…)。', + 'rewrite_media' => 'é‡å†™åª’体元数æ®', + 'rewrite_media_helper' => 'æ¤é€‰é¡¹å°†åˆ 除所有多余的媒体文件并é‡æ–°åˆ›å»º(图åƒã€éŸ³é¢‘ã€å—幕ã€ç« 节〠…)', + 'clear_cache' => '清除所有缓å˜', + 'clear_cache_helper' => 'æ¤é€‰é¡¹å°†ä»Žå¯å†™/缓å˜æ–‡ä»¶å¤¹ä¸åˆ 除整个 redis 缓å˜æˆ–缓å˜æ–‡ä»¶ã€‚', + 'run' => 'è¿è¡Œç»´æŠ¤ä»»åŠ¡', + 'runSuccess' => '维护æˆåŠŸï¼', + ], + 'theme' => [ + 'title' => '主题', + 'accent_section_title' => '主题色', + 'accent_section_subtitle' => '选择一个颜色æ¥ç¡®å®šæ‰€æœ‰å…¬å…±é¡µé¢çš„外观体验。', + 'pine' => 'æ¾è‰²', + 'crimson' => '绯红', + 'amber' => 'ç¥ç€', + 'lake' => '湖色', + 'jacaranda' => 'è“花楹', + 'onyx' => '黑玛瑙色', + 'submit' => 'ä¿å˜', + 'setInstanceThemeSuccess' => '主题已更新ï¼', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Soundbite.php b/modules/Admin/Language/zh-Hans/Soundbite.php new file mode 100644 index 0000000000..4d5f02d98c --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Soundbite.php @@ -0,0 +1,31 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'list' => [ + 'title' => '原声摘è¦', + 'soundbite' => '原声摘è¦', + ], + 'messages' => [ + 'createSuccess' => '原声摘è¦å·²åˆ›å»ºï¼', + 'deleteSuccess' => '原声摘è¦å·²ç§»é™¤ï¼', + ], + 'form' => [ + 'title' => '新原声摘è¦', + 'soundbite_title' => '原声摘è¦æ ‡é¢˜', + 'start_time' => '开始于', + 'duration' => 'æŒç»æ—¶é—´', + 'submit' => '创建原声摘è¦', + ], + 'play' => 'æ’放原声摘è¦', + 'stop' => 'åœæ¢åŽŸå£°æ‘˜è¦', + 'create' => '新原声摘è¦', + 'delete' => 'åˆ é™¤åŽŸå£°æ‘˜è¦', +]; diff --git a/modules/Admin/Language/zh-Hans/User.php b/modules/Admin/Language/zh-Hans/User.php new file mode 100644 index 0000000000..ae5b6dd389 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/User.php @@ -0,0 +1,54 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'edit_roles' => "编辑 {username} 的角色", + 'forcePassReset' => '强制é‡ç½®', + 'ban' => 'å°ç¦', + 'unban' => 'å–消å°ç¦', + 'delete' => 'åˆ é™¤', + 'create' => '新用户', + 'view' => "{username} çš„ä¿¡æ¯", + 'all_users' => '所有用户', + 'list' => [ + 'user' => '用户', + 'roles' => '角色', + 'banned' => 'å·²å°ç¦ï¼Ÿ', + ], + 'form' => [ + 'email' => '邮箱', + 'username' => '用户å', + 'password' => '密ç ', + 'new_password' => '新密ç ', + 'roles' => '角色', + 'permissions' => 'æƒé™', + 'submit_create' => '创建用户', + 'submit_edit' => 'ä¿å˜', + 'submit_password_change' => '修改ï¼', + ], + 'roles' => [ + 'superadmin' => '超级管ç†å‘˜', + ], + 'messages' => [ + 'createSuccess' => + '用户创建æˆåŠŸï¼{username} 将在首次验è¯æ—¶æ醒é‡ç½®å¯†ç 。', + 'rolesEditSuccess' => + "{username} 的角色已更新。", + 'forcePassResetSuccess' => + '下次访问时 {username} 将被æ醒é‡ç½®å¯†ç 。', + 'banSuccess' => '{username} 已被å°ç¦ã€‚', + 'unbanSuccess' => '{username} 已解除å°ç¦ã€‚', + 'banSuperAdminError' => + '{username} 是超级管ç†å‘˜ï¼Œä¸èƒ½ç¦æ¢è¶…级管ç†å‘˜â€¦', + 'deleteSuperAdminError' => + '{username} 是超级管ç†å‘˜ï¼Œä¸èƒ½å°ç¦è¶…级管ç†å‘˜â€¦', + 'deleteSuccess' => '{username} å·²è¢«åˆ é™¤ã€‚', + ], +]; diff --git a/modules/Admin/Language/zh-Hans/Validation.php b/modules/Admin/Language/zh-Hans/Validation.php new file mode 100644 index 0000000000..cfdeac6e33 --- /dev/null +++ b/modules/Admin/Language/zh-Hans/Validation.php @@ -0,0 +1,18 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'min_dims' => + '{field} ä¸æ˜¯ä¸€å¼ 图片,或者宽或高度ä¸å¤Ÿã€‚', + 'is_image_ratio' => + '{field} ä¸æ˜¯å›¾ç‰‡æˆ–比例ä¸æ£ç¡®ã€‚', + 'validate_url' => + '{field} å—段必须是有效的 URL(例如 https://example.com/)。', +]; diff --git a/modules/Admin/Language/zh-Hans/VideoClip.php b/modules/Admin/Language/zh-Hans/VideoClip.php new file mode 100644 index 0000000000..45f80b6b5b --- /dev/null +++ b/modules/Admin/Language/zh-Hans/VideoClip.php @@ -0,0 +1,72 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2021 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'list' => [ + 'title' => 'è§†é¢‘ç´ æ', + 'status' => [ + 'label' => '状æ€', + 'queued' => '队列', + 'queued_hint' => 'ç´ ææ£åœ¨ç‰å¾…处ç†ã€‚', + 'pending' => '待处ç†', + 'pending_hint' => 'ç´ æ将很快完æˆã€‚', + 'running' => 'è¿è¡Œä¸', + 'running_hint' => 'æ£åœ¨ç”Ÿæˆç´ æ。', + 'failed' => '已失败', + 'failed_hint' => 'æ— æ³•ç”Ÿæˆç´ æ:脚本è¿è¡Œå¤±è´¥ã€‚', + 'passed' => '已通过', + 'passed_hint' => 'ç´ æ生æˆæˆåŠŸï¼', + ], + 'clip' => 'ç´ æ', + 'duration' => '工作时间', + ], + 'title' => 'è§†é¢‘ç´ æ: {videoClipLabel}', + 'download_clip' => 'ä¸‹è½½ç´ æ', + 'create' => 'æ–°å»ºè§†é¢‘ç´ æ', + 'go_to_page' => 'è·³è½¬åˆ°ç´ æ页é¢', + 'retry' => 'é‡è¯•ç´ æ生æˆ', + 'delete' => 'åˆ é™¤ç´ æ', + 'logs' => '任务日志', + 'messages' => [ + 'alreadyExistingError' => 'ä½ å°è¯•åˆ›å»ºçš„è§†é¢‘ç´ æå·²å˜åœ¨ï¼', + 'addToQueueSuccess' => 'è§†é¢‘ç´ æå·²æ·»åŠ åˆ°é˜Ÿåˆ—ä¸ï¼Œç‰å¾…创建ï¼', + 'deleteSuccess' => 'å·²åˆ é™¤è§†é¢‘ç´ æ', + ], + 'format' => [ + 'landscape' => '横å‘', + 'portrait' => 'ç«–å±', + 'squared' => '方形', + ], + 'form' => [ + 'title' => 'æ–°å»ºè§†é¢‘ç´ æ', + 'params_section_title' => 'è§†é¢‘ç´ æå‚æ•°', + 'clip_title' => 'ç´ ææ ‡é¢˜', + 'format' => [ + 'label' => 'é€‰æ‹©æ ¼å¼', + 'landscape_hint' => '使用 16:9的比例,éžå¸¸é€‚åˆ PeerTubeã€Youtube å’Œ Vimeo。', + 'portrait_hint' => '使用 9:16 的比例,éžå¸¸é€‚åˆ TikTok,Youtube shorts å’Œ Instagram。', + 'squared_hint' => '使用 1:1的比例,éžå¸¸é€‚åˆ Mastodonã€Facebookã€Twitter å’Œ LinkedIn。', + ], + 'theme' => '选择主题', + 'start_time' => '开始于', + 'duration' => 'æŒç»æ—¶é—´', + 'trim_start' => '修剪开始', + 'trim_end' => '修剪结æŸ', + 'submit' => 'åˆ›å»ºè§†é¢‘ç´ æ', + ], + 'requirements' => [ + 'title' => '未达到è¦æ±‚', + 'missing' => 'ä½ æœ‰æœªè¾¾åˆ°çš„è¦æ±‚。 æ·»åŠ æ‰€æœ‰å¿…éœ€é¡¹æ‰èƒ½ä¸ºæ¤å‰§é›†åˆ›å»ºè§†é¢‘ï¼', + 'ffmpeg' => 'FFmpeg', + 'gd' => 'Graphics Draw (GD)', + 'freetype' => 'GD çš„ Freetype 库', + 'transcript' => 'å—幕文件(.srt)', + ], +]; diff --git a/modules/Install/Language/ca/Install.php b/modules/Install/Language/ca/Install.php new file mode 100644 index 0000000000..640fadab6a --- /dev/null +++ b/modules/Install/Language/ca/Install.php @@ -0,0 +1,62 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => 'Instal·lador de Castopod', + 'manual_config' => 'Configuració manual', + 'manual_config_subtitle' => + 'Creeu un fitxer `.env` amb la vostra configuració i actualitzeu la pà gina per continuar amb la instal·lació.', + 'form' => [ + 'instance_config' => 'Configuració de la instà ncia', + 'hostname' => 'Nom del servidor (hostname)', + 'media_base_url' => 'URL de base pel multimèdia', + 'media_base_url_hint' => + 'Si utilitzeu un CDN i/o un servei d\'anà lisi de trà fic extern, podeu configurar-los aquÃ.', + 'admin_gateway' => 'Porta d\'enllaç al panell admin', + 'admin_gateway_hint' => + 'La ruta per accedir a l\'à rea d\'administració (p. ex., https://exemple.com/cp-admin). Està configurat per defecte com a cp-admin, us recomanem que el canvieu per motius de seguretat.', + 'auth_gateway' => 'Porta d\'enllaç per l\'autenticació', + 'auth_gateway_hint' => + 'La ruta per accedir a les pà gines d\'autenticació (p. ex. https://exemple.com/cp-auth). Està configurada per defecte com a cp-auth, us recomanem que el canvieu per motius de seguretat.', + 'database_config' => 'Configuració de la Base de Dades', + 'database_config_hint' => + 'Castopod s\'ha de connectar a la vostra base de dades MySQL (o MariaDB). Si no teniu aquesta informació necessà ria, poseu-vos en contacte amb l\'administrador del vostre servidor.', + 'db_hostname' => 'Nom del servidor (host) de la base de dades', + 'db_name' => 'Nom de la base de dades', + 'db_username' => 'Usuari de la base de dades', + 'db_password' => 'Contrasenya de la base de dades', + 'db_prefix' => 'Prefix de la base de dades', + 'db_prefix_hint' => + "El prefix emprat als noms de les taules de Castopod, deixeu-lo com està si no sabeu què significa.", + 'cache_config' => 'Configuració de la memòria cau', + 'cache_config_hint' => + 'Trieu el vostre gestor de memòria cau preferit. Deixeu-lo com a valor predeterminat si no teniu ni idea del que significa.', + 'cache_handler' => 'Gestor de memòria cau', + 'cacheHandlerOptions' => [ + 'file' => 'Fitxer', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => 'Següent', + 'submit' => 'Finalitzar la instal·lació', + 'create_superadmin' => 'Crear el vostre compte de super-usuari', + 'email' => 'Correu electrònic', + 'username' => 'Nom de l\'usuari', + 'password' => 'Contrasenya', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + 'El vostre compte de superadministrador s\'ha creat correctament. Inicieu sessió per començar a fer podcasts!', + 'databaseConnectError' => + 'Castopod no s\'ha pogut connectar a la vostra base de dades. Editeu la configuració de la vostra base de dades i torneu-ho a provar.', + 'writeError' => + "No s'ha pogut crear/escriure el fitxer `.env`. Heu de crear-lo manualment seguint la plantilla de fitxer `.env.example` del paquet Castopod.", + ], +]; diff --git a/modules/Install/Language/zh-Hans/Install.php b/modules/Install/Language/zh-Hans/Install.php new file mode 100644 index 0000000000..822cf2f3bc --- /dev/null +++ b/modules/Install/Language/zh-Hans/Install.php @@ -0,0 +1,62 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2020 Ad Aures + * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 + * @link https://castopod.org/ + */ + +return [ + 'title' => 'Castopod 安装程åº', + 'manual_config' => '手动é…ç½®', + 'manual_config_subtitle' => + 'åˆ›å»ºä¸€ä¸ªå¸¦æœ‰ä½ è®¾ç½®çš„â€œ.envâ€æ–‡ä»¶ï¼Œå¹¶åˆ·æ–°é¡µé¢ä»¥ç»§ç»å®‰è£…。', + 'form' => [ + 'instance_config' => '实例é…ç½®', + 'hostname' => '主机å', + 'media_base_url' => '媒体基础URL', + 'media_base_url_hint' => + 'å¦‚æžœä½ ä½¿ç”¨ CDN 或外部分æžæœåŠ¡ï¼Œå¯ä»¥åœ¨æ¤å¤„设置它们。', + 'admin_gateway' => '管ç†ç½‘å…³', + 'admin_gateway_hint' => + '访问管ç†åŒºåŸŸçš„路由(例如,https://example.com/cp-admin)。默认设置为 cp-adminï¼Œå¤„äºŽå®‰å…¨è€ƒè™‘ï¼Œå»ºè®®ä½ ä¿®æ”¹å®ƒã€‚', + 'auth_gateway' => '认è¯ç½‘å…³', + 'auth_gateway_hint' => + '访问认è¯é¡µé¢çš„路由(例如,https://example.com/cp-auth)。默认设置为 cp-authï¼Œå¤„äºŽå®‰å…¨è€ƒè™‘ï¼Œå»ºè®®ä½ ä¿®æ”¹å®ƒã€‚', + 'database_config' => 'æ•°æ®åº“é…ç½®', + 'database_config_hint' => + 'Castopod 需è¦è¿žæŽ¥åˆ°ä½ çš„ MySQL (or MariaDB) æ•°æ®åº“ã€‚å¦‚æžœä½ æ²¡æœ‰è¿™äº›ä¿¡æ¯ï¼Œè¯·è”ç³»ä½ çš„æœåŠ¡å™¨ç®¡ç†å‘˜ã€‚', + 'db_hostname' => 'æ•°æ®åº“主机', + 'db_name' => 'æ•°æ®åº“å', + 'db_username' => 'æ•°æ®åº“用户å', + 'db_password' => 'æ•°æ®åº“密ç ', + 'db_prefix' => 'æ•°æ®åº“å‰ç¼€', + 'db_prefix_hint' => + "Castopod 表åçš„å‰ç¼€ï¼Œå¦‚æžœä½ ä¸çŸ¥é“它的å«ä¹‰ï¼Œè¯·ä¿ç•™é»˜è®¤å€¼ã€‚", + 'cache_config' => '缓å˜é…ç½®', + 'cache_config_hint' => + 'é€‰æ‹©ä½ å–œæ¬¢çš„ç¼“å˜å¤„ç†ç¨‹åºã€‚å¦‚æžœä½ ä¸çŸ¥é“它的å«ä¹‰ï¼Œè¯·ä¿æŒé»˜è®¤å€¼ã€‚', + 'cache_handler' => '缓å˜å¤„ç†ç¨‹åº', + 'cacheHandlerOptions' => [ + 'file' => '文件', + 'redis' => 'Redis', + 'predis' => 'Predis', + ], + 'next' => '下一æ¥', + 'submit' => '完æˆå®‰è£…', + 'create_superadmin' => 'åˆ›å»ºä½ çš„è¶…çº§ç®¡ç†å‘˜å¸æˆ·', + 'email' => '邮箱', + 'username' => '用户å', + 'password' => '密ç ', + ], + 'messages' => [ + 'createSuperAdminSuccess' => + '您的超级管ç†å‘˜å¸æˆ·å·²åˆ›å»ºã€‚登录以开始æ’客ï¼', + 'databaseConnectError' => + 'Castopod æ— æ³•è¿žæŽ¥åˆ°ä½ çš„æ•°æ®åº“ã€‚ç¼–è¾‘ä½ çš„æ•°æ®åº“é…置,然åŽé‡è¯•ã€‚', + 'writeError' => + "æ— æ³•åˆ›å»ºæˆ–å†™å…¥ `.env` æ–‡ä»¶ã€‚ä½ å¿…é¡»æ‰‹åŠ¨æŒ‰ç…§ Castopod ä¸çš„ `.env.example` 文件模æ¿åˆ›å»ºå®ƒã€‚", + ], +]; -- GitLab