Compare commits

...

45 Commits
3.4 ... 3.6.2

Author SHA1 Message Date
Ajay Ramachandran
9d70332c9a bump version 2021-11-24 18:33:53 -05:00
Ajay Ramachandran
8150d38df0 New Crowdin updates (#1036) 2021-11-24 18:33:40 -05:00
Ajay Ramachandran
75b5c31d07 Fix filler category notice 2021-11-23 21:05:27 -05:00
Ajay Ramachandran
c007ac3d86 Add tooltip about filler category 2021-11-21 19:40:25 -05:00
Ajay Ramachandran
7218be73c6 Merge branch 'master' of https://github.com/ajayyy/SponsorBlock 2021-11-16 23:26:16 -05:00
Ajay Ramachandran
96693342a3 Fix start time messing up when end time too far in preview bar 2021-11-16 23:26:15 -05:00
Ajay Ramachandran
d2ff7b5c04 bump version 2021-11-09 22:47:24 -05:00
Ajay Ramachandran
9a0f1db31e New Crowdin updates (#1033) 2021-11-09 22:47:10 -05:00
Ajay Ramachandran
06da4d6556 Remove notice about highlight category update 2021-11-08 19:57:46 -05:00
Ajay Ramachandran
20d0c05049 Update manifest.json 2021-11-08 19:29:55 -05:00
Ajay Ramachandran
96e4957f71 Add filler category and allow mute intro, outro, preview 2021-11-08 19:19:00 -05:00
Ajay Ramachandran
9c5eeac239 Merge pull request #1029 from opl-/docs/readme-building
Add more detail to building section of readme
2021-11-03 19:38:12 -04:00
Ajay Ramachandran
e685697bbb Add back info about adjusting config 2021-11-03 19:36:45 -04:00
Ajay Ramachandran
752e515a1c Merge pull request #1018 from FlorianZahn/fontSizeFixTooltip
Makes rectangleTooltip fontSize bigger
2021-11-02 00:08:26 -04:00
Ajay Ramachandran
ca0f68bb7d Merge pull request #1019 from FlorianZahn/roundSubmitTimes
unsubmitted segments are initialized rounded to 3 digits
2021-11-02 00:08:10 -04:00
Ajay Ramachandran
34884026d9 New Crowdin updates (#1014) 2021-11-02 00:07:08 -04:00
Ajay Ramachandran
7a38bf0c08 bump version 2021-11-02 00:06:56 -04:00
Ajay Ramachandran
5adcec2ca5 Remove segment duration filter
Close #1031 #989
2021-11-02 00:06:40 -04:00
Ajay Ramachandran
36989907a2 Remove highlight skipping by clicking near it
Closes #973
2021-10-30 22:02:21 -04:00
opl-
db55778fd8 Add more detail to building section of readme 2021-10-29 20:59:21 +02:00
Ajay Ramachandran
41be51b384 formatting fixes 2021-10-26 18:37:37 -04:00
Ajay Ramachandran
e87efe2c67 bump version 2021-10-23 15:09:47 -04:00
Ajay Ramachandran
069299e968 Merge pull request #1021 from opl-/fix/wheel-edits
Fix mouse wheel can enter edit mode
2021-10-22 23:11:22 -04:00
opl-
4d09a603fe Fix mouse wheel can enter edit mode 2021-10-23 00:52:52 +02:00
Ajay Ramachandran
8b595af5e9 Fix skip to highlight not hiding when none 2021-10-22 01:50:17 -04:00
Ajay Ramachandran
41739a8799 Merge branch 'master' of https://github.com/ajayyy/SponsorBlock 2021-10-22 01:29:47 -04:00
Ajay Ramachandran
23bebbca7c Fix help page on mobile 2021-10-22 01:29:46 -04:00
Ajay Ramachandran
5f2af12150 bump version 2021-10-21 22:39:15 -04:00
Ajay Ramachandran
628abd03f0 Added swiping away for skip to highlight on mobile 2021-10-21 22:33:49 -04:00
Ajay Ramachandran
8e254c5807 Make bigger buttons on mobile skip button 2021-10-21 22:11:26 -04:00
Ajay Ramachandran
0647576d6f Add animation for skip to highlight on mobile 2021-10-21 21:58:43 -04:00
Ajay Ramachandran
c803ae9499 Add skip to highlight to mobile 2021-10-21 01:30:52 -04:00
FlorianZahn
95f45312e1 support for multiple poi categories 2021-10-21 04:19:26 +02:00
FlorianZahn
9dda9a583d unsubmitted segments are initialized rounded to 3 digits 2021-10-21 03:14:45 +02:00
Ajay Ramachandran
d1e6421e5b Fix type errors 2021-10-20 19:33:48 -04:00
Ajay Ramachandran
bd0a6aaaad Hide submissions on mobile 2021-10-20 19:28:00 -04:00
Ajay Ramachandran
1e8b176c69 Allow finer tuned previewing 2021-10-19 22:57:46 -04:00
Ajay Ramachandran
14018798f7 Add wiki links to options 2021-10-19 19:10:27 -04:00
Ajay Ramachandran
a0d06ca6e8 Fix start time in preview bar in wrong place 2021-10-19 19:00:30 -04:00
FlorianZahn
95fe1eef6f Makes rectangleTooltip fontSize bigger 2021-10-19 21:38:44 +02:00
Ajay Ramachandran
38b1dda20b Add support for required segment parameter 2021-10-18 19:51:44 -04:00
Ajay Ramachandran
07cf1764dc bump version 2021-10-17 19:12:38 -04:00
Ajay Ramachandran
aeb9c5b203 New Crowdin updates (#1012) 2021-10-17 19:12:09 -04:00
Ajay Ramachandran
ad3f0c1a06 Don't filter segments when switching videos still
Fixes #989
2021-10-16 13:41:07 -04:00
Ajay Ramachandran
4bc180077e Fix segments sometimes displaying after the seek bar if at the end 2021-10-16 13:15:47 -04:00
53 changed files with 1270 additions and 334 deletions

View File

@@ -60,21 +60,24 @@ You can read the API docs [here](https://wiki.sponsor.ajay.app/index.php/API_Doc
# Building
You must have Node.js 16 installed.
You must have [Node.js 16](https://nodejs.org/) and npm installed.
Rename `config.json.example` to `config.json` and adjust configuration as desired.
1. Copy the file `config.json.example` to `config.json` and adjust configuration as desired.
There are also other build scripts available. Install `npm`, then run `npm install` in the repository to install dependencies.
- You will need to repeat this step in the future if you get build errors related to `CompileConfig`. This can happen for example when a new category is added.
Run `npm run build` to generate a Chrome extension.
2. Run `npm install` in the repository to install dependencies.
Use `npm run build:firefox` to generate a Firefox extension.
3. Run `npm run build:dev` (for Chrome) or `npm run build:dev:firefox` (for Firefox) to generate a development version of the extension with source maps.
The result is in `dist`. This can be loaded as an unpacked extension
- You can also run `npm run build` (for Chrome) or `npm run build:firefox` (for Firefox) to generate a production build.
## Developing with a clean profile
4. The built extension is now in `dist/`. You can load it in Chrome as an [unpacked extension](https://developer.chrome.com/docs/extensions/mv3/getstarted/#manifest) or in Firefox as a [temporary extension](https://developer.mozilla.org/en-US/docs/Tools/about:debugging#loading_a_temporary_extension).
### Developing with a clean profile and hot reloading
Run `npm run dev` (for Chrome) or `npm run dev:firefox` (for Firefox) to run the extension using a clean browser profile with hot reloading. This uses [`web-ext run`](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#commands).
Run `npm run dev` to run the extension using a clean browser profile with hot reloading. Use `npm run dev:firefox` for Firefox. This uses [`web-ext run`](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#commands).
Known chromium bug: Extension is not loaded properly on first start. Visit `chrome://extensions/` and reload the extension.
For Firefox for Android, use `npm run dev:firefox-android -- --adb-device <ip-address of the device>`. See the [Firefox documentation](https://extensionworkshop.com/documentation/develop/developing-extensions-for-firefox-for-android/#debug-your-extension) for more information.

View File

@@ -2,14 +2,15 @@
"serverAddress": "https://sponsor.ajay.app",
"testingServerAddress": "https://sponsor.ajay.app/test",
"serverAddressComment": "This specifies the default SponsorBlock server to connect to",
"categoryList": ["sponsor", "selfpromo", "interaction", "poi_highlight", "intro", "outro", "preview", "music_offtopic"],
"categoryList": ["sponsor", "selfpromo", "interaction", "poi_highlight", "intro", "outro", "preview", "filler", "music_offtopic"],
"categorySupport": {
"sponsor": ["skip", "mute"],
"selfpromo": ["skip", "mute"],
"interaction": ["skip", "mute"],
"intro": ["skip"],
"outro": ["skip"],
"preview": ["skip"],
"intro": ["skip", "mute"],
"outro": ["skip", "mute"],
"preview": ["skip", "mute"],
"filler": ["skip", "mute"],
"music_offtopic": ["skip"],
"poi_highlight": ["skip"]
},
@@ -20,6 +21,7 @@
"intro": "https://wiki.sponsor.ajay.app/w/Intermission/Intro_Animation",
"outro": "https://wiki.sponsor.ajay.app/w/Endcards/Credits",
"preview": "https://wiki.sponsor.ajay.app/w/Preview/Recap",
"filler": "https://wiki.sponsor.ajay.app/w/Filler_Tangent",
"music_offtopic": "https://wiki.sponsor.ajay.app/w/Music:_Non-Music_Section",
"poi_highlight": "https://wiki.sponsor.ajay.app/w/Highlight",
"guidelines": "https://wiki.sponsor.ajay.app/w/Guidelines",

View File

@@ -1,7 +1,7 @@
{
"name": "__MSG_fullName__",
"short_name": "SponsorBlock",
"version": "3.4",
"version": "3.6.2",
"default_locale": "en",
"description": "__MSG_Description__",
"homepage_url": "https://sponsor.ajay.app",

View File

@@ -4,7 +4,7 @@
"description": "Name of the extension."
},
"Description": {
"message": "Прескачайте спонсорства, напомняния за абониране, и други неща в YouTube клипове. Докладвайте спонсорства на клиповете които гледате, за да спестите време на други потребители.",
"message": "Прескачайте спонсорства, напомняния за абониране и други неща в клипове в YouTube. Докладвайте спонсорства в клиповете, които гледате, за да спестите време на други потребители.",
"description": "Description of the extension."
},
"400": {
@@ -23,7 +23,7 @@
"message": "сегмент"
},
"Segments": {
"message": "сегменти"
"message": "сегмента"
},
"upvoteButtonInfo": {
"message": "Одобряване на това предложение"
@@ -86,7 +86,7 @@
"message": "Отказ от създаването на сегмент"
},
"noVideoID": {
"message": "Не е намерен видеоклип в YouTube.\nАко това е неправилно, опреснете раздела."
"message": "Не е намерен видеоклип в YouTube.\nАко това не е правилно, опреснете раздела."
},
"refreshSegments": {
"message": "Опресняване на сегментите"
@@ -131,7 +131,7 @@
"message": "Изпратени сегменти"
},
"savedPeopleFrom": {
"message": "Вие сте помогнали на хората да пропуснат "
"message": "Помогнахте на хората да пропуснат "
},
"viewLeaderboard": {
"message": "Класиране"
@@ -156,7 +156,7 @@
"message": "Това се използва на страницата с публичната статистика, за да покаже колко сте допринесли. Вижте го"
},
"Username": {
"message": "Потребителско име"
"message": "Потребител"
},
"setUsername": {
"message": "Задайте потребителско име"
@@ -528,7 +528,7 @@
"message": "Платена промоция, платени препоръки и директни реклами. Не за самореклама или безплатни препоръки за каузи/създатели/уебсайтове/продукти, които се харесват на автора."
},
"category_selfpromo": {
"message": "Неплатени/Самореклама"
"message": "Неплатена/Самореклама"
},
"category_selfpromo_description": {
"message": "Подобно на „спонсорство“, но за безплатна реклама или самореклама. Това включва търговия със стоки, дарения или информация с кого каналът има сътрудничество."
@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Бързо обобщение на предишни епизоди или преглед на това, което предстои по-късно в текущия видеоклип. Предназначен за монтирани заедно клипове, а не за речеви обобщения."
},
"category_filler": {
"message": "Пълнеж извън темата"
},
"category_filler_description": {
"message": "Съпътстващи сцени, добавени само за пълнеж или хумор, които не са необходими за разбирането на основното съдържание на видеоклипа. Това не трябва да включва сегменти, предоставящи контекст или справочни данни."
},
"category_filler_short": {
"message": "Пълнеж"
},
"category_music_offtopic": {
"message": "Музика: Част без музика"
},
@@ -700,7 +709,7 @@
"message": "Грешно/Неправилно време"
},
"incorrectCategory": {
"message": "Грешна категория"
"message": "Промяна на категорията"
},
"nonMusicCategoryOnMusic": {
"message": "Това видео е категоризирано като музика. Сигурни ли сте, че това има спонсор? Ако това всъщност е „Немузикален сегмент“, отворете опциите на разширението и активирайте тази категория. След това можете да изпратите този сегмент като „Немузикален“ вместо като спонсор. Моля, прочетете указанията, ако сте объркани."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Заслуги"
},
"highlightNewFeature": {
"message": "Ново! Отидете до съществената част на видеоклипа с едно щракване с новата категория „Акцент“"
},
"LearnMore": {
"message": "Научете повече"
},
"CopyDownvoteButtonInfo": {
"message": "Гласуване против и създаване на локално копие, за да го изпратите отново"
},
"OpenCategoryWikiPage": {
"message": "Отваряне на wiki страницата на тази категория."
},
"CopyAndDownvote": {
"message": "Копиране и гласуване против"
},
"ContinueVoting": {
"message": "Продължаване на гласуването"
},
"ChangeCategoryTooltip": {
"message": "Това незабавно ще се приложи към вашите сегменти"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Използвайте колелото на мишката, докато държите курсора върху полето за редактиране, за да коригирате бързо времето. Комбинации с клавиша ctrl или shift могат да се използват за фина настройка на промените."
},
"fillerNewFeature": {
"message": "Ново! Пропускайте части извън темата и шегите с категорията „Пълнеж“. Активирайте я в опциите"
}
}

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Rychlé shrnutí předchozích epizod nebo náhled toho, co se objeví v aktuálním videu. Myšleno pro upravené sloučené klipy, ne pro mluvená shrnutí."
},
"category_filler": {
"message": "Výplň"
},
"category_filler_description": {
"message": "Výplňové scény přidané jen jako přídavek nebo humor, které nejsou vyžadovány pro pochopení hlavního obsahu videa. Toto by nemělo zahrnovat segmenty poskytující kontext nebo podrobnosti na pozadí."
},
"category_filler_short": {
"message": "Výplň"
},
"category_music_offtopic": {
"message": "Hudba: nehudební sekce"
},
@@ -700,7 +709,7 @@
"message": "Nesprávné / špatné časování"
},
"incorrectCategory": {
"message": "Špatná kategorie"
"message": "Změnit kategorii"
},
"nonMusicCategoryOnMusic": {
"message": "Toto video je kategorizováno jako hudba. Jste si jisti, že je v něm sponzorská sekce? Pokud se opravdu jedná o \"Nehudební segment\", otevřete nastavení a povolte tuto kategorii. Poté budete moct odeslat segment jako \"Nehudební\" místo sponzorského. Pokud jste zmateni, přečtěte si prosím pokyny."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Poděkování"
},
"highlightNewFeature": {
"message": "Novinka! Dostaňte se k pointě videa jedním kliknutím s novou kategorií zvýraznění"
},
"LearnMore": {
"message": "Zjistit více"
},
"CopyDownvoteButtonInfo": {
"message": "Zahlasuje proti a vytvoří pro vás lokální kopii pro opětovné odeslání"
},
"OpenCategoryWikiPage": {
"message": "Otevřít wiki stránku této kategorie."
},
"CopyAndDownvote": {
"message": "Zkopírovat a hlasovat proti"
},
"ContinueVoting": {
"message": "Pokračovat v hlasování"
},
"ChangeCategoryTooltip": {
"message": "Toto bude okamžitě platit pro vaše segmenty"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Použijte kolečko myši při přechodu přes editační okno pro rychlou úpravu času. Kombinace kláves Ctrl nebo Shift mohou být použity k doladění změn."
},
"fillerNewFeature": {
"message": "Novinka! Překakujte výplňové části a vtipy s kategorií výplň. Povolte ji v nastavení"
}
}

View File

@@ -52,6 +52,9 @@
"reskip": {
"message": "Spring over"
},
"unmute": {
"message": "Lyd til"
},
"paused": {
"message": "Sat på pause"
},
@@ -115,7 +118,29 @@
"submitCheck": {
"message": "Er du sikker på, at du vil indsende dette?"
},
"whitelistChannel": {
"message": "Hvidliste kanal"
},
"removeFromWhitelist": {
"message": "Fjern kanal fra hvidliste"
},
"voteOnTime": {
"message": "Stem På Et Segment"
},
"Submissions": {
"message": "Indsendelser"
},
"savedPeopleFrom": {
"message": "Du har reddet folk fra "
},
"viewLeaderboard": {
"message": "Topliste"
},
"recordTimesDescription": {
"message": "Indsend"
},
"submissionEditHint": {
"message": "Sektionsredigering vises, når du klikker på afsend",
"description": "Appears in the popup to inform them that editing has been moved to the video player."
}
}

View File

@@ -98,7 +98,7 @@
"message": "Abgestimmt!"
},
"serverDown": {
"message": "Der Server ist anscheinend offline. Bitte unverzüglich dem Entwickler melden."
"message": "Der Server ist anscheinend offline. Bitte kontaktiere den Entwickler unverzüglich."
},
"connectionError": {
"message": "Ein Verbindungsfehler ist aufgetreten. Fehlermeldung: "
@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Kurze Zusammenfassung bisheriger Videos oder eine Vorschau auf das aktuelle Video. Für zusammengeschnittene Clips gedacht, jedoch nicht für mündliche Zusammenfassungen."
},
"category_filler": {
"message": "Füller/Nebensächliches"
},
"category_filler_description": {
"message": "Nebensächliche Szenen, die nur als Füller oder Witz dienen und nicht benötigt sind um den Hauptinhalt des Videos zu verstehen. Dies bezieht sich nicht auf Segmente, die Kontext oder Hintergrunddetails liefern."
},
"category_filler_short": {
"message": "Füller"
},
"category_music_offtopic": {
"message": "Musikvideoteile ohne Musik"
},
@@ -573,7 +582,7 @@
"message": "Musikvideoteile ohne Musik"
},
"category_poi_highlight": {
"message": "Hervorheben"
"message": "Highlight"
},
"category_poi_highlight_description": {
"message": "Der Teil des Videos, nach dem die meisten Leute suchen, ähnlich wie \"Video startet bei x\" Kommentare."
@@ -700,7 +709,7 @@
"message": "Nicht korrekt oder falsches Timing"
},
"incorrectCategory": {
"message": "Falsche Kategorie"
"message": "Kategorie ändern"
},
"nonMusicCategoryOnMusic": {
"message": "Dieses Video ist als Musikvideo kategorisiert. Bist du dir sicher, dass es ein gesponsertes Videosegment hat? Wenn dies tatsächlich ein Musikvideoteil ohne Musik ist, öffne die Optionen von SponsorBlock und aktiviere diese Kategorie. Danach kannst du dieses Segment als solches markieren. Bitte lese die Richtlinien, wenn du dir nicht sicher bist."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Mitwirkende"
},
"highlightNewFeature": {
"message": "Neu! Gehe mit einem Klick zum Punkt des Videos mit der neuen \"Hervorheben\" Kategorie"
},
"LearnMore": {
"message": "Erfahre mehr"
},
"CopyDownvoteButtonInfo": {
"message": "Abwerten, und eine lokale Kopie zum erneuten Einreichen erstellen"
},
"OpenCategoryWikiPage": {
"message": "Öffne den Wiki-Artikel dieser Kategorie."
},
"CopyAndDownvote": {
"message": "Kopieren und abwerten"
},
"ContinueVoting": {
"message": "Bewerten fortsetzen"
},
"ChangeCategoryTooltip": {
"message": "Dies wirkt sich sofort auf eigene Segmente aus"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Benutze das Mausrad während der Mauszeiger über dem Eingabefeld schwebt um die Zeit schnell anzupassen. Benutze Strg bzw. Shift für gröbere/genauere Änderungen."
},
"fillerNewFeature": {
"message": "Neu! Überspringe Nebensächliches und Witze mit der Füller-Kategorie. Aktiviere sie in den Optionen"
}
}

View File

@@ -3,6 +3,22 @@
"message": "SponsorBlock for YouTube - Skip Sponsorships",
"description": "Name of the extension."
},
"Description": {
"message": "Παράλειψη χορηγιών, επαιτείας συνδρομής και άλλων στα βίντεο του YouTube. Αναφέρετε χορηγούς σε βίντεο που βλέπετε για να εξοικονομήσετε τον χρόνο άλλων.",
"description": "Description of the extension."
},
"400": {
"message": "Ο διακομιστής είπε πως το αίτημα αυτό ήταν άκυρο"
},
"429": {
"message": "Έχετε υποβάλει πάρα πολλές ώρες χορηγών για αυτό το βίντεο, είστε σίγουροι ότι υπάρχουν τόσες πολλές;"
},
"409": {
"message": "Αυτό έχει ήδη υποβληθεί"
},
"channelWhitelisted": {
"message": "Το κανάλι προστέθηκε στην λίστα επιτρεπόμενων!"
},
"Segment": {
"message": "τμήμα"
},
@@ -139,9 +155,6 @@
"chooseACategory": {
"message": "Επιλέξτε μια κατηγορία"
},
"incorrectCategory": {
"message": "Λάθος κατηγορία"
},
"multipleSegments": {
"message": "Πολλαπλά Τμήματα"
},

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Quick recap of previous episodes, or a preview of what's coming up later in the current video. Meant for edited together clips, not for spoken summaries."
},
"category_filler": {
"message": "Filler Tangent"
},
"category_filler_description": {
"message": "Tangential scenes added only for filler or humor that are not required to understand the main content of the video. This should not include segments providing context or background details."
},
"category_filler_short": {
"message": "Filler"
},
"category_music_offtopic": {
"message": "Music: Non-Music Section"
},
@@ -805,9 +814,6 @@
"Credits": {
"message": "Credits"
},
"highlightNewFeature": {
"message": "New! Get to the point of the video with one click with the new highlight category"
},
"LearnMore": {
"message": "Learn More"
},
@@ -828,5 +834,8 @@
},
"SponsorTimeEditScrollNewFeature": {
"message": "Use your mousewheel while hovering over the edit box to quickly adjust the time. Combinations of the ctrl or shift key can be used to fine tune the changes."
},
"fillerNewFeature": {
"message": "New! Skip tangents and jokes with the filler category. Enable in options"
}
}

