Merge remote-tracking branch 'upstream/master' into side-menu

This commit is contained in:
Tommy Miland 2019-03-13 08:58:40 +01:00
commit 1cef19a213
16 changed files with 188 additions and 67 deletions

View File

@ -50,6 +50,7 @@
"Autoplay: ": "تشغيل تلقائى: ", "Autoplay: ": "تشغيل تلقائى: ",
"Autoplay next video: ": "شغل الفيديو التالى تلقائى: ", "Autoplay next video: ": "شغل الفيديو التالى تلقائى: ",
"Listen by default: ": "تشغيل النسخة السمعية تلقائى: ", "Listen by default: ": "تشغيل النسخة السمعية تلقائى: ",
"Proxy videos? ": "",
"Default speed: ": "السرعة الإفتراضية: ", "Default speed: ": "السرعة الإفتراضية: ",
"Preferred video quality: ": "الجودة المفضلة للفيديوهات: ", "Preferred video quality: ": "الجودة المفضلة للفيديوهات: ",
"Player volume: ": "صوت المشغل: ", "Player volume: ": "صوت المشغل: ",
@ -102,6 +103,7 @@
"Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.", "Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.",
"Source available here.": "الأكواد متوفرة هنا.", "Source available here.": "الأكواد متوفرة هنا.",
"View JavaScript license information.": "مشاهدة معلومات حول تراخيص الجافاسكريبت.", "View JavaScript license information.": "مشاهدة معلومات حول تراخيص الجافاسكريبت.",
"View privacy policy.": "",
"Trending": "الشائع", "Trending": "الشائع",
"Watch video on Youtube": "مشاهدة الفيديو على اليوتيوب", "Watch video on Youtube": "مشاهدة الفيديو على اليوتيوب",
"Genre: ": "النوع: ", "Genre: ": "النوع: ",

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Automatisch abspielen: ", "Autoplay: ": "Automatisch abspielen: ",
"Autoplay next video: ": "nächstes Video automatisch abspielen: ", "Autoplay next video: ": "nächstes Video automatisch abspielen: ",
"Listen by default: ": "Nur Ton als Standard: ", "Listen by default: ": "Nur Ton als Standard: ",
"Proxy videos? ": "",
"Default speed: ": "Standardgeschwindigkeit: ", "Default speed: ": "Standardgeschwindigkeit: ",
"Preferred video quality: ": "Bevorzugte Videoqualität: ", "Preferred video quality: ": "Bevorzugte Videoqualität: ",
"Player volume: ": "Playerlautstärke: ", "Player volume: ": "Playerlautstärke: ",
@ -102,6 +103,7 @@
"Released under the AGPLv3 by Omar Roth.": "Veröffentlicht unter AGPLv3 von Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Veröffentlicht unter AGPLv3 von Omar Roth.",
"Source available here.": "Quellcode verfügbar hier.", "Source available here.": "Quellcode verfügbar hier.",
"View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.", "View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.",
"View privacy policy.": "",
"Trending": "Trending", "Trending": "Trending",
"Watch video on Youtube": "Video auf YouTube ansehen", "Watch video on Youtube": "Video auf YouTube ansehen",
"Genre: ": "Genre: ", "Genre: ": "Genre: ",

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Autoplay: ", "Autoplay: ": "Autoplay: ",
"Autoplay next video: ": "Autoplay next video: ", "Autoplay next video: ": "Autoplay next video: ",
"Listen by default: ": "Listen by default: ", "Listen by default: ": "Listen by default: ",
"Proxy videos? ": "Proxy videos? ",
"Default speed: ": "Default speed: ", "Default speed: ": "Default speed: ",
"Preferred video quality: ": "Preferred video quality: ", "Preferred video quality: ": "Preferred video quality: ",
"Player volume: ": "Player volume: ", "Player volume: ": "Player volume: ",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Released under the AGPLv3 by Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Released under the AGPLv3 by Omar Roth.",
"Source available here.": "Source available here.", "Source available here.": "Source available here.",
"View JavaScript license information.": "View JavaScript license information.", "View JavaScript license information.": "View JavaScript license information.",
"View privacy policy.": "View privacy policy.",
"Trending": "Trending", "Trending": "Trending",
"Watch video on Youtube": "Watch video on Youtube", "Watch video on Youtube": "Watch video on Youtube",
"Genre: ": "Genre: ", "Genre: ": "Genre: ",

View File

