Add French translation,improve German translation,add support for video captions,add support for video thumbnails

This commit is contained in:
nipos 2019-03-08 20:00:32 +01:00
parent 068546b84e
commit 61213b5628
16 changed files with 1294 additions and 36 deletions

View File

@ -9,7 +9,7 @@ A webclient for Mastodon and Pleroma which looks like Twitter
Follow our Mastodon account and never miss an important update: [@halcyon@social.csswg.org](https://social.csswg.org/@halcyon)
## Instances
We moved our instances list to a wiki page: https://notabug.org/halcyon-suite/halcyon/wiki/Instances
We moved our instances list to our webpage: https://www.halcyon.social/instances.php
## Translate
[Help us translating Halcyon into many languages](https://translate.zanata.org/project/view/halcyon)
@ -26,6 +26,7 @@ We moved our instances list to a wiki page: https://notabug.org/halcyon-suite/ha
or read our new documentation pages to install it manually: https://www.halcyon.social/documentation.php?page=install
## Blog
- Release of Version 2.2.5 - Add French translation,improve German translation,add support for video captions,add support for video thumbnails
- Release of Version 2.2.4 - Easily switch between pictures in overlay,show pictures in full height in timeline,duplicated threads removed,many smaller bugfixes
- Release of Version 2.2.3 - Fixed login with Pleroma,fixed compatibility with Pawoo (older Mastodon),added support for prefers-color-scheme,some more fixes
- Our new information website [halcyon.social](https://www.halcyon.social) came online

File diff suppressed because one or more lines are too long

View File

@ -7,3 +7,4 @@ pl_PL.UTF-8 UTF-8
gl_ES.UTF-8 UTF-8
it_IT.UTF-8 UTF-8
cs_CZ.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8

Binary file not shown.

View File

@ -1,14 +1,15 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-30 09:53+0000\n"
"POT-Creation-Date: 2019-01-19 16:33+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-10-14 09:41+0000\n"
"Last-Translator: Niklas Poslovski <ni.pos@yandex.com>\n"
"PO-Revision-Date: 2019-03-05 12:45+0000\n"
"Last-Translator: Thiemo Tiziani <thiemo.tiziani@dev-wiki.de>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.6.2\n"
@ -32,11 +33,14 @@ msgstr "Koreanisch"
msgid "Language_pl_PL"
msgstr "Polnisch"
msgid "Language_gl_ES"
msgstr "Galizisch (Spanien)"
msgid "Language_pt_BR"
msgstr "Portugiesisch (Brasilien)"
msgid "Language_gl_ES"
msgstr "Galizisch (Spanien)"
msgid "Language_it_IT"
msgstr "Italienisch"
msgid "Sensitive content"
msgstr "Sensitiver Inhalt"
@ -258,7 +262,7 @@ msgid "Blank for default"
msgstr "Leer lassen für Standardeinstellung"
msgid "FOLLOWING"
msgstr "FOLGE"
msgstr "FOLGE ICH"
msgid "Interesting accounts of devs"
msgstr "Interessante Accounts von Entwickler_innen"
@ -594,7 +598,7 @@ msgid "Remove"
msgstr "Entfernen"
msgid "Add to list"
msgstr "Liste hinzufügen"
msgstr "Zur Liste hinzufügen"
msgid "Are you sure that you want to mute this user?"
msgstr "Bist du sicher, dass du den Nutzer stummschalten möchtest?"
@ -651,3 +655,201 @@ msgstr "Frage"
msgid "Ok"
msgstr "Ok"
msgid "Autocomplete enabled"
msgstr "Autovervollständigung aktiviert"
msgid "Autocomplete disabled"
msgstr "Autovervollständigung deaktiviert"
msgid "Changed custom profile field"
msgstr "Profil-Metadaten aktualisiert"
msgid "Notifications when tab is closed enabled"
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab aktiviert"
msgid "Notifications when tab is closed disabled"
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab deaktiviert"
msgid "Toots of bots shown"
msgstr "Toots von Bots gezeigt"
msgid "Toots of bots hidden"
msgstr "Toots von Bots verborgen"
msgid "Filter created"
msgstr "Filter erstellt"
msgid "Gif animations enabled"
msgstr "Gif Animationen aktiviert"
msgid "Gif animations disabled"
msgstr "Gif Animationen deaktiviert"
msgid "Video player enabled"
msgstr "Videoplayer aktiviert"
msgid "Video player disabled"
msgstr "Videoplayer deaktiviert"
msgid "Audio player enabled"
msgstr "Audioplayer aktiviert"
msgid "Audio player disabled"
msgstr "Audioplayer deaktiviert"
msgid "PeerTube embeds enabled"
msgstr "PeerTube Einbettungen aktiviert"
msgid "PeerTube embeds disabled"
msgstr "PeerTube Einbettungen deaktiviert"
msgid "YouPlay embeds enabled"
msgstr "YouPlay Einbettungen aktiviert"
msgid "YouPlay embeds disabled"
msgstr "YouPlay Einbettungen deaktiviert"
msgid "Invidio.us embeds enabled"
msgstr "Invidio.us Einbettungen aktiviert"
msgid "Invidio.us embeds disabled"
msgstr "Invidio.us Einbettungen deaktiviert"
msgid "Vimeo embeds enabled"
msgstr "Vimeo Einbettungen aktiviert"
msgid "Vimeo embeds disabled"
msgstr "Vimeo Einbettungen deaktiviert"
msgid "Thread"
msgstr "Thema"
msgid "Never"
msgstr "Niemals"
msgid "Don't change"
msgstr "Nichts ändern"
msgid "Filter updated"
msgstr "Filter aktualisiert"
msgid "Are you sure that you want to delete this filter?"
msgstr "Bist du sicher, dass du diesen Filter löschen willst?"
msgid "Your filter has been deleted"
msgstr "Dein Filter wurde gelöscht"
msgid "Toot to"
msgstr "Toot an"
msgid "Administrated by"
msgstr "Administriert von"
msgid "Users"
msgstr "Mitglieder"
msgid "Connections"
msgstr "Verbindungen"
msgid "Notifications when tab closed"
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab"
msgid "Filter settings"
msgstr "Filter Einstellungen"
msgid "Show toots of bots"
msgstr "Zeige Toots von Bots"
msgid "Add new filter"
msgstr "Filter hinzufügen"
msgid "Create a filter"
msgstr "Erstelle neuen Filter"
msgid "Word or phrase to filter"
msgstr "Wort oder Satz zum Filter"
msgid "Filter in the following timelines"
msgstr "Filtern von folgenden Zeitleisten"
msgid "Expires in"
msgstr "Läuft aus in"
msgid "Autocomplete in compose field"
msgstr "Autovervollständigung im Textfeld"
msgid "Media settings"
msgstr "Medieneinstellungen"
msgid "Play animated GIFs"
msgstr "Animierte GIF's abspielen"
msgid "Enable video player"
msgstr "Aktiviere Videoplayer"
msgid "Enable audio player"
msgstr "Aktiviere Audioplayer"
msgid "Embed PeerTube videos"
msgstr "Einbetten von PeerTube Videos"
msgid "Embed YouTube using YouPlay"
msgstr "Einbetten von Youtube Videos via YouPlay"
msgid "Embed YouTube using Invidio.us"
msgstr "Einbetten von YouTube Videos via Invidio.us"
msgid "Embed Vimeo using YouPlay"
msgstr "Einbetten von Vimeo Videos via YouPlay"
msgid "Custom profile fields"
msgstr "Profil Metadaten"
msgid "Name"
msgstr "Name"
msgid "Value"
msgstr "Wert"
msgid ""
"To verify that the links in your custom fields really belong to you, you can "
"add the link below to your website. The link text can be changed to whatever "
"you want."
msgstr ""
"Um zu überprüfen, ob die Links in deinem Profil Metadaten wirklich dir "
"gehören, kannst du den Link unten zu deiner Webseite hinzufügen. Den Link "
"Text kannst du beliebig verändern."
msgid "Message"
msgstr "Nachricht"
msgid "Filter"
msgstr "Filter"
msgid "minutes"
msgstr "Minuten"
msgid "hour"
msgstr "Stunde"
msgid "hours"
msgstr "Stunden"
msgid "day"
msgstr "Tag"
msgid "week"
msgstr "Woche"
msgid "Filter posts irreversible"
msgstr "Beiträge unumkehrbar Filtern"
msgid "Whole word"
msgstr "Ganze Wörter"
msgid "FILTERS"
msgstr "FILTER"
msgid "MEDIA"
msgstr "MEDIEN"

Binary file not shown.

View File

@ -0,0 +1,853 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-19 16:33+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-03-07 02:05+0000\n"
"Last-Translator: Shika <shikayachan@laposte.net>\n"
"Language-Team: French\n"
"Language: fr\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
msgid "Language"
msgstr "Langue"
msgid "Language_en_US"
msgstr "English (US)"
msgid "Language_de_DE"
msgstr "German"
msgid "Language_ja_JP"
msgstr "Japanese"
msgid "Language_ko_KR"
msgstr "Korean"
msgid "Language_pl_PL"
msgstr "Polish"
msgid "Language_gl_ES"
msgstr "Galician"
msgid "Language_pt_BR"
msgstr "Portuguese (Brazil)"
msgid "Language_it_IT"
msgstr "Italian"
msgid "Sensitive content"
msgstr "Contenu sensible"
msgid "Click to view"
msgstr "Cliquer pour voir"
msgid "SHOW MORE"
msgstr "Déplier"
msgid "SHOW LESS"
msgstr "Replier"
msgid "Public"
msgstr "Public"
msgid "Unlisted"
msgstr "Non Listé"
msgid "Followers-only"
msgstr "Abonné·e·s uniquement"
msgid "Direct"
msgstr "Direct"
msgid "Delete Toot"
msgstr "Supprimer le Toot"
msgid "Unpin Toot"
msgstr "Détacher le Toot"
msgid "Pin Toot"
msgstr "Épingler le Toot"
msgid "Mute"
msgstr "Masquer"
msgid "Block"
msgstr "Bloquer"
msgid "Report this Toot"
msgstr "Signaler ce Toot"
msgid "Copy link to Toot"
msgstr "Copier le lien vers le Toot"
msgid "View original"
msgstr "Voir l'original"
msgid "Boosted"
msgstr "Boosté"
msgid "Pinned Toot"
msgstr "Toot épinglé"
msgid "favourited Your Toot"
msgstr "a ajouté votre toot à ses favoris"
msgid "boosted Your Toot"
msgstr "a boosté votre toot"
msgid "followed you"
msgstr "vous suit"
msgid "Follow"
msgstr "Suivre"
msgid "Toot your reply"
msgstr "Répondre"
msgid "Reply"
msgstr "Répondre"
msgid "Content warning"
msgstr "Avertissement"
msgid "Jan"
msgstr "Jan"
msgid "Feb"
msgstr "Fev"
msgid "Mar"
msgstr "Mar"
msgid "Apr"
msgstr "Avr"
msgid "May"
msgstr "Mai"
msgid "Jun"
msgstr "Jun"
msgid "Jul"
msgstr "Jul"
msgid "Aug"
msgstr "Aou"
msgid "Sep"
msgstr "Sep"
msgid "Oct"
msgstr "Oct"
msgid "Nov"
msgstr "Nov"
msgid "Dec"
msgstr "Dec"
msgid "Changed setting to"
msgstr "A changé les paramètres pour"
msgid "Mark as NSFW by default enabled"
msgstr "Marquer comme NSFW par défaut activé"
msgid "Mark as NSFW by default disabled"
msgstr "Marquer comme NSFW par défaut desactivé"
msgid "Who to follow enabled"
msgstr "Qui Suivre activé"
msgid "Who to follow disabled"
msgstr "Qui Suivre desactivé"
msgid "Changed about me setting"
msgstr "a changé le paramètre A Propos de moi"
msgid "Uploaded new avatar"
msgstr "a mis à jour son avatar"
msgid "Uploaded new header"
msgstr "a mis à jour son En-tête"
msgid "Account locked"
msgstr "Compte verrouillé"
msgid "Account unlocked"
msgstr "Compte déverrouillé"
msgid "Link previews enabled"
msgstr "Aperçu des liens activé"
msgid "Link previews disabled"
msgstr "Aperçu des liens desactivé"
msgid "You didn't allow notifications"
msgstr "Vous n'autorisez pas les notifications"
msgid "Desktop notifications enabled"
msgstr "Notification du bureau activé"
msgid "Desktop notifications disabled"
msgstr "Notification du bureau desactivé"
msgid "Replies shown"
msgstr "Réponses affichées"
msgid "Replies hidden"
msgstr "Réponses cachées"
msgid "CW content shown"
msgstr "Avertissements affichés"
msgid "CW content hidden"
msgstr "Avertissements cachés"
msgid "NSFW content shown"
msgstr "Contenu NSFW affichés"
msgid "NSFW content hidden"
msgstr "Contenu NSFW caché"
msgid "Reply to"
msgstr "Répondre"
msgid "Report"
msgstr "Signaler"
msgid "Report a Toot of"
msgstr "Signaler ce Toot"
msgid "What's happening?"
msgstr "Quoi de neuf ?"
msgid "Toot"
msgstr "Toot"
msgid "Compose new Toot"
msgstr "Composer un nouveau Toot"
msgid "Please describe what the problem with the Toot is."
msgstr "Veuillez décrire le problème avec le Toot"
msgid "TOOTS"
msgstr "TOOTS"
msgid "PEOPLE"
msgstr "PERSONNES"
msgid "Settings"
msgstr "Paramètres"
msgid "GENERAL"
msgstr "GÉNÉRAL "
msgid "PROFILE"
msgstr "PROFIL"
msgid "APPEARANCE"
msgstr "APPARENCE"
msgid "Change instance"
msgstr "Changer d'instance"
msgid "Blank for default"
msgstr "Blanc par défaut"
msgid "FOLLOWING"
msgstr "SUIVIT"
msgid "Interesting accounts of devs"
msgstr "Comptes de devs intéressants"
msgid "Halcyon for"
msgstr "Halcyon pour"
msgid "About"
msgstr "À propos"
msgid "Terms"
msgstr "Conditions générales d'utilisation"
msgid "Apps"
msgstr "Applications"
msgid "Source code"
msgstr "Code source"
msgid "Other instances"
msgstr "Autres instances"
msgid "Privacy policy"
msgstr "Politique de confidentialité"
msgid "Version"
msgstr "Version"
msgid "Who to follow"
msgstr "Qui Suivre"
msgid "Enable who to follow"
msgstr "Activer Qui Suivre"
msgid ""
"Halcyon needs to connect to an external server to get a list of users which "
"have similar interests as you. If you want to use this feature, please opt-"
"in."
msgstr ""
"Halcyon a besoin de se connecter à un serveur extérieur pour avoir une liste "
"d'utilisateur·ice·s qui ont des intérêts commun avec vous. Si vous voulez "
"utiliser cette fonction, engagez vous."
msgid "MORE"
msgstr "PLUS"
msgid "FOLLOWERS"
msgstr "ABONNÉ·E·S"
msgid "Following"
msgstr "Suivit"
msgid "You'll no longer receive notifications from this user"
msgstr "Vous ne recevrez plus de notifications de cet·te utilisateur·ice."
msgid "Unmuted this user"
msgstr "Démasquer cet·te utilisateur·ice"
msgid "This user has been blocked"
msgstr "Cet·te utilisateur·ice a été bloqué"
msgid "Unblocked this user"
msgstr "Débloquer cet·te utilisateur·ice"
msgid "Your Toot has been deleted"
msgstr "Votre Toot a été supprimé"
msgid "Your Toot has been pinned"
msgstr "Votre Toot a été épinglé"
msgid "Your Toot has been unpinned"
msgstr "Votre Toot a été détaché"
msgid "Edit profile"
msgstr "Editer le profil"
msgid "FAVOURITES"
msgstr "FAVORIS"
msgid "Show"
msgstr "Afficher"
msgid "Blocking"
msgstr "Blocage"
msgid "Muting"
msgstr "Masquage"
msgid "Requested"
msgstr "Demandé"
msgid "Photos and toots"
msgstr "Photos et toots"
msgid "favourited your toot"
msgstr "a ajouté votre toot à ses favoris"
msgid "boosted your toot"
msgstr "a boosté votre toot"
msgid "mentioned you"
msgstr "vous a mentionné"
msgid "Your Toot was posted!"
msgstr "Votre Toot a été posté"
msgid "News"
msgstr "Nouvelles"
msgid "Source"
msgstr "Source"
msgid "Privacy"
msgstr "Confidentialité"
msgid "Imprint"
msgstr "Impression"
msgid "Contact"
msgstr "Contact"
msgid "Login"
msgstr "Se connecter"
msgid "Login to Halcyon"
msgstr "Se connecter à Halcyon "
msgid "create an account"
msgstr "créer un compte"
msgid "or"
msgstr "ou"
msgid "I agree with the"
msgstr "Je suis d'accord avec le"
msgid "What is Halcyon"
msgstr "Qu'est-ce que Halcyon "
msgid ""
"which aims to recreate the simple and beautiful user interface of Twitter "
"while keeping all advantages of decentral networks in focus."
msgstr ""
"qui a pour but de recréer l'interface utilisateur simple et magnifique de "
"Twitter, tout en gardant les avantages des réseaux décentralisés."
msgid "Halcyon is a webclient for"
msgstr "Halcyon est un client web pour"
msgid "Contact / Feedback"
msgstr "Contact / Réactions"
msgid "Use my contact form"
msgstr "Utiliser mon Formulaire de contact"
msgid "Help us"
msgstr "Nous aider"
msgid "Halcyon Terms of Use"
msgstr "Conditions d'utilisation de Halcyon "
msgid ""
"This terms of use agreement is for the users of web service Halcyon for "
"Mastodon and Pleroma (Halcyon for short) hosted at"
msgstr ""
"Ces Conditions générales d'utilisation sont pour les utilisateur·ice·s de "
"Halcyon pour Mastodon et Pleroma (Halcyon pour faire court) hébergé à"
msgid "Your Reply was posted!"
msgstr "Votre Réponse a été posté"
msgid "Toot reported successfully!"
msgstr "Votre Toot a été signalé avec succès !"
msgid "Link successfully copied!"
msgstr "Le lien a été copiée avec succès !"
msgid "Home"
msgstr "Accueil"
msgid "Local"
msgstr "Local"
msgid "Federated"
msgstr "Fédéré"
msgid "Notifications"
msgstr "Notifications"
msgid "Search Mastodon"
msgstr "Chercher dans Mastodon"
msgid "View profile"
msgstr "Consulter le profil"
msgid "Log out"
msgstr "Déconnexion"
msgid "All"
msgstr "Tout"
msgid "new notitification"
msgstr "nouvelle notification"
msgid "Show all NSFW content"
msgstr "Afficher tout le contenu NSFW"
msgid "Show all CW content"
msgstr "Afficher tous les Avertissements"
msgid "Show replies"
msgstr "Afficher les réponses"
msgid "Desktop notifications"
msgstr "Notification du bureau"
msgid "Enable link previews"
msgstr "Activer l'aperçu des liens"
msgid "Auto update"
msgstr "Mise à jour automatique"
msgid "Manual update"
msgstr "Mise à jour manuelle"
msgid "Appearance settings"
msgstr "Paramètres d'apparences"
msgid "New posts streaming"
msgstr "New posts streaming"
msgid "replies"
msgstr "Réponses"
msgid "General settings"
msgstr "Paramètres généraux"
msgid "Default post privacy"
msgstr "Confidentialité des posts par défaut"
msgid "Mark as NSFW by default"
msgstr "Marquer comme NSFW par défaut"
msgid "Media"
msgstr "Média"
msgid "FOLLOWS YOU"
msgstr "Vous suit"
msgid "Local instance"
msgstr "Instance Locale"
msgid "Hashtag search filter"
msgstr "Filtre de recherche pour Hashtag"
msgid "All instances"
msgstr "Toutes les instances"
msgid "Local only"
msgstr "Local Seulement"
msgid "Lock account"
msgstr "Verouiller le compte"
msgid "Header"
msgstr "En-tête"
msgid "Avatar"
msgstr "Avatar"
msgid "About me"
msgstr "À propos"
msgid "Display name"
msgstr "Nom Affiché"
msgid "Profile settings"
msgstr "Paramètres du profil "
msgid "Toots"
msgstr "Toots"
msgid "Favourites"
msgstr "Favoris"
msgid "New favourite"
msgstr "Nouveau Favori"
msgid "New boost"
msgstr "Nouveau boost"
msgid "New follower"
msgstr "Nouvel abonné·e·s"
msgid "New mention"
msgstr "Nouvelle mention"
msgid "Dark theme enabled"
msgstr "Thème sombre activé"
msgid "Dark theme disabled"
msgstr "Thème sombre desactivé"
msgid "Only on top"
msgstr "Seulement au dessus"
msgid "Enable dark theme"
msgstr "Activer le thème sombre"
msgid "Please enter the new name for this list."
msgstr "Entrez le nouveau nom de cette liste"
msgid "The name of your list can't be empty!"
msgstr "Le nom de cette liste ne peut pas être vide !"
msgid "Your list has been renamed"
msgstr "Votre liste a été renommée"
msgid "Are you sure that you want to delete this list?"
msgstr "Êtes-vous sur·e que vous voulez supprimer cette liste ?"
msgid "Your list has been deleted"
msgstr "Votre liste a été supprimée"
msgid "Please enter the name of your new list."
msgstr "Entrez le nom de votre nouvelle liste"
msgid "Add"
msgstr "Ajouter"
msgid "Remove"
msgstr "Supprimer"
msgid "Add to list"
msgstr "Ajouter à la liste"
msgid "Are you sure that you want to mute this user?"
msgstr "Êtes-vous certain de vouloir masquer cet·te utilisateur·ice ?"
msgid "Are you sure that you want to block this user?"
msgstr "Êtes-vous certain de vouloir bloquer cet·te utilisateur·ice ?"
msgid "Are you sure that you want to delete this toot?"
msgstr "Êtes-vous certain de vouloir supprimer ce toot ?"
msgid "Added this account to the list"
msgstr "Ce compte a été ajouté à votre liste"
msgid ""
"You need to follow this user to add him/her to the list. Do you want to do "
"that now?"
msgstr ""
"Vous devez suivre cet·te utilisateur·ice pour l'ajouter à la liste. Voulez "
"vous le faire maintenant ?"
msgid "You successfully followed this user."
msgstr "Vous suivez cet·te utilisateur·ice"
msgid "Removed this account from the list"
msgstr "Ce compte a été supprimé de votre liste"
msgid "Joined at"
msgstr "Rejoins"
msgid "Direct messages"
msgstr "Messages Directs"
msgid "Lists"
msgstr "Listes"
msgid "Open public profile"
msgstr "Ouvrir le Profil Utilisateur"
msgid "My Lists"
msgstr "Mes listes"
msgid "Confirmation"
msgstr "Confirmation"
msgid "Yes"
msgstr "Oui"
msgid "Cancel"
msgstr "Annuler"
msgid "Prompt"
msgstr "Demander"
msgid "Ok"
msgstr "Ok"
msgid "Autocomplete enabled"
msgstr "Complétion automatique activé"
msgid "Autocomplete disabled"
msgstr "Complétion automatique désactivé"
msgid "Changed custom profile field"
msgstr "Changer le champ personnalisé"
msgid "Notifications when tab is closed enabled"
msgstr "Notification quand l'onglet est fermé activé"
msgid "Notifications when tab is closed disabled"
msgstr "Notification quand l'onglet est fermé désactivé"
msgid "Toots of bots shown"
msgstr "Toots des bots affichés"
msgid "Toots of bots hidden"
msgstr "Toots des bots cachés"
msgid "Filter created"
msgstr "Filtre créé"
msgid "Gif animations enabled"
msgstr "Animations GIF activées"
msgid "Gif animations disabled"
msgstr "Animations GIF desactivées"
msgid "Video player enabled"
msgstr "Lanceur de vidéos activé"
msgid "Video player disabled"
msgstr "Lanceur de vidéos desactivé"
msgid "Audio player enabled"
msgstr "Lanceur de sons activé"
msgid "Audio player disabled"
msgstr "Lanceur de sons desactivé"
msgid "PeerTube embeds enabled"
msgstr "Ancrage Peertube activé"
msgid "PeerTube embeds disabled"
msgstr "Ancrage Peertube desactivé"
msgid "YouPlay embeds enabled"
msgstr "Ancrage YouPlay activé"
msgid "YouPlay embeds disabled"
msgstr "Ancrage YouPlay desactivé"
msgid "Invidio.us embeds enabled"
msgstr "Ancrage Invidio.us activé"
msgid "Invidio.us embeds disabled"
msgstr "Ancrage Invidio.us desactivé"
msgid "Vimeo embeds enabled"
msgstr "Ancrage Vimeo activé"
msgid "Vimeo embeds disabled"
msgstr "Ancrage Vimeo desactivé"
msgid "Thread"
msgstr "Discussion"
msgid "Never"
msgstr "Jamais"
msgid "Don't change"
msgstr "Ne pas modifier"
msgid "Filter updated"
msgstr "Filtre mis à jour"
msgid "Are you sure that you want to delete this filter?"
msgstr "Êtes-vous certain de vouloir supprimer ce filtre ?"
msgid "Your filter has been deleted"
msgstr "Votre filtre a été supprimée"
msgid "Toot to"
msgstr "Tooter à"
msgid "Administrated by"
msgstr "Administré par"
msgid "Users"
msgstr "Utilisateur·ice"
msgid "Connections"
msgstr "Connections"
msgid "Notifications when tab closed"
msgstr "Notifications quand l'onglet est fermé"
msgid "Filter settings"
msgstr "Paramètres de Filtres"
msgid "Show toots of bots"
msgstr "Afficher les Toots des bots"
msgid "Add new filter"
msgstr "Créer un nouveau filtre"
msgid "Create a filter"
msgstr "Créer un filtre"
msgid "Word or phrase to filter"
msgstr "Mot ou phrase à filtrer"
msgid "Filter in the following timelines"
msgstr "Filtrer dans les fils suivis"
msgid "Expires in"
msgstr "Expire dans"
msgid "Autocomplete in compose field"
msgstr "Complétion automatique dans le champ"
msgid "Media settings"
msgstr "Paramètre des Médias"
msgid "Play animated GIFs"
msgstr "Jouer les Animations GIFs"
msgid "Enable video player"
msgstr "Activer le Lanceur de Vidéo"
msgid "Enable audio player"
msgstr "Activer le Lanceur de Son"
msgid "Embed PeerTube videos"
msgstr "Ancrer les vidéos PeerTube"
msgid "Embed YouTube using YouPlay"
msgstr "Ancrer YouTube utilisant YouPlay"
msgid "Embed YouTube using Invidio.us"
msgstr "Ancrer YouTube utilisant Invidio.us"
msgid "Embed Vimeo using YouPlay"
msgstr "Ancrer Vimeo utilisant YouPlay"
msgid "Custom profile fields"
msgstr "Personnaliser les champs du profil"
msgid "Name"
msgstr "Nom"
msgid "Value"
msgstr "Valeur"
msgid ""
"To verify that the links in your custom fields really belong to you, you can "
"add the link below to your website. The link text can be changed to whatever "
"you want."
msgstr ""
"Pour vérifier que le lien dans vos champs personnalisé vous appartient "
"vraiment, vous pouvez ajouter ce lien à votre website. Le lien peut être "
"changé quand vous voulez."
msgid "Message"
msgstr "Message"
msgid "Filter"
msgstr "Filtre"
msgid "minutes"
msgstr "minutes"
msgid "hour"
msgstr "heure"
msgid "hours"
msgstr "heures"
msgid "day"
msgstr "jour"
msgid "week"
msgstr "semaine"
msgid "Filter posts irreversible"
msgstr "Filtre des posts irréversibles"
msgid "Whole word"
msgstr "Mot entier"
msgid "FILTERS"
msgstr "FILTRES"
msgid "MEDIA"
msgstr "MÉDIA"

24
media/image.php Normal file
View File

@ -0,0 +1,24 @@
<?php
function curlGet($url) {
if(in_array('curl', get_loaded_extensions())){
$appSettings = parse_ini_file('../config/config.ini',true);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
if($appSettings["Proxy"]["type"]) {
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
return FALSE;
}
header("Content-type: image/jpeg");
echo curlGet($_GET["url"]);
?>

View File

@ -19,7 +19,12 @@ $vdata = vimeo(htmlspecialchars($_GET["id"]));
if($vdata) {
$vlink = $vdata["dl"];
?>
<video class="video-js vjs-default-skin" controls id="player" poster="<?=$vdata["info"]["Thumbnail"]?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
<video class="video-js vjs-default-skin" controls id="player" poster="image.php?url=<?=urlencode($vdata["info"]["Thumbnail"])?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
<?php
for($i=0;$i<count($vdata["info"]["Captions"]);$i++) {
echo "<track kind='captions' label='".$vdata["info"]["Captions"][$i]["title"]."' src='vimeocaption.php?url=".urlencode($vdata["info"]["Captions"][$i]["url"])."'>";
}
?>
Your browser does not support the video tag.
</video>
<script>
@ -29,10 +34,10 @@ for($i=0;$i<count($vlink);$i++) {
echo "{src:'".$vlink[$i]["url"]."',label:'".$vlink[$i]["type"]."',audio:true},";
}
?>
]});
],thumbnails:JSON.parse('<?=json_encode($vdata["info"]["Thumbs"])?>')});
</script>
<?php } else { ?>
Sorry, there was an error while trying to load your video.
<?php } ?>
</body>
</html>
</html>

