Compare commits

..

26 Commits

Author SHA1 Message Date
Ajay Ramachandran
21f54eef67 Add svgjs and testing with fake dom 2021-09-26 00:23:49 -04:00
Ajay Ramachandran
51d9edbbb4 Add start of visual segment editing 2021-09-25 23:33:13 -04:00
Ajay Ramachandran
76d9a9afa9 Merge pull request #957 from mchangrh/update-workflow
Update workflow
2021-09-21 19:04:20 -04:00
Michael C
514ebe8660 update wiki links in README 2021-09-20 02:14:54 -04:00
Michael C
2f4722162b update workflows to newest versions 2021-09-20 02:13:41 -04:00
Ajay Ramachandran
f219122f00 bump version 2021-09-19 22:41:21 -04:00
Ajay Ramachandran
008671d97f New Crowdin updates (#938) 2021-09-19 22:40:43 -04:00
FlorianZahn
6fb3802fd4 Preview skip-lenth dependant on playbackspeed (#949)
* Preview button playback speed dependant

Pressing "Preview" will now jump 2 seconds in front of the segment start time, depending on the playback speed.
2021-09-19 10:24:37 -04:00
Ajay Ramachandran
73241a0bd1 Fix in the middle of mute 2021-09-16 23:21:59 -04:00
Ajay Ramachandran
cc995b9848 Merge pull request #942 from LofhJann/master
Fix username wrapping
2021-09-15 21:33:23 -04:00
Janne Löfhjelm
778379d294 Fix username wrapping 2021-09-11 03:33:41 +03:00
Ajay Ramachandran
1083520666 Add warning for submitting multiple highlights 2021-09-10 19:07:16 -04:00
Ajay Ramachandran
cad5cd97fc New Crowdin updates (#933) 2021-09-07 23:29:35 -04:00
Ajay Ramachandran
7f5728d4db bump version 2021-09-07 23:28:48 -04:00
Ajay Ramachandran
06fa2748fe Fix package-lock, fix #937 2021-09-07 18:54:37 -04:00
Ajay Ramachandran
8b50373eab Merge branch 'master' of https://github.com/ajayyy/SponsorBlock 2021-09-06 23:51:28 -04:00
Ajay Ramachandran
bdedf86d63 Fix selenium test to change category 2021-09-06 23:51:26 -04:00
Ajay Ramachandran
0fb84dc03d Merge pull request #934 from KarelVerschraegen/patch-2
Fix typo in SubmissionNoticeComponent
2021-09-06 16:11:03 -04:00
Ajay Ramachandran
041ccdaf11 Merge branch 'master' of https://github.com/ajayyy/SponsorBlock 2021-09-06 16:10:34 -04:00
Ajay Ramachandran
1f967b3f69 Fix skips not being counted and crash on old browser 2021-09-06 16:10:32 -04:00
KarelVerschraegen
07f0b87379 Fix typo in SubmissionNoticeComponent 2021-09-06 15:50:13 +02:00
Ajay Ramachandran
840dbbde4a New Crowdin updates (#928) 2021-09-05 13:30:51 -04:00
Ajay Ramachandran
2b9000ff84 bump version 2021-09-05 13:29:45 -04:00
Ajay Ramachandran
0d0171530c Remove unused string 2021-09-04 02:17:57 -04:00
Ajay Ramachandran
6040d177fa Say muted instead of skipped for mute segments 2021-09-04 02:09:10 -04:00
Ajay Ramachandran
2c1f5f16c2 Only show mute option for supported categories 2021-09-04 01:44:09 -04:00
52 changed files with 1866 additions and 24221 deletions

View File

@@ -10,8 +10,8 @@ jobs:
steps: steps:
# Initialization # Initialization
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
- run: npm install - run: npm install
- name: Copy configuration - name: Copy configuration
run: cp config.json.example config.json run: cp config.json.example config.json
@@ -23,44 +23,44 @@ jobs:
# Create Chrome artifacts # Create Chrome artifacts
- name: Create Chrome artifacts - name: Create Chrome artifacts
run: npm run build:chrome run: npm run build:chrome
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: ChromeExtension name: ChromeExtension
path: dist path: dist
- run: mkdir ./builds - run: mkdir ./builds
- uses: montudor/action-zip@v0.1.0 - uses: montudor/action-zip@v1
with: with:
args: zip -qq -r ./builds/ChromeExtension.zip ./dist args: zip -qq -r ./builds/ChromeExtension.zip ./dist
# Create Firefox artifacts # Create Firefox artifacts
- name: Create Firefox artifacts - name: Create Firefox artifacts
run: npm run build:firefox run: npm run build:firefox
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: FirefoxExtension name: FirefoxExtension
path: dist path: dist
- uses: montudor/action-zip@v0.1.0 - uses: montudor/action-zip@v1
with: with:
args: zip -qq -r ./builds/FirefoxExtension.zip ./dist args: zip -qq -r ./builds/FirefoxExtension.zip ./dist
# Create Beta artifacts (Builds with the name changed to beta) # Create Beta artifacts (Builds with the name changed to beta)
- name: Create Chrome Beta artifacts - name: Create Chrome Beta artifacts
run: npm run build:chrome -- --env.stream=beta run: npm run build:chrome -- --env.stream=beta
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: ChromeExtensionBeta name: ChromeExtensionBeta
path: dist path: dist
- uses: montudor/action-zip@v0.1.0 - uses: montudor/action-zip@v1
with: with:
args: zip -qq -r ./builds/ChromeExtensionBeta.zip ./dist args: zip -qq -r ./builds/ChromeExtensionBeta.zip ./dist
- name: Create Firefox Beta artifacts - name: Create Firefox Beta artifacts
run: npm run build:firefox -- --env.stream=beta run: npm run build:firefox -- --env.stream=beta
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: FirefoxExtensionBeta name: FirefoxExtensionBeta
path: dist path: dist
- uses: montudor/action-zip@v0.1.0 - uses: montudor/action-zip@v1
with: with:
args: zip -qq -r ./builds/FirefoxExtensionBeta.zip ./dist args: zip -qq -r ./builds/FirefoxExtensionBeta.zip ./dist

View File

@@ -12,8 +12,8 @@ jobs:
steps: steps:
# Initialization # Initialization
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
- run: npm install - run: npm install
- name: Copy configuration - name: Copy configuration
run: cp config.json.example config.json run: cp config.json.example config.json
@@ -21,7 +21,7 @@ jobs:
# Create Chrome artifacts # Create Chrome artifacts
- name: Create Chrome artifacts - name: Create Chrome artifacts
run: npm run build:chrome run: npm run build:chrome
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: ChromeExtension name: ChromeExtension
path: dist path: dist
@@ -32,7 +32,7 @@ jobs:
# Create Firefox artifacts # Create Firefox artifacts
- name: Create Firefox artifacts - name: Create Firefox artifacts
run: npm run build:firefox run: npm run build:firefox
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: FirefoxExtension name: FirefoxExtension
path: dist path: dist
@@ -42,7 +42,7 @@ jobs:
# Create Beta artifacts (Builds with the name changed to beta) # Create Beta artifacts (Builds with the name changed to beta)
- name: Create Chrome Beta artifacts - name: Create Chrome Beta artifacts
run: npm run build:chrome -- --env.stream=beta run: npm run build:chrome -- --env.stream=beta
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: ChromeExtensionBeta name: ChromeExtensionBeta
path: dist path: dist
@@ -75,7 +75,7 @@ jobs:
# Firefox Beta # Firefox Beta
- name: Create Firefox Beta artifacts - name: Create Firefox Beta artifacts
run: npm run build:firefox -- --env.stream=beta run: npm run build:firefox -- --env.stream=beta
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: FirefoxExtensionBeta name: FirefoxExtensionBeta
path: dist path: dist
@@ -92,7 +92,7 @@ jobs:
run: sudo apt-get install rename run: sudo apt-get install rename
- name: Rename signed file - name: Rename signed file
run: cd ./web-ext-artifacts ; rename 's/.*/FirefoxSignedInstaller.xpi/' * run: cd ./web-ext-artifacts ; rename 's/.*/FirefoxSignedInstaller.xpi/' *
- uses: actions/upload-artifact@v1 - uses: actions/upload-artifact@v2
with: with:
name: FirefoxExtensionSigned.xpi name: FirefoxExtensionSigned.xpi
path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi

View File

@@ -50,13 +50,13 @@ See the [Wiki](https://github.com/ajayyy/SponsorBlock/wiki) for important links.
The backend server code is available here: https://github.com/ajayyy/SponsorBlockServer The backend server code is available here: https://github.com/ajayyy/SponsorBlockServer
To make sure that this project doesn't die, I have made the database publicly downloadable at https://sponsor.ajay.app/database ([License](https://github.com/ajayyy/SponsorBlock/wiki/Database-and-API-License)). If you are planning on using the database in another project, please read the [API Docs](https://github.com/ajayyy/SponsorBlock/wiki/API-Docs) page for more information. To make sure that this project doesn't die, I have made the database publicly downloadable at https://sponsor.ajay.app/database ([License](https://github.com/ajayyy/SponsorBlock/wiki/Database-and-API-License)). If you are planning on using the database in another project, please read the [API Docs](https://wiki.sponsor.ajay.app/index.php/API_Docs) page for more information.
The dataset and API are now being used in some [ports](https://github.com/ajayyy/SponsorBlock/wiki/3rd-Party-Ports) as well as a [neural network](https://github.com/andrewzlee/NeuralBlock). The dataset and API are now being used in some [ports](https://github.com/ajayyy/SponsorBlock/wiki/3rd-Party-Ports) as well as a [neural network](https://github.com/andrewzlee/NeuralBlock).
# API # API
You can read the API docs [here](https://github.com/ajayyy/SponsorBlockServer#api-docs). You can read the API docs [here](https://wiki.sponsor.ajay.app/index.php/API_Docs).
# Building # Building
@@ -90,7 +90,7 @@ mv ./oss-attribution/attribution.txt ./public/oss-attribution/attribution.txt
# Credit # Credit
The awesome [Invidious API](https://github.com/omarroth/invidious/wiki/API) was previously used, and the server is now using [NewLeaf](https://git.sr.ht/~cadence/NewLeaf) as a to get video info from YouTube. The awesome [Invidious API](https://docs.invidious.io/API.md) was previously used, and the server is now using [NewLeaf](https://git.sr.ht/~cadence/NewLeaf) as a to get video info from YouTube.
Originally forked from [YTSponsorSkip](https://github.com/NDevTK/YTSponsorSkip), but very little code remains. Originally forked from [YTSponsorSkip](https://github.com/NDevTK/YTSponsorSkip), but very little code remains.

View File

@@ -2,5 +2,15 @@
"serverAddress": "https://sponsor.ajay.app", "serverAddress": "https://sponsor.ajay.app",
"testingServerAddress": "https://sponsor.ajay.app/test", "testingServerAddress": "https://sponsor.ajay.app/test",
"serverAddressComment": "This specifies the default SponsorBlock server to connect to", "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", "music_offtopic"],
"categorySupport": {
"sponsor": ["skip", "mute"],
"selfpromo": ["skip", "mute"],
"interaction": ["skip", "mute"],
"intro": ["skip"],
"outro": ["skip"],
"preview": ["skip"],
"music_offtopic": ["skip"],
"poi_highlight": ["skip"]
}
} }

View File

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

25062
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
"description": "", "description": "",
"main": "background.js", "main": "background.js",
"dependencies": { "dependencies": {
"@svgdotjs/svg.js": "^3.1.1",
"@types/react": "^16.9.22", "@types/react": "^16.9.22",
"@types/react-dom": "^16.9.5", "@types/react-dom": "^16.9.5",
"@types/selenium-webdriver": "^4.0.15", "@types/selenium-webdriver": "^4.0.15",
@@ -13,7 +14,8 @@
"babel-preset-env": "^1.7.0", "babel-preset-env": "^1.7.0",
"concurrently": "^5.1.0", "concurrently": "^5.1.0",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2" "react-dom": "^17.0.2",
"svgdom": "^0.1.8"
}, },
"devDependencies": { "devDependencies": {
"@types/chrome": "0.0.91", "@types/chrome": "0.0.91",

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Възникна грешка с връзката. Код на грешката: " "message": "Възникна грешка с връзката. Код на грешката: "
}, },
"wantToSubmit": {
"message": "Искате ли да изпратите сегментите за видеоклип с id"
},
"clearTimes": { "clearTimes": {
"message": "Изчистване на сегментите" "message": "Изчистване на сегментите"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Пропускане на {0}?" "message": "Пропускане на {0}?"
}, },
"mute_category": {
"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)"
@@ -319,6 +319,10 @@
"message": "{0} пропуснат", "message": "{0} пропуснат",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} заглушено",
"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)"
@@ -652,6 +656,9 @@
"message": "За да изпратите сегменти с категория „{0}“, трябва да я активирате от опциите. Ще бъдете пренасочени към опциите сега.", "message": "За да изпратите сегменти с категория „{0}“, трябва да я активирате от опциите. Ще бъдете пренасочени към опциите сега.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Внимание: Само един сегмент от този тип може да е активен. Изпращането на няколко ще доведе до показване на случаен."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Трябва да изберете категория за всички сегменти, които изпращате!" "message": "Трябва да изберете категория за всички сегменти, които изпращате!"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Došlo k chybě připojení. Kód chyby: " "message": "Došlo k chybě připojení. Kód chyby: "
}, },
"wantToSubmit": {
"message": "Chcete odeslat segmenty pro video s id"
},
"clearTimes": { "clearTimes": {
"message": "Vymazat segmenty" "message": "Vymazat segmenty"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Přeskočit {0}?" "message": "Přeskočit {0}?"
}, },
"mute_category": {
"message": "Ztlumit {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Přeskočit na {0}?", "message": "Přeskočit na {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "Segment {0} přeskočen", "message": "Segment {0} přeskočen",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "Segment {0} ztlumen",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Přeskočeno na {0}", "message": "Přeskočeno na {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -652,6 +656,9 @@
"message": "Pro odeslání segmentů v kategorii \"{0}\" to nejprve musíte povolit v nastavení. Nyní budete přesměrováni do nastavení.", "message": "Pro odeslání segmentů v kategorii \"{0}\" to nejprve musíte povolit v nastavení. Nyní budete přesměrováni do nastavení.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Varování: tento typ segmentu může být aktivní najednou pouze jeden. Odeslání více segmentů způsobí zobrazení náhodného segmentu."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Musíte vybrat kategorii pro všechny odeslané segmenty!" "message": "Musíte vybrat kategorii pro všechny odeslané segmenty!"
}, },

View File

@@ -4,7 +4,7 @@
"description": "Name of the extension." "description": "Name of the extension."
}, },
"Description": { "Description": {
"message": "Überspringe Sponsoren, Betteln um Abonnenten und mehr in YouTube-Videos. Melde Sponsoren in Videos, die du guckst, um Anderen Zeit zu sparen.", "message": "Überspringe Sponsoren, Betteln um Abonnenten und mehr in YouTube-Videos. Melde Sponsoren in Videos, die du schaust, um Anderen Zeit zu ersparen.",
"description": "Description of the extension." "description": "Description of the extension."
}, },
"400": { "400": {
@@ -92,7 +92,7 @@
"message": "Segmente aktualisieren" "message": "Segmente aktualisieren"
}, },
"success": { "success": {
"message": "Geschafft!" "message": "Erfolg!"
}, },
"voted": { "voted": {
"message": "Abgestimmt!" "message": "Abgestimmt!"
@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Ein Verbindungsfehler ist aufgetreten. Fehlermeldung: " "message": "Ein Verbindungsfehler ist aufgetreten. Fehlermeldung: "
}, },
"wantToSubmit": {
"message": "Möchtest du für Video-ID einreichen"
},
"clearTimes": { "clearTimes": {
"message": "Alle Segmente löschen" "message": "Alle Segmente löschen"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "{0} überspringen?" "message": "{0} überspringen?"
}, },
"mute_category": {
"message": "{0} stummschalten?"
},
"skip_to_category": { "skip_to_category": {
"message": "Zu {0} springen?", "message": "Zu {0} springen?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} übersprungen", "message": "{0} übersprungen",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} stummgeschalten",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Zu {0} gesprungen", "message": "Zu {0} gesprungen",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -466,7 +470,7 @@
"message": "Import/Export aller Einstellungen" "message": "Import/Export aller Einstellungen"
}, },
"whatExportOptions": { "whatExportOptions": {
"message": "Dies ist deine gesamte Konfiguration im JSON-Format. Sie beinhält unter anderem auch deine interne Benutzer-ID und sollte daher ebenfalls mit niemanden geteilt werden." "message": "Dies ist deine gesamte Konfiguration im JSON-Format. Da diese auch deine Benutzer-ID enthält, solltest du dir genau überlegen, mit wem du diese teilen möchtest."
}, },
"setOptions": { "setOptions": {
"message": "Konfiguration aus dem Eingabefeld übernehmen" "message": "Konfiguration aus dem Eingabefeld übernehmen"
@@ -652,6 +656,9 @@
"message": "Um Segmente aus der Kategorie \"{0}\" zu senden, musst du diese in den Optionen aktivieren. Du wirst jetzt zu den Optionen weitergeleitet.", "message": "Um Segmente aus der Kategorie \"{0}\" zu senden, musst du diese in den Optionen aktivieren. Du wirst jetzt zu den Optionen weitergeleitet.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Achtung: Diese Art von Segment kann nur einmal pro Video aktiv sein. Sollten mehrere eingereicht werden, wird ein zufälliges angezeigt werden."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Du musst eine Kategorie für jedes zu übermittelnde Segment auswählen!" "message": "Du musst eine Kategorie für jedes zu übermittelnde Segment auswählen!"
}, },
@@ -802,7 +809,7 @@
"message": "Wo kann ich den Quellcode kriegen?" "message": "Wo kann ich den Quellcode kriegen?"
}, },
"Credits": { "Credits": {
"message": "Credits" "message": "Mitwirkende"
}, },
"highlightNewFeature": { "highlightNewFeature": {
"message": "Neu! Gehe mit einem Klick zum Punkt des Videos mit der neuen \"Hervorheben\" Kategorie" "message": "Neu! Gehe mit einem Klick zum Punkt des Videos mit der neuen \"Hervorheben\" Kategorie"

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "A connection error has occured. Error code: " "message": "A connection error has occured. Error code: "
}, },
"wantToSubmit": {
"message": "Do you want to submit for video id"
},
"clearTimes": { "clearTimes": {
"message": "Clear Segments" "message": "Clear Segments"
}, },
@@ -308,9 +305,16 @@
"mute": { "mute": {
"message": "Mute" "message": "Mute"
}, },
"visual": {
"message": "Visual",
"description": "This is the name of the option to create visual obstructions on top of the video to hide logos when a skip doesn't work."
},
"skip_category": { "skip_category": {
"message": "Skip {0}?" "message": "Skip {0}?"
}, },
"mute_category": {
"message": "Mute {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Skip to {0}?", "message": "Skip to {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +323,10 @@
"message": "{0} Skipped", "message": "{0} Skipped",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} Muted",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Skipped to {0}", "message": "Skipped to {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -652,6 +660,9 @@
"message": "To submit segments with the category of \"{0}\", you must enable it in the options. You will be redirected to the options now.", "message": "To submit segments with the category of \"{0}\", you must enable it in the options. You will be redirected to the options now.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Warning: This type of segment can have a maximum of one active at a time. Submitting multiple will cause a random one to be shown."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "You must select a category for all segments you are submitting!" "message": "You must select a category for all segments you are submitting!"
}, },