@ -50,6 +50,7 @@
"Autoplay: ": "", "Autoplay: ": "",
"Autoplay next video: ": "", "Autoplay next video: ": "",
"Listen by default: ": "", "Listen by default: ": "",
"Proxy videos? ": "",
"Default speed: ": "", "Default speed: ": "",
"Preferred video quality: ": "", "Preferred video quality: ": "",
"Player volume: ": "", "Player volume: ": "",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "", "Released under the AGPLv3 by Omar Roth.": "",
"Source available here.": "", "Source available here.": "",
"View JavaScript license information.": "", "View JavaScript license information.": "",
"View privacy policy.": "",
"Trending": "", "Trending": "",
"Watch video on Youtube": "", "Watch video on Youtube": "",
"Genre: ": "", "Genre: ": "",

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Lire Automatiquement : ", "Autoplay: ": "Lire Automatiquement : ",
"Autoplay next video: ": "Lire automatiquement la vidéo suivante : ", "Autoplay next video: ": "Lire automatiquement la vidéo suivante : ",
"Listen by default: ": "Audio Uniquement par défaut : ", "Listen by default: ": "Audio Uniquement par défaut : ",
"Proxy videos? ": "",
"Default speed: ": "Vitesse par défaut : ", "Default speed: ": "Vitesse par défaut : ",
"Preferred video quality: ": "Qualité vidéo souhaitée : ", "Preferred video quality: ": "Qualité vidéo souhaitée : ",
"Player volume: ": "Volume du lecteur : ", "Player volume: ": "Volume du lecteur : ",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Publié sous licence AGPLv3 par Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Publié sous licence AGPLv3 par Omar Roth.",
"Source available here.": "Code Source.", "Source available here.": "Code Source.",
"View JavaScript license information.": "Voir les informations des licences JavaScript.", "View JavaScript license information.": "Voir les informations des licences JavaScript.",
"View privacy policy.": "",
"Trending": "Tendances", "Trending": "Tendances",
"Watch video on Youtube": "Voir la vidéo sur Youtube", "Watch video on Youtube": "Voir la vidéo sur Youtube",
"Genre: ": "Genre : ", "Genre: ": "Genre : ",

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Riproduzione automatica: ", "Autoplay: ": "Riproduzione automatica: ",
"Autoplay next video: ": "Riproduci automaticamente il prossimo video: ", "Autoplay next video: ": "Riproduci automaticamente il prossimo video: ",
"Listen by default: ": "Modalità solo audio come predefinita: ", "Listen by default: ": "Modalità solo audio come predefinita: ",
"Proxy videos? ": "",
"Default speed: ": "Velocità di riproduzione predefinita: ", "Default speed: ": "Velocità di riproduzione predefinita: ",
"Preferred video quality: ": "Preferenza sulla qualità video: ", "Preferred video quality: ": "Preferenza sulla qualità video: ",
"Player volume: ": "Volume di riproduzione: ", "Player volume: ": "Volume di riproduzione: ",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Pubblicato con licenza AGPLv3 da Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Pubblicato con licenza AGPLv3 da Omar Roth.",
"Source available here.": "Codice sorgente.", "Source available here.": "Codice sorgente.",
"View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.", "View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.",
"View privacy policy.": "",
"Trending": "Tendenze", "Trending": "Tendenze",
"Watch video on Youtube": "Guarda il video su YouTube", "Watch video on Youtube": "Guarda il video su YouTube",
"Genre: ": "Genere: ", "Genre: ": "Genere: ",

View File