View File

@@ -700,7 +700,7 @@
"message": "Tiempo incorrecto/equivocado"
},
"incorrectCategory": {
"message": "Categoría Incorrecta"
"message": "Cambiar Categoría"
},
"nonMusicCategoryOnMusic": {
"message": "Este video está clasificado como música. ¿Estás seguro de que esto tiene un sponsor? Si esto es realmente un \"Segmento Sin Música\", abre las opciones de la extensión y activa esta categoría. Entonces, puedes enviar este segmento como \"Sin Música\" en lugar de sponsor. Por favor, lee las instrucciones si estás confundido/a."
@@ -805,12 +805,24 @@
"Credits": {
"message": "Créditos"
},
"highlightNewFeature": {
"message": "¡Nuevo! Llega al punto del video con un solo clic con la nueva categoría \"destacado\""
},
"LearnMore": {
"message": "Aprenda Más"
},
"CopyDownvoteButtonInfo": {
"message": "Vota negativamente y crea una copia local para que la puedas volver a enviar"
},
"OpenCategoryWikiPage": {
"message": "Abrir la página de la wiki de esta categoría."
},
"CopyAndDownvote": {
"message": "Copiar y votar negativamente"
},
"ContinueVoting": {
"message": "Continuar Votando"
},
"ChangeCategoryTooltip": {
"message": "Esto se aplicará instantáneamente a tus segmentos"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Utilice la rueda del ratón mientras pasa el cursor por encima del cuadro de edición para ajustar el tiempo. Se pueden utilizar combinaciones de la tecla ctrl o shift para afinar los cambios."
}

View File

@@ -17,7 +17,7 @@
"message": "See on juba varasemalt saadetud"
},
"channelWhitelisted": {
"message": "Kanal lubamisnimekirjas!"
"message": "Kanal ignoreerimisnimekirjas!"
},
"Segment": {
"message": "segmendi"
@@ -41,7 +41,7 @@
"message": "Laadimine..."
},
"Hide": {
"message": "Ära näita kunagi"
"message": "Ära kunagi näita"
},
"hitGoBack": {
"message": "Vajuta \"kuva uuesti\", et jõuda sinna, kust tulid."
@@ -119,10 +119,10 @@
"message": "Kas soovid kindlasti selle saata?"
},
"whitelistChannel": {
"message": "Lisa kanal lubamisnimekirja"
"message": "Lisa kanal ignoreerimisnimekirja"
},
"removeFromWhitelist": {
"message": "Eemalda kanal lubamisnimekirjast"
"message": "Eemalda kanal ignoreerimisnimekirjast"
},
"voteOnTime": {
"message": "Hääleta segmendi sobivust"
@@ -259,7 +259,7 @@
"description": "The first line of the message displayed after the notice was upgraded."
},
"noticeUpdate2": {
"message": "Kui sulle see ikka ei meeldi, vajuta \"ära näita kunagi\" nuppu.",
"message": "Kui sulle see ikka ei meeldi, vajuta \"ära kunagi näita\" nuppu.",
"description": "The second line of the message displayed after the notice was upgraded."
},
"setSkipShortcut": {
@@ -506,7 +506,7 @@
"message": "Lõikelauale kirjutamine ebaõnnestus"
},
"copyDebugInformationOptions": {
"message": "Kopeerib lõikelauale info, mida saad arendajale anda veast teatamisel või siis, kui arendaja seda sinult taotleb. Tundlik info, sealhulgas sinu kasutaja ID, lubamisnimekirjas kanalid ning kohandatud serveri aadress on eemaldatud. Siiski see sisaldab teatud infot, nagu sinu kasutajaagent, brauser, opsüsteem ning laienduse versiooninumber."
"message": "Kopeerib lõikelauale info, mida saad arendajale anda veast teatamisel või siis, kui arendaja seda sinult taotleb. Tundlik info, sealhulgas sinu kasutaja ID, ignoreerimisnimekirjas kanalid ning kohandatud serveri aadress on eemaldatud. Siiski see sisaldab teatud infot, nagu sinu kasutajaagent, brauser, opsüsteem ning laienduse versiooninumber."
},
"copyDebugInformationComplete": {
"message": "Silumisinfo on lõikelauale kopeeritud. Võid sellelt vabalt eemaldada mistahes info, mida ei soovi jagada. Salvesta see tekstifaili või kleebi vearaportisse."
@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Kiire kokkuvõte eelmistest episoodidest või eelvaade videos hiljem tulevast. Mõeldud valmis töödeldud klippide, mitte suuliste kokkuvõtete jaoks."
},
"category_filler": {
"message": "Täitesisu"
},
"category_filler_description": {
"message": "Video täiteks või huumori eesmärgil lisatud sisu, mis ei ole vajalik video põhieesmärgi mõistmiseks. Selle alla ei kuulu segmendid, mis annavad kontekstiteavet või taustainfot."
},
"category_filler_short": {
"message": "Täide"
},
"category_music_offtopic": {
"message": "Muusika: mitte-muusika jaotis"
},
@@ -691,7 +700,7 @@
"message": "Sunnitud kanalikontroll enne vahelejätmist"
},
"whatForceChannelCheck": {
"message": "Vaikimisi jätab see segmendid vahele juba siis, kui veel kanalitki ei tea. Vaikimisi võidakse mõned video alguses olevad segmendid lubamisnimekirjas olevatel kanalitel vahele jätta. Selle valiku lubamine väldib seda, kuid võib lisada vahelejätmistele väikese viivituse, sest kanali ID hankimine võib aega võtta. Viivitus võib kiire interneti puhul olla märkamatu."
"message": "Vaikimisi jätab see segmendid vahele juba siis, kui veel kanalitki ei tea. Vaikimisi võidakse mõned video alguses olevad segmendid ignoreerimisnimekirjas olevatel kanalitel vahele jätta. Selle valiku lubamine väldib seda, kuid võib lisada vahelejätmistele väikese viivituse, sest kanali ID hankimine võib aega võtta. Viivitus võib kiire interneti puhul olla märkamatu."
},
"forceChannelCheckPopup": {
"message": "Kaalu valiku \"Sunnitud kanalikontroll enne vahelejätmist\" lubamist"
@@ -700,7 +709,7 @@
"message": "Sobimatu/vale ajastus"
},
"incorrectCategory": {
"message": "Vale kategooria"
"message": "Muuda kategooriat"
},
"nonMusicCategoryOnMusic": {
"message": "See video on muusikana kategoriseeritud. Kas oled kindel, et sellel on sponsor? Kui see on tegelikult \"mitte-muusika segment\", ava laienduse valikud ning luba see kategooria. Seejärel saad selle segmendi saata \"mitte-muusika\" kategoorias. Segaduse korral palun loe üle juhised."
@@ -754,19 +763,58 @@
"helpPageReviewOptions": {
"message": "Palun vaata allolevad valikud üle"
},
"helpPageHowSkippingWorks": {
"message": "Kuidas vahelejätmine töötab"
},
"Submitting": {
"message": "Segmentide saatmine"
},
"Editing": {
"message": "Redigeerimine"
},
"helpPageTooSlow": {
"message": "See on liiga aeglane"
},
"helpPageCopyOfDatabase": {
"message": "Kas ma saaksin andmebaasist koopia? Mis juhtub, kui sa kaod?"
},
"helpPageCopyOfDatabase1": {
"message": "Andmebaas on avalik ning saadaval aadressil"
},
"helpPageCopyOfDatabase2": {
"message": "Lähtekood on vabalt saadaval. Seega, isegi kui minuga midagi juhtub, ei ole sinu saadetud segmendid kadunud."
},
"helpPageNews": {
"message": "Uudised ja kuidas see on valmistatud"
},
"helpPageSourceCode": {
"message": "Kust ma saan selle lähtekoodi?"
},
"Credits": {
"message": "Tiitrid"
},
"highlightNewFeature": {
"message": "Uus! Mine ühe klõpsuga video eesmärgi juurde uue \"esiletõstu\" kategooriaga"
},
"LearnMore": {
"message": "Lisateave"
},
"CopyDownvoteButtonInfo": {
"message": "Annab vastuhääle ja loob kohaliku koopia, mida saad uuesti saata"
},
"OpenCategoryWikiPage": {
"message": "Ava selle kategooria vikileht."
},
"CopyAndDownvote": {
"message": "Kopeeri ja anna vastuhääl"
},
"ContinueVoting": {
"message": "Jätka hääletamist"
},
"ChangeCategoryTooltip": {
"message": "See rakendub sinu segmentidele koheselt"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Kasuta hiirekursorit muutmiskasti kohal, et kiirelt aega reguleerida. Täpsemaks muutmiseks hoia kerimise ajal all Ctrl või Shift klahvi."
"message": "Kiireks aja reguleerimiseks keri hiirega muutmiskasti kohal. Täpsemaks reguleerimiseks hoia kerimise ajal all Ctrl või Shift klahvi."
},
"fillerNewFeature": {
"message": "Uus! Jäta täitesisu ja naljad vahele täitesisu kategooriaga. Luba valikutes"
}
}

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Nopea kertaus aiemmista jaksoista, tai esikatselu siitä, mitä on tulossa myöhemmin nykyisessä videossa. Tarkoitettu yhteen editoituja klippejä varten, ei puhutuille yhteenvedoille."
},
"category_filler": {
"message": "Epäolennainen täytesisältö"
},
"category_filler_description": {
"message": "Täytteeksi tai huumoriksi lisättyjä sekundaarisia kohtauksia, joita ei vaadita videon pääsisällön ymmärtämiseen. Tämän ei tulisi sisältää segmenttejä, jotka tarjoavat kontekstia tai taustatietoja."
},
"category_filler_short": {
"message": "Täytesisältö"
},
"category_music_offtopic": {
"message": "Musiikki: Musiikiton osa"
},
@@ -700,7 +709,7 @@
"message": "Virheellinen/väärä aika"
},
"incorrectCategory": {
"message": "Väärä kategoria"
"message": "Vaihda kategoria"
},
"nonMusicCategoryOnMusic": {
"message": "Tämä video on luokiteltu musiikiksi. Oletko varma, että siinä on sponsori? Jos tämä on oikeasti \"Musiikiton segmentti\", avaa laajennuksen asetukset ja ota tämä kategoria käyttöön. Sitten voit lähettää tämän segmentin oikeassa kategoriassa. Lue säännöt, jos olet vielä hämilläsi."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Tekijät"
},
"highlightNewFeature": {
"message": "Uutta! Pääse videon asiaan yhdellä klikkauksella uudella kohokohta kategorialla"
},
"LearnMore": {
"message": "Opi lisää"
},
"CopyDownvoteButtonInfo": {
"message": "Äänestää alas ja luo paikallisen kopion, jonka voit lähettää uudelleen"
},
"OpenCategoryWikiPage": {
"message": "Avaa tämän kategorian wiki-sivu."
},
"CopyAndDownvote": {
"message": "Kopioi ja äänestä alas"
},
"ContinueVoting": {
"message": "Jatka äänestystä"
},
"ChangeCategoryTooltip": {
"message": "Tämä vaikuttaa sinun segmentteihin välittömästi"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Käytä hiiren rullaa samalla kun osoitin on muokkauslaatikon päällä säätääksesi aikaa nopeasti. Ctrl- tai Shift-näppäimen yhdistelmiä voi käyttää muutoksien hienosäätelyyn."
},
"fillerNewFeature": {
"message": "Uutta! Ohita epäolennaiset kohdat ja vitsit täytesisältö kategorialla. Ota se käyttöön asetuksista"
}
}

View File