View File

@@ -52,6 +52,9 @@
"reskip": { "reskip": {
"message": "Volver a saltar" "message": "Volver a saltar"
}, },
"unmute": {
"message": "Restaurar sonido"
},
"paused": { "paused": {
"message": "Pausado" "message": "Pausado"
}, },
@@ -100,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Ha ocurrido un error de conexión. Código de error: " "message": "Ha ocurrido un error de conexión. Código de error: "
}, },
"wantToSubmit": {
"message": "¿Quiere enviar el segmento para el video con ID"
},
"clearTimes": { "clearTimes": {
"message": "Borrar Segmentos" "message": "Borrar Segmentos"
}, },
@@ -302,9 +302,15 @@
"skip": { "skip": {
"message": "Omitir" "message": "Omitir"
}, },
"mute": {
"message": "Silenciar"
},
"skip_category": { "skip_category": {
"message": "¿Saltar {0}?" "message": "¿Saltar {0}?"
}, },
"mute_category": {
"message": "¿Silenciar {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "¿Saltar a {0}?", "message": "¿Saltar a {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -313,6 +319,10 @@
"message": "{0} Omitido/as", "message": "{0} Omitido/as",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} Silenciado",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Se ha saltado a {0}", "message": "Se ha saltado a {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -365,6 +375,9 @@
"changeUserID": { "changeUserID": {
"message": "Importar/Exportar tu ID de usuario" "message": "Importar/Exportar tu ID de usuario"
}, },
"whatChangeUserID": {
"message": "Esto se debería mantener privado. Esto es como una contraseña y no debe ser compartido con nadie. Si alguien tiene esto, puede suplantarte. Si estás buscando tu ID de usuario público, haz clic en el icono de portapapeles en la ventana emergente."
},
"setUserID": { "setUserID": {
"message": "Establecer el ID de usuario" "message": "Establecer el ID de usuario"
}, },
@@ -601,6 +614,9 @@
"autoSkipOnMusicVideos": { "autoSkipOnMusicVideos": {
"message": "Omitir automáticamente todos los segmentos cuando hay un segmento sin música" "message": "Omitir automáticamente todos los segmentos cuando hay un segmento sin música"
}, },
"muteSegments": {
"message": "Permitir segmentos que silencian el audio en lugar de omitir"
},
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "Su color está formateado incorrectamente. Debería ser un código hexadecimal de 3 o 6 dígitos con un signo numérico al principio." "message": "Su color está formateado incorrectamente. Debería ser un código hexadecimal de 3 o 6 dígitos con un signo numérico al principio."
}, },
@@ -640,6 +656,9 @@
"message": "Para enviar segmentos con la categoría de \"{0}\", debes activarlo en las opciones. Serás redirigido a las opciones ahora.", "message": "Para enviar segmentos con la categoría de \"{0}\", debes activarlo en las opciones. Serás redirigido a las opciones ahora.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Advertencia: Solo puede haber uno de este tipo de segmento activo a la vez. Enviar múltiples causará que se muestre uno al azar."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "¡Debes seleccionar una categoría para todos los segmentos que estés presentando!" "message": "¡Debes seleccionar una categoría para todos los segmentos que estés presentando!"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Ühendusega esines tõrge. Veakood: " "message": "Ühendusega esines tõrge. Veakood: "
}, },
"wantToSubmit": {
"message": "Kas soovid segmendid saata video IDle"
},
"clearTimes": { "clearTimes": {
"message": "Tühjenda segmendid" "message": "Tühjenda segmendid"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Jätad {0} vahele?" "message": "Jätad {0} vahele?"
}, },
"mute_category": {
"message": "Vaigistad {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Jäta {0}-ni vahele?", "message": "Jäta {0}-ni vahele?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} vahelejäetud", "message": "{0} vahelejäetud",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} vaigistatud",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "{0}-ni vahelejäetud", "message": "{0}-ni vahelejäetud",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"

View File

