castopod/app/Language/fr/Episode.php
Yassine Doghri 2f525c0f6e feat(fediverse): implement activitypub protocols + update user interface
- add "ActivityPub" library to handle server to server federation and basic
  client to server protocols using activitypub:
  - add webfinger endpoint to look for actor
  - add actor definition with inbox / outbox / followers
  - remote follow an actor
  - create notes with possible preview cards
  - interract with favourites, reblogs and replies
  - block incoming actors and/or domains
  - broadcast/schedule activities to fediverse followers using a cron task
- For castopod, the podcast is the actor:
  - overwrite the activitypub library for castopod's specific needs
  - perform basic interactions administrating a podcast to interact with fediverse users:
    - create notes with episode attachment
    - favourite and share a note + reply
    - add specific castopod_namespaces for podcasts and episodes definitions
- overwrite CodeIgniter's Route service to include alternate-content option for
  activitystream requests
- update episode publication logic:
  - remove publication inputs in create / edit episode form
  - publish / schedule or unpublish an episode after creation
  - the podcaster publishes a note when publishing an episode
- Javascript / Typescript modules:
  - fix Dropdown.ts to keep dropdown menu in foreground
  - add Modal.ts for funding links modal
  - add Toggler.ts to toggle various css states in ui
- User Interface:
  - update tailwindcss to v2
  - use castopod's pine and rose colors
  - update public layout to a 3 column layout
  - add pages in public for podcast activity, episode list and notes
  - update episode page to include linked notes
  - remove previous and next episodes from episode pages
  - show different public views depending on whether user is authenticated or not
  - use Kumbh Sans and Montserrat fonts
- update CodeIgniter's config files
- with CodeIgniter's new requirements, update docker environments are now based on
  php v7.3 image
- move Image entity to Libraries
- update composer and npm packages to latest versions

closes #69 #65 #85, fixes #51 #91 #92 #88
2021-04-02 17:20:02 +00:00

