aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--package-lock.json5
-rw-r--r--package.json1
-rw-r--r--public/_locales/cs/messages.json165
-rw-r--r--public/_locales/de/messages.json19
-rw-r--r--public/_locales/en/messages.json12
-rw-r--r--public/_locales/es/messages.json3
-rw-r--r--public/_locales/fa/messages.json88
-rw-r--r--public/_locales/fi/messages.json183
-rw-r--r--public/_locales/id/messages.json15
-rw-r--r--public/_locales/it/messages.json3
-rw-r--r--public/_locales/ko/messages.json314
-rw-r--r--public/_locales/nl/messages.json3
-rw-r--r--public/_locales/pl/messages.json11
-rw-r--r--public/_locales/ro/messages.json3
-rw-r--r--public/_locales/ru/messages.json3
-rw-r--r--public/_locales/ta/messages.json155
-rw-r--r--public/_locales/uk/messages.json255
-rw-r--r--public/options/options.html34
-rw-r--r--src/config.ts5
-rw-r--r--src/content.ts70
-rw-r--r--src/utils.ts15
21 files changed, 1319 insertions, 43 deletions
diff --git a/package-lock.json b/package-lock.json
index 5cd00a3d..7e806d7e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10494,6 +10494,11 @@
"traverse": "0.4.x"
}
},
+ "js-sha256": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz",
+ "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA=="
+ },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
diff --git a/package.json b/package.json
index b2b0ddbf..4a6b0783 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"babel-loader": "^8.0.6",
"babel-preset-env": "^1.7.0",
"concurrently": "^5.1.0",
+ "js-sha256": "^0.9.0",
"react": "^16.12.0",
"react-dom": "^16.12.0"
},
diff --git a/public/_locales/cs/messages.json b/public/_locales/cs/messages.json
index 5ed3753a..a86c8973 100644
--- a/public/_locales/cs/messages.json
+++ b/public/_locales/cs/messages.json
@@ -9,5 +9,170 @@
},
"400": {
"message": "Server hlásí, že tento požadavek je neplatný"
+ },
+ "429": {
+ "message": "Pro toto video jste přidali příliš mnoho příspěvků. Jste si jistí, že jich je tolik?"
+ },
+ "409": {
+ "message": "Tento příspěvek byl již přidán dříve"
+ },
+ "channelWhitelisted": {
+ "message": "Kanál přidán do výjimek!"
+ },
+ "Segment": {
+ "message": "segment"
+ },
+ "Segments": {
+ "message": "segmenty"
+ },
+ "upvoteButtonInfo": {
+ "message": "Hlasovat pro tento příspěvek"
+ },
+ "reportButtonTitle": {
+ "message": "Nahlásit"
+ },
+ "reportButtonInfo": {
+ "message": "Nahlásit tento příspěvek jako nesprávný."
+ },
+ "Dismiss": {
+ "message": "Zrušit"
+ },
+ "Loading": {
+ "message": "Načítání..."
+ },
+ "Mins": {
+ "message": "Minuty"
+ },
+ "Secs": {
+ "message": "Sekundy"
+ },
+ "Hide": {
+ "message": "Nikdy nezobrazovat"
+ },
+ "hitGoBack": {
+ "message": "Stiskněte \"Vrátit se\" aby jste se dostali do místa před přeskočením."
+ },
+ "unskip": {
+ "message": "Vrátit se"
+ },
+ "reskip": {
+ "message": "Znovu přeskočit"
+ },
+ "paused": {
+ "message": "Pozastaveno"
+ },
+ "manualPaused": {
+ "message": "Časovač zastaven"
+ },
+ "confirmMSG": {
+ "message": "Chcete-li upravit nebo odstranit jednotlivé hodnoty, klikněte na tlačítko informace, nebo otevřete vyskakovací okno rozšíření kliknutím na ikonu rozšíření v pravém horním rohu."
+ },
+ "clearThis": {
+ "message": "Jste si jistí, že to chcete vymazat?\n\n"
+ },
+ "Unknown": {
+ "message": "Při přidávání vašeho příspěvku došlo k chybě. Zkuste to prosím později."
+ },
+ "sponsorFound": {
+ "message": "Toto video má segmenty v databázi!"
+ },
+ "sponsor404": {
+ "message": "Nebyly nalezeny žádné segmenty"
+ },
+ "sponsorStart": {
+ "message": "Segment nyní začíná"
+ },
+ "sponsorEnd": {
+ "message": "Segment nyní končí"
+ },
+ "noVideoID": {
+ "message": "Na této záložce nebylo nalezeno žádné YouTube video. Pokud jste si jistí, že tato záložka je YouTube, zavřete toto vyskakovací okno a znovu jej otevřete. Pokud to nepomůže, zkuste záložku znovu načíst."
+ },
+ "success": {
+ "message": "Úspěch!"
+ },
+ "voted": {
+ "message": "Hlasováno!"
+ },
+ "serverDown": {
+ "message": "Zdá se, že server nefunguje. Obraťte se okamžitě na vývojáře."
+ },
+ "connectionError": {
+ "message": "Došlo k chybě připojení. Kód chyby: "
+ },
+ "wantToSubmit": {
+ "message": "Chcete odeslat segmenty pro video s id"
+ },
+ "leftTimes": {
+ "message": "Zdá se, že některé segmenty jste nechali neodeslané. Vraťte se na danou stránku a odešlete je (nebyly vymazány)."
+ },
+ "clearTimes": {
+ "message": "Vymazat segmenty"
+ },
+ "openPopup": {
+ "message": "Otevřít vyskakovací okno SponsorBlock"
+ },
+ "closePopup": {
+ "message": "Zavřít vyskakovací okno"
+ },
+ "SubmitTimes": {
+ "message": "Odeslat segmenty"
+ },
+ "submitCheck": {
+ "message": "Opravdu to chcete odeslat?"
+ },
+ "whitelistChannel": {
+ "message": "Přidat kanál do výjimek"
+ },
+ "removeFromWhitelist": {
+ "message": "Odebrat kanál z výjimek"
+ },
+ "voteOnTime": {
+ "message": "Hlasovat pro segment"
+ },
+ "soFarUHSubmited": {
+ "message": "Zatím jste přidali"
+ },
+ "savedPeopleFrom": {
+ "message": "Lidem jste ušetřili "
+ },
+ "viewLeaderboard": {
+ "message": "Zobrazit žebříček"
+ },
+ "here": {
+ "message": "zde"
+ },
+ "recordTimesDescription": {
+ "message": "Stiskněte tlačítko níže, když segment začne a skončí, k nahrání a uložení do databáze."
+ },
+ "popupHint": {
+ "message": "Tip: Pokud je video aktivní, stiskněte středník pro nahlášení začátku/konce segmentu, a apostrof pro odeslání. (Klávesy lze změnit v nastavení)"
+ },
+ "clearTimesButton": {
+ "message": "Vymazat časy"
+ },
+ "submitTimesButton": {
+ "message": "Odeslat časy"
+ },
+ "publicStats": {
+ "message": "Toto se používá ve veřejném žebříčku k ukázání jak moc jste přispěli. Podívejte se na něj"
+ },
+ "setUsername": {
+ "message": "Nastavit uživatelské jméno"
+ },
+ "discordAdvert": {
+ "message": "Připojte se k oficiálnímu Discord serveru k podání návrhů a zpětné vazby!"
+ },
+ "hideThis": {
+ "message": "Skrýt"
+ },
+ "Options": {
+ "message": "Nastavení"
+ },
+ "showButtons": {
+ "message": "Zobrazit tlačítka na YouTube přehrávači"
+ },
+ "hideButtons": {
+ "message": "Skrýt tlačítka na YouTube přehrávači"
}
}
diff --git a/public/_locales/de/messages.json b/public/_locales/de/messages.json
index 97dae6e0..955cdfab 100644
--- a/public/_locales/de/messages.json
+++ b/public/_locales/de/messages.json
@@ -143,10 +143,10 @@
"message": "hier"
},
"recordTimesDescription": {
- "message": "Klicken Sie auf die Schaltfläche unten, wenn das Segment startet und endet, um es in die Datenbank einzusenden."
+ "message": "Klicke auf die Schaltfläche unten, wenn das Segment startet und endet, um es in die Datenbank einzusenden."
},
"popupHint": {
- "message": "Hinweis: Drücken Sie die Semikolon-Taste während Sie auf ein Video fokussiert sind, um das Start/Ende eines Segments zu melden und das einzureichende Zitat anzugeben. (Dies kann in den Optionen geändert werden)"
+ "message": "Hinweis: Drücke die Semikolon-Taste während du auf ein Video fokussiert bist, um das Start/Ende eines Segments zu melden und das einzureichende Zitat anzugeben. (Dies kann in den Optionen geändert werden)"
},
"clearTimesButton": {
"message": "Zeiten löschen"
@@ -176,7 +176,7 @@
"message": "Knöpfe in YouTube-Leiste verstecken"
},
"hideButtonsDescription": {
- "message": "Die Einstellung versteckt den Einsende-Knopf in der Youtube-Leiste. Ich kann verstehen, weshalb manchen diese Funktion\n an dieser Stelle stört. Stattdessen kann dafür dieses Pop-up genutzt werden. Um die transparente Benachrichtigung zu verstecken, klicke auf den \"Verstecken\"-Knopf \n der Benachrichtigung. Diese Einstellungen können wieder rückgängig gemacht werden."
+ "message": "Versteckt die Schaltflächen im YouTube-Player, um Segmente einzusenden."
},
"showInfoButton": {
"message": "Zeige Info-Knopf in Youtube-Leiste"
@@ -229,10 +229,10 @@
"message": "Tastenkombination für das Starten eines Segments festlegen"
},
"setSubmitKeybind": {
- "message": "Segment einsenden Taste festlegen"
+ "message": "Tastenkombination für das Einsenden festlegen"
},
"keybindDescription": {
- "message": "Taste drücken, um festzulegen"
+ "message": "Zum festlegen eine Taste drucken"
},
"keybindDescriptionComplete": {
"message": "Die Taste wurde festgelegt auf: "
@@ -241,10 +241,10 @@
"message": "Verbindungsüberschreibung. Überprüfe deine Internetverbindung. Bist du mit dem Internet verbunden, ist der Server wahrscheinlich offline."
},
"disableSkipping": {
- "message": "SponsorBlock ausschalten"
+ "message": "SponsorBlock deaktivieren"
},
"enableSkipping": {
- "message": "SponsorBlock einschalten"
+ "message": "SponsorBlock aktivieren"
},
"yourWork": {
"message": "Deine Statistik",
@@ -263,7 +263,7 @@
"message": "Übersprungen"
},
"disableAutoSkip": {
- "message": "Auto-Überspringen deaktivieren"
+ "message": "Automatisches Überspringen deaktivieren"
},
"enableAutoSkip": {
"message": "Automatisches Überspringen aktivieren"
@@ -436,6 +436,9 @@
"preview": {
"message": "Vorschau"
},
+ "inspect": {
+ "message": "Überprüfen"
+ },
"edit": {
"message": "Bearbeiten"
},
diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json
index a80ca27e..e3e67a82 100644
--- a/public/_locales/en/messages.json
+++ b/public/_locales/en/messages.json
@@ -202,6 +202,18 @@
"whatViewTracking": {
"message": "This feature tracks which segments you have skipped to let users know how much their submission has helped others and used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message to the server each time you skip a segment. Hopefully most people don't change this setting so that the view numbers are accurate. :)"
},
+ "enableQueryByHashPrefix": {
+ "message": "Query By Hash Prefix"
+ },
+ "whatQueryByHashPrefix": {
+ "message": "Instead of requesting segments from the server using the videoID, the first 4 characters of the hash of the videoID are sent. This server will send back data for all videos with similar hashes."
+ },
+ "enableRefetchWhenNotFound": {
+ "message": "Refetch Segments On New Videos"
+ },
+ "whatRefetchWhenNotFound": {
+ "message": "If the video is new, and there are no segments found, it will keep refetching every few minutes while you watch."
+ },
"showNotice": {
"message": "Show Notice Again"
},
diff --git a/public/_locales/es/messages.json b/public/_locales/es/messages.json
index 091d9f25..b8547f96 100644
--- a/public/_locales/es/messages.json
+++ b/public/_locales/es/messages.json
@@ -436,6 +436,9 @@
"preview": {
"message": "Vista Previa"
},
+ "inspect": {
+ "message": "Inspeccionar"
+ },
"edit": {
"message": "Editar"
},
diff --git a/public/_locales/fa/messages.json b/public/_locales/fa/messages.json
index 0967ef42..d364acfc 100644
--- a/public/_locales/fa/messages.json
+++ b/public/_locales/fa/messages.json
@@ -1 +1,87 @@
-{}
+{
+ "fullName": {
+ "message": "اسپانسربلاک برای یوتیوب - اسپانسر ها را رد کنید",
+ "description": "Name of the extension."
+ },
+ "400": {
+ "message": "سرور گفت که این درخواست نامعتبر است"
+ },
+ "409": {
+ "message": "این قبلاً ثبت شده است"
+ },
+ "channelWhitelisted": {
+ "message": "کانال در لیست سفید قرار گرفت!"
+ },
+ "Segment": {
+ "message": "بخش"
+ },
+ "Segments": {
+ "message": "بخش"
+ },
+ "upvoteButtonInfo": {
+ "message": "امتیاز دادن به این گزارش ثبت‌شده"
+ },
+ "reportButtonTitle": {
+ "message": "گزارش"
+ },
+ "Dismiss": {
+ "message": "رد کردن"
+ },
+ "Loading": {
+ "message": "درحال بارگذاری..."
+ },
+ "Mins": {
+ "message": "دقیقه"
+ },
+ "Secs": {
+ "message": "ثانیه"
+ },
+ "Hide": {
+ "message": "هرگز نمایش نده"
+ },
+ "hitGoBack": {
+ "message": "کلید عدم رد کردن را بزنید تا به جایی که بودید برگردید."
+ },
+ "unskip": {
+ "message": "عدم رد کردن"
+ },
+ "reskip": {
+ "message": "دوباره رد کردن"
+ },
+ "paused": {
+ "message": "وقفه شده"
+ },
+ "manualPaused": {
+ "message": "شمارنده متوقف شد"
+ },
+ "clearThis": {
+ "message": "مطمئن هستید که میخواهید این را حذف کنید؟\n\n"
+ },
+ "Unknown": {
+ "message": "اشکالی در ثبت کردن زمان های ارسالی شما پیش آمد. لطفا بعداً دوباره تلاش کنید."
+ },
+ "sponsorStart": {
+ "message": "بخش اینجا شروع می‌شود"
+ },
+ "sponsorEnd": {
+ "message": "بخش اینجا پایان می‌یابد"
+ },
+ "success": {
+ "message": "موفقیت!"
+ },
+ "voted": {
+ "message": "گزارش داده شد!"
+ },
+ "serverDown": {
+ "message": "به‌نظر می‌رسد که ارتباط سرور قطع شده است. با توسعه‌دهنده سریعاً تماس بگیرید."
+ },
+ "wantToSubmit": {
+ "message": "آی می‌خواهید که گزارش را ثبت کنید برای ویدیوی"
+ },
+ "closePopup": {
+ "message": "بستن پنجره"
+ },
+ "here": {
+ "message": "اینجا"
+ }
+}
diff --git a/public/_locales/fi/messages.json b/public/_locales/fi/messages.json
index e8d1a8a8..15b54961 100644
--- a/public/_locales/fi/messages.json
+++ b/public/_locales/fi/messages.json
@@ -3,6 +3,10 @@
"message": "SponsorBlock YouTubelle - Ohita sponsoroinnit",
"description": "Name of the extension."
},
+ "Description": {
+ "message": "Ohita sponsoroitu mainonta, tilausten kerjääminen ja muuta YouTube-videoissa. Ilmoita katsomasi videoiden sponsorit säästääksesi muilta aikaa.",
+ "description": "Description of the extension."
+ },
"400": {
"message": "Palvelin sanoi tämän pyynnön olevan virheellinen"
},
@@ -15,6 +19,12 @@
"channelWhitelisted": {
"message": "Kanava lisätty valkoiselle listalle!"
},
+ "Segment": {
+ "message": "segmentti"
+ },
+ "Segments": {
+ "message": "segmentit"
+ },
"upvoteButtonInfo": {
"message": "Äänestä tätä lähetystä"
},
@@ -54,12 +64,27 @@
"manualPaused": {
"message": "Ajastin pysäytetty"
},
+ "confirmMSG": {
+ "message": "Muokataksesi tai poistaaksesi yksittäisiä arvoja, klikkaa info-painiketta tai avaa laajennuksen ponnahdusikkuna klikkaamalla laajennuksen kuvaketta oikeassa yläkulmassa."
+ },
"clearThis": {
"message": "Haluatko varmasti poistaa tämän?\n\n"
},
"Unknown": {
"message": "Sponsorointiaikoja lähetettäessä tapahtui virhe, yritä myöhemmin uudelleen."
},
+ "sponsorFound": {
+ "message": "Tällä videolla on segmenttejä tietokannassa!"
+ },
+ "sponsor404": {
+ "message": "Segmenttejä ei löytynyt"
+ },
+ "sponsorStart": {
+ "message": "Segmentti Alkaa Nyt"
+ },
+ "sponsorEnd": {
+ "message": "Segmentti Päättyy Nyt"
+ },
"noVideoID": {
"message": "Välilehdeltä ei löytynyt YouTube-videota. Jos olet varma, että tämä on YouTube-välilehti, sulje tämä ponnahdusikkuna ja avaa se uudelleen. Jos sekään ei toimi, yritä ladata välilehti uudelleen."
},
@@ -75,9 +100,24 @@
"connectionError": {
"message": "Yhteysvirhe on tapahtunut. Virhekoodi: "
},
+ "wantToSubmit": {
+ "message": "Haluatko lähettää segmentit videotunnukselle"
+ },
+ "leftTimes": {
+ "message": "Näyttää siltä, että joitakin segmenttejä ei ole vielä lähetetty. Siirry takaisin sivulle lähettääksesi ne (niitä ei poisteta)."
+ },
+ "clearTimes": {
+ "message": "Tyhjennä Segmentit"
+ },
"openPopup": {
"message": "Avaa SponsorBlock-ponnahdusikkuna"
},
+ "closePopup": {
+ "message": "Sulje Ponnahdus-ikkuna"
+ },
+ "SubmitTimes": {
+ "message": "Lähetä Segmentit"
+ },
"submitCheck": {
"message": "Haluatko varmasti lähettää tämän?"
},
@@ -87,6 +127,9 @@
"removeFromWhitelist": {
"message": "Poista kanava valkoiselta listalta"
},
+ "voteOnTime": {
+ "message": "Äänestä Segmenttiä"
+ },
"soFarUHSubmited": {
"message": "Tähän mennessä, olet lähettänyt"
},
@@ -99,15 +142,27 @@
"here": {
"message": "tässä"
},
+ "recordTimesDescription": {
+ "message": "Napsauta alla olevaa painiketta, kun segmentti alkaa ja päättyy tallentaaksesi ja lähettääksesi sen tietokantaan."
+ },
+ "popupHint": {
+ "message": "Vihje: Paina puolipisteen näppäintä kun video on kohdennettu ilmoittaaksesi segmentin alku/loppu ja viesti lähetettäväksi. (Tämän voi muuttaa asetuksissa)"
+ },
"clearTimesButton": {
"message": "Tyhjennä ajat"
},
"submitTimesButton": {
"message": "Lähetä ajat"
},
+ "publicStats": {
+ "message": "Tätä käytetään julkisella tilastosivulla näyttääksesi kuinka paljon olet osallistunut. Näytä"
+ },
"setUsername": {
"message": "Aseta käyttäjänimi"
},
+ "discordAdvert": {
+ "message": "Liity mukaan viralliseen discord-palvelimeen, jotta voit antaa ehdotuksia ja palautetta!"
+ },
"hideThis": {
"message": "Piilota tämä"
},
@@ -141,6 +196,12 @@
"whatDeleteButton": {
"message": "Tämä on YouTuben soittimen painike, joka poistaa kaikki kyseisen videon sponsorointikohdat, joita et ole vielä lähettänyt."
},
+ "enableViewTracking": {
+ "message": "Ota Ohitusten Lukumäärän Seuranta Käyttöön"
+ },
+ "showNotice": {
+ "message": "Näytä Huomautus Uudelleen"
+ },
"website": {
"message": "Sivusto",
"description": "Used on Firefox Store Page"
@@ -149,9 +210,29 @@
"message": "Lähdekoodi",
"description": "Used on Firefox Store Page"
},
+ "noticeUpdate": {
+ "message": "Ilmoitus on päivitetty!",
+ "description": "The first line of the message displayed after the notice was upgraded."
+ },
+ "noticeUpdate2": {
+ "message": "Jos et vieläkään pidä siitä, paina \"älä koskaan näytä\" -painiketta.",
+ "description": "The second line of the message displayed after the notice was upgraded."
+ },
+ "setStartSponsorShortcut": {
+ "message": "Aseta näppäin segmentin aloittamiseen näppäimistössä"
+ },
+ "setSubmitKeybind": {
+ "message": "Aseta näppäin tietojen lähetykseen"
+ },
"keybindDescription": {
"message": "Valitse näppäin painamalla sitä"
},
+ "keybindDescriptionComplete": {
+ "message": "Näppäinmääritys on asetettu näppäimeen: "
+ },
+ "0": {
+ "message": "Yhteyden aikakatkaisu. Tarkista internet-yhteytesi. Jos internetyhteytesi toimii, palvelin on todennäköisesti ylikuormittunut tai alhaalla."
+ },
"disableSkipping": {
"message": "Poista Sponsorblock käytöstä"
},
@@ -162,6 +243,9 @@
"message": "Sinun työsi",
"description": "Used to describe the section that will show you the statistics from your submissions."
},
+ "502": {
+ "message": "Palvelin näyttää olevan ylikuormitettu. Yritä uudelleen muutaman sekunnin kuluttua."
+ },
"errorCode": {
"message": "Virhekoodi: "
},
@@ -177,6 +261,9 @@
"enableAutoSkip": {
"message": "Ota automaattinen ohitus käyttöön"
},
+ "audioNotification": {
+ "message": "Äänellinen Ilmoitus Ohitettaessa"
+ },
"youHaveSkipped": {
"message": "Olet ohittanut "
},
@@ -207,9 +294,24 @@
"setUserID": {
"message": "Aseta UserID"
},
+ "createdBy": {
+ "message": "Luonut"
+ },
+ "autoSkip": {
+ "message": "Ohita Automaattisesti"
+ },
+ "keybindCurrentlySet": {
+ "message": ". Tällä hetkellä se on asetettu:"
+ },
"supportInvidious": {
"message": "Tue Invidious:ta"
},
+ "supportInvidiousDescription": {
+ "message": "Invidious (invidio.us) on kolmannen osapuolen YouTube-ohjelmisto. Jotta voit ottaa käyttöön tuen, sinun täytyy hyväksyä lisäkäyttöoikeudet. Tämä EI toimi incognitossa Chromessa ja muissa Chromiumin versioissa."
+ },
+ "optionsInfo": {
+ "message": "Ota käyttöön Invidious tuki, poista käytöstä automaattinen ohitus, piilota painikkeet ja muuta."
+ },
"addInvidiousInstance": {
"message": "Lisää Invidious-instanssi"
},
@@ -231,12 +333,18 @@
"showUploadButton": {
"message": "Näytä lähetä-painike"
},
+ "customServerAddress": {
+ "message": "SponsorBlock Palvelimen Osoite"
+ },
"save": {
"message": "Tallenna"
},
"reset": {
"message": "Nollaa"
},
+ "customAddressError": {
+ "message": "Tämä osoite ei ole oikeassa muodossa. Varmista, että sinulla on http:// tai http:// alussa eikä perässä kauttaviivoja."
+ },
"mobileUpdateInfo": {
"message": "m.youtube.com-osoitetta tuetaan nyt"
},
@@ -264,6 +372,9 @@
"edit": {
"message": "Muokkaa"
},
+ "copyDebugInformation": {
+ "message": "Kopioi Vianetsintätiedot Leikepöydälle"
+ },
"copyDebugInformationFailed": {
"message": "Kirjoittaminen leikepöydälle epäonnistui"
},
@@ -289,24 +400,59 @@
"category_music_offtopic": {
"message": "Musiikki: muussa kuin Musiikki-osiossa"
},
+ "category_music_offtopic_short": {
+ "message": "Ei-Musiikki"
+ },
"category_livestream_messages": {
"message": "Livestream: lahjoituksen/viestin lukeminen"
},
+ "category_livestream_messages_short": {
+ "message": "Viestin Lukeminen"
+ },
"disable": {
"message": "Poista käytöstä"
},
"manualSkip": {
"message": "Manuaalinen ohitus"
},
+ "showOverlay": {
+ "message": "Näytä Liukusäätimessä"
+ },
+ "colorFormatIncorrect": {
+ "message": "Väriformaattisi on muotoiltu väärin. Sen pitäisi olla 3 tai 6 numeroinen hex-koodi, jossa on risuaita alussa."
+ },
+ "previewColor": {
+ "message": "Esikatsele Väri",
+ "description": "Referring to submissions that have not been sent to the server yet."
+ },
+ "seekBarColor": {
+ "message": "Siirtymispalkin Väri"
+ },
+ "category": {
+ "message": "Kategoria"
+ },
+ "skipOption": {
+ "message": "Ohitusvalinta",
+ "description": "Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
+ },
"enableTestingServer": {
"message": "Ota betatestauspalvelin käyttöön"
},
+ "whatEnableTestingServer": {
+ "message": "Lähetyksiäsi ja ääniäsi EI LASKETA pääpalvelimella. Käytä tätä vain testaamiseen."
+ },
"bracketNow": {
"message": "(Nyt)"
},
"moreCategories": {
"message": "Lisää kategorioita"
},
+ "chooseACategory": {
+ "message": "Valitse kategoria"
+ },
+ "youMustSelectACategory": {
+ "message": "Sinun täytyy valita kategoria kaikille segmenteille, jota olet lähettämässä!"
+ },
"bracketEnd": {
"message": "(Päättyy)"
},
@@ -319,13 +465,50 @@
"channelDataNotFound": {
"message": "Kanavatunnusta ei ole vielä ladattu."
},
+ "adblockerIssue": {
+ "message": "Näyttää siltä, että jokin estää SponsorBlockin kykyä saada videotietoja. Tämä on luultavasti mainosten esto-ohjelmasi. Tarkista https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
+ },
+ "itCouldBeAdblockerIssue": {
+ "message": "Jos tämä toistuu, mainosten esto-ohjelmasi voi olla syynä. Katso https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
+ },
+ "forceChannelCheck": {
+ "message": "Pakota Kanavan Tarkistus Ennen Ohittamista"
+ },
+ "whatForceChannelCheck": {
+ "message": "Oletuksena segmentit ohitetaan heti ennen kuin kanava tiedetään. Oletuksena jotkut segmentit videon alussa saattavat tulla ohitetuiksi sallituilla kanavilla. Tämän vaihtoehdon ottaminen käyttöön estää sen, mutta kaikki ohitukset viivästyvät hieman, koska kanavatunnuksen saaminen voi kestää jonkin aikaa. Tämä viive saattaa olla huomaamaton, jos sinulla on nopea internetyhteys."
+ },
+ "forceChannelCheckPopup": {
+ "message": "Harkitse \"Pakota Kanavan Tarkistus Ennen Ohittamista\" käyttöön ottaminen"
+ },
"downvoteDescription": {
"message": "Virheellinen/väärä aika"
},
"incorrectCategory": {
"message": "Väärä kategoria"
},
+ "nonMusicCategoryOnMusic": {
+ "message": "Tämä video on luokiteltu musiikiksi. Oletko varma, että siinä on sponsori? Jos tämä on sen sijaan \"musiikiton segmentti\", avaa laajennuksen asetukset ja ota tämä kategoria käyttöön. Sitten voit lähettää tämän segmentin oikeassa kategoriassa. Lue ohjeistus, jos on lisää kysyttävää."
+ },
"multipleSegments": {
"message": "Useita kohtia"
+ },
+ "guidelines": {
+ "message": "Säännökset"
+ },
+ "readTheGuidelines": {
+ "message": "Lue Säännökset!!",
+ "description": "Show the first time they submit or if they are \"high risk\""
+ },
+ "categoryUpdate1": {
+ "message": "Kategoriat ovat täällä!"
+ },
+ "categoryUpdate2": {
+ "message": "Avaa asetukset ohittaaksesi introt, outrot, kauppatavarat, jne."
+ },
+ "unsubmittedWarning": {
+ "message": "Lähettämättömien Segmenttien Ilmoitus"
+ },
+ "unsubmittedWarningDescription": {
+ "message": "Lähetä ilmoitus, kun poistut videosta jos on lataamattomia segmenttejä"
}
}
diff --git a/public/_locales/id/messages.json b/public/_locales/id/messages.json
index 8b0f6980..a546dff7 100644
--- a/public/_locales/id/messages.json
+++ b/public/_locales/id/messages.json
@@ -8,7 +8,7 @@
"description": "Description of the extension."
},
"400": {
- "message": "Server menyatakan permintaan tidak valid"
+ "message": "Server menyatakan permintaan ini tidak valid"
},
"429": {
"message": "Anda terlalu banyak mengirim waktu sponsor pada video ini, apakah anda yakin ada sebanyak ini?"
@@ -50,7 +50,7 @@
"message": "Jangan tampilkan"
},
"hitGoBack": {
- "message": "Klik jangan lewati untuk kembali ke asal."
+ "message": "Tekan jangan lewati untuk kembali ke asal."
},
"unskip": {
"message": "Jangan Lewati"
@@ -80,13 +80,13 @@
"message": "Tidak ada segmen ditemukan"
},
"sponsorStart": {
- "message": "Segmen Mulai Sekarang"
+ "message": "Segmen Dimulai Sekarang"
},
"sponsorEnd": {
"message": "Segmen Berakhir Sekarang"
},
"noVideoID": {
- "message": "Tidak ada video YouTube yang ditemukan di tab ini. Jika ini merupakan tab YouTube, tutup popup ini dan buka lagi. Jika masih tidak berfungsi, coba muat ulang tab."
+ "message": "Tidak ada video YouTube yang ditemukan di tab ini. Jika anda tahu ini merupakan tab YouTube, tutup popup ini dan buka lagi. Jika masih tidak berfungsi, coba muat ulang tab."
},
"success": {
"message": "Sukses!"
@@ -143,7 +143,7 @@
"message": "disini"
},
"recordTimesDescription": {
- "message": "Klik tombol dibawah saat segmen mulai dan berakhir untuk direkam lalu dikirim ke basis data."
+ "message": "Klik tombol dibawah saat segmen dimulai dan berakhir untuk direkam lalu dikirim ke basis data."
},
"popupHint": {
"message": "Petunjuk: Tekan tombol titik koma saat terfokus pada video untuk melaporkan awal/akhir dari segmen untuk dikirim. (Bisa diganti di pengaturan)"
@@ -222,7 +222,7 @@
"description": "The first line of the message displayed after the notice was upgraded."
},
"noticeUpdate2": {
- "message": "Jika anda masih tidak suka, klik tombol jangan tampilkan.",
+ "message": "Jika anda masih tidak menyukainya, tekan tombol jangan tampilkan.",
"description": "The second line of the message displayed after the notice was upgraded."
},
"setStartSponsorShortcut": {
@@ -436,6 +436,9 @@
"preview": {
"message": "Pratinjau"
},
+ "inspect": {
+ "message": "Inspeksi"
+ },
"edit": {
"message": "Ubah"
},
diff --git a/public/_locales/it/messages.json b/public/_locales/it/messages.json
index bb925642..ef675d89 100644
--- a/public/_locales/it/messages.json
+++ b/public/_locales/it/messages.json
@@ -436,6 +436,9 @@
"preview": {
"message": "Anteprima"
},
+ "inspect": {
+ "message": "Esamina"
+ },
"edit": {
"message": "Modifica"
},
diff --git a/public/_locales/ko/messages.json b/public/_locales/ko/messages.json
index f0cd104c..3149465f 100644
--- a/public/_locales/ko/messages.json
+++ b/public/_locales/ko/messages.json
@@ -7,6 +7,12 @@
"message": "YouTube 영상의 스폰서 광고, '구독과 좋아요' 광고 같이 쓸데없는 광고를 모두 건너뛰세요. 영상의 스폰서 광고 구간을 신고하여 다른 사람들의 시간을 절약할 수 있게 해주세요.",
"description": "Description of the extension."
},
+ "429": {
+ "message": "이 영상에 너무 많은 스폰서 광고 시간을 제출했습니다, 정말로 확신하십니까?"
+ },
+ "409": {
+ "message": "이전에 이미 제출되었습니다"
+ },
"channelWhitelisted": {
"message": "채널이 화이트리스트에 추가되었습니다!"
},
@@ -16,6 +22,39 @@
"Segments": {
"message": "구간"
},
+ "upvoteButtonInfo": {
+ "message": "이 제출을 추천하기"
+ },
+ "reportButtonTitle": {
+ "message": "신고"
+ },
+ "reportButtonInfo": {
+ "message": "잘못된 제출로 신고하기."
+ },
+ "Loading": {
+ "message": "로딩 중..."
+ },
+ "Mins": {
+ "message": "분"
+ },
+ "Secs": {
+ "message": "초"
+ },
+ "Hide": {
+ "message": "보지 않기"
+ },
+ "paused": {
+ "message": "정지됨"
+ },
+ "manualPaused": {
+ "message": "타이머가 정지됨"
+ },
+ "clearThis": {
+ "message": "정말로 삭제하시겠습니까?\n\n"
+ },
+ "Unknown": {
+ "message": "스폰서 시간을 제출하는 동안 오류가 발생했습니다, 나중에 다시 시도하세요."
+ },
"sponsorFound": {
"message": "이 영상의 광고 구간을 서버 데이터베이스에서 찾았습니다!"
},
@@ -31,15 +70,54 @@
"noVideoID": {
"message": "현재 페이지에서 YouTube 영상을 찾지 못하였습니다. 이 페이지에 YouTube 영상이 있는 경우, 이 팝업을 닫고 다시 열어주세요. 그래도 이 팝업이 바뀌지 않는 경우, 페이지를 새로고침하세요."
},
+ "success": {
+ "message": "성공!"
+ },
+ "voted": {
+ "message": "투표 완료!"
+ },
+ "serverDown": {
+ "message": "서버가 다운된 것 같습니다. 즉시 개발 부에 연락하세요."
+ },
"connectionError": {
"message": "서버 오류가 발생하였습니다. 오류 코드: "
},
+ "leftTimes": {
+ "message": "몇몇 구간을 제출하지 않은 채 있는 것 같습니다. 해당 페이지로 다시 돌아가 제출하세요 (삭제되지 않았습니다)"
+ },
+ "clearTimes": {
+ "message": "구간 제거"
+ },
+ "openPopup": {
+ "message": "SponsorBlock 팝업 열기"
+ },
+ "closePopup": {
+ "message": "팝업 닫기"
+ },
+ "SubmitTimes": {
+ "message": "구간 제출"
+ },
+ "submitCheck": {
+ "message": "정말로 제출하시겠습니까?"
+ },
"whitelistChannel": {
"message": "채널을 화이트리스트에 추가하기"
},
"removeFromWhitelist": {
"message": "채널을 화이트리스트에서 삭제하기"
},
+ "voteOnTime": {
+ "message": "구간 투표"
+ },
+ "viewLeaderboard": {
+ "message": "리더보드 보기"
+ },
+ "recordTimesDescription": {
+ "message": "구간이 시작 및 종료될 때 아래의 버튼을 눌러 구간을 기록하고 데이터베이스에 제출하세요."
+ },
+ "submitTimesButton": {
+ "message": "시간 제출"
+ },
"setUsername": {
"message": "사용자 이름 설정"
},
@@ -49,6 +127,39 @@
"Options": {
"message": "설정"
},
+ "showButtons": {
+ "message": "YouTube 플레이어에서 버튼 표시하기"
+ },
+ "hideButtons": {
+ "message": "YouTube 플레이어에서 버튼 숨기기"
+ },
+ "hideButtonsDescription": {
+ "message": "스킵할 구간을 제출하기 위해 YouTube 플레이어에 나타나는 버튼을 숨깁니다"
+ },
+ "showInfoButton": {
+ "message": "YouTube 플레이어에서 정보 버튼 표시하기"
+ },
+ "hideInfoButton": {
+ "message": "YouTube 플레이어에서 정보 버튼 숨기기"
+ },
+ "whatInfoButton": {
+ "message": "YouTube 페이지에 팝업으로 표시되는 버튼입니다"
+ },
+ "hideDeleteButton": {
+ "message": "YouTube 플레이어에서 삭제 버튼 숨기기"
+ },
+ "showDeleteButton": {
+ "message": "YouTube 플레이어에서 삭제 버튼 표시하기"
+ },
+ "whatDeleteButton": {
+ "message": "현재 영상에 제출되지 않은 구간을 YouTube 플레이어 내에서 지우는 버튼입니다"
+ },
+ "enableViewTracking": {
+ "message": "스킵 개수 추적 활성화"
+ },
+ "showNotice": {
+ "message": "알림 다시 보여주기"
+ },
"longDescription": {
"message": "SponsorBlock을 사용하면 영상에서 스폰서 광고, 인트로 영상, 아웃트로 영상, 구독 광고와 그 외 쓸데없는 부분을 즉시 건너뛸 수 있습니다. SponsorBlock은 모든 사람들이 참여하는 브라우저 확장 기능으로 확장 기능 사용자는 스폰서 광고 또는 다른 광고의 시작 시간과 끝 시간을 확인하여 서버로 전송할 수 있습니다. 이러한 정보가 전송되면 그 영상을 보는 다른 사용자들은 광고 구간이 나오기 전에 자동으로 건너뛸 수 있습니다. SponsorBlock을 사용하면 뮤직 비디오에서 음악이나 노래가 아닌 구간도 건너뛸 수 있습니다.",
"description": "Full description of the extension on the store pages."
@@ -61,6 +172,10 @@
"message": "소스 코드",
"description": "Used on Firefox Store Page"
},
+ "noticeUpdate2": {
+ "message": "계속 이것이 싫다면, 보지 않기 버튼을 누르세요.",
+ "description": "The second line of the message displayed after the notice was upgraded."
+ },
"0": {
"message": "연결 타임아웃 오류입니다. 인터넷이 연결되어 있는지 확인해주세요. 인터넷이 연결되어 있는 경우, 서버가 과부하되어 있거나 다운되어 있어서 오류가 발생하는 것일 수도 있습니다."
},
@@ -77,6 +192,24 @@
"errorCode": {
"message": "오류 코드: "
},
+ "skip": {
+ "message": "스킵"
+ },
+ "skipped": {
+ "message": "스킵됨"
+ },
+ "disableAutoSkip": {
+ "message": "자동 스킵 비활성화"
+ },
+ "enableAutoSkip": {
+ "message": "자동 스킵 활성화"
+ },
+ "audioNotification": {
+ "message": "스킵시 소리 알림"
+ },
+ "audioNotificationDescription": {
+ "message": "구간을 건너뛸 때마다 소리를 재생합니다. 비활성화시(혹은 자동 스킵이 꺼져있을 경우) 아무 소리도 재생되지 않습니다."
+ },
"minLower": {
"message": "분"
},
@@ -89,36 +222,114 @@
"hoursLower": {
"message": "시간"
},
+ "statusReminder": {
+ "message": "Status.sponsor.ajay.app 사이트를 확인하여 서버 상태를 확인하세요."
+ },
"changeUserID": {
"message": "사용자 ID 가져오기/내보내기"
},
+ "whatChangeUserID": {
+ "message": "이 정보는 다른 사람에게 공개하지 마세요. 이것은 비밀번호처럼 절대로 알려주면 안되는 정보입니다. 다른 사람이 이 정보를 습득했을 경우 사용자를 사칭할 수도 있습니다."
+ },
+ "setUserID": {
+ "message": "사용자ID 설정"
+ },
+ "userIDChangeWarning": {
+ "message": "경고: 사용자ID 변경은 영구적입니다. 정말로 하시겠습니까? 예전 사용자ID를 꼭 백업하세요."
+ },
"createdBy": {
"message": "개발자: "
},
"autoSkip": {
"message": "자동으로 건너뛰기"
},
+ "showSkipNotice": {
+ "message": "구간을 건너뛴 후 알림 표시"
+ },
"supportInvidious": {
"message": "Invidious 지원 활성화"
},
+ "add": {
+ "message": "추가"
+ },
+ "addInvidiousInstanceError": {
+ "message": "유효하지 않은 도메인입니다. 도메인 부분을 포함해야 합니다. 예: invious.ajay.app"
+ },
+ "minDuration": {
+ "message": "최소 기간 (초):"
+ },
+ "minDurationDescription": {
+ "message": "설정 값보다 작은 구간은 건너뛰거나 플레이어에서 표시하지 않습니다"
+ },
+ "shortCheck": {
+ "message": "다음 제출은 최소 기간 옵션보다 짧습니다. 이 말은 이미 제출되었으며, 이 옵션으로 인해 무시될 수 있습니다. 제출하시겠습니까?"
+ },
+ "showUploadButton": {
+ "message": "업로드 버튼 표시"
+ },
+ "whatUploadButton": {
+ "message": "이 버튼은 타임 스탬프를 설정 후 제출 준비가 되었을 때 YouTube 플레이어에 나타납니다."
+ },
+ "customServerAddress": {
+ "message": "SponsorBlock 서버 주소"
+ },
"customServerAddressDescription": {
"message": "SponsorBlock이 데이터를 주고받기 위해 사용하는 서버 주소입니다. 따로 구축한 서버가 없을 경우, 이 주소를 변경하지 않는 것이 좋습니다."
},
"save": {
"message": "저장"
},
+ "reset": {
+ "message": "초기화"
+ },
"customAddressError": {
"message": "올바르지 않은 주소입니다. 주소는 반드시 http:// 또는 https://로 시작해야 하며, 마지막 문자가 슬래시로 끝날 수 없습니다."
},
+ "areYouSureReset": {
+ "message": "정말로 초기화하시겠습니까?"
+ },
+ "confirmPrivacy": {
+ "message": "이 영상은 일부 공개 영상으로 감지되었습니다. 구간 스킵을 확인하지 않으려면 취소를 누르세요."
+ },
+ "unlistedCheck": {
+ "message": "일부 공개/비공개 영상 무시"
+ },
"mobileUpdateInfo": {
"message": "이제 m.youtube.com 링크를 지원합니다"
},
"exportOptions": {
"message": "모든 설정 가져오기/내보내기"
},
+ "whatExportOptions": {
+ "message": "JSON의 전체 구성입니다. 사용자ID가 포함되므로 주의하세요."
+ },
+ "setOptions": {
+ "message": "옵션 설정"
+ },
+ "exportOptionsWarning": {
+ "message": "경고: 옵션을 변경하면 영구적이며 설치에 오류가 날 수 있습니다. 정말로 하시겠습니까? 예전 옵션을 꼭 백업하세요."
+ },
+ "incorrectlyFormattedOptions": {
+ "message": "이 JSON의 형식이 잘못되었습니다. 옵션이 변경되지 않았습니다."
+ },
+ "confirmNoticeTitle": {
+ "message": "구간 제출"
+ },
+ "submit": {
+ "message": "제출"
+ },
+ "cancel": {
+ "message": "취소"
+ },
+ "delete": {
+ "message": "삭제"
+ },
"preview": {
"message": "미리보기"
},
+ "inspect": {
+ "message": "보기"
+ },
"edit": {
"message": "수정"
},
@@ -134,6 +345,12 @@
"copyDebugInformationComplete": {
"message": "디버그 정보가 복사되었습니다. 공유하고 싶지 않은 내용이 있는 경우 자유롭게 수정하신 후, 텍스트 파일로 저장하시거나 버그 신고 페이지에 붙여넣으시면 됩니다."
},
+ "theKey": {
+ "message": "키"
+ },
+ "keyAlreadyUsed": {
+ "message": "이 키는 다른 행동과 연동되었습니다. 다른 키를 선택하세요."
+ },
"category_sponsor": {
"message": "스폰서 광고"
},
@@ -143,15 +360,51 @@
"category_intro_description": {
"message": "아무 내용도 없는 구간입니다. 일시정지된 영상, 정지된 프레임이거나 반복되는 애니메이션일 가능성이 있습니다. 특정 정보를 알려주는 화면 전환 구간은 여기에 해당되지 않습니다."
},
+ "category_intro_short": {
+ "message": "휴식 시간"
+ },
+ "category_outro": {
+ "message": "최종 화면 / 크레딧"
+ },
"category_outro_description": {
"message": "엔딩 크레딧이나 최종 화면이 나타나는 구간입니다. 단순히 결론을 말하는 부분은 여기에 포함되지 않습니다."
},
+ "category_interaction": {
+ "message": "상호 작용 알림 (구독)"
+ },
+ "category_interaction_short": {
+ "message": "상호 작용 알림"
+ },
+ "category_selfpromo": {
+ "message": "자체 홍보 구간"
+ },
+ "category_selfpromo_description": {
+ "message": "'스폰서 광고'와 비슷하지만 협찬 없이 자기 채널을 홍보하는 구간입니다. 여기에는 채널 굿즈 광고, 기부 광고와 영상에 참여한 사람들을 홍보하는 광고가 해당됩니다."
+ },
"category_music_offtopic": {
"message": "음악이 아닌 구간"
},
"category_music_offtopic_description": {
"message": "뮤직 비디오에서만 해당됩니다. 여기에는 시작 부분 (인트로) 영상이나 끝 부분 (아웃트로) 영상이 포함됩니다."
},
+ "category_music_offtopic_short": {
+ "message": "음악이 아닌 구간"
+ },
+ "category_livestream_messages": {
+ "message": "라이브스트림: 후원/메시지 읽기"
+ },
+ "category_livestream_messages_short": {
+ "message": "메시지 읽기"
+ },
+ "disable": {
+ "message": "비활성화"
+ },
+ "manualSkip": {
+ "message": "수동 스킵"
+ },
+ "showOverlay": {
+ "message": "재생 시간 바 표시"
+ },
"colorFormatIncorrect": {
"message": "올바르지 않은 색상 코드입니다. 색상 코드는 샵 (#) 기호로 시작하여 3자리 또는 6자리의 16진수로 구성되어야 합니다."
},
@@ -163,14 +416,59 @@
"message": "탐색 바 색상"
},
"category": {
- "message": "범주"
+ "message": "카테고리"
},
"skipOption": {
"message": "건너뛰기 설정",
"description": "Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
},
+ "enableTestingServer": {
+ "message": "베타 테스팅 서버 활성화"
+ },
+ "whatEnableTestingServer": {
+ "message": "제출과 투표는 메인 서버에 반영되지 않습니다. 테스트를 목적으로 사용하세요."
+ },
+ "testingServerWarning": {
+ "message": "제출과 투표는 테스트 서버와 연결하는 동안 메인 서버에 반영되지 않습니다. 실제 제출을 원할 때 이 기능을 비활성화 하세요."
+ },
+ "bracketNow": {
+ "message": "(지금)"
+ },
+ "moreCategories": {
+ "message": "많은 카테고리"
+ },
"chooseACategory": {
- "message": "구간 범주 선택"
+ "message": "카테고리 선택"
+ },
+ "youMustSelectACategory": {
+ "message": "제출 해야하는 모든 구간의 카테고리를 설정해야합니다!"
+ },
+ "bracketEnd": {
+ "message": "(끝)"
+ },
+ "channelDataNotFound": {
+ "message": "채널 ID가 로드되지 않았습니다."
+ },
+ "adblockerIssue": {
+ "message": "무언가가 SponsorBlock의 영상 데이터 수집을 막고 있는 것으로 보입니다. 이것은 광고 차단기로 인해 그럴 가능성이 있습니다. https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests 사이트를 참조하세요"
+ },
+ "itCouldBeAdblockerIssue": {
+ "message": "오류가 지속된다면, 광고 차단기로 인해 발생할 수 있습니다. https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests 사이트를 참조하세요"
+ },
+ "forceChannelCheck": {
+ "message": "건너뛰기 전 채널 강제 체크"
+ },
+ "downvoteDescription": {
+ "message": "잘못된 타이밍입니다"
+ },
+ "incorrectCategory": {
+ "message": "잘못된 카테고리입니다"
+ },
+ "nonMusicCategoryOnMusic": {
+ "message": "이 영상은 음악 영상으로 분류됩니다. 정말로 스폰서가 있는 것이 확실한가요? 만약 음악 이외의 구간인 경우, 확장 옵션을 열어 이 카테고리를 활성화 하세요. 그리고, 이 구간을 스폰서 대신 음악이 아닌 구간으로 제출하세요. 헷갈릴 경우 가이드라인을 읽으세요."
+ },
+ "multipleSegments": {
+ "message": "여러 구간"
},
"guidelines": {
"message": "가이드라인"
@@ -178,5 +476,17 @@
"readTheGuidelines": {
"message": "가이드라인을 제발 읽어주세요!!!",
"description": "Show the first time they submit or if they are \"high risk\""
+ },
+ "categoryUpdate1": {
+ "message": "카테고리는 여기 있습니다!"
+ },
+ "categoryUpdate2": {
+ "message": "인트로, 아웃트로, 기타 등을 스킵하는 설정을 여세요"
+ },
+ "unsubmittedWarning": {
+ "message": "제출되지 않은 구간 알림"
+ },
+ "unsubmittedWarningDescription": {
+ "message": "업로드되지 않은 구간이 있는 영상이 있을 때 알림을 보냅니다"
}
}
diff --git a/public/_locales/nl/messages.json b/public/_locales/nl/messages.json
index 3a799873..8e6391e8 100644
--- a/public/_locales/nl/messages.json
+++ b/public/_locales/nl/messages.json
@@ -436,6 +436,9 @@
"preview": {
"message": "Voorbeeld"
},
+ "inspect": {
+ "message": "Inspecteren"
+ },
"edit": {
"message": "Bewerken"
},
diff --git a/public/_locales/pl/messages.json b/public/_locales/pl/messages.json
index 4adfdcd1..b91bfcc0 100644
--- a/public/_locales/pl/messages.json
+++ b/public/_locales/pl/messages.json
@@ -1,6 +1,6 @@
{
"fullName": {
- "message": "SponsorBlock na YouTube - Przewiń fragmenty sponsorowane",
+ "message": "SponsorBlock na YouTube - Pomiń fragmenty sponsorowane",
"description": "Name of the extension."
},
"Description": {
@@ -47,7 +47,7 @@
"message": "Sekundy"
},
"Hide": {
- "message": "Nigdy nie pokazuj"
+ "message": "Nie pokazuj więcej"
},
"hitGoBack": {
"message": "Kliknij cofnij aby przenieść się do miejsca przed przewinięciem."
@@ -113,7 +113,7 @@
"message": "Otwórz okienko SponsorBlock"
},
"closePopup": {
- "message": "Zamknij okienko"
+ "message": "Zamknij okno"
},
"SubmitTimes": {
"message": "Prześlij segmenty"
@@ -257,7 +257,7 @@
"message": "Kod błędu: "
},
"skip": {
- "message": "Przewiń"
+ "message": "Pomiń"
},
"skipped": {
"message": "Pominięto"
@@ -436,6 +436,9 @@
"preview": {
"message": "Podgląd"
},
+ "inspect": {
+ "message": "Sprawdź"
+ },
"edit": {
"message": "Edytuj"
},
diff --git a/public/_locales/ro/messages.json b/public/_locales/ro/messages.json
index a0f6e522..20a05a1a 100644
--- a/public/_locales/ro/messages.json
+++ b/public/_locales/ro/messages.json
@@ -408,6 +408,9 @@
"preview": {
"message": "Previzualizare"
},
+ "inspect": {
+ "message": "Inspectează"
+ },
"edit": {
"message": "Editare"
},
diff --git a/public/_locales/ru/messages.json b/public/_locales/ru/messages.json
index b14db3b3..4a0a4489 100644
--- a/public/_locales/ru/messages.json
+++ b/public/_locales/ru/messages.json
@@ -436,6 +436,9 @@
"preview": {
"message": "Предпросмотр"
},
+ "inspect": {
+ "message": "Исследовать"
+ },
"edit": {
"message": "Редактировать"
},
diff --git a/public/_locales/ta/messages.json b/public/_locales/ta/messages.json
index 0967ef42..66c59c3c 100644
--- a/public/_locales/ta/messages.json
+++ b/public/_locales/ta/messages.json
@@ -1 +1,154 @@
-{}
+{
+ "fullName": {
+ "message": "YouTube க்கான ஸ்பான்சர் பிளாக் - ஸ்பான்சர்ஷிப்களைத் தவிர்",
+ "description": "Name of the extension."
+ },
+ "Description": {
+ "message": "YouTube வீடியோக்களில் ஸ்பான்சர்ஷிப்கள், சந்தா பிச்சை மற்றும் பலவற்றைத் தவிர்க்கவும். மற்றவர்களின் நேரத்தைச் சேமிக்க நீங்கள் பார்க்கும் வீடியோக்களில் ஸ்பான்சர்களைப் புகாரளிக்கவும்.",
+ "description": "Description of the extension."
+ },
+ "400": {
+ "message": "இந்த கோரிக்கை தவறானது என்று சர்வர் கூறினார்"
+ },
+ "429": {
+ "message": "இந்த ஒரு வீடியோவிற்கு நீங்கள் பல ஸ்பான்சர் நேரங்களை சமர்ப்பித்துள்ளீர்கள், இது பல உள்ளன என்று நீங்கள் உறுதியாக நம்புகிறீர்களா?"
+ },
+ "409": {
+ "message": "இது ஏற்கனவே சமர்ப்பிக்கப்பட்டுள்ளது"
+ },
+ "channelWhitelisted": {
+ "message": "சேனல் அனுமதிப்பட்டியல்!"
+ },
+ "Segment": {
+ "message": "பிரிவு"
+ },
+ "Segments": {
+ "message": "பிரிவுகள்"
+ },
+ "upvoteButtonInfo": {
+ "message": "இந்த சமர்ப்பிப்பை மேம்படுத்துங்கள்"
+ },
+ "reportButtonTitle": {
+ "message": "அறிக்கை"
+ },
+ "reportButtonInfo": {
+ "message": "இந்த சமர்ப்பிப்பு தவறானது என புகாரளிக்கவும்."
+ },
+ "Dismiss": {
+ "message": "நீக்கு"
+ },
+ "Loading": {
+ "message": "ஏற்றுகிறது..."
+ },
+ "Mins": {
+ "message": "நிமிடம்"
+ },
+ "Secs": {
+ "message": "நொடிகள்"
+ },
+ "Hide": {
+ "message": "ஒருபோதும் அனுமதிக்காதே"
+ },
+ "hitGoBack": {
+ "message": "நீங்கள் எங்கிருந்து வந்தீர்கள் என்பதைத் தட்டவும்."
+ },
+ "unskip": {
+ "message": "அன்ஸ்கிப்"
+ },
+ "reskip": {
+ "message": "ரெஸ்கிப்"
+ },
+ "paused": {
+ "message": "இடைநிறுத்தப்பட்டது"
+ },
+ "manualPaused": {
+ "message": "டைமர் நிறுத்தப்பட்டது"
+ },
+ "confirmMSG": {
+ "message": "தனிப்பட்ட மதிப்புகளைத் திருத்த அல்லது நீக்க, தகவல் பொத்தானைக் கிளிக் செய்யவும் அல்லது மேல் வலது மூலையில் உள்ள நீட்டிப்பு ஐகானைக் கிளிக் செய்வதன் மூலம் நீட்டிப்பு பாப்அப்பைத் திறக்கவும்."
+ },
+ "clearThis": {
+ "message": "இதை அழிக்க விரும்புகிறீர்களா?\n\n"
+ },
+ "Unknown": {
+ "message": "உங்கள் ஸ்பான்சர் நேரங்களைச் சமர்ப்பிப்பதில் பிழை ஏற்பட்டது, தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும்."
+ },
+ "sponsorFound": {
+ "message": "இந்த வீடியோவில் தரவுத்தளத்தில் பகுதிகள் உள்ளன!"
+ },
+ "sponsor404": {
+ "message": "எந்தப் பகுதியும் கிடைக்கவில்லை"
+ },
+ "sponsorStart": {
+ "message": "பிரிவு இப்போது தொடங்குகிறது"
+ },
+ "sponsorEnd": {
+ "message": "பிரிவு இப்போது முடிகிறது"
+ },
+ "noVideoID": {
+ "message": "இந்த தாவலில் YouTube வீடியோ எதுவும் இல்லை. இது ஒரு YouTube தாவல் என்று உங்களுக்குத் தெரிந்தால், இந்த பாப்அப்பை மூடிவிட்டு மீண்டும் திறக்கவும். அது வேலை செய்யவில்லை என்றால், தாவலை மீண்டும் ஏற்ற முயற்சிக்கவும்."
+ },
+ "success": {
+ "message": "வெற்றி!"
+ },
+ "voted": {
+ "message": "வாக்களித்தார்!"
+ },
+ "serverDown": {
+ "message": "சேவையகம் செயலிழந்துவிட்டதாகத் தெரிகிறது. டெவலப்பரை உடனடியாக தொடர்பு கொள்ளவும்."
+ },
+ "connectionError": {
+ "message": "இணைப்பு பிழை ஏற்பட்டது. பிழை குறியீடு: "
+ },
+ "wantToSubmit": {
+ "message": "வீடியோ ஐடிக்கு நீங்கள் சமர்ப்பிக்க விரும்புகிறீர்களா"
+ },
+ "leftTimes": {
+ "message": "நீங்கள் சில பிரிவுகளை சமர்ப்பிக்கவில்லை என்று தெரிகிறது. அவற்றைச் சமர்ப்பிக்க அந்தப் பக்கத்திற்குச் செல்லவும் (அவை நீக்கப்படவில்லை)."
+ },
+ "clearTimes": {
+ "message": "பிரிவுகளை அழிக்கவும்"
+ },
+ "openPopup": {
+ "message": "ஸ்பான்சர் பிளாக் பாப்அப்பைத் திறக்கவும்"
+ },
+ "closePopup": {
+ "message": "பாப்அப்பை மூடு"
+ },
+ "SubmitTimes": {
+ "message": "பிரிவுகளைச் சமர்ப்பிக்கவும்"
+ },
+ "submitCheck": {
+ "message": "இதை நிச்சயமாக சமர்ப்பிக்க விரும்புகிறீர்களா?"
+ },
+ "whitelistChannel": {
+ "message": "அனுமதிப்பட்டியல் சேனல்"
+ },
+ "removeFromWhitelist": {
+ "message": "அனுமதிப்பட்டியலில் இருந்து சேனலை அகற்று"
+ },
+ "voteOnTime": {
+ "message": "ஒரு பிரிவில் வாக்களியுங்கள்"
+ },
+ "soFarUHSubmited": {
+ "message": "இதுவரை, நீங்கள் சமர்ப்பித்தீர்கள்"
+ },
+ "savedPeopleFrom": {
+ "message": "நீங்கள் மக்களை காப்பாற்றியுள்ளீர்கள் "
+ },
+ "viewLeaderboard": {
+ "message": "லீடர்போர்டைக் காண்க"
+ },
+ "here": {
+ "message": "இங்கே"
+ },
+ "recordTimesDescription": {
+ "message": "பிரிவு துவங்கி முடிவடையும் போது கீழே உள்ள பொத்தானைக் கிளிக் செய்து பதிவுசெய்து தரவுத்தளத்தில் சமர்ப்பிக்கவும்."
+ },
+ "popupHint": {
+ "message": "குறிப்பு: ஒரு பிரிவின் தொடக்க / முடிவைப் புகாரளிக்க ஒரு வீடியோவில் கவனம் செலுத்துகையில் அரைக்காற்பகுதி விசையை அழுத்தி சமர்ப்பிக்க மேற்கோள். (இதை விருப்பங்களில் மாற்றலாம்)"
+ },
+ "clearTimesButton": {
+ "message": "நேரங்களை அழி"
+ }
+}
diff --git a/public/_locales/uk/messages.json b/public/_locales/uk/messages.json
index d32cb0bc..02cc3d29 100644
--- a/public/_locales/uk/messages.json
+++ b/public/_locales/uk/messages.json
@@ -3,6 +3,10 @@
"message": "SponsorBlock для YouTube - Пропускайте спонсорські вставки",
"description": "Name of the extension."
},
+ "Description": {
+ "message": "Пропускайте спонсорські вставки, прохання підписатися та інше в відео на YouTube. Надсилайте інформацію про спонсорів в відео, щоб зберігати іншим час.",
+ "description": "Description of the extension."
+ },
"400": {
"message": "Сервер відхилив цей запит"
},
@@ -15,9 +19,21 @@
"channelWhitelisted": {
"message": "Канал доданий у білий список!"
},
+ "Segment": {
+ "message": "сегмент"
+ },
+ "Segments": {
+ "message": "сегментів"
+ },
+ "upvoteButtonInfo": {
+ "message": "Проголосувати за цей сегмент"
+ },
"reportButtonTitle": {
"message": "Помилка"
},
+ "reportButtonInfo": {
+ "message": "Повідомити про помилку в цьому сегменті."
+ },
"Dismiss": {
"message": "Закрити"
},
@@ -45,6 +61,9 @@
"paused": {
"message": "Пауза"
},
+ "manualPaused": {
+ "message": "Таймер зупинено"
+ },
"confirmMSG": {
"message": "Щоб змінити або видалити окремі значення, натисніть кнопку «Інформація» або відкрийте спливаюче вікно розширення, клацнувши значок розширення в правому верхньому куті."
},
@@ -54,6 +73,18 @@
"Unknown": {
"message": "При надсиланні звіту про спонсорський сегмент сталася помилка. Спробуйте надіслати його пізніше."
},
+ "sponsorFound": {
+ "message": "У базі є сегменти для цього відео!"
+ },
+ "sponsor404": {
+ "message": "Сегменти не знайдено"
+ },
+ "sponsorStart": {
+ "message": "Сегмент починається звідси"
+ },
+ "sponsorEnd": {
+ "message": "Сегмент закінчується тут"
+ },
"noVideoID": {
"message": "Можливо, це не вкладка YouTube, або Ви натиснули занадто рано.\n  Якщо це вкладка YouTube,\n  закрийте це спливаюче вікно і відкрийте його знову."
},
@@ -63,12 +94,30 @@
"voted": {
"message": "Голос зарахований!"
},
+ "serverDown": {
+ "message": "Здається, сервера не працюють. Негайно зв'яжіться з розробником."
+ },
"connectionError": {
"message": "Помилка з'єднання. Код помилки: "
},
+ "wantToSubmit": {
+ "message": "Ви хочете надіслати сегменти для відео з id"
+ },
+ "leftTimes": {
+ "message": "Ви ще не надіслали інформацію про деякі сегменти. Поверніться на цю сторінку, щоб надіслати їх (вони не видалені)."
+ },
+ "clearTimes": {
+ "message": "Очистити сегменти"
+ },
"openPopup": {
"message": "Відкрийте спливаюче вікно SponsorBlock"
},
+ "closePopup": {
+ "message": "Закрити вікно"
+ },
+ "SubmitTimes": {
+ "message": "Надіслати сегменти"
+ },
"submitCheck": {
"message": "Ви впевнені, що хочете надіслати цю інформацію?"
},
@@ -78,6 +127,9 @@
"removeFromWhitelist": {
"message": "Видалити канал з білого списку"
},
+ "voteOnTime": {
+ "message": "Проголосувати за сегмент"
+ },
"soFarUHSubmited": {
"message": "На даний момент Ви надіслали"
},
@@ -90,6 +142,12 @@
"here": {
"message": "тут"
},
+ "recordTimesDescription": {
+ "message": "Натисніть кнопку нижче, коли сегмент починається і закінчується, щоб записати і Надіслати його в базу."
+ },
+ "popupHint": {
+ "message": "Підказка: натисніть на кнопку \"Ж\" під час відтворення, щоб повідомити про початок / кінці сегмента, і \"Е\", щоб надіслати його. (Це можна змінити в налаштуваннях)"
+ },
"clearTimesButton": {
"message": "Очистити час"
},
@@ -138,9 +196,19 @@
"whatDeleteButton": {
"message": "Ця кнопка дозволяє очистити всі спонсорські вставки в плеєрі YouTube."
},
+ "enableViewTracking": {
+ "message": "Увімкнути відстеження кількості пропусків сегментів"
+ },
+ "whatViewTracking": {
+ "message": "Ця можливість відстежує, які сегменти Ви пропустили, щоб допомогти користувачам дізнатися, наскільки їх внесок допоміг іншим, і, поряд з голосами, використовується як метрика, щоб переконатися, що спам не влучає у базу даних. Розширення надсилає повідомлення на сервер кожен раз, коли Ви пропускаєте сегмент. Сподіваємося, велика частина користувачів не поміняє це налаштування, так що у нас буде точна статистика переглядів. :)"
+ },
"showNotice": {
"message": "Показувати сповіщення знову"
},
+ "longDescription": {
+ "message": "SponsorBlock дозволяє пропускати спонсорські вставки, початкові і кінцеві заставки, прохання підписатися і інше в відео на YouTube. SponsorBlock - колективне розширення, яке дозволяє кожному надіслати час початку і кінця подібних сегментів в відео. Після того, як хто-небудь надсилає цю інформацію, всі інші користувачі розширення будуть автоматично пропускати ці сегменти. Так само можна пропускати частини кліпів без музики.",
+ "description": "Full description of the extension on the store pages."
+ },
"website": {
"message": "Сайт",
"description": "Used on Firefox Store Page"
@@ -157,6 +225,9 @@
"message": "Якщо воно Вам все одно не подобається, натисніть «не показувати\".",
"description": "The second line of the message displayed after the notice was upgraded."
},
+ "setStartSponsorShortcut": {
+ "message": "Призначити гарячу клавішу для початку сегмента"
+ },
"setSubmitKeybind": {
"message": "Призначити гарячу клавішу для надсилання"
},
@@ -200,6 +271,15 @@
"audioNotification": {
"message": "Аудіо сповіщення при пропуску"
},
+ "audioNotificationDescription": {
+ "message": "Аудіо сповіщення про пропуск буде відтворюватися кожен раз, коли сегмент пропущений. Якщо відключено (або автоматичний пропуск відключений), звук не буде відтворюватися."
+ },
+ "showTimeWithSkips": {
+ "message": "Показувати тривалість без сегментів"
+ },
+ "showTimeWithSkipsDescription": {
+ "message": "Ця тривалість відображається в дужках поруч з фактичної під смугою прокрутки. Показує тривалість відео без сегментів. Включає сегменти, для яких вибрано \"Відображати в смузі прокрутки\"."
+ },
"youHaveSkipped": {
"message": "Ви пропустили "
},
@@ -245,6 +325,9 @@
"autoSkip": {
"message": "Автоматичний пропуск"
},
+ "showSkipNotice": {
+ "message": "Показувати сповіщення після пропуску сегмента"
+ },
"keybindCurrentlySet": {
"message": ". Він зараз призначений на:"
},
@@ -281,6 +364,9 @@
"minDuration": {
"message": "Мінімальна тривалість (секунд):"
},
+ "minDurationDescription": {
+ "message": "Сегменти коротше цього значення не будуть пропускатися і не будуть показані в плеєрі."
+ },
"shortCheck": {
"message": "Наступний діапазон часу коротше, ніж Ваше налаштування мінімальної тривалості. Це може означати, що він вже був надісланий, і просто ігнорується через це налаштування. Ви дійсно хочете надіслати?"
},
@@ -308,9 +394,15 @@
"areYouSureReset": {
"message": "Ви дійсно хочете це скинути?"
},
+ "confirmPrivacy": {
+ "message": "Було виявлено, що це відео - з доступом по посиланню. Натисніть \"скасування\", якщо не хочете перевіряти для нього сегменти."
+ },
"unlistedCheck": {
"message": "Ігнорувати непублічні відео"
},
+ "whatUnlistedCheck": {
+ "message": "Це налаштування дещо сповільнить SponsorBlock. Пошук сегментів вимагає надсилання ідентифікатора відео на сервер. Якщо Вас турбує надсилання ідентифікаторів прихованих відео по інтернету, включіть це налаштування."
+ },
"mobileUpdateInfo": {
"message": "m.youtube.com тепер підтримується"
},
@@ -323,6 +415,12 @@
"setOptions": {
"message": "Встановити параметри"
},
+ "exportOptionsWarning": {
+ "message": "Увага: зміна налаштувань незворотня і може зламати розширення. Ви дійсно хочете це зробити? Зробіть резервну копію про всяк випадок."
+ },
+ "incorrectlyFormattedOptions": {
+ "message": "JSON-файл некоректно відформатований. Ваші налаштування не були змінені."
+ },
"confirmNoticeTitle": {
"message": "Надіслати сегмент"
},
@@ -338,31 +436,188 @@
"preview": {
"message": "Попередній перегляд"
},
+ "inspect": {
+ "message": "Дослідити"
+ },
"edit": {
"message": "Редагувати"
},
+ "copyDebugInformation": {
+ "message": "Скопіюйте інформацію про налагодження в буфер обміну"
+ },
+ "copyDebugInformationFailed": {
+ "message": "Не вдалося скопіювати в буфер"
+ },
+ "copyDebugInformationOptions": {
+ "message": "Копіює інформацію в буфер обміну, яка буде надана розробнику при виникненні помилки/за запитом розробника. Такі відомості, як ID користувача, список дозволених каналів і адреса користувача сервера не передаються. Однак, відправляються ваш user agent, браузер, операційна система і номер версії розширення. "
+ },
+ "copyDebugInformationComplete": {
+ "message": "Інформація про налагодження скопійована в буфер обміну. Ви можете видалити будь-яку інформацію, якої не хочете ділитися. Збережіть її в текстовий файл, вставте в звіт про помилку."
+ },
"theKey": {
"message": "Ключ"
},
+ "keyAlreadyUsed": {
+ "message": "прив'язана до іншого дії. Будь ласка, оберіть іншу клавішу."
+ },
+ "to": {
+ "message": "до",
+ "description": "Used between segments. Example: 1:20 to 1:30"
+ },
"category_sponsor": {
"message": "Спонсор"
},
+ "category_sponsor_description": {
+ "message": "Рекламні інтеграції, реферальні посилання і реклама безпосередньо. Не для самореклами або рекомендацій різних подій/творців/сайтів/продуктів, які подобаються автору відео."
+ },
+ "category_intro": {
+ "message": "Пауза/заставка"
+ },
+ "category_intro_description": {
+ "message": "Частина відео без значимого контенту. Може бути паузою, статичним кадром, що повторюється анімацією. Це не повинно використовуватися для переходів, що містять інформацію."
+ },
+ "category_intro_short": {
+ "message": "Заставка"
+ },
+ "category_outro": {
+ "message": "Кінцева заставка/титри"
+ },
+ "category_outro_description": {
+ "message": "Титри або час появи кінцевих заставок YouTube. Не для підведення підсумків сказаного у відео."
+ },
+ "category_interaction": {
+ "message": "Нагадування про взаємодію (підписка)"
+ },
+ "category_interaction_description": {
+ "message": "Коли є коротке нагадування поставити лайк, підписатися на канал або в соцмережах в середині вмісту. Якщо ця вставка тривала або про щось конкретне, вона повинна класифікуватися як самореклама."
+ },
+ "category_interaction_short": {
+ "message": "Нагадування про взаємодію"
+ },
+ "category_selfpromo": {
+ "message": "Самореклама/рекомендація"
+ },
+ "category_selfpromo_description": {
+ "message": "Схоже на \"Спонсора\", але для безкоштовної реклами і самореклами. Включає себе вставки про мерчендайз, пожертвування або інформацію про тих, разом з ким було зроблено відео."
+ },
+ "category_music_offtopic": {
+ "message": "Музика: Сегмент без музики"
+ },
+ "category_music_offtopic_description": {
+ "message": "Тільки для використання в музичних кліпах. Включає в себе початкові і кінцеві заставки кліпів."
+ },
+ "category_music_offtopic_short": {
+ "message": "Без музики"
+ },
+ "category_livestream_messages": {
+ "message": "Прямі трансляції: пожертвування/читання повідомлення"
+ },
+ "category_livestream_messages_short": {
+ "message": "Читання повідомлень"
+ },
"disable": {
"message": "Вимкнути"
},
"manualSkip": {
"message": "Пропуск вручну"
},
+ "showOverlay": {
+ "message": "Показувати в смузі прокрутки"
+ },
+ "colorFormatIncorrect": {
+ "message": "Ви ввели колір в неправильному форматі. Це повинно бути 3-х або 6-ти значне шістнадцяткове число з символом # на початку."
+ },
+ "previewColor": {
+ "message": "Колір предпросмотра",
+ "description": "Referring to submissions that have not been sent to the server yet."
+ },
+ "seekBarColor": {
+ "message": "Колір в смузі прокрутки"
+ },
+ "category": {
+ "message": "Категорія"
+ },
+ "skipOption": {
+ "message": "Спосіб пропуску",
+ "description": "Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
+ },
+ "enableTestingServer": {
+ "message": "Включити сервера для бета-тестів"
+ },
+ "whatEnableTestingServer": {
+ "message": "Відправлені вами вставки і голоси НЕ БУДУТЬ НАДІСЛАНІ на головний сервер. Використовуйте тільки для тестування."
+ },
+ "testingServerWarning": {
+ "message": "Усі надіслані вами вставки і голоси НЕ БУДУТЬ НАДІСЛАНІ на головний сервер, поки ви підключені до сервера для тестів. Не забудьте відключити цей параметр, щоб знову надсилати на головний сервер."
+ },
"bracketNow": {
"message": "(Зараз)"
},
"moreCategories": {
"message": "Більше категорій"
},
+ "chooseACategory": {
+ "message": "Оберіть категорію"
+ },
+ "youMustSelectACategory": {
+ "message": "Ви повинні обрати категорію для всіх сегментів, які ви відправляєте!"
+ },
"bracketEnd": {
"message": "(Кінець)"
},
+ "hiddenDueToDownvote": {
+ "message": "приховано: проголосували проти"
+ },
+ "hiddenDueToDuration": {
+ "message": "приховано: занадто коротко"
+ },
+ "channelDataNotFound": {
+ "message": "ID каналу ще не завантажений."
+ },
+ "adblockerIssue": {
+ "message": "Здається, щось блокує можливість SponsorBlock'а отримувати дані про відео. Можливо, це ваш блокувальник реклами. Будь ласка, перейдіть на https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocker-Blocking-SponsorBlock's-Requests"
+ },
+ "itCouldBeAdblockerIssue": {
+ "message": "Якщо це повідомлення з'являється занадто часто, це може бути викликано вашим блокувальником реклами. Будь ласка, перейдіть на https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
+ },
+ "forceChannelCheck": {
+ "message": "Примусова перевірка каналів перед пропуском"
+ },
+ "whatForceChannelCheck": {
+ "message": "За замовчуванням розширення пропускає сегменти відразу ж, не перевіряючи те, який це канал. За замовчуванням деякі сегменти на початку відео можуть бути пропущені на каналах з білого списку. Увімкнення цієї опції запобіжить це, але всі пропуски будуть мати невелику затримку, оскільки отримання ID каналу може зайняти деякий час. Ця затримка може бути непомітною, якщо у вас швидкий інтернет."
+ },
+ "forceChannelCheckPopup": {
+ "message": "Рекомендуємо увімкнути \"Примусова перевірка каналів перед пропуском\""
+ },
+ "downvoteDescription": {
+ "message": "Невірно вказано час"
+ },
"incorrectCategory": {
"message": "Невірна категорія"
+ },
+ "nonMusicCategoryOnMusic": {
+ "message": "Це відео класифіковано як музичне. Ви впевнені, що в ньому є спонсори? Якщо насправді це \"Сегмент без музики\", відкрийте параметри розширення і увімкніть цю категорію. Потім ви можете надіслати цей сегмент як \"Без музики\", а не як спонсора. Будь ласка, прочитайте керівництво, якщо ви заплуталися."
+ },
+ "multipleSegments": {
+ "message": "Декілька сегментів"
+ },
+ "guidelines": {
+ "message": "Керівництво"
+ },
+ "readTheGuidelines": {
+ "message": "Прочитайте керівництво!!",
+ "description": "Show the first time they submit or if they are \"high risk\""
+ },
+ "categoryUpdate1": {
+ "message": "Категорії тут!"
+ },
+ "categoryUpdate2": {
+ "message": "Відкрийте налаштування, щоб пропускати початкові і кінцеві заставки, саморекламу та інше."
+ },
+ "unsubmittedWarning": {
+ "message": "Сповіщенняння про невідправлені сегменти"
+ },
+ "unsubmittedWarningDescription": {
+ "message": "Надсилати повідомлення, коли ви йдете зі сторінки відео, сегменти до якого Ви не надіслали"
}
}
diff --git a/public/options/options.html b/public/options/options.html
index 5a5e6caa..04620a9e 100644
--- a/public/options/options.html
+++ b/public/options/options.html
@@ -304,6 +304,40 @@
<br/>
<br/>
+
+ <div option-type="toggle" sync-option="hashPrefix">
+ <label class="switch-container" label-name="__MSG_enableQueryByHashPrefix__">
+ <label class="switch">
+ <input type="checkbox" checked>
+ <span class="slider round"></span>
+ </label>
+ </label>
+
+ <br/>
+ <br/>
+
+ <div class="small-description">__MSG_whatQueryByHashPrefix__</div>
+ </div>
+
+ <br/>
+ <br/>
+
+ <div option-type="toggle" sync-option="refetchWhenNotFound">
+ <label class="switch-container" label-name="__MSG_enableRefetchWhenNotFound__">
+ <label class="switch">
+ <input type="checkbox" checked>
+ <span class="slider round"></span>
+ </label>
+ </label>
+
+ <br/>
+ <br/>
+
+ <div class="small-description">__MSG_whatRefetchWhenNotFound__</div>
+ </div>
+
+ <br/>
+ <br/>
<div option-type="toggle" sync-option="checkForUnlistedVideos">
<label class="switch-container" label-name="__MSG_unlistedCheck__">
diff --git a/src/config.ts b/src/config.ts
index 3914a202..54f1201c 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -6,7 +6,6 @@ const utils = new Utils();
interface SBConfig {
userID: string,
- // sponsorTimes: SBMap<string, SponsorTime[]>,
segmentTimes: SBMap<string, SponsorTime[]>,
defaultCategory: string,
whitelistedChannels: string[],
@@ -35,6 +34,8 @@ interface SBConfig {
audioNotificationOnSkip,
checkForUnlistedVideos: boolean,
testingServer: boolean,
+ hashPrefix: boolean,
+ refetchWhenNotFound: boolean,
// What categories should be skipped
categorySelections: CategorySelection[],
@@ -166,6 +167,8 @@ var Config: SBObject = {
audioNotificationOnSkip: false,
checkForUnlistedVideos: false,
testingServer: false,
+ hashPrefix: false,
+ refetchWhenNotFound: true,
categorySelections: [{
name: "sponsor",
diff --git a/src/content.ts b/src/content.ts
index 8a0e0e01..f4156d83 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -618,12 +618,36 @@ function sponsorsLookup(id: string) {
categories.push(categorySelection.name);
}
- utils.asyncRequestToServer('GET', "/api/skipSegments", {
- videoID: id,
- categories
- }).then(async (response: FetchResponse) => {
+ // Check for hashPrefix setting
+ let getRequest;
+ if (Config.config.hashPrefix) {
+ getRequest = utils.asyncRequestToServer('GET', "/api/skipSegments/" + utils.getHash(id, 1).substr(0,4), {
+ categories
+ });
+ } else {
+ getRequest = utils.asyncRequestToServer('GET', "/api/skipSegments", {
+ videoID: id,
+ categories
+ });
+ }
+ getRequest.then(async (response: FetchResponse) => {
if (response?.ok) {
- let recievedSegments: SponsorTime[] = JSON.parse(response.responseText);
+ let result = JSON.parse(response.responseText);
+ if (Config.config.hashPrefix) {
+ result = result.filter((video) => video.videoID === id);
+ if (result.length > 0) {
+ result = result[0].segments;
+ if (result.length === 0) { // return if no segments found
+ retryFetch(id);
+ return;
+ }
+ } else { // return if no video found
+ retryFetch(id);
+ return;
+ }
+ }
+
+ let recievedSegments: SponsorTime[] = result;
if (!recievedSegments.length) {
console.error("[SponsorBlock] Server returned malformed response: " + JSON.stringify(recievedSegments));
return;
@@ -667,32 +691,38 @@ function sponsorsLookup(id: string) {
sponsorLookupRetries = 0;
} else if (response?.status === 404) {
- sponsorDataFound = false;
-
- //check if this video was uploaded recently
- utils.wait(() => !!videoInfo).then(() => {
- let dateUploaded = videoInfo?.microformat?.playerMicroformatRenderer?.uploadDate;
-
- //if less than 3 days old
- if (Date.now() - new Date(dateUploaded).getTime() < 259200000) {
- //TODO lower when server becomes better
- setTimeout(() => sponsorsLookup(id), 180000);
- }
- });
-
- sponsorLookupRetries = 0;
+ retryFetch(id);
} else if (sponsorLookupRetries < 90 && !recheckStarted) {
recheckStarted = true;
//TODO lower when server becomes better (back to 1 second)
//some error occurred, try again in a second
- setTimeout(() => sponsorsLookup(id), 10000);
+ setTimeout(() => sponsorsLookup(id), 10000 + Math.random() * 30000);
sponsorLookupRetries++;
}
});
}
+function retryFetch(id: string): void {
+ if (!Config.config.refetchWhenNotFound) return;
+
+ sponsorDataFound = false;
+
+ //check if this video was uploaded recently
+ utils.wait(() => !!videoInfo).then(() => {
+ let dateUploaded = videoInfo?.microformat?.playerMicroformatRenderer?.uploadDate;
+
+ //if less than 3 days old
+ if (Date.now() - new Date(dateUploaded).getTime() < 259200000) {
+ //TODO lower when server becomes better
+ setTimeout(() => sponsorsLookup(id), 120000);
+ }
+ });
+
+ sponsorLookupRetries = 0;
+}
+
/**
* Only should be used when it is okay to skip a sponsor when in the middle of it
*
diff --git a/src/utils.ts b/src/utils.ts
index 43cdc68e..d95da7dc 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,5 +1,6 @@
import Config from "./config";
import { CategorySelection, SponsorTime, FetchResponse } from "./types";
+import { sha256 } from 'js-sha256';
import * as CompileConfig from "../config.json";
@@ -378,6 +379,20 @@ class Utils {
isFirefox(): boolean {
return typeof(browser) !== "undefined";
}
+
+ getHash(value: string, times=5000): string {
+ if (times <= 0) return "";
+
+ for (let i = 0; i < times; i++) {
+ let hash = sha256.create();
+ hash.update(value);
+ hash.hex();
+ value = hash.toString();
+ }
+
+ return value;
+ }
+
}
export default Utils; \ No newline at end of file