23
media/vimeocaption.php Normal file
View File

@ -0,0 +1,23 @@
<?php
function curlGet($url) {
if(in_array('curl', get_loaded_extensions())){
$appSettings = parse_ini_file('../config/config.ini',true);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
if($appSettings["Proxy"]["type"]) {
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
return FALSE;
}
echo str_replace("<i>","",str_replace("</i>","",curlGet("http://vimeo.com".$_GET["url"])));
?>

View File

@ -1,4 +1,6 @@
<?php
ini_set("display_errors","1");
error_reporting(E_ALL);
function curl_load($url) {
if(in_array('curl', get_loaded_extensions())){
$appSettings = parse_ini_file('../config/config.ini',true);
@ -25,10 +27,29 @@ $start = substr($data, strlen('config_url":"'));
$stop = stripos($start, ',');
$str = substr($start, 0, $stop);
$data = json_decode(curl_load(rtrim(str_replace("\\", "", $str), '"')));
$captions = array();
if(isset($data->request->text_tracks)) {
for($i=0;$i<count($data->request->text_tracks);$i++) {
$caption = array();
$caption["title"] = $data->request->text_tracks[$i]->label;
$caption["lang"] = $data->request->text_tracks[$i]->lang;
$caption["url"] = $data->request->text_tracks[$i]->url;
array_push($captions,$caption);
}
}
$info = array();
$info["info"] = array();
$info["info"]["Title"] = $data->video->title;
$info["info"]["Thumbnail"] = $data->video->thumbs->base;
$info["info"]["Captions"] = $captions;
$info["info"]["Thumbs"] = array();
$info["info"]["Thumbs"]["src"] = "image.php?url=".urlencode($data->request->thumb_preview->url);
$info["info"]["Thumbs"]["width"] = $data->request->thumb_preview->width;
$info["info"]["Thumbs"]["height"] = $data->request->thumb_preview->height;
$info["info"]["Thumbs"]["fwidth"] = $data->request->thumb_preview->frame_width;
$info["info"]["Thumbs"]["fheight"] = $data->request->thumb_preview->frame_height;
$info["info"]["Thumbs"]["fcount"] = $data->request->thumb_preview->frames;
$info["info"]["Thumbs"]["row"] = $data->request->thumb_preview->columns;
$info["dl"] = array();
for($i=0;$i<count($data->request->files->progressive);$i++) {
$xinfo = array();
@ -42,4 +63,4 @@ else {
return false;
}
}
?>
?>

View File

@ -20,7 +20,12 @@ $vdata = $ytclass->getDownloadLinks(htmlspecialchars($_GET["id"]));
if($vdata) {
$vlink = $vdata["dl"];
?>
<video class="video-js vjs-default-skin" controls id="player" poster="<?=$vdata["info"]["Thumbnail"]?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
<video class="video-js vjs-default-skin" controls id="player" poster="image.php?url=<?=urlencode($vdata["info"]["Thumbnail"])?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
<?php
for($i=0;$i<count($vdata["info"]["Captions"]);$i++) {
echo "<track kind='captions' label='".$vdata["info"]["Captions"][$i]["title"]."' src='ytcaption.php?lang=".$vdata["info"]["Captions"][$i]["lang"]."&url=".urlencode($vdata["info"]["Captions"][$i]["url"])."'>";
}
?>
Your browser does not support the video tag.
</video>
<script>
@ -41,10 +46,10 @@ for($i=0;$i<count($vlink);$i++) {
if(strstr($vlink[$i]["type"],"(Audio Only)")) echo "'".$vlink[$i]["url"]."',";
}
?>
]});
],thumbnails:JSON.parse('<?=json_encode($vdata["info"]["Thumbs"])?>')});
</script>
<?php } else { ?>
Sorry, there was an error while trying to load your video.
<?php } ?>
</body>
</html>
</html>