@ -10,7 +10,7 @@
"newest": "nyeste", "newest": "nyeste",
"oldest": "eldste", "oldest": "eldste",
"popular": "populært", "popular": "populært",
"last": "", "last": "siste",
"Next page": "Neste side", "Next page": "Neste side",
"Previous page": "Forrige side", "Previous page": "Forrige side",
"Clear watch history?": "Tøm visningshistorikk?", "Clear watch history?": "Tøm visningshistorikk?",
@ -50,6 +50,7 @@
"Autoplay: ": "Autoavspilling: ", "Autoplay: ": "Autoavspilling: ",
"Autoplay next video: ": "Autospill neste video: ", "Autoplay next video: ": "Autospill neste video: ",
"Listen by default: ": "Lytt som forvalg: ", "Listen by default: ": "Lytt som forvalg: ",
"Proxy videos? ": "",
"Default speed: ": "Forvalgt hastighet: ", "Default speed: ": "Forvalgt hastighet: ",
"Preferred video quality: ": "Foretrukket videokvalitet: ", "Preferred video quality: ": "Foretrukket videokvalitet: ",
"Player volume: ": "Avspillerlydstyrke: ", "Player volume: ": "Avspillerlydstyrke: ",
@ -83,7 +84,7 @@
"Administrator preferences": "Administratorinnstillinger", "Administrator preferences": "Administratorinnstillinger",
"Default homepage: ": "Forvalgt hjemmeside: ", "Default homepage: ": "Forvalgt hjemmeside: ",
"Feed menu: ": "Flyt-meny: ", "Feed menu: ": "Flyt-meny: ",
"Top enabled? ": "", "Top enabled? ": "Topp påskrudd? ",
"CAPTCHA enabled? ": "CAPTCHA påskrudd? ", "CAPTCHA enabled? ": "CAPTCHA påskrudd? ",
"Login enabled? ": "Innlogging påskrudd? ", "Login enabled? ": "Innlogging påskrudd? ",
"Registration enabled? ": "Registrering påskrudd? ", "Registration enabled? ": "Registrering påskrudd? ",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Utgitt med AGPLv3+lisens av Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Utgitt med AGPLv3+lisens av Omar Roth.",
"Source available here.": "Kildekode tilgjengelig her.", "Source available here.": "Kildekode tilgjengelig her.",
"View JavaScript license information.": "Vis JavaScript-lisensinfo.", "View JavaScript license information.": "Vis JavaScript-lisensinfo.",
"View privacy policy.": "",
"Trending": "Trendsettende", "Trending": "Trendsettende",
"Watch video on Youtube": "Vis video på YouTube", "Watch video on Youtube": "Vis video på YouTube",
"Genre: ": "Sjanger: ", "Genre: ": "Sjanger: ",
@ -285,7 +287,7 @@
"`x` marked it with a ❤": "`x` levnet et ❤", "`x` marked it with a ❤": "`x` levnet et ❤",
"Audio mode": "Lydmodus", "Audio mode": "Lydmodus",
"Video mode": "Video-modus", "Video mode": "Video-modus",
"Videos": "", "Videos": "Videoer",
"Playlists": "", "Playlists": "Spillelister",
"Current version: ": "" "Current version: ": "Nåværende versjon: "
} }

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Automatisch afspelen: ", "Autoplay: ": "Automatisch afspelen: ",
"Autoplay next video: ": "Automatisch volgende video afspelen: ", "Autoplay next video: ": "Automatisch volgende video afspelen: ",
"Listen by default: ": "Standaard luisteren: ", "Listen by default: ": "Standaard luisteren: ",
"Proxy videos? ": "",
"Default speed: ": "Standaard snelheid: ", "Default speed: ": "Standaard snelheid: ",
"Preferred video quality: ": "Video kwaliteit voorkeur: ", "Preferred video quality: ": "Video kwaliteit voorkeur: ",
"Player volume: ": "Afspeler volume: ", "Player volume: ": "Afspeler volume: ",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Uitgegeven onder AGPLv3 door Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Uitgegeven onder AGPLv3 door Omar Roth.",
"Source available here.": "Bron beschikbaar hier.", "Source available here.": "Bron beschikbaar hier.",
"View JavaScript license information.": "Bekijk JavaScript licentie informatie.", "View JavaScript license information.": "Bekijk JavaScript licentie informatie.",
"View privacy policy.": "",
"Trending": "Trending", "Trending": "Trending",
"Watch video on Youtube": "Bekijk video op Youtube", "Watch video on Youtube": "Bekijk video op Youtube",
"Genre: ": "Genre: ", "Genre: ": "Genre: ",

View File