@@ -6,6 +6,9 @@
"400": { "400": {
"message": "سرور گفت که این درخواست نامعتبر است" "message": "سرور گفت که این درخواست نامعتبر است"
}, },
"429": {
"message": "شما برای این یک ویدیو تعداد بیش از حدی زمان اسپانسر ثبت کرده‌اید، آیا مطمئن هستید که به این تعداد وجود دارد؟"
},
"409": { "409": {
"message": "این قبلاً ثبت شده است" "message": "این قبلاً ثبت شده است"
}, },
@@ -24,6 +27,9 @@
"reportButtonTitle": { "reportButtonTitle": {
"message": "گزارش" "message": "گزارش"
}, },
"reportButtonInfo": {
"message": "گزارش این ارسال به‌عنوان غیر صحیح."
},
"Dismiss": { "Dismiss": {
"message": "رد کردن" "message": "رد کردن"
}, },
@@ -42,6 +48,9 @@
"reskip": { "reskip": {
"message": "دوباره رد کردن" "message": "دوباره رد کردن"
}, },
"unmute": {
"message": "صدادار"
},
"paused": { "paused": {
"message": "وقفه شده" "message": "وقفه شده"
}, },
@@ -54,6 +63,9 @@
"Unknown": { "Unknown": {
"message": "اشکالی در ثبت کردن زمان های ارسالی شما پیش آمد. لطفا بعداً دوباره تلاش کنید." "message": "اشکالی در ثبت کردن زمان های ارسالی شما پیش آمد. لطفا بعداً دوباره تلاش کنید."
}, },
"sponsorFound": {
"message": "این ویدیو دارای بخش‌هایی در پایگاه‌داده است!"
},
"sponsor404": { "sponsor404": {
"message": "هیچ بخشی پیدا نشد" "message": "هیچ بخشی پیدا نشد"
}, },
@@ -63,6 +75,15 @@
"sponsorEnd": { "sponsorEnd": {
"message": "بخش اینجا پایان می‌یابد" "message": "بخش اینجا پایان می‌یابد"
}, },
"sponsorCancel": {
"message": "لغو ساختن بخش"
},
"noVideoID": {
"message": "هیچ ویدیوی یوتیوب‌ای یافت نشد.\nاگر این صحیح نیست، زبانه را تازه کنید."
},
"refreshSegments": {
"message": "تازه‌کردن بخش‌ها"
},
"success": { "success": {
"message": "موفقیت!" "message": "موفقیت!"
}, },
@@ -75,9 +96,6 @@
"connectionError": { "connectionError": {
"message": "خطای شبکه رخ داده است. کد خطا: " "message": "خطای شبکه رخ داده است. کد خطا: "
}, },
"wantToSubmit": {
"message": "آی می‌خواهید که گزارش را ثبت کنید برای ویدیوی"
},
"clearTimes": { "clearTimes": {
"message": "پاک‌نمودن بخش‌ها" "message": "پاک‌نمودن بخش‌ها"
}, },
@@ -93,15 +111,36 @@
"submitCheck": { "submitCheck": {
"message": "مطمئن هستید که میخواهید این را ثبت کنید؟" "message": "مطمئن هستید که میخواهید این را ثبت کنید؟"
}, },
"whitelistChannel": {
"message": "قرار دادن کانال در لیست سفید"
},
"removeFromWhitelist": {
"message": "حذف کانال از لیست سفید"
},
"voteOnTime": { "voteOnTime": {
"message": "رأی دهی به یک بخش" "message": "رأی دهی به یک بخش"
}, },
"Submissions": {
"message": "ارسالی‌ها"
},
"savedPeopleFrom": {
"message": "شما دیگران را نجات دادید از "
},
"viewLeaderboard": {
"message": "لیست سرنشینان"
},
"recordTimesDescription": {
"message": "ثبت"
},
"clearTimesButton": { "clearTimesButton": {
"message": "حذف دفعات" "message": "حذف دفعات"
}, },
"submitTimesButton": { "submitTimesButton": {
"message": "ثبت دفعات" "message": "ثبت دفعات"
}, },
"Username": {
"message": "نام‌کاربری"
},
"setUsername": { "setUsername": {
"message": "تنظیم نام کاربری" "message": "تنظیم نام کاربری"
}, },
@@ -132,5 +171,101 @@
"noticeUpdate2": { "noticeUpdate2": {
"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."
},
"disableSkipping": {
"message": "ردکردن فعال است"
},
"enableSkipping": {
"message": "ردکردن غیرفعال است"
},
"yourWork": {
"message": "کار شما",
"description": "Used to describe the section that will show you the statistics from your submissions."
},
"errorCode": {
"message": "کد خطا: "
},
"skip": {
"message": "رد کردن"
},
"mute": {
"message": "بی‌صدا"
},
"createdBy": {
"message": "ایجاد شده توسط"
},
"add": {
"message": "افزودن"
},
"save": {
"message": "ذخیره"
},
"reset": {
"message": "بازنشانی"
},
"areYouSureReset": {
"message": "آيا مطمئن هستيد که مي خواهيد این را بازنشانی کنید؟"
},
"mobileUpdateInfo": {
"message": "m.youtube.com اکنون پشتیبانی می‌شود"
},
"setOptions": {
"message": "تنظیم گزینه‌ها"
},
"submit": {
"message": "ثبت"
},
"cancel": {
"message": "لغو"
},
"delete": {
"message": "حذف"
},
"preview": {
"message": "پیش‌نمایش"
},
"unsubmitted": {
"message": "ثبت‌نشده"
},
"inspect": {
"message": "مشاهده"
},
"edit": {
"message": "ویرایش"
},
"to": {
"message": "به",
"description": "Used between segments. Example: 1:20 to 1:30"
},
"category_sponsor": {
"message": "اسپانسر"
},
"category_music_offtopic_short": {
"message": "غیر موسیقی"
},
"category_poi_highlight": {
"message": "برجسته"
},
"autoSkip": {
"message": "ردکردن خودکار"
},
"manualSkip": {
"message": "ردکردن دستی"
},
"bracketNow": {
"message": "(اکنون)"
},
"bracketEnd": {
"message": "(پایان)"
},
"help": {
"message": "راهنما"
},
"GotIt": {
"message": "فهمیدم",
"description": "Used as the button to dismiss a tooltip"
},
"Donate": {
"message": "کمک مالی"
} }
} }

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Yhteysvirhe on tapahtunut. Virhekoodi: " "message": "Yhteysvirhe on tapahtunut. Virhekoodi: "
}, },
"wantToSubmit": {
"message": "Haluatko lähettää segmentit videotunnukselle"
},
"clearTimes": { "clearTimes": {
"message": "Tyhjennä segmentit" "message": "Tyhjennä segmentit"
}, },
@@ -652,6 +649,9 @@
"message": "Lähettääksesi segmenttejä \"{0}\" kategorialla, sinun täytyy aktivoida se asetuksista. Sinut uudelleenohjataan asetuksiin nyt.", "message": "Lähettääksesi segmenttejä \"{0}\" kategorialla, sinun täytyy aktivoida se asetuksista. Sinut uudelleenohjataan asetuksiin nyt.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Varoitus: Tämäntyyppisiä segmenttejä voi olla aktiivisena enintään yksi. Usean lähettäminen aiheuttaa sen, että satunnainen segmentti näytetään."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Sinun täytyy valita kategoria kaikille segmenteille, joita olet lähettämässä!" "message": "Sinun täytyy valita kategoria kaikille segmenteille, joita olet lähettämässä!"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Erreur de connexion. Code d'erreur : " "message": "Erreur de connexion. Code d'erreur : "
}, },
"wantToSubmit": {
"message": "Voulez-vous soumettre vos segments pour la vidéo"
},
"clearTimes": { "clearTimes": {
"message": "Effacer les segments" "message": "Effacer les segments"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Passer {0} ?" "message": "Passer {0} ?"
}, },
"mute_category": {
"message": "Mute {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Passer à {0}?", "message": "Passer à {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} ignoré", "message": "{0} ignoré",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} mis en sourdine",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Sauté à {0}", "message": "Sauté à {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "התקבלה שגיאת חיבור. קוד השגיאה: " "message": "התקבלה שגיאת חיבור. קוד השגיאה: "
}, },
"wantToSubmit": {
"message": "האם אתה רוצה לדווח עבור סרטון שמספר הזיהוי שלו הוא"
},
"clearTimes": { "clearTimes": {
"message": "נקה מקטעים" "message": "נקה מקטעים"
}, },

View File

@@ -91,9 +91,6 @@
"connectionError": { "connectionError": {
"message": "Dogodija se greška u povezivanju. Kod pogreške: " "message": "Dogodija se greška u povezivanju. Kod pogreške: "
}, },
"wantToSubmit": {
"message": "Želiš li unijeti za video id"
},
"clearTimes": { "clearTimes": {
"message": "Očisti isječke" "message": "Očisti isječke"
}, },

View File

@@ -100,9 +100,6 @@
"connectionError": { "connectionError": {
"message": "Kapcsolódási probléma merült fel. Error kód: " "message": "Kapcsolódási probléma merült fel. Error kód: "
}, },
"wantToSubmit": {
"message": "Szeretné beküldeni a szegmenst ehhez a videóhoz:"
},
"clearTimes": { "clearTimes": {
"message": "Szegmensek törlése" "message": "Szegmensek törlése"
}, },

View File

@@ -97,9 +97,6 @@
"connectionError": { "connectionError": {
"message": "Kesalahan koneksi terjadi. Kode kesalahan: " "message": "Kesalahan koneksi terjadi. Kode kesalahan: "
}, },
"wantToSubmit": {
"message": "Apakah anda ingin mengirim untuk id video"
},
"clearTimes": { "clearTimes": {
"message": "Hapus Segmen" "message": "Hapus Segmen"
}, },

View File

