Compare commits

...

29 Commits
4.1.1 ... 4.1.5

Author SHA1 Message Date
Ajay Ramachandran
f6d2497e7b bump version 2022-02-24 14:34:51 -05:00
Ajay Ramachandran
6ea18fd536 New Crowdin updates (#1204) 2022-02-24 14:34:36 -05:00
Ajay Ramachandran
3d51c4eb53 Merge pull request #1192 from asportnoy/master
fix: ignore switchingVideos in Safari
2022-02-24 14:34:16 -05:00
Ajay Ramachandran
e11a8531fe Merge pull request #1205 from AronHK/settings
Settings css fixes
2022-02-24 13:50:51 -05:00
Ajay Ramachandran
05ba554075 Merge pull request #1206 from AronHK/keybind
Fix alt-tab, round 2
2022-02-24 12:46:41 -05:00
Áron Hegymegi-Kiss
0e5606423e fix alt-tab in chrome 2022-02-24 18:34:04 +01:00
Áron Hegymegi-Kiss
87354009b5 settings css fixes 2022-02-24 14:24:12 +01:00
Ajay Ramachandran
50c87a6842 New Crowdin updates (#1190) 2022-02-22 12:08:42 -05:00
Ajay
84a234f9b6 Fix full video saving old times
Fix #1198
2022-02-22 01:21:18 -05:00
Ajay
fd5ab9f153 bump version 2022-02-22 01:06:09 -05:00
Ajay
30fe40a523 Fix minimum duration
Fix #1202
2022-02-22 01:05:57 -05:00
Ajay
6e23650a99 Add category pill right away
Fix #1199
2022-02-22 01:01:27 -05:00
Ajay
d6a0029b85 Merge branch 'master' of https://github.com/ajayyy/SponsorBlock 2022-02-16 13:28:10 -05:00
Ajay
f25f986200 Fix category pill option
Fixes #1196
2022-02-16 13:27:50 -05:00
Ajay Ramachandran
8843fb767e Merge pull request #1195 from ajayyy/dependabot/npm_and_yarn/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8
2022-02-15 10:44:01 -05:00
dependabot[bot]
3a17299610 Bump follow-redirects from 1.14.7 to 1.14.8
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-15 12:21:10 +00:00
Albert Portnoy
64d2c0a299 fix: ignore switchingVideos in Safari (see #1142) 2022-02-13 22:09:22 -06:00
Ajay Ramachandran
a2a5d27900 bump version 2022-02-12 13:21:43 -05:00
Ajay Ramachandran
eb9e2d8726 New Crowdin updates (#1186) 2022-02-12 12:17:06 -05:00
Ajay Ramachandran
ddc34bacc7 Merge pull request #1188 from AronHK/keybindFix
Fix keybind sometimes not working
2022-02-12 12:16:41 -05:00
Áron Hegymegi-Kiss
60b0a59ba1 keybind fix 2022-02-12 16:19:28 +01:00
Ajay
c9903b5926 Don't use setinterval on safari 2022-02-09 15:28:02 -05:00
Ajay Ramachandran
db7251cbfb bump version 2022-02-09 14:12:14 -05:00
Ajay Ramachandran
fcf42560bf New Crowdin updates (#1180) 2022-02-09 14:07:37 -05:00
Ajay Ramachandran
036b3967a9 Merge pull request #1182 from ajayyy/precise-skipping
Improve precision of skips on both chromium and firefox
2022-02-09 14:06:30 -05:00
Ajay
e622ee725c remove logging 2022-02-08 19:59:33 -05:00
Ajay
5ace92dc8b Use current video time if performance.now is restricted (fingerprinting) 2022-02-08 19:47:42 -05:00
Ajay
bb490bf7ad perfomance instead of date 2022-02-08 16:04:23 -05:00
Ajay
4cc248eb17 Improve precision of skips on both chromium and firefox
< 5ms in my testing
2022-02-08 15:46:38 -05:00
24 changed files with 779 additions and 86 deletions

View File

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

12
package-lock.json generated
View File

@@ -6301,9 +6301,9 @@
} }
}, },
"node_modules/follow-redirects": { "node_modules/follow-redirects": {
"version": "1.14.7", "version": "1.14.8",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -18854,9 +18854,9 @@
"dev": true "dev": true
}, },
"follow-redirects": { "follow-redirects": {
"version": "1.14.7", "version": "1.14.8",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
"dev": true "dev": true
}, },
"forever-agent": { "forever-agent": {

View File

@@ -52,6 +52,9 @@
"reskip": { "reskip": {
"message": "اعاده التخطي" "message": "اعاده التخطي"
}, },
"unmute": {
"message": "إلغاء الكتم"
},
"paused": { "paused": {
"message": "ايقاف مؤقت" "message": "ايقاف مؤقت"
}, },
@@ -88,9 +91,162 @@
"refreshSegments": { "refreshSegments": {
"message": "تحديث الأجزاء" "message": "تحديث الأجزاء"
}, },
"success": {
"message": "تم بنجاح!"
},
"voted": {
"message": "تم التصويت!"
},
"serverDown": {
"message": "يبدو أن الخادم غير متصل. تواصل مع المطوّر على الفور."
},
"connectionError": {
"message": "حدث خطأ في الاتصال. رمز الخطأ: "
},
"clearTimes": {
"message": "مسح الأقسام"
},
"openPopup": {
"message": "فتح نافذة سبونسر بلوك المنبثقة"
},
"closePopup": {
"message": "إغلاق النافذة المنبثقة"
},
"SubmitTimes": {
"message": "إرسال الأقسام"
},
"submitCheck": {
"message": "هل أنت متيقّن من إرسال هذا؟"
},
"whitelistChannel": {
"message": "إضافة القناة إلى القائمة البيضاء"
},
"removeFromWhitelist": {
"message": "إزالة القناة من القائمة البيضاء"
},
"voteOnTime": {
"message": "صوّت لقسم"
},
"Submissions": {
"message": "المشاركات"
},
"savedPeopleFrom": {
"message": "لقد وفّرت على الناس "
},
"viewLeaderboard": {
"message": "لوحة الصدارة"
},
"recordTimesDescription": {
"message": "إرسال"
},
"submissionEditHint": {
"message": "سيظهر تحرير القسم بعد النقر على إرسال",
"description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
"message": "تلميح: يمكنك إعداد اختصارات مفاتيح للتقديم في الخيارات"
},
"clearTimesButton": {
"message": "مسح الأوقات"
},
"submitTimesButton": {
"message": "إرسال الأوقات"
},
"publicStats": {
"message": "يستخدم هذا في صفحة الإحصائيات العامة لإظهار مقدار مساهمتك. قم برؤيتها"
},
"Username": { "Username": {
"message": "اسم المستخدم" "message": "اسم المستخدم"
}, },
"setUsername": {
"message": "تعيين اسم مستخدم"
},
"copyPublicID": {
"message": "نسخ معرف المستخدم العام"
},
"discordAdvert": {
"message": "انضم إلى سيرفر \"ديسكورد\" الرسمي لتقديم اقتراحات وتعليقات!"
},
"hideThis": {
"message": "إخفاء هذا"
},
"Options": {
"message": "خيارات"
},
"showButtons": {
"message": "إظهار الأزرار على مشغل اليوتيوب"
},
"hideButtons": {
"message": "إخفاء الأزرار على مشغل اليوتيوب"
},
"hideButtonsDescription": {
"message": "هذا يخفي الأزرار التي تظهر على مشغل اليوتيوب لإرسال أقسام للتخطي."
},
"showSkipButton": {
"message": "إبقاء زر \"تخطي للعنوان الرئيس\" على المشغّل"
},
"showInfoButton": {
"message": "إظهار زر \"معلومات\" على مشغّل اليوتيوب"
},
"hideInfoButton": {
"message": "إخفاء زر \"معلومات\" على مشغّل اليوتيوب"
},
"autoHideInfoButton": {
"message": "إخفاء تلقائي لزر \"معلومات\""
},
"hideDeleteButton": {
"message": "إخفاء زر \"حذف\" على مشغّل اليوتيوب"
},
"showDeleteButton": {
"message": "إظهار زر \"حذف\" على مشغّل اليوتيوب"
},
"skip": {
"message": "تخطي"
},
"mute": {
"message": "كتم"
},
"full": {
"message": "فيديو كامل",
"description": "Used for the name of the option to label an entire video as sponsor or self promotion."
},
"skip_category": {
"message": "تخطي {0}؟"
},
"mute_category": {
"message": "كتم {0}؟"
},
"skip_to_category": {
"message": "تخطي إلى {0}؟",
"description": "Used for skipping to things (Skip to Highlight)"
},
"skipped": {
"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)"
},
"disableAutoSkip": {
"message": "تعطيل التخطي التلقائي"
},
"enableAutoSkip": {
"message": "تفعيل التخطي التلقائي"
},
"minLower": {
"message": "دقيقة"
},
"minsLower": {
"message": "دقائق"
},
"add": {
"message": "أضِف"
},
"permissionRequestSuccess": { "permissionRequestSuccess": {
"message": "نجح طلب الإذن!" "message": "نجح طلب الإذن!"
}, },

View File

@@ -42,5 +42,185 @@
}, },
"Hide": { "Hide": {
"message": "No mostris mai" "message": "No mostris mai"
},
"hitGoBack": {
"message": "Premeu \"no saltar\" per tornar on estàveu."
},
"unskip": {
"message": "No saltar"
},
"reskip": {
"message": "Saltar de nou"
},
"unmute": {
"message": "Deixa de silenciar"
},
"paused": {
"message": "Pausat"
},
"manualPaused": {
"message": "S'ha aturat el temporitzador"
},
"confirmMSG": {
"message": "Per editar o esborrar valors individuals, premeu el botó d'informació o cliqueu la pestanya de l'extensió al cantó superior dret."
},
"clearThis": {
"message": "Segur que voleu esborrar això?\n\n"
},
"Unknown": {
"message": "S'ha produït un error en enviar els temps d'anunciant, torneu-ho a provar més endavant."
},
"sponsorFound": {
"message": "Aquest vídeo té segments a la base de dades!"
},
"sponsor404": {
"message": "No s'han trobat segments"
},
"sponsorStart": {
"message": "El segment comença ara"
},
"sponsorEnd": {
"message": "El segment acaba ara"
},
"sponsorCancel": {
"message": "Cancel·la la creació del segment"
},
"noVideoID": {
"message": "No s'ha trobat cap vídeo de YouTube.\nSi penseu que és incorrecte, refresqueu la pestanya."
},
"refreshSegments": {
"message": "Refresca els segments"
},
"success": {
"message": "Èxit!"
},
"voted": {
"message": "Votat!"
},
"serverDown": {
"message": "Sembla que ha caigut el servidor. Contacteu el desenvolupador immediatament."
},
"connectionError": {
"message": "S'ha produït un error de connexió. Codi d'error: "
},
"clearTimes": {
"message": "Esborra els segments"
},
"openPopup": {
"message": "Obrir finestra de SponsorBlock"
},
"closePopup": {
"message": "Tanca la finestra"
},
"SubmitTimes": {
"message": "Envia els segments"
},
"submitCheck": {
"message": "Segur que voleu enviar això?"
},
"whitelistChannel": {
"message": "Canal de llista blanca"
},
"removeFromWhitelist": {
"message": "Treure canal de la llista blanca"
},
"voteOnTime": {
"message": "Vota un segment"
},
"Submissions": {
"message": "Propostes"
},
"savedPeopleFrom": {
"message": "Heu estalviat la gent "
},
"viewLeaderboard": {
"message": "Classificació"
},
"recordTimesDescription": {
"message": "Envia"
},
"submissionEditHint": {
"message": "L'edició de seccions apareixerà després de prémer \"envia\"",
"description": "Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint": {
"message": "Consell: Podeu crear tecles de drecera per enviar en \"opcions\""
},
"clearTimesButton": {
"message": "Esborra temps"
},
"submitTimesButton": {
"message": "Envia temps"
},
"publicStats": {
"message": "Això s'utilitza a la pàgina d'estadístiques pública per fatxendejar de quant heu contribuït. Vegeu"
},
"Username": {
"message": "Nom d'usuari"
},
"setUsername": {
"message": "Definiu el nom d'usuari"
},
"copyPublicID": {
"message": "Copia l'identificador públic d'usuari"
},
"discordAdvert": {
"message": "Uniu-vos al servidor de Discord oficial per opinar i fer suggeriments!"
},
"hideThis": {
"message": "Amaga això"
},
"Options": {
"message": "Opcions"
},
"showButtons": {
"message": "Mostra els botons al reproductor de YouTube"
},
"hideButtons": {
"message": "Amaga els botons al reproductor de YouTube"
},
"hideButtonsDescription": {
"message": "Això amaga els botons que apareixen al reproductor de YouTube per enviar segments."
},
"showSkipButton": {
"message": "Mantenir \"Botar al destacat\" al reproductor"
},
"showInfoButton": {
"message": "Mostra el botó d'informació al reproductor de YouTube"
},
"hideInfoButton": {
"message": "Amaga el botó d'informació al reproductor de YouTube"
},
"autoHideInfoButton": {
"message": "Amaga automàticament el botó d'informació"
},
"minLower": {
"message": "minut"
},
"minsLower": {
"message": "minuts"
},
"hourLower": {
"message": "hora"
},
"hoursLower": {
"message": "hores"
},
"youHaveSavedTime": {
"message": "Heu estalviat la gent",
"description": "You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)."
},
"youHaveSavedTimeEnd": {
"message": " de les seves vides",
"description": "You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)."
},
"statusReminder": {
"message": "Visiteu status.sponsor.ajay.app per conèixer l'estat del servidor."
},
"changeUserID": {
"message": "Importa/exporta la vostra identificació d'usuari"
},
"whatChangeUserID": {
"message": "Això hauria de romandre privat: és semblant a una contrasenya i no s'hauria de compartir amb cap persona. Si algú hi té accés, poden suplantar-vos. Si esteu cercant el vostre identificador d'usuari públic, premeu la icona del portanotes a la finestra."
} }
} }