43
media/ytcaption.php Normal file
View File

@ -0,0 +1,43 @@
<?php
function curlGet($url) {
if(in_array('curl', get_loaded_extensions())){
$appSettings = parse_ini_file('../config/config.ini',true);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
if($appSettings["Proxy"]["type"]) {
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
return FALSE;
}
function timevtt($gtime) {
if(strlen(date("H",intval($gtime))-1) == 1) $hour = "0".intval(date("H",intval($gtime))-1);
else $hour = intval(date("H",intval($gtime))-1);
if(strlen(explode(".",$gtime)[1]) == 3) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1];
if(strlen(explode(".",$gtime)[1]) == 2) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."0";
if(strlen(explode(".",$gtime)[1]) == 1) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."00";
if(strlen(explode(".",$gtime)[1]) == 0) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."000";
}
$caption = new SimpleXMLElement(curlGet($_GET["url"]));
echo "WEBVTT\n";
echo "Kind: captions\n";
echo "Language: ".$_GET["lang"]."\n\n";
for($i=0;$i<count($caption->text);$i++) {
if($i == count($caption->text)-1) {
if(strlen(explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]) == 3) $endtime = array(explode(".",$caption->text[$i]["start"])[0]+explode(".",$caption->text[$i]["dur"])[0],explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]);
else $endtime = array(explode(".",$caption->text[$i]["start"])[0]+explode(".",$caption->text[$i]["dur"])[0]+1,explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]);
echo timevtt($caption->text[$i]["start"])." --> ".timevtt(implode(".",$endtime))."\n";
}
else echo timevtt($caption->text[$i]["start"])." --> ".timevtt($caption->text[$i+1]["start"])."\n";
echo preg_replace('/<font color="#[a-fA-F0-9]{6}">/',"",str_replace("</font>","",$caption->text[$i]))."\n\n";
}
?>