@@ -4,20 +4,20 @@
"description": "Name of the extension." "description": "Name of the extension."
}, },
"Description": { "Description": {
"message": "Salta sponsorizzazioni, implorazioni di iscrizione ai canali e molto altro sui video di YouTube. Segnala gli sponsor sui video che guardi per salvare il tempo ad altri.", "message": "Salta sponsorizzazioni, richieste d'iscrizione ai canali e molto altro sui video di YouTube. Segnala gli sponsor sui video che guardi per salvare il tempo agli altri.",
"description": "Description of the extension." "description": "Description of the extension."
}, },
"400": { "400": {
"message": "Richiesta non valida" "message": "Richiesta non valida"
}, },
"429": { "429": {
"message": "Stai inviando troppi spezzoni per questo video, sei sicuro che ce ne siano così tanti?" "message": "Stai inviando troppi segmenti per questo video, sei sicuro che ce ne siano così tanti?"
}, },
"409": { "409": {
"message": "Questo spezzone è già stato inviato" "message": "Questo è già stato inviato"
}, },
"channelWhitelisted": { "channelWhitelisted": {
"message": "Canale aggiunto alla whitelist!" "message": "Canale aggiunto alla lista delle esclusioni!"
}, },
"Segment": { "Segment": {
"message": "segmento" "message": "segmento"
@@ -53,13 +53,13 @@
"message": "Salta ancora" "message": "Salta ancora"
}, },
"unmute": { "unmute": {
"message": "Riattiva microfono" "message": "Riattiva il microfono"
}, },
"paused": { "paused": {
"message": "In pausa" "message": "In pausa"
}, },
"manualPaused": { "manualPaused": {
"message": "Timer Fermato" "message": "Timer fermato"
}, },
"confirmMSG": { "confirmMSG": {
"message": "\n\nPer modificare o eliminare valori specifici, premi il pulsante delle informazioni o apri il popup cliccando l'icona dell'estensione nell'angolo in alto a destra." "message": "\n\nPer modificare o eliminare valori specifici, premi il pulsante delle informazioni o apri il popup cliccando l'icona dell'estensione nell'angolo in alto a destra."
@@ -68,7 +68,7 @@
"message": "Sei sicuro di volerlo cancellare?\n\n" "message": "Sei sicuro di volerlo cancellare?\n\n"
}, },
"Unknown": { "Unknown": {
"message": "Si è verificato un errore durante l'invio dello spezzone sponsorizzato, per favore riprova più tardi." "message": "Si è verificato un errore durante l'invio del segmento, per favore riprova più tardi."
}, },
"sponsorFound": { "sponsorFound": {
"message": "Questo video ha dei segmenti nel database!" "message": "Questo video ha dei segmenti nel database!"
@@ -77,10 +77,10 @@
"message": "Nessun segmento trovato" "message": "Nessun segmento trovato"
}, },
"sponsorStart": { "sponsorStart": {
"message": "Il Segmento Inizia Ora" "message": "Il segmento inizia qui"
}, },
"sponsorEnd": { "sponsorEnd": {
"message": "Il Segmento Termina Ora" "message": "Il segmento finisce ora"
}, },
"sponsorCancel": { "sponsorCancel": {
"message": "Annulla Creazione del Segmento" "message": "Annulla Creazione del Segmento"
@@ -92,7 +92,7 @@
"message": "Ricarica i segmenti" "message": "Ricarica i segmenti"
}, },
"success": { "success": {
"message": "Successo!" "message": "Ha funzionato!"
}, },
"voted": { "voted": {
"message": "Votato!" "message": "Votato!"
@@ -103,20 +103,17 @@
"connectionError": { "connectionError": {
"message": "Si è verificato un errore durante la connessione. Codice errore: " "message": "Si è verificato un errore durante la connessione. Codice errore: "
}, },
"wantToSubmit": {
"message": "Desideri inviare per l'id video"
},
"clearTimes": { "clearTimes": {
"message": "Pulisci Segmenti" "message": "Rimuovi i segmenti"
}, },
"openPopup": { "openPopup": {
"message": "Apri il Popup di SponsorBlock" "message": "Apri il popup di SponsorBlock"
}, },
"closePopup": { "closePopup": {
"message": "Chiudi il popup" "message": "Chiudi il popup"
}, },
"SubmitTimes": { "SubmitTimes": {
"message": "Invia Segmenti" "message": "Invia i segmenti"
}, },
"submitCheck": { "submitCheck": {
"message": "Sei sicuro di volerlo inviare?" "message": "Sei sicuro di volerlo inviare?"
@@ -128,7 +125,7 @@
"message": "Rimuovi il canale dalle eccezioni" "message": "Rimuovi il canale dalle eccezioni"
}, },
"voteOnTime": { "voteOnTime": {
"message": "Vota un Segmento" "message": "Vota un segmento"
}, },
"Submissions": { "Submissions": {
"message": "Contributi" "message": "Contributi"
@@ -150,19 +147,19 @@
"message": "Suggerimento: puoi configurare dei comandi rapidi nelle opzioni" "message": "Suggerimento: puoi configurare dei comandi rapidi nelle opzioni"
}, },
"clearTimesButton": { "clearTimesButton": {
"message": "Cancella Minutaggi" "message": "Cancella minutaggio"
}, },
"submitTimesButton": { "submitTimesButton": {
"message": "Invia Minutaggi" "message": "Invia minutaggio"
}, },
"publicStats": { "publicStats": {
"message": "Viene utilizzato nelle pagine delle statistiche pubbliche che mostrano quanto hai contribuito. Vedi" "message": "Questo è usato nelle pagine pubbliche delle statistiche per mostrare quanto hai contribuito. Vedilo"
}, },
"Username": { "Username": {
"message": "Nome utente" "message": "Nome utente"
}, },
"setUsername": { "setUsername": {
"message": "Imposta Username" "message": "Imposta nome utente"
}, },
"copyPublicID": { "copyPublicID": {
"message": "Copia UserID Pubblico" "message": "Copia UserID Pubblico"
@@ -177,19 +174,19 @@
"message": "Opzioni" "message": "Opzioni"
}, },
"showButtons": { "showButtons": {
"message": "Mostra i Pulsanti nel Lettore di YouTube" "message": "Mostra i pulsanti sul video"
}, },
"hideButtons": { "hideButtons": {
"message": "Nascondi i Pulsanti nel Lettore di YouTube" "message": "Nascondi i pulsanti sul video"
}, },
"hideButtonsDescription": { "hideButtonsDescription": {
"message": "Nasconde i pulsanti che appaiono nel lettore di YouTube per inviare spezzoni sponsorizzati. Capisco che può essere fastidioso per alcune\n persone. Invece di utilizzare quei pulsanti, è possibile utilizzare questo popup per inviare gli spezzoni sponsorizzati. Per nascondere l'avviso che appare, \nusa il bottone \"Non mostrare più\" nell'avviso. Potrai sempre abilitare nuovamente queste impostazioni in futuro." "message": "Nasconde i pulsanti che appaiono sul video per inviare i segmenti da nascondere."
}, },
"showInfoButton": { "showInfoButton": {
"message": "Mostra il Pulsante Informazioni nel Lettore di YouTube" "message": "Mostra il pulsante delle informazioni sopra al video"
}, },
"hideInfoButton": { "hideInfoButton": {
"message": "Nascondi il Pulsante Informazioni nel Lettore di YouTube" "message": "Nascondi il pulsante d'informazioni sopra al video"
}, },
"whatInfoButton": { "whatInfoButton": {
"message": "Questo è il pulsante che apre un popup nella pagina YouTube." "message": "Questo è il pulsante che apre un popup nella pagina YouTube."
@@ -198,19 +195,19 @@
"message": "Nascondi in automatico il Pulsante di Informazioni" "message": "Nascondi in automatico il Pulsante di Informazioni"
}, },
"hideDeleteButton": { "hideDeleteButton": {
"message": "Nascondi il Pulsante Elimina nel Lettore di YouTube" "message": "Nascondi il pulsante elimina"
}, },
"showDeleteButton": { "showDeleteButton": {
"message": "Mostra il Pulsante Elimina nel Lettore di YouTube" "message": "Mostra il pulsante elimina"
}, },
"whatDeleteButton": { "whatDeleteButton": {
"message": "Questo è il pulsante che ti permette di cancellare tutti gli spezzoni sponsorizzati nel lettore di YouTube." "message": "Questo è il pulsante che ti permette di cancellare tutti i segmenti non inviati del video attuale."
}, },
"enableViewTracking": { "enableViewTracking": {
"message": "Attiva Monitoraggio Salti" "message": "Attiva il conteggio dei salti"
}, },
"whatViewTracking": { "whatViewTracking": {
"message": "Questa funzionalità tiene traccia dei segmenti che hai saltato, per far sapere agli utenti quanto il loro contributo abbia aiutato gli altri e sia stato utilizzato come metrica insieme ai voti positivi, per garantire che lo spam non entri nel database. L'estensione invierà un messaggio al server ogni volta che salterai un segmento. Si spera che la maggior parte delle persone non modifichino questa impostazione, in modo da non intaccare l'accuratezza dei numeri di visualizzazione. :)" "message": "Questa funzionalità tiene traccia dei segmenti che hai saltato per far sapere agli utenti quanto il loro contributo abbia aiutato gli altri e anche come statistica, insieme ai voti positivi, per garantire che lo spam non entri nel database. L'estensione invierà un messaggio al server ogni volta che salterai un segmento. Si spera che la maggior parte delle persone non modifichino questa impostazione, in modo da non intaccare l'accuratezza dei numeri di visualizzazione. :)"
}, },
"enableViewTrackingInPrivate": { "enableViewTrackingInPrivate": {
"message": "Abilita il conteggio dei salti nelle schede private/anonime" "message": "Abilita il conteggio dei salti nelle schede private/anonime"
@@ -222,13 +219,13 @@
"message": "Invece di richiedere i segmenti dal server utilizzando l'ID del video, viene inviato un hash dei primi 4 caratteri dell'ID. Questo server invierà i dati per tutti i video con hash simili." "message": "Invece di richiedere i segmenti dal server utilizzando l'ID del video, viene inviato un hash dei primi 4 caratteri dell'ID. Questo server invierà i dati per tutti i video con hash simili."
}, },
"enableRefetchWhenNotFound": { "enableRefetchWhenNotFound": {
"message": "Ricarica I Segmenti Su Nuovi Video" "message": "Ricarica i segmenti su nuovi video"
}, },
"whatRefetchWhenNotFound": { "whatRefetchWhenNotFound": {
"message": "Se il video è nuovo, e non risultano esserci segmenti, continueremo a cercarne di nuovi ogni pochi minuti." "message": "Se il video è nuovo, e non risultano esserci segmenti, continueremo a cercarne di nuovi ogni pochi minuti."
}, },
"showNotice": { "showNotice": {
"message": "Mostra di Nuovo l'Avviso" "message": "Mostra di nuovo l'avviso"
}, },
"showSkipNotice": { "showSkipNotice": {
"message": "Mostra Avviso Dopo Aver Saltato un Segmento" "message": "Mostra Avviso Dopo Aver Saltato un Segmento"
@@ -249,15 +246,15 @@
"message": "Tutti i Salta Avvisi Offuscati" "message": "Tutti i Salta Avvisi Offuscati"
}, },
"longDescription": { "longDescription": {
"message": "SponsorBlock ti consente di saltare sponsorizzazioni, introduzioni, conclusioni, promemoria di iscrizione e altre componenti fastidiose dei video su YouTube. SponsorBlock è un'estensione per browser in crowdsourcing, che consente a chiunque di inviare l'ora di inizio e di fine dei segmenti sponsorizzati e altri segmenti video su YouTube. Quando una persona invia queste informazioni, chiunque altro in possesso di questa estensione sarà in grado di saltare direttamente il segmento sponsorizzato. È possibile saltare anche le sezioni non musicali dei video musicali.", "message": "SponsorBlock ti consente di saltare sponsorizzazioni, introduzioni, conclusioni, promemoria di iscrizione e altri elementi fastidiosi dai video YouTube. SponsorBlock è un'estensione per browser di crowdsourcing, cioè che consente a chiunque di inviare l'ora di inizio e di fine dei segmenti sponsorizzati e di altro tipo. Quando una persona invia queste informazioni, chiunque altro in possesso di questa estensione sarà in grado di saltare automaticamente il segmento sponsorizzato. È possibile saltare anche le sezioni non musicali dei video musicali.",
"description": "Full description of the extension on the store pages." "description": "Full description of the extension on the store pages."
}, },
"website": { "website": {
"message": "Sito Web", "message": "Sito web",
"description": "Used on Firefox Store Page" "description": "Used on Firefox Store Page"
}, },
"sourceCode": { "sourceCode": {
"message": "Codice Sorgente", "message": "Codice sorgente",
"description": "Used on Firefox Store Page" "description": "Used on Firefox Store Page"
}, },
"noticeUpdate": { "noticeUpdate": {
@@ -281,7 +278,7 @@
"message": "Seleziona un tasto premendolo sulla tastiera" "message": "Seleziona un tasto premendolo sulla tastiera"
}, },
"keybindDescriptionComplete": { "keybindDescriptionComplete": {
"message": "L'associazione di tasti è stata impostata a: " "message": "Il comando rapido è stato impostato come: "
}, },
"0": { "0": {
"message": "Timeout della connessione. Controlla la tua connessione a Internet. Se internet sta funzionando, il server è probabilmente sovraccarico oppure giù." "message": "Timeout della connessione. Controlla la tua connessione a Internet. Se internet sta funzionando, il server è probabilmente sovraccarico oppure giù."
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Vuoi saltare {0}?" "message": "Vuoi saltare {0}?"
}, },
"mute_category": {
"message": "Silenziare {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Saltare a {0}?", "message": "Saltare a {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} Saltato", "message": "{0} Saltato",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} silenziato",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Saltato a {0}", "message": "Saltato a {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -611,7 +615,7 @@
"message": "Salta automaticamente tutti i segmenti quando c'è un segmento non musicale" "message": "Salta automaticamente tutti i segmenti quando c'è un segmento non musicale"
}, },
"muteSegments": { "muteSegments": {
"message": "Consenti i segmenti che silenziano l'audio invece di saltare" "message": "Silenzia i segmenti invece di saltarli, quando possibile"
}, },
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "Il tuo colore è formattato in modo errato. Dovrebbe essere un codice esadecimale a 3 o 6 cifre con un segno numerico iniziale." "message": "Il tuo colore è formattato in modo errato. Dovrebbe essere un codice esadecimale a 3 o 6 cifre con un segno numerico iniziale."
@@ -652,6 +656,9 @@
"message": "Per inviare segmenti della categoria \"{0}\", è necessario abilitarlo nelle opzioni. Sarai reindirizzato alle opzioni.", "message": "Per inviare segmenti della categoria \"{0}\", è necessario abilitarlo nelle opzioni. Sarai reindirizzato alle opzioni.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Attenzione: questo tipo di segmento può essere presente una sola volta. Inviarne più di uno causerà la visualizzazione casuale di uno solo."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Devi selezionare una categoria per tutti i segmenti che stai inviando!" "message": "Devi selezionare una categoria per tutti i segmenti che stai inviando!"
}, },
@@ -735,7 +742,7 @@
"message": "Nascondi per sempre" "message": "Nascondi per sempre"
}, },
"warningChatInfo": { "warningChatInfo": {
"message": "Hai ricevuto un ammonimento and non puoi inviare segmenti temporaneamente. Ciò significa che abbiamo notato che stavi commettendo alcuni errori comuni senza scopo malevolo, e vogliamo che tu ricontrollassi le regole. Puoi anche partecipare a questa chat su discord.gg/SponsorBlock o matrix.to/#/#sponsor:ajay.app" "message": "Hai ricevuto un avvertimento e non puoi temporaneamente inviare i segmenti. Questo significa che abbiamo notato che stavi commettendo alcuni errori comuni non malevoli, e vogliamo solo chiarire le regole. Puoi anche unirti a questa chat usando discord.gg/SponsorBlock o matrix.to/#/#sponsor:ajay.app"
}, },
"voteRejectedWarning": { "voteRejectedWarning": {
"message": "Voto rifiutato a causa di un ammonimento. Clicca per aprire una chat per risolverlo, oppure torna dopo quando hai tempo.", "message": "Voto rifiutato a causa di un ammonimento. Clicca per aprire una chat per risolverlo, oppure torna dopo quando hai tempo.",

View File

@@ -100,9 +100,6 @@
"connectionError": { "connectionError": {
"message": "接続エラーが発生しました。 エラーコード: " "message": "接続エラーが発生しました。 エラーコード: "
}, },
"wantToSubmit": {
"message": "次の動画IDで提出します:"
},
"clearTimes": { "clearTimes": {
"message": "セグメントを消去" "message": "セグメントを消去"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "서버 오류가 발생하였습니다. 오류 코드: " "message": "서버 오류가 발생하였습니다. 오류 코드: "
}, },
"wantToSubmit": {
"message": "영상 id를 제출하시겠습니까"
},
"clearTimes": { "clearTimes": {
"message": "구간 제거" "message": "구간 제거"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "{0} 을(를) 건너뛰겠어요?" "message": "{0} 을(를) 건너뛰겠어요?"
}, },
"mute_category": {
"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)"
@@ -319,6 +319,10 @@
"message": "{0} 건너뜀", "message": "{0} 건너뜀",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} 음소거됨",
"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)"
@@ -611,7 +615,7 @@
"message": "음악이 아닌 구간이 있을 때는 모든 구간 자동 건너뛰기" "message": "음악이 아닌 구간이 있을 때는 모든 구간 자동 건너뛰기"
}, },
"muteSegments": { "muteSegments": {
"message": "구간을 건너뛰지 않고 음소거 처리하도록 합니다" "message": "구간을 건너뛰지 않고 음소거 처리"
}, },
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "올바르지 않은 색상 코드입니다. 색상 코드는 샵 (#) 기호로 시작하여 3자리 또는 6자리의 16진수로 구성되어야 합니다." "message": "올바르지 않은 색상 코드입니다. 색상 코드는 샵 (#) 기호로 시작하여 3자리 또는 6자리의 16진수로 구성되어야 합니다."
@@ -652,6 +656,9 @@
"message": "\"{0}\" 카테고리의 세그먼트를 제출하려면 설정에서 활성화 해주셔야 합니다. 지금 설정으로 이동합니다.", "message": "\"{0}\" 카테고리의 세그먼트를 제출하려면 설정에서 활성화 해주셔야 합니다. 지금 설정으로 이동합니다.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "경고: 이 유형의 세그먼트는 한 번에 최대 하나씩 활성화될 수 있습니다. 여러 개를 제출하면 무작위로 표시됩니다."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "제출 해야하는 모든 구간의 카테고리를 설정해야합니다!" "message": "제출 해야하는 모든 구간의 카테고리를 설정해야합니다!"
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "ഒരു കണക്ഷൻ പിശക് സംഭവിച്ചു. പിശക് കോഡ്: " "message": "ഒരു കണക്ഷൻ പിശക് സംഭവിച്ചു. പിശക് കോഡ്: "
}, },
"wantToSubmit": {
"message": "വീഡിയോ ഐഡിക്ക് സമർപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ"
},
"clearTimes": { "clearTimes": {
"message": "സെഗ്‌മെന്റുകൾ മായ്‌ക്കുക" "message": "സെഗ്‌മെന്റുകൾ മായ്‌ക്കുക"
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "Ralat sambungan telah berlaku. Kod salah: " "message": "Ralat sambungan telah berlaku. Kod salah: "
}, },
"wantToSubmit": {
"message": "Adakah anda ingin menghantar untuk id video"
},
"clearTimes": { "clearTimes": {
"message": "Kosongkan Segmen" "message": "Kosongkan Segmen"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Er is een verbindingsfout opgetreden. Foutcode: " "message": "Er is een verbindingsfout opgetreden. Foutcode: "
}, },
"wantToSubmit": {
"message": "Wilt u indienen voor video-id"
},
"clearTimes": { "clearTimes": {
"message": "Segmenten verwijderen" "message": "Segmenten verwijderen"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "{0} overslaan?" "message": "{0} overslaan?"
}, },
"mute_category": {
"message": "{0} dempen?"
},
"skip_to_category": { "skip_to_category": {
"message": "Overslaan naar {0}?", "message": "Overslaan naar {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} overgeslagen", "message": "{0} overgeslagen",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} gedempt",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Overgeslagen naar {0}", "message": "Overgeslagen naar {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -652,6 +656,9 @@
"message": "Om segmenten met de categorie \"{0}\" in te dienen, moet u deze in de opties inschakelen. U wordt nu doorgestuurd naar de opties.", "message": "Om segmenten met de categorie \"{0}\" in te dienen, moet u deze in de opties inschakelen. U wordt nu doorgestuurd naar de opties.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Waarschuwing: dit type segment kan maximaal één keer tegelijk actief zijn. Meerdere segmenten indienen zal weergave van een willekeurig segment veroorzaken."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "U moet een categorie selecteren voor alle segmenten die u indient!" "message": "U moet een categorie selecteren voor alle segmenten die u indient!"
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "En tilkoblingsfeil har oppstått. Feilkode: " "message": "En tilkoblingsfeil har oppstått. Feilkode: "
}, },
"wantToSubmit": {
"message": "Vil du sende inn for video-ID-en"
},
"clearTimes": { "clearTimes": {
"message": "Tøm segmenter" "message": "Tøm segmenter"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Wystąpił błąd połączenia. Kod błędu: " "message": "Wystąpił błąd połączenia. Kod błędu: "
}, },
"wantToSubmit": {
"message": "Czy chcesz wysłać dla filmu o id"
},
"clearTimes": { "clearTimes": {
"message": "Wyczyść segmenty" "message": "Wyczyść segmenty"
}, },
@@ -233,9 +230,21 @@
"showSkipNotice": { "showSkipNotice": {
"message": "Pokaż informację po pominięciu segmentu" "message": "Pokaż informację po pominięciu segmentu"
}, },
"noticeVisibilityMode0": {
"message": "Duże powiadomienia o przewinięciu"
},
"noticeVisibilityMode1": { "noticeVisibilityMode1": {
"message": "Małe powiadomienia o automatycznym przewijaniu" "message": "Małe powiadomienia o automatycznym przewijaniu"
}, },
"noticeVisibilityMode2": {
"message": "Małe powiadomienia o przewinięciu"
},
"noticeVisibilityMode3": {
"message": "Znikające powiadomienia o automatycznym przewijaniu"
},
"noticeVisibilityMode4": {
"message": "Znikające powiadomienia o przewijaniu"
},
"longDescription": { "longDescription": {
"message": "SponsorBlock pozwala pomijać sponsorów, intra, outra, przypomnienia o subskrypcjach i inne irytujące fragmenty filmów na YouTube. SponsorBlock jest opartym na crowdsourcingu rozszerzeniem do przeglądarki, które pozwala każdemu zgłosić początek i koniec segmentów sponsorowanych oraz innych segmentów w filmach na YouTube. Kiedy ktoś już zamieści te informacje, wszyscy pozostali z tym rozszerzeniem będą pomijać segment sponsorowany. Możesz również pomijać fragmenty teledysków bez muzyki.", "message": "SponsorBlock pozwala pomijać sponsorów, intra, outra, przypomnienia o subskrypcjach i inne irytujące fragmenty filmów na YouTube. SponsorBlock jest opartym na crowdsourcingu rozszerzeniem do przeglądarki, które pozwala każdemu zgłosić początek i koniec segmentów sponsorowanych oraz innych segmentów w filmach na YouTube. Kiedy ktoś już zamieści te informacje, wszyscy pozostali z tym rozszerzeniem będą pomijać segment sponsorowany. Możesz również pomijać fragmenty teledysków bez muzyki.",
"description": "Full description of the extension on the store pages." "description": "Full description of the extension on the store pages."
@@ -299,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Pominąć {0}?" "message": "Pominąć {0}?"
}, },
"mute_category": {
"message": "Wyciszyć {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Przejść do {0}?", "message": "Przejść do {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -307,6 +319,10 @@
"message": "Pominięto {0}", "message": "Pominięto {0}",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "Wyciszono {0}",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Przewinięto do {0}", "message": "Przewinięto do {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -359,6 +375,9 @@
"changeUserID": { "changeUserID": {
"message": "Importuj/Eksportuj swój identyfikator użytkownika" "message": "Importuj/Eksportuj swój identyfikator użytkownika"
}, },
"whatChangeUserID": {
"message": "Powinno pozostać prywatne. Jest to niczym hasło i nie powinno być nikomu udostępniane. Przy jego użyciu może się pod ciebie podszywać. Jeśli szukasz publicznego ID użytkownika, kliknij ikonę schowka w wyskakującym oknie."
},
"setUserID": { "setUserID": {
"message": "Ustaw identyfikator użytkownika" "message": "Ustaw identyfikator użytkownika"
}, },
@@ -560,7 +579,10 @@
"message": "Bez muzyki" "message": "Bez muzyki"
}, },
"category_poi_highlight": { "category_poi_highlight": {
"message": "Podświetlone" "message": "Wyróżnione"
},
"category_poi_highlight_description": {
"message": "Część filmu, która interesuje większość osób. Podobne do komentarzy typu „Filmik zaczyna się od x”."
}, },
"category_livestream_messages": { "category_livestream_messages": {
"message": "Transmisja live: Dotacja/Czytanie wiadomości" "message": "Transmisja live: Dotacja/Czytanie wiadomości"
@@ -586,9 +608,15 @@
"manualSkip_POI": { "manualSkip_POI": {
"message": "Zapytaj, gdy wideo się załaduje" "message": "Zapytaj, gdy wideo się załaduje"
}, },
"showOverlay_POI": {
"message": "Pokaż na pasku"
},
"autoSkipOnMusicVideos": { "autoSkipOnMusicVideos": {
"message": "Automatycznie pomiń wszystkie segmenty, gdy istnieje segment niemuzyczny" "message": "Automatycznie pomiń wszystkie segmenty, gdy istnieje segment niemuzyczny"
}, },
"muteSegments": {
"message": "Zezwalaj na segmenty, które wyciszą dźwięk zamiast pomijać"
},
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "Nieprawidłowy format koloru. Powinien to być zapis szesnastkowy (heksadecymalny) składający się z 3 lub 6 znaków poprzedzonych kratką (#)." "message": "Nieprawidłowy format koloru. Powinien to być zapis szesnastkowy (heksadecymalny) składający się z 3 lub 6 znaków poprzedzonych kratką (#)."
}, },
@@ -628,6 +656,9 @@
"message": "Aby przesyłać segmenty o kategorii „{0}”, musisz ją włączyć w opcjach. Za chwilę nastąpi przekierowanie do ustawień.", "message": "Aby przesyłać segmenty o kategorii „{0}”, musisz ją włączyć w opcjach. Za chwilę nastąpi przekierowanie do ustawień.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Ostrzeżenie: Ten typ segmentu, może być maksymalnie jeden. Przesyłanie kilku na raz spowoduje, że pojawi się losowy."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Musisz wybrać kategorię dla każdego segmentu, który zamieszczasz!" "message": "Musisz wybrać kategorię dla każdego segmentu, który zamieszczasz!"
}, },
@@ -717,33 +748,72 @@
"message": "Głosowanie odrzucone z powodu ostrzeżenia. Kliknij, aby otworzyć czat w celu rozwiązania problemu lub wróć później, gdy będziesz miał czas.", "message": "Głosowanie odrzucone z powodu ostrzeżenia. Kliknij, aby otworzyć czat w celu rozwiązania problemu lub wróć później, gdy będziesz miał czas.",
"description": "This is an integrated chat panel that will appearing allowing them to talk to the Discord/Matrix chat without leaving their browser." "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": "Dotacje"
},
"hideDonationLink": {
"message": "Ukryj opcję dotacji"
},
"helpPageThanksForInstalling": { "helpPageThanksForInstalling": {
"message": "Dziękujemy za zainstalowanie SponsorBlock." "message": "Dziękujemy za zainstalowanie SponsorBlock."
}, },
"helpPageReviewOptions": {
"message": "Przejrzyj poniższe opcje"
},
"helpPageFeatureDisclaimer": { "helpPageFeatureDisclaimer": {
"message": "Wiele funkcji jest domyślnie wyłączonych. Jeśli chcesz pomijać intra, outra, używać Invidious, itp., włącz je poniżej. Możesz również ukryć/pokazać elementy interfejsu użytkownika." "message": "Wiele funkcji jest domyślnie wyłączonych. Jeśli chcesz pomijać intra, outra, używać Invidious, itp., włącz je poniżej. Możesz również ukryć/pokazać elementy interfejsu użytkownika."
}, },
"helpPageHowSkippingWorks": { "helpPageHowSkippingWorks": {
"message": "Jak działa pomijanie" "message": "Jak działa pomijanie"
}, },
"helpPageHowSkippingWorks1": {
"message": "Segmenty filmu zostaną automatycznie pominięte, jeśli znajdują się w bazie danych. Możesz kliknąć na ikonę rozszerzenia, aby podejrzeć, czym one są."
},
"helpPageHowSkippingWorks2": {
"message": "Za każdym razem, gdy pominiesz segment, otrzymasz powiadomienie. Jeśli moment nie wydaje się być poprawny, kliknij łapkę w dół! Możesz również głosować w okienku pop-up."
},
"Submitting": { "Submitting": {
"message": "Wysyłanie" "message": "Wysyłanie"
}, },
"helpPageSubmitting1": { "helpPageSubmitting1": {
"message": "Wysyłanie może być wykonane w wyskakującym okienku, poprzez kliknięcie przycisku \"Początek segmentu\" lub za pomocą przycisków na odtwarzaczu wideo." "message": "Wysyłanie może być wykonane w wyskakującym okienku, poprzez kliknięcie przycisku \"Początek segmentu\" lub za pomocą przycisków na odtwarzaczu wideo."
}, },
"helpPageSubmitting2": {
"message": "Kliknięcie przycisku odtwarzania wskazuje początek segmentu a kliknięcie ikony stop wskazuje koniec segmentu. Możesz przygotować wielu segmentów przed wysłaniem. Aby wysłać kliknij przycisk potwierdzający, a aby usunąć - na śmietnik."
},
"Editing": { "Editing": {
"message": "Edytowanie" "message": "Edytowanie"
}, },
"helpPageEditing1": {
"message": "Jeśli się pomyliłeś, możesz edytować i usuwać swoje segmenty poprzez kliknięcie przycisku ze strzałką w górę."
},
"helpPageTooSlow": {
"message": "Zbyt wolno"
},
"helpPageTooSlow1": {
"message": "Istnieją skróty klawiszowe, jeśli chcesz ich używać. Naciśnij klawisz średnika, aby wskazać początek/koniec segmentu sponsora i kliknij w apostrof, aby przesłać. Można je zmienić w opcjach. Jeśli nie używasz QWERTY, prawdopodobnie powinieneś zmienić skrót klawiszowy."
},
"helpPageCopyOfDatabase": {
"message": "Czy mogę otrzymać kopię bazy danych? Co się stanie, jeśli przestaniecie istnieć?"
},
"helpPageCopyOfDatabase1": { "helpPageCopyOfDatabase1": {
"message": "Baza danych jest publiczna i dostępna na stronie" "message": "Baza danych jest publiczna i dostępna na stronie"
}, },
"helpPageCopyOfDatabase2": {
"message": "Kod źródłowy jest dostępny. Tak więc, nawet jeśli coś się ze mną stanie, wasze zgłoszenia nie zostaną utracone."
},
"helpPageNews": {
"message": "Wiadomości i jak to jest zrobione"
},
"helpPageSourceCode": { "helpPageSourceCode": {
"message": "Gdzie mogę otrzymać kod źródłowy?" "message": "Gdzie mogę otrzymać kod źródłowy?"
}, },
"Credits": { "Credits": {
"message": "Autorzy" "message": "Autorzy"
}, },
"highlightNewFeature": {
"message": "Nowość! Przejdź do interesującej części filmu jednym kliknięciem z nową kategorią wyróżnione"
},
"LearnMore": { "LearnMore": {
"message": "Dowiedz się więcej" "message": "Dowiedz się więcej"
} }

