mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-09 13:07:05 +03:00
Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f35afaf6bc | ||
|
|
85b1b51b76 | ||
|
|
9dc5449e37 | ||
|
|
7baac9dcbf | ||
|
|
4045978b54 | ||
|
|
56bc3fca04 | ||
|
|
bfa31429f1 | ||
|
|
66f0cc8883 | ||
|
|
1a0ac27e49 | ||
|
|
7b87ae7b08 | ||
|
|
9ab8e63b1d | ||
|
|
0e147134f3 | ||
|
|
8605e23fbb | ||
|
|
5f34a777f1 | ||
|
|
1f43d07e16 | ||
|
|
a88aaf4590 | ||
|
|
25f78ed55b | ||
|
|
26e73c515c | ||
|
|
028374e62d | ||
|
|
dc1e5ce762 | ||
|
|
8fcf8ac46c | ||
|
|
ef70e71051 | ||
|
|
23a91c626d | ||
|
|
c92f63af36 | ||
|
|
0a21ef7af0 | ||
|
|
5a74a28520 | ||
|
|
1bfb5cfb13 | ||
|
|
59f8f82655 | ||
|
|
2064afb235 | ||
|
|
ebcb600e99 | ||
|
|
9ec984065e | ||
|
|
63cfe760b6 | ||
|
|
1a717542c7 | ||
|
|
de607d317f | ||
|
|
76d9a9afa9 | ||
|
|
22ecc05a55 | ||
|
|
514ebe8660 | ||
|
|
2f4722162b | ||
|
|
f219122f00 | ||
|
|
008671d97f | ||
|
|
6fb3802fd4 | ||
|
|
73241a0bd1 | ||
|
|
cc995b9848 | ||
|
|
778379d294 | ||
|
|
1083520666 | ||
|
|
cad5cd97fc | ||
|
|
7f5728d4db | ||
|
|
06fa2748fe | ||
|
|
8b50373eab | ||
|
|
bdedf86d63 | ||
|
|
0fb84dc03d | ||
|
|
041ccdaf11 | ||
|
|
1f967b3f69 | ||
|
|
07f0b87379 | ||
|
|
840dbbde4a | ||
|
|
2b9000ff84 | ||
|
|
0d0171530c | ||
|
|
6040d177fa | ||
|
|
2c1f5f16c2 | ||
|
|
0e7a298967 | ||
|
|
9a9f151979 | ||
|
|
ca814c9dcc | ||
|
|
976dbb9159 | ||
|
|
90ce9808f1 | ||
|
|
ef942fca8e | ||
|
|
3671c4bb69 | ||
|
|
ef15526dcd | ||
|
|
096737dcbb | ||
|
|
02360c1f3c | ||
|
|
ccd8342ddb | ||
|
|
4ae2a42c8c | ||
|
|
5ad809cfb4 | ||
|
|
d1e46825af | ||
|
|
2763b6b6aa | ||
|
|
427b90a5e9 | ||
|
|
60e54ee129 | ||
|
|
4092bf9b05 | ||
|
|
f31c2985e2 | ||
|
|
34cfd14e74 | ||
|
|
0367f7900f | ||
|
|
47261a360c |
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
@@ -10,9 +10,11 @@ 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
|
with:
|
||||||
|
node-version: '16'
|
||||||
|
- run: npm ci
|
||||||
- name: Copy configuration
|
- name: Copy configuration
|
||||||
run: cp config.json.example config.json
|
run: cp config.json.example config.json
|
||||||
|
|
||||||
@@ -23,44 +25,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
|
||||||
|
|
||||||
|
|||||||
18
.github/workflows/release.yml
vendored
18
.github/workflows/release.yml
vendored
@@ -12,16 +12,18 @@ 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
|
with:
|
||||||
|
node-version: '16'
|
||||||
|
- run: npm ci
|
||||||
- name: Copy configuration
|
- name: Copy configuration
|
||||||
run: cp config.json.example config.json
|
run: cp config.json.example config.json
|
||||||
|
|
||||||
# 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 +34,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 +44,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 +77,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 +94,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
|
||||||
|
|||||||
20
.github/workflows/tests.yml
vendored
Normal file
20
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Tests
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: Run tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Initialization
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '16'
|
||||||
|
- run: npm ci
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm run test-without-building
|
||||||
@@ -50,16 +50,18 @@ 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
|
||||||
|
|
||||||
|
You must have Node.js 16 installed.
|
||||||
|
|
||||||
Rename `config.json.example` to `config.json` and adjust configuration as desired.
|
Rename `config.json.example` to `config.json` and adjust configuration as desired.
|
||||||
|
|
||||||
There are also other build scripts available. Install `npm`, then run `npm install` in the repository to install dependencies.
|
There are also other build scripts available. Install `npm`, then run `npm install` in the repository to install dependencies.
|
||||||
@@ -90,7 +92,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.
|
||||||
|
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "__MSG_fullName__",
|
"name": "__MSG_fullName__",
|
||||||
"short_name": "SponsorBlock",
|
"short_name": "SponsorBlock",
|
||||||
"version": "3.0.4",
|
"version": "3.3.3",
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"description": "__MSG_Description__",
|
"description": "__MSG_Description__",
|
||||||
"homepage_url": "https://sponsor.ajay.app",
|
"homepage_url": "https://sponsor.ajay.app",
|
||||||
|
|||||||
23947
package-lock.json
generated
23947
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -57,5 +57,35 @@
|
|||||||
},
|
},
|
||||||
"manualPaused": {
|
"manualPaused": {
|
||||||
"message": "تم إيقاف الموقت"
|
"message": "تم إيقاف الموقت"
|
||||||
|
},
|
||||||
|
"confirmMSG": {
|
||||||
|
"message": "لتحرير أو حذف قيّم فردياً، انقر فوق زر المعلومات أو فتح الإضافة عن طريق النقر على أيقونة الإضافة في الزاوية اليمنى العليا."
|
||||||
|
},
|
||||||
|
"clearThis": {
|
||||||
|
"message": "هل أنت متأكد أنك تريد حذف هذا؟\n\n"
|
||||||
|
},
|
||||||
|
"Unknown": {
|
||||||
|
"message": "حدث خطأ في إرسال توقيت الرعاة الخاص بك، الرجاء المحاولة مرة أخرى لاحقاً."
|
||||||
|
},
|
||||||
|
"sponsorFound": {
|
||||||
|
"message": "يحتوي هذا الفيديو على أجزاء في قاعدة البيانات!"
|
||||||
|
},
|
||||||
|
"sponsor404": {
|
||||||
|
"message": "لم يتم العثور على أجزاء"
|
||||||
|
},
|
||||||
|
"sponsorStart": {
|
||||||
|
"message": "يبدأ الجزء الآن"
|
||||||
|
},
|
||||||
|
"sponsorEnd": {
|
||||||
|
"message": "ينتهي الجزء الآن"
|
||||||
|
},
|
||||||
|
"sponsorCancel": {
|
||||||
|
"message": "إلغاء إنشاء جزء"
|
||||||
|
},
|
||||||
|
"noVideoID": {
|
||||||
|
"message": "لم يتم العثور على فيديو يوتيوب.\nإذا كان هذا غير صحيح، قم بتحديث الصفحة."
|
||||||
|
},
|
||||||
|
"refreshSegments": {
|
||||||
|
"message": "تحديث الأجزاء"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": "Изчистване на сегментите"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Задайте потребителско име"
|
"message": "Задайте потребителско име"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Копиране на публичния UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Елате в официалния Discord сървър, за да давате предложения!"
|
"message": "Елате в официалния Discord сървър, за да давате предложения!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Това скрива бутоните, които се показват в плейъра на YouTube за изпращане на сегменти за пропускане."
|
"message": "Това скрива бутоните, които се показват в плейъра на YouTube за изпращане на сегменти за пропускане."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Оставяне в плейъра на бутона за преминаване към акцента"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Показване на бутона за информация в плейъра на YouTube"
|
"message": "Показване на бутона за информация в плейъра на YouTube"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Скриване на бутона за информация в плейъра на YouTube"
|
"message": "Скриване на бутона за информация в плейъра на YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Това е бутонът, който отваря изскачащ прозорец в страницата на YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Автоматично скриване на бутона за информация"
|
"message": "Автоматично скриване на бутона за информация"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Показване на бутона за изтриване в плейъра на YouTube"
|
"message": "Показване на бутона за изтриване в плейъра на YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Това е бутонът в плейъра на YouTube, който ще изчисти всичките ви неизпратени сегменти за текущия видеоклип."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Активиране проследяването на броя пропускания"
|
"message": "Активиране проследяването на броя пропускания"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Пропускане"
|
"message": "Пропускане"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Заглушаване"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -310,6 +316,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)"
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Импортиране/експортиране на вашия UserID"
|
"message": "Импортиране/експортиране на вашия UserID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Това трябва да се пази тайно. То е като парола и не трябва да се споделя с никого. Ако някой го притежава, той може да се представи за вас."
|
"message": "Това трябва да се пази в тайна. То е като парола и не трябва да се споделя с никого. Ако някой го има, може да се представи за вас. Ако търсите своя публичен потребителски идентификатор, щракнете върху иконата на клипборда в изскачащия прозорец."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Задаване на UserID"
|
"message": "Задаване на UserID"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Показване на бутона за качване"
|
"message": "Показване на бутона за качване"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Този бутон се появява в плейъра на YouTube, след като сте избрали времева отметка и сте готови за изпращане."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Адрес на сървъра на SponsorBlock"
|
"message": "Адрес на сървъра на SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Автоматично пропускане на всички сегменти, когато има сегмент без музика"
|
"message": "Автоматично пропускане на всички сегменти, когато има сегмент без музика"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Разрешаване на сегменти, които заглушават звука, вместо да се пропускат"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Вашият цвят не е форматиран правилно. Трябва да бъде 3- или 6-цифрен шестнадесетичен код с „#“ в началото."
|
"message": "Вашият цвят не е форматиран правилно. Трябва да бъде 3- или 6-цифрен шестнадесетичен код с „#“ в началото."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,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": "Трябва да изберете категория за всички сегменти, които изпращате!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Скриване завинаги"
|
"message": "Скриване завинаги"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Получихте предупреждение и временно не можете да изпращате сегменти. Това означава, че забелязахме, че допускате някои често срещани грешки, които не са злонамерени, и просто искаме да изясним правилата. Можете също да се присъедините към този чат с помощта на discord.gg/SponsorBlock или matrix.to/#/+sponsor:ajay.app"
|
"message": "Получихте предупреждение и временно не можете да изпращате сегменти. Това означава, че забелязахме, че допускате някои често срещани грешки, които не са злонамерени. Моля, просто потвърдете, че разбирате правилата и ние ще премахнем предупреждението. Можете също да се присъедините към този чат от discord.gg/SponsorBlock или matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Гласуването е отхвърлено поради предупреждение. Щракнете, за да отворите чат и да го разрешите, или се върнете по-късно, когато имате време.",
|
"message": "Гласуването е отхвърлено поради предупреждение. Щракнете, за да отворите чат и да го разрешите, или се върнете по-късно, когато имате време.",
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Znovu přeskočit"
|
"message": "Znovu přeskočit"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Zrušit ztlumení"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pozastaveno"
|
"message": "Pozastaveno"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Nastavit uživatelské jméno"
|
"message": "Nastavit uživatelské jméno"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Kopírovat veřejné uživatelské ID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Připojte se k oficiálnímu Discord serveru k podání návrhů a zpětné vazby!"
|
"message": "Připojte se k oficiálnímu Discord serveru k podání návrhů a zpětné vazby!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Skryje tlačítka, která se zobrazí v YouTube přehrávači pro přeskočení segmentů."
|
"message": "Skryje tlačítka, která se zobrazí v YouTube přehrávači pro přeskočení segmentů."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Nechat tlačítko přeskočení na zvýraznění v přehrávači"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Zobrazit informační tlačítko v YouTube přehrávači"
|
"message": "Zobrazit informační tlačítko v YouTube přehrávači"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Skrýt informační tlačítko v YouTube přehrávači"
|
"message": "Skrýt informační tlačítko v YouTube přehrávači"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Toto je tlačítko, které otevře vyskakovací nabídku na YouTube stránce."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Automaticky skrýt informační tlačítko"
|
"message": "Automaticky skrýt informační tlačítko"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Zobrazit tlačítko Odstranit v YouTube přehrávači"
|
"message": "Zobrazit tlačítko Odstranit v YouTube přehrávači"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Toto je tlačítko v YouTube přehrávači, které odebere všechny vaše neodeslané segmenty v současném videu."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Povolit počítadlo přeskočení"
|
"message": "Povolit počítadlo přeskočení"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Přeskočit"
|
"message": "Přeskočit"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Ztlumit"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -310,6 +316,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)"
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Importovat / exportovat vaše UserID"
|
"message": "Importovat / exportovat vaše UserID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Toto byste měli udržet v soukromí. Je to jako heslo a neměli byste jej s nikým sdílet. Pokud jej někdo má, může se za vás vydávat."
|
"message": "Toto by mělo být ponecháno v soukromí. Je to jako heslo a nemělo by být s nikým sdíleno. Pokud to někdo má, může se za vás vydávat. Pokud hledáte vaše veřejné uživatelské ID, klikněte na ikonu schránky ve vyskakovacím okně."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Nastavit UserID"
|
"message": "Nastavit UserID"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Zobrazit tlačítko Nahrát"
|
"message": "Zobrazit tlačítko Nahrát"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Toto tlačítko se objeví v YouTube přehrávači po vybrání časového razítka a po připravení k odeslání."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Adresa serveru SponsorBlock"
|
"message": "Adresa serveru SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Automaticky přeskočit všechny segmenty, když je ve videu nehudební segment"
|
"message": "Automaticky přeskočit všechny segmenty, když je ve videu nehudební segment"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Povolit segmenty, které místo přeskočení ztlumují zvuk"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Vaše barva má nesprávný formát. Měl by to být 3 nebo 6 znaků dlouhý HEX kód s křížkem na začátku."
|
"message": "Vaše barva má nesprávný formát. Měl by to být 3 nebo 6 znaků dlouhý HEX kód s křížkem na začátku."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,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!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Skrýt napořád"
|
"message": "Skrýt napořád"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Dostali jste varování a nemůžete dočasně přidávat segmenty. To znamená, že jsme si všimli, že děláte běžné chyby, které nejsou škodlivé, jen chceme vyjasnit pravidla. Také se můžete připojit do tohoto chatu pomocí discord.gg/SponsorBlock nebo matrix.to/#/+sponsor:ajay.app"
|
"message": "Dostali jste varování a nemůžete dočasně přidávat segmenty. To znamená, že jsme si všimli, že děláte běžné chyby, které nejsou škodlivé, stačí potvrdit přečtení pravidel a odebereme varování. Tají se můžete připojit do tohoto chatu pomocí discord.gg/SponsorBlock nebo matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Hlas zamítnut kvůli varování. Klikněte pro otevření chatu pro vyřešení, nebo se vraťte později, až budete mít čas.",
|
"message": "Hlas zamítnut kvůli varování. Klikněte pro otevření chatu pro vyřešení, nebo se vraťte později, až budete mít čas.",
|
||||||
|
|||||||
@@ -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": {
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"message": "Melden"
|
"message": "Melden"
|
||||||
},
|
},
|
||||||
"reportButtonInfo": {
|
"reportButtonInfo": {
|
||||||
"message": "Diesen Beitrag als falsch melden."
|
"message": "Beitrag als unzulässig melden."
|
||||||
},
|
},
|
||||||
"Dismiss": {
|
"Dismiss": {
|
||||||
"message": "Abbrechen"
|
"message": "Abbrechen"
|
||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Nochmal überspringen"
|
"message": "Nochmal überspringen"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Ton an"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pausiert"
|
"message": "Pausiert"
|
||||||
},
|
},
|
||||||
@@ -86,10 +89,10 @@
|
|||||||
"message": "Kein YouTube-Video gefunden.\nWenn dies falsch ist, aktualisiere den Tab."
|
"message": "Kein YouTube-Video gefunden.\nWenn dies falsch ist, aktualisiere den Tab."
|
||||||
},
|
},
|
||||||
"refreshSegments": {
|
"refreshSegments": {
|
||||||
"message": "Segment aktualisieren"
|
"message": "Segmente aktualisieren"
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Geschafft!"
|
"message": "Erfolg!"
|
||||||
},
|
},
|
||||||
"voted": {
|
"voted": {
|
||||||
"message": "Abgestimmt!"
|
"message": "Abgestimmt!"
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Benutzernamen festlegen"
|
"message": "Benutzernamen festlegen"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Öffentliche Benutzer-ID kopieren"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Tritt dem offiziellen Discord-Server bei und teile Anregungen und Feedback!"
|
"message": "Tritt dem offiziellen Discord-Server bei und teile Anregungen und Feedback!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Versteckt die Schaltflächen im YouTube-Videoplayer, um Segmente einzusenden."
|
"message": "Versteckt die Schaltflächen im YouTube-Videoplayer, um Segmente einzusenden."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Behalte \"Zum Highlight springen\"-Knopf in der Navigationsleiste"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Zeige Info-Knopf im Youtube-Videoplayer"
|
"message": "Zeige Info-Knopf im Youtube-Videoplayer"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Deaktiviere Info-Knopf im Youtube-Videoplayer"
|
"message": "Deaktiviere Info-Knopf im Youtube-Videoplayer"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Dieser Knopf öffnet ein Pop-up auf der Youtube-Seite."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Info-Button automatisch ausblenden"
|
"message": "Info-Button automatisch ausblenden"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Zeige den Löschen-Knopf im Youtube-Videoplayer"
|
"message": "Zeige den Löschen-Knopf im Youtube-Videoplayer"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Dieser Knopf im YouTube-Videoplayer löscht alle nicht übermittelten Segmente für das aktuelle Video."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Aktiviere das Zählen übersprungener Segmente"
|
"message": "Aktiviere das Zählen übersprungener Segmente"
|
||||||
},
|
},
|
||||||
@@ -227,6 +227,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Zeige Pop-up nach dem Überspringen eines Segments"
|
"message": "Zeige Pop-up nach dem Überspringen eines Segments"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Skip-Meldung in voller größe"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Kleine Skip-Meldung für Auto-Skips"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Alles kleine Skip-Meldungen"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "Verblasste Skip-Meldung für Auto-Skip"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "Alles verblasste Skip-Meldungen"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock lässt dich gesponserte Videosegmente, Intros, Outros, Interaktions-Erinnerungen, Musikvideoteile ohne Musik und andere nervige Teile von YouTube-Videos überspringen. SponsorBlock ist eine crowdsourced Browser-Erweiterung, in der jeder die Start- und Endzeit gesponserter Videosegmente und anderer Segmente von YouTube-Videos einreicht. Sobald eine Person diese Informationen einreicht, überspringen alle anderen mit dieser Erweiterung das gesponserte Segment.",
|
"message": "SponsorBlock lässt dich gesponserte Videosegmente, Intros, Outros, Interaktions-Erinnerungen, Musikvideoteile ohne Musik und andere nervige Teile von YouTube-Videos überspringen. SponsorBlock ist eine crowdsourced Browser-Erweiterung, in der jeder die Start- und Endzeit gesponserter Videosegmente und anderer Segmente von YouTube-Videos einreicht. Sobald eine Person diese Informationen einreicht, überspringen alle anderen mit dieser Erweiterung das gesponserte Segment.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Überspringen"
|
"message": "Überspringen"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Ton aus"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -295,6 +316,10 @@
|
|||||||
"message": "{0} übersprungen",
|
"message": "{0} übersprungen",
|
||||||
"description": "Example: Sponsor Skipped"
|
"description": "Example: Sponsor Skipped"
|
||||||
},
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "{0} stummgeschaltet",
|
||||||
|
"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)"
|
||||||
@@ -348,7 +373,7 @@
|
|||||||
"message": "Benutzer-ID importieren/exportieren"
|
"message": "Benutzer-ID importieren/exportieren"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Halte diese ID geheim. Sie ist dazu in der Lage dich eindeutig zu identifizieren und sollte mit niemanden geteilt werden."
|
"message": "Dies sollte geheim gehalten werden. Dies ist wie ein Passwort und sollte mit niemandem geteilt werden. Sollte es jemand haben, könnte er sich als dich ausgeben. Wenn du nach deiner öffentlichen Benutzer-ID suchst, klicke das \"Kopieren\"-Symbol bei deinem Benutzernamen im Popup."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Interne Benutzer-ID festlegen"
|
"message": "Interne Benutzer-ID festlegen"
|
||||||
@@ -414,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Upload-Knopf anzeigen"
|
"message": "Upload-Knopf anzeigen"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Dieser Knopf erscheint im YouTube-Videoplayer, nachdem du ein Videosegment markiert hast und dazu bereit bist, es zu übermitteln."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock Serveradresse"
|
"message": "SponsorBlock Serveradresse"
|
||||||
},
|
},
|
||||||
@@ -442,7 +464,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"
|
||||||
@@ -469,7 +491,7 @@
|
|||||||
"message": "Vorschau"
|
"message": "Vorschau"
|
||||||
},
|
},
|
||||||
"unsubmitted": {
|
"unsubmitted": {
|
||||||
"message": "Nicht eingereicht"
|
"message": "Nicht übermittelt"
|
||||||
},
|
},
|
||||||
"inspect": {
|
"inspect": {
|
||||||
"message": "Überprüfen"
|
"message": "Überprüfen"
|
||||||
@@ -577,12 +599,18 @@
|
|||||||
"autoSkip_POI": {
|
"autoSkip_POI": {
|
||||||
"message": "Automatisch zum Start springen"
|
"message": "Automatisch zum Start springen"
|
||||||
},
|
},
|
||||||
|
"manualSkip_POI": {
|
||||||
|
"message": "Beim Laden des Videos fragen"
|
||||||
|
},
|
||||||
"showOverlay_POI": {
|
"showOverlay_POI": {
|
||||||
"message": "In der Video-Zeitleiste anzeigen"
|
"message": "In Suchleiste anzeigen"
|
||||||
},
|
},
|
||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Alle Segmente automatisch überspringen, wenn ein nicht-Musiksegment vorhanden ist"
|
"message": "Alle Segmente automatisch überspringen, wenn ein nicht-Musiksegment vorhanden ist"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Segmente zulassen, die den Ton ausschalten anstatt zu überspringen"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Die Farbe ist falsch formatiert. Sie sollte ein 3-6-stelliger Hex-Code mit einer Raute am Anfang sein."
|
"message": "Die Farbe ist falsch formatiert. Sie sollte ein 3-6-stelliger Hex-Code mit einer Raute am Anfang sein."
|
||||||
},
|
},
|
||||||
@@ -622,6 +650,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!"
|
||||||
},
|
},
|
||||||
@@ -693,18 +724,91 @@
|
|||||||
"help": {
|
"help": {
|
||||||
"message": "Hilfe"
|
"message": "Hilfe"
|
||||||
},
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Verstanden",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
"experiementOptOut": {
|
"experiementOptOut": {
|
||||||
"message": "Abmeldung aller zukünftigen Experimente",
|
"message": "Aus allen zukünftigen Experimenten abmelden",
|
||||||
"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": "Dauerhaft verbergen"
|
"message": "Dauerhaft verbergen"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Du wurdest ermahnt und kannst zur Zeit keine Segmente einreichen. Uns ist nämlich aufgefallen, dass du ein paar gängige Fehler machst, die nicht bösartig sind. Um die Regeln klarzustellen laden wir dich zu einem kurzem Gespräch auf discord.gg/SponsorBlock oder matrix.to/#/+sponsor:ajay.app ein"
|
"message": "Du hast eine Warnung erhalten und kannst vorübergehend keine Segmente einreichen. Uns ist nämlich aufgefallen, dass du nicht bösartige Fehler in deinen Einreichungen machst. Bitte bestätige, dass du die Regeln verstanden hast. Darauffolgend können wir die Warnung entfernen. Du kannst diesem Chat auch mit discord.gg/SponsorBlock oder matrix.to/#/#sponsor:ajay.app beitreten"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Abstimmung wegen einer Warnung abgelehnt. Um über sie zu reden, klicke hier, oder schreibe uns später.",
|
"message": "Abstimmung wegen einer Warnung abgelehnt. Klicke hier um einen Chat zu öffnen, oder versuch es später erneut, wenn du Zeit hast.",
|
||||||
"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": "Spenden"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Verstecke Spendenlink"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "Danke fürs installieren von SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Bitte überprüfe die unten stehenden Optionen"
|
||||||
|
},
|
||||||
|
"helpPageFeatureDisclaimer": {
|
||||||
|
"message": "Viele Funktionen sind standardmäßig deaktiviert. Wenn du Intros und Outtros überspringen willst, Invidious verwenden willst, usw. aktiviere sie unten. Du kannst auch UI-Elemente verstecken/anzeigen."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"message": "Wie überspringen funktioniert"
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks1": {
|
||||||
|
"message": "Videosegmente werden automatisch übersprungen, wenn sie in der Datenbank gefunden werden. Du kannst das Popup öffnen, indem du auf das Erweiterungssymbol klickst, um eine Vorschau darüber zu erhalten, was diese sind."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks2": {
|
||||||
|
"message": "Wannimmer du ein Segment überspringst, wirst du benachrichtigt. Wenn das Timing falsch erscheint, kannst du as durch klicken auf den Downvote button downvoten! Du kannst auch im Popup voten."
|
||||||
|
},
|
||||||
|
"Submitting": {
|
||||||
|
"message": "Übermitteln"
|
||||||
|
},
|
||||||
|
"helpPageSubmitting1": {
|
||||||
|
"message": "Das übermitteln kann entweder im Popup durch das drücken vom \"Segment Started Jetzt\" Knopf oder im Videoplayer mit den Knöpfen im Player gemacht werden."
|
||||||
|
},
|
||||||
|
"helpPageSubmitting2": {
|
||||||
|
"message": "Mit einem Klick auf den Play-Knopf wird der Beginn eines Segments und mit dem klick auf den Stop-Knopf das ende eines Segments markiert. Du kannst mehrere Sponsoren vorbereiten, bevor du auf Absenden klickst. Das klicken des Upload-Knopfes wird die Segmente übermitteln. Das klicken des Mülleimers löscht es."
|
||||||
|
},
|
||||||
|
"Editing": {
|
||||||
|
"message": "Bearbeitung"
|
||||||
|
},
|
||||||
|
"helpPageEditing1": {
|
||||||
|
"message": "Wenn du etwas falsch gemacht hast, kannst du ein Segment bearbeiten oder löschen nachdem du auf den Auf-Pfeil Knopf gedrückt hast."
|
||||||
|
},
|
||||||
|
"helpPageTooSlow": {
|
||||||
|
"message": "Das ist zu langsam"
|
||||||
|
},
|
||||||
|
"helpPageTooSlow1": {
|
||||||
|
"message": "Es gibt Hotkeys, wenn du diese verwenden möchtest. Drücke die Semikolon-Taste um den Anfang/das Ende eines Sponsor-Segments zu markieren und die Abostrophe-Taste um es zu übermitteln. Diese können in den Optionen geändert werden. Wenn du keine QWERTY-Tastatur verwendest, solltest du eventuell die Keybinds ändern."
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase": {
|
||||||
|
"message": "Kann ich eine kopie der Datenbank erhalten? Was passiert wenn du verschwindest?"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase1": {
|
||||||
|
"message": "Die Datenbank ist öffentlich und verfügbar unter"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase2": {
|
||||||
|
"message": "Der Quellcode ist frei verfügbar. Selbst wenn mir etwas passieren würde wären deine Übermittlungen nicht verloren."
|
||||||
|
},
|
||||||
|
"helpPageNews": {
|
||||||
|
"message": "Nachrichten und wie es gemacht wird"
|
||||||
|
},
|
||||||
|
"helpPageSourceCode": {
|
||||||
|
"message": "Wo kann ich den Quellcode kriegen?"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Mitwirkende"
|
||||||
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Neu! Gehe mit einem Klick zum Punkt des Videos mit der neuen \"Hervorheben\" Kategorie"
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "Erfahre mehr"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Reskip"
|
"message": "Reskip"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Unmute"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Paused"
|
"message": "Paused"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -182,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "This hides the buttons that appear on the YouTube player to submit skip segments."
|
"message": "This hides the buttons that appear on the YouTube player to submit skip segments."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Keep Skip To Highlight Button On Player"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Show Info Button On YouTube Player"
|
"message": "Show Info Button On YouTube Player"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Hide Info Button On YouTube Player"
|
"message": "Hide Info Button On YouTube Player"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "This is the button that opens up a popup in the YouTube page."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Auto-hide Info Button"
|
"message": "Auto-hide Info Button"
|
||||||
},
|
},
|
||||||
@@ -200,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Show Delete Button On YouTube Player"
|
"message": "Show Delete Button On YouTube Player"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "This is the button on the YouTube player that will clear all your un-submitted segments for the current video."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Enable Skip Count Tracking"
|
"message": "Enable Skip Count Tracking"
|
||||||
},
|
},
|
||||||
@@ -302,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Skip"
|
"message": "Skip"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Mute"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -313,6 +316,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)"
|
||||||
@@ -366,7 +373,7 @@
|
|||||||
"message": "Import/Export Your UserID"
|
"message": "Import/Export Your UserID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "This should be kept private. This is like a password and should not be shared with anyone. If someone has this, they can impersonate you."
|
"message": "This should be kept private. This is like a password and should not be shared with anyone. If someone has this, they can impersonate you. If you are looking for your public userID, click the clipboard icon in the popup."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Set UserID"
|
"message": "Set UserID"
|
||||||
@@ -432,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Show Upload Button"
|
"message": "Show Upload Button"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "This button appears on the YouTube player after you have selected a timestamp and are ready to submit."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock Server Address"
|
"message": "SponsorBlock Server Address"
|
||||||
},
|
},
|
||||||
@@ -604,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Auto skip all segments when there is a non-music segment"
|
"message": "Auto skip all segments when there is a non-music segment"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Allow segments that mute audio instead of skip"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Your color is formatted incorrectly. It should be a 3 or 6 digit hex code with a number sign at the beginning."
|
"message": "Your color is formatted incorrectly. It should be a 3 or 6 digit hex code with a number sign at the beginning."
|
||||||
},
|
},
|
||||||
@@ -643,6 +650,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!"
|
||||||
},
|
},
|
||||||
@@ -726,7 +736,7 @@
|
|||||||
"message": "Hide forever"
|
"message": "Hide forever"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "You got a warning and cannot submit segments temporarily. This means that we noticed you were making some common mistakes that are not malicious, and we just want to clarify the rules. You can also join this chat using discord.gg/SponsorBlock or matrix.to/#/+sponsor:ajay.app"
|
"message": "You got a warning and cannot submit segments temporarily. This means that we noticed you were making some common mistakes that are not malicious, please just confirm that you understand the rules and we will remove the warning. You can also join this chat using discord.gg/SponsorBlock or matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Vote rejected due to a warning. Click to open a chat to resolve it, or come back later when you have time.",
|
"message": "Vote rejected due to a warning. Click to open a chat to resolve it, or come back later when you have time.",
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Escoger Nombre De Usuario"
|
"message": "Escoger Nombre De Usuario"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Copiar el ID de usuario público"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "¡Únete al servidor oficial de discord para darnos sugerencias y comentarios!"
|
"message": "¡Únete al servidor oficial de discord para darnos sugerencias y comentarios!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Esto oculta los botones que aparecen en el reproductor de YouTube que se usan para enviar segmentos saltados."
|
"message": "Esto oculta los botones que aparecen en el reproductor de YouTube que se usan para enviar segmentos saltados."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Mantener el Botón de \"Saltar a Destacado\" en el Reproductor"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Mostrar botón de información en el reproductor de YouTube"
|
"message": "Mostrar botón de información en el reproductor de YouTube"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Ocultar botón de información en el reproductor de YouTube"
|
"message": "Ocultar botón de información en el reproductor de YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Este es el botón que abre una ventana en la página de YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Ocular automáticamente el Botón de Información"
|
"message": "Ocular automáticamente el Botón de Información"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Mostrar botón de eliminar en el reproductor de YouTube"
|
"message": "Mostrar botón de eliminar en el reproductor de YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Este es el botón en el reproductor de YouTube que eliminará todos tus segmentos no enviados para el vídeo actual."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Habilitar el conteo de omisiones"
|
"message": "Habilitar el conteo de omisiones"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,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)"
|
||||||
@@ -310,6 +316,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)"
|
||||||
@@ -360,16 +370,16 @@
|
|||||||
"message": "Comprueba status.sponsor.ajay.app para ver el estado del servidor."
|
"message": "Comprueba status.sponsor.ajay.app para ver el estado del servidor."
|
||||||
},
|
},
|
||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "Importar/Exportar tu UserID"
|
"message": "Importar/Exportar tu ID de usuario"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Esto debería mantenerse privado. Es como una contraseña y no debe ser compartido con nadie. Si alguien tiene esto, pueden imitarte."
|
"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 la ID de usuario"
|
"message": "Establecer el ID de usuario"
|
||||||
},
|
},
|
||||||
"userIDChangeWarning": {
|
"userIDChangeWarning": {
|
||||||
"message": "Advertencia: El cambio de la ID de usuario es irreversible. ¿Está seguro de que le desea hacerlo? Asegúrese de hacer una copia de respaldo de la anterior por si acaso."
|
"message": "Advertencia: El cambio del ID de usuario es irreversible. ¿Está seguro de que le desea hacerlo? Asegúrese de hacer una copia de respaldo de la anterior por si acaso."
|
||||||
},
|
},
|
||||||
"createdBy": {
|
"createdBy": {
|
||||||
"message": "Creado Por"
|
"message": "Creado Por"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Mostrar botón de subida"
|
"message": "Mostrar botón de subida"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Este botón aparece en el reproductor de YouTube después de que has seleccionado una marca de tiempo y estas listo para enviar."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Dirección del servidor SponsorBlock"
|
"message": "Dirección del servidor SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,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 +650,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!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Ocultar para siempre"
|
"message": "Ocultar para siempre"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Ha recibido una advertencia y no puede enviar segmentos temporalmente. Esto significa que hemos notado de que estaba cometiendo algunos errores comunes que no son maliciosos, y solo queremos aclarar las reglas. Puedes unirte a este chat usando discord.gg/SponsorBlock o matrix.to/#/+sponsor:ajay.app"
|
"message": "Has recibido una advertencia y no puedes enviar segmentos temporalmente. Esto significa que hemos notado que estabas cometiendo algunos errores comunes que no son maliciosos, por favor, solo confirma que entiendes las reglas y anularemos la advertencia. También puedes unirte a este chat usando discord.gg/SponsorBlock o matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Voto rechazado debido a una advertencia. Haga clic aquí para abrir un chat para resolverlo, o vuelva más tarde cuando tenga tiempo.",
|
"message": "Voto rechazado debido a una advertencia. Haga clic aquí para abrir un chat para resolverlo, o vuelva más tarde cuando tenga tiempo.",
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Jäta uuesti vahele"
|
"message": "Jäta uuesti vahele"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Tühista vaigistus"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pausil"
|
"message": "Pausil"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Määra kasutajanimi"
|
"message": "Määra kasutajanimi"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Kopeeri avalik UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Tule liitu ametliku Discordi serveriga, et anda soovitusi ja tagasisidet!"
|
"message": "Tule liitu ametliku Discordi serveriga, et anda soovitusi ja tagasisidet!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "See peidab nupud, mis kuvatakse YouTube'i mängijal vahelejätmiste segmentide saatmiseks."
|
"message": "See peidab nupud, mis kuvatakse YouTube'i mängijal vahelejätmiste segmentide saatmiseks."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Hoia esiletõstuni vahelejätmise nuppu mängijal"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Kuva YouTube'i mängijal infonupp"
|
"message": "Kuva YouTube'i mängijal infonupp"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Peida YouTube'i mängijal infonupp"
|
"message": "Peida YouTube'i mängijal infonupp"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "See on see nupp, mis avab YouTube'i lehel hüpiku."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Peida infonupp automaatselt"
|
"message": "Peida infonupp automaatselt"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Kuva YouTube'i mängijal kustutusnupp"
|
"message": "Kuva YouTube'i mängijal kustutusnupp"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "YouTube'i mängija nupp, mis tühjendab kõik sinu praeguse video saatmata segmendid."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Luba vahelejätmiste arvu jälgimine"
|
"message": "Luba vahelejätmiste arvu jälgimine"
|
||||||
},
|
},
|
||||||
@@ -227,6 +227,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Kuva segmendi vahelejätmisel teatis"
|
"message": "Kuva segmendi vahelejätmisel teatis"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Täissuuruses vahelejätmise teavitused"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Väikesed vahelejätmise teavitused autom. vahelejätmistele"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Kõik vahelejätmise teavitused on väikesed"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "Hääbuvad vahelejätmise teavitused autom. vahelejätmistele"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "Kõik vahelejätmise teavitused hääbuvad"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock lubab sul vahele jätta sponsorid, vaheajad, kanali tellimise meeldetuletused ja muud YouTube'i videote tüütud kohad. SponsorBlock on rahva ühistööna toimiv brauserilaiendus, mis lubab igaühel saata sponsoreeritud segmendi algus- ja lõpuaegu ning teiste video segmentide aegu. Kui üks inimene saadab sponsoreeritud segmendi, jätavad teised laienduse kasutajad kohe selle vahele. Laiendus võimaldab ka muusikavideotel mitte-muusika jaotised vahele jätta.",
|
"message": "SponsorBlock lubab sul vahele jätta sponsorid, vaheajad, kanali tellimise meeldetuletused ja muud YouTube'i videote tüütud kohad. SponsorBlock on rahva ühistööna toimiv brauserilaiendus, mis lubab igaühel saata sponsoreeritud segmendi algus- ja lõpuaegu ning teiste video segmentide aegu. Kui üks inimene saadab sponsoreeritud segmendi, jätavad teised laienduse kasutajad kohe selle vahele. Laiendus võimaldab ka muusikavideotel mitte-muusika jaotised vahele jätta.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Jäta vahele"
|
"message": "Jäta vahele"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Vaigista"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -295,6 +316,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)"
|
||||||
@@ -348,7 +373,7 @@
|
|||||||
"message": "Impordi/ekspordi oma UserID"
|
"message": "Impordi/ekspordi oma UserID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Seda tuleks privaatsena hoida. See on nagu parool ning seda ei tohiks kellegagi jagada. Kui kellelgi see on, saavad nad sinuna esineda."
|
"message": "Seda tuleks privaatsena hoida. See on nagu parool ning seda ei tohiks kellegagi jagada. Kui kellelgi see on, saavad nad sinuna esineda.\nKui otsid avalikku UserID'd, klõpsa hüpikus olevat lõikelaua ikooni."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Seadista UserID"
|
"message": "Seadista UserID"
|
||||||
@@ -414,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Kuva üleslaadimisnupp"
|
"message": "Kuva üleslaadimisnupp"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "See nupp kuvatakse YouTube'i mängijal, kui oled ajatempli ära valinud ning saatmiseks valmis."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlocki serveri aadress"
|
"message": "SponsorBlocki serveri aadress"
|
||||||
},
|
},
|
||||||
@@ -586,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Jäta automaatselt kõik segmendid vahele, kui eksisteerib mitte-muusika segment"
|
"message": "Jäta automaatselt kõik segmendid vahele, kui eksisteerib mitte-muusika segment"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Luba segmente, mis vahelejätmise asemel vaigistavad heli"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Sinu värv on sobimatult vormistatud. See peaks olema 3- või 6-numbriline 16-kümmendsüsteemis kood, arvu ees trellid."
|
"message": "Sinu värv on sobimatult vormistatud. See peaks olema 3- või 6-numbriline 16-kümmendsüsteemis kood, arvu ees trellid."
|
||||||
},
|
},
|
||||||
@@ -625,6 +650,9 @@
|
|||||||
"message": "Kategooriaga \"{0}\" segmentide saatmiseks pead selle enne valikutes lubama. Sind suunatakse nüüd valikutesse.",
|
"message": "Kategooriaga \"{0}\" segmentide saatmiseks pead selle enne valikutes lubama. Sind suunatakse nüüd valikutesse.",
|
||||||
"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": "Hoiatus: Seda tüüpi segmenti saab korraga aktiivne olla vaid üks. Mitme saatmine põhjustab suvalise segmendi kuvamise."
|
||||||
|
},
|
||||||
"youMustSelectACategory": {
|
"youMustSelectACategory": {
|
||||||
"message": "Sa pead enne saatmist igale segmendile kategooria valima!"
|
"message": "Sa pead enne saatmist igale segmendile kategooria valima!"
|
||||||
},
|
},
|
||||||
@@ -708,7 +736,7 @@
|
|||||||
"message": "Peida igaveseks"
|
"message": "Peida igaveseks"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Sa said hoiatuse ning ei saa ajutiselt segmente saata. See tähendab, et me leidsime sind tegemast teatud sagedasi, mitte-pahatahtlikke vigu, ning soovime sulle meie reegleid täpsustada (inglise keeles). Sa võid selle vestlusega liituda ka discord.gg/SponsorBlock või matrix.to/#/+sponsor:ajay.app kaudu."
|
"message": "Sa said hoiatuse ning ei saa ajutiselt segmente saata. See tähendab, et me leidsime sind tegemast teatud sagedasi, mitte-pahatahtlikke vigu - palun kinnita (inglise keeles), et mõistad reegleid ning me eemaldame hoiatuse. Sa võid selle vestlusega liituda ka discord.gg/SponsorBlock või matrix.to/#/#sponsor:ajay.app kaudu."
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Hääletus hoiatuse tõttu tagasilükatud. Klõpsa, et avada selle lahendamiseks vestlus või tule hiljem tagasi, kui aega saad.",
|
"message": "Hääletus hoiatuse tõttu tagasilükatud. Klõpsa, et avada selle lahendamiseks vestlus või tule hiljem tagasi, kui aega saad.",
|
||||||
@@ -723,9 +751,18 @@
|
|||||||
"helpPageThanksForInstalling": {
|
"helpPageThanksForInstalling": {
|
||||||
"message": "Täname SponsorBlocki paigaldamise eest."
|
"message": "Täname SponsorBlocki paigaldamise eest."
|
||||||
},
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Palun vaata allolevad valikud üle"
|
||||||
|
},
|
||||||
|
"helpPageNews": {
|
||||||
|
"message": "Uudised ja kuidas see on valmistatud"
|
||||||
|
},
|
||||||
"Credits": {
|
"Credits": {
|
||||||
"message": "Tiitrid"
|
"message": "Tiitrid"
|
||||||
},
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Uus! Mine ühe klõpsuga video eesmärgi juurde uue \"esiletõstu\" kategooriaga"
|
||||||
|
},
|
||||||
"LearnMore": {
|
"LearnMore": {
|
||||||
"message": "Lisateave"
|
"message": "Lisateave"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,110 @@
|
|||||||
"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."
|
||||||
|
},
|
||||||
|
"502": {
|
||||||
|
"message": "به نظر میرسد سرور زیر فشار است. چند ثانیهی دیگر دوباره امتحان کنید."
|
||||||
|
},
|
||||||
|
"errorCode": {
|
||||||
|
"message": "کد خطا: "
|
||||||
|
},
|
||||||
|
"skip": {
|
||||||
|
"message": "رد کردن"
|
||||||
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "بیصدا"
|
||||||
|
},
|
||||||
|
"minLower": {
|
||||||
|
"message": "دقیقه"
|
||||||
|
},
|
||||||
|
"hourLower": {
|
||||||
|
"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": "کمک مالی"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Ohita uudelleen"
|
"message": "Ohita uudelleen"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Poista mykistys"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pysäytetty"
|
"message": "Pysäytetty"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Aseta käyttäjänimi"
|
"message": "Aseta käyttäjänimi"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Kopio julkinen UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Liity mukaan viralliselle Discord-palvelimelle, jotta voit antaa ehdotuksia ja palautetta!"
|
"message": "Liity mukaan viralliselle Discord-palvelimelle, jotta voit antaa ehdotuksia ja palautetta!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Tämä piilottaa YouTuben soittimessa näkyvät, ohitettavien aikojen lähettämiseen käytetyt painikkeet."
|
"message": "Tämä piilottaa YouTuben soittimessa näkyvät, ohitettavien aikojen lähettämiseen käytetyt painikkeet."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Pidä \"Ohita kohtaan: Kohokohta\" -painike soittimessa"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Näytä info-painike YouTuben soittimessa"
|
"message": "Näytä info-painike YouTuben soittimessa"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Piilota info-painike YouTuben soittimessa"
|
"message": "Piilota info-painike YouTuben soittimessa"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Tämä on painike, joka avaa ponnahdusikkunan YouTube-sivulla."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Piilota info-painike automaattisesti"
|
"message": "Piilota info-painike automaattisesti"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Näytä poista-painike YouTuben soittimessa"
|
"message": "Näytä poista-painike YouTuben soittimessa"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Tämä on YouTuben soittimen painike, joka poistaa kaikki kyseisen videon sponsorointikohdat, joita et ole vielä lähettänyt."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Ota ohitusten lukumäärän seuranta käyttöön"
|
"message": "Ota ohitusten lukumäärän seuranta käyttöön"
|
||||||
},
|
},
|
||||||
@@ -299,19 +299,29 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Ohita"
|
"message": "Ohita"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Mykistä"
|
||||||
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "Ohita {0}?"
|
"message": "Ohita {0}?"
|
||||||
},
|
},
|
||||||
|
"mute_category": {
|
||||||
|
"message": "Mykistä {0}?"
|
||||||
|
},
|
||||||
"skip_to_category": {
|
"skip_to_category": {
|
||||||
"message": "Ohita {0}an?",
|
"message": "Ohita kohtaan: {0}",
|
||||||
"description": "Used for skipping to things (Skip to Highlight)"
|
"description": "Used for skipping to things (Skip to Highlight)"
|
||||||
},
|
},
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "{0} ohitettu",
|
"message": "{0} ohitettu",
|
||||||
"description": "Example: Sponsor Skipped"
|
"description": "Example: Sponsor Skipped"
|
||||||
},
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "{0} Mykistetty",
|
||||||
|
"description": "Example: Sponsor Muted"
|
||||||
|
},
|
||||||
"skipped_to_category": {
|
"skipped_to_category": {
|
||||||
"message": "Ohitettiin {0}an",
|
"message": "Ohitettiin kohtaan: {0}",
|
||||||
"description": "Used for skipping to things (Skipped to Highlight)"
|
"description": "Used for skipping to things (Skipped to Highlight)"
|
||||||
},
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Tuo/vie UserID:si"
|
"message": "Tuo/vie UserID:si"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Tämä tulisi pitää yksityisenä. Tämä on kuin salasana eikä sitä pitäisi jakaa kenellekään. Jos joku saa tämän, hän voi esiintyä sinuna."
|
"message": "Tämä pitäisi pitää yksityisenä. Tämä on kuin salasana, eikä sitä pitäisi jakaa kenenkään kanssa. Jos jollakulla on tämä, he voivat esiintyä sinuna. Jos etsit julkista userID:täsi, napsauta leikepöydän kuvaketta ponnahdusikkunassa."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Aseta UserID"
|
"message": "Aseta UserID"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Näytä lähetä-painike"
|
"message": "Näytä lähetä-painike"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Tämä painike ilmestyy YouTube-soittimeen, kun olet valinnut aikaleiman ja olet valmis lähettämään sen."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock-palvelimen osoite"
|
"message": "SponsorBlock-palvelimen osoite"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Ohita kaikki segmentit automaattisesti, kun videossa on \"Musiikiton\" segmentti"
|
"message": "Ohita kaikki segmentit automaattisesti, kun videossa on \"Musiikiton\" segmentti"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Salli segmentit, jotka mykistävät äänen ohittamisen sijaan"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Väriformaattisi on muotoiltu väärin. Sen pitäisi olla 3 tai 6 numeroinen hex-koodi, jossa on # alussa."
|
"message": "Väriformaattisi on muotoiltu väärin. Sen pitäisi olla 3 tai 6 numeroinen hex-koodi, jossa on # alussa."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,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ä!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Piilota ikuisesti"
|
"message": "Piilota ikuisesti"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Sait varoituksen ja et voi lähettää segmenttejä väliaikaisesti. Tämä tarkoittaa, että huomasimme, että teit joitakin yleisiä virheitä, jotka eivät ole tahallisia, ja haluamme vain selventää säännöt. Voit myös liittyä tähän keskusteluun käyttäen discord.gg/SponsorBlock tai matrix.to/#/+sponsor:ajay.app"
|
"message": "Sait varoituksen ja et voi lähettää segmenttejä väliaikaisesti. Tämä tarkoittaa, että huomasimme, että teit joitakin yleisiä virheitä, jotka eivät ole tahallisia, joten vahvistakaa, että ymmärrätte säännöt ja poistamme varoituksen. Voit myös liittyä tähän keskusteluun käyttäen discord.gg/SponsorBlock tai matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Ääni hylättiin varoituksen takia. Klikkaa avataksesi chatin sen ratkaisemiseksi, tai tule takaisin myöhemmin kun sinulla on siihen aikaa.",
|
"message": "Ääni hylättiin varoituksen takia. Klikkaa avataksesi chatin sen ratkaisemiseksi, tai tule takaisin myöhemmin kun sinulla on siihen aikaa.",
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Sauter"
|
"message": "Sauter"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Réactiver le son"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "En pause"
|
"message": "En pause"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Choisir un pseudonyme"
|
"message": "Choisir un pseudonyme"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Copier l'ID utilisateur"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Rejoignez le serveur Discord officiel pour toutes suggestions ou remarques!"
|
"message": "Rejoignez le serveur Discord officiel pour toutes suggestions ou remarques!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Cacher le bouton Info sur le lecteur YouTube"
|
"message": "Cacher le bouton Info sur le lecteur YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Il s'agit du bouton qui ouvre l'encart sur la page YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Masquer Automatiquement Le Button Info"
|
"message": "Masquer Automatiquement Le Button Info"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Montrer le bouton Supprimer sur le lecteur YouTube"
|
"message": "Montrer le bouton Supprimer sur le lecteur YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Il s'agit du bouton qui permet de supprimer tous les segments commerciaux depuis le lecteur YouTube."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Activer le suivi du nombre de sauts de segments"
|
"message": "Activer le suivi du nombre de sauts de segments"
|
||||||
},
|
},
|
||||||
@@ -227,6 +224,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Notifier après qu'un segment ait été sauté"
|
"message": "Notifier après qu'un segment ait été sauté"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Notifications de passage"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Petite notifications de passage pour l'auto skip"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Toute les petites notifications de passage"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "Notifications de passage qui disparaissent pour l'auto skip"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "Toute les notifications de passage qui disparaissent"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock vous permet de passer les sponsors, les intros, les outros, les rappels d'abonnement et autres parties ennuyeuses des vidéos YouTube. SponsorBlock est une extension de navigateur qui permet à n'importe qui de soumettre les temps de début et de fin des segments sponsorisés et d'autres segments de vidéos YouTube. Une fois qu'une personne a soumis ces informations, toutes les autres personnes possédant cette extension passeront directement les segments sponsorisés. Vous pouvez également sauter les sections non musicales des vidéos musicales.",
|
"message": "SponsorBlock vous permet de passer les sponsors, les intros, les outros, les rappels d'abonnement et autres parties ennuyeuses des vidéos YouTube. SponsorBlock est une extension de navigateur qui permet à n'importe qui de soumettre les temps de début et de fin des segments sponsorisés et d'autres segments de vidéos YouTube. Une fois qu'une personne a soumis ces informations, toutes les autres personnes possédant cette extension passeront directement les segments sponsorisés. Vous pouvez également sauter les sections non musicales des vidéos musicales.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +296,31 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Passer"
|
"message": "Passer"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Couper le son"
|
||||||
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "Passer {0} ?"
|
"message": "Passer {0} ?"
|
||||||
},
|
},
|
||||||
|
"mute_category": {
|
||||||
|
"message": "Mute {0}?"
|
||||||
|
},
|
||||||
|
"skip_to_category": {
|
||||||
|
"message": "Passer à {0}?",
|
||||||
|
"description": "Used for skipping to things (Skip to Highlight)"
|
||||||
|
},
|
||||||
|
"skipped": {
|
||||||
|
"message": "{0} ignoré",
|
||||||
|
"description": "Example: Sponsor Skipped"
|
||||||
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "{0} mis en sourdine",
|
||||||
|
"description": "Example: Sponsor Muted"
|
||||||
|
},
|
||||||
|
"skipped_to_category": {
|
||||||
|
"message": "Sauté à {0}",
|
||||||
|
"description": "Used for skipping to things (Skipped to Highlight)"
|
||||||
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
"message": "Désactiver le passage automatique"
|
"message": "Désactiver le passage automatique"
|
||||||
},
|
},
|
||||||
@@ -336,7 +370,7 @@
|
|||||||
"message": "Importer/Exporter Votre ID d'Utilisateur"
|
"message": "Importer/Exporter Votre ID d'Utilisateur"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Cette information doit rester confidentielle. C'est comme un mot de passe et ne devrait pas être partagé avec quiconque. Si quelqu'un l'obtient, il pourra se faire passer pour vous."
|
"message": "Cela devrait rester privé. C'est comme un mot de passe et ne devrait être partagé avec personne. Si quelqu'un a cela, il peut vous usurper. Si vous recherchez votre identifiant d'utilisateur public, cliquez sur l'icône du presse-papiers dans le popup."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Définir \"UserID\""
|
"message": "Définir \"UserID\""
|
||||||
@@ -402,9 +436,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Afficher le bouton de téléchargement"
|
"message": "Afficher le bouton de téléchargement"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Ce bouton apparaît sur le lecteur YouTube dès qu'un segment est prêt à être envoyé."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Adresse du serveur SponsorBlock"
|
"message": "Adresse du serveur SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -538,6 +569,12 @@
|
|||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "Hors musique"
|
"message": "Hors musique"
|
||||||
},
|
},
|
||||||
|
"category_poi_highlight": {
|
||||||
|
"message": "Surligner"
|
||||||
|
},
|
||||||
|
"category_poi_highlight_description": {
|
||||||
|
"message": "La partie de la vidéo que la plupart des gens veulent voir. Similaire à \"la vidéo commence à x mins\"."
|
||||||
|
},
|
||||||
"category_livestream_messages": {
|
"category_livestream_messages": {
|
||||||
"message": "Stream : lecture de dons et messages"
|
"message": "Stream : lecture de dons et messages"
|
||||||
},
|
},
|
||||||
@@ -556,6 +593,21 @@
|
|||||||
"disable": {
|
"disable": {
|
||||||
"message": "Désactiver"
|
"message": "Désactiver"
|
||||||
},
|
},
|
||||||
|
"autoSkip_POI": {
|
||||||
|
"message": "Passer automatiquement au début"
|
||||||
|
},
|
||||||
|
"manualSkip_POI": {
|
||||||
|
"message": "Demander lors du chargement de la vidéo"
|
||||||
|
},
|
||||||
|
"showOverlay_POI": {
|
||||||
|
"message": "Afficher dans la barre de recherche"
|
||||||
|
},
|
||||||
|
"autoSkipOnMusicVideos": {
|
||||||
|
"message": "Ignorer automatiquement tous les segments lorsqu'il y a un segment non-musical"
|
||||||
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Autoriser les segments qui bloquent l'audio au lieu de le passer"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Votre couleur est mal formatée. Il devrait s'agir d'un code hexadécimal à 3 ou 6 chiffres avec un signe numérique au début."
|
"message": "Votre couleur est mal formatée. Il devrait s'agir d'un code hexadécimal à 3 ou 6 chiffres avec un signe numérique au début."
|
||||||
},
|
},
|
||||||
@@ -595,6 +647,9 @@
|
|||||||
"message": "Pour envoyer des segments de la catégorie \"{0}\", vous devez l'activer dans les options. Vous allez être redirigé vers les options maintenant.",
|
"message": "Pour envoyer des segments de la catégorie \"{0}\", vous devez l'activer dans les options. Vous allez être redirigé vers les options maintenant.",
|
||||||
"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": "Avertissement: Ce type de segment peut avoir au maximum un seul actif à la fois. En soumettant plusieurs segments, un seul aléatoire sera affiché."
|
||||||
|
},
|
||||||
"youMustSelectACategory": {
|
"youMustSelectACategory": {
|
||||||
"message": "Vous devez sélectionner une catégorie pour tous les segments que vous soumettez !"
|
"message": "Vous devez sélectionner une catégorie pour tous les segments que vous soumettez !"
|
||||||
},
|
},
|
||||||
@@ -666,11 +721,88 @@
|
|||||||
"help": {
|
"help": {
|
||||||
"message": "Aide"
|
"message": "Aide"
|
||||||
},
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Compris",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
"experiementOptOut": {
|
"experiementOptOut": {
|
||||||
"message": "Se désinscrire de toutes les futures expériences",
|
"message": "Se désinscrire de toutes les futures expériences",
|
||||||
"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": "Cacher pour toujours"
|
"message": "Cacher pour toujours"
|
||||||
|
},
|
||||||
|
"voteRejectedWarning": {
|
||||||
|
"message": "Le vote a été rejeté en raison d'un avertissement. Cliquez pour ouvrir un chat et y mettre fin , ou revenez plus tard lorsque vous avez le temps.",
|
||||||
|
"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": "Faire un don"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Cacher le lien de don"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "Merci d'avoir installé SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Veuillez vérifier les options ci-dessous"
|
||||||
|
},
|
||||||
|
"helpPageFeatureDisclaimer": {
|
||||||
|
"message": "De nombreuses fonctionnalités sont désactivées par défaut. Si vous voulez ignorer les intros, outros, utiliser Invidious, etc., activez-les ci-dessous. Vous pouvez également masquer/afficher les éléments de l'interface."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"message": "Comment fonctionne le saut d'un segment"
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks1": {
|
||||||
|
"message": "Les segments vidéo seront automatiquement ignorés s'ils sont trouvés dans la base de données. Vous pouvez ouvrir le popup en cliquant sur l'icône de l'extension pour obtenir un aperçu de ces segments."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks2": {
|
||||||
|
"message": "À chaque fois que vous sautez un segment, vous en serez averti. Si le timing semble incorrect, vous pouvez disliker le segment, vous pouvez également voter dans le popup."
|
||||||
|
},
|
||||||
|
"Submitting": {
|
||||||
|
"message": "Soumission en cours"
|
||||||
|
},
|
||||||
|
"helpPageSubmitting1": {
|
||||||
|
"message": "La soumission peut être effectuée dans le popup en appuyant sur le bouton \"le segment commence maintenant\" ou dans le lecteur vidéo avec les boutons du lecteur."
|
||||||
|
},
|
||||||
|
"helpPageSubmitting2": {
|
||||||
|
"message": "Cliquer sur le bouton de lecture indique le début d'un segment et cliquer sur l'icône d'arrêt indique la fin. Vous pouvez préparer plusieurs sponsors avant d'appuyer sur Soumettre. Cliquer sur le bouton de soumission enverra le segment. Cliquer sur le poubelle supprimera vos segments."
|
||||||
|
},
|
||||||
|
"Editing": {
|
||||||
|
"message": "Édition en cours"
|
||||||
|
},
|
||||||
|
"helpPageEditing1": {
|
||||||
|
"message": "Si vous avez fait une erreur, vous pouvez modifier ou supprimer vos segments après avoir cliqué sur le bouton avec la flèche vers le haut."
|
||||||
|
},
|
||||||
|
"helpPageTooSlow": {
|
||||||
|
"message": "Ceci est trop lent"
|
||||||
|
},
|
||||||
|
"helpPageTooSlow1": {
|
||||||
|
"message": "Il y a des raccourcis clavier si vous voulez les utiliser. Appuyez sur la touche point-virgule pour indiquer le début / la fin d'un segment sponsorisé et cliquez sur l'apostrophe pour soumettre. Cela peut être modifié dans les options. Si vous n'utilisez pas un clavier QWERTY, vous devriez probablement changer la touche assignée de base."
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase": {
|
||||||
|
"message": "Puis-je obtenir une copie de la base de données ? Que se passe-t-il si vous disparaissez ?"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase1": {
|
||||||
|
"message": "La base de données est publique et disponible à"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase2": {
|
||||||
|
"message": "Le code source est librement disponible. Donc, même si il m'arrive quelque chose, vos soumissions ne seront pas perdues."
|
||||||
|
},
|
||||||
|
"helpPageNews": {
|
||||||
|
"message": "Nouvelles et comment elles sont faites"
|
||||||
|
},
|
||||||
|
"helpPageSourceCode": {
|
||||||
|
"message": "Où puis-je obtenir le code source ?"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Crédits"
|
||||||
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Nouveau! Aller à l'essentiel de la vidéo en un clic avec la nouvelle catégorie points essentiels"
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "En savoir plus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,9 +94,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "התקבלה שגיאת חיבור. קוד השגיאה: "
|
"message": "התקבלה שגיאת חיבור. קוד השגיאה: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "האם אתה רוצה לדווח עבור סרטון שמספר הזיהוי שלו הוא"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "נקה מקטעים"
|
"message": "נקה מקטעים"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -179,9 +176,6 @@
|
|||||||
"hoursLower": {
|
"hoursLower": {
|
||||||
"message": "h"
|
"message": "h"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "Ovo bi trebalo ostati privatno. slično je lozinki i ne bi se smjelo dijeliti ni s kime. Ako netko ovo ima, mogu se lažno predstavljati kao ti."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Postavi UserID"
|
"message": "Postavi UserID"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -185,9 +182,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Info gomb elrejtése a YouTube lejátszón"
|
"message": "Info gomb elrejtése a YouTube lejátszón"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Ez a gomb felhoz egy felugró dobozt a YouTube oldalon."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Automatikus elrejtése az Információ Gombnak"
|
"message": "Automatikus elrejtése az Információ Gombnak"
|
||||||
},
|
},
|
||||||
@@ -197,9 +191,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Törlés gomb mutatása a YouTube lejátszón"
|
"message": "Törlés gomb mutatása a YouTube lejátszón"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Ez egy gomb a lejátszón, ami törli az összes beküldetlen szegmensét a jelenlegi videón."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Átugrás-számláló követés bekapcsolása"
|
"message": "Átugrás-számláló követés bekapcsolása"
|
||||||
},
|
},
|
||||||
@@ -329,9 +320,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "UserID importálása / exportálása"
|
"message": "UserID importálása / exportálása"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "Ezt titokban kell tartani. Olyan, mint egy jelszó, nem szabad senkivel megosztania. Ha valakinek megvan, megszemélyesítheti Önt."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "UserID beállítása"
|
"message": "UserID beállítása"
|
||||||
},
|
},
|
||||||
@@ -377,9 +365,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Feltöltés gomb megjelenítése"
|
"message": "Feltöltés gomb megjelenítése"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Ez a gomb a YouTube lejátszón jelenik meg, miután kiválasztott egy időtartamot és készen áll a beküldésre."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock szerver címe"
|
"message": "SponsorBlock szerver címe"
|
||||||
},
|
},
|
||||||
@@ -431,6 +416,9 @@
|
|||||||
"preview": {
|
"preview": {
|
||||||
"message": "Előnézet"
|
"message": "Előnézet"
|
||||||
},
|
},
|
||||||
|
"unsubmitted": {
|
||||||
|
"message": "Nincs beküldve"
|
||||||
|
},
|
||||||
"inspect": {
|
"inspect": {
|
||||||
"message": "Megvizsgál"
|
"message": "Megvizsgál"
|
||||||
},
|
},
|
||||||
@@ -495,12 +483,21 @@
|
|||||||
"category_outro_description": {
|
"category_outro_description": {
|
||||||
"message": "Stáblista, vagy amikor megjelennek a YouTube zárókártyák. Nem használandó információt tartalmazó következtetésekkor."
|
"message": "Stáblista, vagy amikor megjelennek a YouTube zárókártyák. Nem használandó információt tartalmazó következtetésekkor."
|
||||||
},
|
},
|
||||||
|
"category_preview": {
|
||||||
|
"message": "Előzetes/Ismétlés"
|
||||||
|
},
|
||||||
"category_music_offtopic": {
|
"category_music_offtopic": {
|
||||||
"message": "Zene: nem-zene szegmens"
|
"message": "Zene: nem-zene szegmens"
|
||||||
},
|
},
|
||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "Nem-Zene"
|
"message": "Nem-Zene"
|
||||||
},
|
},
|
||||||
|
"category_poi_highlight": {
|
||||||
|
"message": "Kiemelés"
|
||||||
|
},
|
||||||
|
"category_poi_highlight_description": {
|
||||||
|
"message": "A videónak az a része, amelyiket a legtöbb ember látni szeretne. Hasonlít az \"A videó x percnél kezdődik\" jellegű hozzászólásokhoz."
|
||||||
|
},
|
||||||
"category_livestream_messages": {
|
"category_livestream_messages": {
|
||||||
"message": "Élő adás: Adomány / üzenet olvasások"
|
"message": "Élő adás: Adomány / üzenet olvasások"
|
||||||
},
|
},
|
||||||
@@ -528,6 +525,10 @@
|
|||||||
"category": {
|
"category": {
|
||||||
"message": "Kategória"
|
"message": "Kategória"
|
||||||
},
|
},
|
||||||
|
"skipOption": {
|
||||||
|
"message": "Átugrás beállítása",
|
||||||
|
"description": "Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
|
||||||
|
},
|
||||||
"enableTestingServer": {
|
"enableTestingServer": {
|
||||||
"message": "Bétateszt szerver bekapcsolása"
|
"message": "Bétateszt szerver bekapcsolása"
|
||||||
},
|
},
|
||||||
@@ -597,5 +598,33 @@
|
|||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"message": "Segítség"
|
"message": "Segítség"
|
||||||
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Értettem",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
|
"hideForever": {
|
||||||
|
"message": "Eltüntetés örökre"
|
||||||
|
},
|
||||||
|
"Donate": {
|
||||||
|
"message": "Támogatás"
|
||||||
|
},
|
||||||
|
"Submitting": {
|
||||||
|
"message": "Küldés"
|
||||||
|
},
|
||||||
|
"Editing": {
|
||||||
|
"message": "Szerkesztés"
|
||||||
|
},
|
||||||
|
"helpPageTooSlow": {
|
||||||
|
"message": "Ez túl lassú"
|
||||||
|
},
|
||||||
|
"helpPageNews": {
|
||||||
|
"message": "Hírek és hogyan készül"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Készítők"
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "Tudj meg többet"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Lewati Ulang"
|
"message": "Lewati Ulang"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Bunyikan"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Dijeda"
|
"message": "Dijeda"
|
||||||
},
|
},
|
||||||
@@ -85,6 +88,9 @@
|
|||||||
"noVideoID": {
|
"noVideoID": {
|
||||||
"message": "Video YouTube tidak ditemukan.\nJika terjadi kesalahan, segarkan halaman."
|
"message": "Video YouTube tidak ditemukan.\nJika terjadi kesalahan, segarkan halaman."
|
||||||
},
|
},
|
||||||
|
"refreshSegments": {
|
||||||
|
"message": "Segarkan segmen"
|
||||||
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Sukses!"
|
"message": "Sukses!"
|
||||||
},
|
},
|
||||||
@@ -97,9 +103,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"
|
||||||
},
|
},
|
||||||
@@ -158,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Atur Nama Pengguna"
|
"message": "Atur Nama Pengguna"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Salin UserID Publik"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Gabung dengan server resmi discord untuk memberikan kritik dan saran!"
|
"message": "Gabung dengan server resmi discord untuk memberikan kritik dan saran!"
|
||||||
},
|
},
|
||||||
@@ -182,8 +188,8 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Sembunyikan Tombol Info Di Pemutar Video YouTube"
|
"message": "Sembunyikan Tombol Info Di Pemutar Video YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Ini adalah tombol yang membuka popup di halaman YouTube."
|
"message": "Otomatis Sembunyikan Tombol Info"
|
||||||
},
|
},
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Sembunyikan Tombol Hapus Di Pemutar Video YouTube"
|
"message": "Sembunyikan Tombol Hapus Di Pemutar Video YouTube"
|
||||||
@@ -191,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Tampilkan Tombol Hapus Di Pemutar Video YouTube"
|
"message": "Tampilkan Tombol Hapus Di Pemutar Video YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Ini adalah tombol di pemutar YouTube yang akan menghapus semua segmen yang belum dikirim pada video."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Aktifkan Pelacakan Jumlah Lewati"
|
"message": "Aktifkan Pelacakan Jumlah Lewati"
|
||||||
},
|
},
|
||||||
@@ -278,9 +281,31 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Lewati"
|
"message": "Lewati"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Bisukan"
|
||||||
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "Lewati {0}?"
|
"message": "Lewati {0}?"
|
||||||
},
|
},
|
||||||
|
"mute_category": {
|
||||||
|
"message": "Bisukan {0}?"
|
||||||
|
},
|
||||||
|
"skip_to_category": {
|
||||||
|
"message": "Lompat ke {0}?",
|
||||||
|
"description": "Used for skipping to things (Skip to Highlight)"
|
||||||
|
},
|
||||||
|
"skipped": {
|
||||||
|
"message": "{0} dilewati",
|
||||||
|
"description": "Example: Sponsor Skipped"
|
||||||
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "{0} Dibisukan",
|
||||||
|
"description": "Example: Sponsor Muted"
|
||||||
|
},
|
||||||
|
"skipped_to_category": {
|
||||||
|
"message": "Melewati ke {0}",
|
||||||
|
"description": "Used for skipping to things (Skipped to Highlight)"
|
||||||
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
"message": "Nonaktifkan Lewati Otomatis"
|
"message": "Nonaktifkan Lewati Otomatis"
|
||||||
},
|
},
|
||||||
@@ -330,7 +355,7 @@
|
|||||||
"message": "Impor/Ekspor UserID"
|
"message": "Impor/Ekspor UserID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Ini sebaiknya dirahasiakan. Ini terlihat seperti password dan sebaiknya tidak dibagikan ke orang lain. Jika seseorang mempunyai ini, dia dapat berpura-pura menjadi anda."
|
"message": "Ini harus dirahasiakan. Ini seperti kata sandi dan tidak boleh dibagikan kepada siapa pun. Jika seseorang mempunyai ini, mereka bisa menyamar jadi anda. Jika anda mencari UserID publik anda, klik ikon papan tulis di popup."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Atur UserID"
|
"message": "Atur UserID"
|
||||||
@@ -344,9 +369,22 @@
|
|||||||
"keybindCurrentlySet": {
|
"keybindCurrentlySet": {
|
||||||
"message": ". Saat ini diatur pada:"
|
"message": ". Saat ini diatur pada:"
|
||||||
},
|
},
|
||||||
|
"supportOtherSites": {
|
||||||
|
"message": "Dukung Situs Youtube Pihak Ketiga"
|
||||||
|
},
|
||||||
|
"supportOtherSitesDescription": {
|
||||||
|
"message": "Dukung klien YouTube pihak ketiga. Untuk mengaktifkan dukungan, anda harus menerima izin tambahan. Ini tidak akan bekerja di Mode Samaran di Chrome dan varian Chromium lainnya.",
|
||||||
|
"description": "This replaces the 'supports Invidious' option because it now works on other YouTube sites such as Cloudtube"
|
||||||
|
},
|
||||||
|
"supportedSites": {
|
||||||
|
"message": "Situs yang didukung: "
|
||||||
|
},
|
||||||
"optionsInfo": {
|
"optionsInfo": {
|
||||||
"message": "Aktifkan dukungan Invidious, nonaktifkan lewati otomatis, tombol sembunyi dan lainnya."
|
"message": "Aktifkan dukungan Invidious, nonaktifkan lewati otomatis, tombol sembunyi dan lainnya."
|
||||||
},
|
},
|
||||||
|
"addInvidiousInstance": {
|
||||||
|
"message": "Tambah Instance Klien Pihak Ketiga"
|
||||||
|
},
|
||||||
"add": {
|
"add": {
|
||||||
"message": "Tambah"
|
"message": "Tambah"
|
||||||
},
|
},
|
||||||
@@ -374,9 +412,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Tampilkan Tombol Unggah"
|
"message": "Tampilkan Tombol Unggah"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Tombol ini muncul di pemutar video YouTube setelah anda memilih stempel waktu dan siap untuk dikirimkan."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Alamat Server SponsorBlock"
|
"message": "Alamat Server SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -428,6 +463,9 @@
|
|||||||
"preview": {
|
"preview": {
|
||||||
"message": "Pratinjau"
|
"message": "Pratinjau"
|
||||||
},
|
},
|
||||||
|
"unsubmitted": {
|
||||||
|
"message": "Belum dikirim"
|
||||||
|
},
|
||||||
"inspect": {
|
"inspect": {
|
||||||
"message": "Inspeksi"
|
"message": "Inspeksi"
|
||||||
},
|
},
|
||||||
@@ -492,6 +530,12 @@
|
|||||||
"category_outro_description": {
|
"category_outro_description": {
|
||||||
"message": "Kredit atau saat kartu akhir YouTube muncul. Tidak untuk kesimpulan dengan informasi."
|
"message": "Kredit atau saat kartu akhir YouTube muncul. Tidak untuk kesimpulan dengan informasi."
|
||||||
},
|
},
|
||||||
|
"category_preview": {
|
||||||
|
"message": "Pratinjau/Rekap"
|
||||||
|
},
|
||||||
|
"category_preview_description": {
|
||||||
|
"message": "Rekapan singkat dari episode sebelumnya, atau pratinjau tentang apa yang akan terjadi nanti di video. Dimaksudkan untuk klip bersama yang di edit, bukan ringkasan yang diucapkan."
|
||||||
|
},
|
||||||
"category_music_offtopic": {
|
"category_music_offtopic": {
|
||||||
"message": "Musik: Bagian Non-Musik"
|
"message": "Musik: Bagian Non-Musik"
|
||||||
},
|
},
|
||||||
@@ -519,9 +563,22 @@
|
|||||||
"disable": {
|
"disable": {
|
||||||
"message": "Nonaktif"
|
"message": "Nonaktif"
|
||||||
},
|
},
|
||||||
|
"manualSkip_POI": {
|
||||||
|
"message": "Tanya saat video dimuat"
|
||||||
|
},
|
||||||
|
"showOverlay_POI": {
|
||||||
|
"message": "Tampilkan di Bilah Waktu"
|
||||||
|
},
|
||||||
|
"autoSkipOnMusicVideos": {
|
||||||
|
"message": "Lewati semua segmen secara otomatis ketika ada segmen non-music"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Warna anda tidak diformat dengan benar. Harusnya terdiri dari 3 atau 6 digit kode heksa dengan tagar di awal."
|
"message": "Warna anda tidak diformat dengan benar. Harusnya terdiri dari 3 atau 6 digit kode heksa dengan tagar di awal."
|
||||||
},
|
},
|
||||||
|
"previewColor": {
|
||||||
|
"message": "Warna yang Belum Dikirim",
|
||||||
|
"description": "Referring to submissions that have not been sent to the server yet."
|
||||||
|
},
|
||||||
"seekBarColor": {
|
"seekBarColor": {
|
||||||
"message": "Warna Bilah Waktu"
|
"message": "Warna Bilah Waktu"
|
||||||
},
|
},
|
||||||
@@ -622,7 +679,29 @@
|
|||||||
"categoryUpdate2": {
|
"categoryUpdate2": {
|
||||||
"message": "Buka opsi untuk melewati intro, outro, merch, dll."
|
"message": "Buka opsi untuk melewati intro, outro, merch, dll."
|
||||||
},
|
},
|
||||||
|
"help": {
|
||||||
|
"message": "Bantuan"
|
||||||
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Mengerti",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
"hideForever": {
|
"hideForever": {
|
||||||
"message": "Sembunyikan selamanya"
|
"message": "Sembunyikan selamanya"
|
||||||
|
},
|
||||||
|
"Donate": {
|
||||||
|
"message": "Donasi"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Sembunyikan tautan donasi"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "Terima kasih telah menginstall SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Haram ditinjau opsi di bawah ini"
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"message": "Cara kerja melewati segmen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -52,11 +52,14 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Salta ancora"
|
"message": "Salta ancora"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"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."
|
||||||
@@ -65,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!"
|
||||||
@@ -74,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"
|
||||||
@@ -89,7 +92,7 @@
|
|||||||
"message": "Ricarica i segmenti"
|
"message": "Ricarica i segmenti"
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Successo!"
|
"message": "Ha funzionato!"
|
||||||
},
|
},
|
||||||
"voted": {
|
"voted": {
|
||||||
"message": "Votato!"
|
"message": "Votato!"
|
||||||
@@ -100,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?"
|
||||||
@@ -125,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"
|
||||||
@@ -147,19 +147,22 @@
|
|||||||
"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": {
|
||||||
|
"message": "Copia UserID Pubblico"
|
||||||
},
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Entra nel server Discord ufficiale per darci suggerimenti e feedback!"
|
"message": "Entra nel server Discord ufficiale per darci suggerimenti e feedback!"
|
||||||
@@ -171,40 +174,34 @@
|
|||||||
"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": {
|
|
||||||
"message": "Questo è il pulsante che apre un popup nella pagina YouTube."
|
|
||||||
},
|
},
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"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": {
|
|
||||||
"message": "Questo è il pulsante che ti permette di cancellare tutti gli spezzoni sponsorizzati nel lettore di YouTube."
|
|
||||||
},
|
},
|
||||||
"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"
|
||||||
@@ -216,13 +213,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"
|
||||||
@@ -243,15 +240,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": {
|
||||||
@@ -275,7 +272,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ù."
|
||||||
@@ -299,9 +296,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Salta"
|
"message": "Salta"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Silenzia"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -310,6 +313,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)"
|
||||||
@@ -363,7 +370,7 @@
|
|||||||
"message": "Importa/Esporta Il Tuo ID Utente"
|
"message": "Importa/Esporta Il Tuo ID Utente"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Questo dovrebbe essere tenuto privato. Questo è come una password e non dovrebbe essere condiviso con nessuno. Se qualcuno ha questo, ti può impersonare."
|
"message": "Questo dovrebbe esser mantenuto privato. È come una password e non dovrebbe esser condiviso con nessuno. Se qualcuno lo possiede, può impersonarti. Se stai cercando il tuo userID pubblico, clicca l'icona degli appunti nel popup."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Imposta ID utente"
|
"message": "Imposta ID utente"
|
||||||
@@ -429,9 +436,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Mostra Pulsante di Caricamento"
|
"message": "Mostra Pulsante di Caricamento"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Questo pulsante appare sul riproduttore di YouTube dopo che hai selezionato un marcatore temporale e sei pronto ad inviarlo."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Indirizzo Server SponsorBlock"
|
"message": "Indirizzo Server SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +605,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"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": {
|
||||||
|
"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."
|
||||||
},
|
},
|
||||||
@@ -640,6 +647,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!"
|
||||||
},
|
},
|
||||||
@@ -722,9 +732,6 @@
|
|||||||
"hideForever": {
|
"hideForever": {
|
||||||
"message": "Nascondi per sempre"
|
"message": "Nascondi per sempre"
|
||||||
},
|
},
|
||||||
"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"
|
|
||||||
},
|
|
||||||
"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.",
|
||||||
"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."
|
||||||
|
|||||||
@@ -100,9 +100,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "接続エラーが発生しました。 エラーコード: "
|
"message": "接続エラーが発生しました。 エラーコード: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "次の動画IDで提出します:"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "セグメントを消去"
|
"message": "セグメントを消去"
|
||||||
},
|
},
|
||||||
@@ -185,9 +182,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTubeプレーヤーの情報ボタンを隠す"
|
"message": "YouTubeプレーヤーの情報ボタンを隠す"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "これはYouTubeのページ上でポップアップを開くためのボタンです。"
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "情報ボタンを自動的に隠す"
|
"message": "情報ボタンを自動的に隠す"
|
||||||
},
|
},
|
||||||
@@ -197,9 +191,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTubeプレーヤーに削除ボタンを表示"
|
"message": "YouTubeプレーヤーに削除ボタンを表示"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "これはYouTubeプレーヤー上のボタンで、現在の動画から未提出のセグメントを全て消去します。"
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "スキップ回数の統計を有効にする"
|
"message": "スキップ回数の統計を有効にする"
|
||||||
},
|
},
|
||||||
@@ -362,9 +353,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "ユーザーIDのインポート/エクスポート"
|
"message": "ユーザーIDのインポート/エクスポート"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "ユーザーIDは公開しないでください。これはパスワードのようなもので誰とも共有するべきではありません。 他の誰かが知った場合、あなたになりすます可能性があります。"
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "ユーザーIDを設定"
|
"message": "ユーザーIDを設定"
|
||||||
},
|
},
|
||||||
@@ -429,9 +417,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "アップロードボタンを表示"
|
"message": "アップロードボタンを表示"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "このボタンはタイムスタンプを選択して投稿の準備ができた後にYouTubeプレーヤーに表示されます。"
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock サーバーアドレス"
|
"message": "SponsorBlock サーバーアドレス"
|
||||||
},
|
},
|
||||||
@@ -722,9 +707,6 @@
|
|||||||
"hideForever": {
|
"hideForever": {
|
||||||
"message": "二度と表示しない"
|
"message": "二度と表示しない"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
|
||||||
"message": "警告のため,区域の送信が一時的に禁止されています。これは利用者さまが間違いを犯されているというこちらどもの判断ではありますが,この間違いが悪意あるものとは思っておりません。単に,利用者さまに区域送信における規則を知っていただきたいだけです。連絡先: discord.gg/SponsorBlock,matrix.to/#/+sponsor:ajay.app"
|
|
||||||
},
|
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。",
|
"message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。",
|
||||||
"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."
|
||||||
|
|||||||
@@ -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": "구간 제거"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "사용자 이름 설정"
|
"message": "사용자 이름 설정"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "공개 사용자 ID 복사"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "공식 디스코드 서버에 들어와서 기능 제안을 해주시거나 피드백을 남겨주세요!"
|
"message": "공식 디스코드 서버에 들어와서 기능 제안을 해주시거나 피드백을 남겨주세요!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "스킵할 구간을 제출하기 위해 YouTube 플레이어에 나타나는 버튼을 숨깁니다"
|
"message": "스킵할 구간을 제출하기 위해 YouTube 플레이어에 나타나는 버튼을 숨깁니다"
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "플레이어에 하이라이트로 건너뛰기 버튼 표시"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "YouTube 플레이어에서 정보 버튼 표시하기"
|
"message": "YouTube 플레이어에서 정보 버튼 표시하기"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTube 플레이어에서 정보 버튼 숨기기"
|
"message": "YouTube 플레이어에서 정보 버튼 숨기기"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "YouTube 페이지에 팝업으로 표시되는 버튼입니다"
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "정보 버튼 자동 숨김"
|
"message": "정보 버튼 자동 숨김"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTube 플레이어에서 삭제 버튼 표시하기"
|
"message": "YouTube 플레이어에서 삭제 버튼 표시하기"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "현재 영상에 제출되지 않은 구간을 YouTube 플레이어 내에서 지우는 버튼입니다"
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "스킵 개수 추적 활성화"
|
"message": "스킵 개수 추적 활성화"
|
||||||
},
|
},
|
||||||
@@ -227,6 +227,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "구간을 건너뛴 후 알림 표시"
|
"message": "구간을 건너뛴 후 알림 표시"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "건너뛰기 알림 크게"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "자동 건너뛰기에 대해서는 건너뛰기 알림 작게"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "모든 건너뛰기 알림 작게"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "자동 건너뛰기에 대해서는 건너뛰기 알림 숨김"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "모든 건너뛰기 알림 숨김"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock을 사용하면 영상에서 스폰서 광고, 인트로 영상, 아웃트로 영상, 구독 광고와 그 외 쓸데없는 부분을 즉시 건너뛸 수 있습니다. SponsorBlock은 모든 사람들이 참여하는 브라우저 확장 기능으로 확장 기능 사용자는 스폰서 광고 또는 다른 광고의 시작 시간과 끝 시간을 확인하여 서버로 전송할 수 있습니다. 이러한 정보가 전송되면 그 영상을 보는 다른 사용자들은 광고 구간이 나오기 전에 자동으로 건너뛸 수 있습니다. SponsorBlock을 사용하면 뮤직 비디오에서 음악이나 노래가 아닌 구간도 건너뛸 수 있습니다.",
|
"message": "SponsorBlock을 사용하면 영상에서 스폰서 광고, 인트로 영상, 아웃트로 영상, 구독 광고와 그 외 쓸데없는 부분을 즉시 건너뛸 수 있습니다. SponsorBlock은 모든 사람들이 참여하는 브라우저 확장 기능으로 확장 기능 사용자는 스폰서 광고 또는 다른 광고의 시작 시간과 끝 시간을 확인하여 서버로 전송할 수 있습니다. 이러한 정보가 전송되면 그 영상을 보는 다른 사용자들은 광고 구간이 나오기 전에 자동으로 건너뛸 수 있습니다. SponsorBlock을 사용하면 뮤직 비디오에서 음악이나 노래가 아닌 구간도 건너뛸 수 있습니다.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "스킵"
|
"message": "스킵"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "음소거"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -295,6 +316,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)"
|
||||||
@@ -348,7 +373,7 @@
|
|||||||
"message": "사용자 ID 가져오기/내보내기"
|
"message": "사용자 ID 가져오기/내보내기"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "이 정보는 다른 사람에게 공개하지 마세요. 이것은 비밀번호처럼 절대로 알려주면 안되는 정보입니다. 다른 사람이 이 정보를 습득했을 경우 사용자를 사칭할 수도 있습니다."
|
"message": "이 정보는 다른 사람에게 공개하지 마세요. 이것은 비밀번호처럼 절대로 알려주면 안되는 정보입니다. 다른 사람이 이 정보를 습득했을 경우 사용자를 사칭할 수도 있습니다. 혹시 공개 사용자 ID를 찾고 있다면, 팝업 내 클립보드 아이콘을 누르시기 바랍니다."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "사용자ID 설정"
|
"message": "사용자ID 설정"
|
||||||
@@ -414,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "업로드 버튼 표시"
|
"message": "업로드 버튼 표시"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "이 버튼은 타임 스탬프를 설정 후 제출 준비가 되었을 때 YouTube 플레이어에 나타납니다."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock 서버 주소"
|
"message": "SponsorBlock 서버 주소"
|
||||||
},
|
},
|
||||||
@@ -586,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "음악이 아닌 구간이 있을 때는 모든 구간 자동 건너뛰기"
|
"message": "음악이 아닌 구간이 있을 때는 모든 구간 자동 건너뛰기"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "구간을 건너뛰지 않고 음소거 처리"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "올바르지 않은 색상 코드입니다. 색상 코드는 샵 (#) 기호로 시작하여 3자리 또는 6자리의 16진수로 구성되어야 합니다."
|
"message": "올바르지 않은 색상 코드입니다. 색상 코드는 샵 (#) 기호로 시작하여 3자리 또는 6자리의 16진수로 구성되어야 합니다."
|
||||||
},
|
},
|
||||||
@@ -625,6 +650,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": "제출 해야하는 모든 구간의 카테고리를 설정해야합니다!"
|
||||||
},
|
},
|
||||||
@@ -708,7 +736,7 @@
|
|||||||
"message": "다시 보지 않음"
|
"message": "다시 보지 않음"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "현재 귀하가 악의적이지 않은 일반적인 실수를 저지르고 있음을 발견했습니다. 이에 따라 경고 조치가 내려져 일시적으로 구간을 제출할 수 없게 되었습니다. 저희는 단지 규칙을 명확히 전달하고자 합니다. discord.gg/SponsorBlock 또는 matrix.to/#/+sponsor:ajay.app 링크를 통해 대화에 참여할 수도 있습니다."
|
"message": "현재 귀하가 악의적이지 않은 일반적인 실수를 저지르고 있음을 발견했습니다. 이에 따라 경고 조치가 내려져 일시적으로 구간을 제출할 수 없게 되었습니다. 규정을 잘 숙지했음을 확인해주십시오. 그러면 경고를 삭제하겠습니다. discord.gg/SponsorBlock 또는 matrix.to/#/#sponsor:ajay.app 링크를 통해 대화에 참여할 수도 있습니다."
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "경고로 인해 투표가 거부되었습니다. 클릭하여 대화로 해결하거나, 나중에 시간이 나면 다시 오세요.",
|
"message": "경고로 인해 투표가 거부되었습니다. 클릭하여 대화로 해결하거나, 나중에 시간이 나면 다시 오세요.",
|
||||||
@@ -744,6 +772,9 @@
|
|||||||
"helpPageSubmitting1": {
|
"helpPageSubmitting1": {
|
||||||
"message": "\"광고 구간 시작\" 버튼을 누른 다음 팝업에서 제출할 수도 있으며 동영상 플레이어 내 버튼으로 제출할 수도 있습니다."
|
"message": "\"광고 구간 시작\" 버튼을 누른 다음 팝업에서 제출할 수도 있으며 동영상 플레이어 내 버튼으로 제출할 수도 있습니다."
|
||||||
},
|
},
|
||||||
|
"helpPageSubmitting2": {
|
||||||
|
"message": "재생 아이콘을 누르면 구간의 시점을 정할 수 있고 중지 아이콘을 누르면 구간의 종점을 정할 수 있습니다. 제출하기 전 여러 구간을 설정할 수 있습니다. 업로드 아이콘을 눌러 제출할 수 있습니다. 휴지통 아이콘을 눌러 구간을 제거할 수 있습니다."
|
||||||
|
},
|
||||||
"Editing": {
|
"Editing": {
|
||||||
"message": "수정"
|
"message": "수정"
|
||||||
},
|
},
|
||||||
@@ -753,6 +784,18 @@
|
|||||||
"helpPageTooSlow": {
|
"helpPageTooSlow": {
|
||||||
"message": "너무 느립니다"
|
"message": "너무 느립니다"
|
||||||
},
|
},
|
||||||
|
"helpPageTooSlow1": {
|
||||||
|
"message": "원하는 경우 단축키를 이용할 수 있습니다. 쌍반점 키를 눌러 스폰서 구간의 시점/종점을 설정할 수 있으며 작은따옴표 키를 눌러 구간을 제출할 수 있습니다. 설정에서 이를 변경할 수 있습니다. QWERTY 자판을 사용하지 않는 경우, 단축키 설정을 변경해야 할 수 있습니다."
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase": {
|
||||||
|
"message": "데이터베이스의 사본을 구할 수 있을까요? 개발자에게 무슨 일이 생기면 어떻게 되는 거죠?"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase1": {
|
||||||
|
"message": "데이터베이스는 공개되어 있으며 다음 주소를 통해 접근할 수 있습니다"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase2": {
|
||||||
|
"message": "소스 코드는 자유롭게 이용할 수 있습니다. 따라서 제게 무슨 일이 생기더라도, 기여 사항이 사라지는 일은 없습니다."
|
||||||
|
},
|
||||||
"helpPageNews": {
|
"helpPageNews": {
|
||||||
"message": "소식 및 제작 방법"
|
"message": "소식 및 제작 방법"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -94,9 +94,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "ഒരു കണക്ഷൻ പിശക് സംഭവിച്ചു. പിശക് കോഡ്: "
|
"message": "ഒരു കണക്ഷൻ പിശക് സംഭവിച്ചു. പിശക് കോഡ്: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "വീഡിയോ ഐഡിക്ക് സമർപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "സെഗ്മെന്റുകൾ മായ്ക്കുക"
|
"message": "സെഗ്മെന്റുകൾ മായ്ക്കുക"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTube പ്ലെയറിൽ വിവര ബട്ടൺ മറയ്ക്കുക"
|
"message": "YouTube പ്ലെയറിൽ വിവര ബട്ടൺ മറയ്ക്കുക"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "YouTube പേജിൽ ഒരു പോപ്പ്അപ്പ് തുറക്കുന്ന ബട്ടണാണിത്."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "YouTube പ്ലെയറിൽ ഇല്ലാതാക്കുക ബട്ടൺ മറയ്ക്കുക"
|
"message": "YouTube പ്ലെയറിൽ ഇല്ലാതാക്കുക ബട്ടൺ മറയ്ക്കുക"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTube പ്ലെയറിൽ ഇല്ലാതാക്കുക ബട്ടൺ കാണിക്കുക"
|
"message": "YouTube പ്ലെയറിൽ ഇല്ലാതാക്കുക ബട്ടൺ കാണിക്കുക"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "നിലവിലെ വീഡിയോയ്ക്കായി നിങ്ങൾ സമർപ്പിക്കാത്ത എല്ലാ സെഗ്മെന്റുകളും മായ്ക്കുന്ന YouTube പ്ലെയറിലെ ബട്ടൺ ഇതാണ്."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "ക Count ണ്ട് ട്രാക്കിംഗ് ഒഴിവാക്കുക പ്രാപ്തമാക്കുക"
|
"message": "ക Count ണ്ട് ട്രാക്കിംഗ് ഒഴിവാക്കുക പ്രാപ്തമാക്കുക"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "നിങ്ങളുടെ യൂസർ ഐഡി ഇറക്കുമതി ചെയ്യുക / കയറ്റുമതി ചെയ്യുക"
|
"message": "നിങ്ങളുടെ യൂസർ ഐഡി ഇറക്കുമതി ചെയ്യുക / കയറ്റുമതി ചെയ്യുക"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "ഇത് സ്വകാര്യമായി സൂക്ഷിക്കണം. ഇത് ഒരു പാസ്വേഡ് പോലെയാണ്, ഇത് ആരുമായും പങ്കിടാൻ പാടില്ല. ആർക്കെങ്കിലും ഇത് ഉണ്ടെങ്കിൽ, അവർക്ക് നിങ്ങളെ ആൾമാറാട്ടം നടത്താം."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "യൂസർ ഐഡി സജ്ജമാക്കുക"
|
"message": "യൂസർ ഐഡി സജ്ജമാക്കുക"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "അപ്ലോഡ് ബട്ടൺ കാണിക്കുക"
|
"message": "അപ്ലോഡ് ബട്ടൺ കാണിക്കുക"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "നിങ്ങൾ ഒരു ടൈംസ്റ്റാമ്പ് തിരഞ്ഞെടുത്ത് സമർപ്പിക്കാൻ തയ്യാറായ ശേഷം ഈ ബട്ടൺ YouTube പ്ലെയറിൽ ദൃശ്യമാകും."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "സ്പോൺസർബ്ലോക്ക് സെർവർ വിലാസം"
|
"message": "സ്പോൺസർബ്ലോക്ക് സെർവർ വിലാസം"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Sembunyikan Butang Maklumat Pada Pemain YouTube"
|
"message": "Sembunyikan Butang Maklumat Pada Pemain YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Ini adalah butang yang membuka pop timbul di halaman YouTube."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Sembunyikan Butang Padam Pada Pemain YouTube"
|
"message": "Sembunyikan Butang Padam Pada Pemain YouTube"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Tunjukkan Butang Padam Pada Pemain YouTube"
|
"message": "Tunjukkan Butang Padam Pada Pemain YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Ini adalah butang pada pemain YouTube yang akan membersihkan semua segmen anda yang belum dihantar untuk video semasa."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Dayakan Skip Count Tracking"
|
"message": "Dayakan Skip Count Tracking"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "Import / Eksport Id Pengguna Anda"
|
"message": "Import / Eksport Id Pengguna Anda"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "Perkara ini harus dirahsiakan. Ini seperti kata laluan dan tidak boleh dikongsi dengan sesiapa pun. Sekiranya seseorang mempunyai ini, mereka boleh menyamar sebagai anda."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Tetapkan Id Pengguna"
|
"message": "Tetapkan Id Pengguna"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Tunjukkan Butang Muat Naik"
|
"message": "Tunjukkan Butang Muat Naik"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Butang ini muncul di pemain YouTube setelah anda memilih cap waktu dan siap untuk dihantar."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Alamat Pelayan Sponsorblock"
|
"message": "Alamat Pelayan Sponsorblock"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Opnieuw overslaan"
|
"message": "Opnieuw overslaan"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Niet meer dempen"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Gepauzeerd"
|
"message": "Gepauzeerd"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Gebruikersnaam instellen"
|
"message": "Gebruikersnaam instellen"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Publieke gebruikers-ID kopiëren"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Word lid van de officiële Discord-server om suggesties en feedback te geven!"
|
"message": "Word lid van de officiële Discord-server om suggesties en feedback te geven!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Dit verbergt de knoppen die verschijnen op de YouTube-speler om segmenten over te slaan."
|
"message": "Dit verbergt de knoppen die verschijnen op de YouTube-speler om segmenten over te slaan."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Knop voor \"overslaan naar hoogtepunt\" op speler houden"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Info-knop op YouTube-speler weergeven"
|
"message": "Info-knop op YouTube-speler weergeven"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Info-knop op YouTube-speler verbergen"
|
"message": "Info-knop op YouTube-speler verbergen"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Dit is de knop die een pop-up opent op de YouTube-pagina."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Infoknop automatisch verbergen"
|
"message": "Infoknop automatisch verbergen"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Verwijderen-knop op YouTube-speler weergeven"
|
"message": "Verwijderen-knop op YouTube-speler weergeven"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Dit is de knop op de YouTube-speler die al uw niet-ingediende segmenten van de huidige video zal wissen."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Bijhouden van het aantal keren overslaan inschakelen"
|
"message": "Bijhouden van het aantal keren overslaan inschakelen"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Overslaan"
|
"message": "Overslaan"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Dempen"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -310,6 +316,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)"
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Uw gebruikers-ID importeren/exporteren"
|
"message": "Uw gebruikers-ID importeren/exporteren"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Dit moet privé gehouden worden. Dit is als een wachtwoord en mag met niemand gedeeld worden. Als iemand dit heeft, kan hij zich voordoen als u."
|
"message": "Dit moet privé gehouden worden. Dit is als een wachtwoord en mag met niemand gedeeld worden. Als iemand dit heeft, kan hij zich voordoen als u. Klik op het klembordpictogram in de popup als u op zoek bent naar uw publieke gebrukers-ID."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Gebruikers-ID instellen"
|
"message": "Gebruikers-ID instellen"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Uploaden-knop weergeven"
|
"message": "Uploaden-knop weergeven"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Deze knop verschijnt op de YouTube-speler nadat u een tijdstempel heeft geselecteerd en klaar bent om in te dienen."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock-serveradres"
|
"message": "SponsorBlock-serveradres"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Automatisch alle segmenten overslaan wanneer er een niet-muziek-segment is"
|
"message": "Automatisch alle segmenten overslaan wanneer er een niet-muziek-segment is"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Segmenten toestaan die audio dempen in plaats van overslaan"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Uw kleur is verkeerd geformatteerd. Het moet een hexadecimale code van 3 of 6 cijfers zijn met een hekje aan het begin."
|
"message": "Uw kleur is verkeerd geformatteerd. Het moet een hexadecimale code van 3 of 6 cijfers zijn met een hekje aan het begin."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,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!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Voor altijd verbergen"
|
"message": "Voor altijd verbergen"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "U heeft een waarschuwing gekregen en kunt tijdelijk geen segmenten indienen. Dit betekent dat we gemerkt hebben dat u een aantal veelvoorkomende fouten maakt die niet kwaadaardig zijn, en we willen gewoon de regels verduidelijken. U kunt ook deelnemen aan deze chat via discord.gg/SponsorBlock of matrix.to/#/+sponsor:ajay.app"
|
"message": "U heeft een waarschuwing gekregen en kunt tijdelijk geen segmenten indienen. Dit betekent dat we gemerkt hebben dat u een aantal veelvoorkomende fouten maakt die niet kwaadaardig zijn. Bevestig dat u de regels begrijpt en we zullen de waarschuwing verwijderen. U kunt ook deelnemen aan deze chat via discord.gg/SponsorBlock of matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Stem geweigerd vanwege een waarschuwing. Klik om een chat te openen om het op te lossen, of kom later terug als u tijd hebt.",
|
"message": "Stem geweigerd vanwege een waarschuwing. Klik om een chat te openen om het op te lossen, of kom later terug als u tijd hebt.",
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Skjul infoknappen på YouTube-avspilleren"
|
"message": "Skjul infoknappen på YouTube-avspilleren"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Dette er knappen som åpner et oppsprett på YouTube-siden."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Skjul Slett-knappen på YouTube-avspilleren"
|
"message": "Skjul Slett-knappen på YouTube-avspilleren"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Vis Slett-knappen på YouTube-avspilleren"
|
"message": "Vis Slett-knappen på YouTube-avspilleren"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Dette er knappen på YouTube-avspilleren som tømmer alle dine uinnsendte segmenter for den nåværende videoen."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Skru på telling av hopp"
|
"message": "Skru på telling av hopp"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "Importer/Eksporter din bruker-ID"
|
"message": "Importer/Eksporter din bruker-ID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "Dette burde holdes privat. Dette er som et passord og burde ikke deles med noen. Hvis noen har dette, kan de etterligne deg."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Angi bruker-ID"
|
"message": "Angi bruker-ID"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Vis opplastingsknapp"
|
"message": "Vis opplastingsknapp"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Denne knappen dukker opp på YouTube-avspilleren etter at du har valgt et tidsstempel og er klar til å sende inn."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock-tjeneradresse"
|
"message": "SponsorBlock-tjeneradresse"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Pomiń"
|
"message": "Pomiń"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Odcisz"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Zatrzymany"
|
"message": "Zatrzymany"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Ustaw nazwę użytkownika"
|
"message": "Ustaw nazwę użytkownika"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Kopiuj Publiczne ID Użytkownika"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Dołącz do oficjalnego serwera na discordzie i podziel się wrażeniami i sugestiami!"
|
"message": "Dołącz do oficjalnego serwera na discordzie i podziel się wrażeniami i sugestiami!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Ukryj przycisk informacyjny na odtwarzaczu YouTube"
|
"message": "Ukryj przycisk informacyjny na odtwarzaczu YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Jest to przycisk otwierający okienko pop-up na stronie YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Autoukrywanie przycisku informacji"
|
"message": "Autoukrywanie przycisku informacji"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Pokaż przycisk usuwania na odtwarzaczu YouTube"
|
"message": "Pokaż przycisk usuwania na odtwarzaczu YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Ten przycisk na odtwarzaczu YouTube wyczyści wszystkie twoje niewysłane segmenty dla bieżącego filmu."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Włącz monitorowanie liczby pominięć"
|
"message": "Włącz monitorowanie liczby pominięć"
|
||||||
},
|
},
|
||||||
@@ -227,6 +224,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": {
|
||||||
|
"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."
|
||||||
@@ -284,9 +296,31 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Pomiń"
|
"message": "Pomiń"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Wycisz"
|
||||||
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "Pominąć {0}?"
|
"message": "Pominąć {0}?"
|
||||||
},
|
},
|
||||||
|
"mute_category": {
|
||||||
|
"message": "Wyciszyć {0}?"
|
||||||
|
},
|
||||||
|
"skip_to_category": {
|
||||||
|
"message": "Przejść do {0}?",
|
||||||
|
"description": "Used for skipping to things (Skip to Highlight)"
|
||||||
|
},
|
||||||
|
"skipped": {
|
||||||
|
"message": "Pominięto {0}",
|
||||||
|
"description": "Example: Sponsor Skipped"
|
||||||
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "Wyciszono {0}",
|
||||||
|
"description": "Example: Sponsor Muted"
|
||||||
|
},
|
||||||
|
"skipped_to_category": {
|
||||||
|
"message": "Przewinięto do {0}",
|
||||||
|
"description": "Used for skipping to things (Skipped to Highlight)"
|
||||||
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
"message": "Wyłącz autopomijanie"
|
"message": "Wyłącz autopomijanie"
|
||||||
},
|
},
|
||||||
@@ -336,7 +370,7 @@
|
|||||||
"message": "Importuj/Eksportuj swój identyfikator użytkownika"
|
"message": "Importuj/Eksportuj swój identyfikator użytkownika"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Ta informacja jest poufna i działa jak hasło. Użytkownik, który ma do niej dostęp, może zgłaszać treści jako ty."
|
"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"
|
||||||
@@ -402,9 +436,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Pokaż przycisk wysyłania"
|
"message": "Pokaż przycisk wysyłania"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Ten przycisk pojawia się na odtwarzaczu YouTube po wybraniu przedziału czasowego, gdy segment jest gotowy do wysłania."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Adres serwera SponsorBlock"
|
"message": "Adres serwera SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -538,6 +569,12 @@
|
|||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "Bez muzyki"
|
"message": "Bez muzyki"
|
||||||
},
|
},
|
||||||
|
"category_poi_highlight": {
|
||||||
|
"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"
|
||||||
},
|
},
|
||||||
@@ -556,9 +593,21 @@
|
|||||||
"disable": {
|
"disable": {
|
||||||
"message": "Wyłączone"
|
"message": "Wyłączone"
|
||||||
},
|
},
|
||||||
|
"autoSkip_POI": {
|
||||||
|
"message": "Automatycznie przewiń do początku"
|
||||||
|
},
|
||||||
|
"manualSkip_POI": {
|
||||||
|
"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ą (#)."
|
||||||
},
|
},
|
||||||
@@ -598,6 +647,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!"
|
||||||
},
|
},
|
||||||
@@ -669,6 +721,10 @@
|
|||||||
"help": {
|
"help": {
|
||||||
"message": "Pomoc"
|
"message": "Pomoc"
|
||||||
},
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Rozumiem",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
"experiementOptOut": {
|
"experiementOptOut": {
|
||||||
"message": "Wyłączenie wszystkich przyszłych eksperymentów",
|
"message": "Wyłączenie wszystkich przyszłych eksperymentów",
|
||||||
"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."
|
||||||
@@ -677,10 +733,79 @@
|
|||||||
"message": "Schowaj na zawsze"
|
"message": "Schowaj na zawsze"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Otrzymałeś ostrzeżenie i nie możesz tymczasowo przesłać segmentów. Oznacza to, że zauważyliśmy, że popełniałeś pewne pospolite błędy, które nie są złośliwe i po prostu chcemy wyjaśnić zasady. Możesz również dołączyć do tego czatu używając discord.gg/SponsorBlock lub matrix.to/#/+sponsor:ajay.app"
|
"message": "Otrzymałeś ostrzeżenie i nie możesz tymczasowo przesyłać segmentów. Oznacza to, że zauważyliśmy, że popełniłeś/aś pewne powszechne błędy, które nie są złośliwe, Proszę tylko potwierdzić, że rozumiesz zasady i usuniemy ostrzeżenie. Możesz również dołączyć do tego czatu używając discord.gg/SponsorBlock lub matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"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": {
|
||||||
|
"message": "Dziękujemy za zainstalowanie SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Przejrzyj poniższe opcje"
|
||||||
|
},
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"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": {
|
||||||
|
"message": "Wysyłanie"
|
||||||
|
},
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
"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": {
|
||||||
|
"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": {
|
||||||
|
"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": {
|
||||||
|
"message": "Gdzie mogę otrzymać kod źródłowy?"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Autorzy"
|
||||||
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Nowość! Przejdź do interesującej części filmu jednym kliknięciem z nową kategorią wyróżnione"
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "Dowiedz się więcej"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Esta opção esconde os botões que aparecem para enviar segmentos no player do YouTube."
|
"message": "Esta opção esconde os botões que aparecem para enviar segmentos no player do YouTube."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Manter botão Pular para os Destaques no player"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Mostrar botão de Informações no player do Youtube"
|
"message": "Mostrar botão de Informações no player do Youtube"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Esconder botão de Informações no player do Youtube"
|
"message": "Esconder botão de Informações no player do Youtube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Este é o botão que abre o popup na pagina do Youtube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Esconder Automaticamente o Botão de Informação"
|
"message": "Esconder Automaticamente o Botão de Informação"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Mostrar botão de Apagar no player do Youtube"
|
"message": "Mostrar botão de Apagar no player do Youtube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Este é o botão que lhe permite saltar todos os patrocínios do player do Youtube."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Ativar Contador de Segmentos Pulados"
|
"message": "Ativar Contador de Segmentos Pulados"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,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 +316,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)"
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Importar/Exportar seu ID de usuário"
|
"message": "Importar/Exportar seu ID de usuário"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Isso deve ser mantido em segredo. É como se fosse uma senha e não deve ser compartilhado com ninguém. Se alguém tiver isso, poderá se passar por você."
|
"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"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Mostrar botão de envio"
|
"message": "Mostrar botão de envio"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Este botão aparece no reprodutor do YouTube depois de ter selecionado um carimbo de data/hora e está pronto para ser enviado."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Endereço do servidor do SponsorBlock"
|
"message": "Endereço do servidor do SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,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."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,9 @@
|
|||||||
"message": "Para enviar os segmentos com a categoria de \"{0}\", você deve ativá-la nas opções. Você será redirecionado para as opções agora.",
|
"message": "Para enviar os segmentos com a categoria de \"{0}\", você deve ativá-la nas opções. Você será redirecionado para as opções agora.",
|
||||||
"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": "Aviso: Este tipo de segmento pode ter no máximo um ativo por vez. Enviar múltiplos fará com que um aleatório seja mostrado."
|
||||||
|
},
|
||||||
"youMustSelectACategory": {
|
"youMustSelectACategory": {
|
||||||
"message": "Você deve selecionar uma categoria para todos os segmentos que você está enviando!"
|
"message": "Você deve selecionar uma categoria para todos os segmentos que você está enviando!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Ocultar para sempre"
|
"message": "Ocultar para sempre"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Você recebeu um aviso e temporariamente não poderá enviar segmentos. Isso significa que notamos que você cometeu alguns erros comuns que não são maliciosos, e queremos apenas clarificar as regras. Você também pode participar desse chat usando discord.gg/SponsorBlock ou matrix.to/#/+sponsor:ajay.app"
|
"message": "Você recebeu um aviso e não pode enviar segmentos temporariamente. Isso significa que notamos que você estava cometendo erros comuns não maliciosos, por favor confirme que você entende as regras e removeremos o aviso. Você também pode participar do chat usando discord.gg/SponsorBlock ou matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Voto rejeitado devido a um aviso. Clique para abrir um chat para resolvê-lo, ou volte mais tarde quando tiver tempo.",
|
"message": "Voto rejeitado devido a um aviso. Clique para abrir um chat para resolvê-lo, ou volte mais tarde quando tiver tempo.",
|
||||||
|
|||||||
@@ -99,18 +99,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Esconder botão de Informações no player do Youtube"
|
"message": "Esconder botão de Informações no player do Youtube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Este é o botão que abre o popup na pagina do Youtube."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Esconder botão de Apagar no player do Youtube"
|
"message": "Esconder botão de Apagar no player do Youtube"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Mostrar botão de Apagar no player do Youtube"
|
"message": "Mostrar botão de Apagar no player do Youtube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Este é o botão que lhe permite saltar todos os patrocínios do player do Youtube."
|
|
||||||
},
|
|
||||||
"showNotice": {
|
"showNotice": {
|
||||||
"message": "Mostrar notificação outra vez"
|
"message": "Mostrar notificação outra vez"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Ascunde Butoanele De Informații Pe Playerul De YouTube"
|
"message": "Ascunde Butoanele De Informații Pe Playerul De YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Acesta este butonul care deschide popup-ul pe pagina de YouTube."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Ascunde Butonul De Ștergere Pe Playerul De YouTube"
|
"message": "Ascunde Butonul De Ștergere Pe Playerul De YouTube"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Arată Butonul De Ștergere Pe Playerul De YouTube"
|
"message": "Arată Butonul De Ștergere Pe Playerul De YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Acest buton de pe playerul de YouTube va șterge toate segmentele netrimise pentru videoclipul curent."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Activează Urmărirea Săriturilor"
|
"message": "Activează Urmărirea Săriturilor"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "Importă/Exportă Id-ul Tău De Utilizator"
|
"message": "Importă/Exportă Id-ul Tău De Utilizator"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "Acest lucru trebuie să fie păstrat. Este ca și o parolă și nu ar trebui împartășită cu nimeni. Daca cineva are acest lucru, se poate da drept tu."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Setează Id-ul Utilizatorului"
|
"message": "Setează Id-ul Utilizatorului"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Arată Butonul De Încărcare"
|
"message": "Arată Butonul De Încărcare"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Acest buton apare pe playerul YouTube după ce ați selectat un marcaj de timp și sunteți gata să îl trimiteți."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Adresa Serverului SponsorBlock"
|
"message": "Adresa Serverului SponsorBlock"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Пропустить"
|
"message": "Пропустить"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Включить звук"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Пауза"
|
"message": "Пауза"
|
||||||
},
|
},
|
||||||
@@ -59,10 +62,10 @@
|
|||||||
"message": "Таймер остановлен"
|
"message": "Таймер остановлен"
|
||||||
},
|
},
|
||||||
"confirmMSG": {
|
"confirmMSG": {
|
||||||
"message": "Чтобы изменить или удалить отдельные значения, нажмите кнопку «Информация» или откройте всплывающее окно расширения, щелкнув значок расширения в правом верхнем углу."
|
"message": "Чтобы изменить или удалить отдельные значения, нажмите кнопку «Информация» или откройте всплывающее окно расширения, щелкнув на значок расширения в правом верхнем углу."
|
||||||
},
|
},
|
||||||
"clearThis": {
|
"clearThis": {
|
||||||
"message": "Вы уверены, что хотите удалить эту информацию?\n\n"
|
"message": "Вы уверены, что хотите это удалить?\n\n"
|
||||||
},
|
},
|
||||||
"Unknown": {
|
"Unknown": {
|
||||||
"message": "При отправке сегмента произошла ошибка. Попытайтесь отправить его позже."
|
"message": "При отправке сегмента произошла ошибка. Попытайтесь отправить его позже."
|
||||||
@@ -100,9 +103,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "Ошибка соединения. Код ошибки: "
|
"message": "Ошибка соединения. Код ошибки: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "Вы хотите отправить сегменты для видео с id"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "Очистить сегменты"
|
"message": "Очистить сегменты"
|
||||||
},
|
},
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
"message": "Отправить сегменты"
|
"message": "Отправить сегменты"
|
||||||
},
|
},
|
||||||
"submitCheck": {
|
"submitCheck": {
|
||||||
"message": "Вы уверены, что хотите отправить эту информацию?"
|
"message": "Вы уверены, что хотите это отправить?"
|
||||||
},
|
},
|
||||||
"whitelistChannel": {
|
"whitelistChannel": {
|
||||||
"message": "Добавить канал в белый список"
|
"message": "Добавить канал в белый список"
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Установить имя пользователя"
|
"message": "Установить имя пользователя"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Копировать публичный UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Присоединяйтесь к официальному серверу Discord, чтобы оставить предложения и обратную связь!"
|
"message": "Присоединяйтесь к официальному серверу Discord, чтобы оставить предложения и обратную связь!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Эта настройка скрывает кнопки для отправки сегментов, расположенные в плеере YouTube."
|
"message": "Эта настройка скрывает кнопки для отправки сегментов, расположенные в плеере YouTube."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Показывать кнопку \"Пропустить до важного\" в плеере"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Показывать кнопку информации в плеере YouTube"
|
"message": "Показывать кнопку информации в плеере YouTube"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Скрыть кнопку информации в плеере YouTube"
|
"message": "Скрыть кнопку информации в плеере YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Эта кнопка открывает всплывающее окно на странице YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Автоматически скрывать кнопку Информация"
|
"message": "Автоматически скрывать кнопку Информация"
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Показывать кнопку удаления в плеере YouTube"
|
"message": "Показывать кнопку удаления в плеере YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Эта кнопка позволяет Вам очистить все неотправленные сегменты в плеере YouTube для текущего видео."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Включить отслеживание количества пропусков сегментов"
|
"message": "Включить отслеживание количества пропусков сегментов"
|
||||||
},
|
},
|
||||||
@@ -299,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Пропустить"
|
"message": "Пропустить"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Заглушить"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -310,6 +316,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)"
|
||||||
@@ -363,7 +373,7 @@
|
|||||||
"message": "Импорт/Экспорт Вашего идентификатора пользователя"
|
"message": "Импорт/Экспорт Вашего идентификатора пользователя"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Его нужно держать в секрете. Это как пароль, не стоит им ни с кем делиться. Если он у кого-то есть, он сможет выдать себя за Вас."
|
"message": "Держите его в тайне. Относитесь к нему как к паролю и не передавайте никому. Если кто-то им завладеет, то сможет выдать себя за вас. Если вы ищете публичный ID пользователя, нажмите значок буфера обмена во всплывающем окне."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Установить идентификатор пользователя"
|
"message": "Установить идентификатор пользователя"
|
||||||
@@ -429,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Показывать кнопку отправки"
|
"message": "Показывать кнопку отправки"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Эта кнопка появляется в плеере YouTube после того, как Вы выбрали отметку времени и готовы к отправке."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Адрес сервера SponsorBlock"
|
"message": "Адрес сервера SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Пропускать все сегменты автоматически при наличии сегмента без музыки"
|
"message": "Пропускать все сегменты автоматически при наличии сегмента без музыки"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Разрешить сегменты, которые отключают звук вместо пропуска"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Вы ввели цвет в неправильном формате. Это должно быть 3-х или 6-ти значное шестнадцатеричное число с символом # в начале."
|
"message": "Вы ввели цвет в неправильном формате. Это должно быть 3-х или 6-ти значное шестнадцатеричное число с символом # в начале."
|
||||||
},
|
},
|
||||||
@@ -640,6 +650,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": "Вы должны выбрать категорию для всех сегментов, которые вы отправляете!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +736,7 @@
|
|||||||
"message": "Скрыть навсегда"
|
"message": "Скрыть навсегда"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Вы получили предупреждение и временно не можете отправлять сегменты. Мы заметили, что вы совершали распространенные ошибки, которые не являются злонамеренными, и просто хотим уточнить для вас правила. Вы также можете присоединиться к нашему чату, используя discord.gg/SponsorBlock или matrix.to/#/+sponsor:ajay.app"
|
"message": "Вы получили предупреждение и временно не можете отправлять сегменты. Мы заметили, что вы совершали распространенные ошибки, которые не были злонамеренными. Пожалуйста, подтвердите, что вы прочитали правила и предупреждение будет удалено. Вы также можете присоединиться к нашему чату, используя discord.gg/SponsorBlock или matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Голосование отклонено из-за предупреждения. Нажмите, чтобы открыть чат, где вы можете решить проблему, или вернитесь, когда у вас будет время.",
|
"message": "Голосование отклонено из-за предупреждения. Нажмите, чтобы открыть чат, где вы можете решить проблему, или вернитесь, когда у вас будет время.",
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Znovu preskočiť"
|
"message": "Znovu preskočiť"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Zrušiť stíšenie"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pozastavené"
|
"message": "Pozastavené"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Nastaviť Používateľské meno"
|
"message": "Nastaviť Používateľské meno"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Skopírovať verejné ID používateľa"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Pripojte sa k oficiálnemu Discord serveru a zanechajte nám pripomienky!"
|
"message": "Pripojte sa k oficiálnemu Discord serveru a zanechajte nám pripomienky!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Skryť info tlačidlo v YouTube prehrávači"
|
"message": "Skryť info tlačidlo v YouTube prehrávači"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Toto tlačidlo zobrazí vyskakovacie okno na YouTube stránke."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Automaticky skryť tlačidlo Info"
|
"message": "Automaticky skryť tlačidlo Info"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Zobraziť tlačidlo Zmazať v YouTube prehrávači"
|
"message": "Zobraziť tlačidlo Zmazať v YouTube prehrávači"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Toto tlačidlo v YouTube prehrávači zmaže všetky ešte neodoslané segmenty v aktuálnom videu."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Zapnúť počítanie preskočení"
|
"message": "Zapnúť počítanie preskočení"
|
||||||
},
|
},
|
||||||
@@ -284,9 +281,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Preskočiť"
|
"message": "Preskočiť"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Stíšiť"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -295,6 +298,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)"
|
||||||
@@ -348,7 +355,7 @@
|
|||||||
"message": "Import/export vášho ID používateľa"
|
"message": "Import/export vášho ID používateľa"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Toto si držte v bezpečí. Je to ako heslo a nemali by ste ho s nikým zdieľať. Ten kto ho má by sa mohol za vás vydávať."
|
"message": "Toto si starostlivo uchovajte. Podobne ako heslo by ste to nemali s nikým zdieľať. Ak by to získal niekto ďalší, mohol by vám uškodiť. Ak hľadáte vaše verejné ID používateľa, stlačte ikonu schránky v podokne."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Nastaviť Používateľove ID"
|
"message": "Nastaviť Používateľove ID"
|
||||||
@@ -414,9 +421,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Ukázať Nahrávacie Tlačidlo"
|
"message": "Ukázať Nahrávacie Tlačidlo"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Toto tlačidlo sa zobrazí v YouTube prehrávači po tom ako označíte začiatok a koniec segmentu na odoslanie."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Adresa serveru SponsorBlock"
|
"message": "Adresa serveru SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -586,6 +590,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Automaticky preskočiť všetky segmenty ak neexistuje segment bez hudby"
|
"message": "Automaticky preskočiť všetky segmenty ak neexistuje segment bez hudby"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Povoliť segmenty, ktoré namiesto preskočenia stíšía zvuk"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Vaša farba je nesprávne naformátovaná. Mal by to byť 3 alebo 6-miestny hexadecimálny kód so znakom čísla na začiatku."
|
"message": "Vaša farba je nesprávne naformátovaná. Mal by to byť 3 alebo 6-miestny hexadecimálny kód so znakom čísla na začiatku."
|
||||||
},
|
},
|
||||||
@@ -625,6 +632,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!"
|
||||||
},
|
},
|
||||||
@@ -708,7 +718,7 @@
|
|||||||
"message": "Navždy skryť"
|
"message": "Navždy skryť"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Dostali ste varovanie a nemôžete tak dočasne odosielať segmenty. To znamená, že sme si všimli, že ste spravili nejaké chyby, ktoré nie sú myslené zle, a chceme Vám len objasniť pravidlá. Môžete sa pripojiť do konverzácie pomocou discord.gg/SponsorBlock alebo matrix.to/#/+sponsor:ajay.app"
|
"message": "Dostali ste varovanie a nemôžete tak dočasne odosielať segmenty. To znamená, že sme si všimli, že ste spravili nejaké chyby, ktoré nie sú myslené zle, a chceme Vám len objasniť pravidlá a potom Vám to varovanie odoberieme. Môžete sa pripojiť do konverzácie pomocou discord.gg/SponsorBlock alebo matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Hlasovanie bolo zamietnuté kvôli varovaniu. Kliknite pre otvorenie chatu, aby ste ho vyriešili, alebo sa vráťte až budete mať čas.",
|
"message": "Hlasovanie bolo zamietnuté kvôli varovaniu. Kliknite pre otvorenie chatu, aby ste ho vyriešili, alebo sa vráťte až budete mať čas.",
|
||||||
|
|||||||
@@ -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": "Помоћ"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Hoppa över igen"
|
"message": "Hoppa över igen"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Ljud"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pausad"
|
"message": "Pausad"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Ange användarnamn"
|
"message": "Ange användarnamn"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Kopiera publikt Användar-ID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Gå med i den officiella discordservern för att ge förslag och feedback!"
|
"message": "Gå med i den officiella discordservern för att ge förslag och feedback!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Dölj Infoknapp På YouTube-spelaren"
|
"message": "Dölj Infoknapp På YouTube-spelaren"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Detta är knappen som öppnar popup-rutan på YouTube-sidan."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Dölj informationsknappen automatiskt"
|
"message": "Dölj informationsknappen automatiskt"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Visa knappen ta bort på YouTube-spelaren"
|
"message": "Visa knappen ta bort på YouTube-spelaren"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Den här knappen på YouTube-spelaren rensar bort alla segment som ej har skickats in på aktuell video."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Aktivera spåra antalet hoppa över"
|
"message": "Aktivera spåra antalet hoppa över"
|
||||||
},
|
},
|
||||||
@@ -299,9 +296,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Hoppa över"
|
"message": "Hoppa över"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"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)"
|
||||||
@@ -310,6 +313,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)"
|
||||||
@@ -363,7 +370,7 @@
|
|||||||
"message": "Importera/Exportera Ditt AnvändarID"
|
"message": "Importera/Exportera Ditt AnvändarID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Denna ska hållas privat. Den fungerar som ett lösenord och ska inte delas med någon. Om någon får tag i den kan de utge sig för att vara dig."
|
"message": "Detta ska hållas privat. Detta är som ett lösenord och ska inte delas med någon. Om andra får tag i det kan de utge sig för att vara dig. Om du letar efter ditt offentliga Användar-ID kan du klicka på urklippsikonen i popupen."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Ange AnvändarID"
|
"message": "Ange AnvändarID"
|
||||||
@@ -429,9 +436,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Visa uppladdningsknapp"
|
"message": "Visa uppladdningsknapp"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Denna knapp visas på YouTube-spelaren efter att du har valt en tidpunkt och är redo att rapportera."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Serveradress för SponsorBlock"
|
"message": "Serveradress för SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -601,6 +605,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Hoppa över alla segment automatiskt när det finns ett icke-musiksegment"
|
"message": "Hoppa över alla segment automatiskt när det finns ett icke-musiksegment"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Tillåt segment som tystar ljudet i stället för att hoppa över"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Din färg är felaktigt formaterad. Det ska vara en 3- eller 6-siffrig hex-kod med en siffra i början."
|
"message": "Din färg är felaktigt formaterad. Det ska vara en 3- eller 6-siffrig hex-kod med en siffra i början."
|
||||||
},
|
},
|
||||||
@@ -640,6 +647,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!"
|
||||||
},
|
},
|
||||||
@@ -723,7 +733,7 @@
|
|||||||
"message": "Dölj för alltid"
|
"message": "Dölj för alltid"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Du har fått en tillfällig varning och kan inte skicka in segment. Detta innebär att vi har upptäckt att några vanliga misstag är gjorda som inte är uppsåtliga och vi vill bara klargöra reglerna. Du kan också gå med i den här chatten genom att använda discord.gg/SponsorBlock eller matrix.to/#/+sponsor:ajay.app"
|
"message": "Du har fått en tillfällig varning och kan inte längre skicka in segment. Vi har upptäckt att du har gjort några vanliga misstag som inte är uppsåtliga. Bekräfta därför att du förstår reglerna, så tar vi bort varningen. Du kan också gå med i den här chatten genom att använda discord.gg/SponsorBlock eller matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Rösten avvisades på grund av en varning. Klicka för att öppna ett chattfönster för att lösa problemet eller kom tillbaka senare när du har tid.",
|
"message": "Rösten avvisades på grund av en varning. Klicka för att öppna ett chattfönster för att lösa problemet eller kom tillbaka senare när du har tid.",
|
||||||
|
|||||||
@@ -94,9 +94,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "இணைப்பு பிழை ஏற்பட்டது. பிழை குறியீடு: "
|
"message": "இணைப்பு பிழை ஏற்பட்டது. பிழை குறியீடு: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "வீடியோ ஐடிக்கு நீங்கள் சமர்ப்பிக்க விரும்புகிறீர்களா"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "பிரிவுகளை அழிக்கவும்"
|
"message": "பிரிவுகளை அழிக்கவும்"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTube பிளேயரில் தகவல் பொத்தானை மறைக்கவும்"
|
"message": "YouTube பிளேயரில் தகவல் பொத்தானை மறைக்கவும்"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "YouTube பக்கத்தில் ஒரு பாப்அப்பைத் திறக்கும் பொத்தான் இது."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "YouTube பிளேயரில் நீக்கு பொத்தானை மறைக்க"
|
"message": "YouTube பிளேயரில் நீக்கு பொத்தானை மறைக்க"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTube பிளேயரில் நீக்கு பொத்தானைக் காட்டு"
|
"message": "YouTube பிளேயரில் நீக்கு பொத்தானைக் காட்டு"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "இது YouTube பிளேயரில் உள்ள பொத்தானாகும், இது தற்போதைய வீடியோவிற்கு நீங்கள் சமர்ப்பிக்காத அனைத்து பகுதிகளையும் அழிக்கும்."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "ஸ்கிப் கவுண்ட் டிராக்கிங்கை இயக்கு"
|
"message": "ஸ்கிப் கவுண்ட் டிராக்கிங்கை இயக்கு"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "உங்கள் பயனர் ஐடியை இறக்குமதி / ஏற்றுமதி செய்யுங்கள்"
|
"message": "உங்கள் பயனர் ஐடியை இறக்குமதி / ஏற்றுமதி செய்யுங்கள்"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "இதை தனிப்பட்ட முறையில் வைத்திருக்க வேண்டும். இது கடவுச்சொல் போன்றது மற்றும் யாருடனும் பகிரக்கூடாது. யாராவது இதை வைத்திருந்தால், அவர்கள் உங்களைப் போல ஆள்மாறாட்டம் செய்யலாம்."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "UserID ஐ அமைக்கவும்"
|
"message": "UserID ஐ அமைக்கவும்"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "பதிவேற்ற பொத்தானைக் காட்டு"
|
"message": "பதிவேற்ற பொத்தானைக் காட்டு"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "நீங்கள் நேர முத்திரையைத் தேர்ந்தெடுத்து சமர்ப்பிக்கத் தயாரான பிறகு இந்த பொத்தான் YouTube பிளேயரில் தோன்றும்."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "ஸ்பான்சர் பிளாக் சேவையக முகவரி"
|
"message": "ஸ்பான்சர் பிளாக் சேவையக முகவரி"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -94,9 +94,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "కనెక్షన్ లోపం సంభవించింది. లోపం కోడ్: "
|
"message": "కనెక్షన్ లోపం సంభవించింది. లోపం కోడ్: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "మీరు వీడియో ఐడి కోసం సమర్పించాలనుకుంటున్నారా"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "విభాగాలను క్లియర్ చేయండి"
|
"message": "విభాగాలను క్లియర్ చేయండి"
|
||||||
},
|
},
|
||||||
@@ -179,18 +176,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTube ప్లేయర్లో సమాచారం బటన్ను దాచండి"
|
"message": "YouTube ప్లేయర్లో సమాచారం బటన్ను దాచండి"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "ఇది YouTube పేజీలో పాపప్ను తెరిచే బటన్."
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "YouTube ప్లేయర్లో తొలగించు బటన్ను దాచండి"
|
"message": "YouTube ప్లేయర్లో తొలగించు బటన్ను దాచండి"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTube ప్లేయర్లో తొలగించు బటన్ను చూపించు"
|
"message": "YouTube ప్లేయర్లో తొలగించు బటన్ను చూపించు"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "ఇది YouTube ప్లేయర్లోని బటన్, ఇది ప్రస్తుత వీడియో కోసం మీరు సమర్పించని అన్ని విభాగాలను క్లియర్ చేస్తుంది."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "స్కిప్ కౌంట్ ట్రాకింగ్ను ప్రారంభించండి"
|
"message": "స్కిప్ కౌంట్ ట్రాకింగ్ను ప్రారంభించండి"
|
||||||
},
|
},
|
||||||
@@ -320,9 +311,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "మీ యూజర్ఐడిని దిగుమతి / ఎగుమతి చేయండి"
|
"message": "మీ యూజర్ఐడిని దిగుమతి / ఎగుమతి చేయండి"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "దీన్ని ప్రైవేట్గా ఉంచాలి. ఇది పాస్వర్డ్ లాంటిది మరియు ఎవరితోనూ భాగస్వామ్యం చేయకూడదు. ఎవరైనా దీన్ని కలిగి ఉంటే, వారు మిమ్మల్ని వంచించగలరు."
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "UserID ని సెట్ చేయండి"
|
"message": "UserID ని సెట్ చేయండి"
|
||||||
},
|
},
|
||||||
@@ -365,9 +353,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "అప్లోడ్ బటన్ చూపించు"
|
"message": "అప్లోడ్ బటన్ చూపించు"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "మీరు టైమ్స్టాంప్ను ఎంచుకుని సమర్పించడానికి సిద్ధంగా ఉన్న తర్వాత ఈ బటన్ YouTube ప్లేయర్లో కనిపిస్తుంది."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "స్పాన్సర్బ్లాక్ సర్వర్ చిరునామా"
|
"message": "స్పాన్సర్బ్లాక్ సర్వర్ చిరునామా"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,6 +52,9 @@
|
|||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Tekrar atla"
|
"message": "Tekrar atla"
|
||||||
},
|
},
|
||||||
|
"unmute": {
|
||||||
|
"message": "Sesi Aç"
|
||||||
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Duraklatıldı"
|
"message": "Duraklatıldı"
|
||||||
},
|
},
|
||||||
@@ -100,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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Kullanıcı Adı Belirle"
|
"message": "Kullanıcı Adı Belirle"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Herkese Açık Kullanıcı Kimliğini Kopyala"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Öneri ve geri bildirimleriniz için resmi Discord serverımıza katılın!"
|
"message": "Öneri ve geri bildirimleriniz için resmi Discord serverımıza katılın!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "YouTube Oynatıcısındaki Bilgi Butonunu Gizle"
|
"message": "YouTube Oynatıcısındaki Bilgi Butonunu Gizle"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Bu, YouTube sayfasında açılan pencereyi açan butondur."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Bilgi düğmesini otomatik gizle"
|
"message": "Bilgi düğmesini otomatik gizle"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "YouTube Oynatıcısında Silme Tuşunu Göster"
|
"message": "YouTube Oynatıcısında Silme Tuşunu Göster"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Bu, YouTube oynatıcısındaki mevcut video için gönderilmemiş bölümleri temizleyen butondur."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Kısım Atlama Sayaç Takibine İzin Ver"
|
"message": "Kısım Atlama Sayaç Takibine İzin Ver"
|
||||||
},
|
},
|
||||||
@@ -227,6 +224,15 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Bir Kısmı Atladıktan Sonra Uyarı Göster"
|
"message": "Bir Kısmı Atladıktan Sonra Uyarı Göster"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Tam Boyutlu Atlama Bildirimleri"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Otomatik Atlama için Küçük Atlama Bildirimleri"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Tüm Küçük Atlama Bildirimleri"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock, sponsorları, giriş ve bitiş kısımlarını, abonelik hatırlatıcılarını ve YouTube videolarının diğer can sıkıcı kısımlarını atlamanıza olanak tanır. SponsorBlock, herkesin sponsorlu kısımları ve YouTube videolarının diğer kısımlarının başlangıç ve bitiş zamanlarını göndermesine izin veren kitle kaynaklı bir tarayıcı uzantısıdır. Bir kişi bu bilgiyi gönderdikten sonra, bu uzantıya sahip diğer herkes sponsorlu kısımları hemen atlayacaktır. Müzik videolarının müzik dışı bölümlerini de atlayabilirsiniz.",
|
"message": "SponsorBlock, sponsorları, giriş ve bitiş kısımlarını, abonelik hatırlatıcılarını ve YouTube videolarının diğer can sıkıcı kısımlarını atlamanıza olanak tanır. SponsorBlock, herkesin sponsorlu kısımları ve YouTube videolarının diğer kısımlarının başlangıç ve bitiş zamanlarını göndermesine izin veren kitle kaynaklı bir tarayıcı uzantısıdır. Bir kişi bu bilgiyi gönderdikten sonra, bu uzantıya sahip diğer herkes sponsorlu kısımları hemen atlayacaktır. Müzik videolarının müzik dışı bölümlerini de atlayabilirsiniz.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +290,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Atla"
|
"message": "Atla"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Sustur"
|
||||||
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "{0} atla?"
|
"message": "{0} atla?"
|
||||||
},
|
},
|
||||||
|
"mute_category": {
|
||||||
|
"message": "{0} susturulsun mu?"
|
||||||
|
},
|
||||||
"skip_to_category": {
|
"skip_to_category": {
|
||||||
"message": "{0} kısmına atlansın mı?",
|
"message": "{0} kısmına atlansın mı?",
|
||||||
"description": "Used for skipping to things (Skip to Highlight)"
|
"description": "Used for skipping to things (Skip to Highlight)"
|
||||||
@@ -295,6 +307,10 @@
|
|||||||
"message": "{0} Atlandı",
|
"message": "{0} Atlandı",
|
||||||
"description": "Example: Sponsor Skipped"
|
"description": "Example: Sponsor Skipped"
|
||||||
},
|
},
|
||||||
|
"muted": {
|
||||||
|
"message": "{0} susturuldu",
|
||||||
|
"description": "Example: Sponsor Muted"
|
||||||
|
},
|
||||||
"skipped_to_category": {
|
"skipped_to_category": {
|
||||||
"message": "{0} kısmına atlandı",
|
"message": "{0} kısmına atlandı",
|
||||||
"description": "Used for skipping to things (Skipped to Highlight)"
|
"description": "Used for skipping to things (Skipped to Highlight)"
|
||||||
@@ -348,7 +364,7 @@
|
|||||||
"message": "Kullanıcı kimliğini Dışarı/İçeri Aktar"
|
"message": "Kullanıcı kimliğini Dışarı/İçeri Aktar"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Bu gizli tutulmalıdır. Bu bir şifreye benzer ve diğerleriyle paylaşılmaması gerekir. Birinin eline geçerse, sizi taklit edebilir."
|
"message": "Bu gizli tutulmalıdır. Bu bir şifre gibidir ve kimseyle paylaşılmamalıdır. Eğer birisi buna sahipse, seni taklit edebilir. Herkese açık kullanıcı kimliğinizi arıyorsanız, açılır pencerede pano simgesine tıklayın."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Kullanıcı kimliği Belirle"
|
"message": "Kullanıcı kimliği Belirle"
|
||||||
@@ -414,9 +430,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Karşıya Yükleme Butonunu Göster"
|
"message": "Karşıya Yükleme Butonunu Göster"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Bu buton, YouTube oynatıcısında bir zaman seçtiğiniz ve göndermeye hazır olduğunuzda gözükür."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock Sunucu Adresi"
|
"message": "SponsorBlock Sunucu Adresi"
|
||||||
},
|
},
|
||||||
@@ -550,6 +563,12 @@
|
|||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "Müzik Olmayan Bölüm"
|
"message": "Müzik Olmayan Bölüm"
|
||||||
},
|
},
|
||||||
|
"category_poi_highlight": {
|
||||||
|
"message": "Vurgu"
|
||||||
|
},
|
||||||
|
"category_poi_highlight_description": {
|
||||||
|
"message": "Videoda, çoğu insanın aradığı kısım. \"Video x sürede başlıyor\" yorumlarına benzer."
|
||||||
|
},
|
||||||
"category_livestream_messages": {
|
"category_livestream_messages": {
|
||||||
"message": "Canlı Yayın: Bağış/Mesaj Okuma"
|
"message": "Canlı Yayın: Bağış/Mesaj Okuma"
|
||||||
},
|
},
|
||||||
@@ -580,6 +599,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Müzik olmayan kısım varsa tüm kısımları otomatik atla"
|
"message": "Müzik olmayan kısım varsa tüm kısımları otomatik atla"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Atlamak yerine sesi kapatan bölümlere izin ver"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Renginiz yanlış biçimlendirilmiştir. Başında bir kare işareti bulunan 3 veya 6 basamaklı bir onaltılık kod olmalıdır."
|
"message": "Renginiz yanlış biçimlendirilmiştir. Başında bir kare işareti bulunan 3 veya 6 basamaklı bir onaltılık kod olmalıdır."
|
||||||
},
|
},
|
||||||
@@ -619,6 +641,9 @@
|
|||||||
"message": "\"{0}\" kategorisinde bir kısım göndermek için onu ayarlardan açmalısınız. Ayarlara yönlendiriliyorsunuz.",
|
"message": "\"{0}\" kategorisinde bir kısım göndermek için onu ayarlardan açmalısınız. Ayarlara yönlendiriliyorsunuz.",
|
||||||
"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": "Uyarı: Bu tür kısımlardan sadece bir adet etkin olabilir. Birden fazla gönderdiğinizde onlardan rastgele biri gösterilir."
|
||||||
|
},
|
||||||
"youMustSelectACategory": {
|
"youMustSelectACategory": {
|
||||||
"message": "Göndereceğin tüm kısımlar için bir kategori seçmelisin!"
|
"message": "Göndereceğin tüm kısımlar için bir kategori seçmelisin!"
|
||||||
},
|
},
|
||||||
@@ -690,6 +715,10 @@
|
|||||||
"help": {
|
"help": {
|
||||||
"message": "Yardım"
|
"message": "Yardım"
|
||||||
},
|
},
|
||||||
|
"GotIt": {
|
||||||
|
"message": "Anladım",
|
||||||
|
"description": "Used as the button to dismiss a tooltip"
|
||||||
|
},
|
||||||
"experiementOptOut": {
|
"experiementOptOut": {
|
||||||
"message": "Gelecekteki deneylerin hiçbirine katılma",
|
"message": "Gelecekteki deneylerin hiçbirine katılma",
|
||||||
"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."
|
||||||
@@ -697,11 +726,65 @@
|
|||||||
"hideForever": {
|
"hideForever": {
|
||||||
"message": "Asla gösterme"
|
"message": "Asla gösterme"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
|
||||||
"message": "Bir uyarı aldınız ve geçici bir süreliğine kısım gönderemeyeceksiniz. Sizin kısım göndermede zararlı olmayan bazı hatalar yaptığınızı belirledik ve size kuralları açıklamak istiyoruz. Bu sohbete discord.gg/SponsorBlock veya matrix.to/#/+sponsor:ajay.app üzerinden de katılabilirsiniz"
|
|
||||||
},
|
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Bir uyarı nedeniyle oy reddedildi. Çözüm bulmak için buraya tıklayarak bir sohbet açın veya daha sonra vaktiniz olduğunda uğrayın.",
|
"message": "Bir uyarı nedeniyle oy reddedildi. Çözüm bulmak için buraya tıklayarak bir sohbet açın veya daha sonra vaktiniz olduğunda uğrayın.",
|
||||||
"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": "Bağış Yap"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Bağış Bağlantısını Gizle"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "SponsorBlock'u yüklediğiniz için teşekkürler."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Lütfen aşağıdaki seçenekleri inceleyin"
|
||||||
|
},
|
||||||
|
"helpPageFeatureDisclaimer": {
|
||||||
|
"message": "Birçok özellik varsayılan olarak devre dışıdır. İntroları, outroları atlamak vb. kullanmak istiyorsanız, bunları aşağıdan etkinleştirin. Ayrıca arayüz öğelerini gizleyebilir/gösterebilirsiniz."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"message": "Atlama nasıl çalışıyor"
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks1": {
|
||||||
|
"message": "Video kısımları veri tabanında mevcut ise otomatikman atlanır. Eklentinin simgesine tıklayınca açılan pencereden, video için mevcut olan kısımları görebilirsiniz."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks2": {
|
||||||
|
"message": "Bir kısmı atladığınızda size bildirim gönderilir. Eğer kısım hatalıysa bunu eksi oylayınız. Eklentinin penceresinde de oy verebilirsiniz."
|
||||||
|
},
|
||||||
|
"Submitting": {
|
||||||
|
"message": "Gönderme"
|
||||||
|
},
|
||||||
|
"Editing": {
|
||||||
|
"message": "Düzenleme"
|
||||||
|
},
|
||||||
|
"helpPageEditing1": {
|
||||||
|
"message": "Eğer kısımlarda hata yaptıysanız, yukarı ok işareti olan düğmeye tıkladıktan sonra kısımları silebilir veya düzeltebilirsiniz."
|
||||||
|
},
|
||||||
|
"helpPageTooSlow": {
|
||||||
|
"message": "Bu fazla yavaş"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase": {
|
||||||
|
"message": "Veri tabanının bir kopyasını alabilir miyim? Bir gün ortadan kaybolursanız ne olacak?"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase1": {
|
||||||
|
"message": "Veri tabanı herkese açıktır ve şuradan erişilebilir: "
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase2": {
|
||||||
|
"message": "Kaynak koduna serbestçe erişilebilir. Ben bir gün bu dünyada yalan olsam dahi, sizin gönderdiğiniz kısımlar kaybolmayacak."
|
||||||
|
},
|
||||||
|
"helpPageSourceCode": {
|
||||||
|
"message": "Kaynak koduna nereden ulaşabilirim?"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Emeği Geçenler"
|
||||||
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Yeni! \"Vurgu\" kategorisi sayesinde tek tıkla videonun asıl yerine gidebilirsiniz"
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "Dahasını Öğren"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": "Очистити сегменти"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Встановити ім'я користувача"
|
"message": "Встановити ім'я користувача"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Копіювати публічний UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Приєднуйтесь до офіційного сервера Discord, щоб залишити пропозиції і зворотний зв'язок!"
|
"message": "Приєднуйтесь до офіційного сервера Discord, щоб залишити пропозиції і зворотний зв'язок!"
|
||||||
},
|
},
|
||||||
@@ -179,15 +182,15 @@
|
|||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Це налаштування приховує кнопки для надсилання спонсорських вставок, які з'являються в плеєрі YouTube."
|
"message": "Це налаштування приховує кнопки для надсилання спонсорських вставок, які з'являються в плеєрі YouTube."
|
||||||
},
|
},
|
||||||
|
"showSkipButton": {
|
||||||
|
"message": "Залишати кнопку \"Перейти до Основне\" на плеєрі"
|
||||||
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Показувати кнопку інформації в плеєрі YouTube"
|
"message": "Показувати кнопку інформації в плеєрі YouTube"
|
||||||
},
|
},
|
||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Приховати кнопку інформації в плеєрі YouTube"
|
"message": "Приховати кнопку інформації в плеєрі YouTube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Ця кнопка відкриває спливаюче вікно на сторінці YouTube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Кнопка \"Автоматично сховати інформацію\""
|
"message": "Кнопка \"Автоматично сховати інформацію\""
|
||||||
},
|
},
|
||||||
@@ -197,9 +200,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Показувати кнопку видалення в плеєрі YouTube"
|
"message": "Показувати кнопку видалення в плеєрі YouTube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Ця кнопка дозволяє очистити всі спонсорські вставки в плеєрі YouTube."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Увімкнути відстеження кількості пропусків сегментів"
|
"message": "Увімкнути відстеження кількості пропусків сегментів"
|
||||||
},
|
},
|
||||||
@@ -227,6 +227,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Показувати сповіщення після пропуску сегмента"
|
"message": "Показувати сповіщення після пропуску сегмента"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Повнорозмірні сповіщення про пропуски"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Зменшені сповіщення для автоматичних пропусків"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Всі сповіщення зменшеного розміру"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "Напівпрозорі сповіщення для автоматичних пропусків"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "Напівпрозорі сповіщення для всіх пропусків"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock дозволяє пропускати спонсорські вставки, початкові і кінцеві заставки, прохання підписатися і інше в відео на YouTube. SponsorBlock - колективне розширення, яке дозволяє кожному надіслати час початку і кінця подібних сегментів в відео. Після того, як хто-небудь надсилає цю інформацію, всі інші користувачі розширення будуть автоматично пропускати ці сегменти. Так само можна пропускати частини кліпів без музики.",
|
"message": "SponsorBlock дозволяє пропускати спонсорські вставки, початкові і кінцеві заставки, прохання підписатися і інше в відео на YouTube. SponsorBlock - колективне розширення, яке дозволяє кожному надіслати час початку і кінця подібних сегментів в відео. Після того, як хто-небудь надсилає цю інформацію, всі інші користувачі розширення будуть автоматично пропускати ці сегменти. Так само можна пропускати частини кліпів без музики.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,9 +299,15 @@
|
|||||||
"skip": {
|
"skip": {
|
||||||
"message": "Пропустити"
|
"message": "Пропустити"
|
||||||
},
|
},
|
||||||
|
"mute": {
|
||||||
|
"message": "Вимкнути звук"
|
||||||
|
},
|
||||||
"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)"
|
||||||
@@ -295,6 +316,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)"
|
||||||
@@ -348,7 +373,7 @@
|
|||||||
"message": "Імпортувати/Експортувати Ваш ідентифікатор користувача"
|
"message": "Імпортувати/Експортувати Ваш ідентифікатор користувача"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
"whatChangeUserID": {
|
||||||
"message": "Це потрібно тримати в секреті. Це як пароль, не варто ним ні з ким ділитися. Якщо він у кого-то є, він зможе видати себе за Вас."
|
"message": "Тримайте його в таємниці. Ставтеся до нього як до паролю і не передавайте нікому. Якщо хтось їм заволодіє, то зможе видати себе за вас. Якщо ви шукаєте публічний ID користувача, натисніть значок буфера обміну у спливаючому вікні."
|
||||||
},
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "Встановити ідентифікатор користувача"
|
"message": "Встановити ідентифікатор користувача"
|
||||||
@@ -414,9 +439,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Показувати кнопку надсилання"
|
"message": "Показувати кнопку надсилання"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Ця кнопка з'являється в плеєрі YouTube після того, як Ви вибрали позначку часу і готові до надсилання."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Адреса сервера SponsorBlock"
|
"message": "Адреса сервера SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -551,7 +573,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»."
|
||||||
@@ -569,7 +591,7 @@
|
|||||||
"message": "Пропуск вручну"
|
"message": "Пропуск вручну"
|
||||||
},
|
},
|
||||||
"showOverlay": {
|
"showOverlay": {
|
||||||
"message": "Показувати в смузі прокрутки"
|
"message": "Показувати в смузі перемотування"
|
||||||
},
|
},
|
||||||
"disable": {
|
"disable": {
|
||||||
"message": "Вимкнути"
|
"message": "Вимкнути"
|
||||||
@@ -578,7 +600,7 @@
|
|||||||
"message": "Автоматический переход к началу"
|
"message": "Автоматический переход к началу"
|
||||||
},
|
},
|
||||||
"manualSkip_POI": {
|
"manualSkip_POI": {
|
||||||
"message": "Спросите, когда видео загружается"
|
"message": "Спитати поки відео завантажується"
|
||||||
},
|
},
|
||||||
"showOverlay_POI": {
|
"showOverlay_POI": {
|
||||||
"message": "Показать на панели поиска"
|
"message": "Показать на панели поиска"
|
||||||
@@ -586,6 +608,9 @@
|
|||||||
"autoSkipOnMusicVideos": {
|
"autoSkipOnMusicVideos": {
|
||||||
"message": "Автоматично пропустити усі сегменти, якщо присутній сегмент без музики"
|
"message": "Автоматично пропустити усі сегменти, якщо присутній сегмент без музики"
|
||||||
},
|
},
|
||||||
|
"muteSegments": {
|
||||||
|
"message": "Дозволити сегменти, які відключають звук замість пропуску"
|
||||||
|
},
|
||||||
"colorFormatIncorrect": {
|
"colorFormatIncorrect": {
|
||||||
"message": "Ви ввели колір в неправильному форматі. Це повинно бути 3-х або 6-ти значне шістнадцяткове число з символом # на початку."
|
"message": "Ви ввели колір в неправильному форматі. Це повинно бути 3-х або 6-ти значне шістнадцяткове число з символом # на початку."
|
||||||
},
|
},
|
||||||
@@ -625,6 +650,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": "Ви повинні обрати категорію для всіх сегментів, які ви відправляєте!"
|
||||||
},
|
},
|
||||||
@@ -696,6 +724,10 @@
|
|||||||
"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."
|
||||||
@@ -704,10 +736,79 @@
|
|||||||
"message": "Сховати назавжди"
|
"message": "Сховати назавжди"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
"warningChatInfo": {
|
||||||
"message": "Ви отримали попередження, тому тимчасово не можете обирати сегменти. Це означає, що ми помітили, що ви робили кілька поширених помилок, які не є злісними. Тому ми хочемо нагадати вам правила. Ви можете приєднатися до чату з правилами використовуючи discord.gg/SponsorBlock або matrix.to/#/+sponsor:ajay.app"
|
"message": "Ви отримали попередження, тому тимчасово не можете надсилати сегменти. Це означає, що ми помітили, що ви робили кілька поширених помилок не маючи шкідливих намірів. Будь ласка просто підтвердьте, що ви розумієте правила, і ми приберемо попередження. Ви також можете приєднатися до чату з правилами використовуючи discord.gg/SponsorBlock or matrix.to/#/#sponsor:ajay.app"
|
||||||
},
|
},
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Голосування відхилено через попередження. Натисніть, щоб відкрити чат для вирішення цієї проблеми, або поверніться пізніше.",
|
"message": "Голосування відхилено через попередження. Натисніть, щоб відкрити чат для вирішення цієї проблеми, або поверніться пізніше.",
|
||||||
"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": "Пожертвувати"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Приховати посилання на пожертвування"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "Дякую за встановлення SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"message": "Будь ласка, ознайомтеся з налаштуваннями нижче"
|
||||||
|
},
|
||||||
|
"helpPageFeatureDisclaimer": {
|
||||||
|
"message": "Багато функцій за замовчуванням відключені. Якщо ви хочете пропускати початкові і кінцеві заставки, використовувати Invidious, тощо, увімкніть їх нижче. Ви також можете приховати / показати елементи інтерфейсу."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks": {
|
||||||
|
"message": "Як працює пропуск"
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks1": {
|
||||||
|
"message": "Сегменти відео будуть автоматично пропущені, якщо вони знаходяться в базі даних. Ви можете відкрити спливаюче вікно, натиснувши на значок розширення, щоб подивитися, які сегменти додані."
|
||||||
|
},
|
||||||
|
"helpPageHowSkippingWorks2": {
|
||||||
|
"message": "Коли ви будете пропускати сегмент, ви отримаєте сповіщення. Якщо час здасться вам неправильним, проголосуйте проти, натиснувши на палець вниз! Ви також можете проголосувати у спливаючому вікні."
|
||||||
|
},
|
||||||
|
"Submitting": {
|
||||||
|
"message": "Відправлення"
|
||||||
|
},
|
||||||
|
"helpPageSubmitting1": {
|
||||||
|
"message": "Відправлення може бути виконана у спливаючому вікні натисканням на кнопку \"Сегмент починається звідси\" або кнопками в відеоплеєрі."
|
||||||
|
},
|
||||||
|
"helpPageSubmitting2": {
|
||||||
|
"message": "Натискання на кнопку відтворення означає початок сегмента і натискання на кнопку стоп позначає його кінець. Ви можете позначити кілька сегментів перед тим, як натиснути на кнопку відправлення. Натискання на кошик видалить все."
|
||||||
|
},
|
||||||
|
"Editing": {
|
||||||
|
"message": "Редагування"
|
||||||
|
},
|
||||||
|
"helpPageEditing1": {
|
||||||
|
"message": "Якщо ви зробили щось не так, ви можете відредагувати або видалити сегменти, натиснувши на кнопку зі стрілкою вгору."
|
||||||
|
},
|
||||||
|
"helpPageTooSlow": {
|
||||||
|
"message": "Це занадто повільно"
|
||||||
|
},
|
||||||
|
"helpPageTooSlow1": {
|
||||||
|
"message": "Все це також можна робити за допомогою гарячих клавіш. Натисніть \"ж\" для вказівки початку/кінця сегмента, \"є\" для відправки. Клавіші можуть бути змінені в налаштуваннях. Якщо ви не використовуєте QWERTY, то варто відразу поміняти гарячі клавіші."
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase": {
|
||||||
|
"message": "Чи можу я отримати копію бази даних? Що якщо ви пропадете?"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase1": {
|
||||||
|
"message": "База даних доступна для всіх тут:"
|
||||||
|
},
|
||||||
|
"helpPageCopyOfDatabase2": {
|
||||||
|
"message": "Вихідний код у відкритому доступі, так що навіть якщо щось трапиться зі мною, ваш вклад не пропаде."
|
||||||
|
},
|
||||||
|
"helpPageNews": {
|
||||||
|
"message": "Новини та як це зроблено"
|
||||||
|
},
|
||||||
|
"helpPageSourceCode": {
|
||||||
|
"message": "Де можна отримати вихідний код?"
|
||||||
|
},
|
||||||
|
"Credits": {
|
||||||
|
"message": "Автори"
|
||||||
|
},
|
||||||
|
"highlightNewFeature": {
|
||||||
|
"message": "Новинка! Переходьте відразу до головного моменту відео за допомогою нової категорії \"Важливе\""
|
||||||
|
},
|
||||||
|
"LearnMore": {
|
||||||
|
"message": "Дізнатися більше"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
@@ -161,6 +161,9 @@
|
|||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Đặt tên người dùng"
|
"message": "Đặt tên người dùng"
|
||||||
},
|
},
|
||||||
|
"copyPublicID": {
|
||||||
|
"message": "Sao chép Public UserID"
|
||||||
|
},
|
||||||
"discordAdvert": {
|
"discordAdvert": {
|
||||||
"message": "Hãy tham gia server Discord chính thức để đăng gợi ý và phản hồi!"
|
"message": "Hãy tham gia server Discord chính thức để đăng gợi ý và phản hồi!"
|
||||||
},
|
},
|
||||||
@@ -185,9 +188,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "Không hiển thị nút thông tin trên trình chạy video Youtube"
|
"message": "Không hiển thị nút thông tin trên trình chạy video Youtube"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "Đây là nút để mở bảng popup trên trang Youtube."
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "Tự động ẩn nút Info"
|
"message": "Tự động ẩn nút Info"
|
||||||
},
|
},
|
||||||
@@ -197,9 +197,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Hiển thị nút xóa trên trình chạy video Youtube"
|
"message": "Hiển thị nút xóa trên trình chạy video Youtube"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "Đây là nút trên trình chạy video Youtube để xóa tất cả những đoạn quảng cáo chưa đăng của bạn trong video đang xem."
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "Bật tính năng theo dõi số quảng cáo được bỏ qua"
|
"message": "Bật tính năng theo dõi số quảng cáo được bỏ qua"
|
||||||
},
|
},
|
||||||
@@ -227,6 +224,21 @@
|
|||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Hiển thị thông báo sau khi bỏ qua quảng cáo"
|
"message": "Hiển thị thông báo sau khi bỏ qua quảng cáo"
|
||||||
},
|
},
|
||||||
|
"noticeVisibilityMode0": {
|
||||||
|
"message": "Thông báo bỏ qua với kích thước đầy đủ"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode1": {
|
||||||
|
"message": "Thông báo bỏ qua kích thước nhỏ nếu phân đoạn được tự động bỏ qua"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode2": {
|
||||||
|
"message": "Thông báo bỏ qua kích thước nhỏ cho toàn bộ phân đoạn"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode3": {
|
||||||
|
"message": "Thông báo bỏ qua mờ nếu phân đoạn được tự động bỏ qua"
|
||||||
|
},
|
||||||
|
"noticeVisibilityMode4": {
|
||||||
|
"message": "Thông báo bỏ qua mờ cho tất cả các phân đoạn"
|
||||||
|
},
|
||||||
"longDescription": {
|
"longDescription": {
|
||||||
"message": "SponsorBlock giúp bạn bỏ qua quảng cáo từ nhà tài trợ, đoạn giới thiệu, đoạn kết, lời nhắc đăng ký kênh, và những phần khó chịu khác trong các video Youtube. SponsorBlock là một tiện ích mở rộng cho trình duyệt, cho phép tất cả người dùng đăng thời điểm bắt đầu và kết thúc của những đoạn quảng cáo từ nhà tài trợ và các đoạn khác trong video Youtube. Sau khi một người đăng thông tin này lên, tất cả mọi người dùng tiện ích mở rộng này sẽ bỏ qua đoạn quảng cáo đó. Bạn cũng có thể bỏ qua phần không có nhạc trong những video âm nhạc.",
|
"message": "SponsorBlock giúp bạn bỏ qua quảng cáo từ nhà tài trợ, đoạn giới thiệu, đoạn kết, lời nhắc đăng ký kênh, và những phần khó chịu khác trong các video Youtube. SponsorBlock là một tiện ích mở rộng cho trình duyệt, cho phép tất cả người dùng đăng thời điểm bắt đầu và kết thúc của những đoạn quảng cáo từ nhà tài trợ và các đoạn khác trong video Youtube. Sau khi một người đăng thông tin này lên, tất cả mọi người dùng tiện ích mở rộng này sẽ bỏ qua đoạn quảng cáo đó. Bạn cũng có thể bỏ qua phần không có nhạc trong những video âm nhạc.",
|
||||||
"description": "Full description of the extension on the store pages."
|
"description": "Full description of the extension on the store pages."
|
||||||
@@ -284,6 +296,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}?"
|
||||||
},
|
},
|
||||||
@@ -336,7 +351,7 @@
|
|||||||
"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": {
|
"whatChangeUserID": {
|
||||||
"message": "Bạn nên giữ bí mật mã này. Nó như mật khẩu vậy, do đó không nên chia sẻ với người khác. Nếu ai đó có mã này, họ có thể giả mạo bạn."
|
"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"
|
||||||
@@ -402,9 +417,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Hiển thị nút tải lên"
|
"message": "Hiển thị nút tải lên"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "Nút này xuất hiện trên trình chạy video Youtube sau khi bạn chọn mốc thời gian và sẵn sàng đăng đoạn quảng cáo."
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "Địa chỉ máy chủ SponsorBlock"
|
"message": "Địa chỉ máy chủ SponsorBlock"
|
||||||
},
|
},
|
||||||
@@ -538,6 +550,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"
|
||||||
},
|
},
|
||||||
@@ -556,9 +574,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."
|
||||||
},
|
},
|
||||||
@@ -598,6 +628,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!"
|
||||||
},
|
},
|
||||||
@@ -669,6 +702,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."
|
||||||
@@ -676,11 +713,35 @@
|
|||||||
"hideForever": {
|
"hideForever": {
|
||||||
"message": "Ẩn vĩnh viễn"
|
"message": "Ẩn vĩnh viễn"
|
||||||
},
|
},
|
||||||
"warningChatInfo": {
|
|
||||||
"message": "Bạn đã nhận được một cảnh báo (Warring) và tạm thời không thể gửi các phân đoạn. Bạn đã mắc lỗi trong việc tạo quá nhiều lần (có thể là chọn sai kiểu phân đoạn hoặc sai thời gian phân đoạn). Chúng tôi muốn bạn nhận ra điều đó để có thể giúp bạn khắc phục điều này trong tương lai, không mắc lỗi nữa. Bạn có thể gặp các VIP User tại đây: discord.gg/SponsorBlock hoặc matrix.to/#/+sponsor:ajay.app. Bọn họ sẽ giúp bạn gỡ cảnh báo sau khi bạn đã hiểu ra lỗi sai của bạn."
|
|
||||||
},
|
|
||||||
"voteRejectedWarning": {
|
"voteRejectedWarning": {
|
||||||
"message": "Bỏ phiếu bị từ chối do có cảnh báo. Nhấp để mở cuộc trò chuyện để giải quyết hoặc quay lại sau.",
|
"message": "Bỏ phiếu bị từ chối do có cảnh báo. Nhấp để mở cuộc trò chuyện để giải quyết hoặc quay lại sau.",
|
||||||
"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": "Donate"
|
||||||
|
},
|
||||||
|
"hideDonationLink": {
|
||||||
|
"message": "Ẩn link donate"
|
||||||
|
},
|
||||||
|
"helpPageThanksForInstalling": {
|
||||||
|
"message": "Cảm ơn bạn đã cài đặt SponsorBlock."
|
||||||
|
},
|
||||||
|
"helpPageReviewOptions": {
|
||||||
|
"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": {
|
||||||
|
"message": "Quá chậm"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,9 +97,6 @@
|
|||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "连接错误。错误代码: "
|
"message": "连接错误。错误代码: "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
|
||||||
"message": "您是否想为以下视频 ID 提交:"
|
|
||||||
},
|
|
||||||
"clearTimes": {
|
"clearTimes": {
|
||||||
"message": "清除片段"
|
"message": "清除片段"
|
||||||
},
|
},
|
||||||
@@ -182,18 +179,12 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "在 Youtube 播放器上隐藏信息按钮"
|
"message": "在 Youtube 播放器上隐藏信息按钮"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "此按钮用于在 Youtube 页面中打开弹窗。"
|
|
||||||
},
|
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "在 Youtube 播放器上隐藏删除按钮"
|
"message": "在 Youtube 播放器上隐藏删除按钮"
|
||||||
},
|
},
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "在 Youtube 播放器上显示删除按钮"
|
"message": "在 Youtube 播放器上显示删除按钮"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "此按钮用于在 Youtube 播放器中清除所有赞助商广告。"
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "启用跳过次数统计跟踪"
|
"message": "启用跳过次数统计跟踪"
|
||||||
},
|
},
|
||||||
@@ -323,9 +314,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "导入/导出您的用户 ID"
|
"message": "导入/导出您的用户 ID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "这应该被保密。这就像一个密码,且不应该告诉任何人。如果有人拥有它,他就可以冒充您。"
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "设定用户 ID"
|
"message": "设定用户 ID"
|
||||||
},
|
},
|
||||||
@@ -371,9 +359,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "显示上传按钮"
|
"message": "显示上传按钮"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "在您选择了时间并准备提交后,此按钮会出现在 Youtube 播放器中。"
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock 服务器地址"
|
"message": "SponsorBlock 服务器地址"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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": "清除片段"
|
||||||
},
|
},
|
||||||
@@ -185,9 +185,6 @@
|
|||||||
"hideInfoButton": {
|
"hideInfoButton": {
|
||||||
"message": "在 YouTube 播放器上隱藏資訊按鈕"
|
"message": "在 YouTube 播放器上隱藏資訊按鈕"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
|
||||||
"message": "這個按鈕可用來在 YouTube 頁面打開彈出視窗"
|
|
||||||
},
|
|
||||||
"autoHideInfoButton": {
|
"autoHideInfoButton": {
|
||||||
"message": "自動隱藏資訊按鈕"
|
"message": "自動隱藏資訊按鈕"
|
||||||
},
|
},
|
||||||
@@ -197,9 +194,6 @@
|
|||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "在 YouTube 播放器上顯示刪除按鈕"
|
"message": "在 YouTube 播放器上顯示刪除按鈕"
|
||||||
},
|
},
|
||||||
"whatDeleteButton": {
|
|
||||||
"message": "這個按鈕可用來在 YouTube 播放器清除所有未提交的片段"
|
|
||||||
},
|
|
||||||
"enableViewTracking": {
|
"enableViewTracking": {
|
||||||
"message": "啟用跳過次數追蹤"
|
"message": "啟用跳過次數追蹤"
|
||||||
},
|
},
|
||||||
@@ -335,9 +329,6 @@
|
|||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "匯入/匯出您的使用者 ID"
|
"message": "匯入/匯出您的使用者 ID"
|
||||||
},
|
},
|
||||||
"whatChangeUserID": {
|
|
||||||
"message": "這應該被保密。這就像一個密碼,不應該與他人分享。如果有人擁有它,他們就可以冒充您。"
|
|
||||||
},
|
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "設定使用者 ID"
|
"message": "設定使用者 ID"
|
||||||
},
|
},
|
||||||
@@ -399,9 +390,6 @@
|
|||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "顯示上傳按鈕"
|
"message": "顯示上傳按鈕"
|
||||||
},
|
},
|
||||||
"whatUploadButton": {
|
|
||||||
"message": "在您選擇了時間範圍並準備提交後,此按鈕會出現在 YouTube 播放器中。"
|
|
||||||
},
|
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock 伺服器地址"
|
"message": "SponsorBlock 伺服器地址"
|
||||||
},
|
},
|
||||||
@@ -535,6 +523,9 @@
|
|||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "非音樂"
|
"message": "非音樂"
|
||||||
},
|
},
|
||||||
|
"category_poi_highlight": {
|
||||||
|
"message": "重點"
|
||||||
|
},
|
||||||
"category_livestream_messages": {
|
"category_livestream_messages": {
|
||||||
"message": "直播:捐贈/訊息閱讀"
|
"message": "直播:捐贈/訊息閱讀"
|
||||||
},
|
},
|
||||||
@@ -666,11 +657,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": "致謝"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,16 +75,26 @@
|
|||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
#infoButton.playerButton:not(.hidden) {
|
.autoHiding {
|
||||||
transform: translateX(0%) scale(1);
|
overflow: visible !important;
|
||||||
/* opacity is from YouTube page */
|
|
||||||
transition: transform 0.2s, opacity .1s cubic-bezier(0.4,0.0,1,1) !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#infoButton.playerButton.hidden {
|
.autoHiding:not(.hidden) {
|
||||||
|
transform: translateX(0%) scale(1);
|
||||||
|
/* opacity is from YouTube page */
|
||||||
|
transition: transform 0.2s, width 0.2s, opacity .1s cubic-bezier(0.4,0.0,1,1) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.autoHiding.hidden {
|
||||||
transform: translateX(100%) scale(0);
|
transform: translateX(100%) scale(0);
|
||||||
/* opacity is from YouTube page */
|
/* opacity is from YouTube page */
|
||||||
transition: transform 0.2s, opacity .1s cubic-bezier(0.4,0.0,1,1) !important;
|
transition: transform 0.2s, width 0.2s, opacity .1s cubic-bezier(0.4,0.0,1,1) !important;
|
||||||
|
|
||||||
|
width: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.autoHiding.hidden.autoHideLeft {
|
||||||
|
transform: translateX(-100%) scale(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.playerButton.hidden {
|
.playerButton.hidden {
|
||||||
@@ -154,11 +164,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sponsorSkipNotice {
|
.sponsorSkipNotice {
|
||||||
min-width: calc(100% - 50px);
|
|
||||||
|
|
||||||
transition: all 0.1s ease-out;
|
transition: all 0.1s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sponsorSkipNoticeLimitWidth {
|
||||||
|
min-width: calc(100% - 50px);
|
||||||
|
}
|
||||||
|
|
||||||
.sponsorSkipNotice .hidden {
|
.sponsorSkipNotice .hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -470,7 +482,7 @@ input::-webkit-inner-spin-button {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sponsorTimeCategories {
|
.sponsorTimeEditSelector {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Come contribute, make some suggestions and help out on <a href="https://discord.gg/QnmVMpU">Discord</a> or on <a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org">Matrix</a>.
|
Come contribute, make some suggestions and help out on <a href="https://discord.gg/SponsorBlock">Discord</a> or on <a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org">Matrix</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p style="margin-bottom: 0; margin-top: 0" class="bigText center">__MSG_helpPageReviewOptions__</p>
|
<p style="margin-bottom: 0; margin-top: 0" class="bigText center">__MSG_helpPageReviewOptions__</p>
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
<a href="https://github.com/ajayyy/SponsorBlockServer/graphs/contributors">SponsorBlockServer contributors</a> and
|
<a href="https://github.com/ajayyy/SponsorBlockServer/graphs/contributors">SponsorBlockServer contributors</a> and
|
||||||
<a href="https://github.com/ajayyy/SponsorBlockSite/graphs/contributors">SponsorBlockSite contributors</a> such
|
<a href="https://github.com/ajayyy/SponsorBlockSite/graphs/contributors">SponsorBlockSite contributors</a> such
|
||||||
as <a href="https://github.com/NDevTK">NDev</a>, <a href="https://github.com/Joe-Dowd">Joe Dowd</a>,
|
as <a href="https://github.com/NDevTK">NDev</a>, <a href="https://github.com/Joe-Dowd">Joe Dowd</a>,
|
||||||
<a href="https://github.com/bershanskiy">Anton Bershanskiy</a> and more.
|
<a href="https://mchang.name/">Michael Chang</a> and more.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>The awesome <a href="https://github.com/omarroth/invidious/wiki/API">Invidious API</a> is used to grab the time the video was published.</p>
|
<p>The awesome <a href="https://github.com/omarroth/invidious/wiki/API">Invidious API</a> is used to grab the time the video was published.</p>
|
||||||
|
|||||||
@@ -50,6 +50,22 @@
|
|||||||
<br/>
|
<br/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div option-type="toggle" sync-option="muteSegments">
|
||||||
|
<label class="switch-container">
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" checked>
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<div class="switch-label">
|
||||||
|
__MSG_muteSegments__
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
@@ -271,7 +287,22 @@
|
|||||||
|
|
||||||
<div class="small-description">__MSG_hideButtonsDescription__</div>
|
<div class="small-description">__MSG_hideButtonsDescription__</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div option-type="toggle" toggle-type="reverse" sync-option="hideSkipButtonPlayerControls">
|
||||||
|
<label class="switch-container">
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" checked>
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<div class="switch-label">
|
||||||
|
__MSG_showSkipButton__
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
@@ -285,14 +316,9 @@
|
|||||||
__MSG_showInfoButton__
|
__MSG_showInfoButton__
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div class="small-description">__MSG_whatInfoButton__</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
@@ -306,13 +332,11 @@
|
|||||||
__MSG_autoHideInfoButton__
|
__MSG_autoHideInfoButton__
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
<div option-type="toggle" toggle-type="reverse" sync-option="hideDeleteButtonPlayerControls">
|
<div option-type="toggle" toggle-type="reverse" sync-option="hideDeleteButtonPlayerControls">
|
||||||
<label class="switch-container">
|
<label class="switch-container">
|
||||||
@@ -324,14 +348,9 @@
|
|||||||
__MSG_showDeleteButton__
|
__MSG_showDeleteButton__
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div class="small-description">__MSG_whatDeleteButton__</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
@@ -345,14 +364,10 @@
|
|||||||
__MSG_showUploadButton__
|
__MSG_showUploadButton__
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div class="small-description">__MSG_whatUploadButton__</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
<a href="https://sponsor.ajay.app/stats" target="_blank" rel="noopener">__MSG_viewLeaderboard__</a> |
|
<a href="https://sponsor.ajay.app/stats" target="_blank" rel="noopener">__MSG_viewLeaderboard__</a> |
|
||||||
<a href="https://github.com/ajayyy/SponsorBlock" target="_blank" rel="noopener">GitHub</a>
|
<a href="https://github.com/ajayyy/SponsorBlock" target="_blank" rel="noopener">GitHub</a>
|
||||||
<br/>
|
<br/>
|
||||||
<a href="https://discord.gg/QnmVMpU" target="_blank" rel="noopener">Discord</a> |
|
<a href="https://discord.gg/SponsorBlock" target="_blank" rel="noopener">Discord</a> |
|
||||||
<a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org" target="_blank" rel="noopener">Matrix</a> |
|
<a href="https://matrix.to/#/#sponsor:ajay.app?via=ajay.app&via=matrix.org&via=mozilla.org" target="_blank" rel="noopener">Matrix</a> |
|
||||||
<a id="helpButton" style="cursor: pointer;">__MSG_help__</a> |
|
<a id="helpButton" style="cursor: pointer;">__MSG_help__</a> |
|
||||||
<a href="https://sponsor.ajay.app/donate" target="_blank" rel="noopener" id="sbDonate">$</a>
|
<a href="https://sponsor.ajay.app/donate" target="_blank" rel="noopener" id="sbDonate">$</a>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ export interface NoticeProps {
|
|||||||
bottomRow?: React.ReactElement[],
|
bottomRow?: React.ReactElement[],
|
||||||
|
|
||||||
smaller?: boolean,
|
smaller?: boolean,
|
||||||
|
limitWidth?: boolean,
|
||||||
|
|
||||||
// Callback for when this is closed
|
// Callback for when this is closed
|
||||||
closeListener: () => void,
|
closeListener: () => void,
|
||||||
@@ -105,11 +106,13 @@ class NoticeComponent extends React.Component<NoticeProps, NoticeState> {
|
|||||||
<div className={"sponsorSkipNoticeTableContainer"
|
<div className={"sponsorSkipNoticeTableContainer"
|
||||||
+ (this.props.fadeIn ? " sponsorSkipNoticeFadeIn" : "")
|
+ (this.props.fadeIn ? " sponsorSkipNoticeFadeIn" : "")
|
||||||
+ (this.state.startFaded ? " sponsorSkipNoticeFaded" : "") }>
|
+ (this.state.startFaded ? " sponsorSkipNoticeFaded" : "") }>
|
||||||
<table className="sponsorSkipObject sponsorSkipNotice">
|
<table className={"sponsorSkipObject sponsorSkipNotice"
|
||||||
|
+ (this.props.limitWidth ? " sponsorSkipNoticeLimitWidth" : "")}>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
{/* First row */}
|
{/* First row */}
|
||||||
<tr id={"sponsorSkipNoticeFirstRow" + this.idSuffix}>
|
<tr id={"sponsorSkipNoticeFirstRow" + this.idSuffix}
|
||||||
|
className="sponsorSkipNoticeFirstRow">
|
||||||
{/* Left column */}
|
{/* Left column */}
|
||||||
<td className="noticeLeftIcon">
|
<td className="noticeLeftIcon">
|
||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
@@ -271,8 +274,8 @@ class NoticeComponent extends React.Component<NoticeProps, NoticeState> {
|
|||||||
if (countdownTime == 3) {
|
if (countdownTime == 3) {
|
||||||
//start fade out animation
|
//start fade out animation
|
||||||
const notice = document.getElementById("sponsorSkipNotice" + this.idSuffix);
|
const notice = document.getElementById("sponsorSkipNotice" + this.idSuffix);
|
||||||
notice.style.removeProperty("animation");
|
notice?.style.removeProperty("animation");
|
||||||
notice.classList.add("sponsorSkipNoticeFadeOut");
|
notice?.classList.add("sponsorSkipNoticeFadeOut");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
|
|||||||
@@ -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 { Category, ContentContainer, CategoryActionType, SponsorHideType, SponsorTime, NoticeVisbilityMode } from "../types";
|
import { Category, ContentContainer, CategoryActionType, SponsorHideType, SponsorTime, NoticeVisbilityMode, ActionType } from "../types";
|
||||||
import NoticeComponent from "./NoticeComponent";
|
import NoticeComponent from "./NoticeComponent";
|
||||||
import NoticeTextSelectionComponent from "./NoticeTextSectionComponent";
|
import NoticeTextSelectionComponent from "./NoticeTextSectionComponent";
|
||||||
|
|
||||||
@@ -39,8 +39,9 @@ export interface SkipNoticeState {
|
|||||||
maxCountdownTime?: () => number;
|
maxCountdownTime?: () => number;
|
||||||
countdownText?: string;
|
countdownText?: string;
|
||||||
|
|
||||||
unskipText?: string;
|
skipButtonText?: string;
|
||||||
unskipCallback?: (index: number) => void;
|
skipButtonCallback?: (index: number) => void;
|
||||||
|
showSkipButton?: boolean;
|
||||||
|
|
||||||
downvoting?: boolean;
|
downvoting?: boolean;
|
||||||
choosingCategory?: boolean;
|
choosingCategory?: boolean;
|
||||||
@@ -110,8 +111,9 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
countdownTime: Config.config.skipNoticeDuration,
|
countdownTime: Config.config.skipNoticeDuration,
|
||||||
countdownText: null,
|
countdownText: null,
|
||||||
|
|
||||||
unskipText: chrome.i18n.getMessage("unskip"),
|
skipButtonText: this.getUnskipText(),
|
||||||
unskipCallback: (index) => this.unskip(index),
|
skipButtonCallback: (index) => this.unskip(index),
|
||||||
|
showSkipButton: true,
|
||||||
|
|
||||||
downvoting: false,
|
downvoting: false,
|
||||||
choosingCategory: false,
|
choosingCategory: false,
|
||||||
@@ -126,7 +128,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
|
|
||||||
if (!this.autoSkip) {
|
if (!this.autoSkip) {
|
||||||
// Assume manual skip is only skipping 1 submission
|
// Assume manual skip is only skipping 1 submission
|
||||||
Object.assign(this.state, this.getUnskippedModeInfo(0, chrome.i18n.getMessage("skip")));
|
Object.assign(this.state, this.getUnskippedModeInfo(0, this.getSkipText()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,6 +167,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
ref={this.noticeRef}
|
ref={this.noticeRef}
|
||||||
closeListener={() => this.closeListener()}
|
closeListener={() => this.closeListener()}
|
||||||
smaller={this.state.smaller}
|
smaller={this.state.smaller}
|
||||||
|
limitWidth={true}
|
||||||
firstColumn={firstColumn}
|
firstColumn={firstColumn}
|
||||||
bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}
|
bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}
|
||||||
onMouseEnter={() => this.onMouseEnter() } >
|
onMouseEnter={() => this.onMouseEnter() } >
|
||||||
@@ -263,7 +266,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
<td>
|
<td>
|
||||||
{/* Category Selector */}
|
{/* Category Selector */}
|
||||||
<select id={"sponsorTimeCategories" + this.idSuffix}
|
<select id={"sponsorTimeCategories" + this.idSuffix}
|
||||||
className="sponsorTimeCategories"
|
className="sponsorTimeCategories sponsorTimeEditSelector"
|
||||||
defaultValue={this.segments[0].category} //Just default to the first segment, as we don't know which they'll choose
|
defaultValue={this.segments[0].category} //Just default to the first segment, as we don't know which they'll choose
|
||||||
ref={this.categoryOptionRef}>
|
ref={this.categoryOptionRef}>
|
||||||
|
|
||||||
@@ -296,9 +299,9 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
}
|
}
|
||||||
|
|
||||||
getSkipButton(): JSX.Element {
|
getSkipButton(): JSX.Element {
|
||||||
if (this.segments.length > 1
|
if (this.state.showSkipButton && (this.segments.length > 1
|
||||||
|| getCategoryActionType(this.segments[0].category) !== CategoryActionType.POI
|
|| getCategoryActionType(this.segments[0].category) !== CategoryActionType.POI
|
||||||
|| this.props.unskipTime) {
|
|| this.props.unskipTime)) {
|
||||||
return (
|
return (
|
||||||
<span className="sponsorSkipNoticeUnskipSection">
|
<span className="sponsorSkipNoticeUnskipSection">
|
||||||
<button id={"sponsorSkipUnskipButton" + this.idSuffix}
|
<button id={"sponsorSkipUnskipButton" + this.idSuffix}
|
||||||
@@ -306,7 +309,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
style={{marginLeft: "4px"}}
|
style={{marginLeft: "4px"}}
|
||||||
onClick={() => this.prepAction(SkipNoticeAction.Unskip)}>
|
onClick={() => this.prepAction(SkipNoticeAction.Unskip)}>
|
||||||
|
|
||||||
{this.state.unskipText + (this.state.showKeybindHint ? " (" + Config.config.skipKeybind + ")" : "")}
|
{this.state.skipButtonText + (this.state.showKeybindHint ? " (" + Config.config.skipKeybind + ")" : "")}
|
||||||
</button>
|
</button>
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
@@ -396,7 +399,7 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)
|
this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)
|
||||||
break;
|
break;
|
||||||
case SkipNoticeAction.Unskip:
|
case SkipNoticeAction.Unskip:
|
||||||
this.state.unskipCallback(index);
|
this.state.skipButtonCallback(index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,7 +459,29 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
unskip(index: number): void {
|
unskip(index: number): void {
|
||||||
this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime);
|
this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime);
|
||||||
|
|
||||||
this.unskippedMode(index, chrome.i18n.getMessage("reskip"));
|
this.unskippedMode(index, this.getReskipText());
|
||||||
|
}
|
||||||
|
|
||||||
|
reskip(index: number): void {
|
||||||
|
this.contentContainer().reskipSponsorTime(this.segments[index]);
|
||||||
|
|
||||||
|
const newState: SkipNoticeState = {
|
||||||
|
skipButtonText: this.getUnskipText(),
|
||||||
|
skipButtonCallback: this.unskip.bind(this),
|
||||||
|
|
||||||
|
maxCountdownTime: () => Config.config.skipNoticeDuration,
|
||||||
|
countdownTime: Config.config.skipNoticeDuration
|
||||||
|
};
|
||||||
|
|
||||||
|
// See if the title should be changed
|
||||||
|
if (!this.autoSkip) {
|
||||||
|
newState.noticeTitle = chrome.i18n.getMessage("noticeTitle");
|
||||||
|
}
|
||||||
|
|
||||||
|
//reset countdown
|
||||||
|
this.setState(newState, () => {
|
||||||
|
this.noticeRef.current.resetCountdown();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets up notice to be not skipped yet */
|
/** Sets up notice to be not skipped yet */
|
||||||
@@ -478,36 +503,14 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
} : this.state.maxCountdownTime;
|
} : this.state.maxCountdownTime;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
unskipText: buttonText,
|
skipButtonText: buttonText,
|
||||||
unskipCallback: (index) => this.reskip(index),
|
skipButtonCallback: (index) => this.reskip(index),
|
||||||
// change max duration to however much of the sponsor is left
|
// change max duration to however much of the sponsor is left
|
||||||
maxCountdownTime: maxCountdownTime,
|
maxCountdownTime: maxCountdownTime,
|
||||||
countdownTime: maxCountdownTime()
|
countdownTime: maxCountdownTime()
|
||||||
} as SkipNoticeState;
|
} as SkipNoticeState;
|
||||||
}
|
}
|
||||||
|
|
||||||
reskip(index: number): void {
|
|
||||||
this.contentContainer().reskipSponsorTime(this.segments[index]);
|
|
||||||
|
|
||||||
const newState: SkipNoticeState = {
|
|
||||||
unskipText: chrome.i18n.getMessage("unskip"),
|
|
||||||
unskipCallback: this.unskip.bind(this),
|
|
||||||
|
|
||||||
maxCountdownTime: () => Config.config.skipNoticeDuration,
|
|
||||||
countdownTime: Config.config.skipNoticeDuration
|
|
||||||
};
|
|
||||||
|
|
||||||
// See if the title should be changed
|
|
||||||
if (!this.autoSkip) {
|
|
||||||
newState.noticeTitle = chrome.i18n.getMessage("noticeTitle");
|
|
||||||
}
|
|
||||||
|
|
||||||
//reset countdown
|
|
||||||
this.setState(newState, () => {
|
|
||||||
this.noticeRef.current.resetCountdown();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
afterVote(segment: SponsorTime, type: number, category: Category): void {
|
afterVote(segment: SponsorTime, type: number, category: Category): void {
|
||||||
this.addVoteButtonInfo(chrome.i18n.getMessage("voted"));
|
this.addVoteButtonInfo(chrome.i18n.getMessage("voted"));
|
||||||
|
|
||||||
@@ -558,6 +561,52 @@ class SkipNoticeComponent extends React.Component<SkipNoticeProps, SkipNoticeSta
|
|||||||
|
|
||||||
this.props.closeListener();
|
this.props.closeListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unmutedListener(): void {
|
||||||
|
if (this.props.segments.length === 1
|
||||||
|
&& this.props.segments[0].actionType === ActionType.Mute
|
||||||
|
&& this.contentContainer().v.currentTime >= this.props.segments[0].segment[1]) {
|
||||||
|
this.setState({
|
||||||
|
showSkipButton: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getUnskipText(): string {
|
||||||
|
switch (this.props.segments[0].actionType) {
|
||||||
|
case ActionType.Mute: {
|
||||||
|
return chrome.i18n.getMessage("unmute");
|
||||||
|
}
|
||||||
|
case ActionType.Skip:
|
||||||
|
default: {
|
||||||
|
return chrome.i18n.getMessage("unskip");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getReskipText(): string {
|
||||||
|
switch (this.props.segments[0].actionType) {
|
||||||
|
case ActionType.Mute: {
|
||||||
|
return chrome.i18n.getMessage("mute");
|
||||||
|
}
|
||||||
|
case ActionType.Skip:
|
||||||
|
default: {
|
||||||
|
return chrome.i18n.getMessage("reskip");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getSkipText(): string {
|
||||||
|
switch (this.props.segments[0].actionType) {
|
||||||
|
case ActionType.Mute: {
|
||||||
|
return chrome.i18n.getMessage("mute");
|
||||||
|
}
|
||||||
|
case ActionType.Skip:
|
||||||
|
default: {
|
||||||
|
return chrome.i18n.getMessage("skip");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SkipNoticeComponent;
|
export default SkipNoticeComponent;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
import Config from "../config";
|
|
||||||
import * as CompileConfig from "../../config.json";
|
import * as CompileConfig from "../../config.json";
|
||||||
|
import Config from "../config";
|
||||||
|
import { ActionType, ActionTypes, Category, CategoryActionType, ContentContainer, SponsorTime } from "../types";
|
||||||
import Utils from "../utils";
|
import Utils from "../utils";
|
||||||
import { Category, CategoryActionType, ContentContainer, SponsorTime } from "../types";
|
|
||||||
import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
|
|
||||||
import { getCategoryActionType } from "../utils/categoryUtils";
|
import { getCategoryActionType } from "../utils/categoryUtils";
|
||||||
|
import SubmissionNoticeComponent from "./SubmissionNoticeComponent";
|
||||||
|
|
||||||
|
|
||||||
const utils = new Utils();
|
const utils = new Utils();
|
||||||
|
|
||||||
export interface SponsorTimeEditProps {
|
export interface SponsorTimeEditProps {
|
||||||
@@ -32,6 +32,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
idSuffix: string;
|
idSuffix: string;
|
||||||
|
|
||||||
categoryOptionRef: React.RefObject<HTMLSelectElement>;
|
categoryOptionRef: React.RefObject<HTMLSelectElement>;
|
||||||
|
actionTypeOptionRef: React.RefObject<HTMLSelectElement>;
|
||||||
|
|
||||||
configUpdateListener: () => void;
|
configUpdateListener: () => void;
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.categoryOptionRef = React.createRef();
|
this.categoryOptionRef = React.createRef();
|
||||||
|
this.actionTypeOptionRef = React.createRef();
|
||||||
|
|
||||||
this.idSuffix = this.props.idSuffix;
|
this.idSuffix = this.props.idSuffix;
|
||||||
|
|
||||||
@@ -171,7 +173,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
{/* Category */}
|
{/* Category */}
|
||||||
<div style={{position: "relative"}}>
|
<div style={{position: "relative"}}>
|
||||||
<select id={"sponsorTimeCategories" + this.idSuffix}
|
<select id={"sponsorTimeCategories" + this.idSuffix}
|
||||||
className="sponsorTimeCategories"
|
className="sponsorTimeEditSelector sponsorTimeCategories"
|
||||||
defaultValue={sponsorTime.category}
|
defaultValue={sponsorTime.category}
|
||||||
ref={this.categoryOptionRef}
|
ref={this.categoryOptionRef}
|
||||||
onChange={this.categorySelectionChange.bind(this)}>
|
onChange={this.categorySelectionChange.bind(this)}>
|
||||||
@@ -188,6 +190,19 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Action Type */}
|
||||||
|
{CompileConfig.categorySupport[sponsorTime.category]?.length > 1 ? (
|
||||||
|
<div style={{position: "relative"}}>
|
||||||
|
<select id={"sponsorTimeActionTypes" + this.idSuffix}
|
||||||
|
className="sponsorTimeEditSelector sponsorTimeActionTypes"
|
||||||
|
defaultValue={sponsorTime.actionType}
|
||||||
|
ref={this.actionTypeOptionRef}
|
||||||
|
onChange={() => this.saveEditTimes()}>
|
||||||
|
{this.getActionTypeOptions(sponsorTime)}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
): ""}
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
{/* Editing Tools */}
|
{/* Editing Tools */}
|
||||||
@@ -264,11 +279,31 @@ 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(sponsorTime: SponsorTime): React.ReactElement[] {
|
||||||
|
const elements = [];
|
||||||
|
|
||||||
|
for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {
|
||||||
|
elements.push(
|
||||||
|
<option value={actionType}
|
||||||
|
key={actionType}>
|
||||||
|
{chrome.i18n.getMessage(actionType)}
|
||||||
|
</option>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
|
|
||||||
setTimeToNow(index: number): void {
|
setTimeToNow(index: number): void {
|
||||||
this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());
|
this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());
|
||||||
}
|
}
|
||||||
@@ -331,6 +366,8 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
}
|
}
|
||||||
|
|
||||||
sponsorTimesSubmitting[this.props.index].category = this.categoryOptionRef.current.value as Category;
|
sponsorTimesSubmitting[this.props.index].category = this.categoryOptionRef.current.value as Category;
|
||||||
|
sponsorTimesSubmitting[this.props.index].actionType =
|
||||||
|
this.actionTypeOptionRef?.current ? this.actionTypeOptionRef.current.value as ActionType : ActionType.Skip;
|
||||||
|
|
||||||
Config.config.segmentTimes.set(this.props.contentContainer().sponsorVideoID, sponsorTimesSubmitting);
|
Config.config.segmentTimes.set(this.props.contentContainer().sponsorVideoID, sponsorTimesSubmitting);
|
||||||
|
|
||||||
@@ -343,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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ interface SBConfig {
|
|||||||
submissionCountSinceCategories: number, // New count used to show the "Read The Guidelines!!" message
|
submissionCountSinceCategories: number, // New count used to show the "Read The Guidelines!!" message
|
||||||
showTimeWithSkips: boolean,
|
showTimeWithSkips: boolean,
|
||||||
disableSkipping: boolean,
|
disableSkipping: boolean,
|
||||||
|
muteSegments: boolean,
|
||||||
trackViewCount: boolean,
|
trackViewCount: boolean,
|
||||||
trackViewCountInPrivate: boolean,
|
trackViewCountInPrivate: boolean,
|
||||||
dontShowNotice: boolean,
|
dontShowNotice: boolean,
|
||||||
@@ -25,6 +26,7 @@ interface SBConfig {
|
|||||||
hideInfoButtonPlayerControls: boolean,
|
hideInfoButtonPlayerControls: boolean,
|
||||||
hideDeleteButtonPlayerControls: boolean,
|
hideDeleteButtonPlayerControls: boolean,
|
||||||
hideUploadButtonPlayerControls: boolean,
|
hideUploadButtonPlayerControls: boolean,
|
||||||
|
hideSkipButtonPlayerControls: boolean,
|
||||||
hideDiscordLaunches: number,
|
hideDiscordLaunches: number,
|
||||||
hideDiscordLink: boolean,
|
hideDiscordLink: boolean,
|
||||||
invidiousInstances: string[],
|
invidiousInstances: string[],
|
||||||
@@ -162,6 +164,7 @@ const Config: SBObject = {
|
|||||||
submissionCountSinceCategories: 0,
|
submissionCountSinceCategories: 0,
|
||||||
showTimeWithSkips: true,
|
showTimeWithSkips: true,
|
||||||
disableSkipping: false,
|
disableSkipping: false,
|
||||||
|
muteSegments: true,
|
||||||
trackViewCount: true,
|
trackViewCount: true,
|
||||||
trackViewCountInPrivate: true,
|
trackViewCountInPrivate: true,
|
||||||
dontShowNotice: false,
|
dontShowNotice: false,
|
||||||
@@ -170,6 +173,7 @@ const Config: SBObject = {
|
|||||||
hideInfoButtonPlayerControls: false,
|
hideInfoButtonPlayerControls: false,
|
||||||
hideDeleteButtonPlayerControls: false,
|
hideDeleteButtonPlayerControls: false,
|
||||||
hideUploadButtonPlayerControls: false,
|
hideUploadButtonPlayerControls: false,
|
||||||
|
hideSkipButtonPlayerControls: false,
|
||||||
hideDiscordLaunches: 0,
|
hideDiscordLaunches: 0,
|
||||||
hideDiscordLink: false,
|
hideDiscordLink: false,
|
||||||
invidiousInstances: ["invidious.snopyta.org"],
|
invidiousInstances: ["invidious.snopyta.org"],
|
||||||
|
|||||||
222
src/content.ts
222
src/content.ts
@@ -1,5 +1,5 @@
|
|||||||
import Config from "./config";
|
import Config from "./config";
|
||||||
import { SponsorTime, CategorySkipOption, VideoID, SponsorHideType, VideoInfo, StorageChangesObject, CategoryActionType, ChannelIDInfo, ChannelIDStatus, SponsorSourceType, SegmentUUID, Category, SkipToTimeParams, ToggleSkippable } from "./types";
|
import { SponsorTime, CategorySkipOption, VideoID, SponsorHideType, VideoInfo, StorageChangesObject, CategoryActionType, ChannelIDInfo, ChannelIDStatus, SponsorSourceType, SegmentUUID, Category, SkipToTimeParams, ToggleSkippable, ActionType, ScheduledTime } from "./types";
|
||||||
|
|
||||||
import { ContentContainer } from "./types";
|
import { ContentContainer } from "./types";
|
||||||
import Utils from "./utils";
|
import Utils from "./utils";
|
||||||
@@ -16,6 +16,7 @@ import * as Chat from "./js-components/chat";
|
|||||||
import { getCategoryActionType } from "./utils/categoryUtils";
|
import { getCategoryActionType } from "./utils/categoryUtils";
|
||||||
import { SkipButtonControlBar } from "./js-components/skipButtonControlBar";
|
import { SkipButtonControlBar } from "./js-components/skipButtonControlBar";
|
||||||
import { Tooltip } from "./render/Tooltip";
|
import { Tooltip } from "./render/Tooltip";
|
||||||
|
import { getStartTimeFromUrl } from "./utils/urlParser";
|
||||||
|
|
||||||
// Hack to get the CSS loaded on permission-based sites (Invidious)
|
// Hack to get the CSS loaded on permission-based sites (Invidious)
|
||||||
utils.wait(() => Config.config !== null, 5000, 10).then(addCSS);
|
utils.wait(() => Config.config !== null, 5000, 10).then(addCSS);
|
||||||
@@ -29,6 +30,7 @@ let sponsorVideoID: VideoID = null;
|
|||||||
// List of open skip notices
|
// List of open skip notices
|
||||||
const skipNotices: SkipNotice[] = [];
|
const skipNotices: SkipNotice[] = [];
|
||||||
let activeSkipKeybindElement: ToggleSkippable = null;
|
let activeSkipKeybindElement: ToggleSkippable = null;
|
||||||
|
let lastPOISkip = 0;
|
||||||
|
|
||||||
// JSON video info
|
// JSON video info
|
||||||
let videoInfo: VideoInfo = null;
|
let videoInfo: VideoInfo = null;
|
||||||
@@ -45,6 +47,7 @@ let sponsorSkipped: boolean[] = [];
|
|||||||
|
|
||||||
//the video
|
//the video
|
||||||
let video: HTMLVideoElement;
|
let video: HTMLVideoElement;
|
||||||
|
let videoMuted = false; // Has it been attempted to be muted
|
||||||
let videoMutationObserver: MutationObserver = null;
|
let videoMutationObserver: MutationObserver = null;
|
||||||
// List of videos that have had event listeners added to them
|
// List of videos that have had event listeners added to them
|
||||||
const videosWithEventListeners: HTMLVideoElement[] = [];
|
const videosWithEventListeners: HTMLVideoElement[] = [];
|
||||||
@@ -385,6 +388,12 @@ function createPreviewBar(): void {
|
|||||||
function durationChangeListener(): void {
|
function durationChangeListener(): void {
|
||||||
updateAdFlag();
|
updateAdFlag();
|
||||||
updatePreviewBar();
|
updatePreviewBar();
|
||||||
|
|
||||||
|
if (sponsorTimes) sponsorTimes = sponsorTimes.filter(segmentDurationFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
function segmentDurationFilter(segment: SponsorTime): boolean {
|
||||||
|
return segment.videoDuration === 0 || !video?.duration || Math.abs(video.duration - segment.videoDuration) < 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
function cancelSponsorSchedule(): void {
|
function cancelSponsorSchedule(): void {
|
||||||
@@ -396,7 +405,6 @@ function cancelSponsorSchedule(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param currentTime Optional if you don't want to use the actual current time
|
* @param currentTime Optional if you don't want to use the actual current time
|
||||||
*/
|
*/
|
||||||
function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): void {
|
function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): void {
|
||||||
@@ -412,6 +420,17 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!video || video.paused) return;
|
if (!video || video.paused) return;
|
||||||
|
if (currentTime === undefined || currentTime === null) currentTime = video.currentTime;
|
||||||
|
|
||||||
|
if (videoMuted && !inMuteSegment(currentTime)) {
|
||||||
|
video.muted = false;
|
||||||
|
videoMuted = false;
|
||||||
|
|
||||||
|
for (const notice of skipNotices) {
|
||||||
|
// So that the notice can hide buttons
|
||||||
|
notice.unmutedListener();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Config.config.disableSkipping || channelWhitelisted || (channelIDInfo.status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){
|
if (Config.config.disableSkipping || channelWhitelisted || (channelIDInfo.status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){
|
||||||
return;
|
return;
|
||||||
@@ -419,14 +438,12 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
|
|
||||||
if (incorrectVideoCheck()) return;
|
if (incorrectVideoCheck()) return;
|
||||||
|
|
||||||
if (currentTime === undefined || currentTime === null) currentTime = video.currentTime;
|
|
||||||
|
|
||||||
const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);
|
const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);
|
||||||
|
|
||||||
if (skipInfo.index === -1) return;
|
if (skipInfo.index === -1) return;
|
||||||
|
|
||||||
const currentSkip = skipInfo.array[skipInfo.index];
|
const currentSkip = skipInfo.array[skipInfo.index];
|
||||||
const skipTime: number[] = [currentSkip.segment[0], skipInfo.array[skipInfo.endIndex].segment[1]];
|
const skipTime: number[] = [currentSkip.scheduledTime, skipInfo.array[skipInfo.endIndex].segment[1]];
|
||||||
const timeUntilSponsor = skipTime[0] - currentTime;
|
const timeUntilSponsor = skipTime[0] - currentTime;
|
||||||
const videoID = sponsorVideoID;
|
const videoID = sponsorVideoID;
|
||||||
|
|
||||||
@@ -461,7 +478,8 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
openNotice: skipInfo.openNotice
|
openNotice: skipInfo.openNotice
|
||||||
});
|
});
|
||||||
|
|
||||||
if (utils.getCategorySelection(currentSkip.category)?.option === CategorySkipOption.ManualSkip) {
|
if (utils.getCategorySelection(currentSkip.category)?.option === CategorySkipOption.ManualSkip
|
||||||
|
|| currentSkip.actionType === ActionType.Mute) {
|
||||||
forcedSkipTime = skipTime[0] + 0.001;
|
forcedSkipTime = skipTime[0] + 0.001;
|
||||||
} else {
|
} else {
|
||||||
forcedSkipTime = skipTime[1];
|
forcedSkipTime = skipTime[1];
|
||||||
@@ -480,12 +498,19 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function inMuteSegment(currentTime: number): boolean {
|
||||||
|
const checkFunction = (segment) => segment.actionType === ActionType.Mute && segment.segment[0] <= currentTime && segment.segment[1] > currentTime;
|
||||||
|
return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This makes sure the videoID is still correct and if the sponsorTime is included
|
* This makes sure the videoID is still correct and if the sponsorTime is included
|
||||||
*/
|
*/
|
||||||
function incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {
|
function incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {
|
||||||
const currentVideoID = getYouTubeVideoID(document.URL);
|
const currentVideoID = getYouTubeVideoID(document.URL);
|
||||||
if (currentVideoID !== (videoID || sponsorVideoID) || (sponsorTime && (!sponsorTimes || !sponsorTimes.includes(sponsorTime)) && !sponsorTimesSubmitting.includes(sponsorTime))) {
|
if (currentVideoID !== (videoID || sponsorVideoID) || (sponsorTime
|
||||||
|
&& (!sponsorTimes || !sponsorTimes?.some((time) => time.segment === sponsorTime.segment))
|
||||||
|
&& !sponsorTimesSubmitting.some((time) => time.segment === sponsorTime.segment))) {
|
||||||
// Something has really gone wrong
|
// Something has really gone wrong
|
||||||
console.error("[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.");
|
console.error("[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.");
|
||||||
console.error("[SponsorBlock] VideoID recorded: " + sponsorVideoID + ". Actual VideoID: " + currentVideoID);
|
console.error("[SponsorBlock] VideoID recorded: " + sponsorVideoID + ". Actual VideoID: " + currentVideoID);
|
||||||
@@ -534,13 +559,17 @@ function setupVideoListeners() {
|
|||||||
switchingVideos = false;
|
switchingVideos = false;
|
||||||
|
|
||||||
video.addEventListener('play', () => {
|
video.addEventListener('play', () => {
|
||||||
switchingVideos = false;
|
|
||||||
|
|
||||||
// If it is not the first event, then the only way to get to 0 is if there is a seek event
|
// If it is not the first event, then the only way to get to 0 is if there is a seek event
|
||||||
// This check makes sure that changing the video resolution doesn't cause the extension to think it
|
// This check makes sure that changing the video resolution doesn't cause the extension to think it
|
||||||
// gone back to the begining
|
// gone back to the begining
|
||||||
if (!firstEvent && video.currentTime === 0) return;
|
if (!firstEvent && video.currentTime === 0) return;
|
||||||
firstEvent = false;
|
firstEvent = false;
|
||||||
|
|
||||||
|
if (switchingVideos) {
|
||||||
|
switchingVideos = false;
|
||||||
|
// If already segments loaded before video, retry to skip starting segments
|
||||||
|
if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();
|
||||||
|
}
|
||||||
|
|
||||||
// Check if an ad is playing
|
// Check if an ad is playing
|
||||||
updateAdFlag();
|
updateAdFlag();
|
||||||
@@ -575,11 +604,13 @@ function setupVideoListeners() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!Config.config.dontShowNotice) {
|
if (!Config.config.dontShowNotice) {
|
||||||
const currentPoiSegment = sponsorTimes.find((segment) =>
|
const currentPoiSegment = sponsorTimes?.find((segment) =>
|
||||||
getCategoryActionType(segment.category) === CategoryActionType.POI &&
|
getCategoryActionType(segment.category) === CategoryActionType.POI &&
|
||||||
video.currentTime - segment.segment[0] > 0 &&
|
video.currentTime - segment.segment[0] > 0 &&
|
||||||
video.currentTime - segment.segment[0] < previewBar.getMinimumSize(true));
|
video.currentTime - segment.segment[0] < previewBar.getMinimumSize(true));
|
||||||
if (currentPoiSegment && !skipNotices.some((notice) => notice.segments.some((s) => s.UUID === currentPoiSegment.UUID))) {
|
if (currentPoiSegment && lastPOISkip < Date.now() - 3000
|
||||||
|
&& !skipNotices.some((notice) => notice.segments.some((s) => s.UUID === currentPoiSegment.UUID))) {
|
||||||
|
lastPOISkip = Date.now();
|
||||||
skipToTime({
|
skipToTime({
|
||||||
v: video,
|
v: video,
|
||||||
skipTime: currentPoiSegment.segment,
|
skipTime: currentPoiSegment.segment,
|
||||||
@@ -644,13 +675,15 @@ async function sponsorsLookup(id: string, keepOldSubmissions = true) {
|
|||||||
const hashPrefix = (await utils.getHash(id, 1)).substr(0, 4);
|
const hashPrefix = (await utils.getHash(id, 1)).substr(0, 4);
|
||||||
const response = await utils.asyncRequestToServer('GET', "/api/skipSegments/" + hashPrefix, {
|
const response = await utils.asyncRequestToServer('GET', "/api/skipSegments/" + hashPrefix, {
|
||||||
categories,
|
categories,
|
||||||
|
actionTypes: Config.config.muteSegments ? [ActionType.Skip, ActionType.Mute] : [ActionType.Skip],
|
||||||
userAgent: `${chrome.runtime.id}`
|
userAgent: `${chrome.runtime.id}`
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response?.ok) {
|
if (response?.ok) {
|
||||||
const recievedSegments: SponsorTime[] = JSON.parse(response.responseText)
|
const recievedSegments: SponsorTime[] = JSON.parse(response.responseText)
|
||||||
?.filter((video) => video.videoID === id)
|
?.filter((video) => video.videoID === id)
|
||||||
?.map((video) => video.segments)[0];
|
?.map((video) => video.segments)[0]
|
||||||
|
?.filter(segmentDurationFilter);
|
||||||
if (!recievedSegments || !recievedSegments.length) {
|
if (!recievedSegments || !recievedSegments.length) {
|
||||||
// return if no video found
|
// return if no video found
|
||||||
retryFetch();
|
retryFetch();
|
||||||
@@ -741,24 +774,27 @@ function retryFetch(): void {
|
|||||||
* Ex. When segments are first loaded
|
* Ex. When segments are first loaded
|
||||||
*/
|
*/
|
||||||
function startSkipScheduleCheckingForStartSponsors() {
|
function startSkipScheduleCheckingForStartSponsors() {
|
||||||
if (!switchingVideos) {
|
if (!switchingVideos && sponsorTimes) {
|
||||||
// See if there are any starting sponsors
|
// See if there are any starting sponsors
|
||||||
let startingSegmentTime = -1;
|
let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;
|
||||||
|
let found = false;
|
||||||
let startingSegment: SponsorTime = null;
|
let startingSegment: SponsorTime = null;
|
||||||
for (const time of sponsorTimes) {
|
for (const time of sponsorTimes) {
|
||||||
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
|
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
|
||||||
&& getCategoryActionType(time.category) === CategoryActionType.Skippable) {
|
&& getCategoryActionType(time.category) === CategoryActionType.Skippable) {
|
||||||
startingSegmentTime = time.segment[0];
|
startingSegmentTime = time.segment[0];
|
||||||
startingSegment = time;
|
startingSegment = time;
|
||||||
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startingSegmentTime === -1) {
|
if (!found) {
|
||||||
for (const time of sponsorTimesSubmitting) {
|
for (const time of sponsorTimesSubmitting) {
|
||||||
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
|
if (time.segment[0] <= video.currentTime && time.segment[0] > startingSegmentTime && time.segment[1] > video.currentTime
|
||||||
&& getCategoryActionType(time.category) === CategoryActionType.Skippable) {
|
&& getCategoryActionType(time.category) === CategoryActionType.Skippable) {
|
||||||
startingSegmentTime = time.segment[0];
|
startingSegmentTime = time.segment[0];
|
||||||
startingSegment = time;
|
startingSegment = time;
|
||||||
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -815,7 +851,7 @@ function getYouTubeVideoID(url: string): string | boolean {
|
|||||||
if(url.startsWith("https://www.youtube.com/tv#/")) url = url.replace("#", "");
|
if(url.startsWith("https://www.youtube.com/tv#/")) url = url.replace("#", "");
|
||||||
|
|
||||||
//Attempt to parse url
|
//Attempt to parse url
|
||||||
let urlObject = null;
|
let urlObject: URL = null;
|
||||||
try {
|
try {
|
||||||
urlObject = new URL(url);
|
urlObject = new URL(url);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -841,9 +877,10 @@ function getYouTubeVideoID(url: string): string | boolean {
|
|||||||
if (urlObject.searchParams.has("v") && ["/watch", "/watch/"].includes(urlObject.pathname) || urlObject.pathname.startsWith("/tv/watch")) {
|
if (urlObject.searchParams.has("v") && ["/watch", "/watch/"].includes(urlObject.pathname) || urlObject.pathname.startsWith("/tv/watch")) {
|
||||||
const id = urlObject.searchParams.get("v");
|
const id = urlObject.searchParams.get("v");
|
||||||
return id.length == 11 ? id : false;
|
return id.length == 11 ? id : false;
|
||||||
} else if (urlObject.pathname.startsWith("/embed/")) {
|
} else if (urlObject.pathname.startsWith("/embed/") || urlObject.pathname.startsWith("/shorts/")) {
|
||||||
try {
|
try {
|
||||||
return urlObject.pathname.substr(7, 11);
|
const id = urlObject.pathname.split("/")[2];
|
||||||
|
if (id && id.length >= 11) return id.substr(0, 11);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("[SB] Video ID not valid for " + url);
|
console.error("[SB] Video ID not valid for " + url);
|
||||||
return false;
|
return false;
|
||||||
@@ -894,7 +931,7 @@ function updatePreviewBar(): void {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
previewBar.set(previewBarSegments, video.duration)
|
previewBar.set(previewBarSegments, video?.duration)
|
||||||
|
|
||||||
if (Config.config.showTimeWithSkips) {
|
if (Config.config.showTimeWithSkips) {
|
||||||
const skippedDuration = utils.getTimestampsDuration(previewBarSegments.map(({segment}) => segment));
|
const skippedDuration = utils.getTimestampsDuration(previewBarSegments.map(({segment}) => segment));
|
||||||
@@ -945,31 +982,33 @@ async function whitelistCheck() {
|
|||||||
* Returns info about the next upcoming sponsor skip
|
* Returns info about the next upcoming sponsor skip
|
||||||
*/
|
*/
|
||||||
function getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):
|
function getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):
|
||||||
{array: SponsorTime[], index: number, endIndex: number, openNotice: boolean} {
|
{array: ScheduledTime[], index: number, endIndex: number, openNotice: boolean} {
|
||||||
|
|
||||||
const sponsorStartTimes = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);
|
const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =
|
||||||
const sponsorStartTimesAfterCurrentTime = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true, true);
|
getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);
|
||||||
|
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(sponsorTimes, minSponsorTimeIndex);
|
const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);
|
||||||
|
|
||||||
const unsubmittedSponsorStartTimes = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);
|
const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =
|
||||||
const unsubmittedSponsorStartTimesAfterCurrentTime = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false, false);
|
getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);
|
||||||
|
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(sponsorTimesSubmitting, minUnsubmittedSponsorTimeIndex);
|
const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);
|
||||||
|
|
||||||
if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||
|
if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||
|
||||||
sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {
|
sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {
|
||||||
return {
|
return {
|
||||||
array: sponsorTimes.filter((segment) => getCategoryActionType(segment.category) === CategoryActionType.Skippable),
|
array: submittedArray,
|
||||||
index: minSponsorTimeIndex,
|
index: minSponsorTimeIndex,
|
||||||
endIndex: endTimeIndex,
|
endIndex: endTimeIndex,
|
||||||
openNotice: true
|
openNotice: true
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
array: sponsorTimesSubmitting.filter((segment) => getCategoryActionType(segment.category) === CategoryActionType.Skippable),
|
array: unsubmittedArray,
|
||||||
index: minUnsubmittedSponsorTimeIndex,
|
index: minUnsubmittedSponsorTimeIndex,
|
||||||
endIndex: previewEndTimeIndex,
|
endIndex: previewEndTimeIndex,
|
||||||
openNotice: false
|
openNotice: false
|
||||||
@@ -993,7 +1032,10 @@ function getNextSkipIndex(currentTime: number, includeIntersectingSegments: bool
|
|||||||
function getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {
|
function getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {
|
||||||
// Only combine segments for AutoSkip
|
// Only combine segments for AutoSkip
|
||||||
if (index == -1 ||
|
if (index == -1 ||
|
||||||
!shouldAutoSkip(sponsorTimes[index])) return index;
|
!shouldAutoSkip(sponsorTimes[index])
|
||||||
|
|| sponsorTimes[index].actionType !== ActionType.Skip) {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
// Default to the normal endTime
|
// Default to the normal endTime
|
||||||
let latestEndTimeIndex = index;
|
let latestEndTimeIndex = index;
|
||||||
@@ -1004,7 +1046,8 @@ function getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideH
|
|||||||
|
|
||||||
if (currentSegment[0] <= latestEndTime && currentSegment[1] > latestEndTime
|
if (currentSegment[0] <= latestEndTime && currentSegment[1] > latestEndTime
|
||||||
&& (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)
|
&& (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)
|
||||||
&& shouldAutoSkip(sponsorTimes[i])) {
|
&& shouldAutoSkip(sponsorTimes[i])
|
||||||
|
&& sponsorTimes[i].actionType === ActionType.Skip) {
|
||||||
// Overlapping segment
|
// Overlapping segment
|
||||||
latestEndTimeIndex = i;
|
latestEndTimeIndex = i;
|
||||||
}
|
}
|
||||||
@@ -1029,24 +1072,42 @@ 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): number[] {
|
minimum?: number, onlySkippableSponsors = false, hideHiddenSponsors = false): {includedTimes: ScheduledTime[], scheduledTimes: number[]} {
|
||||||
if (sponsorTimes === null) return [];
|
if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};
|
||||||
|
|
||||||
const startTimes: number[] = [];
|
const includedTimes: ScheduledTime[] = [];
|
||||||
|
const scheduledTimes: number[] = [];
|
||||||
|
|
||||||
for (let i = 0; i < sponsorTimes?.length; i++) {
|
const possibleTimes = sponsorTimes.map((sponsorTime) => ({
|
||||||
|
...sponsorTime,
|
||||||
|
scheduledTime: sponsorTime.segment[0]
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Schedule at the end time to know when to unmute
|
||||||
|
sponsorTimes.filter(sponsorTime => sponsorTime.actionType === ActionType.Mute)
|
||||||
|
.forEach(sponsorTime => {
|
||||||
|
if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime)) {
|
||||||
|
possibleTimes.push({
|
||||||
|
...sponsorTime,
|
||||||
|
scheduledTime: sponsorTime.segment[1]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (let i = 0; i < possibleTimes.length; i++) {
|
||||||
if ((minimum === undefined
|
if ((minimum === undefined
|
||||||
|| ((includeNonIntersectingSegments && sponsorTimes[i].segment[0] >= minimum)
|
|| ((includeNonIntersectingSegments && possibleTimes[i].scheduledTime >= minimum)
|
||||||
|| (includeIntersectingSegments && sponsorTimes[i].segment[0] < minimum && sponsorTimes[i].segment[1] > minimum)))
|
|| (includeIntersectingSegments && possibleTimes[i].scheduledTime < minimum && possibleTimes[i].segment[1] > minimum)))
|
||||||
&& (!onlySkippableSponsors || shouldSkip(sponsorTimes[i]))
|
&& (!onlySkippableSponsors || shouldSkip(possibleTimes[i]))
|
||||||
&& (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)
|
&& (!hideHiddenSponsors || possibleTimes[i].hidden === SponsorHideType.Visible)
|
||||||
&& getCategoryActionType(sponsorTimes[i].category) === CategoryActionType.Skippable) {
|
&& getCategoryActionType(possibleTimes[i].category) === CategoryActionType.Skippable) {
|
||||||
|
|
||||||
startTimes.push(sponsorTimes[i].segment[0]);
|
scheduledTimes.push(possibleTimes[i].scheduledTime);
|
||||||
|
includedTimes.push(possibleTimes[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return startTimes;
|
return { includedTimes, scheduledTimes };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1069,7 +1130,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) {
|
||||||
@@ -1092,13 +1153,27 @@ function skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, u
|
|||||||
|
|
||||||
if ((autoSkip || sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment))
|
if ((autoSkip || sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment))
|
||||||
&& v.currentTime !== skipTime[1]) {
|
&& v.currentTime !== skipTime[1]) {
|
||||||
// Fix for looped videos not working when skipping to the end #426
|
switch(skippingSegments[0].actionType) {
|
||||||
// for some reason you also can't skip to 1 second before the end
|
case ActionType.Skip: {
|
||||||
if (v.loop && v.duration > 1 && skipTime[1] >= v.duration - 1) {
|
// Fix for looped videos not working when skipping to the end #426
|
||||||
v.currentTime = 0;
|
// for some reason you also can't skip to 1 second before the end
|
||||||
} else {
|
if (v.loop && v.duration > 1 && skipTime[1] >= v.duration - 1) {
|
||||||
v.currentTime = skipTime[1];
|
v.currentTime = 0;
|
||||||
|
} else {
|
||||||
|
v.currentTime = skipTime[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ActionType.Mute: {
|
||||||
|
if (!v.muted) {
|
||||||
|
v.muted = true;
|
||||||
|
videoMuted = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!autoSkip
|
if (!autoSkip
|
||||||
@@ -1138,19 +1213,29 @@ function skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, u
|
|||||||
}
|
}
|
||||||
|
|
||||||
function unskipSponsorTime(segment: SponsorTime, unskipTime: number = null) {
|
function unskipSponsorTime(segment: SponsorTime, unskipTime: number = null) {
|
||||||
//add a tiny bit of time to make sure it is not skipped again
|
if (segment.actionType === ActionType.Mute) {
|
||||||
console.log(unskipTime)
|
video.muted = false;
|
||||||
video.currentTime = unskipTime ?? segment.segment[0] + 0.001;
|
videoMuted = false;
|
||||||
|
} else {
|
||||||
|
//add a tiny bit of time to make sure it is not skipped again
|
||||||
|
video.currentTime = unskipTime ?? segment.segment[0] + 0.001;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function reskipSponsorTime(segment: SponsorTime) {
|
function reskipSponsorTime(segment: SponsorTime) {
|
||||||
const skippedTime = Math.max(segment.segment[1] - video.currentTime, 0);
|
if (segment.actionType === ActionType.Mute) {
|
||||||
const segmentDuration = segment.segment[1] - segment.segment[0];
|
video.muted = true;
|
||||||
const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;
|
videoMuted = true;
|
||||||
|
} else {
|
||||||
video.currentTime = segment.segment[1];
|
const skippedTime = Math.max(segment.segment[1] - video.currentTime, 0);
|
||||||
sendTelemetryAndCount([segment], skippedTime, fullSkip);
|
const segmentDuration = segment.segment[1] - segment.segment[0];
|
||||||
startSponsorSchedule(true, segment.segment[1], false);
|
const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;
|
||||||
|
|
||||||
|
video.currentTime = segment.segment[1];
|
||||||
|
sendTelemetryAndCount([segment], skippedTime, fullSkip);
|
||||||
|
startSponsorSchedule(true, segment.segment[1], false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {
|
function createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {
|
||||||
@@ -1193,13 +1278,13 @@ function createButton(baseID: string, title: string, callback: () => void, image
|
|||||||
|
|
||||||
function shouldAutoSkip(segment: SponsorTime): boolean {
|
function shouldAutoSkip(segment: SponsorTime): boolean {
|
||||||
return utils.getCategorySelection(segment.category)?.option === CategorySkipOption.AutoSkip ||
|
return utils.getCategorySelection(segment.category)?.option === CategorySkipOption.AutoSkip ||
|
||||||
(Config.config.autoSkipOnMusicVideos && sponsorTimes.some((s) => s.category === "music_offtopic")
|
(Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic")
|
||||||
&& getCategoryActionType(segment.category) === CategoryActionType.Skippable);
|
&& getCategoryActionType(segment.category) === CategoryActionType.Skippable);
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldSkip(segment: SponsorTime): boolean {
|
function shouldSkip(segment: SponsorTime): boolean {
|
||||||
return utils.getCategorySelection(segment.category)?.option !== CategorySkipOption.ShowOverlay ||
|
return utils.getCategorySelection(segment.category)?.option !== CategorySkipOption.ShowOverlay ||
|
||||||
(Config.config.autoSkipOnMusicVideos && sponsorTimes.some((s) => s.category === "music_offtopic"));
|
(Config.config.autoSkipOnMusicVideos && sponsorTimes?.some((s) => s.category === "music_offtopic"));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getControls(): HTMLElement | false {
|
function getControls(): HTMLElement | false {
|
||||||
@@ -1240,15 +1325,8 @@ async function createButtons(): Promise<void> {
|
|||||||
if (Config.config.autoHideInfoButton && !onInvidious && controlsContainer
|
if (Config.config.autoHideInfoButton && !onInvidious && controlsContainer
|
||||||
&& playerButtons["info"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {
|
&& playerButtons["info"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {
|
||||||
controlsWithEventListeners.push(controlsContainer);
|
controlsWithEventListeners.push(controlsContainer);
|
||||||
playerButtons["info"].button.classList.add("hidden");
|
|
||||||
|
utils.setupAutoHideAnimation(playerButtons["info"].button, controlsContainer);
|
||||||
controlsContainer.addEventListener("mouseenter", () => {
|
|
||||||
playerButtons["info"].button.classList.remove("hidden");
|
|
||||||
});
|
|
||||||
|
|
||||||
controlsContainer.addEventListener("mouseleave", () => {
|
|
||||||
playerButtons["info"].button.classList.add("hidden");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1321,7 +1399,7 @@ function getRealCurrentTime(): number {
|
|||||||
|
|
||||||
if (playButtonSVGData === replaceSVGData) {
|
if (playButtonSVGData === replaceSVGData) {
|
||||||
// At the end of the video
|
// At the end of the video
|
||||||
return video.duration;
|
return video?.duration;
|
||||||
} else {
|
} else {
|
||||||
return video.currentTime;
|
return video.currentTime;
|
||||||
}
|
}
|
||||||
@@ -1333,6 +1411,7 @@ function startOrEndTimingNewSegment() {
|
|||||||
segment: [getRealCurrentTime()],
|
segment: [getRealCurrentTime()],
|
||||||
UUID: null,
|
UUID: null,
|
||||||
category: Config.config.defaultCategory,
|
category: Config.config.defaultCategory,
|
||||||
|
actionType: ActionType.Skip,
|
||||||
source: SponsorSourceType.Local
|
source: SponsorSourceType.Local
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -1389,6 +1468,7 @@ function updateSponsorTimesSubmitting(getFromConfig = true) {
|
|||||||
segment: segmentTime.segment,
|
segment: segmentTime.segment,
|
||||||
UUID: segmentTime.UUID,
|
UUID: segmentTime.UUID,
|
||||||
category: segmentTime.category,
|
category: segmentTime.category,
|
||||||
|
actionType: segmentTime.actionType,
|
||||||
source: segmentTime.source
|
source: segmentTime.source
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1819,7 +1899,7 @@ function showTimeWithoutSkips(skippedDuration: number): void {
|
|||||||
display.appendChild(duration);
|
display.appendChild(duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
const durationAfterSkips = utils.getFormattedTime(video.duration - skippedDuration)
|
const durationAfterSkips = utils.getFormattedTime(video?.duration - skippedDuration)
|
||||||
|
|
||||||
duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? "" : " (" + durationAfterSkips + ")";
|
duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? "" : " (" + durationAfterSkips + ")";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,14 +31,16 @@ export function openChat(config: ChatConfig): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function openWarningChat(warningMessage: string): Promise<void> {
|
export async function openWarningChat(warningMessage: string): Promise<void> {
|
||||||
|
const warningReasonMatch = warningMessage.match(/Warning reason: '(.+)'/);
|
||||||
|
alert(chrome.i18n.getMessage("warningChatInfo") + `\n\n${warningReasonMatch ? ` Warning reason: ${warningReasonMatch[1]}` : ``}`);
|
||||||
|
|
||||||
const userNameData = await utils.asyncRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID);
|
const userNameData = await utils.asyncRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID);
|
||||||
const userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : "";
|
const userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : "";
|
||||||
const publicUserID = await utils.getHash(Config.config.userID);
|
const publicUserID = await utils.getHash(Config.config.userID);
|
||||||
const warningReasonMatch = warningMessage.match(/Warning reason: '(.+)'/);
|
|
||||||
|
|
||||||
openChat({
|
openChat({
|
||||||
displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`,
|
displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`,
|
||||||
composerInitialValue: `I got a warning and want to know what I need to do to improve.` +
|
composerInitialValue: `I got a warning and confirm I [REMOVE THIS CAPITAL TEXT TO CONFIRM] reread the guidelines.` +
|
||||||
warningReasonMatch ? ` Warning reason: ${warningReasonMatch[1]}` : ``,
|
warningReasonMatch ? ` Warning reason: ${warningReasonMatch[1]}` : ``,
|
||||||
customDescription: chrome.i18n.getMessage("warningChatInfo")
|
customDescription: chrome.i18n.getMessage("warningChatInfo")
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ import Config from "../config";
|
|||||||
import { SponsorTime } from "../types";
|
import { SponsorTime } from "../types";
|
||||||
import { getSkippingText } from "../utils/categoryUtils";
|
import { getSkippingText } from "../utils/categoryUtils";
|
||||||
|
|
||||||
|
import Utils from "../utils";
|
||||||
|
const utils = new Utils();
|
||||||
|
|
||||||
export interface SkipButtonControlBarProps {
|
export interface SkipButtonControlBarProps {
|
||||||
skip: (segment: SponsorTime) => void;
|
skip: (segment: SponsorTime) => void;
|
||||||
@@ -53,13 +55,20 @@ export class SkipButtonControlBar {
|
|||||||
|
|
||||||
if (leftControlsContainer && !leftControlsContainer.contains(this.container)) {
|
if (leftControlsContainer && !leftControlsContainer.contains(this.container)) {
|
||||||
leftControlsContainer.insertBefore(this.container, this.chapterText);
|
leftControlsContainer.insertBefore(this.container, this.chapterText);
|
||||||
|
|
||||||
|
if (Config.config.autoHideInfoButton) {
|
||||||
|
utils.setupAutoHideAnimation(this.skipIcon, leftControlsContainer, false, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enable(segment: SponsorTime, duration?: number): void {
|
enable(segment: SponsorTime, duration?: number): void {
|
||||||
if (duration) this.duration = duration;
|
if (duration) this.duration = duration;
|
||||||
this.segment = segment;
|
this.segment = segment;
|
||||||
|
|
||||||
this.refreshText();
|
this.refreshText();
|
||||||
|
this.textContainer?.classList?.remove("hidden");
|
||||||
|
utils.disableAutoHideAnimation(this.skipIcon);
|
||||||
|
|
||||||
this.startTimer();
|
this.startTimer();
|
||||||
}
|
}
|
||||||
@@ -68,7 +77,8 @@ export class SkipButtonControlBar {
|
|||||||
if (this.segment) {
|
if (this.segment) {
|
||||||
this.chapterText?.classList?.add("hidden");
|
this.chapterText?.classList?.add("hidden");
|
||||||
this.container.classList.remove("hidden");
|
this.container.classList.remove("hidden");
|
||||||
this.textContainer.innerText = getSkippingText([this.segment], false) + (this.showKeybindHint ? " (" + Config.config.skipKeybind + ")" : "");
|
this.textContainer.innerText = this.getTitle();
|
||||||
|
this.skipIcon.setAttribute("title", this.getTitle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,17 +94,42 @@ export class SkipButtonControlBar {
|
|||||||
|
|
||||||
startTimer(): void {
|
startTimer(): void {
|
||||||
this.stopTimer();
|
this.stopTimer();
|
||||||
this.timeout = setTimeout(() => this.disable(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);
|
this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
disable(): void {
|
disable(): void {
|
||||||
this.container.classList.add("hidden");
|
this.container.classList.add("hidden");
|
||||||
|
this.textContainer?.classList?.remove("hidden");
|
||||||
|
|
||||||
this.chapterText?.classList?.remove("hidden");
|
this.chapterText?.classList?.remove("hidden");
|
||||||
|
this.getChapterPrefix()?.classList?.remove("hidden");
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSkip(): void {
|
toggleSkip(): void {
|
||||||
this.skip(this.segment);
|
this.skip(this.segment);
|
||||||
this.disable();
|
this.disableText();
|
||||||
|
}
|
||||||
|
|
||||||
|
disableText(): void {
|
||||||
|
if (Config.config.hideVideoPlayerControls || Config.config.hideSkipButtonPlayerControls) {
|
||||||
|
this.disable();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.textContainer?.classList?.add("hidden");
|
||||||
|
this.chapterText?.classList?.remove("hidden");
|
||||||
|
|
||||||
|
this.getChapterPrefix()?.classList?.add("hidden");
|
||||||
|
|
||||||
|
utils.enableAutoHideAnimation(this.skipIcon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private getTitle(): string {
|
||||||
|
return getSkippingText([this.segment], false) + (this.showKeybindHint ? " (" + Config.config.skipKeybind + ")" : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
private getChapterPrefix(): HTMLElement {
|
||||||
|
return document.querySelector(".ytp-chapter-title-prefix");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ class SkipNotice {
|
|||||||
toggleSkip(): void {
|
toggleSkip(): void {
|
||||||
this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip);
|
this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unmutedListener(): void {
|
||||||
|
this.skipNoticeRef?.current?.unmutedListener();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SkipNotice;
|
export default SkipNotice;
|
||||||
13
src/types.ts
13
src/types.ts
@@ -56,6 +56,13 @@ export enum CategoryActionType {
|
|||||||
POI = "_POI"
|
POI = "_POI"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum ActionType {
|
||||||
|
Skip = "skip",
|
||||||
|
Mute = "mute"
|
||||||
|
}
|
||||||
|
|
||||||
|
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 };
|
||||||
|
|
||||||
@@ -69,9 +76,15 @@ export interface SponsorTime {
|
|||||||
UUID: SegmentUUID;
|
UUID: SegmentUUID;
|
||||||
|
|
||||||
category: Category;
|
category: Category;
|
||||||
|
actionType: ActionType;
|
||||||
|
|
||||||
hidden?: SponsorHideType;
|
hidden?: SponsorHideType;
|
||||||
source?: SponsorSourceType;
|
source?: SponsorSourceType;
|
||||||
|
videoDuration?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ScheduledTime extends SponsorTime {
|
||||||
|
scheduledTime: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PreviewBarOption {
|
export interface PreviewBarOption {
|
||||||
|
|||||||
30
src/utils.ts
30
src/utils.ts
@@ -183,6 +183,36 @@ export default class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {
|
||||||
|
if (enabled) element.classList.add("autoHiding");
|
||||||
|
element.classList.add("hidden");
|
||||||
|
element.classList.add("animationDone");
|
||||||
|
if (!rightSlide) element.classList.add("autoHideLeft");
|
||||||
|
|
||||||
|
container.addEventListener("mouseenter", () => {
|
||||||
|
element.classList.remove("animationDone");
|
||||||
|
|
||||||
|
// Wait for next event loop
|
||||||
|
setTimeout(() => element.classList.remove("hidden"), 10);
|
||||||
|
});
|
||||||
|
|
||||||
|
container.addEventListener("mouseleave", () => {
|
||||||
|
if (element.classList.contains("autoHiding")) {
|
||||||
|
element.classList.add("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
enableAutoHideAnimation(element: Element): void {
|
||||||
|
element.classList.add("autoHiding");
|
||||||
|
element.classList.add("hidden");
|
||||||
|
}
|
||||||
|
|
||||||
|
disableAutoHideAnimation(element: Element): void {
|
||||||
|
element.classList.remove("autoHiding");
|
||||||
|
element.classList.remove("hidden");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges any overlapping timestamp ranges into single segments and returns them as a new array.
|
* Merges any overlapping timestamp ranges into single segments and returns them as a new array.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
src/utils/urlParser.ts
Normal file
26
src/utils/urlParser.ts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
export function getStartTimeFromUrl(url: string): number {
|
||||||
|
const urlParams = new URLSearchParams(url);
|
||||||
|
const time = urlParams?.get('t') || urlParams?.get('time_continue');
|
||||||
|
|
||||||
|
return urlTimeToSeconds(time);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function urlTimeToSeconds(time: string): number {
|
||||||
|
if (!time) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const re = /(?:(\d{1,3})h)?(?:(\d{1,2})m)?(\d+)s?/;
|
||||||
|
const match = re.exec(time);
|
||||||
|
|
||||||
|
if (match) {
|
||||||
|
const hours = parseInt(match[1] ?? '0', 10);
|
||||||
|
const minutes = parseInt(match[2] ?? '0', 10);
|
||||||
|
const seconds = parseInt(match[3] ?? '0', 10);
|
||||||
|
|
||||||
|
return hours * 3600 + minutes * 60 + seconds;
|
||||||
|
} else if (/\d+/.test(time)) {
|
||||||
|
return parseInt(time, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,15 @@ import * as Chrome from "selenium-webdriver/chrome";
|
|||||||
import * as Path from "path";
|
import * as Path from "path";
|
||||||
|
|
||||||
test("Selenium Chrome test", async () => {
|
test("Selenium Chrome test", async () => {
|
||||||
const driver = await setup();
|
let driver;
|
||||||
|
try {
|
||||||
|
driver = await setup();
|
||||||
|
} catch (e) {
|
||||||
|
console.warn("A browser is probably not installed, skipping selenium tests");
|
||||||
|
console.warn(e);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await waitForInstall(driver);
|
await waitForInstall(driver);
|
||||||
@@ -13,8 +21,12 @@ test("Selenium Chrome test", async () => {
|
|||||||
await createSegment(driver, "4", "10.33", "0:04.000 to 0:10.330");
|
await createSegment(driver, "4", "10.33", "0:04.000 to 0:10.330");
|
||||||
|
|
||||||
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 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);
|
||||||
} finally {
|
} finally {
|
||||||
await driver.quit();
|
await driver.quit();
|
||||||
}
|
}
|
||||||
@@ -24,7 +36,7 @@ async function setup(): Promise<WebDriver> {
|
|||||||
const options = new Chrome.Options();
|
const options = new Chrome.Options();
|
||||||
options.addArguments("--load-extension=" + Path.join(__dirname, "../dist/"));
|
options.addArguments("--load-extension=" + Path.join(__dirname, "../dist/"));
|
||||||
options.addArguments("--mute-audio");
|
options.addArguments("--mute-audio");
|
||||||
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies")
|
options.addArguments("--disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies");
|
||||||
|
|
||||||
const driver = await new Builder().forBrowser("chrome").setChromeOptions(options).build();
|
const driver = await new Builder().forBrowser("chrome").setChromeOptions(options).build();
|
||||||
driver.manage().setTimeouts({
|
driver.manage().setTimeouts({
|
||||||
@@ -106,6 +118,26 @@ 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> {
|
||||||
|
if (openSubmitBox) {
|
||||||
|
const submitButton = await driver.findElement(By.id("submitButton"));
|
||||||
|
await submitButton.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
const actionTypeSelection = await driver.findElement(By.css(`#sponsorTimeActionTypesSubmissionNotice${index} > option:nth-child(${actionTypeIndex + 1})`));
|
||||||
|
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> {
|
||||||
const video = await driver.findElement(By.css("video"));
|
const video = await driver.findElement(By.css("video"));
|
||||||
|
|
||||||
@@ -113,7 +145,21 @@ async function autoskipSegment(driver: WebDriver, startTime: number, endTime: nu
|
|||||||
await driver.executeScript("document.querySelector('video').play()");
|
await driver.executeScript("document.querySelector('video').play()");
|
||||||
|
|
||||||
await driver.sleep(1300);
|
await driver.sleep(1300);
|
||||||
|
|
||||||
expect(parseFloat(await video.getAttribute("currentTime"))).toBeGreaterThan(endTime);
|
expect(parseFloat(await video.getAttribute("currentTime"))).toBeGreaterThan(endTime);
|
||||||
await driver.executeScript("document.querySelector('video').pause()");
|
await driver.executeScript("document.querySelector('video').pause()");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function muteSkipSegment(driver: WebDriver, startTime: number, endTime: number): Promise<void> {
|
||||||
|
const duration = endTime - startTime;
|
||||||
|
const video = await driver.findElement(By.css("video"));
|
||||||
|
|
||||||
|
await driver.executeScript("document.querySelector('video').currentTime = " + (startTime - 0.5));
|
||||||
|
await driver.executeScript("document.querySelector('video').play()");
|
||||||
|
|
||||||
|
await driver.sleep(1300);
|
||||||
|
expect(await video.getAttribute("muted")).toEqual("true");
|
||||||
|
|
||||||
|
await driver.sleep(duration * 1000 + 300);
|
||||||
|
expect(await video.getAttribute("muted")).toBeNull(); // Default is null for some reason
|
||||||
|
await driver.executeScript("document.querySelector('video').pause()");
|
||||||
}
|
}
|
||||||
27
test/urlParser.test.ts
Normal file
27
test/urlParser.test.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { getStartTimeFromUrl } from '../src/utils/urlParser';
|
||||||
|
|
||||||
|
describe("getStartTimeFromUrl", () => {
|
||||||
|
it("parses with a number", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=123")).toBe(123);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("parses with seconds", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=123s")).toBe(123);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("parses with minutes", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=23m3s")).toBe(23 * 60 + 3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("parses with hours", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=1h2m3s")).toBe(1 * 60 * 60 + 2 * 60 + 3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works with time_continue", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&time_continue=123")).toBe(123);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works with no time", () => {
|
||||||
|
expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ")).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -8,6 +8,11 @@
|
|||||||
"noEmitOnError": false,
|
"noEmitOnError": false,
|
||||||
"typeRoots": [ "node_modules/@types" ],
|
"typeRoots": [ "node_modules/@types" ],
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"jsx": "react"
|
"jsx": "react",
|
||||||
|
"lib": [
|
||||||
|
"es2019",
|
||||||
|
"dom",
|
||||||
|
"dom.iterable"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user