View File

@@ -233,9 +233,15 @@
"noticeVisibilityMode1": { "noticeVisibilityMode1": {
"message": "Μικρές ειδοποιήσεις αυτόματης παράλειψης" "message": "Μικρές ειδοποιήσεις αυτόματης παράλειψης"
}, },
"noticeVisibilityMode2": {
"message": "Να είναι όλες μικρές ειδοποιήσεις"
},
"noticeVisibilityMode3": { "noticeVisibilityMode3": {
"message": "Ξεθωριασμένες ειδοποιήσεις αυτόματης παράλειψης" "message": "Ξεθωριασμένες ειδοποιήσεις αυτόματης παράλειψης"
}, },
"noticeVisibilityMode4": {
"message": "Να είναι όλες ξεθωριασμένες ειδοποιήσεις"
},
"longDescription": { "longDescription": {
"message": "Το SponsorBlock σας επιτρέπει να παραλείψετε χορηγίες, εισαγωγές, επίλογους, υπενθυμίσεις εγγραφής, και άλλα ενοχλητικά μέρη των βίντεο YouTube. Το SponsorBlock είναι μια επέκταση που τροφοδοτείται, από τους ίδιους τους χρήστες, επιτρέπει στον κάθε έναν να υποβάλει το πότε ξεκινούν και πότε τελειώνουν τμήματα χορηγιών των βίντεο YouTube. Μόλις κάποιος χρήστης υποβάλει αυτή τη πληροφορία, ο οποιοσδήποτε άλλος που έχει αυτήν την επέκταση μπορεί να παραλείψει όλα αυτά τα ενοχλητικά τμήματα χορηγιών. Μπορείτε επίσης να παραλείψετε τμήματα, που δεν περιέχουν μουσική, σε μουσικά βίντεο.", "message": "Το SponsorBlock σας επιτρέπει να παραλείψετε χορηγίες, εισαγωγές, επίλογους, υπενθυμίσεις εγγραφής, και άλλα ενοχλητικά μέρη των βίντεο YouTube. Το SponsorBlock είναι μια επέκταση που τροφοδοτείται, από τους ίδιους τους χρήστες, επιτρέπει στον κάθε έναν να υποβάλει το πότε ξεκινούν και πότε τελειώνουν τμήματα χορηγιών των βίντεο YouTube. Μόλις κάποιος χρήστης υποβάλει αυτή τη πληροφορία, ο οποιοσδήποτε άλλος που έχει αυτήν την επέκταση μπορεί να παραλείψει όλα αυτά τα ενοχλητικά τμήματα χορηγιών. Μπορείτε επίσης να παραλείψετε τμήματα, που δεν περιέχουν μουσική, σε μουσικά βίντεο.",
"description": "Full description of the extension on the store pages." "description": "Full description of the extension on the store pages."
@@ -356,20 +362,20 @@
"message": "Υποστήριξη 3των ιστοσελίδων τύπου YouTube" "message": "Υποστήριξη 3των ιστοσελίδων τύπου YouTube"
}, },
"supportOtherSitesDescription": { "supportOtherSitesDescription": {
"message": "Υποστήριξη 3των πελατών διακομιστή YouTube. Για να ενεργοποιήσετε την υποστήριξη πρέπει να αποδεχτείτε επιπλέον άδειες. Αυτό δε λειτουργεί σε καρτέλες ανώνυμης περιήγησης του Chrome ή άλλων Chromium εκδοχών.", "message": "Υποστήριξη 3των πελατών διακομιστή YouTube. Για να ενεργοποιήσετε την υποστήριξη πρέπει να αποδεχτείτε επιπλέον άδειες. Αυτό ΔΕ λειτουργεί σε καρτέλες ανώνυμης περιήγησης του Chrome ή άλλων Chromium εκδοχών.",
"description": "This replaces the 'supports Invidious' option because it now works on other YouTube sites such as Cloudtube" "description": "This replaces the 'supports Invidious' option because it now works on other YouTube sites such as Cloudtube"
}, },
"supportedSites": { "supportedSites": {
"message": "Υποστηριζόμενες Ιστοσελίδες: " "message": "Υποστηριζόμενες Ιστοσελίδες: "
}, },
"optionsInfo": { "optionsInfo": {
"message": "Ενεργοποίηση υποστήριξης Ανεπιθύμητων, απενεργοποίηση αυτόματης παράληψης, απόκρυψη κουμπιών και άλλα." "message": "Ενεργοποίηση υποστήριξης «Invidious», απενεργοποίηση αυτόματης παράληψης, απόκρυψη κουμπιών και άλλα."
}, },
"addInvidiousInstance": { "addInvidiousInstance": {
"message": "Προσθήκη 3ου πελάτη συνεδρίας" "message": "Προσθήκη 3ου πελάτη συνεδρίας"
}, },
"addInvidiousInstanceDescription": { "addInvidiousInstanceDescription": {
"message": "Προσθέστε μια προσαρμοσμένη συνεδρία. Αυτό πρέπει να είναι μορφοποιημένο μόνο με την διεύθυνση. Για παράδειγμα: invidious.ajay.app" "message": "Προσθέστε μια προσαρμοσμένη συνεδρία. Αυτό πρέπει να είναι μορφοποιημένο MONO με την διεύθυνση. Για παράδειγμα: invidious.ajay.app"
}, },
"add": { "add": {
"message": "Προσθήκη" "message": "Προσθήκη"
@@ -378,10 +384,10 @@
"message": "Μη έγκυρη διεύθυνση. Θα πρέπει να περιλαμβάνεται ΜΟΝΟ αυτό το μέρος της διεύθυνσης.\nΓια παράδειγμα: invidious.ajay.app" "message": "Μη έγκυρη διεύθυνση. Θα πρέπει να περιλαμβάνεται ΜΟΝΟ αυτό το μέρος της διεύθυνσης.\nΓια παράδειγμα: invidious.ajay.app"
}, },
"resetInvidiousInstance": { "resetInvidiousInstance": {
"message": "Επαναφορά Λίστας Ανεπιθύμητων" "message": "Επαναφορά Λίστας «Invidious»"
}, },
"resetInvidiousInstanceAlert": { "resetInvidiousInstanceAlert": {
"message": "Πρόκειται να επαναφέρετε τη λίστα Ανεπιθύμητων" "message": "Πρόκειται να επαναφέρετε τη λίστα «Invidious»"
}, },
"currentInstances": { "currentInstances": {
"message": "Τρέχουσες Συνεδρίες:" "message": "Τρέχουσες Συνεδρίες:"
@@ -591,7 +597,7 @@
"message": "Όλες οι υποβολές και οι ψήφοι ΔΕΝ ΘΑ ΜΕΤΡΙΣΟΥΝ στον κύριο διακομιστή κατά τη σύνδεση με τον δοκιμαστικό διακομιστή. Σιγουρευτείτε για να την απενεργοποιήσετε όταν θέλετε να κάνετε πραγματικές υποβολές." "message": "Όλες οι υποβολές και οι ψήφοι ΔΕΝ ΘΑ ΜΕΤΡΙΣΟΥΝ στον κύριο διακομιστή κατά τη σύνδεση με τον δοκιμαστικό διακομιστή. Σιγουρευτείτε για να την απενεργοποιήσετε όταν θέλετε να κάνετε πραγματικές υποβολές."
}, },
"bracketNow": { "bracketNow": {
"message": "(τώρα)" "message": "(εδώ)"
}, },
"moreCategories": { "moreCategories": {
"message": "Περισσότερες κατηγορίες" "message": "Περισσότερες κατηγορίες"
@@ -607,7 +613,7 @@
"message": "Πρέπει να επιλέξετε Κατηγορία για όλα τα τμήματα που υποβάλετε!" "message": "Πρέπει να επιλέξετε Κατηγορία για όλα τα τμήματα που υποβάλετε!"
}, },
"bracketEnd": { "bracketEnd": {
"message": "(Τέλος)" "message": "(τέλος)"
}, },
"hiddenDueToDownvote": { "hiddenDueToDownvote": {
"message": "κρυφό: αρνητική ψήφος" "message": "κρυφό: αρνητική ψήφος"
@@ -698,6 +704,9 @@
"helpPageReviewOptions": { "helpPageReviewOptions": {
"message": "Παρακαλώ ελέγξτε τις παρακάτω ρυθμίσεις" "message": "Παρακαλώ ελέγξτε τις παρακάτω ρυθμίσεις"
}, },
"helpPageFeatureDisclaimer": {
"message": "Πολλές δυνατότητες είναι ανενεργές από προεπιλογή. Εάν θέλετε να παραλείπετε εισαγωγές, επίλογους, χρήση «Invidious», κτλ., ενεργοποιήστε τα παρακάτω. Μπορείτε επίσης να κρύψετε/εμφανίσετε στοιχεία της διεπαφής."
},
"helpPageHowSkippingWorks": { "helpPageHowSkippingWorks": {
"message": "Πως λειτουργεί η παράλειψη" "message": "Πως λειτουργεί η παράλειψη"
}, },

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Activar el seguimiento del número de saltos en las pestañas privadas/de incógnito" "message": "Activar el seguimiento del número de saltos en las pestañas privadas/de incógnito"
}, },
"enableTrackDownvotes": {
"message": "Almacenar los votos negativos de los segmentos"
},
"whatTrackDownvotes": {
"message": "Los segmentos que votes negativamente permanecerán ocultos incluso después de actualizar la página"
},
"trackDownvotesWarning": {
"message": "Advertencia: Desactivar esto eliminará todos los votos negativos previamente almacenados"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Consulta Por Prefijo Hash" "message": "Consulta Por Prefijo Hash"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "category_preview_description": {
"message": "Recapitulación rápida de los episodios anteriores, o una vista previa de lo que va a ocurrir más adelante en el vídeo actual. Está pensado para clips editados juntos, no para resúmenes hablados." "message": "Recapitulación rápida de los episodios anteriores, o una vista previa de lo que va a ocurrir más adelante en el vídeo actual. Está pensado para clips editados juntos, no para resúmenes hablados."
}, },
"category_filler": {
"message": "Tangentes de Relleno/Chistes"
},
"category_filler_description": { "category_filler_description": {
"message": "Escenas tangenciales añadidas solo para relleno o humor que no son necesarias para entender el contenido principal del video. Esto no debe incluir segmentos que proporcionen contexto o detalles de fondo." "message": "Escenas tangenciales añadidas solo para relleno o humor que no son necesarias para entender el contenido principal del video. Esto no debe incluir segmentos que proporcionen contexto o detalles de fondo."
}, },
@@ -694,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "oculto: demasiado corto" "message": "oculto: demasiado corto"
}, },
"manuallyHidden": {
"message": "manualmente oculto"
},
"channelDataNotFound": { "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.", "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": "El ID del canal no está cargado todavía. Si está usando un vídeo incrustado, intente usar la página de inicio de YouTube en su lugar. Esto también podría ser causado por cambios en el diseño de YouTube, si lo cree, haga un comentario aquí:" "message": "El ID del canal no está cargado todavía. Si está usando un vídeo incrustado, intente usar la página de inicio de YouTube en su lugar. Esto también podría ser causado por cambios en el diseño de YouTube, si lo cree, haga un comentario aquí:"
@@ -780,6 +795,9 @@
"Donate": { "Donate": {
"message": "Donar" "message": "Donar"
}, },
"considerDonating": {
"message": "Ayuda a financiar el desarrollo"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Ocular Enlace de Donación" "message": "Ocular Enlace de Donación"
}, },