@@ -528,7 +528,7 @@
"message": "Promotion rémunérée, parrainage rémunéré et publicité directe. Pas pour l'autopromotion ou les présentations gratuites de causes, de créateurs, de sites web ou de produits qu'ils aiment."
},
"category_selfpromo": {
"message": "Non rémunéré/autopromotion"
"message": "Promotion non rémunérée/autopromotion"
},
"category_selfpromo_description": {
"message": "Semblable au \"sponsor\", excepté pour la promotion non rémunérée ou l'auto-promotion. Cela inclut les marchandises, les dons et les informations sur leurs collaborateurs."
@@ -700,7 +700,7 @@
"message": "Segment de mauvaise qualité"
},
"incorrectCategory": {
"message": "Mauvaise catégorie"
"message": "Changer de catégorie"
},
"nonMusicCategoryOnMusic": {
"message": "Cette vidéo est catégorisée comme de la musique. Êtes-vous sûr qu'elle est sponsorisée? S'il s'agit en fait d'un \"Segment non musical\", allez dans les options de l'extension et activez cette catégorie. Ensuite, vous pourrez soumettre ce segment en tant que \"Segment non musical\" au lieu de sponsor. Lisez les instructions en cas de confusion."
@@ -805,12 +805,24 @@
"Credits": {
"message": "Crédits"
},
"highlightNewFeature": {
"message": "Nouveau! Aller à l'essentiel de la vidéo en un clic avec la nouvelle catégorie points essentiels"
},
"LearnMore": {
"message": "En savoir plus"
},
"CopyDownvoteButtonInfo": {
"message": "Vote négatif et crée une copie locale que vous pouvez soumettre à nouveau"
},
"OpenCategoryWikiPage": {
"message": "Ouvrez la page wiki de cette catégorie."
},
"CopyAndDownvote": {
"message": "Copier et voter contre"
},
"ContinueVoting": {
"message": "Continuer à voter"
},
"ChangeCategoryTooltip": {
"message": "Cela s'appliquera instantanément à vos segments"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Utilisez la molette de votre souris en survolant la boîte d'édition pour ajuster rapidement le minutage. Les combinaisons de touches Ctrl ou Shift peuvent être utilisées pour affiner les modifications."
}

View File

@@ -52,6 +52,9 @@
"reskip": {
"message": "Preskoči opet"
},
"unmute": {
"message": "Uključi zvuk"
},
"paused": {
"message": "Pauzirano"
},
@@ -79,6 +82,15 @@
"sponsorEnd": {
"message": "Isječak završava sada"
},
"sponsorCancel": {
"message": "Otkaži Kreiranje Segmenta"
},
"noVideoID": {
"message": "Nijedan YouTube video nije pronađen.\nAko ovo nije točno, osvježite karticu."
},
"refreshSegments": {
"message": "Osvježi segmente"
},
"success": {
"message": "Uspjeh!"
},
@@ -97,15 +109,33 @@
"openPopup": {
"message": "Otvori okvir SponsorBlock"
},
"closePopup": {
"message": "Zatvori izbornik"
},
"SubmitTimes": {
"message": "Podnesi isječke"
},
"submitCheck": {
"message": "Jesi li siguran da želiš unijeti ovo?"
},
"whitelistChannel": {
"message": "Dopusti kanal"
},
"removeFromWhitelist": {
"message": "Izbaci kanal iz bijele liste"
},
"voteOnTime": {
"message": "Glasaj za isječak"
},
"Submissions": {
"message": "Podnesci"
},
"savedPeopleFrom": {
"message": "Sačuvali ste ljude od"
},
"viewLeaderboard": {
"message": "Ljestvica"
},
"recordTimesDescription": {
"message": "Pošalji"
},
@@ -113,21 +143,54 @@
"message": "Uređivanje dijela prikazat će se nakon što pritisneš gumb za slanje",
"description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
"message": "Savjet: Možete namjestiti tipke za podnošenje u opcijama"
},
"clearTimesButton": {
"message": "Očisti vremena"
},
"submitTimesButton": {
"message": "Unesi vremena"
},
"publicStats": {
"message": "Ovo se koristi na stranici sa javnim statistikama da se pokaže koliko se pridonijeli. Pogledajte"
},
"Username": {
"message": "Korisničko ime"
},
"setUsername": {
"message": "Postavi korisničko ime"
},
"copyPublicID": {
"message": "Kopiraj javni UserID"
},
"discordAdvert": {
"message": "Pridružite nam se u službenoj Discord zajednici i pošaljite svoje prijedloge i povrate informacije!"
},
"hideThis": {
"message": "Sakrijte ovo"
},
"Options": {
"message": "Opcije"
},
"showButtons": {
"message": "Pokažite gumbove na YouTube Player-u"
},
"hideButtons": {
"message": "Sakrite gumbove na YouTube Player-u"
},
"hideButtonsDescription": {
"message": "Ovo sakrije gumbove za pridonose segmenta za preskočiti koje se pokažu na YouTuve Player-u."
},
"showSkipButton": {
"message": "Ostavite gumb za preskakanje"
},
"showInfoButton": {
"message": "Pokažite gumb za Informacije na YouTube Player-u"
},
"hideInfoButton": {
"message": "Sakrijte gumb za Informacije na YouTube Player-u"
},
"showSkipNotice": {
"message": "Pokaži obavijest nakon preskakanja isječka"
},
@@ -309,9 +372,6 @@
"downvoteDescription": {
"message": "Neispravno/krivo vrijeme"
},
"incorrectCategory": {
"message": "Kriva kategorija"
},
"nonMusicCategoryOnMusic": {
"message": "Ovaj je video kategoriziran kao glazba. Je li stvarno ima sponzora? Ako je ovo zapravo „Ne-glazbeni segment”, otvori opcije proširenja i aktiviraj ovu kategoriju. Zatim ovaj segment možeš posalti kao „Ne-glazbeni” umjesto sponzora. Pročitaj smjernice ako nešto nije jasno."
},

View File

@@ -23,7 +23,7 @@
"message": "szegmens"
},
"Segments": {
"message": "szegmensek"
"message": "szegmens"
},
"upvoteButtonInfo": {
"message": "Részlet felszavazása"
@@ -52,6 +52,9 @@
"reskip": {
"message": "Újra-átugrás"
},
"unmute": {
"message": "Némítás feloldása"
},
"paused": {
"message": "Szüneteltetve"
},
@@ -80,7 +83,7 @@
"message": "Szegmens vége"
},
"sponsorCancel": {
"message": "Szegmens Készítés Visszavonása"
"message": "Szegmens készítés visszavonása"
},
"noVideoID": {
"message": "Nem találtunk YouTube videót.\nHa ez helytelen, frissítsd a lapot."
@@ -98,7 +101,7 @@
"message": "Úgy tűnik a szerver nem működik. Kérjük, mihamarabb értesítse a fejlesztőket."
},
"connectionError": {
"message": "Kapcsolódási probléma merült fel. Error kód: "
"message": "Kapcsolódási probléma merült fel. Hibakód: "
},
"clearTimes": {
"message": "Szegmensek törlése"
@@ -128,7 +131,7 @@
"message": "Beküldések"
},
"savedPeopleFrom": {
"message": "Megspóroltál másoknak "
"message": "Megspóroltál másoknak: "
},
"viewLeaderboard": {
"message": "Ranglista"
@@ -137,17 +140,17 @@
"message": "Küldés"
},
"submissionEditHint": {
"message": "A szegmens szerkesztés azután fog megjelenni miután a közzétételre kattintasz",
"message": "A szegmens szerkesztés azután fog megjelenni, hogy a beküldésre kattintasz",
"description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
"message": "Tipp: A beállításokban készíthetsz gyorsbillentyűket a közzétetelhez"
"message": "Tipp: A beállításokban megadhatsz gyorsbillentyűket a beküldéshez"
},
"clearTimesButton": {
"message": "Időpontok törlése"
},
"submitTimesButton": {
"message": "Időpontok megadása"
"message": "Időpontok beküldése"
},
"publicStats": {
"message": "Ezt használja a nyilvános ranglistán, hogy megmutassa mennyit járult hozzá. Nézze meg"
@@ -158,6 +161,9 @@
"setUsername": {
"message": "Felhasználónév megadása"
},
"copyPublicID": {
"message": "Nyilvános UserID másolása"
},
"discordAdvert": {
"message": "Csatlakozzon a hivatalos discord szerverhez, hogy javaslatokat és visszajelzést adhasson!"
},
@@ -176,6 +182,9 @@
"hideButtonsDescription": {
"message": "Ez elrejti az átugrandó szegmensek megjelöléséhez használt gombokat a YouTube lejátszón."
},
"showSkipButton": {
"message": "Kiemeléshez ugrás gomb maradjon a lejátszón"
},
"showInfoButton": {
"message": "Info gomb mutatása a YouTube lejátszón"
},
@@ -197,6 +206,9 @@
"whatViewTracking": {
"message": "Ez a funkció követi, mely szegmenseket ugrotta át, hogy más felhasználók megtudhassák mennyit segítettek a bejelentéseik és a szavazatokkal együtt egy mértékegységként van használva, hogy ne kerülhessen spam az adatbázisba. A bővítmény küld egy üzenetet a szervernek, minden alkalommal, mikor átugrik egy szegmenst. Remélhetőleg nem sokan állítják át ezt a beállítást, hogy a számok pontosak maradhassanak. :)"
},
"enableViewTrackingInPrivate": {
"message": "Átugrások számlálásának engedélyezése privát/inkognitó füleken"
},
"enableQueryByHashPrefix": {
"message": "Lekérdezés Hash előtaggal"
},
@@ -215,6 +227,21 @@
"showSkipNotice": {
"message": "Jelezzen, ha egy szegmens át lett ugorva"
},
"noticeVisibilityMode0": {
"message": "Teljes méretű átugrási értesítők"
},
"noticeVisibilityMode1": {
"message": "Kis méretű átugrási értesítők Auto átugrás esetén"
},
"noticeVisibilityMode2": {
"message": "Csak kis méretű átugrási értesítők"
},
"noticeVisibilityMode3": {
"message": "Halvány átugrási értesítők Auto átugrás esetén"
},
"noticeVisibilityMode4": {
"message": "Csak halvány átugrási értesítők"
},
"longDescription": {
"message": "A SponsorBlock-al átugorhatja a szponzorokat, introkat, outrokat, feliratkozás emlékeztetőket és a YouTube videók többi idegesítő részeit. A SponsorBlock egy közösség által vezérelt böngészőbővítmény, ami lehetővé tesz bárkit arra, hogy megjelölhesse egy szponzor vagy más szegmens kezdő és végpontjait. Ha megosztja ezt az információt, mindenki más ennek a bővítménynek a birtokában egyenesen átugorja majd ezt a szponzorszegmenst. Emellett például a zene videók nem-zene részei is átugorhatóak.",
"description": "Full description of the extension on the store pages."
@@ -238,6 +265,9 @@
"setSkipShortcut": {
"message": "Billentyű beállítása szegmens átugráshoz"
},
"setStartSponsorShortcut": {
"message": "Billentyű beállítása a szegmens kezdéséhez/befejezéséhez"
},
"setSubmitKeybind": {
"message": "Billentyű beállítása a beküldés gombhoz"
},
@@ -269,9 +299,31 @@
"skip": {
"message": "Átugrás"
},
"mute": {
"message": "Némítás"
},
"skip_category": {
"message": "Átugorja ezt: {0}?"
},
"mute_category": {
"message": "{0} némítása?"
},
"skip_to_category": {
"message": "Ugrás ide: {0}?",
"description": "Used for skipping to things (Skip to Highlight)"
},
"skipped": {
"message": "{0} átugorva",
"description": "Example: Sponsor Skipped"
},
"muted": {
"message": "{0} némítva",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": {
"message": "Ide ugorva: {0}",
"description": "Used for skipping to things (Skipped to Highlight)"
},
"disableAutoSkip": {
"message": "Auto átugrás kikapcsolása"
},
@@ -291,7 +343,7 @@
"message": "Ez az idő zárójelben jelenik meg az aktuális idő mellett a keresősáv alatt. Megmutatja a videó teljes időtartamát, levonva a szegmenseket. Beletartoznak a csak \"Megjelenítés a keresősávban\" jelöléssel ellátott szegmensek is."
},
"youHaveSkipped": {
"message": "Átugrottál "
"message": "Átugrottál: "
},
"youHaveSaved": {
"message": "Megtakarított magának "
@@ -320,6 +372,9 @@
"changeUserID": {
"message": "UserID importálása / exportálása"
},
"whatChangeUserID": {
"message": "Ez privát információnak minősül. Ez olyan, mint egy jelszó, így nem ajánlott megosztani senkivel. Ha valakinek birtokában van, megszemélyesíthet téged. Ha a nyilvános userID-dat keresed, kattints a vágólap ikonra a felugró ablakban."
},
"setUserID": {
"message": "UserID beállítása"
},
@@ -335,9 +390,22 @@
"supportOtherSites": {
"message": "Harmadik fél Youtube oldalainak támogatása"
},
"supportOtherSitesDescription": {
"message": "Harmadik fél YouTube oldalainak támogatása. A támogatás bekapcsolásához el kell fogadnod az extra engedélyeket. NEM működik inkognitó módban Chrome-ban és egyéb Chromium változatokban.",
"description": "This replaces the 'supports Invidious' option because it now works on other YouTube sites such as Cloudtube"
},
"supportedSites": {
"message": "Támogatott oldalak: "
},
"optionsInfo": {
"message": "Invidious támogatás engedélyezése, autoátugrás kikapcsolása, gombok eltűntetése és több."
},
"addInvidiousInstance": {
"message": "Harmadik fél kliens példányának hozzáadása"
},
"addInvidiousInstanceDescription": {
"message": "Egyedi példány hozzáadása. Formátuma CSAK a domain legyen. Például: invidious.ajay.app"
},
"add": {
"message": "Hozzáadás"
},
@@ -359,6 +427,12 @@
"minDurationDescription": {
"message": "A beállított értéknél rövidebb szegmenseket nem ugorja át és nem jeleníti meg a lejátszó."
},
"skipNoticeDuration": {
"message": "Átugrási értesítés hossza (másodpercek):"
},
"skipNoticeDurationDescription": {
"message": "Az átugrási értesítés ennyi ideig marad a képernyőn. Manuális átugrásnál tovább is látható maradhat."
},
"shortCheck": {
"message": "A következő szegmens rövidebb, mint az Ön által beállított minimális időtartam. Ez azt jelentheti, hogy már beküldhették, csak emiatt az opció miatt Önnek figyelmen kívül marad. Biztosan beküldi?"
},
@@ -393,7 +467,7 @@
"message": "Ez az össze beállítása JSON-ban. Ebbe bele tartozik a userID-ja, szóval csak ésszel ossza meg."
},
"setOptions": {
"message": "Beállítások"
"message": "Beállítások módosítása"
},
"exportOptionsWarning": {
"message": "Figyelem: Az beállítások megváltoztatása végleges, és tönkreteheti a bővítményét. Biztosan meg szeretné tenni? Készítsen egy biztonsági mentést a régi beállításairól, biztos, ami biztos."
@@ -444,7 +518,7 @@
"message": "már máshoz van állítva. Kérem, válasszon egy másik billentyűt."
},
"to": {
"message": "-tól eddig:",
"message": "",
"description": "Used between segments. Example: 1:20 to 1:30"
},
"category_sponsor": {
@@ -486,9 +560,24 @@
"category_preview": {
"message": "Előzetes/Ismétlés"
},
"category_preview_description": {
"message": "Az előző részekben történtek rövid ismétlése, vagy a videó további tartalmának előzetese. Összevágott jelenetekhez, nem szóbeli összegzéshez."
},
"category_filler": {
"message": "Témától eltérő töltelék"
},
"category_filler_description": {
"message": "Csak töltelékként, vagy humornak hozzáadott részek, amik nem szükségesek a videó fő tartalmának megértéséhez. Ne tartalmazzon olyan szegmenseket, amik kontextust, vagy alapvető információkat szolgáltatnak."
},
"category_filler_short": {
"message": "Töltelék"
},
"category_music_offtopic": {
"message": "Zene: nem-zene szegmens"
},
"category_music_offtopic_description": {
"message": "Csak videóklipekhez. Ezt csak videóklipek olyan részeihez szabad használni, amiket nem fed le a többi kategória."
},
"category_music_offtopic_short": {
"message": "Nem-Zene"
},
@@ -516,9 +605,28 @@
"disable": {
"message": "Kikapcsol"
},
"autoSkip_POI": {
"message": "Auto ugrás a kezdetéhez"
},
"manualSkip_POI": {
"message": "Kérdezzen rá a videó betöltésekor"
},
"showOverlay_POI": {
"message": "Megjelenítés a keresősávban"
},
"autoSkipOnMusicVideos": {
"message": "Minden szegmens automatikus átugrása, ha van nem-zene szegmens"
},
"muteSegments": {
"message": "Szegmensek engedélyezése, amelyek lenémítják a hangot az átugrás helyett"
},
"colorFormatIncorrect": {
"message": "A szín helytelenül van formázva. Egy 3 vagy 6 számjegyből álló hex kódnak kell lennie egy kettőskereszttel az elején."
},
"previewColor": {
"message": "Beküldetlen színe",
"description": "Referring to submissions that have not been sent to the server yet."
},
"seekBarColor": {
"message": "Keresősáv színe"
},
@@ -547,6 +655,13 @@
"chooseACategory": {
"message": "Válasszon kategóriát"
},
"enableThisCategoryFirst": {
"message": "Hogy \"{0}\" kategóriájú szegmenst küldhess be, először engedélyezned kell a beállításokban. Most átirányításra kerülsz a beállításokhoz.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
},
"poiOnlyOneSegment": {
"message": "Figyelem: Az ilyen típusú szegmensekből egyszerre csak egy lehet aktív. Több beküldése esetén véletlenszerűen az egyik fog megjelenni."
},
"youMustSelectACategory": {
"message": "Minden szegmenshez kategóriát kell választania beküldés előtt!"
},
@@ -559,9 +674,28 @@
"hiddenDueToDuration": {
"message": "elrejtve: túl rövid"
},
"channelDataNotFound": {
"description": "This error appears in an alert when they try to whitelist a channel and the extension is unable to determine what channel they are looking at.",
"message": "A csatorna ID még nem került betöltésre. Ha beágyazott videót használsz, próbáld meg inkább a YouTube oldalon keresztül. Ezt okozhatja még a YouTube elrendezésének változása is. Ha így gondolod, hagyj egy kommentet itt:"
},
"videoInfoFetchFailed": {
"message": "Úgy tűnik, valami korlátozza a SponsorBlock hozzáférését a videó adataihoz. További információkért látogass el ide: https://github.com/ajayyy/SponsorBlock/issues/741 (angol nyelvű)."
},
"youtubePermissionRequest": {
"message": "Úgy tűnik, a SponsorBlock nem tud csatlakozni a YouTube API-hoz. A javításhoz fogadd el a megjelenő engedélykérést, várj néhány másodpercet, majd töltsd újra az oldalt."
},
"acceptPermission": {
"message": "Engedély jóváhagyása"
},
"permissionRequestSuccess": {
"message": "Engedélykérés sikeres!"
},
"permissionRequestFailed": {
"message": "Engedélykérés sikertelen. Nem nyomtál az elutasításra?"
},
"adblockerIssueWhitelist": {
"message": "Ha nem sikerül megoldani a problémát, kapcsold ki a \"Csatorna ellenőrzése átugrás előtt\" opciót, mert a SponsorBlock nem tudja megszerezni a csatorna-információkat ehhez a videóhoz"
},
"forceChannelCheck": {
"message": "Csatorna ellenőrzése átugrás előtt"
},
@@ -569,13 +703,13 @@
"message": "Alapértelmezett állapotban, a bővítmény átugorhat szegmenseket, mielőtt tudná melyik csatornán van. Alapból ezért, néhány szegmens, ami a videók legelején van, engedélyezett csatornákon is átugródhat. Ennek a bekapcsolásával ez elkerülhető, de minden átugrás előtt lesz egy kis késleltetés, hiszen a channelID megszerzéséhez elkell egy kis idő. Ez a késleltetés akár észrevehetetlen is lehet, ha elég gyors a kapcsolata."
},
"forceChannelCheckPopup": {
"message": "Gondolja át a \"Csatorna ellenőrzése átugrás előtt\" bekapcsolását"
"message": "Fontold meg a \"Csatorna ellenőrzése átugrás előtt\" bekapcsolását"
},
"downvoteDescription": {
"message": "Helytelen/rossz időzítés"
},
"incorrectCategory": {
"message": "Hibás kategória"
"message": "Kategória módosítása"
},
"nonMusicCategoryOnMusic": {
"message": "Ez a videó zeneként van kategorizálva. Biztos benne, hogy ennek van szponzora? Ha ez valójában egy \"nem-zene szegmens\", nyissa meg a bővítmény beállításait és kapcsolja be azt a kategóriát. Ezt követően elküldheti ezt a szegmenst \"nem-zene\"-ként szponzor helyett. Amennyiben nem érti, kérjük olvassa el az irányelveket."
@@ -603,28 +737,105 @@
"message": "Értettem",
"description": "Used as the button to dismiss a tooltip"
},
"experiementOptOut": {
"message": "Minden további kísérlet elutasítása",
"description": "This is used in a popup about a new experiment to get a list of unlisted videos to back up since all unlisted videos uploaded before 2017 will be set to private."
},
"hideForever": {
"message": "Eltüntetés örökre"
},
"warningChatInfo": {
"message": "Figyelmeztetést kaptál, és ideiglenesen nem tudsz szegmenseket beküldeni. Ez azt jelenti, hogy észrevettük, hogy néhány ártalmatlan gyakori hibát vétettél. Kérjük erősítsd meg, hogy megértetted a szabályokat és eltávolítjuk a figyelmeztetést. Ehhez a beszélgetéshez csatlakozhatsz a discord.gg/SponsorBlock vagy matrix.to/#/#sponsor:ajay.app címeken is."
},
"voteRejectedWarning": {
"message": "Szavazás visszautasítva figyelmeztetés miatt. Kattints, hogy megnyiss egy beszélgetést a tisztázásához, vagy gyere vissza később, amikor időd van rá.",
"description": "This is an integrated chat panel that will appearing allowing them to talk to the Discord/Matrix chat without leaving their browser."
},
"Donate": {
"message": "Támogatás"
},
"hideDonationLink": {
"message": "Támogatás link elrejtése"
},
"helpPageThanksForInstalling": {
"message": "Köszönjük, hogy telepítetted a SponsorBlockot."
},
"helpPageReviewOptions": {
"message": "Kérjük, nézd át az alábbi beállításokat"
},
"helpPageFeatureDisclaimer": {
"message": "Sok funkció le van tiltva alapból. Ha át akarsz ugrani bevezetőket, záróképernyőket, Invidioust használnál, stb., engedélyezd őket alább. Lehetőség van a felület különböző elemeinek elrejtésére/megjelenítésére is."
},
"helpPageHowSkippingWorks": {
"message": "Az átugrás működése"
},
"helpPageHowSkippingWorks1": {
"message": "A videók szegmensei automatikusan átugrásra kerülnek, ha szerepelnek az adatbázisban. Megnyithatod a felugró ablakot a bővítmény ikonjára kattintva, hogy megtekinthesd őket."
},
"helpPageHowSkippingWorks2": {
"message": "Ahányszor átugrasz egy szegmenst, kapni fogsz egy értesítést. Ha rossznak tűnik az időzítés, szavazd le a leszavazás gombra kattintva! A felugró ablakban is szavazhatsz."
},
"Submitting": {
"message": "Küldés"
"message": "Beküldés"
},
"helpPageSubmitting1": {
"message": "Beküldeni lehet a felugró ablakban a \"Szegmens eleje\" gombra kattintva, vagy a videó lejátszón lévő gombokkal."
},
"helpPageSubmitting2": {
"message": "A lejátszás gomb megnyomása jelezte a szegmens kezdetét és a stop gomb megnyomása jelzi a végét. Több szponzort is előkészíthetsz, mielőtt a beküldésre nyomnál. A feltöltés gombra kattintva beküldésre kerülnek a szegmensek. A szemetesre kattintva kitörlődnek."
},
"Editing": {
"message": "Szerkesztés"
},
"helpPageEditing1": {
"message": "Ha hibáztál, szerkesztheted vagy törölheted a szegmenseid, a felfele nyílra kattintást követően."
},
"helpPageTooSlow": {
"message": "Ez túl lassú"
},
"helpPageTooSlow1": {
"message": "Vannak gyorsbillentyűk is, ha használni szeretnéd őket. Nyomd meg a pontosvessző billentyűt egy szponzor szegmens elejének/végének jelzéséhez és nyomd meg a vesszőt a beküldéshez. Ezek módosíthatók a beállításokban. Ha nem QWERTY-t használsz, valószínűleg szükséges lesz megváltoztatni a billentyűket."
},
"helpPageCopyOfDatabase": {
"message": "Szerezhetek egy másolatot az adatbázisról? Mi történik, ha eltűnik a fejlesztő?"
},
"helpPageCopyOfDatabase1": {
"message": "Az adatbázis nyilvános, és elérhető itt:"
},
"helpPageCopyOfDatabase2": {
"message": "A forráskód szabadon elérhető. Tehát még ha valami történne is velem, a beküldések nem vesznek el."
},
"helpPageNews": {
"message": "Hírek és hogyan készül"
},
"helpPageSourceCode": {
"message": "Hol szerezhetem meg a forráskódot?"
},
"Credits": {
"message": "Készítők"
},
"LearnMore": {
"message": "Tudj meg többet"
},
"CopyDownvoteButtonInfo": {
"message": "Leszavazza és készít egy helyi másolatot, amit beküldhetsz"
},
"OpenCategoryWikiPage": {
"message": "A kategória wiki lapjának megnyitása."
},
"CopyAndDownvote": {
"message": "Másol és leszavaz"
},
"ContinueVoting": {
"message": "Szavazás folytatása"
},
"ChangeCategoryTooltip": {
"message": "Ez azonnal érvényes lesz a szegmenseidre"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Használd egérgörgődet a szerkesztő mező fölött, hogy gyorsan módosíthasd az időt. A ctrl vagy shift billentyűk kombinációjával finomhangolhatod a változás mértékét."
},
"fillerNewFeature": {
"message": "Új! Ugorj át vicceket és a témához nem tartozó részeket a töltelék kategóriával. Engedélyezd a beállításokban"
}
}