View File

@@ -52,6 +52,9 @@
"reskip": { "reskip": {
"message": "Pular novamente" "message": "Pular novamente"
}, },
"unmute": {
"message": "Ativar som"
},
"paused": { "paused": {
"message": "Pausado" "message": "Pausado"
}, },
@@ -100,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Ocorreu um erro de conexão. Código de erro: " "message": "Ocorreu um erro de conexão. Código de erro: "
}, },
"wantToSubmit": {
"message": "Deseja enviar para o vídeo com id"
},
"clearTimes": { "clearTimes": {
"message": "Limpar Segmentos" "message": "Limpar Segmentos"
}, },
@@ -161,6 +161,9 @@
"setUsername": { "setUsername": {
"message": "Definir nome de usuário" "message": "Definir nome de usuário"
}, },
"copyPublicID": {
"message": "Copiar ID Pública de Usuário"
},
"discordAdvert": { "discordAdvert": {
"message": "Junte-se ao servidor do discord oficial para dar dicas e sugestões!" "message": "Junte-se ao servidor do discord oficial para dar dicas e sugestões!"
}, },
@@ -299,9 +302,15 @@
"skip": { "skip": {
"message": "Pular" "message": "Pular"
}, },
"mute": {
"message": "Silenciar"
},
"skip_category": { "skip_category": {
"message": "Pular {0}?" "message": "Pular {0}?"
}, },
"mute_category": {
"message": "Silenciar {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Pular para {0}?", "message": "Pular para {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -310,6 +319,10 @@
"message": "{0} Ignorado", "message": "{0} Ignorado",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} Silenciado",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Pulado para {0}", "message": "Pulado para {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -362,6 +375,9 @@
"changeUserID": { "changeUserID": {
"message": "Importar/Exportar seu ID de usuário" "message": "Importar/Exportar seu ID de usuário"
}, },
"whatChangeUserID": {
"message": "Esta informação deve se mantida privada. Ela é como uma senha e não deve ser compartilhada. Outras pessoas poderão se passar por você caso obtenham acesso. Se estiver procurando por sua ID Pública de Usuário, clique no ícone de prancheta no popup."
},
"setUserID": { "setUserID": {
"message": "Definir ID de usuário" "message": "Definir ID de usuário"
}, },
@@ -598,6 +614,9 @@
"autoSkipOnMusicVideos": { "autoSkipOnMusicVideos": {
"message": "Pular automaticamente todos os segmentos quando há um segmento que não é música" "message": "Pular automaticamente todos os segmentos quando há um segmento que não é música"
}, },
"muteSegments": {
"message": "Permitir segmentos que silenciem o áudio ao invés de pular"
},
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "Sua cor está formatada incorretamente. Deve ser um código hexadecimal de 3 ou 6 dígitos com uma cerquilha (hashtag) no início." "message": "Sua cor está formatada incorretamente. Deve ser um código hexadecimal de 3 ou 6 dígitos com uma cerquilha (hashtag) no início."
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "A apărut o eroare de conexiune. Cod de eroare: " "message": "A apărut o eroare de conexiune. Cod de eroare: "
}, },
"wantToSubmit": {
"message": "Doriți să trimiteți pentru id video"
},
"clearTimes": { "clearTimes": {
"message": "Curăță segmentele" "message": "Curăță segmentele"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Ошибка соединения. Код ошибки: " "message": "Ошибка соединения. Код ошибки: "
}, },
"wantToSubmit": {
"message": "Вы хотите отправить сегменты для видео с id"
},
"clearTimes": { "clearTimes": {
"message": "Очистить сегменты" "message": "Очистить сегменты"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Пропустить {0}?" "message": "Пропустить {0}?"
}, },
"mute_category": {
"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)"
@@ -319,6 +319,10 @@
"message": "Пропущено: {0}", "message": "Пропущено: {0}",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} заглушен",
"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)"
@@ -652,6 +656,9 @@
"message": "Чтобы отправить сегменты категории \"{0}\", вы должны включить её в настройках. Сейчас вы будете туда перенаправлены.", "message": "Чтобы отправить сегменты категории \"{0}\", вы должны включить её в настройках. Сейчас вы будете туда перенаправлены.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Предупреждение: Только один сегмент данного типа может быть активным. Отправка нескольких приведёт к отображению только одного случайно выбранного."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Вы должны выбрать категорию для всех сегментов, которые вы отправляете!" "message": "Вы должны выбрать категорию для всех сегментов, которые вы отправляете!"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Nastala chyba pripojenia. Kód chyby: " "message": "Nastala chyba pripojenia. Kód chyby: "
}, },
"wantToSubmit": {
"message": "Chcete odoslať segmenty pre video id"
},
"clearTimes": { "clearTimes": {
"message": "Zmazať segmenty" "message": "Zmazať segmenty"
}, },
@@ -296,6 +293,9 @@
"skip_category": { "skip_category": {
"message": "Preskočiť {0}?" "message": "Preskočiť {0}?"
}, },
"mute_category": {
"message": "Stíšiť {0}?"
},
"skip_to_category": { "skip_to_category": {
"message": "Preskočiť na {0}?", "message": "Preskočiť na {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -304,6 +304,10 @@
"message": "{0} preskočené", "message": "{0} preskočené",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} stíšený",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Preskočené na {0}", "message": "Preskočené na {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -637,6 +641,9 @@
"message": "Pre odoslanie segmentov z kategórie \"{0}\" ju musíte zapnúť v nastaveniach. Teraz tam budete presmerovaní.", "message": "Pre odoslanie segmentov z kategórie \"{0}\" ju musíte zapnúť v nastaveniach. Teraz tam budete presmerovaní.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Varovanie: Tento typ segmentu môže byť aktívny len jeden. Odoslanie viacerých spôsobí zobrazenie náhodného z nich."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Musíte zvoliť kategóriu pre každý segment!" "message": "Musíte zvoliť kategóriu pre každý segment!"
}, },