View File

@@ -44,7 +44,7 @@
"message": "Älä näytä koskaan" "message": "Älä näytä koskaan"
}, },
"hitGoBack": { "hitGoBack": {
"message": "Paina 'älä ohita' palatakasesi edeltävään kohtaan." "message": "Paina 'älä ohita' palatakasesi kohtaan, jossa olit."
}, },
"unskip": { "unskip": {
"message": "Älä ohita" "message": "Älä ohita"

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Activer le suivi du nombre de sauts dans les onglets privés/incognito" "message": "Activer le suivi du nombre de sauts dans les onglets privés/incognito"
}, },
"enableTrackDownvotes": {
"message": "Enregistrer les segments votés contre"
},
"whatTrackDownvotes": {
"message": "Tous les segments que vous votez contre vous resteront cachés même après rafraîchissement"
},
"trackDownvotesWarning": {
"message": "Attention : Désactiver ceci supprimera tous les votes contre précédemment enregistrés"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Requête par préfixe du hash" "message": "Requête par préfixe du hash"
}, },
@@ -275,7 +284,7 @@
"description": "Keybind label" "description": "Keybind label"
}, },
"keybindDescription": { "keybindDescription": {
"message": "Sélectionnez une clé en la tapant et choisissez les touches de modification que vous souhaitez utiliser." "message": "Sélectionnez une touche en la tapant et choisissez n'importe quelles touches de modification que vous souhaitez utiliser."
}, },
"0": { "0": {
"message": "Délai de connexion dépassé. Vérifiez votre connexion internet. Si votre connexion internet fonctionne, le serveur est probablement surchargé ou hors service." "message": "Délai de connexion dépassé. Vérifiez votre connexion internet. Si votre connexion internet fonctionne, le serveur est probablement surchargé ou hors service."
@@ -582,6 +591,9 @@
"category_preview_description": { "category_preview_description": {
"message": "Résumé rapide des épisodes précédents, ou aperçu de ce qui se passera plus tard dans la vidéo en cours. Pour les plans collectifs édités, pas pour les résumés parlés." "message": "Résumé rapide des épisodes précédents, ou aperçu de ce qui se passera plus tard dans la vidéo en cours. Pour les plans collectifs édités, pas pour les résumés parlés."
}, },
"category_filler": {
"message": "Digressions/Blagues"
},
"category_filler_description": { "category_filler_description": {
"message": "Des digressions ajoutées uniquement pour le remplissage ou l'humour qui ne sont pas requis pour comprendre le contenu principal de la vidéo. Cela ne devrait pas inclure des segments fournissant du contexte ou des détails de fond." "message": "Des digressions ajoutées uniquement pour le remplissage ou l'humour qui ne sont pas requis pour comprendre le contenu principal de la vidéo. Cela ne devrait pas inclure des segments fournissant du contexte ou des détails de fond."
}, },
@@ -640,7 +652,7 @@
"message": "Autoriser les segments qui bloquent l'audio au lieu de le passer" "message": "Autoriser les segments qui bloquent l'audio au lieu de le passer"
}, },
"fullVideoSegments": { "fullVideoSegments": {
"message": "Afficher une icône lorsqu'une vidéo est promotionnelle", "message": "Afficher une icône lorsqu'une vidéo est entièrement promotionnelle",
"description": "Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo" "description": "Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo"
}, },
"previewColor": { "previewColor": {
@@ -694,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "masqué : trop court" "message": "masqué : trop court"
}, },
"manuallyHidden": {
"message": "masquer manuellement"
},
"channelDataNotFound": { "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.", "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": "Le Channel ID n'est pas encore chargé. Si vous utilisez une vidéo intégrée, essayez d'utiliser la page d'accueil de YouTube. Cela pourrait également être causé par des changements dans l'interface de YouTube. Si vous pensez que c'est le cas, écrivez un commentaire ici :" "message": "Le Channel ID n'est pas encore chargé. Si vous utilisez une vidéo intégrée, essayez d'utiliser la page d'accueil de YouTube. Cela pourrait également être causé par des changements dans l'interface de YouTube. Si vous pensez que c'est le cas, écrivez un commentaire ici :"
@@ -780,6 +795,9 @@
"Donate": { "Donate": {
"message": "Faire un don" "message": "Faire un don"
}, },
"considerDonating": {
"message": "Aider à financer le développement"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Cacher le lien de don" "message": "Cacher le lien de don"
}, },
@@ -865,7 +883,7 @@
"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." "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."
}, },
"categoryPillNewFeature": { "categoryPillNewFeature": {
"message": "Nouveau! Voir quand une vidéo est entièrement sponsorisée ou de l'auto-promotion" "message": "Nouveau! Voir quand une vidéo est entièrement sponsorisée ou de l'autopromotion"
}, },
"dayAbbreviation": { "dayAbbreviation": {
"message": "j", "message": "j",

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Átugrások számlálásának engedélyezése privát/inkognitó füleken" "message": "Átugrások számlálásának engedélyezése privát/inkognitó füleken"
}, },
"enableTrackDownvotes": {
"message": "Leszavazások tárolása"
},
"whatTrackDownvotes": {
"message": "Minden szegmens amit leszavazol rejtve marad újratöltés után is"
},
"trackDownvotesWarning": {
"message": "Figyelem: A beállítás kikapcsolása letöröl minden korábban eltárolt szavazatot"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Lekérdezés Hash előtaggal" "message": "Lekérdezés Hash előtaggal"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "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." "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/viccek"
},
"category_filler_description": { "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." "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."
}, },

View File