View File

@@ -699,9 +699,6 @@
"downvoteDescription": {
"message": "Salah, Waktu Tidak Tepat"
},
"incorrectCategory": {
"message": "Salah Kategori"
},
"nonMusicCategoryOnMusic": {
"message": "Video ini dikategorikan sebagai musik. Apakah anda yakin ini berisi sponsor? Jika ini ternyata adalah \"Segmen non-musik\", buka pengaturan ekstensi dan aktifkan kategorinya. Lalu, anda bisa mengirim segmen ini sebagai \"Non-musik\" bukannya sponsor. Harap membaca panduan jika anda kebingungan."
},
@@ -805,9 +802,6 @@
"Credits": {
"message": "Kredit"
},
"highlightNewFeature": {
"message": "Baru! Dapat ke poin video dengan satu klik dengan kategori highlight terbaru"
},
"LearnMore": {
"message": "Pelajari Lebih Lanjut"
},

View File

@@ -182,6 +182,9 @@
"hideButtonsDescription": {
"message": "Nasconde i pulsanti che appaiono sul video per inviare i segmenti da nascondere."
},
"showSkipButton": {
"message": "Mantieni Salta Per Evidenziare il Pulsante Sul Lettore"
},
"showInfoButton": {
"message": "Mostra il pulsante delle informazioni sopra al video"
},
@@ -560,6 +563,15 @@
"category_preview_description": {
"message": "Riepilogo rapido degli episodi precedenti, o un'anteprima di ciò che sta arrivando più tardi nel video attuale. Inteso per clip, non per riassunti a voce."
},
"category_filler": {
"message": "Tangente di Riempimento"
},
"category_filler_description": {
"message": "Le scene tangenziali aggiunte solo per riempire o per umorismo che non sono richieste per comprendere il contenuto principale del video. Questo non dovrebbe includere segmenti che forniscono contesto o dettagli di sfondo."
},
"category_filler_short": {
"message": "Riempimento"
},
"category_music_offtopic": {
"message": "Musica: Sezione Non-Musicale"
},
@@ -697,7 +709,7 @@
"message": "Tempo Non Corretto/Errato"
},
"incorrectCategory": {
"message": "Categoria Errata"
"message": "Cambia Categoria"
},
"nonMusicCategoryOnMusic": {
"message": "Questo video è classificato come musica. Sei sicuro che questo video contenga uno sponsor? Se questo è in realtà un \"Segmento Non-Musica\", apri le opzioni di questa estensione e abilita questa categoria. Quindi, è possibile inviare questo segmento come \"Non-Music\" invece di sponsor. Si prega di leggere la guida se si è confusi."
@@ -732,6 +744,9 @@
"hideForever": {
"message": "Nascondi per sempre"
},
"warningChatInfo": {
"message": "Hai ricevuto un avviso e non puoi inviare temporaneamente i segmenti. Questo significa che abbiamo notato che stavi commettendo degli errori comuni, non malevoli; sei pregato di confermare di comprendere le regole e rimuoveremo l'avviso. Puoi anche unirti a questa chat usando discord.gg/SponsorBlock o matrix.to/#/#sponsor:ajay.app"
},
"voteRejectedWarning": {
"message": "Voto rifiutato a causa di un ammonimento. Clicca per aprire una chat per risolverlo, oppure torna dopo quando hai tempo.",
"description": "This is an integrated chat panel that will appearing allowing them to talk to the Discord/Matrix chat without leaving their browser."
@@ -799,10 +814,25 @@
"Credits": {
"message": "Crediti"
},
"highlightNewFeature": {
"message": "Novità! Vai al punto del video con un click con la nuova categoria d'evidenziazione"
},
"LearnMore": {
"message": "Scopri di Più"
},
"CopyDownvoteButtonInfo": {
"message": "Vota negativamente e crea una copia locale per reinviare"
},
"OpenCategoryWikiPage": {
"message": "Apri la pagina della wiki di questa categoria."
},
"CopyAndDownvote": {
"message": "Copia e vota negativamente"
},
"ContinueVoting": {
"message": "Continua a Votare"
},
"ChangeCategoryTooltip": {
"message": "Questo si applicherà istantaneamente ai tuoi segmenti"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Usa la rotellina del mouse passando sulla casella di modifica per regolare rapidamente il tempo. Le combinazioni dei tasti ctrl o shift sono utilizzabili per perfezionare le modifiche."
}
}

View File

@@ -52,6 +52,9 @@
"reskip": {
"message": "再スキップ"
},
"unmute": {
"message": "ミュート解除"
},
"paused": {
"message": "一時停止中"
},
@@ -80,13 +83,13 @@
"message": "セグメント終了を記録"
},
"sponsorCancel": {
"message": "区間の作成を取り止める"
"message": "セグメントの作成を取り消す"
},
"noVideoID": {
"message": "YouTube動画が見つかりませんでした。\nこれが正しくない場合は、タブを再読み込みしてください。"
},
"refreshSegments": {
"message": "区域を更新"
"message": "セグメントを更新"
},
"success": {
"message": "成功しました!"
@@ -158,6 +161,9 @@
"setUsername": {
"message": "ユーザー名を設定"
},
"copyPublicID": {
"message": "パブリックユーザIDをコピー"
},
"discordAdvert": {
"message": "公式Discordサーバーに参加して意見やフィードバックをお寄せください"
},
@@ -176,6 +182,9 @@
"hideButtonsDescription": {
"message": "YouTube再生画面のセグメント提出ボタンを非表示にします。"
},
"showSkipButton": {
"message": "プレイヤーの「ハイライトまでスキップ」ボタン表示を維持する"
},
"showInfoButton": {
"message": "YouTubeプレーヤーの情報ボタンを表示する"
},
@@ -219,19 +228,19 @@
"message": "セグメントがスキップされた後に通知を表示する"
},
"noticeVisibilityMode0": {
"message": "飛び越し通知(全体)"
"message": "標準サイズのスキップ通知"
},
"noticeVisibilityMode1": {
"message": "自動飛び越し通知(小)"
"message": "自動スキップ通知を小型化"
},
"noticeVisibilityMode2": {
"message": "すべての飛び越し通知(小)"
"message": "すべてのスキップ通知を小型化"
},
"noticeVisibilityMode3": {
"message": "表示の終了した自動飛び越し通知"
"message": "自動スキップ通知を透過"
},
"noticeVisibilityMode4": {
"message": "表示の終了した全ての飛び越し通知"
"message": "すべてのスキップ通知を透過"
},
"longDescription": {
"message": "SponsorBlockはスポンサー、イントロ、アウトロ、チャンネル登録のお願いなど、YouTube動画の煩わしい部分をスキップします。SponsorBlockはYouTube動画のスポンサー付きセグメントなどの開始時間と終了時間を誰でも投稿できる、クラウドソースのブラウザ拡張機能です。一人がセグメントの情報を送信すると、この拡張機能を使用している他の全員が、スポンサー付きセグメントをスキップできるようになります。また、ミュージックビデオの音楽がない部分をスキップすることもできます。",
@@ -290,9 +299,15 @@
"skip": {
"message": "スキップ"
},
"mute": {
"message": "ミュート"
},
"skip_category": {
"message": "{0} をスキップしますか?"
},
"mute_category": {
"message": "{0} をミュートしますか?"
},
"skip_to_category": {
"message": "{0}まで飛び越しますか?",
"description": "Used for skipping to things (Skip to Highlight)"
@@ -301,6 +316,10 @@
"message": "{0}を飛び越しました",
"description": "Example: Sponsor Skipped"
},
"muted": {
"message": "{0} ミュート済み",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": {
"message": "{0}まで飛び越しました",
"description": "Used for skipping to things (Skipped to Highlight)"
@@ -353,6 +372,9 @@
"changeUserID": {
"message": "ユーザーIDのインポート/エクスポート"
},
"whatChangeUserID": {
"message": "この情報を誰にも開示しないでください。これはパスワードのように、誰とも共有するべきではありません。 誰かがこれを持っている場合、あなたになりすますことができます。パブリックユーザーIDを探している場合は、ポップアップのクリップボードアイコンをクリックしてください。"
},
"setUserID": {
"message": "ユーザーIDを設定"
},
@@ -541,6 +563,12 @@
"category_preview_description": {
"message": "前回の粗筋,または動画の後半内容の予告。音声による要約ではなく,編集された映像を指します。"
},
"category_filler_description": {
"message": "脱線したシーンには、動画の主な内容を理解するのに必要がない穴埋めやユーモアのみを追加してください。これには、文脈や背景の詳細を提供するセグメントを含めないでください。"
},
"category_filler_short": {
"message": "フィラー"
},
"category_music_offtopic": {
"message": "音楽: 音楽以外のセクション"
},
@@ -551,10 +579,10 @@
"message": "音楽以外の部分"
},
"category_poi_highlight": {
"message": "強調表示"
"message": "ハイライト"
},
"category_poi_highlight_description": {
"message": "ほとんどの人が必要としている動画の箇所。「xx:xx 開始」というようなコメントと類似。"
"message": "多くの人が求めている動画の部分。「動画はXからスタート」のようなコメントです。"
},
"category_livestream_messages": {
"message": "ライブ配信: 寄付/メッセージの読み上げ"
@@ -575,7 +603,7 @@
"message": "無効"
},
"autoSkip_POI": {
"message": "動画の開始時刻まで飛び越し"
"message": "冒頭へ自動スキップ"
},
"manualSkip_POI": {
"message": "動画を読み込んだ際に確認する"
@@ -586,6 +614,9 @@
"autoSkipOnMusicVideos": {
"message": "非音楽区域がある場合,全区域を自動的に飛び越す"
},
"muteSegments": {
"message": "スキップする代わりに音声をミュートしてセグメントを許可"
},
"colorFormatIncorrect": {
"message": "カラーコードの書式が間違っています。 #から始まる3桁または6桁の16進数コードでなければなりません。"
},
@@ -625,6 +656,9 @@
"message": "\"{0}\" のカテゴリでセグメントを送信するには、オプションでセグメントを有効にする必要があります。オプション画面にリダイレクトします。",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
},
"poiOnlyOneSegment": {
"message": "警告: このタイプのセグメントは一度に最大一つだけ有効にすることができます。複数送信するとランダムなものが表示されます。"
},
"youMustSelectACategory": {
"message": "送信するすべてのセグメントにカテゴリを選択する必要があります!"
},
@@ -672,7 +706,7 @@
"message": "不正確あるいは間違った時刻です"
},
"incorrectCategory": {
"message": "カテゴリが違います"
"message": "カテゴリーを変更してください"
},
"nonMusicCategoryOnMusic": {
"message": "この動画は音楽として分類されています。本当にこの動画にスポンサー部分がありますか? 本セグメントが本当に「音楽以外の区域」だった場合は、設定画面からこの分類を有効にしてください。その後、「スポンサー部分」の代わりに「音楽以外のセグメント」としてセグメントを提出できます。よく分からない場合は、ガイドラインを参照してください。"
@@ -707,6 +741,9 @@
"hideForever": {
"message": "二度と表示しない"
},
"warningChatInfo": {
"message": "警告のためにあなたは一時的にセグメントを提出することができなくなりました。これはあなたが悪意のない一般的なミスを犯していることに私たちが気づいた事を意味します、ルールを理解していることを確認していただければこの警告を解除します。discord.gg/SponsorBlock または matrix.to/#/#sponsor:ajay.app を使ってこのチャットに参加することもできます。"
},
"voteRejectedWarning": {
"message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。",
"description": "This is an integrated chat panel that will appearing allowing them to talk to the Discord/Matrix chat without leaving their browser."
@@ -738,9 +775,30 @@
"Submitting": {
"message": "提出中"
},
"helpPageSubmitting1": {
"message": "提出するにはポップアップの「セグメント開始を記録」ボタン、またはビデオプレーヤー内にあるボタンを押してください。"
},
"helpPageSubmitting2": {
"message": "再生ボタンをクリックするとセグメントの開始、停止アイコンをクリックすると終了となります。 複数のスポンサーを用意してから送信ボタンを押すことができます。アップロードボタンをクリックすると提出されます。ゴミ箱をクリックすると削除されます。"
},
"Editing": {
"message": "編集中"
},
"helpPageEditing1": {
"message": "もし失敗しても、上矢印ボタンをクリックすれば、セグメントを編集・削除することができます。"
},
"helpPageTooSlow": {
"message": "遅すぎます"
},
"helpPageTooSlow1": {
"message": "利用可能なホットキーがあります。セミコロンキーを押してスポンサーセグメントの開始/終了を示し、アポストロフィキーを押して送信します。これらはオプションで変更できます。QWERTYを使わない場合は、キーバインドを変更したほうがいいでしょう。"
},
"helpPageCopyOfDatabase": {
"message": "データベースのコピーを取得できますか? あなたがいなくなった場合はどうなりますか?"
},
"helpPageCopyOfDatabase1": {
"message": "データベースは公開されており、次の場所で利用できます:"
},
"helpPageCopyOfDatabase2": {
"message": "ソースコードは自由に利用できます。運営になにがあろうとも,あなたの貢献(提出された区域)が失われることはありません。"
},
@@ -755,5 +813,23 @@
},
"LearnMore": {
"message": "さらに詳しく"
},
"CopyDownvoteButtonInfo": {
"message": "反対票を投じ、再提出するためにローカルコピーを作成します。"
},
"OpenCategoryWikiPage": {
"message": "このカテゴリーのWikiページを開きます。"
},
"CopyAndDownvote": {
"message": "コピーして反対票を投じる"
},
"ContinueVoting": {
"message": "投票を続ける"
},
"ChangeCategoryTooltip": {
"message": "この変更は即座にあなたのセグメントに適用されます"
},
"SponsorTimeEditScrollNewFeature": {
"message": "編集ボックスにカーソルを合わせながらマウスホイールを使用すると、時間をすばやく調整できます。 CtrlキーまたはShiftキーの組み合わせを使用して変更を微調整できます。"
}
}

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "이전 에피소드를 간략히 요약하거나 현재 동영상에서 나중에 나올 내용을 예고해줍니다. 음성 요약이 아니라 편집된 동영상을 통한 요약입니다."
},
"category_filler": {
"message": "쓸데없는 잡담"
},
"category_filler_description": {
"message": "쓸데없는 잡담은 동영상의 주요 콘텐츠를 이해하는 데 필요없는 시간 떼우기 장면이나 농담만을 말합니다. 맥락이나 상세한 배경지식을 설명하는 부분은 해당하지 않습니다."
},
"category_filler_short": {
"message": "잡담"
},
"category_music_offtopic": {
"message": "음악이 아닌 구간"
},
@@ -700,7 +709,7 @@
"message": "잘못된 타이밍입니다"
},
"incorrectCategory": {
"message": "잘못된 카테고리입니다"
"message": "카테고리 변경"
},
"nonMusicCategoryOnMusic": {
"message": "이 영상은 음악 영상으로 분류됩니다. 정말로 스폰서가 있는 것이 확실한가요? 만약 음악 이외의 구간인 경우, 확장 옵션을 열어 이 카테고리를 활성화 하세요. 그리고, 이 구간을 스폰서 대신 음악이 아닌 구간으로 제출하세요. 헷갈릴 경우 가이드라인을 읽으세요."
@@ -805,13 +814,28 @@
"Credits": {
"message": "크레딧"
},
"highlightNewFeature": {
"message": "새 기능! 새로운 하이라이트 카테고리를 통해 동영상의 중요 지점으로 이동하세요"
},
"LearnMore": {
"message": "더보기"
},
"CopyDownvoteButtonInfo": {
"message": "반대에 투표한 뒤 다시 제출할 수 있도록 미제출 사본을 생성합니다"
},
"OpenCategoryWikiPage": {
"message": "해당 카테고리의 위키 페이지를 엽니다."
},
"CopyAndDownvote": {
"message": "복사 및 반대"
},
"ContinueVoting": {
"message": "계속 투표"
},
"ChangeCategoryTooltip": {
"message": "당신의 구간에 즉시 적용될 것입니다"
},
"SponsorTimeEditScrollNewFeature": {
"message": "편집 상자 위에 커서를 올린 채 스크롤하면 시간을 빠르게 조정할 수 있습니다. Ctrl이나 Shift 키를 누른 채로 스크롤하면 세밀한 조정이 가능합니다."
},
"fillerNewFeature": {
"message": "새 기능! 쓸데없는 말이나 농담 구간을 잡담 카테고리로 건너 뛰세요. 설정에서 활성화하세요"
}
}