View File

@ -4,11 +4,22 @@ private $cache_dir;
private $cookie_dir;
private $itag_info = array(
// Full Video
5 => "FLV[400x240]",
6 => "FLV[450x270]",
17 => "3GP[176x144]",
18 => "MP4[640x360]",
22 => "HD MP4[1280x720]",
34 => "FLV[640x360]",
35 => "FLV[854x480]",
36 => "3GP[320x180]",
37 => "MP4[1920x1080]",
38 => "MP4[4096x3072]",
43 => "WEBM[640x360]",
17 => "3GP[176x144]",
44 => "WEBM[854x480]",
45 => "WEBM[1280x720]",
46 => "WEBM[1920x1080]",
59 => "MP4[854x480]",
78 => "MP4[854x480]",
// DASH videos
137 => "(Video Only) MP4[1920x1080]",
248 => "(Video Only) WEBM[1920x1080]",
@ -28,14 +39,25 @@ private $itag_info = array(
249 => "(Audio Only) WEBM[50Kbps]",
250 => "(Audio Only) WEBM[70Kbps]",
251 => "(Audio Only) WEBM[160Kbps]"
);
);
private $itag_ext = array(
// Full Video
5 => ".flv",
6 => ".flv",
17 => ".3gp",
18 => ".mp4",
22 => ".mp4",
34 => ".flv",
35 => ".flv",
36 => ".3gp",
37 => ".mp4",
38 => ".mp4",
43 => ".webm",
17 => ".3gp",
44 => ".webm",
45 => ".webm",
46 => ".webm",
59 => ".mp4",
78 => ".mp4",
// DASH videos
137 => ".mp4",
248 => ".webm",
@ -90,12 +112,34 @@ break;
}
}
if(isset($videoData['status']) && $videoData['status'] !== 'fail') {
$playerData = json_decode($videoData["player_response"]);
$captions = array();
for($i=0;$i<count($playerData->captions->playerCaptionsTracklistRenderer->captionTracks);$i++) {
$caption = array();
$caption["title"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->name->simpleText;
$caption["lang"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->languageCode;
$caption["url"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->baseUrl;
array_push($captions,$caption);
}
$thumbinfo = $playerData->storyboards->playerStoryboardSpecRenderer->spec;
$thumbparts = explode("|",$thumbinfo);
$thumbnum = count($thumbparts)-1;
$thumbdata = explode("#",$thumbparts[$thumbnum]);
$vInfo['Title'] = $videoData['title'];
$vInfo['ChannelName'] = $videoData['author'];
$vInfo['ChannelId'] = $videoData['ucid'];
$vInfo['Thumbnail'] = str_replace('default', 'maxresdefault', $videoData['thumbnail_url']);
$vInfo['Duration'] = $videoData['length_seconds'];
//$vInfo['Rating'] = $videoData['avg_rating'];
$vInfo['Rating'] = $playerData->videoDetails->averageRating;
$vInfo['Captions'] = $captions;
$vInfo['Thumbs'] = array();
$vInfo['Thumbs']["src"] = "ytthumbs.php?data=".urlencode($thumbinfo);
$vInfo['Thumbs']["width"] = $thumbdata[0]*$thumbdata[3];
$vInfo['Thumbs']["height"] = $thumbdata[1]*ceil($thumbdata[2]/$thumbdata[3]);
$vInfo['Thumbs']["fwidth"] = $thumbdata[0];
$vInfo['Thumbs']["fheight"] = $thumbdata[1];
$vInfo['Thumbs']["fcount"] = $thumbdata[2];
$vInfo['Thumbs']["row"] = $thumbdata[3];
}
if (isset($videoData['url_encoded_fmt_stream_map']) && isset($videoData['adaptive_fmts'])) {
$draft1 = explode(',',$videoData['url_encoded_fmt_stream_map']);

36
media/ytthumbs.php Normal file
View File

@ -0,0 +1,36 @@
<?php
function curlGet($url) {
if(in_array('curl', get_loaded_extensions())){
$appSettings = parse_ini_file('../config/config.ini',true);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
if($appSettings["Proxy"]["type"]) {
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
return FALSE;
}
header("Content-type: image/jpeg");
$thumbparts = explode("|",$_GET["data"]);
$i = count($thumbparts)-1;
$thumbdata = explode("#",$thumbparts[$i]);
$base_url = $thumbparts[0];
$thumbs = imagecreatetruecolor($thumbdata[0]*$thumbdata[3],$thumbdata[1]*ceil($thumbdata[2]/$thumbdata[3]));
for($j=0;$j<ceil($thumbdata[2]/($thumbdata[3]*$thumbdata[4]));$j++) {
$link = str_replace('$L',$i-1,$base_url)."&";
$link = str_replace('$N',$thumbdata[6],$link);
$link = str_replace('$M',$j,$link)."sigh=".$thumbdata[7];
$thumb = imagecreatefromstring(curlGet($link));
imagecopy($thumbs,$thumb,0,$j*$thumbdata[1]*$thumbdata[4],0,0,$thumbdata[0]*$thumbdata[3],$thumbdata[1]*$thumbdata[4]);
}
imagejpeg($thumbs);
?>

View File

@ -1 +1 @@
2.2.4
2.2.5