@ -50,12 +50,13 @@
"Autoplay: ": "Autoodtwarzanie: ", "Autoplay: ": "Autoodtwarzanie: ",
"Autoplay next video: ": "Odtwórz następny film: ", "Autoplay next video: ": "Odtwórz następny film: ",
"Listen by default: ": "Tryb dźwiękowy: ", "Listen by default: ": "Tryb dźwiękowy: ",
"Proxy videos? ": "",
"Default speed: ": "Domyślna prędkość: ", "Default speed: ": "Domyślna prędkość: ",
"Preferred video quality: ": "Preferowana jakość filmów: ", "Preferred video quality: ": "Preferowana jakość filmów: ",
"Player volume: ": "Głośność odtwarzacza: ", "Player volume: ": "Głośność odtwarzacza: ",
"Default comments: ": "Domyślne komentarze: ", "Default comments: ": "Domyślne komentarze: ",
"Default captions: ": "Domyślne napisy: ", "Default captions: ": "Domyślne napisy: ",
"Fallback captions: ": "Rezerwowe napisy: ", "Fallback captions: ": "Zastępcze napisy: ",
"Show related videos? ": "Pokaż powiązane filmy? ", "Show related videos? ": "Pokaż powiązane filmy? ",
"Visual preferences": "Preferencje Wizualne", "Visual preferences": "Preferencje Wizualne",
"Dark mode: ": "Ciemny motyw: ", "Dark mode: ": "Ciemny motyw: ",
@ -63,13 +64,13 @@
"Subscription preferences": "Preferencje subskrybcji", "Subscription preferences": "Preferencje subskrybcji",
"Redirect homepage to feed: ": "Przekieruj stronę główną do subskrybcji: ", "Redirect homepage to feed: ": "Przekieruj stronę główną do subskrybcji: ",
"Number of videos shown in feed: ": "Liczba filmów widoczna na stronie subskrybcji: ", "Number of videos shown in feed: ": "Liczba filmów widoczna na stronie subskrybcji: ",
"Sort videos by: ": "Sortuj filmy po: ", "Sort videos by: ": "Sortuj filmy: ",
"published": "czasie publikacji", "published": "po czasie publikacji",
"published - reverse": "czasie publikacji od najstarszych", "published - reverse": "po czasie publikacji od najstarszych",
"alphabetically": "alfabetycznie", "alphabetically": "alfabetycznie",
"alphabetically - reverse": "alfabetycznie od tyłu", "alphabetically - reverse": "alfabetycznie od tyłu",
"channel name": "nazwie kanału", "channel name": "po nazwie kanału",
"channel name - reverse": "nazwie kanału od tyłu", "channel name - reverse": "po nazwie kanału od tyłu",
"Only show latest video from channel: ": "Pokazuj tylko najnowszy film z kanału: ", "Only show latest video from channel: ": "Pokazuj tylko najnowszy film z kanału: ",
"Only show latest unwatched video from channel: ": "Pokazuj tylko najnowszy nie obejrzany film z kanału: ", "Only show latest unwatched video from channel: ": "Pokazuj tylko najnowszy nie obejrzany film z kanału: ",
"Only show unwatched: ": "Pokazuj tylko nie obejrzane: ", "Only show unwatched: ": "Pokazuj tylko nie obejrzane: ",
@ -80,14 +81,14 @@
"Manage subscriptions": "Organizuj subskrybcje", "Manage subscriptions": "Organizuj subskrybcje",
"Watch history": "Historia", "Watch history": "Historia",
"Delete account": "Usuń konto", "Delete account": "Usuń konto",
"Administrator preferences": "", "Administrator preferences": "Preferencje administratora",
"Default homepage: ": "", "Default homepage: ": "Domyślna strona główna: ",
"Feed menu: ": "", "Feed menu: ": "",
"Top enabled? ": "", "Top enabled? ": "",
"CAPTCHA enabled? ": "", "CAPTCHA enabled? ": "CAPTCHA aktywna? ",
"Login enabled? ": "", "Login enabled? ": "Logowanie włączone? ",
"Registration enabled? ": "", "Registration enabled? ": "Rejestracja włączona? ",
"Report statistics? ": "", "Report statistics? ": "Raportować statystyki? ",
"Save preferences": "Zapisz preferencje", "Save preferences": "Zapisz preferencje",
"Subscription manager": "Manager subskrybcji", "Subscription manager": "Manager subskrybcji",
"`x` subscriptions": "`x` subskrybcji", "`x` subscriptions": "`x` subskrybcji",
@ -100,6 +101,7 @@
"Released under the AGPLv3 by Omar Roth.": "Wydano na licencji AGPLv3 przez Omar Roth.", "Released under the AGPLv3 by Omar Roth.": "Wydano na licencji AGPLv3 przez Omar Roth.",
"Source available here.": "Kod źródłowy dostępny tutaj.", "Source available here.": "Kod źródłowy dostępny tutaj.",
"View JavaScript license information.": "Wyświetl informację o licencji JavaScript.", "View JavaScript license information.": "Wyświetl informację o licencji JavaScript.",
"View privacy policy.": "",
"Trending": "Na czasie", "Trending": "Na czasie",
"Watch video on Youtube": "Zobacz film na YouTube", "Watch video on Youtube": "Zobacz film na YouTube",
"Genre: ": "Gatunek: ", "Genre: ": "Gatunek: ",
@ -155,20 +157,20 @@
"Token is expired, please try again": "Token wygasł, spróbuj ponownie", "Token is expired, please try again": "Token wygasł, spróbuj ponownie",
"English": "angielski", "English": "angielski",
"English (auto-generated)": "angielski (automatycznie generowane)", "English (auto-generated)": "angielski (automatycznie generowane)",
"Afrikaans": "", "Afrikaans": "afrykanerski",
"Albanian": "albański", "Albanian": "albański",
"Amharic": "", "Amharic": "amharski",
"Arabic": "arabski", "Arabic": "arabski",
"Armenian": "", "Armenian": "armeński",
"Azerbaijani": "", "Azerbaijani": "azerski",
"Bangla": "", "Bangla": "bengalski",
"Basque": "", "Basque": "baskijski",
"Belarusian": "białoruski", "Belarusian": "białoruski",
"Bosnian": "bośniacki", "Bosnian": "bośniacki",
"Bulgarian": "bułgarski", "Bulgarian": "bułgarski",
"Burmese": "birmański", "Burmese": "birmański",
"Catalan": "kataloński", "Catalan": "kataloński",
"Cebuano": "", "Cebuano": "cebuański",
"Chinese (Simplified)": "chiński (uproszczony)", "Chinese (Simplified)": "chiński (uproszczony)",
"Chinese (Traditional)": "chiński (tradycyjny)", "Chinese (Traditional)": "chiński (tradycyjny)",
"Corsican": "korsykański", "Corsican": "korsykański",
@ -185,28 +187,28 @@
"Georgian": "gruziński", "Georgian": "gruziński",
"German": "niemiecki", "German": "niemiecki",
"Greek": "grecki", "Greek": "grecki",
"Gujarati": "", "Gujarati": "gudźarati",
"Haitian Creole": "", "Haitian Creole": "kreolski haitański",
"Hausa": "", "Hausa": "hausa",
"Hawaiian": "hawajski", "Hawaiian": "hawajski",
"Hebrew": "hebrajski", "Hebrew": "hebrajski",
"Hindi": "hindi", "Hindi": "hindi",
"Hmong": "", "Hmong": "hmong",
"Hungarian": "węgierski", "Hungarian": "węgierski",
"Icelandic": "islandzki", "Icelandic": "islandzki",
"Igbo": "", "Igbo": "ibo",
"Indonesian": "indonezyjski", "Indonesian": "indonezyjski",
"Irish": "irlandzki", "Irish": "irlandzki",
"Italian": "włoski", "Italian": "włoski",
"Japanese": "japoński", "Japanese": "japoński",
"Javanese": "jawajski", "Javanese": "jawajski",
"Kannada": "", "Kannada": "kannada",
"Kazakh": "kazachski", "Kazakh": "kazachski",
"Khmer": "", "Khmer": "khmerski",
"Korean": "koreański", "Korean": "koreański",
"Kurdish": "kurdyjski", "Kurdish": "kurdyjski",
"Kyrgyz": "kirgiski", "Kyrgyz": "kirgiski",
"Lao": "", "Lao": "laotański",
"Latin": "łaciński", "Latin": "łaciński",
"Latvian": "łotewski", "Latvian": "łotewski",
"Lithuanian": "litewski", "Lithuanian": "litewski",
@ -214,51 +216,51 @@
"Macedonian": "macedoński", "Macedonian": "macedoński",
"Malagasy": "malgaski", "Malagasy": "malgaski",
"Malay": "malajski", "Malay": "malajski",
"Malayalam": "", "Malayalam": "malajalam",
"Maltese": "maltański", "Maltese": "maltański",
"Maori": "", "Maori": "maoryski",
"Marathi": "", "Marathi": "marathi",
"Mongolian": "mongolski", "Mongolian": "mongolski",
"Nepali": "nepalski", "Nepali": "nepalski",
"Norwegian": "norweski", "Norwegian": "norweski",
"Nyanja": "", "Nyanja": "njandża",
"Pashto": "", "Pashto": "paszto",
"Persian": "perski", "Persian": "perski",
"Polish": "polski", "Polish": "polski",
"Portuguese": "portugalski", "Portuguese": "portugalski",
"Punjabi": "", "Punjabi": "pendżabski",
"Romanian": "rumuński", "Romanian": "rumuński",
"Russian": "rosyjski", "Russian": "rosyjski",
"Samoan": "", "Samoan": "samoański",
"Scottish Gaelic": "", "Scottish Gaelic": "gaelicki szkocki",
"Serbian": "serbski", "Serbian": "serbski",
"Shona": "", "Shona": "shona",
"Sindhi": "", "Sindhi": "sindhi",
"Sinhala": "", "Sinhala": "syngaleski",
"Slovak": "słowacki", "Slovak": "słowacki",
"Slovenian": "słoweński", "Slovenian": "słoweński",
"Somali": "somalijski", "Somali": "somalijski",
"Southern Sotho": "", "Southern Sotho": "sotho południowy",
"Spanish": "hiszpański", "Spanish": "hiszpański",
"Spanish (Latin America)": "hiszpański (ameryka łacińska)", "Spanish (Latin America)": "hiszpański (ameryka łacińska)",
"Sundanese": "", "Sundanese": "sundajski",
"Swahili": "", "Swahili": "suahili",
"Swedish": "szwedzki", "Swedish": "szwedzki",
"Tajik": "", "Tajik": "tadżycki",
"Tamil": "", "Tamil": "tamilski",
"Telugu": "", "Telugu": "telugu",
"Thai": "tajski", "Thai": "tajski",
"Turkish": "turecki", "Turkish": "turecki",
"Ukrainian": "ukraiński", "Ukrainian": "ukraiński",
"Urdu": "", "Urdu": "urdu",
"Uzbek": "uzbecki", "Uzbek": "uzbecki",
"Vietnamese": "wietnamski", "Vietnamese": "wietnamski",
"Welsh": "walijski", "Welsh": "walijski",
"Western Frisian": "", "Western Frisian": "zachodniofryzyjski",
"Xhosa": "", "Xhosa": "xhosa",
"Yiddish": "", "Yiddish": "jidysz",
"Yoruba": "", "Yoruba": "joruba",
"Zulu": "", "Zulu": "zuluski",
"`x` years": "`x` lat", "`x` years": "`x` lat",
"`x` months": "`x` miesięcy", "`x` months": "`x` miesięcy",
"`x` weeks": "`x` tygodni", "`x` weeks": "`x` tygodni",
@ -272,7 +274,7 @@
"About": "Informacje", "About": "Informacje",
"Rating: ": "Ocena: ", "Rating: ": "Ocena: ",
"Language: ": "Język: ", "Language: ": "Język: ",
"Default": "", "Default": "Domyślnie",
"Music": "Muzyka", "Music": "Muzyka",
"Gaming": "Gry", "Gaming": "Gry",
"News": "Wiadomości", "News": "Wiadomości",
@ -282,10 +284,10 @@
"%A %B %-d, %Y": "", "%A %B %-d, %Y": "",
"(edited)": "(edytowany)", "(edited)": "(edytowany)",
"Youtube permalink of the comment": "Odnośnik bezpośredni do komentarza na YouTube", "Youtube permalink of the comment": "Odnośnik bezpośredni do komentarza na YouTube",
"`x` marked it with a ❤": "", "`x` marked it with a ❤": "'x' oznaczonych ❤",
"Audio mode": "Tryb audio", "Audio mode": "Tryb audio",
"Video mode": "Tryb wideo", "Video mode": "Tryb wideo",
"Videos": "", "Videos": "Filmy",
"Playlists": "", "Playlists": "Playlisty",
"Current version: ": "" "Current version: ": "Aktualna wersja: "
} }