View File

@@ -554,9 +554,6 @@
"downvoteDescription": {
"message": "തെറ്റായ / തെറ്റായ സമയം"
},
"incorrectCategory": {
"message": "തെറ്റായ വിഭാഗം"
},
"nonMusicCategoryOnMusic": {
"message": "ഈ വീഡിയോയെ സംഗീതമായി വർഗ്ഗീകരിച്ചിരിക്കുന്നു. ഇതിന് ഒരു സ്പോൺസർ ഉണ്ടെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് യഥാർത്ഥത്തിൽ \"സംഗീതേതര വിഭാഗമാണ്\" എങ്കിൽ, വിപുലീകരണ ഓപ്ഷനുകൾ തുറന്ന് ഈ വിഭാഗം പ്രാപ്തമാക്കുക. തുടർന്ന്, സ്പോൺസറിന് പകരം \"നോൺ-മ്യൂസിക്\" എന്ന് നിങ്ങൾക്ക് ഈ സെഗ്മെന്റ് സമർപ്പിക്കാൻ കഴിയും. നിങ്ങൾ ആശയക്കുഴപ്പത്തിലാണെങ്കിൽ ദയവായി മാർഗ്ഗനിർദ്ദേശങ്ങൾ വായിക്കുക."
},

View File

@@ -554,9 +554,6 @@
"downvoteDescription": {
"message": "Pemasaan Tidak Betul / Salah"
},
"incorrectCategory": {
"message": "Kategori Salah"
},
"nonMusicCategoryOnMusic": {
"message": "Video ini dikategorikan sebagai muzik. Adakah anda pasti ini mempunyai penaja? Sekiranya ini sebenarnya adalah \"Segmen Bukan Muzik\", buka pilihan peluasan dan aktifkan kategori ini. Kemudian, anda boleh menghantar segmen ini sebagai \"Bukan Muzik\" dan bukannya penaja. Sila baca panduan sekiranya anda keliru."
},

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Snelle samenvatting van vorige afleveringen of een voorbeeld van wat er later komt in de huidige video. Bedoeld voor samengevoegde clips, niet voor gesproken samenvattingen."
},
"category_filler": {
"message": "Zijspoor-opvulling"
},
"category_filler_description": {
"message": "Zijspoor-scènes die alleen ter opvulling of als humor worden toegevoegd en niet noodzakelijk zijn om de hoofdinhoud van de video te begrijpen. Segmenten die context of achtergrondinformatie verschaffen, mogen hier niet onder vallen."
},
"category_filler_short": {
"message": "Opvulling"
},
"category_music_offtopic": {
"message": "Muziek: sectie niet-muziek"
},
@@ -700,7 +709,7 @@
"message": "Verkeerde timing"
},
"incorrectCategory": {
"message": "Verkeerde categorie"
"message": "Categorie wijzigen"
},
"nonMusicCategoryOnMusic": {
"message": "Deze video is gecategoriseerd als muziek. Weet u zeker dat dit een sponsor heeft? Als dit eigenlijk een \"niet-muzieksegment\" is, open dan de extensie-opties en schakel deze categorie in. Vervolgens kunt u dit segment indienen als \"niet-muziek\" in plaats van als sponsor. Lees de richtlijnen als u in de war bent."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Dank aan"
},
"highlightNewFeature": {
"message": "Nieuw! Ga met één klik naar de kern van de video met de nieuwe hoogtepunt-categorie"
},
"LearnMore": {
"message": "Meer informatie"
},
"CopyDownvoteButtonInfo": {
"message": "Doet een downvote en maakt een lokale kopie aan die u opnieuw kunt indienen"
},
"OpenCategoryWikiPage": {
"message": "Wikipagina van deze categorie openen."
},
"CopyAndDownvote": {
"message": "Kopiëren en downvote doen"
},
"ContinueVoting": {
"message": "Doorgaan met stemmen"
},
"ChangeCategoryTooltip": {
"message": "Dit is direct van toepassing op uw segmenten"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Gebruik het muiswiel terwijl u over het invoerveld beweegt om de tijd snel aan te passen. Combinaties van de ctrl- of shift-toets kunnen worden gebruikt om de wijzigingen te verfijnen."
},
"fillerNewFeature": {
"message": "Nieuw! Sla zijsporen en grapjes over met de opvulling-categorie. Schakel in via opties"
}
}

View File

@@ -566,9 +566,6 @@
"downvoteDescription": {
"message": "Feil tidtaking"
},
"incorrectCategory": {
"message": "Feil kategori"
},
"nonMusicCategoryOnMusic": {
"message": "Denne videoen er kategorisert som musikk. Er du sikker på at dette har en sponsor? Hvis det egentlig er et \"Ikke-musikk-segment\", åpne opp innstillingene til utvidelsen og skru på denne kategorien. Deretter kan du sende dette segmentet som \"Ikke-musikk\" i stedet for som sponsing. Vennligst les retningslinjene hvis du er forvirret."
},

View File

@@ -182,6 +182,9 @@
"hideButtonsDescription": {
"message": "Ta opcja ukrywa przyciski do zamieszczania segmentów pojawiające się na odtwarzaczu YouTube."
},
"showSkipButton": {
"message": "Kontynuuj wyświetlanie przycisku pomijania"
},
"showInfoButton": {
"message": "Pokaż przycisk informacyjny na odtwarzaczu YouTube"
},
@@ -697,7 +700,7 @@
"message": "Niepoprawne/Zły czas"
},
"incorrectCategory": {
"message": "Zła kategoria"
"message": "Zmień kategorię"
},
"nonMusicCategoryOnMusic": {
"message": "Ten film jest skategoryzowany jako muzyka. Czy masz pewność, że jest tutaj sponsor? Jeśli w rzeczywistości jest to „Sekcja Niemuzyczna”, otwórz opcje rozszerzenia i włącz tę kategorię. Wtedy będziesz w stanie zamieścić ten segment jako „Bez Muzyki” zamiast sponsora. Przeczytaj proszę wytyczne, jeśli masz wątpliwości."
@@ -802,10 +805,25 @@
"Credits": {
"message": "Autorzy"
},
"highlightNewFeature": {
"message": "Nowość! Przejdź do interesującej części filmu jednym kliknięciem z nową kategorią wyróżnione"
},
"LearnMore": {
"message": "Dowiedz się więcej"
},
"CopyDownvoteButtonInfo": {
"message": "Minusuje i tworzy lokalną kopię, abyś mógł przesłać poprawioną wersję"
},
"OpenCategoryWikiPage": {
"message": "Otwórz stronę wiki dla tej kategorii."
},
"CopyAndDownvote": {
"message": "Skopiuj i zminusuj"
},
"ContinueVoting": {
"message": "Kontynuuj głosowanie"
},
"ChangeCategoryTooltip": {
"message": "To natychmiastowo zostanie zastosowane do twoich segmentów"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Użyj scroll'a myszy po najechaniu nad pole edycji, aby szybko dostosować czas. Kombinacje z ctrl'em i shift'em mogą być użyte, aby doszlifować zmiany."
}
}

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Recapitulação rápida de episódios anteriores, ou uma prévia do que está chegando mais tarde no vídeo atual. Destinado a clipes editados juntos, não para resumos falados."
},
"category_filler": {
"message": "Enrolando em tangente"
},
"category_filler_description": {
"message": "Cenas tangenciais inseridas apenas por enrolação ou humor que não são necessárias para compreender o tópico principal do vídeo. Isto não deve incluir segmentos que fornecem contexto ou detalhes de segundo plano."
},
"category_filler_short": {
"message": "Enrolação"
},
"category_music_offtopic": {
"message": "Música: Seção sem música"
},
@@ -700,7 +709,7 @@
"message": "Tempo errado ou incorreto"
},
"incorrectCategory": {
"message": "Categoria errada"
"message": "Mudar Categoria"
},
"nonMusicCategoryOnMusic": {
"message": "Este vídeo é categorizado como música. Tem certeza de que isto tem um patrocinador? Se este é realmente um \"Segmento Não Musical\", abra as opções da extensão e habilite esta categoria. Assim você pode enviar este segmento como \"Não-Musical\" ao invés de patrocinador. Por favor leia as diretrizes se estiver confuso."
@@ -805,10 +814,28 @@
"Credits": {
"message": "Créditos"
},
"highlightNewFeature": {
"message": "Novo! Vá direto ao ponto do vídeo com um clique com a nova categoria de Destaque"
},
"LearnMore": {
"message": "Saiba mais"
},
"CopyDownvoteButtonInfo": {
"message": "Dá voto negativo e cria uma cópia local para você reenviar"
},
"OpenCategoryWikiPage": {
"message": "Abrir a wiki dessa categoria."
},
"CopyAndDownvote": {
"message": "Copiar e dar voto negativo"
},
"ContinueVoting": {
"message": "Continuar Votando"
},
"ChangeCategoryTooltip": {
"message": "Isto irá aplicar instantaneamente seus segmentos"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Use a roda do mouse enquanto mantêm o cursor sobre a caixa de edição para ajustar o tempo rapidamente. Combinações das teclas ctrl e shift podem ser usadas para refinar as mudanças."
},
"fillerNewFeature": {
"message": "Novo! Pule tangentes e piadas com a categoria filler. Ative em opções"
}
}

View File

