Merge branch 'development'

This commit is contained in:
Preston 2021-01-22 13:35:28 -05:00
commit cc780fa7cf
34 changed files with 1421 additions and 368 deletions

View File

@ -107,7 +107,8 @@ const config = {
fs: 'empty', fs: 'empty',
net: 'empty', net: 'empty',
tls: 'empty', tls: 'empty',
child_process: 'empty' child_process: 'empty',
dns: 'empty'
}, },
plugins: [ plugins: [
// new WriteFilePlugin(), // new WriteFilePlugin(),

396
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "freetube", "name": "freetube",
"version": "0.11.1", "version": "0.11.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -1287,19 +1287,20 @@
} }
}, },
"@electron/get": { "@electron/get": {
"version": "1.12.2", "version": "1.12.3",
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.3.tgz",
"integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", "integrity": "sha512-NFwSnVZQK7dhOYF1NQCt+HGqgL1aNdj0LUSx75uCqnZJqyiWCVdAMFV4b4/kC8HjUJAnsvdSEmjEt4G2qNQ9+Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "^4.1.1", "debug": "^4.1.1",
"env-paths": "^2.2.0", "env-paths": "^2.2.0",
"filenamify": "^4.1.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"global-agent": "^2.0.2", "global-agent": "^2.0.2",
"global-tunnel-ng": "^2.7.1", "global-tunnel-ng": "^2.7.1",
"got": "^9.6.0", "got": "^9.6.0",
"progress": "^2.0.3", "progress": "^2.0.3",
"sanitize-filename": "^1.6.2", "semver": "^6.2.0",
"sumchecker": "^3.0.1" "sumchecker": "^3.0.1"
}, },
"dependencies": { "dependencies": {
@ -1317,6 +1318,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true "dev": true
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
} }
} }
}, },
@ -1387,9 +1394,9 @@
} }
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "0.2.2", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz",
"integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -1399,7 +1406,7 @@
"ignore": "^4.0.6", "ignore": "^4.0.6",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"lodash": "^4.17.19", "lodash": "^4.17.20",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
"strip-json-comments": "^3.1.1" "strip-json-comments": "^3.1.1"
}, },
@ -1957,28 +1964,28 @@
} }
}, },
"@nodelib/fs.scandir": { "@nodelib/fs.scandir": {
"version": "2.1.3", "version": "2.1.4",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
"integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@nodelib/fs.stat": "2.0.3", "@nodelib/fs.stat": "2.0.4",
"run-parallel": "^1.1.9" "run-parallel": "^1.1.9"
} }
}, },
"@nodelib/fs.stat": { "@nodelib/fs.stat": {
"version": "2.0.3", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==",
"dev": true "dev": true
}, },
"@nodelib/fs.walk": { "@nodelib/fs.walk": {
"version": "1.2.4", "version": "1.2.6",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
"integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
"dev": true, "dev": true,
"requires": { "requires": {
"@nodelib/fs.scandir": "2.1.3", "@nodelib/fs.scandir": "2.1.4",
"fastq": "^1.6.0" "fastq": "^1.6.0"
} }
}, },
@ -2041,6 +2048,11 @@
"defer-to-connect": "^1.0.1" "defer-to-connect": "^1.0.1"
} }
}, },
"@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
},
"@types/anymatch": { "@types/anymatch": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
@ -2316,13 +2328,13 @@
"dev": true "dev": true
}, },
"@typescript-eslint/eslint-plugin": { "@typescript-eslint/eslint-plugin": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz",
"integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", "integrity": "sha512-IJ5e2W7uFNfg4qh9eHkHRUCbgZ8VKtGwD07kannJvM5t/GU8P8+24NX8gi3Hf5jST5oWPY8kyV1s/WtfiZ4+Ww==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/experimental-utils": "4.13.0", "@typescript-eslint/experimental-utils": "4.14.0",
"@typescript-eslint/scope-manager": "4.13.0", "@typescript-eslint/scope-manager": "4.14.0",
"debug": "^4.1.1", "debug": "^4.1.1",
"functional-red-black-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
@ -2358,28 +2370,28 @@
} }
}, },
"@typescript-eslint/experimental-utils": { "@typescript-eslint/experimental-utils": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz",
"integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", "integrity": "sha512-6i6eAoiPlXMKRbXzvoQD5Yn9L7k9ezzGRvzC/x1V3650rUk3c3AOjQyGYyF9BDxQQDK2ElmKOZRD0CbtdkMzQQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/json-schema": "^7.0.3", "@types/json-schema": "^7.0.3",
"@typescript-eslint/scope-manager": "4.13.0", "@typescript-eslint/scope-manager": "4.14.0",
"@typescript-eslint/types": "4.13.0", "@typescript-eslint/types": "4.14.0",
"@typescript-eslint/typescript-estree": "4.13.0", "@typescript-eslint/typescript-estree": "4.14.0",
"eslint-scope": "^5.0.0", "eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0" "eslint-utils": "^2.0.0"
} }
}, },
"@typescript-eslint/parser": { "@typescript-eslint/parser": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.14.0.tgz",
"integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", "integrity": "sha512-sUDeuCjBU+ZF3Lzw0hphTyScmDDJ5QVkyE21pRoBo8iDl7WBtVFS+WDN3blY1CH3SBt7EmYCw6wfmJjF0l/uYg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/scope-manager": "4.13.0", "@typescript-eslint/scope-manager": "4.14.0",
"@typescript-eslint/types": "4.13.0", "@typescript-eslint/types": "4.14.0",
"@typescript-eslint/typescript-estree": "4.13.0", "@typescript-eslint/typescript-estree": "4.14.0",
"debug": "^4.1.1" "debug": "^4.1.1"
}, },
"dependencies": { "dependencies": {
@ -2401,29 +2413,29 @@
} }
}, },
"@typescript-eslint/scope-manager": { "@typescript-eslint/scope-manager": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz",
"integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", "integrity": "sha512-/J+LlRMdbPh4RdL4hfP1eCwHN5bAhFAGOTsvE6SxsrM/47XQiPSgF5MDgLyp/i9kbZV9Lx80DW0OpPkzL+uf8Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.13.0", "@typescript-eslint/types": "4.14.0",
"@typescript-eslint/visitor-keys": "4.13.0" "@typescript-eslint/visitor-keys": "4.14.0"
} }
}, },
"@typescript-eslint/types": { "@typescript-eslint/types": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.0.tgz",
"integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", "integrity": "sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A==",
"dev": true "dev": true
}, },
"@typescript-eslint/typescript-estree": { "@typescript-eslint/typescript-estree": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz",
"integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", "integrity": "sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.13.0", "@typescript-eslint/types": "4.14.0",
"@typescript-eslint/visitor-keys": "4.13.0", "@typescript-eslint/visitor-keys": "4.14.0",
"debug": "^4.1.1", "debug": "^4.1.1",
"globby": "^11.0.1", "globby": "^11.0.1",
"is-glob": "^4.0.1", "is-glob": "^4.0.1",
@ -2459,12 +2471,12 @@
} }
}, },
"@typescript-eslint/visitor-keys": { "@typescript-eslint/visitor-keys": {
"version": "4.13.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz",
"integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", "integrity": "sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "4.13.0", "@typescript-eslint/types": "4.14.0",
"eslint-visitor-keys": "^2.0.0" "eslint-visitor-keys": "^2.0.0"
} }
}, },
@ -2848,6 +2860,29 @@
"pkcs7": "^1.0.4" "pkcs7": "^1.0.4"
} }
}, },
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"aggregate-error": { "aggregate-error": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@ -7102,13 +7137,13 @@
} }
}, },
"eslint": { "eslint": {
"version": "7.17.0", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz",
"integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.0.0", "@babel/code-frame": "^7.0.0",
"@eslint/eslintrc": "^0.2.2", "@eslint/eslintrc": "^0.3.0",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@ -7132,7 +7167,7 @@
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1", "levn": "^0.4.1",
"lodash": "^4.17.19", "lodash": "^4.17.20",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
"optionator": "^0.9.1", "optionator": "^0.9.1",
@ -7250,9 +7285,9 @@
} }
}, },
"eslint-config-prettier": { "eslint-config-prettier": {
"version": "7.1.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz",
"integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==",
"dev": true "dev": true
}, },
"eslint-config-standard": { "eslint-config-standard": {
@ -7992,9 +8027,9 @@
"dev": true "dev": true
}, },
"fast-glob": { "fast-glob": {
"version": "3.2.4", "version": "3.2.5",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
"integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.stat": "^2.0.2",
@ -8017,9 +8052,9 @@
"dev": true "dev": true
}, },
"fastq": { "fastq": {
"version": "1.8.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz",
"integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==",
"dev": true, "dev": true,
"requires": { "requires": {
"reusify": "^1.0.4" "reusify": "^1.0.4"
@ -8115,6 +8150,23 @@
"minimatch": "^3.0.4" "minimatch": "^3.0.4"
} }
}, },
"filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
"integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
"dev": true
},
"filenamify": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz",
"integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==",
"dev": true,
"requires": {
"filename-reserved-regex": "^2.0.0",
"strip-outer": "^1.0.1",
"trim-repeated": "^1.0.0"
}
},
"fill-range": { "fill-range": {
"version": "7.0.1", "version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@ -8298,9 +8350,9 @@
} }
}, },
"flatted": { "flatted": {
"version": "3.1.0", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
"integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
"dev": true "dev": true
}, },
"flush-write-stream": { "flush-write-stream": {
@ -8666,9 +8718,9 @@
}, },
"dependencies": { "dependencies": {
"core-js": { "core-js": {
"version": "3.8.2", "version": "3.8.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
"integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==", "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
@ -8986,8 +9038,7 @@
"he": { "he": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
"dev": true
}, },
"highlight.js": { "highlight.js": {
"version": "9.18.3", "version": "9.18.3",
@ -9139,11 +9190,6 @@
"util.promisify": "1.0.0" "util.promisify": "1.0.0"
} }
}, },
"html2json": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/html2json/-/html2json-1.0.2.tgz",
"integrity": "sha1-ydbSAvplQCOGwgKzRc9RvOgO0e8="
},
"htmlparser2": { "htmlparser2": {
"version": "3.10.1", "version": "3.10.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
@ -9236,6 +9282,31 @@
"requires-port": "^1.0.0" "requires-port": "^1.0.0"
} }
}, },
"http-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"requires": {
"@tootallnate/once": "1",
"agent-base": "6",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"http-proxy-middleware": { "http-proxy-middleware": {
"version": "0.19.1", "version": "0.19.1",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
@ -9379,6 +9450,30 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true "dev": true
}, },
"https-proxy-agent": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"requires": {
"agent-base": "6",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"human-signals": { "human-signals": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@ -9387,7 +9482,7 @@
}, },
"humanize-plus": { "humanize-plus": {
"version": "1.8.2", "version": "1.8.2",
"resolved": "http://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz", "resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=", "integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=",
"dev": true "dev": true
}, },
@ -9572,8 +9667,7 @@
"ip": { "ip": {
"version": "1.1.5", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
"dev": true
}, },
"ip-regex": { "ip-regex": {
"version": "2.1.0", "version": "2.1.0",
@ -12510,6 +12604,14 @@
} }
} }
}, },
"node-html-parser": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-2.0.2.tgz",
"integrity": "sha512-N2000Ho9dkabvRZcyiwm6zOpdiAzxAxcJ0Z0WNoh/yXHG0YCuiK2WpNQfN+9vheLNY/h/It11Gk7uwT4QTfk9Q==",
"requires": {
"he": "1.2.0"
}
},
"node-int64": { "node-int64": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@ -14703,9 +14805,9 @@
"dev": true "dev": true
}, },
"run-parallel": { "run-parallel": {
"version": "1.1.9", "version": "1.1.10",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==",
"dev": true "dev": true
}, },
"run-queue": { "run-queue": {
@ -14740,7 +14842,7 @@
}, },
"safe-regex": { "safe-regex": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true, "dev": true,
"requires": { "requires": {
@ -14903,9 +15005,9 @@
} }
}, },
"sass": { "sass": {
"version": "1.32.4", "version": "1.32.5",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.4.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.5.tgz",
"integrity": "sha512-N0BT0PI/t3+gD8jKa83zJJUb7ssfQnRRfqN+GIErokW6U4guBpfYl8qYB+OFLEho+QvnV5ZH1R9qhUC/Z2Ch9w==", "integrity": "sha512-kU1yJ5zUAmPxr7f3q0YXTAd1oZjSR1g3tYyv+xu0HZSl5JiNOaE987eiz7wCUvbm4I9fGWGU2TgApTtcP4GMNQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": ">=2.0.0 <4.0.0" "chokidar": ">=2.0.0 <4.0.0"
@ -15267,6 +15369,11 @@
"is-fullwidth-code-point": "^3.0.0" "is-fullwidth-code-point": "^3.0.0"
} }
}, },
"smart-buffer": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
"integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw=="
},
"snapdragon": { "snapdragon": {
"version": "0.8.2", "version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@ -15425,6 +15532,40 @@
} }
} }
}, },
"socks": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz",
"integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==",
"requires": {
"ip": "^1.1.5",
"smart-buffer": "^4.1.0"
}
},
"socks-proxy-agent": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz",
"integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==",
"requires": {
"agent-base": "6",
"debug": "4",
"socks": "^2.3.3"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"sort-keys": { "sort-keys": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@ -15923,6 +16064,15 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true "dev": true
}, },
"strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"style-loader": { "style-loader": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz",
@ -16491,6 +16641,15 @@
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true "dev": true
}, },
"trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
"integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"truncate-utf8-bytes": { "truncate-utf8-bytes": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
@ -17228,9 +17387,9 @@
"integrity": "sha1-55jgMYC4kzU53v4x+S5TuSQrlAY=" "integrity": "sha1-55jgMYC4kzU53v4x+S5TuSQrlAY="
}, },
"vue-eslint-parser": { "vue-eslint-parser": {
"version": "7.3.0", "version": "7.4.1",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.3.0.tgz", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz",
"integrity": "sha512-n5PJKZbyspD0+8LnaZgpEvNCrjQx1DyDHw8JdWwoxhhC+yRip4TAvSDpXGf9SWX6b0umeB5aR61gwUo6NVvFxw==", "integrity": "sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "^4.1.1", "debug": "^4.1.1",
@ -17288,9 +17447,9 @@
"dev": true "dev": true
}, },
"vue-i18n": { "vue-i18n": {
"version": "8.22.3", "version": "8.22.4",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.3.tgz", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.4.tgz",
"integrity": "sha512-Vhyx7sZEmmW/aZLkzSlXei08Rv3hTondx4J9wbOjnThocTIK1QiXV6QRdT4BTnhT24JixDSf6kGkxqCXSaJ3Jw==" "integrity": "sha512-XLI5s0AdqMP2Lf4I4CmdmOq8kjb5DDFGR77wAuxCfpEuYSfhTRyyx6MetgZMiL6Lxa0DasjBOiOcciU3NkL3/Q=="
}, },
"vue-loader": { "vue-loader": {
"version": "15.9.6", "version": "15.9.6",
@ -19076,12 +19235,12 @@
} }
}, },
"yt-comment-scraper": { "yt-comment-scraper": {
"version": "1.3.11", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-1.3.11.tgz", "resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-2.0.0.tgz",
"integrity": "sha512-F7a1/BAjASsX3MheAqO1uvY0sPfstLKmkHETiFyDe3Hp+qUMyniuPmAvXrZPOanvBHyb6sH5+d3wVj/S9dD/ug==", "integrity": "sha512-goa9Z5REPXRKddKO6MJUzaa/cBgdQPj/akIGbyb1R5KnOgl4bLy6d4nD1pVUhLkP0Z8aEqwJAMmYpPBjeXTOIg==",
"requires": { "requires": {
"axios": "^0.21.1", "axios": "^0.21.1",
"html2json": "^1.0.2" "node-html-parser": "^2.0.2"
}, },
"dependencies": { "dependencies": {
"axios": { "axios": {
@ -19127,11 +19286,26 @@
} }
}, },
"yt-trending-scraper": { "yt-trending-scraper": {
"version": "1.0.4", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.0.4.tgz", "resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.1.0.tgz",
"integrity": "sha512-RWNHDP0Gx1cKBGy0229jG8XzunsGXF4ZPG1gOtbFF54oF+smahCeWmsuYlmzr+5MwTWzq2s968spTGVgpkNjTA==", "integrity": "sha512-9QCSbzKFMTHyvj9y8oRnRZcLH9aVK/8GcPWSAiayfOfswXDnLZYONqavy/04kz/nXZfZQeuIGMsxCW2RxokWlQ==",
"requires": { "requires": {
"axios": "^0.19.2" "axios": "^0.21.1"
},
"dependencies": {
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"follow-redirects": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
"integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
}
} }
}, },
"yt-xml2vtt": { "yt-xml2vtt": {
@ -19140,9 +19314,9 @@
"integrity": "sha512-4ZzqHIUfdPFa0Xb+8M3vsbokXooOhQuFuXa8bw4CJ5V0xWjRA/CPlZ3u0VTYoce4sUmMgoOVN7Xcj8NpUNujXA==" "integrity": "sha512-4ZzqHIUfdPFa0Xb+8M3vsbokXooOhQuFuXa8bw4CJ5V0xWjRA/CPlZ3u0VTYoce4sUmMgoOVN7Xcj8NpUNujXA=="
}, },
"ytdl-core": { "ytdl-core": {
"version": "4.4.3", "version": "4.4.4",
"resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.3.tgz", "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.4.tgz",
"integrity": "sha512-0GexY2dMk0pvIE0UAB5GPiyaNjiawqDi5eUCUHW7CP1ZNyEco8Lct8/3AsI6aO0EQLGK774ocDvWxOE7W0qrTg==", "integrity": "sha512-/IFJTM5RjN20q6RVaE/9rv9tKoBtx95lKZCI/pUPDiDzu9fXyuPbkVzEQJmsYEwzi0zdv4d6iJy0gHWz49o6mw==",
"requires": { "requires": {
"m3u8stream": "^0.8.3", "m3u8stream": "^0.8.3",
"miniget": "^4.0.0", "miniget": "^4.0.0",
@ -19186,9 +19360,9 @@
} }
}, },
"ytsr": { "ytsr": {
"version": "3.2.1", "version": "3.2.2",
"resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.2.1.tgz", "resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.2.2.tgz",
"integrity": "sha512-iN2woG5bfXiAWs9Tv6MPVGx3f1zdpeshyevGAbm0ggCYLmOnSNIA3lkgqlkfa0CH5WKIB/yjwRPU1hc49AUN+g==", "integrity": "sha512-0Yt00R/LfP2tlPos6xCLazdkSJYfTD15VY/2oqbZvS0Ym8+4rMyXRg0AWJlmCJIhPsTPzc1nDjZvhDo/6A0/WA==",
"requires": { "requires": {
"miniget": "^4.1.0" "miniget": "^4.1.0"
}, },

View File

@ -17,6 +17,8 @@
"bulma-pro": "^0.2.0", "bulma-pro": "^0.2.0",
"dateformat": "^4.4.1", "dateformat": "^4.4.1",
"electron-context-menu": "^2.4.0", "electron-context-menu": "^2.4.0",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
"jquery": "^3.5.1", "jquery": "^3.5.1",
"js-yaml": "^4.0.0", "js-yaml": "^4.0.0",
"lodash.debounce": "^4.0.8", "lodash.debounce": "^4.0.8",
@ -27,6 +29,7 @@
"nedb": "^1.8.0", "nedb": "^1.8.0",
"opml-to-json": "1.0.1", "opml-to-json": "1.0.1",
"rss-parser": "^3.10.0", "rss-parser": "^3.10.0",
"socks-proxy-agent": "^5.0.0",
"video.js": "7.10.2", "video.js": "7.10.2",
"videojs-abloop": "^1.2.0", "videojs-abloop": "^1.2.0",
"videojs-contrib-quality-levels": "^2.0.9", "videojs-contrib-quality-levels": "^2.0.9",
@ -36,7 +39,7 @@
"videojs-vtt-thumbnails-freetube": "0.0.15", "videojs-vtt-thumbnails-freetube": "0.0.15",
"vue": "^2.6.12", "vue": "^2.6.12",
"vue-electron": "^1.0.6", "vue-electron": "^1.0.6",
"vue-i18n": "^8.22.3", "vue-i18n": "^8.22.4",
"vue-observe-visibility": "^1.0.0", "vue-observe-visibility": "^1.0.0",
"vue-router": "^3.4.9", "vue-router": "^3.4.9",
"vuex": "^3.6.0", "vuex": "^3.6.0",
@ -44,13 +47,13 @@
"youtube-chat": "^1.1.0", "youtube-chat": "^1.1.0",
"youtube-suggest": "^1.1.0", "youtube-suggest": "^1.1.0",
"yt-channel-info": "^1.2.0", "yt-channel-info": "^1.2.0",
"yt-comment-scraper": "^1.3.11", "yt-comment-scraper": "^2.0.0",
"yt-dash-manifest-generator": "^1.1.0", "yt-dash-manifest-generator": "1.1.0",
"yt-trending-scraper": "1.0.4", "yt-trending-scraper": "1.1.0",
"yt-xml2vtt": "^1.2.0", "yt-xml2vtt": "^1.2.0",
"ytdl-core": "^4.4.3", "ytdl-core": "^4.4.4",
"ytpl": "^2.0.4", "ytpl": "^2.0.4",
"ytsr": "^3.2.1" "ytsr": "^3.2.2"
}, },
"description": "A private YouTube client", "description": "A private YouTube client",
"devDependencies": { "devDependencies": {
@ -59,21 +62,21 @@
"@babel/plugin-proposal-object-rest-spread": "^7.12.1", "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
"@babel/preset-env": "^7.12.11", "@babel/preset-env": "^7.12.11",
"@babel/preset-typescript": "^7.12.7", "@babel/preset-typescript": "^7.12.7",
"@typescript-eslint/eslint-plugin": "^4.13.0", "@typescript-eslint/eslint-plugin": "^4.14.0",
"@typescript-eslint/parser": "^4.13.0", "@typescript-eslint/parser": "^4.14.0",
"acorn": "^8.0.4", "acorn": "^8.0.4",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-loader": "^8.2.2", "babel-loader": "^8.2.2",
"copy-webpack-plugin": "6.4.0", "copy-webpack-plugin": "6.4.0",
"css-loader": "^5.0.1", "css-loader": "^5.0.1",
"devtron": "^1.4.0", "devtron": "^1.4.0",
"electron": "^11.1.1", "electron": "11.1.1",
"electron-builder": "^22.9.1", "electron-builder": "^22.9.1",
"electron-builder-squirrel-windows": "^22.10.4", "electron-builder-squirrel-windows": "^22.10.4",
"electron-debug": "^3.2.0", "electron-debug": "^3.2.0",
"electron-rebuild": "^2.3.4", "electron-rebuild": "^2.3.4",
"eslint": "^7.17.0", "eslint": "^7.18.0",
"eslint-config-prettier": "^7.1.0", "eslint-config-prettier": "^7.2.0",
"eslint-config-standard": "^16.0.2", "eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1", "eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
@ -81,7 +84,7 @@
"eslint-plugin-promise": "^4.2.1", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^5.0.0", "eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^7.4.1", "eslint-plugin-vue": "^7.4.1",
"fast-glob": "^3.2.4", "fast-glob": "^3.2.5",
"file-loader": "^6.2.0", "file-loader": "^6.2.0",
"html-webpack-plugin": "^4.5.1", "html-webpack-plugin": "^4.5.1",
"jest": "^26.6.3", "jest": "^26.6.3",
@ -90,14 +93,14 @@
"node-loader": "^1.0.2", "node-loader": "^1.0.2",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"sass": "^1.32.4", "sass": "^1.32.5",
"sass-loader": "^10.1.1", "sass-loader": "^10.1.1",
"style-loader": "^2.0.0", "style-loader": "^2.0.0",
"tree-kill": "1.2.2", "tree-kill": "1.2.2",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"url-loader": "^4.1.1", "url-loader": "^4.1.1",
"vue-devtools": "^5.1.4", "vue-devtools": "^5.1.4",
"vue-eslint-parser": "^7.3.0", "vue-eslint-parser": "^7.4.1",
"vue-loader": "^15.9.6", "vue-loader": "^15.9.6",
"vue-style-loader": "^4.1.2", "vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.12", "vue-template-compiler": "^2.6.12",
@ -143,5 +146,5 @@
"test": "run-s rebuild:node pack:workers jest", "test": "run-s rebuild:node pack:workers jest",
"test:watch": "run-s rebuild:node pack:workers jest:watch" "test:watch": "run-s rebuild:node pack:workers jest:watch"
}, },
"version": "0.11.1" "version": "0.11.2"
} }