View File

@ -50,6 +50,7 @@
"Autoplay: ": "Автовоспроизведение: ", "Autoplay: ": "Автовоспроизведение: ",
"Autoplay next video: ": "Автовоспроизведение следующего видео: ", "Autoplay next video: ": "Автовоспроизведение следующего видео: ",
"Listen by default: ": "Режим \"только аудио\" по-умолчанию: ", "Listen by default: ": "Режим \"только аудио\" по-умолчанию: ",
"Proxy videos? ": "",
"Default speed: ": "Скорость по-умолчанию: ", "Default speed: ": "Скорость по-умолчанию: ",
"Preferred video quality: ": "Предпочтительное качество видео: ", "Preferred video quality: ": "Предпочтительное качество видео: ",
"Player volume: ": "Громкость воспроизведения: ", "Player volume: ": "Громкость воспроизведения: ",
@ -102,6 +103,7 @@
"Released under the AGPLv3 by Omar Roth.": "Распространяется Omar Roth по AGPLv3.", "Released under the AGPLv3 by Omar Roth.": "Распространяется Omar Roth по AGPLv3.",
"Source available here.": "Исходный код доступен здесь.", "Source available here.": "Исходный код доступен здесь.",
"View JavaScript license information.": "Посмотреть лицензии JavaScript кода.", "View JavaScript license information.": "Посмотреть лицензии JavaScript кода.",
"View privacy policy.": "",
"Trending": "В тренде", "Trending": "В тренде",
"Watch video on Youtube": "Смотреть на YouTube", "Watch video on Youtube": "Смотреть на YouTube",
"Genre: ": "Жанр: ", "Genre: ": "Жанр: ",