@@ -551,9 +551,6 @@
"downvoteDescription": {
"message": "Timpi Incorecți/Greșiți"
},
"incorrectCategory": {
"message": "Categorie Greșită"
},
"nonMusicCategoryOnMusic": {
"message": "Acest videoclip este categorisit ca muzică. Ești sigur ca există un sponsor? Dacă acesta este defapt un segment non-muzical, deschideți opțiunile extensiei și activați această categorie. Apoi, puteți trimite acest segment ca non-muzical în loc de sponsol. Vă rugăm să citiți ghidul dacă sunteți confuz."
},

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Краткое содержание предыдущих эпизодов или предварительный просмотр того, что будет в данном видео. Предназначено для сегментов, смонтированных из кусков видео, а не для устных пересказов."
},
"category_filler": {
"message": "Заполнение отвлечёнными темами"
},
"category_filler_description": {
"message": "Сегменты, которые увеличивают длительность видео за счёт отвлечённых тем или шуток, но не требуются для понимания основного содержания. Не должно иметь сегментов, объясняющие контекст или предысторию."
},
"category_filler_short": {
"message": "Заполнитель"
},
"category_music_offtopic": {
"message": "Музыка: Сегмент без музыки"
},
@@ -700,7 +709,7 @@
"message": "Не нужен/неверно указано время"
},
"incorrectCategory": {
"message": "Неверная категория"
"message": "Изменить категорию"
},
"nonMusicCategoryOnMusic": {
"message": "Это видео классифицировано как музыкальное. Вы уверены, что в нём есть спонсоры? Если на самом деле это \"Сегмент без музыки\", откройте параметры расширения и включите эту категорию. Затем вы можете отправить этот сегмент как \"Без музыки\", а не как спонсора. Пожалуйста, прочтите руководство, если вы запутались."
@@ -805,13 +814,28 @@
"Credits": {
"message": "Авторы"
},
"highlightNewFeature": {
"message": "Новинка! Переходите сразу к главному моменту видео с помощью новой категории \"Важное\""
},
"LearnMore": {
"message": "Узнать больше"
},
"CopyDownvoteButtonInfo": {
"message": "Голосует против и создаёт локальную копию сегмента для повторной отправки"
},
"OpenCategoryWikiPage": {
"message": "Открыть вики-страницу этой категории."
},
"CopyAndDownvote": {
"message": "Скопировать и проголосовать против"
},
"ContinueVoting": {
"message": "Продолжить голосование"
},
"ChangeCategoryTooltip": {
"message": "Это мгновенно применится к вашим сегментам"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Наведите курсор на поле редактирования и используйте колесо мыши для быстрой настройки времени. Клавиши Ctrl или Shift могут быть использованы для точной настройки."
},
"fillerNewFeature": {
"message": "Новое! Пропускайте сегменты с отвлечёнными темами или шутками. Включите в настройках"
}
}

View File

@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Rýchla rekapitulácia predošlej epizódy alebo ukážka toho, čo bude nasledovať neskôr v aktuálnom videu. Myslené pre zostrihané videá, nie pre hovorený súhrn."
},
"category_filler": {
"message": "Odbočka mimo tému"
},
"category_filler_description": {
"message": "Odbočky mimo tému pridané len pre zábavu, nepotrebné pre pochopenie hlavného obsahu videa. Nemalo by zahŕňať segmenty, ktoré vysvetľujú kontext alebo vedľajšie detaily."
},
"category_filler_short": {
"message": "Odbočka"
},
"category_music_offtopic": {
"message": "Hudba: časť bez hudby"
},
@@ -700,7 +709,7 @@
"message": "Nesprávne/Zlé načasovanie"
},
"incorrectCategory": {
"message": "Nesprávna kategória"
"message": "Zmeniť kategóriu"
},
"nonMusicCategoryOnMusic": {
"message": "Toto video je kategorizované ako hudobné. Ste si istý, že obsahuje sponzora? Ak sa skutočne jedná o časť bez hudby, otvorte možnosti rozšírenia a povoľte túto kategóriu. Potom môžete tento segment uložiť ako kategóriu \"Bez hudby\" namiesto sponzora. Ak si neviete rady, tak si prosím prečítajte pravidlá."
@@ -805,10 +814,28 @@
"Credits": {
"message": "Autori"
},
"highlightNewFeature": {
"message": "Novinka! Pomocou novej kategórie \"Hlavný obsah videa\" môžete jedným klikom preskočiť \"k veci\""
},
"LearnMore": {
"message": "Zistiť viac"
},
"CopyDownvoteButtonInfo": {
"message": "Dá palec dole a vytvorí kópiu, aby ste mohli segment znova odoslať"
},
"OpenCategoryWikiPage": {
"message": "Otvoriť wiki stránku tejto kategórie."
},
"CopyAndDownvote": {
"message": "Skopírovať a dať palec dole"
},
"ContinueVoting": {
"message": "Pokračovať v hodnotení"
},
"ChangeCategoryTooltip": {
"message": "Týmto ihneď vykonáte zmeny v segmentoch"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Čas môžete rýchlo zmeniť kolieskom myši, ak je kurozor nad zadávacím políčkom. Pre jemné zmeny pritom držte kláves ctrl alebo shift."
},
"fillerNewFeature": {
"message": "Nové! Preskočte odbočky mimo tému a vtipy s kategóriou filler. Zapnite si ju v nastaveniach"
}
}

View File

@@ -287,7 +287,7 @@
"message": "Hoppa över är inaktiverat"
},
"yourWork": {
"message": "Ditt Bidrag",
"message": "Ditt bidrag",
"description": "Used to describe the section that will show you the statistics from your submissions."
},
"502": {
@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Snabb sammanfattning av tidigare avsnitt eller en förhandsvisning av vad som kommer upp senare i den aktuella videon. Avsett för redigerade klipp, inte för sammanfattningar."
},
"category_filler": {
"message": "Ämnesavvikelse"
},
"category_filler_description": {
"message": "Tangentiella scener endast tillagda för utfyllnad eller humor som inte krävs för att förstå det huvudsakliga innehållet i videon. Detta bör inte omfatta segment som tillhandahåller innehåll eller bakgrundsdetaljer."
},
"category_filler_short": {
"message": "Utfyllnad"
},
"category_music_offtopic": {
"message": "Musik: Icke-musikavsnitt"
},
@@ -700,7 +709,7 @@
"message": "Fel/Fel tidsintervall"
},
"incorrectCategory": {
"message": "Fel kategori"
"message": "Ändra kategori"
},
"nonMusicCategoryOnMusic": {
"message": "Den här videon kategoriseras som musik. Är du säker på att denna har en sponsor? Om detta faktiskt är ett \"icke-musiksegment\", öppna tilläggsalternativen och aktivera denna kategori. Då kan du skicka in detta segment som \"icke-musik\" i stället för sponsor. Läs riktlinjerna om något är oklart."
@@ -719,7 +728,7 @@
"message": "Kategorier finns här!"
},
"categoryUpdate2": {
"message": "Öppna alternativen för att hoppa över intros, outros, merch, osv."
"message": "Öppna alternativen för att hoppa över intros, outros, varor, osv."
},
"help": {
"message": "Hjälp"
@@ -794,7 +803,7 @@
"message": "Databasen är offentlig och finns på"
},
"helpPageCopyOfDatabase2": {
"message": "Källkoden är fritt tillgänglig. Så, även om något händer mig, är dina bidrag inte förlorade."
"message": "Källkoden är fritt tillgänglig. Så, även om något händer mig, är dina inskickningar inte förlorade."
},
"helpPageNews": {
"message": "Nyheter och hur är det gjort"
@@ -805,13 +814,28 @@
"Credits": {
"message": "Medverkande"
},
"highlightNewFeature": {
"message": "Nytt! Ta dig till stället i videon med ett klick med den nya markeringskategorin"
},
"LearnMore": {
"message": "Läs mer"
},
"CopyDownvoteButtonInfo": {
"message": "Rösta ner och skapar en lokal kopia för dig att skicka igen"
},
"OpenCategoryWikiPage": {
"message": "Öppna denna kategoris wiki-sida."
},
"CopyAndDownvote": {
"message": "Kopiera och rösta ner"
},
"ContinueVoting": {
"message": "Fortsätt rösta"
},
"ChangeCategoryTooltip": {
"message": "Detta kommer omedelbart att verkställas till dina segment"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Använd mushjulet medan du håller muspekaren över redigeringsrutan för att snabbt justera tiden. Kombinationer av CTRL- eller SKIFT-tangenten kan användas för att finjustera tiden."
},
"fillerNewFeature": {
"message": "Nytt! Hoppa över ämnesavvikelser och skämt med utfyllnadskategorin. Aktiveras i alternativen"
}
}

View File

@@ -655,9 +655,6 @@
"downvoteDescription": {
"message": "தவறான / தவறான நேரம்"
},
"incorrectCategory": {
"message": "தவறான வகை"
},
"nonMusicCategoryOnMusic": {
"message": "இந்த வீடியோ இசை என வகைப்படுத்தப்பட்டுள்ளது. இதற்கு ஒரு ஸ்பான்சர் இருப்பதை நீங்கள் உறுதியாக நம்புகிறீர்களா? இது உண்மையில் \"இசை அல்லாத பிரிவு\" என்றால், நீட்டிப்பு விருப்பங்களைத் திறந்து இந்த வகையை இயக்கவும். பின்னர், நீங்கள் இந்த பகுதியை ஸ்பான்சருக்கு பதிலாக \"இசை அல்லாதது\" என்று சமர்ப்பிக்கலாம். நீங்கள் குழப்பமாக இருந்தால் வழிகாட்டுதல்களைப் படிக்கவும்."
},

View File

@@ -554,9 +554,6 @@
"downvoteDescription": {
"message": "తప్పు / తప్పు సమయం"
},
"incorrectCategory": {
"message": "తప్పు వర్గం"
},
"nonMusicCategoryOnMusic": {
"message": "ఈ వీడియోను సంగీతంగా వర్గీకరించారు. దీనికి స్పాన్సర్ ఉందని మీరు ఖచ్చితంగా అనుకుంటున్నారా? ఇది వాస్తవానికి \"నాన్-మ్యూజిక్ సెగ్మెంట్\" అయితే, పొడిగింపు ఎంపికలను తెరిచి ఈ వర్గాన్ని ప్రారంభించండి. అప్పుడు, మీరు ఈ విభాగాన్ని స్పాన్సర్‌కు బదులుగా \"నాన్-మ్యూజిక్\" గా సమర్పించవచ్చు. మీరు గందరగోళంలో ఉంటే దయచేసి మార్గదర్శకాలను చదవండి."
},

View File

@@ -182,6 +182,9 @@
"hideButtonsDescription": {
"message": "Bu YouTube oynatıcısındaki bölüm geçişlerini yolladığınız butonları saklayacaktır."
},
"showSkipButton": {
"message": "“Asıl Kısma Atla” Düğmesi Oynatıcıda Kalsın"
},
"showInfoButton": {
"message": "YouTube Oynatıcısındaki Bilgi Butonunu Göster"
},
@@ -690,9 +693,6 @@
"downvoteDescription": {
"message": "Hatalı/Yanlış Zaman"
},
"incorrectCategory": {
"message": "Yanlış Kategori"
},
"nonMusicCategoryOnMusic": {
"message": "Bu video müzik olarak sınıflandırılmıştır. Bunun bir sponsor olduğundan emin misin? Bu aslında bir \"Müzik Dışı bölüm\" ise, uzantı seçeneklerini açın ve bu kategoriyi etkinleştirin. Ardından, bu kısmı sponsor yerine \"Müzik Olmayan\" olarak gönderebilirsiniz. Kafanız karıştıysa lütfen yönergeleri okuyun."
},
@@ -781,9 +781,6 @@
"Credits": {
"message": "Emeği Geçenler"
},
"highlightNewFeature": {
"message": "Yeni! \"Vurgu\" kategorisi sayesinde tek tıkla videonun asıl yerine gidebilirsiniz"
},
"LearnMore": {
"message": "Dahasını Öğren"
}

View File