View File

@@ -1 +1,30 @@
{} {
"Options": {
"message": "Подешавања"
},
"sourceCode": {
"message": "Изворни код",
"description": "Used on Firefox Store Page"
},
"errorCode": {
"message": "Код грешке: "
},
"skip": {
"message": "Прескочи"
},
"add": {
"message": "Додај"
},
"save": {
"message": "Сачувај"
},
"cancel": {
"message": "Откажи"
},
"edit": {
"message": "Измени"
},
"help": {
"message": "Помоћ"
}
}

View File

@@ -53,7 +53,7 @@
"message": "Hoppa över igen" "message": "Hoppa över igen"
}, },
"unmute": { "unmute": {
"message": "Ljud" "message": "Ljud"
}, },
"paused": { "paused": {
"message": "Pausad" "message": "Pausad"
@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Anslutningsfel. Felkod: " "message": "Anslutningsfel. Felkod: "
}, },
"wantToSubmit": {
"message": "Vill du skicka in för video-ID"
},
"clearTimes": { "clearTimes": {
"message": "Rensa segmenten" "message": "Rensa segmenten"
}, },
@@ -306,11 +303,14 @@
"message": "Hoppa över" "message": "Hoppa över"
}, },
"mute": { "mute": {
"message": "Ljud av" "message": "Ljudlös"
}, },
"skip_category": { "skip_category": {
"message": "Hoppa över {0}?" "message": "Hoppa över {0}?"
}, },
"mute_category": {
"message": "Gör {0} ljudlös?"
},
"skip_to_category": { "skip_to_category": {
"message": "Hoppa till {0}?", "message": "Hoppa till {0}?",
"description": "Used for skipping to things (Skip to Highlight)" "description": "Used for skipping to things (Skip to Highlight)"
@@ -319,6 +319,10 @@
"message": "{0} överhoppad", "message": "{0} överhoppad",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} ljudlös",
"description": "Example: Sponsor Muted"
},
"skipped_to_category": { "skipped_to_category": {
"message": "Hoppat till {0}", "message": "Hoppat till {0}",
"description": "Used for skipping to things (Skipped to Highlight)" "description": "Used for skipping to things (Skipped to Highlight)"
@@ -652,6 +656,9 @@
"message": "För att skicka segment med kategorin \"{0}\" måste du först aktivera det i alternativen. Du kommer nu att bli omdirigerad till alternativen.", "message": "För att skicka segment med kategorin \"{0}\" måste du först aktivera det i alternativen. Du kommer nu att bli omdirigerad till alternativen.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Varning: Denna typ av segment kan endast ha ett segment aktivt åt gången. Skickas flera segment kommer en av dem att visas slumpmässigt."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Du måste välja en kategori för alla segment du skickar in!" "message": "Du måste välja en kategori för alla segment du skickar in!"
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "இணைப்பு பிழை ஏற்பட்டது. பிழை குறியீடு: " "message": "இணைப்பு பிழை ஏற்பட்டது. பிழை குறியீடு: "
}, },
"wantToSubmit": {
"message": "வீடியோ ஐடிக்கு நீங்கள் சமர்ப்பிக்க விரும்புகிறீர்களா"
},
"clearTimes": { "clearTimes": {
"message": "பிரிவுகளை அழிக்கவும்" "message": "பிரிவுகளை அழிக்கவும்"
}, },

View File

@@ -94,9 +94,6 @@
"connectionError": { "connectionError": {
"message": "కనెక్షన్ లోపం సంభవించింది. లోపం కోడ్: " "message": "కనెక్షన్ లోపం సంభవించింది. లోపం కోడ్: "
}, },
"wantToSubmit": {
"message": "మీరు వీడియో ఐడి కోసం సమర్పించాలనుకుంటున్నారా"
},
"clearTimes": { "clearTimes": {
"message": "విభాగాలను క్లియర్ చేయండి" "message": "విభాగాలను క్లియర్ చేయండి"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Bağlantı hatası oluştu. Hata kodu: " "message": "Bağlantı hatası oluştu. Hata kodu: "
}, },
"wantToSubmit": {
"message": "Bu video kimliği için göndermek istiyor musun"
},
"clearTimes": { "clearTimes": {
"message": "Kısımları temizle" "message": "Kısımları temizle"
}, },

View File

@@ -103,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "Помилка з'єднання. Код помилки: " "message": "Помилка з'єднання. Код помилки: "
}, },
"wantToSubmit": {
"message": "Ви хочете надіслати сегменти для відео з id"
},
"clearTimes": { "clearTimes": {
"message": "Очистити сегменти" "message": "Очистити сегменти"
}, },
@@ -311,6 +308,9 @@
"skip_category": { "skip_category": {
"message": "Пропустити {0}?" "message": "Пропустити {0}?"
}, },
"mute_category": {
"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)"
@@ -319,6 +319,10 @@
"message": "{0} Пропущено", "message": "{0} Пропущено",
"description": "Example: Sponsor Skipped" "description": "Example: Sponsor Skipped"
}, },
"muted": {
"message": "{0} Вимкнений звук",
"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)"
@@ -575,7 +579,7 @@
"message": "Без музики" "message": "Без музики"
}, },
"category_poi_highlight": { "category_poi_highlight": {
"message": "Основные" "message": "Основне"
}, },
"category_poi_highlight_description": { "category_poi_highlight_description": {
"message": "Часть видео, которую ищут большинство людей. Аналогично комментарию «Видео начинается с X:XX»." "message": "Часть видео, которую ищут большинство людей. Аналогично комментарию «Видео начинается с X:XX»."
@@ -652,6 +656,9 @@
"message": "Щоб надіслати сегменти категорії \"{0}\", ви повинні включити її в налаштуваннях. Зараз ви будете туди перенаправлені.", "message": "Щоб надіслати сегменти категорії \"{0}\", ви повинні включити її в налаштуваннях. Зараз ви будете туди перенаправлені.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Увага: Сегменти даного типу можуть бути активними лише по одному. Надсилання декількох призведе до відображення випадкового сегмента."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Ви повинні обрати категорію для всіх сегментів, які ви відправляєте!" "message": "Ви повинні обрати категорію для всіх сегментів, які ви відправляєте!"
}, },

View File