@@ -592,7 +592,7 @@
"message": "Rekapan singkat dari episode sebelumnya, atau pratinjau tentang apa yang akan terjadi nanti di video. Dimaksudkan untuk klip bersama yang di edit, bukan ringkasan yang diucapkan." "message": "Rekapan singkat dari episode sebelumnya, atau pratinjau tentang apa yang akan terjadi nanti di video. Dimaksudkan untuk klip bersama yang di edit, bukan ringkasan yang diucapkan."
}, },
"category_filler": { "category_filler": {
"message": "Pengisi Tangent/Jokes" "message": "Pengisi Tak berkaitan/Lawakan"
}, },
"category_filler_description": { "category_filler_description": {
"message": "Adegan tangensial ditambahkan hanya untuk pengisi atau humor yang tidak diperlukan untuk memahami isi utama video. Ini tidak boleh mencakup segmen yang memberikan detail konteks atau latar belakang." "message": "Adegan tangensial ditambahkan hanya untuk pengisi atau humor yang tidak diperlukan untuk memahami isi utama video. Ini tidak boleh mencakup segmen yang memberikan detail konteks atau latar belakang."

View File

@@ -591,6 +591,9 @@
"category_preview_description": { "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." "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": "Riempitivi irrilevanti/Battute"
},
"category_filler_description": { "category_filler_description": {
"message": "Le scene riempitive sono 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." "message": "Le scene riempitive sono 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."
}, },

View File

@@ -11,7 +11,7 @@
"message": "サーバーがこのリクエストは無効であると返答しました" "message": "サーバーがこのリクエストは無効であると返答しました"
}, },
"429": { "429": {
"message": "一つの動画に対してあまりに多くのセグメントを提しています。本当にこれだけ必要ですか?" "message": "一つの動画に対してあまりに多くのセグメントを提しています。本当にこれだけ必要ですか?"
}, },
"409": { "409": {
"message": "これは既に提出されています。" "message": "これは既に提出されています。"
@@ -23,7 +23,7 @@
"message": "セグメント" "message": "セグメント"
}, },
"Segments": { "Segments": {
"message": "セグメント" "message": "セグメント"
}, },
"upvoteButtonInfo": { "upvoteButtonInfo": {
"message": "この提案を支持" "message": "この提案を支持"
@@ -41,7 +41,7 @@
"message": "読み込み中..." "message": "読み込み中..."
}, },
"Hide": { "Hide": {
"message": "非表示" "message": "再度表示しない"
}, },
"hitGoBack": { "hitGoBack": {
"message": "スキップ解除を押すと元の場所へ戻ります" "message": "スキップ解除を押すと元の場所へ戻ります"
@@ -119,7 +119,7 @@
"message": "本当に提出してよろしいですか?" "message": "本当に提出してよろしいですか?"
}, },
"whitelistChannel": { "whitelistChannel": {
"message": "ホワイトリストのチャンネル" "message": "チャンネルをホワイトリストに追加"
}, },
"removeFromWhitelist": { "removeFromWhitelist": {
"message": "ホワイトリストからチャンネルを削除" "message": "ホワイトリストからチャンネルを削除"
@@ -183,13 +183,13 @@
"message": "YouTube再生画面のセグメント提出ボタンを非表示にします。" "message": "YouTube再生画面のセグメント提出ボタンを非表示にします。"
}, },
"showSkipButton": { "showSkipButton": {
"message": "プレイヤーの「ハイライトまでスキップ」ボタン表示を維持する" "message": "「ハイライトまでスキップ」ボタンをプレイヤーに常に表示する"
}, },
"showInfoButton": { "showInfoButton": {
"message": "YouTubeプレヤー情報ボタンを表示する" "message": "YouTubeプレヤー情報ボタンを表示する"
}, },
"hideInfoButton": { "hideInfoButton": {
"message": "YouTubeプレヤー情報ボタンを隠す" "message": "YouTubeプレヤー情報ボタンを表示しない"
}, },
"autoHideInfoButton": { "autoHideInfoButton": {
"message": "情報ボタンを自動的に隠す" "message": "情報ボタンを自動的に隠す"
@@ -201,13 +201,22 @@
"message": "YouTubeプレーヤーに削除ボタンを表示" "message": "YouTubeプレーヤーに削除ボタンを表示"
}, },
"enableViewTracking": { "enableViewTracking": {
"message": "スキップ回数の統計を有効にする" "message": "スキップの集計を有効にする"
}, },
"whatViewTracking": { "whatViewTracking": {
"message": "この機能は、あなたがスキップしたセグメントを追跡して、そのセグメントがどれだけ役に立ったかを他のユーザーに知らせることで、スパムがデータベースに紛れないようにするための評価基準として使用されます。あなたがセグメントをスキップするたびに、拡張機能はサーバーにメッセージを送信します。使用回数の統計が正確になるよう、できる限り多くの人がこの設定を変更しないことを望みます。:)" "message": "この機能は、あなたがスキップしたセグメントを追跡して、そのセグメントがどれだけ役に立ったかを他のユーザーに知らせることで、スパムがデータベースに紛れないようにするための評価基準として使用されます。あなたがセグメントをスキップするたびに、拡張機能はサーバーにメッセージを送信します。使用回数の統計が正確になるよう、できる限り多くの人がこの設定を変更しないことを望みます。:)"
}, },
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "プライベート/シークレット タブでスキップカウントトラッキングを有効にする" "message": "プライベート/シークレット タブでスキップ回数の集計を有効にする"
},
"enableTrackDownvotes": {
"message": "セグメントの低評価を記録"
},
"whatTrackDownvotes": {
"message": "あなたが低評価したセグメントが再読み込み後も非表示のままになります"
},
"trackDownvotesWarning": {
"message": "警告: 無効化するとこれまでの低評価記録が全て削除されます"
}, },
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "ハッシュプレフィックスを使って要求" "message": "ハッシュプレフィックスを使って要求"
@@ -228,19 +237,19 @@
"message": "セグメントがスキップされた後に通知を表示する" "message": "セグメントがスキップされた後に通知を表示する"
}, },
"noticeVisibilityMode0": { "noticeVisibilityMode0": {
"message": "標準サイズのスキップ通知" "message": "通常サイズのスキップ通知"
}, },
"noticeVisibilityMode1": { "noticeVisibilityMode1": {
"message": "自動スキップ通知を小型化" "message": "自動スキップ時に小サイズの通知"
}, },
"noticeVisibilityMode2": { "noticeVisibilityMode2": {
"message": "すべてのスキップ通知を小型化" "message": "常に小サイズのスキップ通知"
}, },
"noticeVisibilityMode3": { "noticeVisibilityMode3": {
"message": "自動スキップ通知を透過" "message": "自動スキップ時に透過タイプの通知"
}, },
"noticeVisibilityMode4": { "noticeVisibilityMode4": {
"message": "すべてのスキップ通知を透過" "message": "常に透過タイプのスキップ通知"
}, },
"longDescription": { "longDescription": {
"message": "SponsorBlockはスポンサー、イントロ、アウトロ、チャンネル登録のお願いなど、YouTube動画の煩わしい部分をスキップします。SponsorBlockはYouTube動画のスポンサー付きセグメントなどの開始時間と終了時間を誰でも投稿できる、クラウドソースのブラウザ拡張機能です。一人がセグメントの情報を送信すると、この拡張機能を使用している他の全員が、スポンサー付きセグメントをスキップできるようになります。また、ミュージックビデオの音楽がない部分をスキップすることもできます。", "message": "SponsorBlockはスポンサー、イントロ、アウトロ、チャンネル登録のお願いなど、YouTube動画の煩わしい部分をスキップします。SponsorBlockはYouTube動画のスポンサー付きセグメントなどの開始時間と終了時間を誰でも投稿できる、クラウドソースのブラウザ拡張機能です。一人がセグメントの情報を送信すると、この拡張機能を使用している他の全員が、スポンサー付きセグメントをスキップできるようになります。また、ミュージックビデオの音楽がない部分をスキップすることもできます。",
@@ -262,6 +271,21 @@
"message": "もしそれでも気に入らない場合は、非表示ボタンをクリックしてください。", "message": "もしそれでも気に入らない場合は、非表示ボタンをクリックしてください。",
"description": "The second line of the message displayed after the notice was upgraded." "description": "The second line of the message displayed after the notice was upgraded."
}, },
"setSkipShortcut": {
"message": "セグメントをスキップ",
"description": "Keybind label"
},
"setStartSponsorShortcut": {
"message": "セグメントを開始/終了",
"description": "Keybind label"
},
"setSubmitKeybind": {
"message": "セグメントを提出",
"description": "Keybind label"
},
"keybindDescription": {
"message": "使用したいキーをキーボードで入力し、修飾キーを以下から選択してください。"
},
"0": { "0": {
"message": "接続がタイムアウトになりました。インターネット接続をご確認ください。接続に問題がない場合、サーバーが混雑またはダウンしている可能性があります。" "message": "接続がタイムアウトになりました。インターネット接続をご確認ください。接続に問題がない場合、サーバーが混雑またはダウンしている可能性があります。"
}, },
@@ -287,26 +311,30 @@
"mute": { "mute": {
"message": "ミュート" "message": "ミュート"
}, },
"full": {
"message": "動画全体",
"description": "Used for the name of the option to label an entire video as sponsor or self promotion."
},
"skip_category": { "skip_category": {
"message": "{0} をスキップしますか?" "message": "{0} をスキップしますか?"
}, },
"mute_category": { "mute_category": {
"message": "{0} をミュートしますか?" "message": "{0} をミュートしますか"
}, },
"skip_to_category": { "skip_to_category": {
"message": "{0}まで飛び越しますか?", "message": "{0}までスキップしますか?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
}, },
"skipped": { "skipped": {
"message": "{0}を飛び越しました", "message": "{0}をスキップしました",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": { "muted": {
"message": "{0} ミュート済み", "message": "{0}ミュートしました",
"description": "Example: Sponsor Muted" "description": "Example: Sponsor Muted"
}, },
"skipped_to_category": { "skipped_to_category": {
"message": "{0}まで飛び越しました", "message": "{0}までスキップしました",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
}, },
"disableAutoSkip": { "disableAutoSkip": {
@@ -328,7 +356,7 @@
"message": "この時間は、シークバーの下にある現在の時間の隣に表示されます。これは、動画の合計時間からすべてのセグメントの時間を差し引いたもので「シークバーに表示」として設定されているセグメントも含まれます。" "message": "この時間は、シークバーの下にある現在の時間の隣に表示されます。これは、動画の合計時間からすべてのセグメントの時間を差し引いたもので「シークバーに表示」として設定されているセグメントも含まれます。"
}, },
"youHaveSkipped": { "youHaveSkipped": {
"message": "スキップしたセグメント数: " "message": "スキップした数: "
}, },
"minLower": { "minLower": {
"message": "分" "message": "分"
@@ -357,7 +385,7 @@
"message": "ユーザーIDのインポート/エクスポート" "message": "ユーザーIDのインポート/エクスポート"
}, },
"whatChangeUserID": { "whatChangeUserID": {
"message": "この情報を誰にも開示しないでください。これはパスワードのよう、誰とも共有すべきではありません。 誰かがこれをっている場合、あなたになりすますことができます。パブリックユーザーIDを探している場合は、ポップアップのクリップボードアイコンをクリックしてください。" "message": "これは厳重に保管してください。これはパスワードのようなもので、誰とも共有すべきではありません。 他の誰かがこれを使って、あなたになりすますことができてしまいます。なおパブリックユーザーIDを探している場合は、ポップアップのクリップボードアイコンをクリックしてください。"
}, },
"setUserID": { "setUserID": {
"message": "ユーザーIDを設定" "message": "ユーザーIDを設定"
@@ -379,7 +407,7 @@
"message": "対応サイト: " "message": "対応サイト: "
}, },
"optionsInfo": { "optionsInfo": {
"message": "Invidious対応を有効にし自動飛越を無効にし,GUIを非表示にします。" "message": "Invidious対応を有効にし自動スキップを無効、GUIを非表示にします。"
}, },
"addInvidiousInstance": { "addInvidiousInstance": {
"message": "サードパーティーのクライアントインスタンスを追加" "message": "サードパーティーのクライアントインスタンスを追加"
@@ -409,7 +437,7 @@
"message": "設定値より短いセグメントはスキップされず、プレーヤーにも表示されません。" "message": "設定値より短いセグメントはスキップされず、プレーヤーにも表示されません。"
}, },
"skipNoticeDuration": { "skipNoticeDuration": {
"message": "飛び越し通知の表示時間(秒):" "message": "スキップ通知の表示時間(秒):"
}, },
"skipNoticeDurationDescription": { "skipNoticeDurationDescription": {
"message": "飛び越し通知が画面上に表示され続ける時間です。手動で飛び越した場合は,より長く表示される可能性があります。" "message": "飛び越し通知が画面上に表示され続ける時間です。手動で飛び越した場合は,より長く表示される可能性があります。"
@@ -417,6 +445,9 @@
"shortCheck": { "shortCheck": {
"message": "提出しようとしている区間の長さが個人設定における最短時間よりも短かいです。これは,既に当区間は提出されており,個人設定によって無視されていることを意味します。本当に提出しますか?" "message": "提出しようとしている区間の長さが個人設定における最短時間よりも短かいです。これは,既に当区間は提出されており,個人設定によって無視されていることを意味します。本当に提出しますか?"
}, },
"liveOrPremiere": {
"message": "ライブ配信中の動画やプレミア公開中の動画ではセグメントの提出はできません。配信が終了するまで待つか、ページを再読み込みしてセグメントがまだ有効かご確認ください。"
},
"showUploadButton": { "showUploadButton": {
"message": "アップロードボタンを表示" "message": "アップロードボタンを表示"
}, },
@@ -444,8 +475,17 @@
"exportOptions": { "exportOptions": {
"message": "全ての設定をインポート/エクスポート" "message": "全ての設定をインポート/エクスポート"
}, },
"exportOptionsCopy": {
"message": "編集/コピー"
},
"exportOptionsDownload": {
"message": "ファイルに保存"
},
"exportOptionsUpload": {
"message": "ファイルから読み込み"
},
"whatExportOptions": { "whatExportOptions": {
"message": "JSON形式の個人設定全体です。利用者IDが含まれているので共有するときは注意してください。" "message": "JSON形式のすべての個人設定です。これにはあなたのユーザーIDが含まれているので共有するときは注意してください。"
}, },
"setOptions": { "setOptions": {
"message": "オプション設定" "message": "オプション設定"
@@ -460,7 +500,7 @@
"message": "セグメントを送信" "message": "セグメントを送信"
}, },
"submit": { "submit": {
"message": "送信" "message": "提出"
}, },
"cancel": { "cancel": {
"message": "キャンセル" "message": "キャンセル"
@@ -492,6 +532,9 @@
"copyDebugInformationComplete": { "copyDebugInformationComplete": {
"message": "診断用情報がクリップボードに複製されました。共有したくない情報があればそこから削除できます。これをファイルに保存したり,不具合報告に貼り付けてください。" "message": "診断用情報がクリップボードに複製されました。共有したくない情報があればそこから削除できます。これをファイルに保存したり,不具合報告に貼り付けてください。"
}, },
"keyAlreadyUsed": {
"message": "このショートカットは他のアクションに割り当てられています。別のショートカットを選択してください。"
},
"to": { "to": {
"message": "", "message": "",
"description": "Used between segments. Example: 1:20 to 1:30" "description": "Used between segments. Example: 1:20 to 1:30"
@@ -506,7 +549,17 @@
"message": "無報酬 / セルフプロモーション" "message": "無報酬 / セルフプロモーション"
}, },
"category_selfpromo_description": { "category_selfpromo_description": {
"message": "無報酬での宣伝あるいは自己販促を除いて「提供者」と同様です。商品寄付・合作情報にかんする節を含みます。" "message": "無報酬での宣伝あるいは自己販促であるという点を除いては「スポンサー」と同様です。商品寄付、コラボ情報に関する内容を含みます。"
},
"category_exclusive_access": {
"message": "限定アクセス"
},
"category_exclusive_access_description": {
"message": "動画全体に対してのみ付与できます。無償または補助金を受けて、製品、サービス、場所を紹介する動画に使用。"
},
"category_exclusive_access_pill": {
"message": "この動画は無償または補助金を受けて利用した製品、サービス、または場所を紹介するものです",
"description": "Short description for this category"
}, },
"category_interaction": { "category_interaction": {
"message": "行動を促すメッセージ(チャンネル登録)" "message": "行動を促すメッセージ(チャンネル登録)"
@@ -538,11 +591,14 @@
"category_preview_description": { "category_preview_description": {
"message": "前回の粗筋,または動画の後半内容の予告。音声による要約ではなく,編集された映像を指します。" "message": "前回の粗筋,または動画の後半内容の予告。音声による要約ではなく,編集された映像を指します。"
}, },
"category_filler": {
"message": "無駄な脱線/冗談"
},
"category_filler_description": { "category_filler_description": {
"message": "脱線したシーンには、動画の主な内容を理解するのに必要ない穴埋めやユーモアのみを追加してください。これには、文脈や背景の詳細を提供るセグメントを含めないでください。" "message": "動画の本編を理解するのに必要ない、繋ぎの話やユーモアによって脱線したシーン。これには、文脈や背景の詳細を提供しているセグメントを含めないでください。"
}, },
"category_filler_short": { "category_filler_short": {
"message": "フィラー" "message": "繋ぎの話"
}, },
"category_music_offtopic": { "category_music_offtopic": {
"message": "音楽: 音楽以外のセクション" "message": "音楽: 音楽以外のセクション"
@@ -557,7 +613,7 @@
"message": "ハイライト" "message": "ハイライト"
}, },
"category_poi_highlight_description": { "category_poi_highlight_description": {
"message": "多くの人が求めている動画の部分。「動画はXからスタート」のようなコメントです。" "message": "多くの人が求めている動画の部分。「本編はXから開始」といったコメントのような機能です。"
}, },
"category_livestream_messages": { "category_livestream_messages": {
"message": "ライブ配信: 寄付/メッセージの読み上げ" "message": "ライブ配信: 寄付/メッセージの読み上げ"
@@ -586,12 +642,19 @@
"showOverlay_POI": { "showOverlay_POI": {
"message": "シークバーに表示" "message": "シークバーに表示"
}, },
"showOverlay_full": {
"message": "ラベルを表示"
},
"autoSkipOnMusicVideos": { "autoSkipOnMusicVideos": {
"message": "非音楽区域がある場合,全区域を自動的に飛び越す" "message": "非音楽区域がある場合,全区域を自動的に飛び越す"
}, },
"muteSegments": { "muteSegments": {
"message": "スキップする代わりに音声をミュートしてセグメントを許可" "message": "スキップする代わりに音声をミュートしてセグメントを許可"
}, },
"fullVideoSegments": {
"message": "動画全体が広告の場合にアイコンを表示",
"description": "Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo"
},
"previewColor": { "previewColor": {
"message": "未確定の色", "message": "未確定の色",
"description": "Referring to submissions that have not been sent to the server yet." "description": "Referring to submissions that have not been sent to the server yet."
@@ -610,10 +673,10 @@
"message": "ベータテストサーバーを有効にする" "message": "ベータテストサーバーを有効にする"
}, },
"whatEnableTestingServer": { "whatEnableTestingServer": {
"message": "提出した区域と区域への投票が主サーバーで**取り扱われなく**なります。試験目的にのみ利用してください。" "message": "提出したセグメントと投票がメインサーバーで**取り扱われなく**なります。試験目的にのみ利用してください。"
}, },
"testingServerWarning": { "testingServerWarning": {
"message": "サーバーに接続している間全ての提出・投票はサーバーで取り扱われなくなります。実際の提出・投票を行う際はこの設定を無効にしてください。" "message": "テストサーバーに接続している間全ての提出・投票はメインサーバーで取り扱われなくなります。実際の提出・投票を行う際はこの設定を無効にしてください。"
}, },
"bracketNow": { "bracketNow": {
"message": "(今)" "message": "(今)"
@@ -643,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "あまりに短かい区間を無視する" "message": "あまりに短かい区間を無視する"
}, },
"manuallyHidden": {
"message": "手動で非表示"
},
"channelDataNotFound": { "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.", "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": "番組IDがまだ読み込まれていません。埋め込み動画でご覧になっている場合は代わりにYouTubeの公式サイトで再生してみてください。この問題はYouTubeの画面構成を変えた際にも発生する可能性があります。その場合はこちらに意見をお書きください:" "message": "番組IDがまだ読み込まれていません。埋め込み動画でご覧になっている場合は代わりにYouTubeの公式サイトで再生してみてください。この問題はYouTubeの画面構成を変えた際にも発生する可能性があります。その場合はこちらに意見をお書きください:"
@@ -678,10 +744,10 @@
"message": "不正確あるいは間違った時刻です" "message": "不正確あるいは間違った時刻です"
}, },
"incorrectCategory": { "incorrectCategory": {
"message": "カテゴリーを変更してください" "message": "カテゴリーを変更"
}, },
"nonMusicCategoryOnMusic": { "nonMusicCategoryOnMusic": {
"message": "この動画は音楽として分類されています。本当にこの動画にスポンサー部分がありますか? 本セグメントが本当に「音楽以外の区域」だった場合、設定画面からこの分類を有効にしてください。その後、「スポンサー部分」の代わりに「音楽以外のセグメント」としてセグメントを提出できます。よく分からない場合は、ガイドラインを参照してください。" "message": "この動画は音楽として分類されています。本当にこの動画にスポンサー部分がありますか このセグメントが実際には「音楽以外のセグメント」である場合、設定画面からこのカテゴリーを有効にしてください。「スポンサー」の代わりに「音楽以外」としてセグメントを提出できます。お困りの場合は、ガイドラインを参照してください。"
}, },
"multipleSegments": { "multipleSegments": {
"message": "複数のセグメント" "message": "複数のセグメント"
@@ -706,6 +772,12 @@
"message": "了解", "message": "了解",
"description": "Used as the button to dismiss a tooltip" "description": "Used as the button to dismiss a tooltip"
}, },
"fullVideoTooltipWarning": {
"message": "このセグメントは大きすぎます。動画全体が一つのトピックに当てはまる場合は「スキップ」を「動画全体」に変更してください。詳細はガイドラインを参照してください。"
},
"categoryPillTitleText": {
"message": "この動画は全体がこのカテゴリーとして指定されており、密に結合されているため分割することができません"
},
"experiementOptOut": { "experiementOptOut": {
"message": "実験的機能をすべて無効にする", "message": "実験的機能をすべて無効にする",
"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." "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."
@@ -714,7 +786,7 @@
"message": "二度と表示しない" "message": "二度と表示しない"
}, },
"warningChatInfo": { "warningChatInfo": {
"message": "警告のためにあなたは一時的にセグメントを提出することができなくなりました。これはあなたが悪意のない一般的なミスを犯していること私たちが気づいた事を意味します、ルールを理解していることを確認していただければこの警告解除します。discord.gg/SponsorBlock または matrix.to/#/#sponsor:ajay.app を使ってこのチャットに参加することもできます。" "message": "警告によりあなたは一時的にセグメントを提出することができません。これはあなたが悪意からではなく、単に誤った行為をしていること私たちが認識したためです。ルールを理解していることを確認していただければこの警告解除します。discord.gg/SponsorBlock または matrix.to/#/#sponsor:ajay.app よりチャットに参加することもできます。"
}, },
"voteRejectedWarning": { "voteRejectedWarning": {
"message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。", "message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。",
@@ -723,9 +795,15 @@
"Donate": { "Donate": {
"message": "寄付" "message": "寄付"
}, },
"considerDonating": {
"message": "開発を支援する"
},
"hideDonationLink": { "hideDonationLink": {
"message": "寄付のお願いを表示しない" "message": "寄付のお願いを表示しない"
}, },
"darkModeOptionsPage": {
"message": "オプション画面でダークモードを使用"
},
"helpPageThanksForInstalling": { "helpPageThanksForInstalling": {
"message": "SponsorBlockを導入いただきありがとうございます。" "message": "SponsorBlockを導入いただきありがとうございます。"
}, },
@@ -733,10 +811,10 @@
"message": "以下の設定を確認してください" "message": "以下の設定を確認してください"
}, },
"helpPageFeatureDisclaimer": { "helpPageFeatureDisclaimer": {
"message": "多くの機能は既定では無効となっています。動画の導入部や最後の余計な部分を飛び越したい場合は「非本質的な内容」を飛び越すようにしてください。またUI要素の表示・非表示を切り替えることもできます。" "message": "多くの機能がデフォルトでは無効となっています。イントロ・アウトロをスキップしたり、Invidiousで使用したりするにはこの下で有効にしてください。また画面の表示設定を切り替えることもできます。"
}, },
"helpPageHowSkippingWorks": { "helpPageHowSkippingWorks": {
"message": "飛び越しの仕組み" "message": "スキップの仕組み"
}, },
"helpPageHowSkippingWorks1": { "helpPageHowSkippingWorks1": {
"message": "データベースにある動画区域が自動的に飛び越されます。この拡張機能のアイコンをクリックすると,区域の位置や範囲を確かめることができます。" "message": "データベースにある動画区域が自動的に飛び越されます。この拡張機能のアイコンをクリックすると,区域の位置や範囲を確かめることができます。"
@@ -745,7 +823,7 @@
"message": "区域を飛び越すたびに通知されます。区域の範囲がおかしいと思ったら,その区域を低評価してください。ポップアップ画面でも同様に投票ができます。" "message": "区域を飛び越すたびに通知されます。区域の範囲がおかしいと思ったら,その区域を低評価してください。ポップアップ画面でも同様に投票ができます。"
}, },
"Submitting": { "Submitting": {
"message": "提出" "message": "提出する"
}, },
"helpPageSubmitting1": { "helpPageSubmitting1": {
"message": "提出するにはポップアップの「セグメント開始を記録」ボタン、またはビデオプレーヤー内にあるボタンを押してください。" "message": "提出するにはポップアップの「セグメント開始を記録」ボタン、またはビデオプレーヤー内にあるボタンを押してください。"
@@ -754,22 +832,22 @@
"message": "再生ボタンをクリックするとセグメントの開始、停止アイコンをクリックすると終了となります。 複数のスポンサーを用意してから送信ボタンを押すことができます。アップロードボタンをクリックすると提出されます。ゴミ箱をクリックすると削除されます。" "message": "再生ボタンをクリックするとセグメントの開始、停止アイコンをクリックすると終了となります。 複数のスポンサーを用意してから送信ボタンを押すことができます。アップロードボタンをクリックすると提出されます。ゴミ箱をクリックすると削除されます。"
}, },
"Editing": { "Editing": {
"message": "編集" "message": "編集する"
}, },
"helpPageEditing1": { "helpPageEditing1": {
"message": "もし失敗しても、上矢印ボタンをクリックすれば、セグメントを編集・削除することができます。" "message": "もし間違えてしまっても、上矢印ボタンをクリックセグメントを編集・削除することができます。"
}, },
"helpPageTooSlow": { "helpPageTooSlow": {
"message": "遅すぎます" "message": "操作が面倒"
}, },
"helpPageTooSlow1": { "helpPageTooSlow1": {
"message": "利用可能なホットキーがあります。セミコロンキーを押してスポンサーセグメント開始/終了を示し、アポストロフィキーを押して送信します。これらはオプションで変更できます。QWERTYを使わない場合は、キーバインドを変更したほうがいいでしょう。" "message": "ショートカットキーが利用可能です。セミコロンキースポンサーセグメント開始/終了し、アポストロフィキーで送信できます。またこれらはオプションで変更できます。QWERTYキーを使わない場合は、キー割り当てを変更したほうがいいでしょう。"
}, },
"helpPageCopyOfDatabase": { "helpPageCopyOfDatabase": {
"message": "データベースのコピーを取得できますか? あなたがいなくなった場合はどうなりますか?" "message": "データベースのコピーを利用できますか 作者が失踪した場合はどうなりますか"
}, },
"helpPageCopyOfDatabase1": { "helpPageCopyOfDatabase1": {
"message": "データベースは公開されており、次の場所で利用できます:" "message": "データベースは公開されており、こちらから利用できます:"
}, },
"helpPageCopyOfDatabase2": { "helpPageCopyOfDatabase2": {
"message": "ソースコードは自由に利用できます。運営になにがあろうとも,あなたの貢献(提出された区域)が失われることはありません。" "message": "ソースコードは自由に利用できます。運営になにがあろうとも,あなたの貢献(提出された区域)が失われることはありません。"
@@ -787,21 +865,69 @@
"message": "さらに詳しく" "message": "さらに詳しく"
}, },
"CopyDownvoteButtonInfo": { "CopyDownvoteButtonInfo": {
"message": "反対票を投じ、再提出するためローカルコピーを作成します。" "message": "低評価を押し、再提出するためローカルコピーを作成"
}, },
"OpenCategoryWikiPage": { "OpenCategoryWikiPage": {
"message": "このカテゴリーのWikiページを開きます。" "message": "このカテゴリーのWikiページを開きます。"
}, },
"CopyAndDownvote": { "CopyAndDownvote": {
"message": "コピーして反対票を投じる" "message": "コピーして低評価"
}, },
"ContinueVoting": { "ContinueVoting": {
"message": "投票を続ける" "message": "投票を続ける"
}, },
"ChangeCategoryTooltip": { "ChangeCategoryTooltip": {
"message": "この変更は即座にあなたのセグメントに適用されます" "message": "この変更はすぐにあなたのセグメントに適用されます"
}, },
"SponsorTimeEditScrollNewFeature": { "SponsorTimeEditScrollNewFeature": {
"message": "編集ボックスにカーソルを合わせながらマウスホイールを使用すると、時間をすばやく調整できます。 CtrlキーまたはShiftキーの組み合わせを使用して変更を微調整できます。" "message": "編集ボックスにカーソルを合わせながらマウスホイールを使用すると、時間をすばやく調整できます。 CtrlキーまたはShiftキーの組み合わせを使用して変更を微調整できます。"
},
"categoryPillNewFeature": {
"message": "新機能!動画全体がスポンサー付きもしくはセルフプロモーションかがわかります"
},
"dayAbbreviation": {
"message": "日",
"description": "100d"
},
"hourAbbreviation": {
"message": "時間",
"description": "100h"
},
"optionsTabBehavior": {
"message": "動作",
"description": "Appears in Options as a tab header for options related to categories and skipping behavior. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabInterface": {
"message": "表示設定",
"description": "Appears in Options as a tab header for options related to GUI and sounds. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabKeyBinds": {
"message": "キーボードショートカット",
"description": "Appears in Options as a tab header for keybinds. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabBackup": {
"message": "バックアップ/復元",
"description": "Appears in Options as a tab header for options related to saving/restoring your settings. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabAdvanced": {
"message": "その他",
"description": "Appears in Options as a tab header for advanced/niche options. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"noticeVisibilityLabel": {
"message": "スキップ通知の形式",
"description": "Option label"
},
"unbind": {
"message": "解除",
"description": "Unbind keyboard shortcut"
},
"notSet": {
"message": "未設定"
},
"change": {
"message": "変更"
},
"youtubeKeybindWarning": {
"message": "これはYouTubeにデフォルトで使用されているショートカットです。本当にこれを使用しますか"
} }
} }

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Bijhouden van het aantal keren overslaan inschakelen in privé-/incognito-tabbladen" "message": "Bijhouden van het aantal keren overslaan inschakelen in privé-/incognito-tabbladen"
}, },
"enableTrackDownvotes": {
"message": "Segment-downvotes opslaan"
},
"whatTrackDownvotes": {
"message": "Segmenten waarop u een downvote doet, blijven verborgen, zelfs na vernieuwen"
},
"trackDownvotesWarning": {
"message": "Waarschuwing: als u dit uitschakelt, worden alle eerder opgeslagen downvotes verwijderd"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Opvragen via hash-voorvoegsel" "message": "Opvragen via hash-voorvoegsel"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "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." "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": "Opvulling zijspoor/humor"
},
"category_filler_description": { "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." "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."
}, },
@@ -694,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "verborgen: te kort" "message": "verborgen: te kort"
}, },
"manuallyHidden": {
"message": "handmatig verborgen"
},
"channelDataNotFound": { "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.", "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": "Kanaal-ID is nog niet geladen. Als u een ingesloten video gebruikt, probeer dan in plaats daarvan de YouTube-homepagina. Dit kan ook worden veroorzaakt door wijzigingen in de YouTube-lay-out. Als u denkt dat dit het geval is, maak dan hier een opmerking:" "message": "Kanaal-ID is nog niet geladen. Als u een ingesloten video gebruikt, probeer dan in plaats daarvan de YouTube-homepagina. Dit kan ook worden veroorzaakt door wijzigingen in de YouTube-lay-out. Als u denkt dat dit het geval is, maak dan hier een opmerking:"
@@ -780,6 +795,9 @@
"Donate": { "Donate": {
"message": "Doneren" "message": "Doneren"
}, },
"considerDonating": {
"message": "Ontwikkeling helpen"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Donatiekoppeling verbergen" "message": "Donatiekoppeling verbergen"
}, },

View File

@@ -162,7 +162,7 @@
"message": "Ustaw nazwę użytkownika" "message": "Ustaw nazwę użytkownika"
}, },
"copyPublicID": { "copyPublicID": {
"message": "Kopiuj Publiczne ID Użytkownika" "message": "Kopiuj publiczny identyfikator użytkownika"
}, },
"discordAdvert": { "discordAdvert": {
"message": "Dołącz do oficjalnego serwera na discordzie i podziel się wrażeniami i sugestiami!" "message": "Dołącz do oficjalnego serwera na discordzie i podziel się wrażeniami i sugestiami!"
@@ -183,7 +183,7 @@
"message": "Ta opcja ukrywa przyciski do zamieszczania segmentów pojawiające się na odtwarzaczu YouTube." "message": "Ta opcja ukrywa przyciski do zamieszczania segmentów pojawiające się na odtwarzaczu YouTube."
}, },
"showSkipButton": { "showSkipButton": {
"message": "Kontynuuj wyświetlanie przycisku pomijania" "message": "Wyświetlaj przycisk \"Przejść do wyróżnione?\" na odtwarzaczu"
}, },
"showInfoButton": { "showInfoButton": {
"message": "Pokaż przycisk informacyjny na odtwarzaczu YouTube" "message": "Pokaż przycisk informacyjny na odtwarzaczu YouTube"
@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Włącz licznik śledzenia pominięć w zakładkach Prywatnych/Incognito" "message": "Włącz licznik śledzenia pominięć w zakładkach Prywatnych/Incognito"
}, },
"enableTrackDownvotes": {
"message": "Zapamiętaj segmenty z łapkami w dół"
},
"whatTrackDownvotes": {
"message": "Wszystkie segmenty, którym dasz łapkę w dół, pozostaną ukryte nawet po odświeżeniu"
},
"trackDownvotesWarning": {
"message": "Uwaga: Wyłączenie tego usunie wszystkie poprzednio zapisane łapki w dół"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Zapytanie według prefiksu Hash" "message": "Zapytanie według prefiksu Hash"
}, },
@@ -780,6 +789,9 @@
"Donate": { "Donate": {
"message": "Dotacje" "message": "Dotacje"
}, },
"considerDonating": {
"message": "Wesprzyj"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Ukryj Link Do Dotacji" "message": "Ukryj Link Do Dotacji"
}, },
@@ -847,13 +859,13 @@
"message": "Dowiedz się więcej" "message": "Dowiedz się więcej"
}, },
"CopyDownvoteButtonInfo": { "CopyDownvoteButtonInfo": {
"message": "Minusuje i tworzy lokalną kopię, abyś mógł przesłać poprawioną wersję" "message": "Daje łapkę w dół i tworzy lokalną kopię, abyś mógł przesłać poprawioną wersję"
}, },
"OpenCategoryWikiPage": { "OpenCategoryWikiPage": {
"message": "Otwórz stronę wiki dla tej kategorii." "message": "Otwórz stronę wiki dla tej kategorii."
}, },
"CopyAndDownvote": { "CopyAndDownvote": {
"message": "Skopiuj i zminusuj" "message": "Skopiuj i daj łapkę w dół"
}, },
"ContinueVoting": { "ContinueVoting": {
"message": "Kontynuuj głosowanie" "message": "Kontynuuj głosowanie"

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Ativar Pular Contagem de Rastreamento em Abas Privadas/Incógnito" "message": "Ativar Pular Contagem de Rastreamento em Abas Privadas/Incógnito"
}, },
"enableTrackDownvotes": {
"message": "Armazenar votos negativos de segmentos"
},
"whatTrackDownvotes": {
"message": "Qualquer segmento que você der voto negative permanecerá oculto mesmo após recarregar"
},
"trackDownvotesWarning": {
"message": "Aviso: Desativar isto excluirá todos os votos negativos armazenados anteriormente"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Consulta Por Prefixo Hash" "message": "Consulta Por Prefixo Hash"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "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." "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": "Enrolação/Piadas"
},
"category_filler_description": { "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." "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."
}, },
@@ -694,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "oculto: muito curto" "message": "oculto: muito curto"
}, },
"manuallyHidden": {
"message": "oculto manualmente"
},
"channelDataNotFound": { "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.", "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": "O ID do canal ainda não foi carregado. Se você estiver usando um vídeo embutido, tente usar a página inicial do YouTube. Isso também pode ser causado por mudanças no layout do YouTube, se você achar que este é o caso, faça um comentário aqui:" "message": "O ID do canal ainda não foi carregado. Se você estiver usando um vídeo embutido, tente usar a página inicial do YouTube. Isso também pode ser causado por mudanças no layout do YouTube, se você achar que este é o caso, faça um comentário aqui:"
@@ -780,6 +795,9 @@
"Donate": { "Donate": {
"message": "Doar" "message": "Doar"
}, },
"considerDonating": {
"message": "Ajude a financiar o desenvolvimento"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Ocultar o Link de Doação" "message": "Ocultar o Link de Doação"
}, },