View File

@ -17,6 +17,7 @@
require "digest/md5" require "digest/md5"
require "file_utils" require "file_utils"
require "kemal" require "kemal"
require "markdown"
require "openssl/hmac" require "openssl/hmac"
require "option_parser" require "option_parser"
require "pg" require "pg"
@ -291,6 +292,11 @@ get "/" do |env|
end end
end end
get "/privacy" do |env|
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
templated "privacy"
end
get "/licenses" do |env| get "/licenses" do |env|
locale = LOCALES[env.get("preferences").as(Preferences).locale]? locale = LOCALES[env.get("preferences").as(Preferences).locale]?
rendered "licenses" rendered "licenses"
@ -1225,6 +1231,10 @@ post "/preferences" do |env|
listen ||= "off" listen ||= "off"
listen = listen == "on" listen = listen == "on"
local = env.params.body["local"]?.try &.as(String)
local ||= "off"
local = local == "on"
speed = env.params.body["speed"]?.try &.as(String).to_f? speed = env.params.body["speed"]?.try &.as(String).to_f?
speed ||= DEFAULT_USER_PREFERENCES.speed speed ||= DEFAULT_USER_PREFERENCES.speed
@ -1286,6 +1296,7 @@ post "/preferences" do |env|
"autoplay" => autoplay, "autoplay" => autoplay,
"continue" => continue, "continue" => continue,
"listen" => listen, "listen" => listen,
"local" => local,
"speed" => speed, "speed" => speed,
"quality" => quality, "quality" => quality,
"volume" => volume, "volume" => volume,