View File

@ -8,7 +8,7 @@ import FtPrompt from '../ft-prompt/ft-prompt.vue'
import { remote } from 'electron' import { remote } from 'electron'
import fs from 'fs' import fs from 'fs'
import opmlToJson from 'opml-to-json' import { opmlToJSON } from 'opml-to-json'
import ytch from 'yt-channel-info' import ytch from 'yt-channel-info'
const app = remote.app const app = remote.app
@ -357,17 +357,7 @@ export default Vue.extend({
return return
} }
opmlToJson(data, async (err, json) => { opmlToJSON(data).then((json) => {
if (err) {
console.log(err)
console.log('error reading')
const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
this.showToast({
message: `${message}: ${err}`
})
return
}
let feedData = json.children[0].children let feedData = json.children[0].children
if (typeof feedData === 'undefined') { if (typeof feedData === 'undefined') {
@ -442,6 +432,13 @@ export default Vue.extend({
this.updateShowProgressBar(false) this.updateShowProgressBar(false)
} }
}) })
}).catch((err) => {
console.log(err)
console.log('error reading')
const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
this.showToast({
message: `${message}: ${err}`
})
}) })
}) })
}) })

View File

@ -76,6 +76,8 @@ export default Vue.extend({
maxFramerate: 0, maxFramerate: 0,
activeSourceList: [], activeSourceList: [],
mouseTimeout: null, mouseTimeout: null,
touchTimeout: null,
lastTouchTime: null,
dataSetup: { dataSetup: {
fluid: true, fluid: true,
nativeTextTracks: false, nativeTextTracks: false,
@ -116,7 +118,6 @@ export default Vue.extend({
2.25, 2.25,
2.5, 2.5,
2.75, 2.75,
2.75,
3 3
] ]
} }
@ -284,7 +285,7 @@ export default Vue.extend({
return return
} }
if (videoWidth < videoHeight) { if ((videoWidth - videoHeight) <= 240) {
this.player.fluid(false) this.player.fluid(false)
this.player.aspectRatio('16:9') this.player.aspectRatio('16:9')
} }
@ -719,6 +720,25 @@ export default Vue.extend({
} }
}, },
handleTouchStart: function (event) {
const v = this
this.touchPauseTimeout = setTimeout(() => {
v.togglePlayPause()
}, 1000)
const touchTime = new Date()
if (this.lastTouchTime !== null && (touchTime.getTime() - this.lastTouchTime.getTime()) < 250) {
this.toggleFullscreen()
}
this.lastTouchTime = touchTime
},
handleTouchEnd: function (event) {
clearTimeout(this.touchPauseTimeout)
},
keyboardShortcutHandler: function (event) { keyboardShortcutHandler: function (event) {
const activeInputs = $('.ft-input') const activeInputs = $('.ft-input')

View File

@ -7,6 +7,8 @@
controls controls
preload="auto" preload="auto"
:data-setup="JSON.stringify(dataSetup)" :data-setup="JSON.stringify(dataSetup)"
@touchstart="handleTouchStart"
@touchend="handleTouchEnd"
> >
<source <source
v-for="(source, index) in activeSourceList" v-for="(source, index) in activeSourceList"

View File

@ -138,7 +138,7 @@ export default Vue.extend({
} }
}, },
mounted: function () { mounted: function () {
const requestUrl = 'https://instances.invidio.us/instances.json' const requestUrl = 'https://api.invidious.io/instances.json'
$.getJSON(requestUrl, (response) => { $.getJSON(requestUrl, (response) => {
console.log(response) console.log(response)
const instances = response.filter((instance) => { const instances = response.filter((instance) => {

View File

@ -97,6 +97,13 @@
@input="handleInvidiousInstanceInput" @input="handleInvidiousInstanceInput"
/> />
</ft-flex-box> </ft-flex-box>
<ft-flex-box>
<a
href="https://api.invidious.io"
>
{{ $t('Settings.General Settings.View all Invidious instance information') }}
</a>
</ft-flex-box>
</ft-card> </ft-card>
</template> </template>

View File

@ -5,10 +5,7 @@ import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtSelect from '../../components/ft-select/ft-select.vue' import FtSelect from '../../components/ft-select/ft-select.vue'
import FtTimestampCatcher from '../../components/ft-timestamp-catcher/ft-timestamp-catcher.vue' import FtTimestampCatcher from '../../components/ft-timestamp-catcher/ft-timestamp-catcher.vue'
import autolinker from 'autolinker' import autolinker from 'autolinker'
import { fork } from 'child_process' import ytcm from 'yt-comment-scraper'
import path from 'path'
// eslint-disable-next-line
import commentControllerRelativePath from 'file-loader!../../../process/comment-module-controller.js'
export default Vue.extend({ export default Vue.extend({
name: 'WatchVideoComments', name: 'WatchVideoComments',
@ -93,8 +90,9 @@ export default Vue.extend({
this.sortNewest = !this.sortNewest this.sortNewest = !this.sortNewest
switch (this.backendPreference) { switch (this.backendPreference) {
case 'local': case 'local':
console.log('In handle') this.isLoading = true
this.sortingChanged = true this.commentData = []
this.nextPageToken = undefined
this.getCommentDataLocal() this.getCommentDataLocal()
break break
case 'invidious': case 'invidious':
@ -122,7 +120,6 @@ export default Vue.extend({
this.showToast({ this.showToast({
message: this.$t('Comments.There are no more comments for this video') message: this.$t('Comments.There are no more comments for this video')
}) })
this.getCommentData()
} else { } else {
this.getCommentData() this.getCommentData()
} }
@ -144,90 +141,72 @@ export default Vue.extend({
}, },
getCommentDataLocal: function () { getCommentDataLocal: function () {
// we need the path from the working directory to fork correctly const payload = {
if (this.commentProcess === null) { videoId: this.id,
let modulePath setCookie: false,
if (this.isDev) { sortByNewest: this.sortNewest,
modulePath = '../../../process/comment-module-controller.js' continuation: this.nextPageToken ? this.nextPageToken : undefined
} else {
modulePath = commentControllerRelativePath
}
this.commentProcess = fork(path.join(__dirname, modulePath), ['args'], {
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
})
this.commentProcess.on('message', (msg) => {
if (msg.error === null) {
const commentJSON = JSON.parse(msg.comments)
if (commentJSON === null) {
this.showToast({
message: this.$t('Comments.No more comments available'),
time: 7000,
action: () => {
}
})
this.isLoading = false
} else {
// console.log(msg.comments)
const commentData = commentJSON.map((comment) => {
comment.showReplies = false
comment.dataType = 'local'
this.toLocalePublicationString({
publishText: (comment.time + ' ago'),
templateString: this.$t('Video.Publicationtemplate'),
timeStrings: this.$t('Video.Published'),
liveStreamString: this.$t('Video.Watching'),
upcomingString: this.$t('Video.Published.Upcoming'),
isLive: false,
isUpcoming: false,
isRSS: false
}).then((data) => {
comment.time = data
}).catch((error) => {
console.error(error)
})
if (this.hideCommentLikes) {
comment.likes = null
}
comment.text = autolinker.link(comment.text)
comment.replies.forEach((reply) => {
reply.text = autolinker.link(reply.text)
})
return comment
})
if (this.sortingChanged) {
this.commentData = []
this.sortingChanged = false
}
this.commentData = this.commentData.concat(commentData)
this.isLoading = false
this.showComments = true
this.nextPageToken = ''
}
} else {
console.log(msg.error)
const errorMessage = this.$t('Local API Error (Click to copy)')
this.showToast({
message: `${errorMessage}: ${msg.error}`,
time: 10000,
action: () => {
navigator.clipboard.writeText(msg.error)
}
})
if (this.backendFallback && this.backendPreference === 'local') {
this.showToast({
message: this.$t('Falling back to Invidious API')
})
this.getCommentDataInvidious()
} else {
this.isLoading = false
}
}
})
} }
this.commentProcess.send({ id: this.id, sortNewest: this.sortNewest }) ytcm.getComments(payload).then((response) => {
console.log(response)
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.dataType = 'local'
this.toLocalePublicationString({
publishText: (comment.time + ' ago'),
templateString: this.$t('Video.Publicationtemplate'),
timeStrings: this.$t('Video.Published'),
liveStreamString: this.$t('Video.Watching'),
upcomingString: this.$t('Video.Published.Upcoming'),
isLive: false,
isUpcoming: false,
isRSS: false
}).then((data) => {
comment.time = data
}).catch((error) => {
console.error(error)
})
if (this.hideCommentLikes) {
comment.likes = null
}
comment.text = autolinker.link(comment.text)
if (comment.numReplies > 0) {
comment.replies.forEach((reply) => {
reply.text = autolinker.link(reply.text)
})
}
return comment
})
if (this.sortingChanged) {
this.commentData = []
this.sortingChanged = false
}
this.commentData = this.commentData.concat(commentData)
this.isLoading = false
this.showComments = true
this.nextPageToken = response.continuation
}).catch((err) => {
console.log(err)
const errorMessage = this.$t('Local API Error (Click to copy)')
this.showToast({
message: `${errorMessage}: ${err}`,
time: 10000,
action: () => {
navigator.clipboard.writeText(err)
}
})
if (this.backendFallback && this.backendPreference === 'local') {
this.showToast({
message: this.$t('Falling back to Invidious API')
})
this.getCommentDataInvidious()
} else {
this.isLoading = false
}
})
}, },
getCommentDataInvidious: function () { getCommentDataInvidious: function () {
@ -269,7 +248,6 @@ export default Vue.extend({
return comment return comment
}) })
console.log(commentData)
this.commentData = this.commentData.concat(commentData) this.commentData = this.commentData.concat(commentData)
this.nextPageToken = response.continuation this.nextPageToken = response.continuation
this.isLoading = false this.isLoading = false
@ -329,7 +307,6 @@ export default Vue.extend({
return comment return comment
}) })
console.log(commentData)
this.commentData[index].replies = commentData this.commentData[index].replies = commentData
this.commentData[index].showReplies = true this.commentData[index].showReplies = true
this.isLoading = false this.isLoading = false

View File

@ -1,8 +1,5 @@
<template> <template>
<ft-card> <ft-card>
<ft-loader
v-if="isLoading"
/>
<h4 <h4
v-if="commentData.length === 0 && !isLoading" v-if="commentData.length === 0 && !isLoading"
class="getCommentsTitle" class="getCommentsTitle"
@ -148,6 +145,9 @@
> >
{{ $t("Comments.Load More Comments") }} {{ $t("Comments.Load More Comments") }}
</h4> </h4>
<ft-loader
v-if="isLoading"
/>
</ft-card> </ft-card>
</template> </template>

View File

@ -3,6 +3,9 @@ import ytsr from 'ytsr'
import ytpl from 'ytpl' import ytpl from 'ytpl'
import IsEqual from 'lodash.isequal' import IsEqual from 'lodash.isequal'
import { SocksProxyAgent } from 'socks-proxy-agent'
import { HttpsProxyAgent } from 'https-proxy-agent'
import { HttpProxyAgent } from 'http-proxy-agent'
const state = { const state = {
main: 0, main: 0,
@ -38,6 +41,47 @@ const actions = {
duration: '' duration: ''
} }
let agent = {}
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
payload.options.requestOptions = { agent }
}
commit('toggleIsYtSearchRunning') commit('toggleIsYtSearchRunning')
if (!IsEqual(defaultFilters, rootState.utils.searchSettings)) { if (!IsEqual(defaultFilters, rootState.utils.searchSettings)) {
@ -79,7 +123,51 @@ const actions = {
}, },
async ytSearchGetFilters ({ rootState }, payload) { async ytSearchGetFilters ({ rootState }, payload) {
let filter = await ytsr.getFilters(payload.query) let options = null
let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
options = {
requestOptions: { agent }
}
let filter = await ytsr.getFilters(payload.query, options)
let filterUrl = null let filterUrl = null
let searchSettings = payload.searchSettings let searchSettings = payload.searchSettings
@ -104,7 +192,7 @@ const actions = {
break break
} }
filterUrl = filter.get('Sort by').get(filterValue).url filterUrl = filter.get('Sort by').get(filterValue).url
filter = await ytsr.getFilters(filterUrl) filter = await ytsr.getFilters(filterUrl, options)
} }
console.log(`Current ref: ${filterUrl}`) console.log(`Current ref: ${filterUrl}`)
@ -118,7 +206,7 @@ const actions = {
} }
filterUrl = filter.get('Duration').get(filterValue).url filterUrl = filter.get('Duration').get(filterValue).url
filter = await ytsr.getFilters(filterUrl) filter = await ytsr.getFilters(filterUrl, options)
} }
console.log(`Current ref: ${filterUrl}`) console.log(`Current ref: ${filterUrl}`)
@ -145,7 +233,7 @@ const actions = {
} }
filterUrl = filter.get('Upload date').get(filterValue).url filterUrl = filter.get('Upload date').get(filterValue).url
filter = await ytsr.getFilters(filterUrl) filter = await ytsr.getFilters(filterUrl, options)
} }
console.log(`Current ref: ${filterUrl}`) console.log(`Current ref: ${filterUrl}`)
@ -153,7 +241,7 @@ const actions = {
if (searchSettings.type !== 'all') { if (searchSettings.type !== 'all') {
const filterValue = searchSettings.type.charAt(0).toUpperCase() + searchSettings.type.slice(1) const filterValue = searchSettings.type.charAt(0).toUpperCase() + searchSettings.type.slice(1)
filterUrl = filter.get('Type').get(filterValue).url filterUrl = filter.get('Type').get(filterValue).url
filter = await ytsr.getFilters(filterUrl) filter = await ytsr.getFilters(filterUrl, options)
} }
console.log(`Current ref: ${filterUrl}`) console.log(`Current ref: ${filterUrl}`)
@ -163,11 +251,52 @@ const actions = {
}) })
}, },
ytGetPlaylistInfo (_, playlistId) { ytGetPlaylistInfo ({ rootState }, playlistId) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log(playlistId) console.log(playlistId)
console.log('Getting playlist info please wait...') console.log('Getting playlist info please wait...')
ytpl(playlistId, { limit: 'Infinity' }).then((result) => { let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
ytpl(playlistId, {
limit: 'Infinity',
requestOptions: { agent }
}).then((result) => {
resolve(result) resolve(result)
}).catch((err) => { }).catch((err) => {
reject(err) reject(err)
@ -175,11 +304,51 @@ const actions = {
}) })
}, },
ytGetVideoInformation (_, videoId) { ytGetVideoInformation ({ rootState }, videoId) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log('Getting video info please wait...') console.log('Getting video info please wait...')
let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
ytdl.getInfo(videoId, { ytdl.getInfo(videoId, {
lang: localStorage.getItem('locale') lang: localStorage.getItem('locale'),
requestOptions: { agent }
}).then((result) => { }).then((result) => {
resolve(result) resolve(result)
}).catch((err) => { }).catch((err) => {

View File

@ -16,6 +16,8 @@ export default Vue.extend({
data: function () { data: function () {
return { return {
isLoading: false, isLoading: false,
apiUsed: 'local',
amountOfResults: 0,
query: '', query: '',
searchPage: 1, searchPage: 1,
nextPageRef: '', nextPageRef: '',
@ -122,6 +124,10 @@ export default Vue.extend({
return return
} }
this.apiUsed = 'local'
this.amountOfResults = result.results
const returnData = result.items.filter((item) => { const returnData = result.items.filter((item) => {
if (typeof item !== 'undefined') { if (typeof item !== 'undefined') {
return item.type === 'video' || item.type === 'channel' || item.type === 'playlist' return item.type === 'video' || item.type === 'channel' || item.type === 'playlist'
@ -179,7 +185,8 @@ export default Vue.extend({
query: payload.query, query: payload.query,
data: this.shownResults, data: this.shownResults,
searchSettings: this.searchSettings, searchSettings: this.searchSettings,
nextPageRef: result.continuation nextPageRef: result.continuation,
amountOfResults: result.results
} }
this.$store.commit('addToSessionSearchHistory', historyPayload) this.$store.commit('addToSessionSearchHistory', historyPayload)
@ -228,6 +235,8 @@ export default Vue.extend({
return return
} }
this.apiUsed = 'invidious'
console.log(result) console.log(result)
const returnData = result.filter((item) => { const returnData = result.filter((item) => {
@ -287,13 +296,21 @@ export default Vue.extend({
console.log(payload) console.log(payload)
this.showToast({ if (this.apiUsed === 'local') {
message: this.$t('Search Filters["Fetching results. Please wait"]') if (this.amountOfResults <= this.shownResults.length) {
}) this.showToast({
message: this.$t('Search Filters.There are no more results for this search')
if (this.nextPageRef !== '') { })
this.performSearchLocal(payload) } else {
this.showToast({
message: this.$t('Search Filters["Fetching results. Please wait"]')
})
this.performSearchLocal(payload)
}
} else { } else {
this.showToast({
message: this.$t('Search Filters["Fetching results. Please wait"]')
})
this.performSearchInvidious(payload) this.performSearchInvidious(payload)
} }
}, },
@ -302,6 +319,7 @@ export default Vue.extend({
this.query = history.query this.query = history.query
this.shownResults = history.data this.shownResults = history.data
this.searchSettings = history.searchSettings this.searchSettings = history.searchSettings
this.amountOfResults = history.amountOfResults
if (typeof (history.nextPageRef) !== 'undefined') { if (typeof (history.nextPageRef) !== 'undefined') {
this.nextPageRef = history.nextPageRef this.nextPageRef = history.nextPageRef

View File

@ -3,6 +3,7 @@ import FtCard from '../../components/ft-card/ft-card.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue' import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtTooltip from '../../components/ft-tooltip/ft-tooltip.vue' import FtTooltip from '../../components/ft-tooltip/ft-tooltip.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue' import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtElementList from '../../components/ft-element-list/ft-element-list.vue' import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
export default Vue.extend({ export default Vue.extend({
@ -12,6 +13,7 @@ export default Vue.extend({
'ft-flex-box': FtFlexBox, 'ft-flex-box': FtFlexBox,
'ft-tooltip': FtTooltip, 'ft-tooltip': FtTooltip,
'ft-loader': FtLoader, 'ft-loader': FtLoader,
'ft-button': FtButton,
'ft-element-list': FtElementList 'ft-element-list': FtElementList
}, },
data: function () { data: function () {
@ -26,10 +28,11 @@ export default Vue.extend({
}, },
activeData: function () { activeData: function () {
const data = [].concat(this.favoritesPlaylist.videos).reverse()
if (this.favoritesPlaylist.videos.length < this.dataLimit) { if (this.favoritesPlaylist.videos.length < this.dataLimit) {
return this.favoritesPlaylist.videos return data
} else { } else {
return this.favoritesPlaylist.videos.slice(0, this.dataLimit) return data.slice(0, this.dataLimit)
} }
} }
}, },

View File

@ -864,12 +864,16 @@ export default Vue.extend({
console.log('update watch progress') console.log('update watch progress')
this.updateWatchProgress(payload) this.updateWatchProgress(payload)
} }
}
if (!this.isUpcoming && !this.isLoading) {
const player = this.$refs.videoPlayer.player
if (player !== null && !player.paused() && player.isInPictureInPicture()) { if (player !== null && !player.paused() && player.isInPictureInPicture()) {
const playerId = this.videoId const playerId = this.videoId
setTimeout(() => { setTimeout(() => {
player.play() player.play()
player.on('leavepictureinpicture', () => { player.on('leavepictureinpicture', (event) => {
const watchTime = player.currentTime() const watchTime = player.currentTime()
if (this.$route.fullPath.includes('/watch')) { if (this.$route.fullPath.includes('/watch')) {
const routeId = this.$route.params.id const routeId = this.$route.params.id

View File

@ -266,6 +266,7 @@ Settings:
One or more subscriptions were unable to be imported: تعذر استيراد واحد أو أكثر One or more subscriptions were unable to be imported: تعذر استيراد واحد أو أكثر
من الاشتراكات من الاشتراكات
Check for Legacy Subscriptions: تحقق من وجود اشتراك قديم Check for Legacy Subscriptions: تحقق من وجود اشتراك قديم
Manage Subscriptions: إدارة الإشتراكات
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: اخفي الدردشة المباشرة Hide Live Chat: اخفي الدردشة المباشرة
Hide Popular Videos: اخفي الفيديوهات الأكثر شعبية Hide Popular Videos: اخفي الفيديوهات الأكثر شعبية
@ -278,6 +279,18 @@ Settings:
Distraction Free Settings: إعدادات عدم الإزعاج Distraction Free Settings: إعدادات عدم الإزعاج
The app needs to restart for changes to take effect. Restart and apply change?: البرنامج The app needs to restart for changes to take effect. Restart and apply change?: البرنامج
يحتاج لإعادة التشغيل كي يسري مفعول التغييرات. هل تريد إعادة التشغيل و تطبيق التغييرات؟ يحتاج لإعادة التشغيل كي يسري مفعول التغييرات. هل تريد إعادة التشغيل و تطبيق التغييرات؟
Proxy Settings:
City: المدينة
Region: المنطقة
Country: البلد
Ip: عنوان الإيبي
Your Info: معلوماتك
Test Proxy: اختبار البروكسي
Proxy Port Number: رقم منفذ البروكسي
Proxy Host: خادوم البروكسي
Proxy Protocol: بروتوكول البروكسي
Enable Tor / Proxy: تفعيل تور / البروكسي
Proxy Settings: خيارات البروكسي
About: About:
#On About page #On About page
About: 'حول' About: 'حول'
@ -309,6 +322,19 @@ About:
Latest FreeTube News: 'آخر أخبار FreeTube' Latest FreeTube News: 'آخر أخبار FreeTube'
Donate: التبرع
Translate: ساعدنا في ترجمة Freetube
Chat on Matrix: الدردشة على ماتريكس
Mastodon: ماستدون
Email: البريد الإلكتروني
Blog: المدوّنة
Website: موقع الويب
Report a problem: الإبلاغ عن مشكلة
FAQ: الأسئلة المتداولة
Help: المساعدة
View License: اعرض الرخصة
Source code: الشفرة المصدرية
Beta: تجريبي
Profile: Profile:
All Channels: 'جميع القنوات' All Channels: 'جميع القنوات'
Profile Manager: 'مدير الملف الشخصي' Profile Manager: 'مدير الملف الشخصي'
@ -466,6 +492,8 @@ Video:
Open Channel in Invidious: افتح القناة على انفيديوس Open Channel in Invidious: افتح القناة على انفيديوس
Copy YouTube Channel Link: انسخ رابط قناة اليوتيوب Copy YouTube Channel Link: انسخ رابط قناة اليوتيوب
Open Channel in YouTube: افتح القناة على يوتيوب Open Channel in YouTube: افتح القناة على يوتيوب
Video has been saved: تم حفظ الفيديو
Save Video: احفظ الفيديو
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -88,6 +88,13 @@ Most Popular: 'Най-популярни'
Playlists: 'Плейлисти' Playlists: 'Плейлисти'
User Playlists: User Playlists:
Your Playlists: 'Вашите плейлисти' Your Playlists: 'Вашите плейлисти'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Запазените
ви видеоклипове са празни. Кликнете върху бутона за запазване в ъгъла на видеоклипа,
за да го добавите тук
Playlist Message: Тази страница не отразява напълно работещи плейлисти. В него са
изброени само видеоклипове, които сте запазили или избрали за любими. Когато работата
приключи, всички видеоклипове, които в момента са тук, ще бъдат мигрирани в плейлист
„Любими“.
History: History:
# On History Page # On History Page
History: 'История' History: 'История'
@ -243,6 +250,7 @@ Settings:
Unknown data key: 'Непознат ключ данни' Unknown data key: 'Непознат ключ данни'
How do I import my subscriptions?: 'Как да внеса абонаментите си?' How do I import my subscriptions?: 'Как да внеса абонаментите си?'
Check for Legacy Subscriptions: Проверка за стари абонаменти Check for Legacy Subscriptions: Проверка за стари абонаменти
Manage Subscriptions: Управление на абонаменти
Advanced Settings: Advanced Settings:
Advanced Settings: 'Разширени настройки' Advanced Settings: 'Разширени настройки'
Enable Debug Mode (Prints data to the console): 'Активиране на режим за дебъгване Enable Debug Mode (Prints data to the console): 'Активиране на режим за дебъгване
@ -280,8 +288,26 @@ Settings:
Hide Video Likes And Dislikes: Скриване оценките на видеата Hide Video Likes And Dislikes: Скриване оценките на видеата
Hide Video Views: Скриване броя показвания на видеата Hide Video Views: Скриване броя показвания на видеата
Distraction Free Settings: Настройки за неразсейване Distraction Free Settings: Настройки за неразсейване
Hide Active Subscriptions: Скриване на активни абонаменти
The app needs to restart for changes to take effect. Restart and apply change?: Приложението The app needs to restart for changes to take effect. Restart and apply change?: Приложението
трябва да се рестартира за да се приложат промените. Рестартиране? трябва да се рестартира за да се приложат промените. Рестартиране?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Грешка
при получаване на информация за мрежата. Правилно ли е конфигуриран вашият прокси
сървър?
City: Град
Region: Регион
Country: Държава
Ip: Ip
Your Info: Вашата информация
Test Proxy: Тестово прокси
Clicking on Test Proxy will send a request to: Кликването върху тестово прокси
ще изпрати заявка до
Proxy Port Number: Номер на прокси порта
Proxy Host: Прокси хост
Proxy Protocol: Прокси протокол
Enable Tor / Proxy: Активирайте Tor / Proxy
Proxy Settings: Настройки на прокси
About: About:
#On About page #On About page
About: 'Относно' About: 'Относно'
@ -313,6 +339,29 @@ About:
Latest FreeTube News: 'Последни FreeTube новини' Latest FreeTube News: 'Последни FreeTube новини'
Donate: Дарете
these people and projects: тези хора и проекти
FreeTube is made possible by: FreeTube е възможен чрез
Translate: Превод
room rules: правилата за стаите
Please read the: Моля, прочетете
Chat on Matrix: Чат в Matrix
Mastodon: Mastodon
Email: Имейл
Blog: Блог
Website: Уебсайт
Please check for duplicates before posting: Моля, проверете за дубликати преди публикуване
GitHub issues: GitHub проблеми
Report a problem: Съобщете за проблем
FAQ: ЧЗВ
FreeTube Wiki: FreeTube Wiki
Help: Помощ
GitHub releases: GitHub издания
Downloads / Changelog: Изтегляния / Дневник с промени
View License: Преглед на лиценза
Licensed under the AGPLv3: Лицензиран съгласно AGPLv3
Source code: Програмен код
Beta: Бета
Profile: Profile:
Profile Select: 'Избор на профил' Profile Select: 'Избор на профил'
All Channels: 'Всички канали' All Channels: 'Всички канали'
@ -473,6 +522,10 @@ Video:
Open Channel in YouTube: Отваряне на канала в YouTube Open Channel in YouTube: Отваряне на канала в YouTube
Started streaming on: Начало на излъчването Started streaming on: Начало на излъчването
Streamed on: Излъчване Streamed on: Излъчване
Video has been removed from your saved list: Видеоклипът е премахнат от вашия запазен
списък
Video has been saved: Видеото е запазено
Save Video: Запазване на видео
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -70,6 +70,8 @@ Search Filters:
Fetching results. Please wait: 'Načítání výsledků. Prosím, čekejte' Fetching results. Please wait: 'Načítání výsledků. Prosím, čekejte'
Fetch more results: 'Načíst více výsledků' Fetch more results: 'Načíst více výsledků'
# Sidebar # Sidebar
There are no more results for this search: Pro toto hledání nejsou k dispozici žádné
další výsledky
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Odběry' Subscriptions: 'Odběry'
@ -86,6 +88,12 @@ Most Popular: 'Nejpopulárnější'
Playlists: 'Playlisty' Playlists: 'Playlisty'
User Playlists: User Playlists:
Your Playlists: 'Vaše playlisty' Your Playlists: 'Vaše playlisty'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vaše
uložená videa jsou prázdná. Kliknutím na tlačítko Uložit v rohu videa jej zobrazíte
zde
Playlist Message: Tato stránka neodráží plně funkční seznamy skladeb. Uvádí pouze
videa, která jste uložili nebo zařadili mezi oblíbená. Po dokončení práce budou
všechna aktuálně zde umístěná videa přenesena do seznamu „Oblíbené“.
History: History:
# On History Page # On History Page
History: 'Historie' History: 'Historie'
@ -123,6 +131,8 @@ Settings:
instance (Výchozí je https://invidious.snopyta.org)' instance (Výchozí je https://invidious.snopyta.org)'
Region for Trending: 'Region pro trendy' Region for Trending: 'Region pro trendy'
#! List countries #! List countries
View all Invidious instance information: Zobrazit všechny informace o instanci
Invidious
Theme Settings: Theme Settings:
Theme Settings: 'Nastavení motivu' Theme Settings: 'Nastavení motivu'
Match Top Bar with Main Color: 'Přizpůsobit hlavní lištu hlavní barvě' Match Top Bar with Main Color: 'Přizpůsobit hlavní lištu hlavní barvě'
@ -251,6 +261,7 @@ Settings:
Unable to write file: 'Soubor nelze uložit' Unable to write file: 'Soubor nelze uložit'
Unknown data key: 'Neznámý datový klíč' Unknown data key: 'Neznámý datový klíč'
How do I import my subscriptions?: 'Jak mohu importovat své odebírané kanály?' How do I import my subscriptions?: 'Jak mohu importovat své odebírané kanály?'
Manage Subscriptions: Spravovat odběry
Advanced Settings: Advanced Settings:
Advanced Settings: 'Rozšířené nastavení' Advanced Settings: 'Rozšířené nastavení'
Enable Debug Mode (Prints data to the console): 'Povolit režim ladění (výstup Enable Debug Mode (Prints data to the console): 'Povolit režim ladění (výstup
@ -277,6 +288,22 @@ Settings:
#& Yes #& Yes
#& No #& No
Proxy Settings:
Proxy Settings: Nastavení proxy
City: Město
Ip: IP
Your Info: Vaše informace
Enable Tor / Proxy: Povolit Tor / Proxy
Region: Region
Country: Země
Test Proxy: Otestovat proxy
Clicking on Test Proxy will send a request to: Kliknutím na Otestovat proxy se
odešle dotaz na
Proxy Port Number: Port proxy
Proxy Host: Adresa proxy
Proxy Protocol: Protokol proxy
Error getting network information. Is your proxy configured properly?: Chyba při
získávání informací o síti. Je vaše proxy správně nakonfigurována?
About: About:
#On About page #On About page
About: 'O aplikaci' About: 'O aplikaci'
@ -308,6 +335,30 @@ About:
Latest FreeTube News: 'Nejnovější zprávy z FreeTube' Latest FreeTube News: 'Nejnovější zprávy z FreeTube'
Licensed under the AGPLv3: Licencováno pod licencí AGPLv3
Source code: Zdrojový kód
Beta: Beta
Donate: Přispět
Credits: Poděkování
room rules: pravidla místnosti
Please read the: Prosím, přečtěte si
Chat on Matrix: Chat na síti Matrix
Mastodon: mastodon
Email: Email
Blog: Blog
Website: Webová stránka
FAQ: Často kladné dotazy
FreeTube Wiki: FreeTube Wiki
Downloads / Changelog: Ke stažení / Seznam změn
View License: Zobrazit licenci
Translate: Překlady
these people and projects: těmto lidem a projektům
FreeTube is made possible by: FreeTube je možné udělat díky
Please check for duplicates before posting: Před odesláním zkontrolujte duplicity
GitHub issues: Chyby na GitHub
Report a problem: Nahlásit problém
Help: Pomoc
GitHub releases: Vydaní na GitHub
Profile: Profile:
Profile Select: 'Výběr profilu' Profile Select: 'Výběr profilu'
All Channels: 'Všechny kanály' All Channels: 'Všechny kanály'
@ -441,20 +492,20 @@ Video:
Oct: 'Říjen' Oct: 'Říjen'
Nov: 'Listopad' Nov: 'Listopad'
Dec: 'Prosinec' Dec: 'Prosinec'
Second: 'Sekunda' Second: 'sekundou'
Seconds: 'Sekundy' Seconds: 'sekundami'
Minute: 'Minuta' Minute: 'minutou'
Minutes: 'Minuty' Minutes: 'minutami'
Hour: 'Hodina' Hour: 'hodinou'
Hours: 'Hodiny' Hours: 'hodinami'
Day: 'Den' Day: 'dnem'
Days: 'Dny' Days: 'dny'
Week: 'Týden' Week: 'týdnem'
Weeks: 'Týdny' Weeks: 'týdny'
Month: 'Měsíc' Month: 'měsícem'
Months: 'Měsíce' Months: 'měsíci'
Year: 'Rok' Year: 'rokem'
Years: 'Roky' Years: 'lety'
Ago: 'Před' Ago: 'Před'
Upcoming: 'Premiéra' Upcoming: 'Premiéra'
Published on: 'Publikováno' Published on: 'Publikováno'
@ -463,6 +514,10 @@ Video:
#& Videos #& Videos
Started streaming on: Začátek vysílání Started streaming on: Začátek vysílání
Streamed on: Vysíláno Streamed on: Vysíláno
Video has been saved: Video bylo uloženo
Save Video: Uložit video
Video has been removed from your saved list: Video bylo odstraněno z vašeho uloženého
seznamu
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -82,6 +82,13 @@ Most Popular: Am beliebtesten
Playlists: Wiedergabelisten Playlists: Wiedergabelisten
User Playlists: User Playlists:
Your Playlists: Deine Wiedergabelisten Your Playlists: Deine Wiedergabelisten
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Deine
gespeicherten Videos sind leer. Klicken Sie auf die Schaltfläche "Speichern" in
der Ecke eines Videos, damit es hier aufgelistet wird
Playlist Message: Diese Seite spiegelt nicht die vollständig funktionierenden Wiedergabelisten
wider. Sie listet nur Videos auf, die Sie gespeichert oder favorisiert haben.
Wenn die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier
befinden, in eine Wiedergabeliste "Favoriten" migriert.
History: History:
# On History Page # On History Page
History: Verlauf History: Verlauf
@ -272,6 +279,7 @@ Settings:
Select Import Type: Wähle Importtyp Select Import Type: Wähle Importtyp
Data Settings: Dateneinstellungen Data Settings: Dateneinstellungen
Check for Legacy Subscriptions: Prüfung auf Altabonnements Check for Legacy Subscriptions: Prüfung auf Altabonnements
Manage Subscriptions: Abonnements verwalten
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: Live-Chat verbergen Hide Live Chat: Live-Chat verbergen
Hide Popular Videos: Beliebte Videos verbergen Hide Popular Videos: Beliebte Videos verbergen
@ -286,6 +294,22 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: Um The app needs to restart for changes to take effect. Restart and apply change?: Um
die Änderungen anzuwenden muss die Anwendung neustarten. Jetzt neustarten und die Änderungen anzuwenden muss die Anwendung neustarten. Jetzt neustarten und
Änderungen aktivieren? Änderungen aktivieren?
Proxy Settings:
Ip: IP-Adresse
Error getting network information. Is your proxy configured properly?: Fehler
beim Abrufen von Netzwerkinformationen. Ist dein Proxy richtig konfiguriert?
City: Stadt
Region: Region / Bundesland
Country: Land / Nation
Your Info: Deine Info
Test Proxy: Proxy testen
Clicking on Test Proxy will send a request to: In dem du auf Proxy Testen klickst,
schickst du eine Anfrage an
Proxy Port Number: Proxy-Portnummer
Proxy Host: Proxy-Host
Proxy Protocol: Proxy-Protokoll
Enable Tor / Proxy: Tor / Proxy aktivieren
Proxy Settings: Proxy-Einstellungen
About: About:
#On About page #On About page
About: Über About: Über
@ -338,12 +362,29 @@ About:
Useful Links: Nützliche Links Useful Links: Nützliche Links
Help: Hilfe Help: Hilfe
Contact: Kontakt Contact: Kontakt
these people and projects: diesen Menschen und Projekten
FreeTube is made possible by: FreeTube wird ermöglicht von
Translate: Übersetzen
room rules: Raum-Regeln
Please read the: Bitte lese die
Chat on Matrix: Chatten bei Matrix
Mastodon: Mastodon
Please check for duplicates before posting: Bitte überprüfe vor dem absenden, ob
es Duplikate gibt
GitHub issues: GitHub Issues
Report a problem: Problem melden
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub Veröffentlichungen
Downloads / Changelog: Downloads / Änderungsverlauf
View License: Lizenz einsehen
Licensed under the AGPLv3: Lizensiert unter der AGPLv3
Source code: Quellcode
Channel: Channel:
Subscriber: Abonnement Subscriber: Abonnement
Subscribers: Abonnements Subscribers: Abonnements
Subscribe: Abonnieren Subscribe: Abonnieren
Unsubscribe: Deabonnieren Unsubscribe: Deabonnieren
Search Channel: Suche Kanal Search Channel: Durchsuche Kanal
Your search results have returned 0 results: Deine Suche hat 0 Ergebnisse geliefert Your search results have returned 0 results: Deine Suche hat 0 Ergebnisse geliefert
Sort By: Sortiere nach Sort By: Sortiere nach
Videos: Videos:
@ -455,6 +496,10 @@ Video:
Open Channel in YouTube: Kanal auf YouTube öffnen Open Channel in YouTube: Kanal auf YouTube öffnen
Started streaming on: Streaming angefangen am Started streaming on: Streaming angefangen am
Streamed on: Gestreamt am Streamed on: Gestreamt am
Video has been removed from your saved list: Video wurde aus der Liste der gespeicherten
Videos entfernt
Video has been saved: Video wurde gespeichert
Save Video: Video speichern
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -69,6 +69,7 @@ Search Filters:
Search Results: Search Results Search Results: Search Results
Fetching results. Please wait: Fetching results. Please wait Fetching results. Please wait: Fetching results. Please wait
Fetch more results: Fetch more results Fetch more results: Fetch more results
There are no more results for this search: There are no more results for this search
# Sidebar # Sidebar
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
@ -86,8 +87,11 @@ Most Popular: Most Popular
Playlists: Playlists Playlists: Playlists
User Playlists: User Playlists:
Your Playlists: Your Playlists Your Playlists: Your Playlists
Playlist Message: This page is not reflective of fully working playlists. It only lists videos that you have saved or favorited. When the work has finished, all videos currently here will be migrated to a 'Favorites' playlist. Playlist Message: This page is not reflective of fully working playlists. It only
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Your saved videos are empty. Click on the save button on the corner of a video to have it listed here lists videos that you have saved or favorited. When the work has finished, all
videos currently here will be migrated to a 'Favorites' playlist.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Your saved videos are empty. Click on the save button on the corner of a video to have
it listed here
History: History:
# On History Page # On History Page
History: History History: History
@ -123,6 +127,7 @@ Settings:
End: End End: End
'Invidious Instance (Default is https://invidious.snopyta.org)': Invidious Instance 'Invidious Instance (Default is https://invidious.snopyta.org)': Invidious Instance
(Default is https://invidious.snopyta.org) (Default is https://invidious.snopyta.org)
View all Invidious instance information: View all Invidious instance information
Region for Trending: Region for Trending Region for Trending: Region for Trending
#! List countries #! List countries
Theme Settings: Theme Settings:

View File

@ -80,6 +80,11 @@ Most Popular: 'Más populares'
Playlists: 'Playlists' Playlists: 'Playlists'
User Playlists: User Playlists:
Your Playlists: 'Tus listas de reproducción' Your Playlists: 'Tus listas de reproducción'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Tus
favoritos están vacios. Haz click en la estrella de cada video para añadirlo aquí
Playlist Message: Esta página no refleja el estado final de las playlists, solo
muestra los videos guardados. En futuras actualizaciones, estos videos migrarán
a la playlist "Favoritos".
History: History:
# On History Page # On History Page
History: 'Historial' History: 'Historial'
@ -233,6 +238,7 @@ Settings:
One or more subscriptions were unable to be imported: Una o varias de las suscripciones One or more subscriptions were unable to be imported: Una o varias de las suscripciones
no han podido ser importadas no han podido ser importadas
Check for Legacy Subscriptions: Comprobar suscripciones Legacy Check for Legacy Subscriptions: Comprobar suscripciones Legacy
Manage Subscriptions: Administrar suscripciones
Advanced Settings: Advanced Settings:
Advanced Settings: 'Ajustes avanzados' Advanced Settings: 'Ajustes avanzados'
Enable Debug Mode (Prints data to the console): 'Activar modo de depuración (muestra Enable Debug Mode (Prints data to the console): 'Activar modo de depuración (muestra
@ -273,6 +279,22 @@ Settings:
Hide Active Subscriptions: Ocultar suscripciones activas Hide Active Subscriptions: Ocultar suscripciones activas
The app needs to restart for changes to take effect. Restart and apply change?: ¿Quieres The app needs to restart for changes to take effect. Restart and apply change?: ¿Quieres
reiniciar FreeTube ahora para aplicar los cambios? reiniciar FreeTube ahora para aplicar los cambios?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Error al
obtener información sobre la red. ¿Has configurado el Proxy correctamente?
City: Ciudad
Region: Región
Country: País
Ip: IP
Your Info: Tu información
Test Proxy: Probar Proxy
Clicking on Test Proxy will send a request to: Al cliquear en "Probar Proxy" se
enviará una solicitud a
Proxy Port Number: Número de puerto del Proxy
Proxy Host: Host del Proxy
Proxy Protocol: Protocolo Proxy
Enable Tor / Proxy: Habilitar Tor / Proxy
Proxy Settings: Proxy
About: About:
#On About page #On About page
About: 'Acerca de' About: 'Acerca de'
@ -304,6 +326,31 @@ About:
Latest FreeTube News: 'Últimas noticias de FreeTube' Latest FreeTube News: 'Últimas noticias de FreeTube'
Donate: Donar
these people and projects: estas personas y proyectos
FreeTube is made possible by: FreeTube es posible gracias a
Credits: Créditos
Translate: Traducir
room rules: reglas de la sala
Please read the: Por favor, lee el
Chat on Matrix: Chat en Matrix
Mastodon: Mastodon
Email: Correo electrónico
Blog: Blog
Website: Página web
Please check for duplicates before posting: Por favor, antes de publicar asegúrate
de no duplicar temas
GitHub issues: Sugerencias en GitHub
Report a problem: Informar de un problema
FAQ: Preguntas frecuentes
FreeTube Wiki: Wiki de FreeTube
Help: Ayuda
GitHub releases: Lanzamientos de GitHub
Downloads / Changelog: Descargas / Changelog
View License: Ver licencia
Licensed under the AGPLv3: Licencia AGPLv3
Source code: Código fuente
Beta: Beta
Profile: Profile:
All Channels: 'Todos los canales' All Channels: 'Todos los canales'
Profile Manager: 'Administrador de perfiles' Profile Manager: 'Administrador de perfiles'
@ -464,6 +511,10 @@ Video:
Open Channel in YouTube: Visitar canal en YouTube Open Channel in YouTube: Visitar canal en YouTube
Started streaming on: Comenzó a transmitir en Started streaming on: Comenzó a transmitir en
Streamed on: Transmitido en Streamed on: Transmitido en
Video has been removed from your saved list: El video ha sido eliminado de tu lista
de guardados
Video has been saved: El video ha sido guardado
Save Video: Guardiar video
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -63,6 +63,8 @@ Search Filters:
Fetching results. Please wait: 'Récupération des résultats. Veuillez patienter' Fetching results. Please wait: 'Récupération des résultats. Veuillez patienter'
Fetch more results: 'Montrer plus de résultats' Fetch more results: 'Montrer plus de résultats'
# Sidebar # Sidebar
There are no more results for this search: Il n'y a plus de résultats pour cette
recherche
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Abonnements' Subscriptions: 'Abonnements'
@ -83,6 +85,13 @@ Most Popular: 'Les plus populaires'
Playlists: 'Listes de lecture' Playlists: 'Listes de lecture'
User Playlists: User Playlists:
Your Playlists: 'Vos listes de lecture' Your Playlists: 'Vos listes de lecture'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vous
n'avez enregistré aucune vidéo. Cliquez sur le bouton Enregistrer dans le coin
d'une vidéo pour l'afficher ici
Playlist Message: Cette page ne reflète pas les listes de lecture entièrement fonctionnelles.
Elle ne répertorie que les vidéos que vous avez enregistrées ou mises en favoris.
Une fois le travail terminé, toutes les vidéos actuellement présentes ici seront
migrées vers une liste de lecture «Favoris».
History: History:
# On History Page # On History Page
History: 'Historique' History: 'Historique'
@ -300,8 +309,8 @@ Settings:
Ip: Ip Ip: Ip
Your Info: Vos informations Your Info: Vos informations
Test Proxy: Test du Proxy Test Proxy: Test du Proxy
Clicking on Test Proxy will send a request to: En cliquant sur Test Proxy, une Clicking on Test Proxy will send a request to: En cliquant sur Test du Proxy,
demande sera envoyée à une demande sera envoyée à
Proxy Port Number: Numéro de port du proxy Proxy Port Number: Numéro de port du proxy
Proxy Host: Hôte du proxy Proxy Host: Hôte du proxy
Proxy Protocol: Protocole du proxy Proxy Protocol: Protocole du proxy
@ -358,13 +367,23 @@ About:
Beta: Bêta Beta: Bêta
Donate: Faire un don Donate: Faire un don
Useful Links: Liens utiles Useful Links: Liens utiles
Translate: Traduire Translate: Aidez-nous à traduire FreeTube
Chat on Matrix: Chatter sur Matrix Chat on Matrix: Chatter sur Matrix
Mastodon: Mastodon Mastodon: Mastodon
Report a problem: Signaler un problème Report a problem: Signaler un problème
View License: Voir la license View License: Voir la license
Licensed under the AGPLv3: Sous licence AGPLv3 Licensed under the AGPLv3: Sous licence AGPLv3
Source code: Code source Source code: Code source
these people and projects: ces personnes et projets
FreeTube is made possible by: FreeTube est rendu possible par
room rules: règles du salon
Please read the: Veuillez lire les
Please check for duplicates before posting: Veuillez vérifier s'il y a des doublons
avant de poster
GitHub issues: Les problèmes identifiés par la communauté sur GitHub
FreeTube Wiki: Wiki de FreeTube
GitHub releases: Les différentes versions de FreeTube disponibles sur GitHub
Downloads / Changelog: Téléchargements / Journal des modifications
Channel: Channel:
Subscriber: 'Abonnement' Subscriber: 'Abonnement'
Subscribers: 'Abonnements' Subscribers: 'Abonnements'
@ -484,6 +503,10 @@ Video:
Open Channel in YouTube: Ouvrir la chaîne sur YouTube Open Channel in YouTube: Ouvrir la chaîne sur YouTube
Started streaming on: Diffusion lancée le Started streaming on: Diffusion lancée le
Streamed on: Diffusé le Streamed on: Diffusé le
Video has been removed from your saved list: La vidéo a été supprimée de votre liste
enregistrée
Video has been saved: La vidéo a été enregistrée
Save Video: Enregistrer la vidéo
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'נאספות תוצאות. נא להמתין' Fetching results. Please wait: 'נאספות תוצאות. נא להמתין'
Fetch more results: 'חיפוש תוצאות נוספות' Fetch more results: 'חיפוש תוצאות נוספות'
# Sidebar # Sidebar
There are no more results for this search: אין תוצאות נוספות לחיפוש הזה
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'מינויים' Subscriptions: 'מינויים'
@ -103,13 +104,12 @@ Settings:
General Settings: 'הגדרות כלליות' General Settings: 'הגדרות כלליות'
Check for Updates: 'בדוק אם קיימים עדכונים' Check for Updates: 'בדוק אם קיימים עדכונים'
Check for Latest Blog Posts: 'בדוק אם קיימים פוסטים חדשים בבלוג' Check for Latest Blog Posts: 'בדוק אם קיימים פוסטים חדשים בבלוג'
Fallback to Non-Preferred Backend on Failure: 'לסגת לממשק נסתר שאינו מועדף בעת Fallback to Non-Preferred Backend on Failure: 'נסיגה למנגנון שאינו מועדף בעת כשל'
כשל'
Enable Search Suggestions: 'אפשר הצעות לחיפוש' Enable Search Suggestions: 'אפשר הצעות לחיפוש'
Default Landing Page: 'דף נחיתה כבררת מחדל' Default Landing Page: 'דף נחיתה כבררת מחדל'
Locale Preference: 'העדפת שפה' Locale Preference: 'העדפת שפה'
Preferred API Backend: Preferred API Backend:
Preferred API Backend: משק API נסתר מועדף' Preferred API Backend: נגנון API מועדף'
Local API: 'API מקומי' Local API: 'API מקומי'
Invidious API: 'API של Invidious' Invidious API: 'API של Invidious'
Video View Type: Video View Type:
@ -126,6 +126,7 @@ Settings:
(ברירת המחדל היא https://invidious.snopyta.org)' (ברירת המחדל היא https://invidious.snopyta.org)'
Region for Trending: 'אזור לסרטונים חמים' Region for Trending: 'אזור לסרטונים חמים'
#! List countries #! List countries
View all Invidious instance information: הצגת כל פרטי העותק של Invidious
Theme Settings: Theme Settings:
Theme Settings: 'הגדרת מראה' Theme Settings: 'הגדרת מראה'
Match Top Bar with Main Color: 'התאמת האזור העליון לצבע הראשי' Match Top Bar with Main Color: 'התאמת האזור העליון לצבע הראשי'
@ -159,7 +160,7 @@ Settings:
Disable Smooth Scrolling: השבתת גלילה חלקה Disable Smooth Scrolling: השבתת גלילה חלקה
Player Settings: Player Settings:
Player Settings: 'הגדרת נגן' Player Settings: 'הגדרת נגן'
Force Local Backend for Legacy Formats: 'לכפות את הממשק הנסתר המקומי לתצורות המיושנות' Force Local Backend for Legacy Formats: 'כפיית המנגנון לניגון בפורמטים ישנים'
Play Next Video: 'ניגון הסרטון הבא' Play Next Video: 'ניגון הסרטון הבא'
Turn on Subtitles by Default: 'הפעלת כתוביות כברירת מחדל' Turn on Subtitles by Default: 'הפעלת כתוביות כברירת מחדל'
Autoplay Videos: 'הפעלה אוטומטית לסרטונים' Autoplay Videos: 'הפעלה אוטומטית לסרטונים'
@ -272,8 +273,8 @@ Settings:
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: הסתרת צ׳אט חי Hide Live Chat: הסתרת צ׳אט חי
Hide Popular Videos: הסתרת סרטונים נפוצים Hide Popular Videos: הסתרת סרטונים נפוצים
Hide Trending Videos: הסתרת סרטונים חמים Hide Trending Videos: הסתרת הסרטונים החמים
Hide Recommended Videos: הסתרת סרטונים מומלצים Hide Recommended Videos: הסתרת הסרטונים המומלצים
Hide Comment Likes: הסתרת לייקים על תגובות Hide Comment Likes: הסתרת לייקים על תגובות
Hide Channel Subscribers: הסתרת מנויי הערוץ Hide Channel Subscribers: הסתרת מנויי הערוץ
Hide Video Likes And Dislikes: הסתרת לייקים ודיסלייקים לסרטון Hide Video Likes And Dislikes: הסתרת לייקים ודיסלייקים לסרטון
@ -344,6 +345,22 @@ About:
Useful Links: קישורים שימושיים Useful Links: קישורים שימושיים
Help: עזרה Help: עזרה
Contact: יצירת קשר Contact: יצירת קשר
these people and projects: האנשים והמיזמים האלו
FreeTube is made possible by: FreeTube זמין לך בזכות
Translate: תרגום
room rules: כללי החדר
Please read the: נא לקרוא את
Chat on Matrix: צ׳אט ב־Matrix
Mastodon: Mastodon
Please check for duplicates before posting: נא לבדוק כפילויות בטרם פרסום תקלה
GitHub issues: תקלות ב־GitHub
Report a problem: דיווח על תקלה
FreeTube Wiki: הוויקי של FreeTube
GitHub releases: מהדורות ב־GitHub
Downloads / Changelog: הורדות / יומן שינויים
View License: הצגת הרישיון
Licensed under the AGPLv3: בכפוף לרישיון AGPLv3
Source code: קוד מקור
Profile: Profile:
Profile Select: 'בחירת פרופיל' Profile Select: 'בחירת פרופיל'
All Channels: 'כל הערוצים' All Channels: 'כל הערוצים'
@ -444,7 +461,7 @@ Video:
Enable Live Chat: 'אפשר צ''אט' Enable Live Chat: 'אפשר צ''אט'
Live Chat is currently not supported in this build.: 'הצ''אט כרגע לא נתמך בגרסה Live Chat is currently not supported in this build.: 'הצ''אט כרגע לא נתמך בגרסה
זו.' זו.'
'Chat is disabled or the Live Stream has ended.': 'הצ''אט נחסם או שהשידור החי נגמר.' 'Chat is disabled or the Live Stream has ended.': 'הצ׳אט נחסם או שהשידור החי נגמר.'
Live chat is enabled. Chat messages will appear here once sent.: 'הצ''אט מופעל. Live chat is enabled. Chat messages will appear here once sent.: 'הצ''אט מופעל.
ההודעות יופיעו פה כאשר יישלחו.' ההודעות יופיעו פה כאשר יישלחו.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'מנגנון 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'מנגנון
@ -594,8 +611,8 @@ Tooltips:
Fallback to Non-Preferred Backend on Failure: כאשר ל־API המועדף עליך יש בעיה, Fallback to Non-Preferred Backend on Failure: כאשר ל־API המועדף עליך יש בעיה,
FreeTube ינסה להשתמש ב־API בעדיפות הנמוכה יותר באופן אוטומטי כשיטת נסיגה כאשר FreeTube ינסה להשתמש ב־API בעדיפות הנמוכה יותר באופן אוטומטי כשיטת נסיגה כאשר
האפשרות פעילה האפשרות פעילה
Preferred API Backend: נא לבחור את המנגנון בו ישתמש FreeTube כדי לקבל נתונים. Preferred API Backend: נא לבחור את המנגנון לשימוש FreeTube כדי לקבל נתונים. ה־API
ה־API המקומי הוא מחלץ מובנה. ה־API של Invidious דורש התחברות לשרת Invidious. המקומי הוא מחלץ מובנה. ה־API של Invidious דורש התחברות לשרת Invidious.
Region for Trending: מגמות אזוריות מאפשר לך לבחור סרטונים חמים של איזו מדינה מעניין Region for Trending: מגמות אזוריות מאפשר לך לבחור סרטונים חמים של איזו מדינה מעניין
אותך לראות. לא כל המדינות שמוצגות אכן נתמכות על ידי YouTube אותך לראות. לא כל המדינות שמוצגות אכן נתמכות על ידי YouTube
Invidious Instance: העותק של Invidious שאליו FreeTube יתחבר לפניות API. מחיקת Invidious Instance: העותק של Invidious שאליו FreeTube יתחבר לפניות API. מחיקת
@ -603,7 +620,7 @@ Tooltips:
Thumbnail Preference: כל התמונות הייצוגיות ברחבי FreeTube תוחלפנה בתמונית מתוך Thumbnail Preference: כל התמונות הייצוגיות ברחבי FreeTube תוחלפנה בתמונית מתוך
הסרטון במקום התמונה הייצוגית כבררת המחדל הסרטון במקום התמונה הייצוגית כבררת המחדל
Player Settings: Player Settings:
Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא בררת Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא ברירת
המחדל שלך. כאשר האפשרות פעילה, ה־API המקומי יופעל וישתמש בתצורות המיושנות שהוחזרו המחדל שלך. כאשר האפשרות פעילה, ה־API המקומי יופעל וישתמש בתצורות המיושנות שהוחזרו
על ידיו במקום באלו שהוחזרו על ידי Invidious. מועיל כאשר הסרטונים שמוחזרים על על ידיו במקום באלו שהוחזרו על ידי Invidious. מועיל כאשר הסרטונים שמוחזרים על
ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה

View File

@ -3,7 +3,7 @@ Locale Name: 'Hrvatski'
FreeTube: 'FreeTube' FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History # Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >- 'This part of the app is not ready yet. Come back later when progress has been made.': >-
Ovaj dio programa još nije spreman. Navrati kasnije. Ovaj dio programa još nije gotov. Navrati kasnije.
# Webkit Menu Bar # Webkit Menu Bar
File: 'Datoteka' File: 'Datoteka'
@ -33,7 +33,7 @@ Forward: 'Naprijed'
Search / Go to URL: 'Pretraži / Idi na URL' Search / Go to URL: 'Pretraži / Idi na URL'
# In Filter Button # In Filter Button
Search Filters: Search Filters:
Search Filters: 'Filtri za pretraživanje' Search Filters: 'Filtri pretrage'
Sort By: Sort By:
Sort By: 'Redoslijed' Sort By: 'Redoslijed'
Most Relevant: 'Najrelevantniji' Most Relevant: 'Najrelevantniji'
@ -60,7 +60,7 @@ Search Filters:
Short (< 4 minutes): 'Kratko (< 4 min)' Short (< 4 minutes): 'Kratko (< 4 min)'
Long (> 20 minutes): 'Dugo (> 20 min)' Long (> 20 minutes): 'Dugo (> 20 min)'
# On Search Page # On Search Page
Search Results: 'Rezultati pretraživanja' Search Results: 'Rezultati pretrage'
Fetching results. Please wait: 'Rezultati se dohvaćaju. Pričekaj' Fetching results. Please wait: 'Rezultati se dohvaćaju. Pričekaj'
Fetch more results: 'Dohvati još rezultata' Fetch more results: 'Dohvati još rezultata'
# Sidebar # Sidebar
@ -82,6 +82,12 @@ Most Popular: 'Najpopularniji'
Playlists: 'Zbirke' Playlists: 'Zbirke'
User Playlists: User Playlists:
Your Playlists: 'Tvoje zbirke' Your Playlists: 'Tvoje zbirke'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Nemaš
spremljenih videa. Pritisni gumb za spremanje u sličici videa, kako bi se video
ovdje prikazao
Playlist Message: Ova stranica ne odražava potpuno funkcionalne zbirke. Prikazuje
samo spremljena ili označena videa. Kad posao završi, svi trenutačno ovdje prisutni
videi premjestit će se u zbirku „Favoriti”.
History: History:
# On History Page # On History Page
History: 'Povijest' History: 'Povijest'
@ -94,7 +100,7 @@ Settings:
General Settings: 'Opće postavke' General Settings: 'Opće postavke'
Fallback to Non-Preferred Backend on Failure: 'U slučaju problema koristi sekundarni Fallback to Non-Preferred Backend on Failure: 'U slučaju problema koristi sekundarni
pozadinski sustav' pozadinski sustav'
Enable Search Suggestions: 'Aktiviraj prijedloge pretraživanja' Enable Search Suggestions: 'Aktiviraj prijedloge pretrage'
Default Landing Page: 'Standardna odredišna stranica' Default Landing Page: 'Standardna odredišna stranica'
Locale Preference: 'Jezik' Locale Preference: 'Jezik'
Preferred API Backend: Preferred API Backend:
@ -145,7 +151,7 @@ Settings:
Deep Orange: 'Tamnonarančasta' Deep Orange: 'Tamnonarančasta'
Secondary Color Theme: 'Sekundarna boja teme' Secondary Color Theme: 'Sekundarna boja teme'
#* Main Color Theme #* Main Color Theme
UI Scale: Skaliranje korisničkog sučelja UI Scale: Uvećanje korisničkog sučelja
Disable Smooth Scrolling: Deaktiviraj neisprekidano klizanje Disable Smooth Scrolling: Deaktiviraj neisprekidano klizanje
Expand Side Bar by Default: Standardno proširi bočnu traku Expand Side Bar by Default: Standardno proširi bočnu traku
Player Settings: Player Settings:
@ -181,10 +187,10 @@ Settings:
Privacy Settings: 'Postavke privatnosti' Privacy Settings: 'Postavke privatnosti'
Remember History: 'Zapamti povijest' Remember History: 'Zapamti povijest'
Save Watched Progress: 'Spremi napredak gledanja' Save Watched Progress: 'Spremi napredak gledanja'
Clear Search Cache: 'Isprazni predmemoriju pretraživanja' Clear Search Cache: 'Isprazni predmemoriju pretrage'
Are you sure you want to clear out your search cache?: 'Stvarno želiš isprazniti Are you sure you want to clear out your search cache?: 'Stvarno želiš isprazniti
predmemoriju pretraživanja?' predmemoriju pretrage?'
Search cache has been cleared: 'Predmemorija pretraživanja je ispražnjena' Search cache has been cleared: 'Predmemorija pretrage je ispražnjena'
Remove Watch History: 'Ukloni povijest gledanja' Remove Watch History: 'Ukloni povijest gledanja'
Are you sure you want to remove your entire watch history?: 'Stvarno želiš ukloniti Are you sure you want to remove your entire watch history?: 'Stvarno želiš ukloniti
cijelu povijest gledanja?' cijelu povijest gledanja?'
@ -267,19 +273,36 @@ Settings:
One or more subscriptions were unable to be imported: Neuspio uvoz jedne ili više One or more subscriptions were unable to be imported: Neuspio uvoz jedne ili više
pretplata pretplata
Check for Legacy Subscriptions: Potraži stare pretplate Check for Legacy Subscriptions: Potraži stare pretplate
Manage Subscriptions: Upravljaj pretplatama
Distraction Free Settings: Distraction Free Settings:
Hide Trending Videos: Sakrij videa u trendu Hide Trending Videos: Sakrij videa u trendu
Hide Recommended Videos: Sakrij preporučena videa Hide Recommended Videos: Sakrij preporučena videa
Hide Channel Subscribers: Sakrij pretplatnike na kanal Hide Channel Subscribers: Sakrij pretplatnike na kanal
Hide Live Chat: Sakrij chat u živo Hide Live Chat: Sakrij razgovor uživo
Hide Popular Videos: Sakrij popularna videa Hide Popular Videos: Sakrij popularna videa
Hide Comment Likes: Sakrij ocjene komentara Hide Comment Likes: Sakrij ocjene komentara
Hide Video Likes And Dislikes: Sakrij ocjenjivanje videa Hide Video Likes And Dislikes: Sakrij ocjenjivanje videa
Hide Video Views: Sakrij broj gledanja videa Hide Video Views: Sakrij broj gledanja videa
Distraction Free Settings: Postavke za nesmetan rad Distraction Free Settings: Postavke za nesmetan rad
Hide Active Subscriptions: Sakrij aktivne pretplate Hide Active Subscriptions: Sakrij aktivne pretplate
The app needs to restart for changes to take effect. Restart and apply change?: Za The app needs to restart for changes to take effect. Restart and apply change?: Promjene
primjenu promjena, program se mora ponovo pokrenuti. Ponovo pokrenuti program? će se primijeniti nakon ponovnog pokeretanja programa. Ponovo pokrenuti program?
Proxy Settings:
Country: Zemlja
Error getting network information. Is your proxy configured properly?: Greška
pri dohvaćanju mrežnih podataka. Je li tvoj posrednik pravilno konfiguriran?
City: Grad
Region: Regija
Ip: IP
Your Info: Tvoji podaci
Test Proxy: Provjeri posrednika
Clicking on Test Proxy will send a request to: Pritiskom gumba „Provjeri posrednika”
šalje se zahtjev na
Proxy Port Number: Broj priključka posrednika
Proxy Host: Računalo posrednika
Proxy Protocol: Protokol posrednika
Enable Tor / Proxy: Aktiviraj Tor/Posrednik
Proxy Settings: Postavke posrednika
About: About:
#On About page #On About page
About: 'Informacije' About: 'Informacije'
@ -328,6 +351,23 @@ About:
Useful Links: Korisne poveznice Useful Links: Korisne poveznice
Help: Pomoć Help: Pomoć
Contact: Kontakt Contact: Kontakt
Chat on Matrix: Razgovaraj na Matrixu
Please check for duplicates before posting: Prije slanja greške, provjeri, je li
ista greška već prijavljena
these people and projects: ovi ljudi i projekti
FreeTube is made possible by: FreeTube omogućuju
Translate: Prevodi
room rules: pravila sobe
Please read the: Pročitaj
Mastodon: Mastodon
GitHub issues: GitHub problemi
Report a problem: Prijavi grešku
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub izdanja
Downloads / Changelog: Preuzimanja/dnevnik promjena
View License: Pogledaj licencu
Licensed under the AGPLv3: AGPLv3 licenca
Source code: Izvorni kod
Profile: Profile:
All Channels: 'Svi kanali' All Channels: 'Svi kanali'
Profile Manager: 'Upravljač profila' Profile Manager: 'Upravljač profila'
@ -418,15 +458,15 @@ Video:
# As in a Live Video # As in a Live Video
Live: 'Uživo' Live: 'Uživo'
Live Now: 'Sada uživo' Live Now: 'Sada uživo'
Live Chat: 'Chat uživo' Live Chat: 'Razgovor uživo'
Enable Live Chat: 'Aktiviraj chat uživo' Enable Live Chat: 'Aktiviraj razgovor uživo'
Live Chat is currently not supported in this build.: 'Chat uživo trenutačno nije Live Chat is currently not supported in this build.: 'Razgovor uživo trenutačno
podržan u ovoj verziji.' nije podržan u ovoj verziji.'
'Chat is disabled or the Live Stream has ended.': 'Chat je deaktiviran ili je prijenos 'Chat is disabled or the Live Stream has ended.': 'Razgovor je deaktiviran ili je
uživo završio.' prijenos uživo završio.'
Live chat is enabled. Chat messages will appear here once sent.: 'Chat uživo je Live chat is enabled. Chat messages will appear here once sent.: 'Razgovor uživo
aktiviran. Poruke chata pojavit će se ovdje nakon slanja.' je aktiviran. Poruke razgovora pojavit će se ovdje nakon slanja.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Chat 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Razgovor
uživo trenutačno nije podržan s Invidious sučeljem. Potrebna je izravna veza s uživo trenutačno nije podržan s Invidious sučeljem. Potrebna je izravna veza s
YouTubeom.' YouTubeom.'
Published: Published:
@ -484,6 +524,10 @@ Video:
Open Channel in YouTube: 'Otvori kanal na YouTube stranici' Open Channel in YouTube: 'Otvori kanal na YouTube stranici'
Started streaming on: Početak prijenosa Started streaming on: Početak prijenosa
Streamed on: Prijenos Streamed on: Prijenos
Video has been removed from your saved list: Video je uklonjen iz tvojeg popisa
spremljenih
Video has been saved: Video je spremljen
Save Video: Spremi video
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:
@ -588,10 +632,10 @@ Tooltips:
Player Settings: Player Settings:
Default Video Format: Postavi formate za reprodukciju videa. Dash formati mogu Default Video Format: Postavi formate za reprodukciju videa. Dash formati mogu
reproducirati višu kvalitetu slike. Stari formati su ograničeni na 720 p, ali reproducirati višu kvalitetu slike. Stari formati su ograničeni na 720 p, ali
su zato brži. Prijenosi audioformata sadrže samo audiosnimke su zato brži. Audioformati sadrže samo audiosnimke
Proxy Videos Through Invidious: Za reprodukciju videa povezat će se s Invidiousom Proxy Videos Through Invidious: Za reprodukciju videa povezat će se s Invidiousom
umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja
Force Local Backend for Legacy Formats: Radi samo, kad postaviš Invidious kao Force Local Backend for Legacy Formats: Radi samo, kad se Invidious postavi kao
standardno sučelje. Kad je aktivirano, lokalno sučelje će pokretati i koristiti standardno sučelje. Kad je aktivirano, lokalno sučelje će pokretati i koristiti
stare formate umjesto onih koje dostavlja Invidious. Pomaže u slučajevima, kad stare formate umjesto onih koje dostavlja Invidious. Pomaže u slučajevima, kad
je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena

View File

@ -71,6 +71,7 @@ Search Filters:
Fetching results. Please wait: 'Eredmények lekérése. Kis türelmet kérünk' Fetching results. Please wait: 'Eredmények lekérése. Kis türelmet kérünk'
Fetch more results: 'További eredmények lekérése' Fetch more results: 'További eredmények lekérése'
# Sidebar # Sidebar
There are no more results for this search: Nincs több találat erre a keresésre
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Feliratkozások' Subscriptions: 'Feliratkozások'
@ -90,6 +91,13 @@ Most Popular: 'Legnépszerűbbek'
Playlists: 'Lejátszási listák' Playlists: 'Lejátszási listák'
User Playlists: User Playlists:
Your Playlists: 'A lejátszási listáid' Your Playlists: 'A lejátszási listáid'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: A
mentett videók üresek. Kattintson a videó sarkában található mentés gombra, hogy
itt szerepeljen
Playlist Message: Ez az oldal nem tükrözi a teljesen működő lejátszási listákat.
Csak azokat a videókat sorolja fel, amelyeket Ön elmentett vagy a kedvencek közé
helyezett. A munka befejezése után az összes itt található videó átkerül a „Kedvencek”
lejátszási listára.
History: History:
# On History Page # On History Page
History: 'Előzmények' History: 'Előzmények'
@ -125,6 +133,8 @@ Settings:
(Alapértelmezés: https://invidious.snopyta.org)' (Alapértelmezés: https://invidious.snopyta.org)'
Region for Trending: 'Népszerű területe' Region for Trending: 'Népszerű területe'
#! List countries #! List countries
View all Invidious instance information: Az Invidious példány összes tájékoztatásának
megtekintése
Theme Settings: Theme Settings:
Theme Settings: 'Téma beállítások' Theme Settings: 'Téma beállítások'
Match Top Bar with Main Color: 'Illessze a felső sávot a fő színnel' Match Top Bar with Main Color: 'Illessze a felső sávot a fő színnel'
@ -242,6 +252,7 @@ Settings:
Unknown data key: 'Ismeretlen adatkulcs' Unknown data key: 'Ismeretlen adatkulcs'
How do I import my subscriptions?: 'Hogyan lehet importálni feliratkozásaimmal?' How do I import my subscriptions?: 'Hogyan lehet importálni feliratkozásaimmal?'
Check for Legacy Subscriptions: Örökölt feliratkozások keresése Check for Legacy Subscriptions: Örökölt feliratkozások keresése
Manage Subscriptions: Feliratkozások kezelése
Advanced Settings: Advanced Settings:
Advanced Settings: 'További beállítások' Advanced Settings: 'További beállítások'
Enable Debug Mode (Prints data to the console): 'Hibakeresési mód engedélyezése Enable Debug Mode (Prints data to the console): 'Hibakeresési mód engedélyezése
@ -284,6 +295,20 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: Az The app needs to restart for changes to take effect. Restart and apply change?: Az
alkalmazásnak újra kell indulnia, hogy a változtatások életbe lépjenek. Indítsa alkalmazásnak újra kell indulnia, hogy a változtatások életbe lépjenek. Indítsa
újra és alkalmazza a módosítást? újra és alkalmazza a módosítást?
Proxy Settings:
City: Helység
Region: Körzet
Country: Ország
Ip: IP-cím
Your Info: Az Ön adatai
Clicking on Test Proxy will send a request to: 'A Meghatalmazás-ellenőrzés gombra
kattintva kérést küld a következő címre:'
Test Proxy: Meghatalmazás-ellenőrzés
Proxy Port Number: Meghatalmazás kikötőszáma
Proxy Host: Meghatalmazás gazdaszámítógép
Proxy Protocol: Meghatalmazás protokoll
Enable Tor / Proxy: Tor/meghatalmazás engedélyezése
Proxy Settings: Meghatalmazás beállításai
About: About:
#On About page #On About page
About: 'Névjegy' About: 'Névjegy'

View File

@ -70,6 +70,8 @@ Search Filters:
Fetching results. Please wait: 'Mengambil hasil. Silakan tunggu' Fetching results. Please wait: 'Mengambil hasil. Silakan tunggu'
Fetch more results: 'Ambil lebih banyak hasil' Fetch more results: 'Ambil lebih banyak hasil'
# Sidebar # Sidebar
There are no more results for this search: Tidak ada hasil lagi untuk pencarian
ini
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Langganan' Subscriptions: 'Langganan'
@ -87,6 +89,8 @@ Most Popular: 'Paling Populer'
Playlists: 'Daftar Putar' Playlists: 'Daftar Putar'
User Playlists: User Playlists:
Your Playlists: 'Daftar Putar anda' Your Playlists: 'Daftar Putar anda'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Penyimpanan
video Anda kosong. Klik tombol simpan pada pojok video untuk menyimpannya di sini
History: History:
# On History Page # On History Page
History: 'Riwayat' History: 'Riwayat'
@ -122,6 +126,7 @@ Settings:
(Bawaan: https://invidious.snopyta.org)' (Bawaan: https://invidious.snopyta.org)'
Region for Trending: 'Wilayah untuk Sedang Tren' Region for Trending: 'Wilayah untuk Sedang Tren'
#! List countries #! List countries
View all Invidious instance information: Lihat semua informasi situs Invidious
Theme Settings: Theme Settings:
Theme Settings: 'Pengaturan Tema' Theme Settings: 'Pengaturan Tema'
Match Top Bar with Main Color: 'Samakan Bilah Atas dengan Warna Utama' Match Top Bar with Main Color: 'Samakan Bilah Atas dengan Warna Utama'

View File

@ -62,6 +62,7 @@ Search Filters:
Fetching results. Please wait: '結果の取得中。お待ちください' Fetching results. Please wait: '結果の取得中。お待ちください'
Fetch more results: 'もっと見る' Fetch more results: 'もっと見る'
# Sidebar # Sidebar
There are no more results for this search: 検索結果は、これ以上ありません
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: '登録チャンネル' Subscriptions: '登録チャンネル'
@ -78,6 +79,8 @@ Most Popular: '人気'
Playlists: '再生リスト' Playlists: '再生リスト'
User Playlists: User Playlists:
Your Playlists: 'あなたの再生リスト' Your Playlists: 'あなたの再生リスト'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックする
Playlist Message: このページは、完全に動作するプレイリストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」のプレイリストに移動します。
History: History:
# On History Page # On History Page
History: '履歴' History: '履歴'
@ -112,6 +115,7 @@ Settings:
#! List countries #! List countries
Check for Latest Blog Posts: 新着ブログの確認 Check for Latest Blog Posts: 新着ブログの確認
Check for Updates: 最新版の確認 Check for Updates: 最新版の確認
View all Invidious instance information: すべての Invidious インスタンス情報の表示
Theme Settings: Theme Settings:
Theme Settings: 'テーマの設定' Theme Settings: 'テーマの設定'
Match Top Bar with Main Color: '上部バーをメイン カラーと同じにする' Match Top Bar with Main Color: '上部バーをメイン カラーと同じにする'
@ -250,6 +254,7 @@ Settings:
Data Settings: データ設定 Data Settings: データ設定
One or more subscriptions were unable to be imported: いくつかの登録チャンネルはインポートできませんでした One or more subscriptions were unable to be imported: いくつかの登録チャンネルはインポートできませんでした
Check for Legacy Subscriptions: 旧型式の登録チャンネルの確認 Check for Legacy Subscriptions: 旧型式の登録チャンネルの確認
Manage Subscriptions: 登録チャンネルの管理
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: ライブチャットの非表示 Hide Live Chat: ライブチャットの非表示
Hide Popular Videos: 人気動画の非表示 Hide Popular Videos: 人気動画の非表示
@ -262,6 +267,20 @@ Settings:
Distraction Free Settings: 集中モード Distraction Free Settings: 集中モード
Hide Active Subscriptions: 使用中の登録チャンネルの非表示 Hide Active Subscriptions: 使用中の登録チャンネルの非表示
The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか? The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: ネットワーク情報の取得中にエラーが発生しました。プロキシーを正しく設定してますか?
City: 都市名
Region: 地域
Country: 国名
Ip: Ip
Your Info: あなたの情報
Test Proxy: テスト プロキシー
Clicking on Test Proxy will send a request to: テスト プロキシーをクリックして、送信するリクエスト先は
Proxy Port Number: プロキシーのポート番号
Proxy Host: プロキシーのホスト
Proxy Protocol: プロキシーのプロトコル
Enable Tor / Proxy: Tor / プロキシーの有効化
Proxy Settings: プロキシーの設定
About: About:
#On About page #On About page
About: 'About' About: 'About'
@ -290,6 +309,30 @@ About:
Latest FreeTube News: 'FreeTube 新着情報' Latest FreeTube News: 'FreeTube 新着情報'
#On Channel Page #On Channel Page
Donate: 寄付
FreeTube is made possible by: FreeTube が実現できているのは
these people and projects: これらの人々とプロジェクト
Credits: クレジット
Translate: 翻訳
room rules: ルームの規則
Please read the: ご覧ください
Chat on Matrix: Matrix でチャット
Mastodon: Mastodon
Email: メール アドレス
Blog: ブログ
Website: WEB サイト
Please check for duplicates before posting: 投稿する前に重複を確認してください
GitHub issues: GitHub の課題ツール
Report a problem: 問題の報告
FAQ: よくある質問
FreeTube Wiki: FreeTube の Wiki
Help: ヘルプ
GitHub releases: GitHub リリース
Downloads / Changelog: ダウンロード / 変更ログ
View License: ライセンスの表示
Licensed under the AGPLv3: AGPLv3 の下でライセンス供与
Source code: ソースコード
Beta: ベータ
Channel: Channel:
Subscriber: '人の登録者' Subscriber: '人の登録者'
Subscribers: '人の登録者' Subscribers: '人の登録者'
@ -399,6 +442,9 @@ Video:
Open Channel in YouTube: YouTube でチャンネル表示 Open Channel in YouTube: YouTube でチャンネル表示
Started streaming on: ライブ配信の開始 Started streaming on: ライブ配信の開始
Streamed on: ライブ配信 Streamed on: ライブ配信
Video has been removed from your saved list: 動画を保存一覧から削除しました
Video has been saved: ビデオを保存しました
Save Video: 動画の保存
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -74,20 +74,22 @@ Subscriptions:
Subscriptions: '구독' Subscriptions: '구독'
Latest Subscriptions: '최근 구독' Latest Subscriptions: '최근 구독'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '이 This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '이
프로필에서 너무 많이 구독했습니다. RSS가 제한을 피할 수 있게 강제합니다' 프로필에서 최대 구독 제한을 초과 하였습니다. RSS 피드 구독 수신으로 전환 합니다.'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '구독한 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '구독한
채널이 없습니다. 여기서 채널을 보려면 구독을 추가하세요.' 채널이 없습니다. 구독 피드를 보려면 원하시는 채널을 구독하세요'
'Getting Subscriptions. Please wait.': '구독중입니다. 잠시만 기다려주세요.' 'Getting Subscriptions. Please wait.': '구독 목록을 가져오는 중입니다. 잠시만 기다려 주세요.'
Refresh Subscriptions: '구독 새로고침' Refresh Subscriptions: '구독 피드 새로 고침'
Load More Videos: '더 많은 동영상 불러오기' Load More Videos: '더 많은 동영상 불러오기'
Trending: '트렌' Trending: '트렌'
Most Popular: '인기 동영상' Most Popular: '인기 동영상'
Playlists: '플레이리스트' Playlists: '재생 목록'
User Playlists: User Playlists:
Your Playlists: '나의 플레이리스트' Your Playlists: '나의 재생 목록'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 재생
목록이 없습니다. 영상의 오른쪽 아래에 있는 저장 버튼을 사용하여 재생 목록에 영상을 추가하세요
History: History:
# On History Page # On History Page
History: '기록' History: '재생 기록'
Watch History: '시청 기록' Watch History: '시청 기록'
Your history list is currently empty.: '기록이 없습니다.' Your history list is currently empty.: '기록이 없습니다.'
Settings: Settings:

View File

@ -1,5 +1,5 @@
# Put the name of your locale in the same language # Put the name of your locale in the same language
Locale Name: 'کوردی' Locale Name: 'kur-ckb'
FreeTube: 'فریتیوب' FreeTube: 'فریتیوب'
# Currently on Subscriptions, Playlists, and History # Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >- 'This part of the app is not ready yet. Come back later when progress has been made.': >-
@ -33,7 +33,7 @@ Forward: 'چونەپێشەوە'
Version $ is now available! Click for more details: 'ڤێرژنی $ ئێستا بەردەستە! کلیک Version $ is now available! Click for more details: 'ڤێرژنی $ ئێستا بەردەستە! کلیک
بکە بۆ زانیاری زیاتر' بکە بۆ زانیاری زیاتر'
Download From Site: 'دایبەزێنە لە سایتەکەوە' Download From Site: 'دایبەزێنە لە سایتەکەوە'
A new blog is now available, $. Click to view more: 'بڵۆگێکە نوێ بەردەستە، $. کلیک A new blog is now available, $. Click to view more: 'بڵۆگێکی نوێ بەردەستە، $. کلیک
بکە بۆ بینینی زیاتر' بکە بۆ بینینی زیاتر'
# Search Bar # Search Bar
@ -43,7 +43,7 @@ Search Filters:
Search Filters: 'فیلتەری گەڕان' Search Filters: 'فیلتەری گەڕان'
Sort By: Sort By:
Sort By: 'بگەڕی بە' Sort By: 'بگەڕی بە'
Most Relevant: '' Most Relevant: 'گرنگترین'
Rating: 'ڕەیتینگ' Rating: 'ڕەیتینگ'
Upload Date: 'کاتی بڵاوکردنەوە' Upload Date: 'کاتی بڵاوکردنەوە'
View Count: 'ژماری بینراو' View Count: 'ژماری بینراو'
@ -80,25 +80,35 @@ Subscriptions:
'Getting Subscriptions. Please wait.': 'بەشداریکراوەکان وەردەگیرێن. تکایە چاوەڕوان 'Getting Subscriptions. Please wait.': 'بەشداریکراوەکان وەردەگیرێن. تکایە چاوەڕوان
بە.' بە.'
Refresh Subscriptions: 'بەشداریکراوەکان تازە بکەرەوە' Refresh Subscriptions: 'بەشداریکراوەکان تازە بکەرەوە'
Trending: '' Load More Videos: ڤیدیۆی زیاتر بهێنە
Most Popular: '' This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: .ئەم
Playlists: '' پرۆفایلە ژمارەیەکی زۆری هەیە لە سەبسکریپشن. بۆ دورکەوتنەوە لە سنوور دانان (رسس)
بەکاردەهێندرێت
Trending: 'زۆر باسکراو'
Most Popular: 'بەناوبانگترین'
Playlists: 'پلەیلیست'
User Playlists: User Playlists:
Your Playlists: '' Your Playlists: 'پلیەلیستەکانت'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: ڤیدیۆ
سەڤکراوەکانت بەتاڵن. کلیک لە دوگمەی سەیڤ کە لە سووچی ڤیدیۆیەک بۆ ئەوەی لێرە لیستکرێت
Playlist Message: ئەم پەیجە شێوەی کۆتایی پلەیلیستەکە دەرناخات. تەنها ڤیدیۆت پیشان
دەدات کە سیڤت کردووە یان فەیڤرتت کردووە. کاتێک کارەکە تەواو بووە، گشت ئەم ڤیدیۆیانەی
لێرەدان دەبرێنە لیستی 'فەیڤرتەکان'.
History: History:
# On History Page # On History Page
History: '' History: 'مێژوو'
Watch History: '' Watch History: 'لیستی سەیرکراو'
Your history list is currently empty.: '' Your history list is currently empty.: 'لیستی سەیرکراوەکانت بەتاڵە.'
Settings: Settings:
# On Settings Page # On Settings Page
Settings: '' Settings: 'دەستکاریکردن'
General Settings: General Settings:
General Settings: '' General Settings: 'دەستکاریکردنی گشتی'
Check for Updates: '' Check for Updates: 'بزانە تازەکاری هاتووە'
Check for Latest Blog Posts: '' Check for Latest Blog Posts: 'چێکی تازەترین بلۆگ بکە'
Fallback to Non-Preferred Backend on Failure: '' Fallback to Non-Preferred Backend on Failure: 'گەڕانەوە بۆ سیستەمە ناخوازراوەکە
Enable Search Suggestions: '' لەکاتی فەشەلدا'
Enable Search Suggestions: 'پێشنیارکردن بەکاربخە لەکاتی گەڕاندا'
Default Landing Page: '' Default Landing Page: ''
Locale Preference: '' Locale Preference: ''
Preferred API Backend: Preferred API Backend:
@ -216,10 +226,11 @@ Settings:
History object has insufficient data, skipping item: '' History object has insufficient data, skipping item: ''
All watched history has been successfully imported: '' All watched history has been successfully imported: ''
All watched history has been successfully exported: '' All watched history has been successfully exported: ''
Unable to read file: '' Unable to read file: 'ناتواندرێت فایلەکە بخوێندرێتەوە'
Unable to write file: '' Unable to write file: 'ناتواندریت فایلەکە بنوسرێت'
Unknown data key: '' Unknown data key: 'کلیلی داتای نەناسراو'
How do I import my subscriptions?: '' How do I import my subscriptions?: 'چۆن بەشدارییەکانم داخڵ بکەم؟'
Manage Subscriptions: بەشدارییەکانت رێکبخە
Advanced Settings: Advanced Settings:
Advanced Settings: '' Advanced Settings: ''
Enable Debug Mode (Prints data to the console): '' Enable Debug Mode (Prints data to the console): ''
@ -242,9 +253,28 @@ Settings:
#& Yes #& Yes
#& No #& No
Proxy Settings:
Error getting network information. Is your proxy configured properly?: کێشە لە
وەرگرتنی زانیاری نێتۆرک. ئایە پرۆکسێکەت بە رێکوپێکی رێکخراوە؟
City: شار
Region: ناوچە
Country: وڵات
Ip: ئەدرێسی ئەلکترۆنی
Your Info: زانیاریت
Test Proxy: تاقیکردنەوەی پرۆکسی
Clicking on Test Proxy will send a request to: کلیکردن لەسەر تێستی پرۆکسی داواکارییەک
دەنێریت بۆ
Proxy Port Number: ژمارەی پۆرتی پرۆکسی
Proxy Host: پرۆکسی بڵاوکەر
Proxy Protocol: پرۆتۆکۆڵی پڕۆکسی
Enable Tor / Proxy: تۆر/پرۆکسی بەکاربخە
Proxy Settings: گۆڕانکاری پرۆکسی
The app needs to restart for changes to take effect. Restart and apply change?: ئەم
ئەپڵیکەیشنە دەبێت دووبارە بکرێتەوە بۆ ئەوەی گۆڕانکارێکان بگانە ئەنجام. دووبارە
کردنەوە و چەسپکردنی گۆڕانکارێکان؟
About: About:
#On About page #On About page
About: '' About: 'دەربارە'
#& About #& About
'This software is FOSS and released under the GNU Affero General Public License v3.0.': '' 'This software is FOSS and released under the GNU Affero General Public License v3.0.': ''
@ -264,27 +294,51 @@ About:
Latest FreeTube News: '' Latest FreeTube News: ''
Donate: دۆنەیشن
these people and projects: ئەم کەسانە و پڕۆژانە
FreeTube is made possible by: فریتوب بونی هەیە بەهۆی
Translate: تەرجومە
room rules: یاسای ژوورەکە
Please read the: تکایە شتەکە بخوێنەوە
Chat on Matrix: Matrix موناقەشە کە لە
Mastodon: ماستۆدۆن
Email: نامەی ئەلکترۆنی
Blog: بلۆگ
Website: وێبسایت
Please check for duplicates before posting: تکایە چێک بکە بۆ دووبارە پێش پۆستکردن
GitHub issues: GitHub کێشاکانی
Report a problem: کێشەیەک ڕاگەیەنە
FAQ: پرسیارانەی زۆر دەکرێن
FreeTube Wiki: ویکی فریتیوب
Help: یارمەتی
GitHub releases: GitHub دەرچونەکانی
Downloads / Changelog: دابەزاندنەکان / لیستی گۆڕانکاری
View License: قەیدەکە پیشاندە
Licensed under the AGPLv3: AGPLv3 دەرکراوە لەژیر
Source code: سەرچاوەی کۆد
Beta: تاقیکارییە
Profile: Profile:
Profile Select: '' Profile Select: 'پرۆفایلەکە دیاریکە'
All Channels: '' All Channels: 'هەموو کەناڵەکان'
Profile Manager: '' Profile Manager: 'ڕێخەری پڕۆفایل'
Create New Profile: '' Create New Profile: 'پڕۆفایلێکی نوێ دروستبکە'
Edit Profile: '' Edit Profile: 'پڕۆفایل دەستکاری بکە'
Color Picker: '' Color Picker: 'ڕەنگ هەڵبژاردەر'
Custom Color: '' Custom Color: 'رەنگی تایبەت'
Profile Preview: '' Profile Preview: 'پڕۆفایل بیشاندە'
Create Profile: '' Create Profile: 'پرۆفایل دروستبکە'
Update Profile: '' Update Profile: 'پرۆفایل تازەبکەرەوە'
Make Default Profile: '' Make Default Profile: 'بیکە بە پڕۆفایلی ئەسایی'
Delete Profile: '' Delete Profile: 'پڕۆفایلەکە بسڕەوە'
Are you sure you want to delete this profile?: '' Are you sure you want to delete this profile?: 'ئایە دڵنیایت کە دەتەوێت ئەم پڕۆفایلە
All subscriptions will also be deleted.: '' بسڕیتەوە؟'
Profile could not be found: '' All subscriptions will also be deleted.: 'هەموو بەشداریکردنەکانیش بە هامەنشێوە دەسڕێنەوە.'
Your profile name cannot be empty: '' Profile could not be found: 'پڕۆفایلەکە ناتواندرێت بدۆزرێتەوە'
Profile has been created: '' Your profile name cannot be empty: 'ناوی پڕۆفایلەکەت نابێت بەتاڵبێت'
Profile has been updated: '' Profile has been created: 'پڕۆفایلەکە دروستکرا'
Your default profile has been set to $: '' Profile has been updated: 'پرۆفایلەکە تازەکرایەوە'
Removed $ from your profiles: '' Your default profile has been set to $: 'پرۆفایلە ئاساییەکەت دانراوە بۆ $'
Removed $ from your profiles: 'سڕاوەتەوە لە پرۆفایلەکانت $'
Your default profile has been changed to your primary profile: '' Your default profile has been changed to your primary profile: ''
$ is now the active profile: '' $ is now the active profile: ''
Subscription List: '' Subscription List: ''

View File

@ -83,6 +83,13 @@ Most Popular: 'Populair'
Playlists: 'Afspeellijsten' Playlists: 'Afspeellijsten'
User Playlists: User Playlists:
Your Playlists: 'Uw afspeellijsten' Your Playlists: 'Uw afspeellijsten'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Je
opgeslagen video's is leeg. Klik op de video opslaan knop in de hoek van een video
om het hier in de lijst te plaatsen
Playlist Message: Deze pagina is niet reflectief van volledig functionele afspeellijst.
Er worden alleen video's weergegeven die jij hebt opgeslagen of gefavoriet. Wanneer
we klaar zijn met de ontwikkeling van deze feature zullen al deze video's worden
gemigreerd naar de 'favorieten' afspeellijst.
History: History:
# On History Page # On History Page
History: 'Geschiedenis' History: 'Geschiedenis'
@ -95,7 +102,7 @@ Settings:
General Settings: 'Algemene instellingen' General Settings: 'Algemene instellingen'
Fallback to Non-Preferred Backend on Failure: 'Val terug op een Niet-Voorkeur Fallback to Non-Preferred Backend on Failure: 'Val terug op een Niet-Voorkeur
Backend bij falen' Backend bij falen'
Enable Search Suggestions: 'Schakel Zoek Suggesties in' Enable Search Suggestions: 'Zoeksuggesties Inschakelen'
Default Landing Page: 'Standaard Landingspagina' Default Landing Page: 'Standaard Landingspagina'
Locale Preference: 'Locale Voorkeur' Locale Preference: 'Locale Voorkeur'
Preferred API Backend: Preferred API Backend:
@ -270,6 +277,7 @@ Settings:
All watched history has been successfully imported: De bekeken geschiedenis is All watched history has been successfully imported: De bekeken geschiedenis is
met succes geïmporteerd met succes geïmporteerd
Check for Legacy Subscriptions: Controleer op Legacy Abonnementen Check for Legacy Subscriptions: Controleer op Legacy Abonnementen
Manage Subscriptions: Beheer Abonnementen
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: Verberg Live Chat Hide Live Chat: Verberg Live Chat
Hide Popular Videos: Verberg Populaire Video's Hide Popular Videos: Verberg Populaire Video's
@ -284,6 +292,22 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: De The app needs to restart for changes to take effect. Restart and apply change?: De
applicatie moet opnieuw opstarten om de veranderingen aan te brengen. Wilt u opnieuw applicatie moet opnieuw opstarten om de veranderingen aan te brengen. Wilt u opnieuw
opstarten? opstarten?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Fout bij
het opvragen van netwerk informatie. Is uw proxy correct geconfigureerd?
City: Stad
Region: Regio
Country: Land
Ip: Ip
Your Info: Uw Informatie
Test Proxy: Test Proxy
Clicking on Test Proxy will send a request to: Door op Test Proxy te klikken zal
er een request worden verstuurd naar
Proxy Port Number: Proxy Poortnummer
Proxy Host: Proxy Host
Proxy Protocol: Proxy Protocol
Enable Tor / Proxy: Tor / Proxy Inschakelen
Proxy Settings: Proxy Instellingen
About: About:
#On About page #On About page
About: 'Over' About: 'Over'
@ -316,6 +340,31 @@ About:
Latest FreeTube News: 'Laatste FreeTube nieuws' Latest FreeTube News: 'Laatste FreeTube nieuws'
#On Channel Page #On Channel Page
Donate: Doneer
these people and projects: deze mensen en project
FreeTube is made possible by: FreeTube is mogelijk gemaakt door
Credits: Met dank aan
Translate: Vertalen
room rules: room regels
Please read the: Lees alstublieft de
Chat on Matrix: Chat op Matrix
Mastodon: Mastodon
Email: Email
Blog: Blog
Website: Website
Please check for duplicates before posting: Controleer op duplicaten voordat u een
issue post
GitHub issues: GitHub issues
Report a problem: Rapporteer een probleem
FAQ: Veelgestelde vragen
FreeTube Wiki: FreeTube Wiki
Help: Hulp
GitHub releases: GitHub releases
Downloads / Changelog: Downloads / Changelog
View License: Bekijk Licentie
Licensed under the AGPLv3: Vrijgegeven onder de AGPLv3 licentie
Source code: Broncode
Beta: Beta
Channel: Channel:
Subscriber: 'Abonnee' Subscriber: 'Abonnee'
Subscribers: 'Abonnees' Subscribers: 'Abonnees'
@ -433,6 +482,10 @@ Video:
Open Channel in YouTube: Open Kanaal op YouTube Open Channel in YouTube: Open Kanaal op YouTube
Started streaming on: Gestart met streamen op Started streaming on: Gestart met streamen op
Streamed on: Gestreamd op Streamed on: Gestreamd op
Video has been removed from your saved list: Video is verwijderd uit uw opgeslagen
video's lijst
Video has been saved: Video is opgeslagen
Save Video: Video Opslaan
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -82,6 +82,13 @@ Most Popular: 'Popularne'
Playlists: 'Playlisty' Playlists: 'Playlisty'
User Playlists: User Playlists:
Your Playlists: 'Twoje playlisty' Your Playlists: 'Twoje playlisty'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Nie
masz zachowanych filmów. Kliknij przycisk „Zachowaj” w rogu filmu, aby został
tu wymieniony.
Playlist Message: Ta strona nie odzwierciedla w pełni działających playlist. Są
tu jedynie wymienione filmy, które zachowałeś lub oznaczyłeś jako ulubione. Kiedy
prace nad tą stroną zostaną zakończone, wszystkie filmy tu obecne zostaną przeniesione
do playlisty „Ulubione”.
History: History:
# On History Page # On History Page
History: 'Historia' History: 'Historia'
@ -269,7 +276,7 @@ Settings:
Select Import Type: Wybierz typ importu Select Import Type: Wybierz typ importu
Data Settings: Ustawienia danych Data Settings: Ustawienia danych
One or more subscriptions were unable to be imported: Nie można było zaimportować One or more subscriptions were unable to be imported: Nie można było zaimportować
conajmniej jednej subskrypcji co najmniej jednej subskrypcji
Check for Legacy Subscriptions: Sprawdź subskrypcje ze starej wersji Check for Legacy Subscriptions: Sprawdź subskrypcje ze starej wersji
Manage Subscriptions: Zarządzaj subskrypcjami Manage Subscriptions: Zarządzaj subskrypcjami
Distraction Free Settings: Distraction Free Settings:
@ -351,6 +358,22 @@ About:
Useful Links: Przydatne linki Useful Links: Przydatne linki
Help: Pomoc Help: Pomoc
Contact: Kontakt Contact: Kontakt
these people and projects: tym ludziom i projektom
Translate: Przetłumacz
room rules: zasady pokoju
Chat on Matrix: Czat na Matrix
Mastodon: Mastodon
Please read the: Proszę przeczytać
Please check for duplicates before posting: Proszę poszukać duplikatów przed wysłaniem
GitHub issues: problemy na GitHub
Report a problem: Zgłoś problem
FreeTube Wiki: Wiki FreeTube
GitHub releases: wydania na GitHub
Downloads / Changelog: Wydania / Lista zmian
View License: Zobacz licencję
Licensed under the AGPLv3: Na licencji AGPLv3
Source code: Kod źródłowy
FreeTube is made possible by: FreeTube powstał dzięki
Channel: Channel:
Subscriber: 'Subskrybent/ka' Subscriber: 'Subskrybent/ka'
Subscribers: 'subskrybentów' Subscribers: 'subskrybentów'
@ -469,6 +492,10 @@ Video:
Open Channel in YouTube: Otwórz kanał na stronie YouTube Open Channel in YouTube: Otwórz kanał na stronie YouTube
Started streaming on: Rozpoczęto transmitowanie dnia Started streaming on: Rozpoczęto transmitowanie dnia
Streamed on: Transmitowane dnia Streamed on: Transmitowane dnia
Video has been removed from your saved list: Film został usunięty z twojej listy
zachowanych
Video has been saved: Film został zachowany
Save Video: Zachowaj film
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -63,6 +63,8 @@ Search Filters:
Fetching results. Please wait: 'Načítavajú sa výsledky. Prosím čakajte' Fetching results. Please wait: 'Načítavajú sa výsledky. Prosím čakajte'
Fetch more results: 'Načítať viac výsledkov' Fetch more results: 'Načítať viac výsledkov'
# Sidebar # Sidebar
There are no more results for this search: Pre toto hľadanie nie sú k dispozícii
žiadne ďalšie výsledky
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Odbery' Subscriptions: 'Odbery'
@ -80,6 +82,11 @@ Most Popular: 'Najpopulárnejšie'
Playlists: 'Zoznamy' Playlists: 'Zoznamy'
User Playlists: User Playlists:
Your Playlists: 'Vaše zoznamy' Your Playlists: 'Vaše zoznamy'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vaše
uložené videá sú prázdne. Kliknutím na tlačidlo uložiť v rohu videa ho tu zobrazíte
Playlist Message: Táto stránka neodráža plne funkčné zoznamy videí. Uvádza iba zoznam
videí, ktoré ste uložili alebo zaradili medzi obľúbené. Po dokončení práce sa
všetky videá, ktoré sa tu nachádzajú, migrujú do zoznamu „Obľúbené“.
History: History:
# On History Page # On History Page
History: 'História' History: 'História'
@ -252,6 +259,7 @@ Settings:
Select Export Type: Vybrať typ exportu Select Export Type: Vybrať typ exportu
Select Import Type: Vybrať typ importu Select Import Type: Vybrať typ importu
Data Settings: Nastavenia dát Data Settings: Nastavenia dát
Manage Subscriptions: Spravovať odbery
Distraction Free Settings: Distraction Free Settings:
Hide Live Chat: Skryť živý chat Hide Live Chat: Skryť živý chat
Hide Popular Videos: Skryť populárne videá Hide Popular Videos: Skryť populárne videá
@ -262,6 +270,7 @@ Settings:
Hide Video Likes And Dislikes: Skryť palce hore a dolu na videách Hide Video Likes And Dislikes: Skryť palce hore a dolu na videách
Hide Video Views: Skryť počet zhliadnutí Hide Video Views: Skryť počet zhliadnutí
Distraction Free Settings: Nastavenia nerušenia Distraction Free Settings: Nastavenia nerušenia
Hide Active Subscriptions: Skryť aktívne odbery
Privacy Settings: Privacy Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Naozaj Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Naozaj
chcete odstrániť všetky odbery a profily? Toto je nenávratná akcia. chcete odstrániť všetky odbery a profily? Toto je nenávratná akcia.
@ -279,6 +288,22 @@ Settings:
Search cache has been cleared: Vyrovnávacia pamäť vyhľadávania bola vymazaná Search cache has been cleared: Vyrovnávacia pamäť vyhľadávania bola vymazaná
The app needs to restart for changes to take effect. Restart and apply change?: Aplikácia The app needs to restart for changes to take effect. Restart and apply change?: Aplikácia
požaduje reštartovanie aby sa prejavili zmeny. Reštartovať a aplikovať zmeny? požaduje reštartovanie aby sa prejavili zmeny. Reštartovať a aplikovať zmeny?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Chyba pri
získavaní informácií o sieti. Je váš server proxy správne nakonfigurovaný?
City: Mesto
Region: Región
Country: Krajina
Ip: Internetový Protokol
Your Info: Informácie o Vás
Test Proxy: Vyskúšať proxy
Clicking on Test Proxy will send a request to: Kliknutím na "Vyskúšať Proxy" pošlete
žiadosť do
Proxy Port Number: Číslo portu proxy servera
Proxy Host: Proxy Hosť
Proxy Protocol: Proxy Protokol
Enable Tor / Proxy: Povoliť Tor / server Proxy
Proxy Settings: Nastavenia servera proxy
About: About:
#On About page #On About page
About: 'O FreeTube' About: 'O FreeTube'
@ -311,6 +336,31 @@ About:
Latest FreeTube News: 'Najnovšie správy o FreeTube' Latest FreeTube News: 'Najnovšie správy o FreeTube'
#On Channel Page #On Channel Page
FreeTube Wiki: Wiki FreeTube
Help: Pomoc
GitHub releases: Vydania na GitHube
Downloads / Changelog: Súbory na stiahnutie / Zoznam zmien
View License: Zobraziť licenciu
Licensed under the AGPLv3: Na základe licencie AGPLv3
Beta: Testovacia verzia
Source code: Zdrojový kód
GitHub issues: Problémy z GitHubu
Report a problem: Nahlásiť problém
FAQ: Otázky a odpovede
Donate: Darujte
FreeTube is made possible by: FreeTube umožňujú
these people and projects: títo ľudia a projekty
Credits: Zásluhy
Translate: Preložiť
room rules: pravidlá miestností
Please read the: Prečítajte si
Chat on Matrix: Napíšte nám na Matrix-e
Mastodon: Mastodon
Email: Elektronická pošta
Blog: Blog
Website: Webstránka
Please check for duplicates before posting: Pred odoslaním prosím skontrolujte duplicitné
otázky
Channel: Channel:
Subscriber: 'Odberateľ' Subscriber: 'Odberateľ'
Subscribers: 'Odberateľov' Subscribers: 'Odberateľov'
@ -341,6 +391,7 @@ Channel:
Added channel to your subscriptions: Kanál bol pridaný k vašim odberom Added channel to your subscriptions: Kanál bol pridaný k vašim odberom
Channel has been removed from your subscriptions: Kanál bol odstránený z vašich Channel has been removed from your subscriptions: Kanál bol odstránený z vašich
odberov odberov
Removed subscription from $ other channel(s): Odstránené predplatné z $ iných kanálov
Video: Video:
Mark As Watched: 'Označiť ako zhliadnuté' Mark As Watched: 'Označiť ako zhliadnuté'
Remove From History: 'Vymazať z histórie' Remove From History: 'Vymazať z histórie'
@ -352,7 +403,7 @@ Video:
Copy YouTube Embedded Player Link: 'Skopírovať link na vložený prehrávač Youtube' Copy YouTube Embedded Player Link: 'Skopírovať link na vložený prehrávač Youtube'
Open in Invidious: 'Otvoriť v Invidious' Open in Invidious: 'Otvoriť v Invidious'
Copy Invidious Link: 'Skopírovať Invidious linku' Copy Invidious Link: 'Skopírovať Invidious linku'
View: '' View: 'Pozrieť'
Views: 'Zhliadnutí' Views: 'Zhliadnutí'
# Context is "X People Watching" # Context is "X People Watching"
Watching: 'Sleduje' Watching: 'Sleduje'
@ -426,6 +477,9 @@ Video:
Open Channel in Invidious: Otvoriť kanál v Invidious Open Channel in Invidious: Otvoriť kanál v Invidious
Copy YouTube Channel Link: Skopírovať Youtube link na kanál Copy YouTube Channel Link: Skopírovať Youtube link na kanál
Open Channel in YouTube: Otvoriť kanál v Youtube Open Channel in YouTube: Otvoriť kanál v Youtube
Video has been removed from your saved list: Video odstránené z uložených
Video has been saved: Video uložené
Save Video: Uložiť Video
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -87,6 +87,12 @@ Most Popular: 'Mest populära'
Playlists: 'Spellistor' Playlists: 'Spellistor'
User Playlists: User Playlists:
Your Playlists: 'Dina spellistor' Your Playlists: 'Dina spellistor'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Dina
sparade videor är tomma. Klicka på sparknappen på hörnet av en video för att få
den listad här
Playlist Message: Den här sidan är inte reflekterande av fullt fungerande spellistor.
Den listar bara videor som du har sparat eller favorited. När arbetet är klart
kommer alla videor som för närvarande här att migreras till en spellista för 'Favoriter'.
History: History:
# On History Page # On History Page
History: 'Historik' History: 'Historik'
@ -237,6 +243,7 @@ Settings:
Unknown data key: 'Okänd datanyckel' Unknown data key: 'Okänd datanyckel'
How do I import my subscriptions?: 'Hur importerar jag mina prenumerationer?' How do I import my subscriptions?: 'Hur importerar jag mina prenumerationer?'
Check for Legacy Subscriptions: Sök efter Legacy prenumerationer Check for Legacy Subscriptions: Sök efter Legacy prenumerationer
Manage Subscriptions: Hantera prenumerationer
Advanced Settings: Advanced Settings:
Advanced Settings: 'Avancerade inställningar' Advanced Settings: 'Avancerade inställningar'
Enable Debug Mode (Prints data to the console): 'Aktivera felsökningsläge (Skriver Enable Debug Mode (Prints data to the console): 'Aktivera felsökningsläge (Skriver
@ -274,8 +281,25 @@ Settings:
Hide Channel Subscribers: Dölj kanalprenumeranter Hide Channel Subscribers: Dölj kanalprenumeranter
Hide Video Views: Dölj videovisningar Hide Video Views: Dölj videovisningar
Distraction Free Settings: Distraktionsfri Distraction Free Settings: Distraktionsfri
Hide Active Subscriptions: Dölj aktiva prenumerationer
The app needs to restart for changes to take effect. Restart and apply change?: Starta The app needs to restart for changes to take effect. Restart and apply change?: Starta
om FreeTube nu för att tillämpa ändringarna? om FreeTube nu för att tillämpa ändringarna?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Fel uppstod
när nätverksinformationen skulle komma. Är din proxy konfigurerad på rätt sätt?
City: Stad
Region: Område
Country: Land
Ip: IP
Your Info: Din info
Test Proxy: Testa proxy
Clicking on Test Proxy will send a request to: Om du klickar på TestProxy skickas
en begäran till
Proxy Port Number: Proxy-portnummer
Proxy Host: Proxy Host
Proxy Protocol: Proxy-protokoll
Enable Tor / Proxy: Aktivera Tor / Proxy
Proxy Settings: Proxy
About: About:
#On About page #On About page
About: 'Om' About: 'Om'
@ -307,6 +331,31 @@ About:
Latest FreeTube News: 'Senaste FreeTube Nyheter' Latest FreeTube News: 'Senaste FreeTube Nyheter'
Donate: Donera
these people and projects: dessa människor och projekt
FreeTube is made possible by: FreeTube möjliggörs av
Credits: Krediter
Translate: Översätta
room rules: rumsregler
Please read the: Vänligen läs
Chat on Matrix: Chatta på Matrix
Mastodon: Mastodon
Email: E-post
Blog: Blogg
Website: Webbsida
Please check for duplicates before posting: Vänligen kontrollera om dubbletter innan
du postar
GitHub issues: GitHub-problem
Report a problem: Rapportera ett problem
FAQ: Frågor och svar
FreeTube Wiki: FreeTube Wiki
Help: Hjälp
GitHub releases: GitHub releases
Downloads / Changelog: Nedladdningar / Changelog
View License: Visa licens
Licensed under the AGPLv3: Licensierad under AGPLv3
Source code: källkod
Beta: Beta
Profile: Profile:
Profile Select: 'Välj profil' Profile Select: 'Välj profil'
All Channels: 'Alla kanaler' All Channels: 'Alla kanaler'
@ -463,6 +512,12 @@ Video:
Open Channel in Invidious: Öppna kanalen i Invidious Open Channel in Invidious: Öppna kanalen i Invidious
Copy YouTube Channel Link: Kopiera YouTube-kanallänk Copy YouTube Channel Link: Kopiera YouTube-kanallänk
Open Channel in YouTube: Öppna kanal i YouTube Open Channel in YouTube: Öppna kanal i YouTube
Started streaming on: Började streamas på
Streamed on: Strömmas på
Video has been removed from your saved list: Videon har tagits bort från din sparade
lista
Video has been saved: Videon har sparats
Save Video: Spara video
Videos: Videos:
#& Sort By #& Sort By
Sort By: Sort By:

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'Sonuçlar yükleniyor. Lütfen bekleyin' Fetching results. Please wait: 'Sonuçlar yükleniyor. Lütfen bekleyin'
Fetch more results: 'Daha fazla sonuç yükle' Fetch more results: 'Daha fazla sonuç yükle'
# Sidebar # Sidebar
There are no more results for this search: Bu arama için başka sonuç yok
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: 'Abonelikler' Subscriptions: 'Abonelikler'
@ -124,10 +125,11 @@ Settings:
Beginning: 'Başlangıç' Beginning: 'Başlangıç'
Middle: 'Orta' Middle: 'Orta'
End: 'Bitiş' End: 'Bitiş'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious Oluşumu 'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious Örneği
(Varsayılan https://invidious.snopyta.org)' (Varsayılan https://invidious.snopyta.org)'
Region for Trending: 'Trendler İçin Ülke Tercihi' Region for Trending: 'Trendler İçin Bölge Tercihi'
#! List countries #! List countries
View all Invidious instance information: Tüm Invidious örnek bilgilerini görüntüle
Theme Settings: Theme Settings:
Theme Settings: 'Tema Ayarları' Theme Settings: 'Tema Ayarları'
Match Top Bar with Main Color: 'Üst Barı Ana Renk ile Eşleştir' Match Top Bar with Main Color: 'Üst Barı Ana Renk ile Eşleştir'
@ -135,9 +137,9 @@ Settings:
Base Theme: 'Uygulama Teması' Base Theme: 'Uygulama Teması'
Black: 'Siyah' Black: 'Siyah'
Dark: 'Koyu' Dark: 'Koyu'
Light: 'Aydınlık' Light: 'Açık'
Main Color Theme: Main Color Theme:
Main Color Theme: 'Ana Renk' Main Color Theme: 'Ana Renk Teması'
Red: 'Kırmızı' Red: 'Kırmızı'
Pink: 'Pembe' Pink: 'Pembe'
Purple: 'Mor' Purple: 'Mor'
@ -154,7 +156,7 @@ Settings:
Amber: 'Kehribar Rengi' Amber: 'Kehribar Rengi'
Orange: 'Turuncu' Orange: 'Turuncu'
Deep Orange: 'Koyu Turuncu' Deep Orange: 'Koyu Turuncu'
Secondary Color Theme: 'İkincil Renk' Secondary Color Theme: 'İkincil Renk Teması'
#* Main Color Theme #* Main Color Theme
UI Scale: Kullanıcı Arayüzü Ölçeği UI Scale: Kullanıcı Arayüzü Ölçeği
Expand Side Bar by Default: Yan Çubuğu Öntanımlı Olarak Genişlet Expand Side Bar by Default: Yan Çubuğu Öntanımlı Olarak Genişlet
@ -173,7 +175,7 @@ Settings:
Default Playback Rate: 'Varsayılan Oynatma Hızı' Default Playback Rate: 'Varsayılan Oynatma Hızı'
Default Video Format: Default Video Format:
Default Video Format: 'Varsayılan Video Biçimi' Default Video Format: 'Varsayılan Video Biçimi'
Dash Formats: 'Dash Biçimi' Dash Formats: 'Dash Biçimleri'
Legacy Formats: 'Eski Biçimler' Legacy Formats: 'Eski Biçimler'
Audio Formats: 'Ses Biçimi' Audio Formats: 'Ses Biçimi'
Default Quality: Default Quality:
@ -352,6 +354,23 @@ About:
Useful Links: Faydalı Bağlantılar Useful Links: Faydalı Bağlantılar
Help: Yardım Help: Yardım
Contact: İletişim Contact: İletişim
these people and projects: bu kişiler ve projeler
FreeTube is made possible by: FreeTube'e katkıda bulunanlar
Translate: Çevir
room rules: oda kuralları
Please read the: Lütfen okuyun
Chat on Matrix: Matrix'te sohbet et
Mastodon: Mastodon
Please check for duplicates before posting: Lütfen göndermeden önce yinelenmeleri
denetleyin
GitHub issues: GitHub sorunları
Report a problem: Sorun bildir
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub yayınları
Downloads / Changelog: İndirmeler / Değişiklikler
View License: Lisansı Görüntüle
Licensed under the AGPLv3: AGPLv3 altında lisanslanmıştır
Source code: Kaynak kodları
Profile: Profile:
Profile Select: 'Profil Seçimi' Profile Select: 'Profil Seçimi'
All Channels: 'Tüm Kanallar' All Channels: 'Tüm Kanallar'
@ -625,9 +644,9 @@ Tooltips:
tarafından döndürülen videolar ülke kısıtlamaları nedeniyle oynatılmadığında tarafından döndürülen videolar ülke kısıtlamaları nedeniyle oynatılmadığında
yardımcı olur yardımcı olur
General Settings: General Settings:
Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious sunucusu. Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious örneği.
Aralarından seçim yapabileceğiniz herkese açık sunucuların bir listesini görmek Aralarından seçim yapabileceğiniz herkese açık örneklerin bir listesini görmek
için geçerli sunucuyu temizleyin için geçerli örneği temizleyin
Thumbnail Preference: FreeTube'daki tüm küçük resimler, öntanımlı küçük resim Thumbnail Preference: FreeTube'daki tüm küçük resimler, öntanımlı küçük resim
yerine videonun bir karesiyle değiştirilecektir yerine videonun bir karesiyle değiştirilecektir
Fallback to Non-Preferred Backend on Failure: Etkinleştirildiğinde, tercih ettiğiniz Fallback to Non-Preferred Backend on Failure: Etkinleştirildiğinde, tercih ettiğiniz

View File

@ -62,6 +62,7 @@ Search Filters:
Fetching results. Please wait: '擷取結果中。請稍候' Fetching results. Please wait: '擷取結果中。請稍候'
Fetch more results: '擷取更多結果' Fetch more results: '擷取更多結果'
# Sidebar # Sidebar
There are no more results for this search: 此搜尋無更多結果
Subscriptions: Subscriptions:
# On Subscriptions Page # On Subscriptions Page
Subscriptions: '訂閱' Subscriptions: '訂閱'
@ -319,6 +320,22 @@ About:
Useful Links: 有用連結 Useful Links: 有用連結
Help: 說明 Help: 說明
Contact: 聯絡 Contact: 聯絡
these people and projects: 這些人與專案
FreeTube is made possible by: FreeTube 被做出來是因為
Translate: 翻譯
room rules: 聊天室規則
Please read the: 請閱讀
Chat on Matrix: 在 Matrix 上聊天
Mastodon: Mastodon
Please check for duplicates before posting: 張貼前請檢查有無重複
GitHub issues: GitHub 議題
Report a problem: 回報問題
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub 版本
Downloads / Changelog: 下載 / 變更紀錄
View License: 檢視授權條款
Licensed under the AGPLv3: 以 AGPLv3 授權
Source code: 原始碼
Channel: Channel:
Subscriber: '訂閱者' Subscriber: '訂閱者'
Subscribers: '訂閱者' Subscribers: '訂閱者'