View File

@@ -3,6 +3,10 @@
"message": "SponsorBlock para o YouTube - Salte patrocínios", "message": "SponsorBlock para o YouTube - Salte patrocínios",
"description": "Name of the extension." "description": "Name of the extension."
}, },
"Description": {
"message": "Salte patrocinios, pedidos de subscrição e mais em videos do YouTube. Submeta anúncios nos videos que visualiza para poupar tempo a outros.",
"description": "Description of the extension."
},
"400": { "400": {
"message": "O servidor disse que este pedido foi inválido" "message": "O servidor disse que este pedido foi inválido"
}, },
@@ -15,9 +19,21 @@
"channelWhitelisted": { "channelWhitelisted": {
"message": "Canal adicionado à whitelist!" "message": "Canal adicionado à whitelist!"
}, },
"Segment": {
"message": "segmento"
},
"Segments": {
"message": "segmentos"
},
"upvoteButtonInfo": {
"message": "Votar positivamente esta submissão"
},
"reportButtonTitle": { "reportButtonTitle": {
"message": "Reportar" "message": "Reportar"
}, },
"reportButtonInfo": {
"message": "Reportar esta submissão como incorrecta."
},
"Dismiss": { "Dismiss": {
"message": "Ignorar" "message": "Ignorar"
}, },
@@ -36,9 +52,15 @@
"reskip": { "reskip": {
"message": "Saltar novamente" "message": "Saltar novamente"
}, },
"unmute": {
"message": "Ativar som"
},
"paused": { "paused": {
"message": "Pausado" "message": "Pausado"
}, },
"manualPaused": {
"message": "Temporizador parado"
},
"confirmMSG": { "confirmMSG": {
"message": "\n\nPara editar ou remover linhas individuais, carregue com o botão direito ou abra o popup da extensão pelo icone no canto superior direito." "message": "\n\nPara editar ou remover linhas individuais, carregue com o botão direito ou abra o popup da extensão pelo icone no canto superior direito."
}, },
@@ -48,18 +70,51 @@
"Unknown": { "Unknown": {
"message": "Erro ao enviar os seus segmentos, tente novamente mais tarde." "message": "Erro ao enviar os seus segmentos, tente novamente mais tarde."
}, },
"sponsorFound": {
"message": "Este vídeo tem segmentos na base de dados!"
},
"sponsor404": {
"message": "Nenhum segmento encontrado"
},
"sponsorStart": {
"message": "O Segmento Começa Agora"
},
"sponsorEnd": {
"message": "O Segmento Acaba Agora"
},
"sponsorCancel": {
"message": "Cancelar Criação de Segmento"
},
"noVideoID": {
"message": "Nenhum vídeo do YouTube encontrado.\nSe isto não estiver correto, atualize o separador."
},
"refreshSegments": {
"message": "Atualizar segmentos"
},
"success": { "success": {
"message": "Sucesso!" "message": "Sucesso!"
}, },
"voted": { "voted": {
"message": "Votado!" "message": "Votado!"
}, },
"serverDown": {
"message": "Parece que o servidor está em baixo. Contacte o desenvolvedor imediatamente."
},
"connectionError": { "connectionError": {
"message": "Deu-se um erro de conecção: Código: " "message": "Deu-se um erro de conecção: Código: "
}, },
"clearTimes": {
"message": "Limpar Segmentos"
},
"openPopup": { "openPopup": {
"message": "Abrir o Popup SponsorBlock" "message": "Abrir o Popup SponsorBlock"
}, },
"closePopup": {
"message": "Fechar Popup"
},
"SubmitTimes": {
"message": "Submeter Segmentos"
},
"submitCheck": { "submitCheck": {
"message": "Tem a certeza que pretende submeter?" "message": "Tem a certeza que pretende submeter?"
}, },