View File

@ -31,6 +31,7 @@ DEFAULT_USER_PREFERENCES = Preferences.from_json({
"video_loop" => false, "video_loop" => false,
"autoplay" => false, "autoplay" => false,
"continue" => false, "continue" => false,
"local" => false,
"listen" => false, "listen" => false,
"speed" => 1.0, "speed" => 1.0,
"quality" => "hd720", "quality" => "hd720",
@ -80,6 +81,10 @@ class Preferences
type: Bool, type: Bool,
default: DEFAULT_USER_PREFERENCES.continue, default: DEFAULT_USER_PREFERENCES.continue,
}, },
local: {
type: Bool,
default: DEFAULT_USER_PREFERENCES.local,
},
listen: { listen: {
type: Bool, type: Bool,
default: DEFAULT_USER_PREFERENCES.listen, default: DEFAULT_USER_PREFERENCES.listen,

View File

@ -747,10 +747,11 @@ def process_video_params(query, preferences)
# region ||= preferences.region # region ||= preferences.region
autoplay ||= preferences.autoplay.to_unsafe autoplay ||= preferences.autoplay.to_unsafe
continue ||= preferences.continue.to_unsafe continue ||= preferences.continue.to_unsafe
related_videos ||= preferences.related_videos.to_unsafe
listen ||= preferences.listen.to_unsafe listen ||= preferences.listen.to_unsafe
local ||= preferences.local.to_unsafe
preferred_captions ||= preferences.captions preferred_captions ||= preferences.captions
quality ||= preferences.quality quality ||= preferences.quality
related_videos ||= preferences.related_videos.to_unsafe
speed ||= preferences.speed speed ||= preferences.speed
video_loop ||= preferences.video_loop.to_unsafe video_loop ||= preferences.video_loop.to_unsafe
volume ||= preferences.volume volume ||= preferences.volume
@ -758,10 +759,11 @@ def process_video_params(query, preferences)
autoplay ||= DEFAULT_USER_PREFERENCES.autoplay.to_unsafe autoplay ||= DEFAULT_USER_PREFERENCES.autoplay.to_unsafe
continue ||= DEFAULT_USER_PREFERENCES.continue.to_unsafe continue ||= DEFAULT_USER_PREFERENCES.continue.to_unsafe
related_videos ||= DEFAULT_USER_PREFERENCES.related_videos.to_unsafe
listen ||= DEFAULT_USER_PREFERENCES.listen.to_unsafe listen ||= DEFAULT_USER_PREFERENCES.listen.to_unsafe
local ||= DEFAULT_USER_PREFERENCES.local.to_unsafe
preferred_captions ||= DEFAULT_USER_PREFERENCES.captions preferred_captions ||= DEFAULT_USER_PREFERENCES.captions
quality ||= DEFAULT_USER_PREFERENCES.quality quality ||= DEFAULT_USER_PREFERENCES.quality
related_videos ||= DEFAULT_USER_PREFERENCES.related_videos.to_unsafe
speed ||= DEFAULT_USER_PREFERENCES.speed speed ||= DEFAULT_USER_PREFERENCES.speed
video_loop ||= DEFAULT_USER_PREFERENCES.video_loop.to_unsafe video_loop ||= DEFAULT_USER_PREFERENCES.video_loop.to_unsafe
volume ||= DEFAULT_USER_PREFERENCES.volume volume ||= DEFAULT_USER_PREFERENCES.volume

View File

@ -28,6 +28,11 @@ function update_value(element) {
<input name="continue" id="continue" type="checkbox" <% if preferences.continue %>checked<% end %>> <input name="continue" id="continue" type="checkbox" <% if preferences.continue %>checked<% end %>>
</div> </div>
<div class="pure-control-group">
<label for="local"><%= translate(locale, "Proxy videos? ") %></label>
<input name="local" id="local" type="checkbox" <% if preferences.local %>checked<% end %>>
</div>
<div class="pure-control-group"> <div class="pure-control-group">
<label for="listen"><%= translate(locale, "Listen by default: ") %></label> <label for="listen"><%= translate(locale, "Listen by default: ") %></label>
<input name="listen" id="listen" type="checkbox" <% if preferences.listen %>checked<% end %>> <input name="listen" id="listen" type="checkbox" <% if preferences.listen %>checked<% end %>>

View File

@ -0,0 +1,75 @@
<% content_for "header" do %>
<title>Privacy Policy - Invidious</title>
<% end %>
<div class="h-box">
<%= Markdown.to_html(<<-END_PRIVACY_POLICY
## Privacy
This document concerns what data you provide to this website, the purpose of the data, how the data is stored, and how the data can be removed.
### Data you directly provide
Data that you provide to the website for the purpose of the site's operation (for example: an account name, account password, or channel subscription) will be stored in the website's database until the user decides to remove it. This data will not be intentionally shared with anyone or anything.
Information stored about a registered user is limited to:
- a list of session tokens for remaining logged in across devices
- the last time an account was updated (to provide accurate notifications)
- a list of video IDs identifying notifications from a user's subscriptions
- a list of channel UCIDs the user is subscribed to
- a user ID (for persistent storage of subscriptions and preferences)
- a json object containing user preferences
- a hashed password if applicable (not present on google accounts)
- a randomly generated token for providing an RSS feed of a user's subscriptions
- a list of video IDs identifying watched videos
The above list reflects [this code](https://github.com/omarroth/invidious/blob/master/src/invidious/users.cr#L14-L51).
Users can clear their watch history using the [clear watch history](/clear_watch_history) page.
If a user is logged in with a Google account, no password will ever be stored. This website uses the session token provided by Google to identify a user, but does not store the information required to make requests on a user's behalf without their knowledge or consent.
### Data you passively provide
When you request any resource from this website (for example: a page, a font, an image, or an API endpoint) information about the request may be logged.
Information about a request is limited to:
- the time the request was made
- the status code of the response
- the method of the request
- the requested URL
- how long it took to complete the request.
No identifying information is logged, such as the visitor's cookie, user-agent, or IP address. Here are a couple lines to serve as an example:
```
2019-01-19 16:37:47 +00:00 200 GET /api/v1/comments/xrlETJYzH-c?format=html&hl=en-US 1345.88ms
2019-01-19 16:37:53 +00:00 200 GET /vi/r5P-f5arPXE/maxres.jpg 1085.41ms
2019-01-19 16:37:54 +00:00 200 GET /watch 7.04ms
```
This website does not store the visitor's user-agent or IP address and does not use fingerprinting, advertisements, or tracking of any form.
This website provides links to googlevideo.com to provide audio and video playback. googlevideo.com is owned by Google and is subject to their [privacy policy](https://policies.google.com/privacy).
### Data stored in your browser
This website uses browser cookies to authenticate registered users. This data consists of:
- An account token to keep you logged into the website between visits, which is sent when any page is loaded while you are logged in
This website also provides an option to store site preferences, such as the theme or locale, without an account. Using this feature will store a cookie in the visitor's browser containing their preferences. This cookie is sent on every request and does not contain any identifying information.
You can remove this data from your browser by logging out of this website, or by using your browser's cookie-related controls to delete the data.
### Removal of data
To remove data stored in your browser, you can log out of the website, or you can use your browser's cookie-related controls to delete the data.
To remove data that has been stored in the website's database, you can use the [delete my account](/delete_account) page.
END_PRIVACY_POLICY
)
%>
</div>

View File

@ -209,14 +209,17 @@
<a rel="jslicense" href="/licenses"> <a rel="jslicense" href="/licenses">
<%= translate(locale, "View JavaScript license information.") %> <%= translate(locale, "View JavaScript license information.") %>
</a> </a>
</div> /
<i class="icon ion-ios-paper"></i>
<a href="/privacy">
<%= translate(locale, "View privacy policy.") %>
</a>
</div>
<div class="pure-u-1 pure-u-md-1-3"> <div class="pure-u-1 pure-u-md-1-3">
<i class="icon ion-logo-github"></i> <i class="icon ion-logo-github"></i>
<%= translate(locale, "Current version: ") %> <%= translate(locale, "Current version: ") %> <%= CURRENT_VERSION %>-<%= CURRENT_COMMIT %>
<%= CURRENT_VERSION %>-
<%= CURRENT_COMMIT %>
<i class="icon ion-logo-github"></i> <i class="icon ion-logo-github"></i>
<%= CURRENT_BRANCH %> <%= CURRENT_BRANCH %></div>
</div> </div>
</div> </div>
</div> </div>