summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--locales/ar.json3
-rw-r--r--locales/cs.json2
-rw-r--r--locales/et.json338
-rw-r--r--locales/hi.json2
-rw-r--r--locales/pt-BR.json2
-rw-r--r--src/invidious/comments.cr4
-rw-r--r--src/invidious/helpers/i18n.cr1
-rw-r--r--src/invidious/routes/watch.cr2
8 files changed, 349 insertions, 5 deletions
diff --git a/locales/ar.json b/locales/ar.json
index 01c9bbb9..c6ed19ce 100644
--- a/locales/ar.json
+++ b/locales/ar.json
@@ -458,5 +458,6 @@
"Russian (auto-generated)": "الروسية (منشأة تلقائيا)",
"Spanish (Spain)": "الإسبانية (إسبانيا)",
"crash_page_search_issue": "بحثت عن <a href=\"`x`\"> المشكلات الموجودة على GitHub </a>",
- "search_filters_title": "معامل الفرز"
+ "search_filters_title": "معامل الفرز",
+ "search_message_no_results": "لا توجد نتائج."
}
diff --git a/locales/cs.json b/locales/cs.json
index 318866b1..d590b5b8 100644
--- a/locales/cs.json
+++ b/locales/cs.json
@@ -61,7 +61,7 @@
"preferences_comments_label": "Předpřipravené komentáře: ",
"youtube": "YouTube",
"reddit": "Reddit",
- "preferences_captions_label": "Standartní Titulky: ",
+ "preferences_captions_label": "Výchozí titulky: ",
"Fallback captions: ": "Záložní titulky: ",
"preferences_related_videos_label": "Zobrazit podobné videa: ",
"preferences_annotations_label": "Zobrazovat poznámky ve výchozím nastavení: ",
diff --git a/locales/et.json b/locales/et.json
new file mode 100644
index 00000000..7beb1749
--- /dev/null
+++ b/locales/et.json
@@ -0,0 +1,338 @@
+{
+ "generic_playlists_count": "{{count}} esitusloend",
+ "generic_playlists_count_plural": "{{count}} esindusloendit",
+ "LIVE": "OTSEÜLEKANNE",
+ "View channel on YouTube": "Vaata kanalit YouTube'is",
+ "Log in": "Logi sisse",
+ "Log in/register": "Logi sisse/registreeru",
+ "Dark mode: ": "Tume režiim: ",
+ "generic_videos_count": "{{count}} video",
+ "generic_videos_count_plural": "{{count}} videot",
+ "generic_subscribers_count": "{{count}} tellija",
+ "generic_subscribers_count_plural": "{{count}} tellijat",
+ "generic_subscriptions_count": "{{count}} tellimus",
+ "generic_subscriptions_count_plural": "{{count}} tellimust",
+ "Shared `x` ago": "Jagatud `x` tagasi",
+ "Unsubscribe": "Loobu tellimusest",
+ "Subscribe": "Telli",
+ "View playlist on YouTube": "Vaata esitusloendit YouTube'is",
+ "newest": "uusimad",
+ "oldest": "vanimad",
+ "popular": "populaarsed",
+ "last": "viimane",
+ "Next page": "Järgmine leht",
+ "Previous page": "Eelmine leht",
+ "Clear watch history?": "Kustuta vaatamiste ajalugu?",
+ "New password": "Uus salasõna",
+ "New passwords must match": "Uued salasõnad peavad ühtima",
+ "Cannot change password for Google accounts": "Google'i kasutaja salasõna ei saa muuta",
+ "Import and Export Data": "Impordi ja ekspordi andmed",
+ "Import": "Impordi",
+ "Import YouTube subscriptions": "Impordi tellimused Youtube'ist/OPML-ist",
+ "Import FreeTube subscriptions (.db)": "Impordi tellimused FreeTube'ist (.db)",
+ "Import NewPipe data (.zip)": "Impordi NewPipe'i andmed (.zip)",
+ "Export": "Ekspordi",
+ "Export subscriptions as OPML": "Ekspordi tellimused OPML-ina",
+ "Export subscriptions as OPML (for NewPipe & FreeTube)": "Ekspordi tellimused OPML-ina (NewPipe'i ja FreeTube'i jaoks)",
+ "Delete account?": "Kustuta kasutaja?",
+ "History": "Ajalugu",
+ "JavaScript license information": "JavaScripti litsentsi info",
+ "source": "allikas",
+ "Log in with Google": "Logi sisse Google'iga",
+ "User ID": "Kasutada ID",
+ "Password": "Salasõna",
+ "Time (h:mm:ss):": "Aeg (h:mm:ss):",
+ "Text CAPTCHA": "CAPTCHA-tekst",
+ "Image CAPTCHA": "CAPTCHA-foto",
+ "Sign In": "Logi sisse",
+ "Register": "Registreeru",
+ "E-mail": "E-post",
+ "Preferences": "Eelistused",
+ "preferences_category_player": "Mängija eelistused",
+ "preferences_continue_autoplay_label": "Mängi järgmine video automaatselt: ",
+ "preferences_quality_label": "Eelistatud videokvaliteet: ",
+ "preferences_quality_option_dash": "DASH (kohanduv kvaliteet)",
+ "preferences_quality_option_hd720": "HD720",
+ "preferences_quality_option_medium": "Keskmine",
+ "preferences_quality_option_small": "Väike",
+ "preferences_quality_dash_label": "Eelistatav DASH-video kvaliteet: ",
+ "preferences_quality_dash_option_auto": "Automaatne",
+ "preferences_quality_dash_option_best": "Parim",
+ "preferences_quality_dash_option_worst": "Halvim",
+ "preferences_volume_label": "Video helitugevus: ",
+ "youtube": "YouTube",
+ "reddit": "Reddit",
+ "preferences_related_videos_label": "Näita sarnaseid videosid: ",
+ "preferences_vr_mode_label": "Interaktiivne 360-kraadine video (vajalik WebGL): ",
+ "preferences_dark_mode_label": "Teema: ",
+ "dark": "tume",
+ "light": "hele",
+ "preferences_category_subscription": "Tellimuse seaded",
+ "preferences_max_results_label": "Avalehel näidatavate videote arv: ",
+ "preferences_sort_label": "Sorteeri: ",
+ "published": "avaldatud",
+ "alphabetically": "tähestikulises järjekorras",
+ "alphabetically - reverse": "vastupidi tähestikulises järjekorras",
+ "channel name": "kanali nimi",
+ "preferences_unseen_only_label": "Näita ainult vaatamata videosid: ",
+ "Only show latest video from channel: ": "Näita ainult viimast videot: ",
+ "preferences_notifications_only_label": "Näita ainult teavitusi (kui neid on): ",
+ "Enable web notifications": "Luba veebiteavitused",
+ "`x` uploaded a video": "`x` laadis video üles",
+ "`x` is live": "`x` teeb otseülekannet",
+ "preferences_category_data": "Andme-eelistused",
+ "Clear watch history": "Puhasta vaatamisajalugu",
+ "Import/export data": "Impordi/ekspordi andmed",
+ "Change password": "Muuda salasõna",
+ "Watch history": "Vaatamisajalugu",
+ "Delete account": "Kustuta kasutaja",
+ "Save preferences": "Salvesta eelistused",
+ "Token": "Token",
+ "Import/export": "Imprort/eksport",
+ "unsubscribe": "loobu tellimusest",
+ "Subscriptions": "Tellimused",
+ "search": "otsi",
+ "Source available here.": "Allikas on kättesaadaval siin.",
+ "View privacy policy.": "Vaata privaatsuspoliitikat.",
+ "Public": "Avalik",
+ "Private": "Privaatne",
+ "View all playlists": "Vaata kõiki esitusloendeid",
+ "Updated `x` ago": "Uuendas `x` tagasi",
+ "Delete playlist `x`?": "Kustuta esitusloend `x`?",
+ "Delete playlist": "Kustuta esitusloend",
+ "Create playlist": "Loo esitlusloend",
+ "Title": "Pealkiri",
+ "Playlist privacy": "Esitusloendi privaatsus",
+ "Show more": "Näita rohkem",
+ "Show less": "Näita vähem",
+ "Watch on YouTube": "Vaata YouTube'is",
+ "search_message_no_results": "Tulemusi ei leitud.",
+ "search_message_change_filters_or_query": "Proovi otsingut laiendada või filtreid muuta.",
+ "Genre: ": "Žanr: ",
+ "License: ": "Litsents: ",
+ "Family friendly? ": "Peresõbralik? ",
+ "Shared `x`": "Jagas `x`",
+ "Premieres in `x`": "Esilinastub `x`",
+ "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Tundub, et oled JavaScripti välja lülitanud. Vajuta siia, et kommentaare vaadata; nende laadimine võib võtta natukene rohkem aega.",
+ "View Reddit comments": "Vaata Redditi kommentaare",
+ "Hide replies": "Peida vastused",
+ "Show replies": "Näita vastuseid",
+ "Incorrect password": "Vale salasõna",
+ "Login failed. This may be because two-factor authentication is not turned on for your account.": "Sisselogimine ei õnnestunud. Asi võib olla selles, et",
+ "Wrong answer": "Vale vastus",
+ "User ID is a required field": "Kasutaja ID on kohustuslik väli",
+ "Password is a required field": "Salasõna on kohustuslik väli",
+ "Wrong username or password": "Vale kasutajanimi või salasõna",
+ "Please sign in using 'Log in with Google'": "Palun kasutage 'Logi sisse Google'iga'",
+ "Password cannot be longer than 55 characters": "Salasõna ei tohi olla pikem kui 55 tähemärki",
+ "Password cannot be empty": "Salasõna ei tohi olla tühi",
+ "Please log in": "Palun logige sisse",
+ "channel:`x`": "kanal:`x`",
+ "Deleted or invalid channel": "Kanal on kustutatud või seda ei leitud",
+ "This channel does not exist.": "Sellist kanalit pole olemas.",
+ "comments_view_x_replies": "{{count}} vastus",
+ "comments_view_x_replies_plural": "{{count}} vastust",
+ "`x` ago": "`x` tagasi",
+ "Load more": "Laadi rohkem",
+ "Empty playlist": "Tühi esitusloend",
+ "Not a playlist.": "Tegu pole esitusloendiga.",
+ "Playlist does not exist.": "Seda esitusloendit pole olemas.",
+ "No such user": "Sellist kasutajat pole",
+ "English": "Inglise",
+ "English (United Kingdom)": "Inglise (Suurbritannia)",
+ "English (United States)": "Inglise (USA)",
+ "English (auto-generated)": "Inglise (automaatselt koostatud)",
+ "Afrikaans": "Afrikaani",
+ "Albanian": "Albaania",
+ "Arabic": "Araabia",
+ "Armenian": "Armeenia",
+ "Bangla": "Bengali",
+ "Basque": "Baski",
+ "Belarusian": "Valgevene",
+ "Bulgarian": "Bulgaaria",
+ "Burmese": "Birma",
+ "Cantonese (Hong Kong)": "Kantoni (Hong Konk)",
+ "Chinese (China)": "Hiina (Hiina)",
+ "Chinese (Hong Kong)": "Hiina (Hong Kong)",
+ "Chinese (Simplified)": "Hiina (lihtsustatud)",
+ "Chinese (Taiwan)": "Hiina (Taiwan)",
+ "Croatian": "Horvaatia",
+ "Czech": "Tšehhi",
+ "Danish": "Taani",
+ "Dutch": "Hollandi",
+ "Esperanto": "Esperanto",
+ "Estonian": "Eesti",
+ "Filipino": "Filipiini",
+ "Finnish": "Soome",
+ "French": "Prantsuse",
+ "French (auto-generated)": "Prantsuse (automaatne)",
+ "Dutch (auto-generated)": "Hollandi (automaatne)",
+ "Galician": "Kaliitsia",
+ "Georgian": "Gruusia",
+ "Haitian Creole": "Haiti kreool",
+ "Hausa": "Hausa",
+ "Hawaiian": "Havaii",
+ "Hebrew": "Heebrea",
+ "Hindi": "Hindi",
+ "Hungarian": "Ungari",
+ "Icelandic": "Islandi",
+ "Indonesian": "Indoneesia",
+ "Japanese (auto-generated)": "Jaapani (automaatne)",
+ "Kannada": "Kannada",
+ "Kazakh": "Kasahhi",
+ "Luxembourgish": "Luksemburgi",
+ "Macedonian": "Makedoonia",
+ "Malay": "Malai",
+ "Maltese": "Malta",
+ "Maori": "Maori",
+ "Marathi": "Marathi",
+ "Mongolian": "Mongoli",
+ "Nepali": "Nepaali",
+ "Norwegian Bokmål": "Norra (Bokmål)",
+ "Persian": "Pärsia",
+ "Polish": "Poola",
+ "Portuguese": "Portugali",
+ "Portuguese (auto-generated)": "Portugali (automaatne)",
+ "Portuguese (Brazil)": "Portugali (Brasiilia)",
+ "Romanian": "Rumeenia",
+ "Russian": "Vene",
+ "Russian (auto-generated)": "Vene (automaatne)",
+ "Scottish Gaelic": "Šoti (Gaeli)",
+ "Serbian": "Serbia",
+ "Slovak": "Slovaki",
+ "Slovenian": "Sloveeni",
+ "Somali": "Somaali",
+ "Spanish": "Hispaania",
+ "Spanish (auto-generated)": "Hispaania (automaatne)",
+ "Spanish (Latin America)": "Hispaania (Ladina-Ameerika)",
+ "Spanish (Mexico)": "Hispaania (Mehhiko)",
+ "Spanish (Spain)": "Hispaania (Hispaania)",
+ "Swahili": "Suahili",
+ "Swedish": "Rootsi",
+ "Tajik": "Tadžiki",
+ "Tamil": "Tamiili",
+ "Thai": "Tai",
+ "Turkish": "Türgi",
+ "Turkish (auto-generated)": "Türgi (automaatne)",
+ "Ukrainian": "Ukraina",
+ "Uzbek": "Usbeki",
+ "Vietnamese": "Vietnami",
+ "Vietnamese (auto-generated)": "Vietnami (automaatne)",
+ "generic_count_years": "{{count}} aasta",
+ "generic_count_years_plural": "{{count}} aastat",
+ "generic_count_months": "{{count}} kuu",
+ "generic_count_months_plural": "{{count}} kuud",
+ "generic_count_weeks": "{{count}} nädal",
+ "generic_count_weeks_plural": "{{count}} nädalat",
+ "generic_count_days": "{{count}} päev",
+ "generic_count_days_plural": "{{count}} päeva",
+ "generic_count_hours": "{{count}} tund",
+ "generic_count_hours_plural": "{{count}} tundi",
+ "generic_count_minutes": "{{count}} minut",
+ "generic_count_minutes_plural": "{{count}} minutit",
+ "Popular": "Populaarne",
+ "Search": "Otsi",
+ "Top": "Top",
+ "About": "Leheküljest",
+ "preferences_locale_label": "Keel: ",
+ "View as playlist": "Vaata esitusloendina",
+ "Movies": "Filmid",
+ "Download as: ": "Laadi kui: ",
+ "(edited)": "(muudetud)",
+ "`x` marked it with a ❤": "`x` märkis ❤",
+ "Audio mode": "Audiorežiim",
+ "Video mode": "Videorežiim",
+ "search_filters_date_label": "Üleslaadimise kuupäev",
+ "search_filters_date_option_none": "Ükskõik mis kuupäev",
+ "search_filters_date_option_today": "Täna",
+ "search_filters_date_option_week": "Sel nädalal",
+ "search_filters_date_option_hour": "Viimasel tunnil",
+ "search_filters_date_option_month": "Sel kuul",
+ "search_filters_date_option_year": "Sel aastal",
+ "search_filters_type_label": "Tüüp",
+ "search_filters_type_option_all": "Ükskõik mis tüüp",
+ "search_filters_duration_label": "Kestus",
+ "search_filters_type_option_show": "Näita",
+ "search_filters_duration_option_none": "Ükskõik mis kestus",
+ "search_filters_duration_option_short": "Lühike (alla 4 minuti)",
+ "search_filters_duration_option_medium": "Keskmine (4 - 20 minutit)",
+ "search_filters_duration_option_long": "Pikk (üle 20 minuti)",
+ "search_filters_features_option_live": "Otseülekanne",
+ "search_filters_features_option_four_k": "4K",
+ "search_filters_features_option_hd": "HD",
+ "search_filters_features_option_subtitles": "Subtiitrid",
+ "search_filters_features_option_location": "Asukoht",
+ "search_filters_sort_label": "Sorteeri",
+ "search_filters_sort_option_views": "Vaatamiste arv",
+ "next_steps_error_message": "Pärast mida võiksite proovida: ",
+ "videoinfo_started_streaming_x_ago": "Alustas otseülekannet `x` tagasi",
+ "Yes": "Jah",
+ "generic_views_count": "{{count}} vaatamine",
+ "generic_views_count_plural": "{{count}} vaatamist",
+ "Import NewPipe subscriptions (.json)": "Impordi tellimused NewPipe'ist (.json)",
+ "No": "Ei",
+ "preferences_region_label": "Riik: ",
+ "View YouTube comments": "Vaata YouTube'i kommentaare",
+ "preferences_extend_desc_label": "Ava video kirjeldus automaatselt: ",
+ "German (auto-generated)": "Saksa (automaatne)",
+ "Italian": "Itaalia",
+ "preferences_player_style_label": "Mängija stiil: ",
+ "subscriptions_unseen_notifs_count": "{{count}} lugemata teavitus",
+ "subscriptions_unseen_notifs_count_plural": "{{count}} lugemata teavitust",
+ "View more comments on Reddit": "Vaata teisi kommentaare Redditis",
+ "Only show latest unwatched video from channel: ": "Näita ainult viimast vaatamata videot: ",
+ "tokens_count": "{{count}} token",
+ "tokens_count_plural": "{{count}} tokenit",
+ "Log out": "Logi välja",
+ "Premieres `x`": "Linastub`x`",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vaata `x` kommentaari",
+ "": "Vaata `x` kommentaare"
+ },
+ "Khmer": "Khmeeri",
+ "Unable to log in, make sure two-factor authentication (Authenticator or SMS) is turned on.": "Sisselogimine ei õnnestunud. Kontrollige, kas two-factor authentication (Authenticator või SMS) on sisselülitatud.",
+ "Invalid TFA code": "Vale TFA-kood",
+ "Bosnian": "Bosnia",
+ "Corsican": "Korsika",
+ "Javanese": "Jaava",
+ "Lithuanian": "Leedu",
+ "Videos": "Videod",
+ "Community": "Kogukond",
+ "CAPTCHA is a required field": "CAPTCHA on kohustuslik väli",
+ "comments_points_count": "{{count}} punkt",
+ "comments_points_count_plural": "{{count}} punkti",
+ "Chinese": "Hiina",
+ "German": "Saksa",
+ "Indonesian (auto-generated)": "Indoneesia (automaatne)",
+ "Italian (auto-generated)": "Itaalia (automaatne)",
+ "Kyrgyz": "Kirkiisi",
+ "Latin": "Ladina",
+ "generic_count_seconds": "{{count}} sekund",
+ "generic_count_seconds_plural": "{{count}} sekundit",
+ "Catalan": "Katalaani",
+ "Chinese (Traditional)": "Hiina (traditsiooniline)",
+ "Greek": "Kreeka",
+ "Kurdish": "Kurdi",
+ "Latvian": "Läti",
+ "Irish": "Iiri",
+ "Korean": "Korea",
+ "Japanese": "Jaapani",
+ "Korean (auto-generated)": "Korea (automaatne)",
+ "Music": "Muusika",
+ "Playlists": "Esitusloendid",
+ "search_filters_type_option_video": "Video",
+ "search_filters_sort_option_date": "Üleslaadimise kuupäev",
+ "Current version: ": "Praegune versioon: ",
+ "footer_documentation": "Dokumentatsioon",
+ "Gaming": "Mängud",
+ "News": "Uudised",
+ "Download": "Laadi alla",
+ "search_filters_title": "Filtrid",
+ "search_filters_type_option_channel": "Kanal",
+ "search_filters_type_option_playlist": "Esitusloend",
+ "search_filters_type_option_movie": "Film",
+ "next_steps_error_message_go_to_youtube": "Minna YouTube'i",
+ "next_steps_error_message_refresh": "Laadida uuesti",
+ "footer_donate_page": "Anneta",
+ "videoinfo_watch_on_youTube": "Vaata YouTube'is"
+}
diff --git a/locales/hi.json b/locales/hi.json
index 0fc35b25..32ae7823 100644
--- a/locales/hi.json
+++ b/locales/hi.json
@@ -462,7 +462,7 @@
"preferences_save_player_pos_label": "यहाँ से चलाना शुरू करें: ",
"crash_page_you_found_a_bug": "शायद आपको Invidious में कोई बग नज़र आ गया है!",
"videoinfo_youTube_embed_link": "एम्बेड करें",
- "videoinfo_invidious_embed_link": "एम्बोड करने की कड़ी",
+ "videoinfo_invidious_embed_link": "एम्बेड करने की कड़ी",
"download_subtitles": "उपशीर्षक - `x` (.vtt)",
"user_created_playlists": "बनाए गए `x` प्लेलिस्ट्स",
"user_saved_playlists": "सहेजे गए `x` प्लेलिस्ट्स",
diff --git a/locales/pt-BR.json b/locales/pt-BR.json
index e54e20bd..df149564 100644
--- a/locales/pt-BR.json
+++ b/locales/pt-BR.json
@@ -461,7 +461,7 @@
"search_filters_date_option_none": "Qualquer data",
"Dutch (auto-generated)": "Holandês (gerado automaticamente)",
"French (auto-generated)": "Francês (gerado automaticamente)",
- "Indonesian (auto-generated)": "indonésio (gerado automaticamente)",
+ "Indonesian (auto-generated)": "Indonésio (gerado automaticamente)",
"Italian (auto-generated)": "Italiano (gerado automaticamente)",
"Spanish (auto-generated)": "Espanhol (gerado automaticamente)",
"Spanish (Mexico)": "Espanhol (México)",
diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr
index 83074098..d8496978 100644
--- a/src/invidious/comments.cr
+++ b/src/invidious/comments.cr
@@ -609,6 +609,10 @@ end
def content_to_comment_html(content, video_id : String? = "")
html_array = content.map do |run|
+ # Sometimes, there is an empty element.
+ # See: https://github.com/iv-org/invidious/issues/3096
+ next if run.as_h.empty?
+
text = HTML.escape(run["text"].as_s)
if run["navigationEndpoint"]?
diff --git a/src/invidious/helpers/i18n.cr b/src/invidious/helpers/i18n.cr
index 9d3c4e8b..fd86594c 100644
--- a/src/invidious/helpers/i18n.cr
+++ b/src/invidious/helpers/i18n.cr
@@ -10,6 +10,7 @@ LOCALES_LIST = {
"en-US" => "English", # English
"eo" => "Esperanto", # Esperanto
"es" => "Español", # Spanish
+ "et" => "Eesti keel", # Estonian
"fa" => "فارسی", # Persian
"fi" => "Suomi", # Finnish
"fr" => "Français", # French
diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr
index 75475430..7280de4f 100644
--- a/src/invidious/routes/watch.cr
+++ b/src/invidious/routes/watch.cr
@@ -306,7 +306,7 @@ module Invidious::Routes::Watch
download_widget = JSON.parse(selection)
extension = download_widget["ext"].as_s
- filename = "#{video_id}-#{title}.#{extension}"
+ filename = "#{title}-#{video_id}.#{extension}"
# Delete the now useless URL parameters
env.params.body.delete("id")