@@ -309,7 +309,7 @@
"message": "Вимкнути звук {0}?"
},
"skip_to_category": {
"message": "Пропустить до {0}?",
"message": "Пропустити до {0}?",
"description": "Used for skipping to things (Skip to Highlight)"
},
"skipped": {
@@ -563,6 +563,15 @@
"category_preview_description": {
"message": "Короткий зміст попередніх епізодів або попередній перегляд того, що буде в даному відео. Призначено для сегментів, змонтованих зі шматків відео, а не для усних переказів."
},
"category_filler": {
"message": "Дотичне наповнення"
},
"category_filler_description": {
"message": "Дотичні сцени додані лише для наповнення або гумору, які не потрібні для розуміння основного вмісту відео. Це не повинно включати сегменти, що надають контекст або передісторію."
},
"category_filler_short": {
"message": "Наповнення"
},
"category_music_offtopic": {
"message": "Музика: Сегмент без музики"
},
@@ -576,7 +585,7 @@
"message": "Основне"
},
"category_poi_highlight_description": {
"message": "Часть видео, которую ищут большинство людей. Аналогично комментарию «Видео начинается с X:XX»."
"message": "Частина відео яку шукає більшість людей (Аналогічно коментарю \"Відео починається з Х:ХХ\")."
},
"category_livestream_messages": {
"message": "Прямі трансляції: пожертвування/читання повідомлення"
@@ -597,13 +606,13 @@
"message": "Вимкнути"
},
"autoSkip_POI": {
"message": "Автоматический переход к началу"
"message": "Автоматично перейти до початку"
},
"manualSkip_POI": {
"message": "Спитати поки відео завантажується"
},
"showOverlay_POI": {
"message": "Показать на панели поиска"
"message": "Показати в смузі перемотування"
},
"autoSkipOnMusicVideos": {
"message": "Автоматично пропустити усі сегменти, якщо присутній сегмент без музики"
@@ -700,7 +709,7 @@
"message": "Невірно вказано час"
},
"incorrectCategory": {
"message": "Невірна категорія"
"message": "Змінити категорію"
},
"nonMusicCategoryOnMusic": {
"message": "Це відео класифіковано як музичне. Ви впевнені, що в ньому є спонсори? Якщо насправді це \"Сегмент без музики\", відкрийте параметри розширення і увімкніть цю категорію. Потім ви можете надіслати цей сегмент як \"Без музики\", а не як спонсора. Будь ласка, прочитайте керівництво, якщо ви заплуталися."
@@ -805,12 +814,24 @@
"Credits": {
"message": "Автори"
},
"highlightNewFeature": {
"message": "Новинка! Переходьте відразу до головного моменту відео за допомогою нової категорії \"Важливе\""
},
"LearnMore": {
"message": "Дізнатися більше"
},
"CopyDownvoteButtonInfo": {
"message": "Голосує проти та створює локальну копію для повторного надсилання"
},
"OpenCategoryWikiPage": {
"message": "Відкрити вікі-сторінку цієї категорії."
},
"CopyAndDownvote": {
"message": "Скопіювати та проголосувати проти"
},
"ContinueVoting": {
"message": "Продовжити голосування"
},
"ChangeCategoryTooltip": {
"message": "Це миттєво буде застосовано до ваших сегментів"
},
"SponsorTimeEditScrollNewFeature": {
"message": "Навівши курсор на поле редагування, користуйтеся колесом прокрутки, щоб швидко відрегулювати час. Комбінації клавіш ctrl або shift можуть бути використані для точнішої настройки змін."
}

View File

@@ -23,7 +23,7 @@
"message": "đoạn quảng cáo"
},
"Segments": {
"message": "đoạn quảng cáo"
"message": "phân đoạn"
},
"upvoteButtonInfo": {
"message": "Tán thành phân đoạn này"
@@ -101,10 +101,10 @@
"message": "Có vẻ máy chủ đang không hoạt động. Hãy liên hệ nhà phát triển ngay lập tức."
},
"connectionError": {
"message": "Đã xảy ra lỗi kết nối. Mã của lỗi: "
"message": "Đã xảy ra lỗi kết nối. Mã lỗi: "
},
"clearTimes": {
"message": "Xóa đoạn quảng cáo"
"message": "Xóa các phân đoạn"
},
"openPopup": {
"message": "Mở bảng popup của SponsorBlock"
@@ -113,7 +113,7 @@
"message": "Đóng bảng popup"
},
"SubmitTimes": {
"message": "Đăng đoạn quảng cáo"
"message": "Đăng phân đoạn"
},
"submitCheck": {
"message": "Bạn có chắc là muốn đăng không?"
@@ -125,7 +125,7 @@
"message": "Loại kênh khỏi danh sách không chặn"
},
"voteOnTime": {
"message": "Bầu chọn một đoạn quảng cáo"
"message": "Bầu chọn một phân đoạn"
},
"Submissions": {
"message": "Các phân đoạn"
@@ -165,7 +165,7 @@
"message": "Sao chép Public UserID"
},
"discordAdvert": {
"message": "Hãy tham gia server Discord chính thức để đăng gợi ý và phản hồi!"
"message": "Hãy tham gia server Discord chính thức để đưa ra gợi ý và phản hồi!"
},
"hideThis": {
"message": "Đóng lại"
@@ -225,7 +225,7 @@
"message": "Hiện thông báo lại"
},
"showSkipNotice": {
"message": "Hiển thị thông báo sau khi bỏ qua quảng cáo"
"message": "Hiển thị thông báo sau khi bỏ qua phân đoạn"
},
"noticeVisibilityMode0": {
"message": "Thông báo bỏ qua với kích thước đầy đủ"
@@ -320,7 +320,7 @@
"message": "Bật tự động bỏ qua quảng cáo"
},
"audioNotification": {
"message": "Thông báo bằng âm thanh khi bỏ qua quảng cáo"
"message": "Thông báo bằng âm thanh khi bỏ qua"
},
"audioNotificationDescription": {
"message": "Thông báo bằng âm thanh sẽ được bật khi bỏ qua quảng cáo. Nếu tắt tính năng này (hoặc tính năng tự động bỏ qua quảng cáo bị tắt), sẽ không có âm thanh kêu."
@@ -362,7 +362,7 @@
"message": "Nhập/Xuất mã người dùng của bạn"
},
"whatChangeUserID": {
"message": "Đây là mã cần được giữ bí mật. Nó giống như mật khẩu và không nên được chia sẻ cho bất kì ai khác. Nếu có ai đó lấy được mã này, họ có thể mạo danh bạn. Còn nếu như bạn đang tìm khoá ID công khai, hãy nhấn vào nút \"Sao chép Public ID\" trong popup của SponsorBlock."
"message": "Đây là mã cần được giữ bí mật. Nó giống như mật khẩu và không nên được chia sẻ cho bất kì ai khác. Nếu có ai đó lấy được mã này, họ có thể mạo danh bạn. Còn nếu như bạn đang tìm khoá ID công khai, hãy nhấn vào nút \"Sao chép Public UserID\" trong popup của SponsorBlock."
},
"setUserID": {
"message": "Đặt mã người dùng"
@@ -465,7 +465,7 @@
"message": "Tệp JSON này không được định dạng đúng cách. Tùy chọn của bạn chưa được thay đổi."
},
"confirmNoticeTitle": {
"message": "Đăng đoạn quảng cáo"
"message": "Đăng phân đoạn"
},
"submit": {
"message": "Đăng"
@@ -688,14 +688,11 @@
"downvoteDescription": {
"message": "Phân đoạn sai / không đúng"
},
"incorrectCategory": {
"message": "Sai thể loại"
},
"nonMusicCategoryOnMusic": {
"message": "Video này đã được phân loại là âm nhạc. Bạn có chắc đây là quảng cáo nhà tài trợ không? Nếu đây là phân đoạn \"Không phải nhạc\", hãy mở Cài đặt tiện ích và bật lựa chọn đó. Rồi bạn có thể đăng tải phân đoạn lên dưới danh mục \"Không phải nhạc\" thay vì \"Quảng cáo nhà tài trợ\". Hãy đọc Hướng dẫn nếu bạn vẫn còn vướng mắc"
},
"multipleSegments": {
"message": "Nhiều đoạn"
"message": "Nhiều phân đoạn"
},
"guidelines": {
"message": "Hướng dẫn"
@@ -794,9 +791,6 @@
"Credits": {
"message": "Lời cảm ơn đến"
},
"highlightNewFeature": {
"message": "Tính năng mới! Đi đến đoạn quan trọng của video chỉ với 1 cú click với dạng phân đoạn Highlight"
},
"LearnMore": {
"message": "Tìm hiểu thêm"
}

View File

@@ -566,9 +566,6 @@
"downvoteDescription": {
"message": "不正确/错误的时间"
},
"incorrectCategory": {
"message": "错误的类别"
},
"nonMusicCategoryOnMusic": {
"message": "此视频的分类为音乐。 您确定其中包含赞助商广告吗?如果这是“非音乐片段”,请打开扩展选项并启用此类别。 之后,您可以以“非音乐”而不是赞助商广告类别提交此片段。如果您不太明白,请阅读指南。"
},

View File

@@ -336,7 +336,7 @@
"message": "警告:更改用戶 ID 是永久性的。您確定要這麼做嗎?請務必備份您的舊用戶 ID 來以防萬一。"
},
"createdBy": {
"message": "創建者"
"message": "者"
},
"keybindCurrentlySet": {
"message": "。它目前被設定為:"
@@ -632,9 +632,6 @@
"downvoteDescription": {
"message": "不正確/錯誤的時間"
},
"incorrectCategory": {
"message": "錯誤的類別"
},
"nonMusicCategoryOnMusic": {
"message": "這個影片被分類為音樂。您確定這有贊助內容嗎?如果這其實是\"非音樂片段\"的話,開啟擴充功能設定並啟用這個類別。接下來您即可提交這個片段為\"非音樂片段\"。如果您感到困惑,請閱讀方針"
},

View File

@@ -1,3 +1,7 @@
.hidden {
display: none;
}
#previewbar {
overflow: visible;
padding: 0;
@@ -290,6 +294,10 @@
float: right;
}
.sponsorSkipNoticeCloseButton.biggerCloseButton {
padding: 20px;
}
.sponsorSkipMessage {
font-size: 14px;
font-weight: bold;
@@ -298,6 +306,7 @@
margin-top: auto;
display: inline-block;
margin-right: 10px;
margin-bottom: auto;
}
.sponsorSkipInfo {
@@ -526,12 +535,35 @@ input::-webkit-inner-spin-button {
.skipButtonControlBarContainer {
cursor: pointer;
display: flex;
color: white;
}
.skipButtonControlBarContainer.hidden {
display: none !important;
}
.skipButtonControlBarContainer.mobile {
bottom: 30%;
margin-left: 5px;
position: absolute;
height: 20px;
background-color: #00000030;
opacity: 0.5;
border-radius: 10px;
padding: 4px;
}
.skipButtonControlBarContainer.mobile.textDisabled {
padding: 0;
background-color: transparent;
}
.skipButtonControlBarContainer.mobile > div {
margin: auto;
margin-left: 5px;
}
#sbSkipIconControlBarImage {
height: 60%;
top: 0px;
@@ -540,6 +572,11 @@ input::-webkit-inner-spin-button {
margin: auto;
}
.mobile #sbSkipIconControlBarImage {
height: 100%;
width: 20px;
}
.sponsorBlockTooltip {
position: absolute;
background-color: rgba(28, 28, 28, 0.7);

View File

@@ -3,6 +3,7 @@
<head>
<title> SponsorBlock </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="styles.css" rel="stylesheet"/>
@@ -39,7 +40,7 @@
__MSG_helpPageFeatureDisclaimer__
</p>
<iframe src="../options/options.html#embed" width="100%" height="500px" style="border: none"></iframe>
<iframe class="optionsFrame" src="../options/options.html#embed" style="border: none"></iframe>
<h1>__MSG_helpPageHowSkippingWorks__</h1>
@@ -56,14 +57,12 @@
__MSG_helpPageHowSkippingWorks2__
</p>
<div class="center"><img height="120px" src="images/voting on notice.gif"></div>
<div class="center"><img src="images/voting on notice.gif"></div>
<h1>__MSG_Submitting__</h1>
<p class="projectPreview">
<span class="projectPreviewImageLargeRight">
<img src="https://i.imgur.com/A1ilk6x.gif">
</span>
<img class="projectPreviewImageLarge" src="https://i.imgur.com/A1ilk6x.gif">
__MSG_helpPageSubmitting1__

View File

@@ -40,14 +40,6 @@ body {
transform: translateY(-20%);
}
.projectPreviewImageLargeRight {
position: absolute;
right: -210px;
width: 200px;
top: 50%;
transform: translateY(-50%);
}
.createdBy {
font-size: 14px;
text-align: center;
@@ -142,18 +134,9 @@ p,li,code,a {
overflow-wrap: break-word;
}
@media screen and (orientation:portrait) {
p,li,code,a {
max-width: 100%;
}
.projectPreviewImage {
position: unset;
width: 130px;
display: block;
margin: auto;
transform: none;
}
.optionsFrame {
width: 100%;
height: 500px;
}
.previewImage {
@@ -187,4 +170,33 @@ svg {
#sbDonate {
font-size: 10px;
}
@media screen and (orientation:portrait) {
.projectPreviewImage {
position: unset;
width: 50%;
display: block;
margin: auto;
transform: none;
}
.projectPreviewImageLarge {
position: unset;
left: 0;
width: 50%;
display: block;
margin: auto;
transform: unset;
}
.container {
max-width: 100%;
margin: 5px;
text-align: center;
}
p,li,code,a {
text-align: center;
}
}

View File

@@ -80,8 +80,6 @@ chrome.runtime.onInstalled.addListener(function () {
const newUserID = utils.generateUserID();
//save this UUID
Config.config.userID = newUserID;
Config.config.highlightCategoryUpdate = true;
}
}, 1500);
});

View File

@@ -1,6 +1,7 @@
import * as React from "react";
import Config from "../config"
import * as CompileConfig from "../../config.json";
import { Category, CategorySkipOption } from "../types";
import { getCategoryActionType } from "../utils/categoryUtils";
@@ -93,6 +94,10 @@ class CategorySkipOptionsComponent extends React.Component<CategorySkipOptionsPr
<td
colSpan={2}>
{chrome.i18n.getMessage("category_" + this.props.category + "_description")}
{' '}
<a href={CompileConfig.wikiLinks[this.props.category]} target="_blank" rel="noreferrer">
{`${chrome.i18n.getMessage("LearnMore")}`}
</a>
</td>
</tr>

View File

@@ -33,6 +33,7 @@ export interface NoticeProps {
zIndex?: number,
style?: React.CSSProperties
biggerCloseButton?: boolean;
}
export interface NoticeState {
@@ -151,7 +152,8 @@ class NoticeComponent extends React.Component<NoticeProps, NoticeState> {
{/* Close button */}
<img src={chrome.extension.getURL("icons/close.png")}
className="sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeCloseButton sponsorSkipNoticeRightButton"
className={"sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeCloseButton sponsorSkipNoticeRightButton"
+ (this.props.biggerCloseButton ? " biggerCloseButton" : "")}
onClick={() => this.close()}>
</img>
</td>

View File

@@ -188,6 +188,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
maxCountdownTime={this.state.maxCountdownTime}
videoSpeed={() => this.contentContainer().v?.playbackRate}
style={noticeStyle}
biggerCloseButton={this.contentContainer().onMobileYouTube}
ref={this.noticeRef}
closeListener={() => this.closeListener()}
smaller={this.state.smaller}
@@ -350,13 +351,21 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
if (this.state.showSkipButton && (this.segments.length > 1
|| getCategoryActionType(this.segments[0].category) !== CategoryActionType.POI
|| this.props.unskipTime)) {
const style: React.CSSProperties = {
marginLeft: "4px",
color: (this.state.actionState === SkipNoticeAction.Unskip) ? this.selectedColor : this.unselectedColor
};
if (this.contentContainer().onMobileYouTube) {
style.padding = "20px";
style.minWidth = "100px";
}
return (
<span className="sponsorSkipNoticeUnskipSection">
<button id={"sponsorSkipUnskipButton" + this.idSuffix}
className="sponsorSkipObject sponsorSkipNoticeButton"
style={{marginLeft: "4px",
color: (this.state.actionState === SkipNoticeAction.Unskip) ? this.selectedColor : this.unselectedColor
}}
style={style}
onClick={() => this.prepAction(SkipNoticeAction.Unskip)}>
{this.state.skipButtonText + (this.state.showKeybindHint ? " (" + Config.config.skipKeybind + ")" : "")}
</button>

View File

@@ -38,6 +38,9 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
configUpdateListener: () => void;
previousSkipType: CategoryActionType;
timeBeforeChangingToPOI: number; // Initialized when first selecting POI
constructor(props: SponsorTimeEditProps) {
super(props);
@@ -46,6 +49,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
this.idSuffix = this.props.idSuffix;
this.previousSkipType = CategoryActionType.Skippable;
this.state = {
editing: false,
sponsorTimeEdits: [null, null],
@@ -152,8 +156,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
<div id={"sponsorTimesContainer" + this.idSuffix}
className="sponsorTimeDisplay"
onClick={this.toggleEditTime.bind(this)}
onWheel={this.toggleEditTime.bind(this)}>
onClick={this.toggleEditTime.bind(this)}>
{utils.getFormattedTime(segment[0], true) +
((!isNaN(segment[1]) && getCategoryActionType(sponsorTime.category) === CategoryActionType.Skippable)
? " " + chrome.i18n.getMessage("to") + " " + utils.getFormattedTime(segment[1], true) : "")}
@@ -212,7 +215,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
{(!isNaN(segment[1]) && getCategoryActionType(sponsorTime.category) === CategoryActionType.Skippable) ? (
<span id={"sponsorTimePreviewButton" + this.idSuffix}
className="sponsorTimeEditButton"
onClick={this.previewTime.bind(this)}>
onClick={(e) => this.previewTime(e.ctrlKey, e.shiftKey)}>
{chrome.i18n.getMessage("preview")}
</span>
): ""}
@@ -275,6 +278,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
}
sponsorTimeEdits[index] = utils.getFormattedTime(timeAsNumber, true);
if (getCategoryActionType(sponsorTime.category) === CategoryActionType.POI) sponsorTimeEdits[1] = sponsorTimeEdits[0];
this.setState({sponsorTimeEdits});
this.saveEditTimes();
}
@@ -288,11 +292,13 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
referenceNode: element.parentElement,
prependElement: element,
timeout: 15,
bottomOffset: 75 + "px",
bottomOffset: 0 + "px",
leftOffset: -318 + "px",
backgroundColor: "rgba(28, 28, 28, 1.0)",
htmlId: "sponsorTimesContainer" + this.idSuffix,
buttonFunction: () => {Config.config.scrollToEditTimeUpdate = true}
buttonFunction: () => { Config.config.scrollToEditTimeUpdate = true },
fontSize: "14px",
maxHeight: "200px"
});
}
}
@@ -339,6 +345,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
}
if (getCategoryActionType(event.target.value as Category) === CategoryActionType.POI) {
if (this.previousSkipType === CategoryActionType.Skippable) this.timeBeforeChangingToPOI = utils.getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);
this.setTimeTo(1, null);
this.props.contentContainer().updateEditButtonsOnPlayer();
@@ -346,8 +353,11 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
.some((segment, i) => segment.category === event.target.value && i !== this.props.index)) {
alert(chrome.i18n.getMessage("poiOnlyOneSegment"));
}
} else if (getCategoryActionType(event.target.value as Category) === CategoryActionType.Skippable && this.previousSkipType === CategoryActionType.POI) {
this.setTimeTo(1, this.timeBeforeChangingToPOI);
}
this.previousSkipType = getCategoryActionType(event.target.value as Category);
this.saveEditTimes();
}
@@ -436,13 +446,17 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
this.props.contentContainer().updatePreviewBar();
}
previewTime(): void {
previewTime(ctrlPressed = false, shiftPressed = false): void {
const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;
const index = this.props.index;
const skipTime = sponsorTimes[index].segment[0];
this.props.contentContainer().previewTime(skipTime - (2 * this.props.contentContainer().v.playbackRate));
let seekTime = 2;
if (ctrlPressed) seekTime = 0.5;
if (shiftPressed) seekTime = 0.25;
this.props.contentContainer().previewTime(skipTime - (seekTime * this.props.contentContainer().v.playbackRate));
}
inspectTime(): void {

View File

@@ -45,13 +45,13 @@ interface SBConfig {
showDonationLink: boolean,
autoHideInfoButton: boolean,
autoSkipOnMusicVideos: boolean,
highlightCategoryUpdate: boolean,
colorPalette: {
red: string,
white: string,
locked: string
},
scrollToEditTimeUpdate: boolean,
fillerUpdate: boolean,
// What categories should be skipped
categorySelections: CategorySelection[],
@@ -75,6 +75,8 @@ interface SBConfig {
"preview-music_offtopic": PreviewBarOption,
"poi_highlight": PreviewBarOption,
"preview-poi_highlight": PreviewBarOption,
"filler": PreviewBarOption,
"preview-filler": PreviewBarOption,
}
}
@@ -200,12 +202,15 @@ const Config: SBObject = {
showDonationLink: true,
autoHideInfoButton: true,
autoSkipOnMusicVideos: false,
highlightCategoryUpdate: false, // TODO: Remove this once update is done
scrollToEditTimeUpdate: false, // false means the tooltip will be shown
fillerUpdate: false,
categorySelections: [{
name: "sponsor" as Category,
option: CategorySkipOption.AutoSkip
}, {
name: "poi_highlight" as Category,
option: CategorySkipOption.ManualSkip
}],
colorPalette: {
@@ -283,6 +288,14 @@ const Config: SBObject = {
"preview-poi_highlight": {
color: "#9b044c",
opacity: "0.7"
},
"filler": {
color: "#7300FF",
opacity: "0.9"
},
"preview-filler": {
color: "#2E0066",
opacity: "0.7"
}
}
},
@@ -379,16 +392,11 @@ function fetchConfig(): Promise<void> {
}
function migrateOldFormats(config: SBConfig) {
// Should eventually move into defaults
if (!config["highlightCategoryAdded"] && !config.categorySelections.some((s) => s.name === "poi_highlight")) {
config["highlightCategoryAdded"] = true;
config.categorySelections.push({
name: "poi_highlight" as Category,
option: CategorySkipOption.ManualSkip
});
config.categorySelections = config.categorySelections;
if (config["highlightCategoryAdded"] !== undefined) {
chrome.storage.sync.remove("highlightCategoryAdded");
}
if (config["highlightCategoryUpdate"] !== undefined) {
chrome.storage.sync.remove("highlightCategoryUpdate");
}
if (config["askAboutUnlistedVideos"]) {

View File

@@ -17,6 +17,7 @@ import { getCategoryActionType } from "./utils/categoryUtils";
import { SkipButtonControlBar } from "./js-components/skipButtonControlBar";
import { Tooltip } from "./render/Tooltip";
import { getStartTimeFromUrl } from "./utils/urlParser";
import { getControls } from "./utils/pageUtils";
// Hack to get the CSS loaded on permission-based sites (Invidious)
utils.wait(() => Config.config !== null, 5000, 10).then(addCSS);
@@ -30,7 +31,6 @@ let sponsorVideoID: VideoID = null;
// List of open skip notices
const skipNotices: SkipNotice[] = [];
let activeSkipKeybindElement: ToggleSkippable = null;
let lastPOISkip = 0;
// JSON video info
let videoInfo: VideoInfo = null;
@@ -151,7 +151,8 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo
//send the sponsor times along with if it's found
sendResponse({
found: sponsorDataFound,
sponsorTimes: sponsorTimes
sponsorTimes: sponsorTimes,
onMobileYouTube
});
if (!request.updating && popupInitialised && document.getElementById("sponsorBlockPopupContainer") != null) {
@@ -191,7 +192,8 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo
case "refreshSegments":
sponsorsLookup(sponsorVideoID, false).then(() => sendResponse({
found: sponsorDataFound,
sponsorTimes: sponsorTimes
sponsorTimes: sponsorTimes,
onMobileYouTube
}));
return true;
@@ -331,11 +333,33 @@ async function videoIDChange(id) {
// Clear unsubmitted segments from the previous video
sponsorTimesSubmitting = [];
updateSponsorTimesSubmitting();
// Filler update
if (!Config.config.fillerUpdate) {
Config.config.fillerUpdate = true;
utils.wait(getControls).then(() => {
const playButton = document.querySelector(".ytp-play-button") as HTMLElement;
const allCategories = ["sponsor", "intro", "outro", "selfpromo", "interaction"];
if (playButton && allCategories.every((name) => Config.config.categorySelections.some((selection) => selection.name === name))
&& utils.getCategorySelection("filler") === undefined) {
new Tooltip({
text: chrome.i18n.getMessage("fillerNewFeature"),
link: "https://wiki.sponsor.ajay.app/w/Filler_Tangent",
referenceNode: playButton.parentElement,
prependElement: playButton,
timeout: 10
});
}
});
}
}
function handleMobileControlsMutations(): void {
updateVisibilityOfPlayerControlsButton();
skipButtonControlBar?.updateMobileControls();
if (previewBar !== null) {
if (document.body.contains(previewBar.container)) {
const progressBarBackground = document.querySelector<HTMLElement>(".progress-bar-background");
@@ -392,12 +416,6 @@ function createPreviewBar(): void {
function durationChangeListener(): void {
updateAdFlag();
updatePreviewBar();
if (sponsorTimes) sponsorTimes = sponsorTimes.filter(segmentDurationFilter);
}
function segmentDurationFilter(segment: SponsorTime): boolean {
return segment.videoDuration === 0 || !video?.duration || Math.abs(video.duration - segment.videoDuration) < 2;
}
function cancelSponsorSchedule(): void {
@@ -606,24 +624,6 @@ function setupVideoListeners() {
startSponsorSchedule();
}
if (!Config.config.dontShowNotice) {
const currentPoiSegment = sponsorTimes?.find((segment) =>
getCategoryActionType(segment.category) === CategoryActionType.POI &&
video.currentTime - segment.segment[0] > 0 &&
video.currentTime - segment.segment[0] < previewBar.getMinimumSize(true));
if (currentPoiSegment && lastPOISkip < Date.now() - 3000
&& !skipNotices.some((notice) => notice.segments.some((s) => s.UUID === currentPoiSegment.UUID))) {
lastPOISkip = Date.now();
skipToTime({
v: video,
skipTime: currentPoiSegment.segment,
skippingSegments: [currentPoiSegment],
openNotice: true,
forceAutoSkip: true
});
}
}
});
video.addEventListener('ratechange', () => startSponsorSchedule());
// Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)
@@ -649,7 +649,8 @@ function setupSkipButtonControlBar() {
skippingSegments: [segment],
openNotice: true,
forceAutoSkip: true
})
}),
onMobileYouTube
});
}
@@ -675,19 +676,31 @@ async function sponsorsLookup(id: string, keepOldSubmissions = true) {
categories.push(categorySelection.name);
}
const extraRequestData: Record<string, unknown> = {};
const windowHash = window.location.hash.substr(1);
if (windowHash) {
const params: Record<string, unknown> = windowHash.split('&').reduce((acc, param) => {
const [key, value] = param.split('=');
acc[key] = value;
return acc;
}, {});
if (params.requiredSegment) extraRequestData.requiredSegment = params.requiredSegment;
}
// Check for hashPrefix setting
const hashPrefix = (await utils.getHash(id, 1)).substr(0, 4);
const response = await utils.asyncRequestToServer('GET', "/api/skipSegments/" + hashPrefix, {
categories,
actionTypes: Config.config.muteSegments ? [ActionType.Skip, ActionType.Mute] : [ActionType.Skip],
userAgent: `${chrome.runtime.id}`
userAgent: `${chrome.runtime.id}`,
...extraRequestData
});
if (response?.ok) {
const recievedSegments: SponsorTime[] = JSON.parse(response.responseText)
?.filter((video) => video.videoID === id)
?.map((video) => video.segments)[0]
?.filter(segmentDurationFilter);
?.map((video) => video.segments)[0];
if (!recievedSegments || !recievedSegments.length) {
// return if no video found
retryFetch();
@@ -1232,19 +1245,8 @@ function skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, u
if (!autoSkip
&& skippingSegments.length === 1
&& getCategoryActionType(skippingSegments[0].category) === CategoryActionType.POI) {
skipButtonControlBar.enable(skippingSegments[0], !Config.config.highlightCategoryUpdate ? 15 : 0);
if (!Config.config.highlightCategoryUpdate) {
new Tooltip({
text: chrome.i18n.getMessage("highlightNewFeature"),
link: "https://blog.ajay.app/highlight-sponsorblock",
referenceNode: skipButtonControlBar.getElement().parentElement,
prependElement: skipButtonControlBar.getElement(),
timeout: 15
});
Config.config.highlightCategoryUpdate = true;
}
skipButtonControlBar.enable(skippingSegments[0]);
if (onMobileYouTube) skipButtonControlBar.setShowKeybindHint(false);
activeSkipKeybindElement?.setShowKeybindHint(false);
activeSkipKeybindElement = skipButtonControlBar;
@@ -1253,6 +1255,7 @@ function skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, u
//send out the message saying that a sponsor message was skipped
if (!Config.config.dontShowNotice || !autoSkip) {
const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, unskipTime);
if (onMobileYouTube) newSkipNotice.setShowKeybindHint(false);
skipNotices.push(newSkipNotice);
activeSkipKeybindElement?.setShowKeybindHint(false);
@@ -1340,27 +1343,6 @@ function shouldSkip(segment: SponsorTime): boolean {
(Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic"));
}
function getControls(): HTMLElement | false {
const controlsSelectors = [
// YouTube
".ytp-right-controls",
// Mobile YouTube
".player-controls-top",
// Invidious/videojs video element's controls element
".vjs-control-bar",
];
for (const controlsSelector of controlsSelectors) {
const controls = document.querySelectorAll(controlsSelector);
if (controls && controls.length > 0) {
return <HTMLElement> controls[controls.length - 1];
}
}
return false;
}
/** Creates any missing buttons on the YouTube player if possible. */
async function createButtons(): Promise<void> {
if (onMobileYouTube) return;
@@ -1459,9 +1441,10 @@ function getRealCurrentTime(): number {
}
function startOrEndTimingNewSegment() {
const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;
if (!isSegmentCreationInProgress()) {
sponsorTimesSubmitting.push({
segment: [getRealCurrentTime()],
segment: [roundedTime],
UUID: null,
category: Config.config.defaultCategory,
actionType: ActionType.Skip,
@@ -1471,7 +1454,7 @@ function startOrEndTimingNewSegment() {
// Finish creating the new segment
const existingSegment = getIncompleteSegment();
const existingTime = existingSegment.segment[0];
const currentTime = getRealCurrentTime();
const currentTime = roundedTime;
// Swap timestamps if the user put the segment end before the start
existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];

View File

@@ -197,8 +197,11 @@ class PreviewBar {
if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;
bar.style.position = "absolute";
if (segment[1] - segment[0] > 0) bar.style.width = this.timeToPercentage(segment[1] - segment[0]);
bar.style.left = this.timeToPercentage(segment[0]);
const duration = Math.min(segment[1], this.videoDuration) - segment[0];
if (duration > 0) bar.style.width = this.timeToPercentage(duration);
const time = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];
bar.style.left = this.timeToPercentage(time);
return bar;
}

View File

@@ -7,6 +7,7 @@ const utils = new Utils();
export interface SkipButtonControlBarProps {
skip: (segment: SponsorTime) => void;
onMobileYouTube: boolean;
}
export class SkipButtonControlBar {
@@ -18,18 +19,31 @@ export class SkipButtonControlBar {
segment: SponsorTime;
showKeybindHint = true;
onMobileYouTube: boolean;
enabled = false;
timeout: NodeJS.Timeout;
duration = 0;
skip: (segment: SponsorTime) => void;
// Used if on mobile page
hideButton: () => void;
showButton: () => void;
// Used by mobile only for swiping away
left = 0;
swipeStart = 0;
constructor(props: SkipButtonControlBarProps) {
this.skip = props.skip;
this.onMobileYouTube = props.onMobileYouTube;
this.container = document.createElement("div");
this.container.classList.add("skipButtonControlBarContainer");
this.container.classList.add("hidden");
if (this.onMobileYouTube) this.container.classList.add("mobile");
this.skipIcon = document.createElement("img");
this.skipIcon.src = chrome.runtime.getURL("icons/skipIcon.svg");
@@ -43,6 +57,11 @@ export class SkipButtonControlBar {
this.container.addEventListener("click", () => this.toggleSkip());
this.container.addEventListener("mouseenter", () => this.stopTimer());
this.container.addEventListener("mouseleave", () => this.startTimer());
if (this.onMobileYouTube) {
this.container.addEventListener("touchstart", (e) => this.handleTouchStart(e));
this.container.addEventListener("touchmove", (e) => this.handleTouchMove(e));
this.container.addEventListener("touchend", () => this.handleTouchEnd());
}
}
getElement(): HTMLElement {
@@ -50,21 +69,38 @@ export class SkipButtonControlBar {
}
attachToPage(): void {
const leftControlsContainer = document.querySelector(".ytp-left-controls");
const mountingContainer = this.getMountingContainer();
this.chapterText = document.querySelector(".ytp-chapter-container");
if (leftControlsContainer && !leftControlsContainer.contains(this.container)) {
leftControlsContainer.insertBefore(this.container, this.chapterText);
if (Config.config.autoHideInfoButton) {
utils.setupAutoHideAnimation(this.skipIcon, leftControlsContainer, false, false);
if (mountingContainer && !mountingContainer.contains(this.container)) {
if (this.onMobileYouTube) {
mountingContainer.appendChild(this.container);
} else {
mountingContainer.insertBefore(this.container, this.chapterText);
}
if (Config.config.autoHideInfoButton && !this.onMobileYouTube) {
utils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);
} else {
const { hide, show } = utils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);
this.hideButton = hide;
this.showButton = show;
}
}
}
private getMountingContainer(): HTMLElement {
if (!this.onMobileYouTube) {
return document.querySelector(".ytp-left-controls");
} else {
return document.getElementById("player-container-id");
}
}
enable(segment: SponsorTime, duration?: number): void {
if (duration) this.duration = duration;
this.segment = segment;
this.enabled = true;
this.refreshText();
this.textContainer?.classList?.remove("hidden");
@@ -103,6 +139,8 @@ export class SkipButtonControlBar {
this.chapterText?.classList?.remove("hidden");
this.getChapterPrefix()?.classList?.remove("hidden");
this.enabled = false;
}
toggleSkip(): void {
@@ -116,12 +154,28 @@ export class SkipButtonControlBar {
return;
}
this.container.classList.add("textDisabled");
this.textContainer?.classList?.add("hidden");
this.chapterText?.classList?.remove("hidden");
this.getChapterPrefix()?.classList?.add("hidden");
utils.enableAutoHideAnimation(this.skipIcon);
if (this.onMobileYouTube) {
this.hideButton();
}
}
updateMobileControls(): void {
const overlay = document.getElementById("player-control-overlay");
if (overlay && this.enabled) {
if (overlay?.classList?.contains("pointer-events-off")) {
this.hideButton();
} else {
this.showButton();
}
}
}
private getTitle(): string {
@@ -131,5 +185,37 @@ export class SkipButtonControlBar {
private getChapterPrefix(): HTMLElement {
return document.querySelector(".ytp-chapter-title-prefix");
}
// Swiping away on mobile
private handleTouchStart(event: TouchEvent): void {
this.swipeStart = event.touches[0].clientX;
}
// Swiping away on mobile
private handleTouchMove(event: TouchEvent): void {
const distanceMoved = this.swipeStart - event.touches[0].clientX;
this.left = Math.min(-distanceMoved, 0);
this.updateLeftStyle();
}
// Swiping away on mobile
private handleTouchEnd(): void {
if (this.left < -this.container.offsetWidth / 2) {
this.disableText();
// Don't let animation play
this.skipIcon.style.display = "none";
setTimeout(() => this.skipIcon.style.removeProperty("display"), 200);
}
this.left = 0;
this.updateLeftStyle();
}
// Swiping away on mobile
private updateLeftStyle() {
this.container.style.left = this.left + "px";
}
}

View File

@@ -31,9 +31,10 @@ interface IsInfoFoundMessage {
export type Message = BaseMessage & (DefaultMessage | BoolValueMessage | IsInfoFoundMessage);
interface IsInfoFoundMessageResponse {
export interface IsInfoFoundMessageResponse {
found: boolean;
sponsorTimes: SponsorTime[];
onMobileYouTube: boolean;
}
interface GetVideoIdResponse {

View File

@@ -2,7 +2,7 @@ import Config from "./config";
import Utils from "./utils";
import { SponsorTime, SponsorHideType, CategoryActionType } from "./types";
import { Message, MessageResponse } from "./messageTypes";
import { Message, MessageResponse, IsInfoFoundMessageResponse } from "./messageTypes";
import { showDonationLink } from "./utils/configUtils";
import { getCategoryActionType } from "./utils/categoryUtils";
const utils = new Utils();
@@ -278,7 +278,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
}, (tabs) => onTabs(tabs, updating));
}
function infoFound(request: { found: boolean, sponsorTimes: SponsorTime[] }) {
function infoFound(request: IsInfoFoundMessageResponse) {
if (chrome.runtime.lastError) {
//This page doesn't have the injected content script, or at least not yet
displayNoVideo();
@@ -289,6 +289,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
if (request != undefined) {
//remove loading text
PageElements.mainControls.style.display = "flex";
if (request.onMobileYouTube) PageElements.mainControls.classList.add("hidden");
PageElements.whitelistButton.classList.remove("hidden");
PageElements.loadingIndicator.style.display = "none";

View File

@@ -13,6 +13,7 @@ export interface RectangleTooltipProps {
maxHeight?: string,
maxWidth?: string,
backgroundColor?: string,
fontSize?: string,
buttonFunction?: () => void;
}
@@ -29,6 +30,7 @@ export class RectangleTooltip {
props.maxWidth ??= "300px";
props.backgroundColor ??= "rgba(28, 28, 28, 0.7)";
this.text = props.text;
props.fontSize ??= "10px";
this.container = document.createElement('div');
props.htmlId ??= props.text;
@@ -51,7 +53,8 @@ export class RectangleTooltip {
left: props.leftOffset,
maxHeight: props.maxHeight,
maxWidth: props.maxWidth,
backgroundColor: props.backgroundColor}}
backgroundColor: props.backgroundColor,
fontSize: props.fontSize}}
className="sponsorBlockRectangleTooltip" >
<div>
<img className="sponsorSkipLogo sponsorSkipObject"

View File

@@ -183,7 +183,7 @@ export default class Utils {
}
}
setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {
setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void, show: () => void } {
if (enabled) element.classList.add("autoHiding");
element.classList.add("hidden");
element.classList.add("animationDone");
@@ -191,22 +191,30 @@ export default class Utils {
let mouseEntered = false;
container.addEventListener("mouseenter", () => {
mouseEntered = true;
element.classList.remove("animationDone");
// Wait for next event loop
setTimeout(() => {
if (mouseEntered) element.classList.remove("hidden")
}, 10);
});
container.addEventListener("mouseleave", () => {
mouseEntered = false;
if (element.classList.contains("autoHiding")) {
element.classList.add("hidden");
return {
hide: () => {
mouseEntered = false;
if (element.classList.contains("autoHiding")) {
element.classList.add("hidden");
}
},
show: () => {
mouseEntered = true;
element.classList.remove("animationDone");
// Wait for next event loop
setTimeout(() => {
if (mouseEntered) element.classList.remove("hidden")
}, 10);
}
});
};
}
setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {
const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);
container.addEventListener("mouseleave", () => hide());
container.addEventListener("mouseenter", () => show());
}
enableAutoHideAnimation(element: Element): void {

20
src/utils/pageUtils.ts Normal file
View File

@@ -0,0 +1,20 @@
export function getControls(): HTMLElement | false {
const controlsSelectors = [
// YouTube
".ytp-right-controls",
// Mobile YouTube
".player-controls-top",
// Invidious/videojs video element's controls element
".vjs-control-bar",
];
for (const controlsSelector of controlsSelectors) {
const controls = document.querySelectorAll(controlsSelector);
if (controls && controls.length > 0) {
return <HTMLElement> controls[controls.length - 1];
}
}
return false;
}