@@ -52,6 +52,9 @@
"reskip": { "reskip": {
"message": "Bỏ qua lại" "message": "Bỏ qua lại"
}, },
"unmute": {
"message": "Bật tiếng"
},
"paused": { "paused": {
"message": "Tạm dừng" "message": "Tạm dừng"
}, },
@@ -100,9 +103,6 @@
"connectionError": { "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ã của lỗi: "
}, },
"wantToSubmit": {
"message": "Bạn có muốn đăng đoạn quảng cáo cho video có mã id"
},
"clearTimes": { "clearTimes": {
"message": "Xóa đoạn quảng cáo" "message": "Xóa đoạn quảng cáo"
}, },
@@ -302,6 +302,9 @@
"skip": { "skip": {
"message": "Bỏ qua" "message": "Bỏ qua"
}, },
"mute": {
"message": "Ngắt tiếng"
},
"skip_category": { "skip_category": {
"message": "Bỏ qua {0}?" "message": "Bỏ qua {0}?"
}, },
@@ -353,6 +356,9 @@
"changeUserID": { "changeUserID": {
"message": "Nhập/Xuất mã người dùng của bạn" "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."
},
"setUserID": { "setUserID": {
"message": "Đặt mã người dùng" "message": "Đặt mã người dùng"
}, },
@@ -553,6 +559,12 @@
"category_music_offtopic_short": { "category_music_offtopic_short": {
"message": "Không có nhạc" "message": "Không có nhạc"
}, },
"category_poi_highlight": {
"message": "Điểm/Khoảnh khắc quan trọng"
},
"category_poi_highlight_description": {
"message": "Phần của video mà hầu hết mọi người đang tìm kiếm. Tương tự với câu nói \"Video bắt đầu từ x\"."
},
"category_livestream_messages": { "category_livestream_messages": {
"message": "Luồng phát trực tiếp: Đọc Quyên góp/Tin nhắn" "message": "Luồng phát trực tiếp: Đọc Quyên góp/Tin nhắn"
}, },
@@ -571,9 +583,21 @@
"disable": { "disable": {
"message": "Tắt" "message": "Tắt"
}, },
"autoSkip_POI": {
"message": "Tự động bỏ qua"
},
"manualSkip_POI": {
"message": "Hỏi khi video bắt đầu"
},
"showOverlay_POI": {
"message": "Hiện ở thanh xem trước"
},
"autoSkipOnMusicVideos": { "autoSkipOnMusicVideos": {
"message": "Tự động bỏ qua tất cả các phân đoạn nếu trong video có phân đoạn không phải nhạc" "message": "Tự động bỏ qua tất cả các phân đoạn nếu trong video có phân đoạn không phải nhạc"
}, },
"muteSegments": {
"message": "Cho phép các phân đoạn bị tắt tiếng hay vì bỏ qua"
},
"colorFormatIncorrect": { "colorFormatIncorrect": {
"message": "Mã màu sai định dạng. Mã màu phải có 3 hoặc 6 ký tự hệ hex và có dấu thăng ở đầu." "message": "Mã màu sai định dạng. Mã màu phải có 3 hoặc 6 ký tự hệ hex và có dấu thăng ở đầu."
}, },
@@ -613,6 +637,9 @@
"message": "Để gửi một phân đoạn với chủ đề \"{0}\", bạn cần phải kích hoạt nó trong phần tuỳ chọn. Bạn sẽ được đưa đến phần tuỳ chỉnh bây giờ.", "message": "Để gửi một phân đoạn với chủ đề \"{0}\", bạn cần phải kích hoạt nó trong phần tuỳ chọn. Bạn sẽ được đưa đến phần tuỳ chỉnh bây giờ.",
"description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options." "description": "Used when submitting segments to only let them select a certain category if they have it enabled in the options."
}, },
"poiOnlyOneSegment": {
"message": "Cảnh báo: Loại phân đoạn này nếu hiển thị CHỈ CÓ 1 PHÂN ĐOẠN được xuất hiện trong video. Nếu bạn gửi lên, khi đó, phân đoạn xuất hiện duy nhất sẽ được lựa chọn ngẫu nhiên."
},
"youMustSelectACategory": { "youMustSelectACategory": {
"message": "Bạn phải lựa chọn một danh mục cho tất cả phân đoạn bạn đang muốn đăng tải!" "message": "Bạn phải lựa chọn một danh mục cho tất cả phân đoạn bạn đang muốn đăng tải!"
}, },
@@ -684,6 +711,10 @@
"help": { "help": {
"message": "Trợ giúp" "message": "Trợ giúp"
}, },
"GotIt": {
"message": "Đã hiểu",
"description": "Used as the button to dismiss a tooltip"
},
"experiementOptOut": { "experiementOptOut": {
"message": "Từ chối tham gia thử nghiệm trong tương lai", "message": "Từ chối tham gia thử nghiệm trong tương lai",
"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."
@@ -710,6 +741,18 @@
"helpPageReviewOptions": { "helpPageReviewOptions": {
"message": "Xin hãy xem xét các tuỳ chọn bên dưới" "message": "Xin hãy xem xét các tuỳ chọn bên dưới"
}, },
"helpPageFeatureDisclaimer": {
"message": "Nhiều tính năng sẽ bị tắt theo mặc định. Nếu bạn muốn bỏ qua phần intro, sử dụng trên các trang web bên thứ 3 như Invidious, v. v...., bạn có thể bật nó ở bên dưới. Bạn cũng có thể cho hiện/ẩn UI người dùng."
},
"helpPageHowSkippingWorks": {
"message": "Việc bỏ qua 1 đoạn trong video được thực hiện thế nào?"
},
"helpPageHowSkippingWorks1": {
"message": "Các phân đoạn trong video sẽ tự động bị bỏ qua nếu chúng được tìm thấy trong cơ sở dữ liệu của chúng tôi. Bạn có thể mở cửa sổ xem trước các phân đoạn ấy bằng cách nhấp vào biểu tượng tiện ích mở rộng."
},
"helpPageHowSkippingWorks2": {
"message": "Bất cứ khi nào bỏ qua một phân đoạn, bạn sẽ nhận được 1 cửa sổ thông báo bât. Nếu phân đoạn có vẻ sai, hãy bỏ phiếu bằng cách nhấp vào nút downvote! Bạn cũng có thể bỏ phiếu trong cửa sổ bật lên khi nhấn vào biểu tượng tiện ích mở rộng. Và bạn có thể tắt việc hiển thị bảng thông báo này trong phần cài đặt tiện ích."
},
"helpPageTooSlow": { "helpPageTooSlow": {
"message": "Quá chậm" "message": "Quá chậm"
} }

View File

@@ -97,9 +97,6 @@
"connectionError": { "connectionError": {
"message": "连接错误。错误代码: " "message": "连接错误。错误代码: "
}, },
"wantToSubmit": {
"message": "您是否想为以下视频 ID 提交:"
},
"clearTimes": { "clearTimes": {
"message": "清除片段" "message": "清除片段"
}, },

View File

@@ -52,6 +52,9 @@
"reskip": { "reskip": {
"message": "繼續跳過" "message": "繼續跳過"
}, },
"unmute": {
"message": "解除靜音"
},
"paused": { "paused": {
"message": "已暫停" "message": "已暫停"
}, },
@@ -100,9 +103,6 @@
"connectionError": { "connectionError": {
"message": "已發生連線錯誤。錯誤碼: " "message": "已發生連線錯誤。錯誤碼: "
}, },
"wantToSubmit": {
"message": "您想為這個影片ID提交嗎"
},
"clearTimes": { "clearTimes": {
"message": "清除片段" "message": "清除片段"
}, },
@@ -532,6 +532,9 @@
"category_music_offtopic_short": { "category_music_offtopic_short": {
"message": "非音樂" "message": "非音樂"
}, },
"category_poi_highlight": {
"message": "重點"
},
"category_livestream_messages": { "category_livestream_messages": {
"message": "直播:捐贈/訊息閱讀" "message": "直播:捐贈/訊息閱讀"
}, },
@@ -663,11 +666,18 @@
"help": { "help": {
"message": "說明" "message": "說明"
}, },
"GotIt": {
"message": "知道了",
"description": "Used as the button to dismiss a tooltip"
},
"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."
}, },
"hideForever": { "hideForever": {
"message": "永久隱藏" "message": "永久隱藏"
},
"Credits": {
"message": "致謝"
} }
} }

View File

@@ -275,6 +275,10 @@ background-color:#ec1c1c;
cursor: pointer; cursor: pointer;
} }
button#setUsernameButton {
flex: 0 1;
}
#submitUsername { #submitUsername {
padding-left: 5pt; padding-left: 5pt;
} }
@@ -285,6 +289,7 @@ background-color:#ec1c1c;
#usernameValue, #usernameInput, #sponsorTimesContributionsDisplay{ #usernameValue, #usernameInput, #sponsorTimesContributionsDisplay{
font-size: 16px; font-size: 16px;
flex: 1 0;
} }
.SBWhitelistIcon { .SBWhitelistIcon {
@@ -343,6 +348,7 @@ label>p, #disableExtension>p, #usernameValue, #usernameElement > div > p,#sponso
#copyUserID { #copyUserID {
width: 100%; width: 100%;
flex: 0 1;
} }
#setUsernameContainer { #setUsernameContainer {

View File