View File

@@ -591,6 +591,9 @@
"category_preview_description": { "category_preview_description": {
"message": "Краткое содержание предыдущих эпизодов или предварительный просмотр того, что будет в данном видео. Предназначено для сегментов, смонтированных из кусков видео, а не для устных пересказов." "message": "Краткое содержание предыдущих эпизодов или предварительный просмотр того, что будет в данном видео. Предназначено для сегментов, смонтированных из кусков видео, а не для устных пересказов."
}, },
"category_filler": {
"message": "Заполнение отвлечёнными темами/шутками"
},
"category_filler_description": { "category_filler_description": {
"message": "Сегменты, которые увеличивают длительность видео за счёт отвлечённых тем или шуток, но не требуются для понимания основного содержания. Не должно иметь сегментов, объясняющие контекст или предысторию." "message": "Сегменты, которые увеличивают длительность видео за счёт отвлечённых тем или шуток, но не требуются для понимания основного содержания. Не должно иметь сегментов, объясняющие контекст или предысторию."
}, },

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Aktivera spåra antalet hoppa över i privata/inkognitoflikar" "message": "Aktivera spåra antalet hoppa över i privata/inkognitoflikar"
}, },
"enableTrackDownvotes": {
"message": "Lagra segmentnerröstningar"
},
"whatTrackDownvotes": {
"message": "Alla segment du röstat ner kommer att förbli dolda även efter uppdatering"
},
"trackDownvotesWarning": {
"message": "Varning: Om detta inaktiveras kommer alla tidigare lagrade nerröstningar att tas bort"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Fråga efter hash-prefix" "message": "Fråga efter hash-prefix"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "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." "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/Skämt"
},
"category_filler_description": { "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." "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."
}, },
@@ -694,6 +706,9 @@
"hiddenDueToDuration": { "hiddenDueToDuration": {
"message": "dold: för kort" "message": "dold: för kort"
}, },
"manuallyHidden": {
"message": "manuellt dold"
},
"channelDataNotFound": { "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.", "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": "Kanal-ID:t är inte laddat ännu. Om du använder en inbäddad video, prova att använda YouTube-hemsidan istället. Detta kan också bero på förändringar i layouten hos YouTube och om du tror så är fallet kommentera det här:" "message": "Kanal-ID:t är inte laddat ännu. Om du använder en inbäddad video, prova att använda YouTube-hemsidan istället. Detta kan också bero på förändringar i layouten hos YouTube och om du tror så är fallet kommentera det här:"
@@ -780,6 +795,9 @@
"Donate": { "Donate": {
"message": "Donera" "message": "Donera"
}, },
"considerDonating": {
"message": "Hjälp till att finansiera utvecklingen"
},
"hideDonationLink": { "hideDonationLink": {
"message": "Dölj donationslänk" "message": "Dölj donationslänk"
}, },

View File

@@ -209,6 +209,15 @@
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Özel/Gizli sekmelerde atlama sayısı takibini etkinleştir" "message": "Özel/Gizli sekmelerde atlama sayısı takibini etkinleştir"
}, },
"enableTrackDownvotes": {
"message": "Kısımların olumsuz oylarını depola"
},
"whatTrackDownvotes": {
"message": "Olumsuz oy verdiğiniz kısımlar, sayfayı tazeledikten sonra da gizli kalacaktır"
},
"trackDownvotesWarning": {
"message": "Uyarı: Bu ayarı devre dışı bırakırsanız, halihazırda saklanan olumsuz oylar silinecek"
},
"enableQueryByHashPrefix": { "enableQueryByHashPrefix": {
"message": "Karma Ön eki ile Sorgula" "message": "Karma Ön eki ile Sorgula"
}, },
@@ -582,6 +591,9 @@
"category_preview_description": { "category_preview_description": {
"message": "Önceki bölümlerin bir özeti veya geçerli videonun içeriğine yönelik bir ön izleme. Bu özellik birleştirilmiş klipler içindir, konuşarak anlatılan özetleri kapsamaz." "message": "Önceki bölümlerin bir özeti veya geçerli videonun içeriğine yönelik bir ön izleme. Bu özellik birleştirilmiş klipler içindir, konuşarak anlatılan özetleri kapsamaz."
}, },
"category_filler": {
"message": "Konuyla Alakasız / Şaka"
},
"category_filler_description": { "category_filler_description": {
"message": "Videonun ana içeriğini anlamak için gerekli olmayan, yalnızca alakasız konu veya mizah için eklenen sahneler. Bu, alakalı veya arka plan ayrıntısı veren kısımları içermemelidir." "message": "Videonun ana içeriğini anlamak için gerekli olmayan, yalnızca alakasız konu veya mizah için eklenen sahneler. Bu, alakalı veya arka plan ayrıntısı veren kısımları içermemelidir."
}, },