162 lines
7.8 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @copyright 2020 Podlibre
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
return [
'season' => 'Saison {seasonNumber}',
'season_abbr' => 'S{seasonNumber}',
'number' => 'Épisode {episodeNumber}',
'number_abbr' => 'Ep. {episodeNumber}',
'season_episode' => 'Saison {seasonNumber} épisode {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}E{episodeNumber}',
'back_to_episodes' => 'Retour aux épisodes de {podcast}',
'activity' => 'Activité',
'description' => 'Description',
'total_favourites' => '{numberOfTotalFavourites, plural,
one {# favori en tout}
other {# favoris en tout}
}',
'total_reblogs' => '{numberOfTotalReblogs, plural,
one {# partage en tout}
other {# partages en tout}
}',
'total_notes' => '{numberOfTotalNotes, plural,
one {# note}
other {# notes}
}',
'all_podcast_episodes' => 'Tous les épisodes du podcast',
'back_to_podcast' => 'Revenir au podcast',
'edit' => 'Modifier',
'publish' => 'Publier',
'publish_edit' => 'Modifier la publication',
'unpublish' => 'Dépublier',
'delete' => 'Supprimer',
'go_to_page' => 'Voir',
'create' => 'Ajouter un épisode',
'publication_status' => [
'published' => 'Publié le {0}',
'scheduled' => 'Planifié pour le {0}',
'not_published' => 'Non publié',
],
'form' => [
'enclosure' => 'Fichier audio',
'enclosure_hint' => 'Sélectionnez un fichier audio .mp3 ou .m4a.',
'info_section_title' => 'Informations épisode',
'info_section_subtitle' => '',
'image' => 'Image de couverture',
'image_hint' =>
'Si vous ne définissez pas dimage, celle du podcast sera utilisée à la place.',
'title' => 'Titre',
'title_hint' =>
'Doit contenir un titre dépisode clair et concis. Ne précisez ici aucun numéro de saison ou dépisode.',
'slug' => 'Identifiant',
'slug_hint' => 'Utilisé pour générer ladresse de lépisode.',
'season_number' => 'Saison',
'episode_number' => 'Épisode',
'type' => [
'label' => 'Type',
'hint' =>
'- <strong>complet</strong>: épisode complet.<br/>- <strong>bande-annonce</strong>: extrait court, promotionnel du podcast.<br/>- <strong>bonus</strong>: contenu supplémentaire pour le podcast (par exemple des informations sur les coulisses ou des interviews avec les acteurs) ou du contenu promotionnel croisé pour un autre podcast.',
'full' => 'Complet',
'trailer' => 'Bande-annonce',
'bonus' => 'Bonus',
],
'parental_advisory' => [
'label' => 'Avertissement parental',
'hint' => 'Lépisode contient-il un contenu explicite?',
'undefined' => 'non défini',
'clean' => 'Convenable',
'explicit' => 'Explicite',
],
'show_notes_section_title' => 'Notes dépisode (Show Notes)',
'show_notes_section_subtitle' =>
'Jusque 4000 caractères, soyez clairs et concis. Les notes dépisode aident les auditeurs potentiels à le trouver.',
'description' => 'Description',
'description_footer' => 'Pied de description',
'description_footer_hint' =>
'Ce texte est ajouté à la fin de chaque description dépisode, cest un bon endroit pour placer vos liens sociaux par exemple.',
'additional_files_section_title' => 'Fichiers additionels',
'additional_files_section_subtitle' =>
'Ces fichiers pourront être utilisées par dautres plate-formes pour procurer une meilleure expérience à vos auditeurs.<br />Consulter le {podcastNamespaceLink} pour plus dinformations.',
'location_section_title' => 'Localisation',
'location_section_subtitle' => 'De quel lieu cet épisode parle-t-il?',
'location_name' => 'Nom ou adresse du lieu',
'location_name_hint' => 'Ce lieu peut être réel ou fictif',
'transcript' => 'Transcription ou sous-titrage',
'transcript_hint' =>
'Les formats autorisés sont txt, html, srt ou json.',
'transcript_delete' => 'Supprimer la transcription',
'chapters' => 'Chapitrage',
'chapters_hint' => 'Le fichier doit être en "JSON Chapters Format".',
'chapters_delete' => 'Supprimer le chapitrage',
'advanced_section_title' => 'Paramètres avancés',
'advanced_section_subtitle' =>
'Si vous avez besoin dune balise que Castopod ne couvre pas, définissez-la ici.',
'custom_rss' => 'Balises RSS personnalisées pour lépisode',
'custom_rss_hint' => 'Ceci sera injecté dans la balise ❬item❭.',
'block' => 'Lépisode doit être masqué de toutes les plateformes',
'block_hint' =>
'La visibilité de lépisode. Si vous souhaitez retirer cet épisode de lindex Apple, activez ce champ.',
'submit_create' => 'Créer lépisode',
'submit_edit' => 'Enregistrer lépisode',
],
'publish_form' => [
'publication_date' => 'Date de publication',
'publication_date_clear' => 'Effacer la date de publication',
'publication_date_hint' =>
'Vous pouvez planifier la sortie de lépisode en saisissant une date de publication future. Ce champ doit être au format YYYY-MM-DD HH:mm',
],
'publish_form' => [
'note' => 'Votre note',
'note_hint' =>
'Le message que vous écrirez sera diffusé à toutes les personnes qui vous suivent dans le fédiverse.',
'publication_date' => 'Date de publication',
'publication_method' => [
'now' => 'Maintenant',
'schedule' => 'Planifier',
],
'scheduled_publication_date' => 'Date de publication programmée',
'scheduled_publication_date_clear' => 'Effacer la date de publication',
'scheduled_publication_date_hint' =>
'Vous pouvez planifier la sortie de lépisode en saisissant une date de publication future. Ce champ doit être au format YYYY-MM-DD HH:mm',
'submit' => 'Publier',
'submit_edit' => 'Modifier la publication',
],
'soundbites' => 'Extraits sonores',
'soundbites_form' => [
'title' => 'Modifier les extraits sonores',
'info_section_title' => 'Extraits sonores de lépisode',
'info_section_subtitle' =>
'Ajouter, modifier ou supprimer des extraits sonores',
'start_time' => 'Début',
'start_time_hint' =>
'La première seconde de lextrait sonore, cela peut être un nombre décimal.',
'duration' => 'Durée',
'duration_hint' =>
'La durée de lextrait sonore (en secondes), cela peut être un nombre décimal.',
'label' => 'Libellé',
'label_hint' => 'Texte qui sera affiché.',
'play' => 'Écouter lextrait sonore',
'delete' => 'Supprimer lextrait sonore',
'bookmark' =>
'Cliquez pour récupérer la position actuelle, cliquez à nouveau pour récupérer la durée.',
'submit_edit' => 'Enregistrer tous les extraits sonores',
],
'embeddable_player' => [
'add' => 'Ajouter un lecteur intégré',
'title' => 'Lecteur intégré',
'label' =>
'Sélectionnez une couleur de thème, copiez le code dans le presse-papier, puis collez-le sur votre site internet.',
'clipboard_iframe' => 'Copier le lecteur dans le presse papier',
'clipboard_url' => 'Copier ladresse dans le presse papier',
'dark' => 'Sombre',
'dark-transparent' => 'Sombre transparent',
'light' => 'Clair',
'light-transparent' => 'Clair transparent',
],
];