@@ -1,7 +1,7 @@
import * as React from "react"; import * as React from "react";
import * as CompileConfig from "../../config.json"; import * as CompileConfig from "../../config.json";
import Config from "../config"; import Config from "../config";
import { ActionType, ActionTypes, Category, CategoryActionType, ContentContainer, SponsorTime } from "../types"; import { ActionType, Category, CategoryActionType, ContentContainer, SponsorTime } from "../types";
import Utils from "../utils"; import Utils from "../utils";
import { getCategoryActionType } from "../utils/categoryUtils"; import { getCategoryActionType } from "../utils/categoryUtils";
import SubmissionNoticeComponent from "./SubmissionNoticeComponent"; import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
@@ -191,14 +191,14 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
</div> </div>
{/* Action Type */} {/* Action Type */}
{getCategoryActionType(sponsorTime.category) === CategoryActionType.Skippable ? ( {CompileConfig.categorySupport[sponsorTime.category]?.length > 1 ? (
<div style={{position: "relative"}}> <div style={{position: "relative"}}>
<select id={"sponsorTimeActionTypes" + this.idSuffix} <select id={"sponsorTimeActionTypes" + this.idSuffix}
className="sponsorTimeEditSelector sponsorTimeActionTypes" className="sponsorTimeEditSelector sponsorTimeActionTypes"
defaultValue={sponsorTime.actionType} defaultValue={sponsorTime.actionType}
ref={this.actionTypeOptionRef} ref={this.actionTypeOptionRef}
onChange={() => this.saveEditTimes()}> onChange={() => this.saveEditTimes()}>
{this.getActionTypeOptions()} {this.getActionTypeOptions(sponsorTime)}
</select> </select>
</div> </div>
): ""} ): ""}
@@ -279,15 +279,20 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
if (getCategoryActionType(event.target.value as Category) === CategoryActionType.POI) { if (getCategoryActionType(event.target.value as Category) === CategoryActionType.POI) {
this.setTimeTo(1, null); this.setTimeTo(1, null);
this.props.contentContainer().updateEditButtonsOnPlayer(); this.props.contentContainer().updateEditButtonsOnPlayer();
if (this.props.contentContainer().sponsorTimesSubmitting
.some((segment, i) => segment.category === event.target.value && i !== this.props.index)) {
alert(chrome.i18n.getMessage("poiOnlyOneSegment"));
}
} }
this.saveEditTimes(); this.saveEditTimes();
} }
getActionTypeOptions(): React.ReactElement[] { getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {
const elements = []; const elements = [];
for (const actionType of ActionTypes) { for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {
elements.push( elements.push(
<option value={actionType} <option value={actionType}
key={actionType}> key={actionType}>
@@ -375,7 +380,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
const skipTime = sponsorTimes[index].segment[0]; const skipTime = sponsorTimes[index].segment[0];
this.props.contentContainer().previewTime(skipTime - 2); this.props.contentContainer().previewTime(skipTime - (2 * this.props.contentContainer().v.playbackRate));
} }
inspectTime(): void { inspectTime(): void {

View File

@@ -15,13 +15,13 @@ export interface SubmissionNoticeProps {
closeListener: () => void; closeListener: () => void;
} }
export interface SubmissionNoticeeState { export interface SubmissionNoticeState {
noticeTitle: string, noticeTitle: string,
messages: string[], messages: string[],
idSuffix: string; idSuffix: string;
} }
class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, SubmissionNoticeeState> { class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, SubmissionNoticeState> {
// Contains functions and variables from the content script needed by the skip notice // Contains functions and variables from the content script needed by the skip notice
contentContainer: ContentContainer; contentContainer: ContentContainer;
@@ -192,4 +192,4 @@ class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, S
} }
} }
export default SubmissionNoticeComponent; export default SubmissionNoticeComponent;

View File

@@ -0,0 +1,116 @@
import * as React from "react";
import Config from "../config";
import { ContentContainer, VisualSegmentInfo } from "../types";
import Utils from "../utils";
const utils = new Utils();
export interface VisualSegmentEditProps {
index: number,
visual: VisualSegmentInfo,
idSuffix: string,
// Contains functions and variables from the content script needed by the skip notice
contentContainer: ContentContainer,
}
export interface VisualSegmentEditState {
}
class VisualSegmentEditComponent extends React.Component<VisualSegmentEditProps, VisualSegmentEditState> {
idSuffix: string;
configUpdateListener: () => void;
constructor(props: VisualSegmentEditProps) {
super(props);
this.idSuffix = this.props.idSuffix;
this.state = {
};
}
componentDidMount(): void {
// Add as a config listener
if (!this.configUpdateListener) {
this.configUpdateListener = () => this.configUpdate();
Config.configListeners.push(this.configUpdate.bind(this));
}
}
componentWillUnmount(): void {
if (this.configUpdateListener) {
Config.configListeners.splice(Config.configListeners.indexOf(this.configUpdate.bind(this)), 1);
}
}
render(): React.ReactElement {
return <>
<span id={`time${this.props.idSuffix}`}>
{utils.getFormattedTime(this.props.visual.time, true)}
</span>
<span>
-
</span>
{this.getBoundsElement()}
<span>
-
</span>
<input
type="checkBox"
onChange={(event) => this.colorUpdated(event)}
value={this.props.visual.color}
/>
<span>
Smooth
</span>
<span>
-
</span>
<input
className="categoryColorTextBox"
type="color"
onChange={(event) => this.colorUpdated(event)}
value={this.props.visual.color}
/>
</>
}
getBoundsElement(): React.ReactElement[] {
const elements: React.ReactElement[] = [];
for (const bound of this.props.visual.bounds) {
elements.push(
<span>
{`${bound[0] * 100}% x ${bound[0] * 100}%, `}
</span>
);
}
return elements;
}
colorUpdated(event: React.ChangeEvent<HTMLInputElement>): void {
this.props.visual.color = event.target.value;
}
configUpdate(): void {
this.forceUpdate();
}
}
export default VisualSegmentEditComponent;

View File

@@ -965,16 +965,16 @@ async function whitelistCheck() {
function getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean): function getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):
{array: ScheduledTime[], index: number, endIndex: number, openNotice: boolean} { {array: ScheduledTime[], index: number, endIndex: number, openNotice: boolean} {
const { includedTimes: submittedArray, startTimeIndexes: sponsorStartTimes } = const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =
getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments); getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);
const { startTimeIndexes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true, true); const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true, true);
const minSponsorTimeIndex = sponsorStartTimes.indexOf(Math.min(...sponsorStartTimesAfterCurrentTime)); const minSponsorTimeIndex = sponsorStartTimes.indexOf(Math.min(...sponsorStartTimesAfterCurrentTime));
const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex); const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);
const { includedTimes: unsubmittedArray, startTimeIndexes: unsubmittedSponsorStartTimes } = const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =
getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments); getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);
const { startTimeIndexes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false, false); const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false, false);
const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime)); const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));
const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex); const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);
@@ -1053,28 +1053,27 @@ function getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideH
* the current time, but end after * the current time, but end after
*/ */
function getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean, function getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,
minimum?: number, onlySkippableSponsors = false, hideHiddenSponsors = false): {includedTimes: ScheduledTime[], startTimeIndexes: number[]} { minimum?: number, onlySkippableSponsors = false, hideHiddenSponsors = false): {includedTimes: ScheduledTime[], scheduledTimes: number[]} {
if (!sponsorTimes) return {includedTimes: [], startTimeIndexes: []}; if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};
const includedTimes: ScheduledTime[] = []; const includedTimes: ScheduledTime[] = [];
const startTimeIndexes: number[] = []; const scheduledTimes: number[] = [];
const possibleTimes = sponsorTimes.flatMap((sponsorTime) => { const possibleTimes = sponsorTimes.map((sponsorTime) => ({
const results = [{ ...sponsorTime,
...sponsorTime, scheduledTime: sponsorTime.segment[0]
scheduledTime: sponsorTime.segment[0] }));
}]
if (sponsorTime.actionType === ActionType.Mute) { // Schedule at the end time to know when to unmute
// Schedule at the end time to know when to unmute sponsorTimes.filter(sponsorTime => sponsorTime.actionType === ActionType.Mute)
results.push({ .forEach(sponsorTime => {
if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime)) {
possibleTimes.push({
...sponsorTime, ...sponsorTime,
scheduledTime: sponsorTime.segment[1] scheduledTime: sponsorTime.segment[1]
}) });
} }
});
return results;
})
for (let i = 0; i < possibleTimes.length; i++) { for (let i = 0; i < possibleTimes.length; i++) {
if ((minimum === undefined if ((minimum === undefined
@@ -1084,12 +1083,12 @@ function getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments:
&& (!hideHiddenSponsors || possibleTimes[i].hidden === SponsorHideType.Visible) && (!hideHiddenSponsors || possibleTimes[i].hidden === SponsorHideType.Visible)
&& getCategoryActionType(possibleTimes[i].category) === CategoryActionType.Skippable) { && getCategoryActionType(possibleTimes[i].category) === CategoryActionType.Skippable) {
startTimeIndexes.push(possibleTimes[i].scheduledTime); scheduledTimes.push(possibleTimes[i].scheduledTime);
includedTimes.push(possibleTimes[i]); includedTimes.push(possibleTimes[i]);
} }
} }
return { includedTimes, startTimeIndexes }; return { includedTimes, scheduledTimes };
} }
/** /**
@@ -1112,7 +1111,7 @@ function sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped:
let counted = false; let counted = false;
for (const segment of skippingSegments) { for (const segment of skippingSegments) {
const index = sponsorTimes.indexOf(segment); const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);
if (index !== -1 && !sponsorSkipped[index]) { if (index !== -1 && !sponsorSkipped[index]) {
sponsorSkipped[index] = true; sponsorSkipped[index] = true;
if (!counted) { if (!counted) {

View File

@@ -40,7 +40,9 @@ export class SkipButtonControlBar {
this.container.appendChild(this.textContainer); this.container.appendChild(this.textContainer);
this.container.addEventListener("click", () => this.toggleSkip()); this.container.addEventListener("click", () => this.toggleSkip());
this.container.addEventListener("mouseenter", () => this.stopTimer()); this.container.addEventListener("mouseenter", () => this.stopTimer());
this.container.addEventListener("mouseenter", () => console.log("mouseenter"));
this.container.addEventListener("mouseleave", () => this.startTimer()); this.container.addEventListener("mouseleave", () => this.startTimer());
this.container.addEventListener("mouseleave", () => console.log("mouseleave"));
} }
getElement(): HTMLElement { getElement(): HTMLElement {

View File

@@ -58,11 +58,10 @@ export enum CategoryActionType {
export enum ActionType { export enum ActionType {
Skip = "skip", Skip = "skip",
Mute = "mute" Mute = "mute",
Visual = "visual",
} }
export const ActionTypes = [ActionType.Skip, ActionType.Mute];
export type SegmentUUID = string & { __segmentUUIDBrand: unknown }; export type SegmentUUID = string & { __segmentUUIDBrand: unknown };
export type Category = string & { __categoryBrand: unknown }; export type Category = string & { __categoryBrand: unknown };
@@ -80,6 +79,16 @@ export interface SponsorTime {
hidden?: SponsorHideType; hidden?: SponsorHideType;
source?: SponsorSourceType; source?: SponsorSourceType;
visual: string;
}
export interface VisualSegmentInfo {
time: number;
bounds: [number, number][];
smooth: boolean;
curve: string;
color: string;
} }
export interface ScheduledTime extends SponsorTime { export interface ScheduledTime extends SponsorTime {

View File

@@ -1,15 +1,39 @@
import { Category, CategoryActionType, SponsorTime } from "../types"; import { ActionType, Category, CategoryActionType, SponsorTime } from "../types";
export function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string { export function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {
const categoryName = chrome.i18n.getMessage(segments.length > 1 ? "multipleSegments" const categoryName = chrome.i18n.getMessage(segments.length > 1 ? "multipleSegments"
: "category_" + segments[0].category + "_short") || chrome.i18n.getMessage("category_" + segments[0].category); : "category_" + segments[0].category + "_short") || chrome.i18n.getMessage("category_" + segments[0].category);
if (autoSkip) { if (autoSkip) {
const messageId = getCategoryActionType(segments[0].category) === CategoryActionType.Skippable let messageId = "";
? "skipped" : "skipped_to_category"; if (getCategoryActionType(segments[0].category) === CategoryActionType.Skippable) {
switch (segments[0].actionType) {
case ActionType.Skip:
messageId = "skipped";
break;
case ActionType.Mute:
messageId = "muted";
break;
}
} else {
messageId = "skipped_to_category";
}
return chrome.i18n.getMessage(messageId).replace("{0}", categoryName); return chrome.i18n.getMessage(messageId).replace("{0}", categoryName);
} else { } else {
const messageId = getCategoryActionType(segments[0].category) === CategoryActionType.Skippable let messageId = "";
? "skip_category" : "skip_to_category"; if (getCategoryActionType(segments[0].category) === CategoryActionType.Skippable) {
switch (segments[0].actionType) {
case ActionType.Skip:
messageId = "skip_category";
break;
case ActionType.Mute:
messageId = "mute_category";
break;
}
} else {
messageId = "skip_to_category";
}
return chrome.i18n.getMessage(messageId).replace("{0}", categoryName); return chrome.i18n.getMessage(messageId).replace("{0}", categoryName);
} }
} }

29
src/utils/visualUtils.ts Normal file
View File

@@ -0,0 +1,29 @@
import { VisualSegmentInfo } from "../types";
import { Svg, SVG } from "@svgdotjs/svg.js";
export function toSVG(visuals: VisualSegmentInfo[]): Svg {
const svg = SVG().size(100, 100);
for (const visual of visuals) {
const path = svg.polygon();
path.fill(visual.color);
// path.stroke({
// width: 1,
// color: visual.color
// });
path.plot(visual.bounds);
}
console.log(svg.svg());
return svg;
}
export function toVisualSegmentInfo(svgInput: string | Svg): VisualSegmentInfo {
let svg = svgInput as Svg;
if (typeof svgInput === "string") {
svg = SVG().svg(svgInput);
}
throw new Error("Method not implemented.");
}

View File

@@ -15,6 +15,7 @@ test("Selenium Chrome test", async () => {
await editSegments(driver, 0, "0:04.000", "0:10.330", "5", "13.211", "0:05.000 to 0:13.211", false); await editSegments(driver, 0, "0:04.000", "0:10.330", "5", "13.211", "0:05.000 to 0:13.211", false);
await autoskipSegment(driver, 5, 13.211); await autoskipSegment(driver, 5, 13.211);
await setSegmentCategory(driver, 0, 1, false);
await setSegmentActionType(driver, 0, 1, false); await setSegmentActionType(driver, 0, 1, false);
await editSegments(driver, 0, "0:05.000", "0:13.211", "5", "7.5", "0:05.000 to 0:07.500", false); await editSegments(driver, 0, "0:05.000", "0:13.211", "5", "7.5", "0:05.000 to 0:07.500", false);
await muteSkipSegment(driver, 5, 7.5); await muteSkipSegment(driver, 5, 7.5);
@@ -109,6 +110,16 @@ async function editSegments(driver: WebDriver, index: number, expectedStartTimeB
await driver.wait(until.elementTextIs(sponsorTimeDisplay, expectedDisplayedTime)); await driver.wait(until.elementTextIs(sponsorTimeDisplay, expectedDisplayedTime));
} }
async function setSegmentCategory(driver: WebDriver, index: number, categoryIndex: number, openSubmitBox: boolean): Promise<void> {
if (openSubmitBox) {
const submitButton = await driver.findElement(By.id("submitButton"));
await submitButton.click();
}
const categorySelection = await driver.findElement(By.css(`#sponsorTimeCategoriesSubmissionNotice${index} > option:nth-child(${categoryIndex + 1})`));
await categorySelection.click();
}
async function setSegmentActionType(driver: WebDriver, index: number, actionTypeIndex: number, openSubmitBox: boolean): Promise<void> { async function setSegmentActionType(driver: WebDriver, index: number, actionTypeIndex: number, openSubmitBox: boolean): Promise<void> {
if (openSubmitBox) { if (openSubmitBox) {
const submitButton = await driver.findElement(By.id("submitButton")); const submitButton = await driver.findElement(By.id("submitButton"));
@@ -116,7 +127,7 @@ async function setSegmentActionType(driver: WebDriver, index: number, actionType
} }
const actionTypeSelection = await driver.findElement(By.css(`#sponsorTimeActionTypesSubmissionNotice${index} > option:nth-child(${actionTypeIndex + 1})`)); const actionTypeSelection = await driver.findElement(By.css(`#sponsorTimeActionTypesSubmissionNotice${index} > option:nth-child(${actionTypeIndex + 1})`));
actionTypeSelection.click(); await actionTypeSelection.click();
} }
async function autoskipSegment(driver: WebDriver, startTime: number, endTime: number): Promise<void> { async function autoskipSegment(driver: WebDriver, startTime: number, endTime: number): Promise<void> {

View File

@@ -0,0 +1,21 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
import { createSVGWindow } from "svgdom";
import { registerWindow } from "@svgdotjs/svg.js";
import { toSVG } from "../src/utils/visualUtils";
beforeAll(() => {
const window = createSVGWindow();
registerWindow(window, window.document)
})
test("Visual Segment SVG converter", async () => {
toSVG([{
time: 0,
bounds: [[0, 0], [25, 0], [25, 40], [0, 30]],
smooth: false,
curve: "linear",
color: "#000000",
}]);
});