View File

@@ -593,7 +593,7 @@ svg {
/* Top bar navigation for smaller screens */ /* Top bar navigation for smaller screens */
@media only screen and (max-height: 650px), only screen and (max-width: 1200px) { @media only screen and (max-height: 725px), only screen and (max-width: 1200px) {
#options-container { #options-container {
flex-direction: column; flex-direction: column;
} }
@@ -666,6 +666,8 @@ svg {
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
#options { #options {
padding: 0 15px; padding: 0 15px;
justify-content: left; }
#options > div {
max-width: 100%;
} }
} }

View File

@@ -90,7 +90,7 @@
</div> </div>
</div> </div>
<div option-type="toggle" data-sync="fullVideoSegments"> <div data-type="toggle" data-sync="fullVideoSegments">
<div class="switch-container"> <div class="switch-container">
<label class="switch"> <label class="switch">
<input id="fullVideoSegments" type="checkbox" checked> <input id="fullVideoSegments" type="checkbox" checked>

View File

@@ -381,21 +381,21 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
} }
const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index]; const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];
this.handleReplacingLostTimes(event.target.value as Category, sponsorTime.actionType); this.handleReplacingLostTimes(event.target.value as Category, sponsorTime.actionType, sponsorTime);
this.saveEditTimes(); this.saveEditTimes();
} }
actionTypeSelectionChange(event: React.ChangeEvent<HTMLSelectElement>): void { actionTypeSelectionChange(event: React.ChangeEvent<HTMLSelectElement>): void {
const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index]; const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];
this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType); this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);
this.saveEditTimes(); this.saveEditTimes();
} }
private handleReplacingLostTimes(category: Category, actionType: ActionType): void { private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {
if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) { if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {
if (this.previousSkipType !== ActionType.Poi) { if (this.previousSkipType !== ActionType.Poi) {
this.timesBeforeChanging = [null, utils.getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1])]; this.timesBeforeChanging = [null, segment.segment[1]];
} }
this.setTimeTo(1, null); this.setTimeTo(1, null);
@@ -410,12 +410,13 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
} else if (CompileConfig.categorySupport[category]?.length === 1 } else if (CompileConfig.categorySupport[category]?.length === 1
&& CompileConfig.categorySupport[category]?.[0] === ActionType.Full) { && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {
if (this.previousSkipType !== ActionType.Full) { if (this.previousSkipType !== ActionType.Full) {
this.timesBeforeChanging = [utils.getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]), utils.getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1])]; this.timesBeforeChanging = [...segment.segment];
} }
this.previousSkipType = ActionType.Full; this.previousSkipType = ActionType.Full;
} else if (CompileConfig.categorySupport[category]?.includes(ActionType.Skip) } else if ((category === "chooseACategory" || (CompileConfig.categorySupport[category]?.includes(ActionType.Skip)
&& ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType)) && this.previousSkipType !== ActionType.Skip) { && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))
&& this.previousSkipType !== ActionType.Skip) {
if (this.timesBeforeChanging[0]) { if (this.timesBeforeChanging[0]) {
this.setTimeTo(0, this.timesBeforeChanging[0]); this.setTimeTo(0, this.timesBeforeChanging[0]);
} }

View File

@@ -16,7 +16,7 @@ import * as Chat from "./js-components/chat";
import { SkipButtonControlBar } from "./js-components/skipButtonControlBar"; import { SkipButtonControlBar } from "./js-components/skipButtonControlBar";
import { getStartTimeFromUrl } from "./utils/urlParser"; import { getStartTimeFromUrl } from "./utils/urlParser";
import { findValidElement, getControls, getHashParams, isVisible } from "./utils/pageUtils"; import { findValidElement, getControls, getHashParams, isVisible } from "./utils/pageUtils";
import { keybindEquals } from "./utils/configUtils"; import { isSafari, keybindEquals } from "./utils/configUtils";
import { CategoryPill } from "./render/CategoryPill"; import { CategoryPill } from "./render/CategoryPill";
import { AnimationUtils } from "./utils/animationUtils"; import { AnimationUtils } from "./utils/animationUtils";
import { GenericUtils } from "./utils/genericUtils"; import { GenericUtils } from "./utils/genericUtils";
@@ -45,6 +45,7 @@ let lockedCategories: Category[] = [];
// Skips are rescheduled every seeking event. // Skips are rescheduled every seeking event.
// Skips are canceled every seeking event // Skips are canceled every seeking event
let currentSkipSchedule: NodeJS.Timeout = null; let currentSkipSchedule: NodeJS.Timeout = null;
let currentSkipInterval: NodeJS.Timeout = null;
/** Has the sponsor been skipped */ /** Has the sponsor been skipped */
let sponsorSkipped: boolean[] = []; let sponsorSkipped: boolean[] = [];
@@ -427,9 +428,13 @@ function videoOnReadyListener(): void {
function cancelSponsorSchedule(): void { function cancelSponsorSchedule(): void {
if (currentSkipSchedule !== null) { if (currentSkipSchedule !== null) {
clearTimeout(currentSkipSchedule); clearTimeout(currentSkipSchedule);
currentSkipSchedule = null; currentSkipSchedule = null;
} }
if (currentSkipInterval !== null) {
clearInterval(currentSkipInterval);
currentSkipInterval = null;
}
} }
/** /**
@@ -491,14 +496,15 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
// Don't skip if this category should not be skipped // Don't skip if this category should not be skipped
if (!shouldSkip(currentSkip) && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)) return; if (!shouldSkip(currentSkip) && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)) return;
const skippingFunction = () => { const skippingFunction = (forceVideoTime?: number) => {
let forcedSkipTime: number = null; let forcedSkipTime: number = null;
let forcedIncludeIntersectingSegments = false; let forcedIncludeIntersectingSegments = false;
let forcedIncludeNonIntersectingSegments = true; let forcedIncludeNonIntersectingSegments = true;
if (incorrectVideoCheck(videoID, currentSkip)) return; if (incorrectVideoCheck(videoID, currentSkip)) return;
forceVideoTime ||= video.currentTime;
if (video.currentTime >= skipTime[0] && video.currentTime < skipTime[1]) { if (forceVideoTime >= skipTime[0] && forceVideoTime < skipTime[1]) {
skipToTime({ skipToTime({
v: video, v: video,
skipTime, skipTime,
@@ -522,7 +528,22 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
if (timeUntilSponsor <= 0) { if (timeUntilSponsor <= 0) {
skippingFunction(); skippingFunction();
} else { } else {
currentSkipSchedule = setTimeout(skippingFunction, timeUntilSponsor * 1000 * (1 / video.playbackRate)); const delayTime = timeUntilSponsor * 1000 * (1 / video.playbackRate);
if (delayTime < 300 && utils.isFirefox() && !isSafari()) {
// For Firefox, use interval instead of timeout near the end to combat imprecise video time
const startIntervalTime = performance.now();
const startVideoTime = video.currentTime;
currentSkipInterval = setInterval(() => {
const intervalDuration = performance.now() - startIntervalTime;
if (intervalDuration >= delayTime || video.currentTime >= skipTime[0]) {
clearInterval(currentSkipInterval);
skippingFunction(Math.max(video.currentTime, startVideoTime + intervalDuration / 1000));
}
}, 5);
} else {
// Schedule for right before to be more precise than normal timeout
currentSkipSchedule = setTimeout(skippingFunction, Math.max(0, delayTime - 30));
}
} }
} }
@@ -735,7 +756,7 @@ async function sponsorsLookup(id: string, keepOldSubmissions = true) {
// Hide all submissions smaller than the minimum duration // Hide all submissions smaller than the minimum duration
if (Config.config.minDuration !== 0) { if (Config.config.minDuration !== 0) {
for (const segment of sponsorTimes) { for (const segment of sponsorTimes) {
const duration = segment[1] - segment[0]; const duration = segment.segment[1] - segment.segment[0];
if (duration > 0 && duration < Config.config.minDuration) { if (duration > 0 && duration < Config.config.minDuration) {
segment.hidden = SponsorHideType.MinimumDuration; segment.hidden = SponsorHideType.MinimumDuration;
} }
@@ -858,7 +879,8 @@ function retryFetch(): void {
* Ex. When segments are first loaded * Ex. When segments are first loaded
*/ */
function startSkipScheduleCheckingForStartSponsors() { function startSkipScheduleCheckingForStartSponsors() {
if (!switchingVideos && sponsorTimes) { // switchingVideos is ignored in Safari due to event fire order. See #1142
if ((!switchingVideos || isSafari) && sponsorTimes) {
// See if there are any starting sponsors // See if there are any starting sponsors
let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1; let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;
let found = false; let found = false;
@@ -1913,6 +1935,11 @@ async function sendSubmitMessage() {
sponsorTimesSubmitting = []; sponsorTimesSubmitting = [];
updatePreviewBar(); updatePreviewBar();
const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];
if (fullVideoSegment) {
categoryPill?.setSegment(fullVideoSegment);
}
} else { } else {
// Show that the upload failed // Show that the upload failed
playerButtons.submit.button.style.animation = "unset"; playerButtons.submit.button.style.animation = "unset";
@@ -1961,6 +1988,7 @@ function addPageListeners(): void {
function addHotkeyListener(): void { function addHotkeyListener(): void {
document.addEventListener("keydown", hotkeyListener); document.addEventListener("keydown", hotkeyListener);
document.addEventListener("keyup", (e) => pressedKeys.delete(e.key)); document.addEventListener("keyup", (e) => pressedKeys.delete(e.key));
window.addEventListener("focus", (e) => pressedKeys.clear());
} }
function hotkeyListener(e: KeyboardEvent): void { function hotkeyListener(e: KeyboardEvent): void {

View File

@@ -5,6 +5,10 @@ export function showDonationLink(): boolean {
return navigator.vendor !== "Apple Computer, Inc." && Config.config.showDonationLink; return navigator.vendor !== "Apple Computer, Inc." && Config.config.showDonationLink;
} }
export function isSafari(): boolean {
return navigator.vendor === "Apple Computer, Inc.";
}
export function keybindEquals(first: Keybind, second: Keybind): boolean { export function keybindEquals(first: Keybind, second: Keybind): boolean {
if (first == null || second == null || if (first == null || second == null ||
Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) || Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||