Merge branch 'development' into patch-1
This commit is contained in:
commit
dddfbb357b
|
@ -0,0 +1,50 @@
|
||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: Project Board Automation
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [labeled, unlabeled, closed, deleted]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
assign-issues-to-projects:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# For bug reports
|
||||||
|
- name: New bug issue
|
||||||
|
uses: alex-page/github-project-automation-plus@v0.5.1
|
||||||
|
if: github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'bug')
|
||||||
|
with:
|
||||||
|
project: Bug Reports
|
||||||
|
column: To assign
|
||||||
|
repo-token: ${{ secrets.PUSH_TOKEN }}
|
||||||
|
action: update
|
||||||
|
|
||||||
|
- name: Bug label removed
|
||||||
|
uses: alex-page/github-project-automation-plus@v0.5.1
|
||||||
|
if: github.event.action == 'unlabeled' || github.event.action == 'closed' || github.event.action == 'deleted'
|
||||||
|
with:
|
||||||
|
action: delete
|
||||||
|
project: Bug Reports
|
||||||
|
column: To assign
|
||||||
|
repo-token: ${{ secrets.PUSH_TOKEN }}
|
||||||
|
|
||||||
|
# For feature requests
|
||||||
|
- name: New feature issue
|
||||||
|
uses: alex-page/github-project-automation-plus@v0.5.1
|
||||||
|
if: github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'enhancement')
|
||||||
|
with:
|
||||||
|
project: Feature Requests
|
||||||
|
column: To assign
|
||||||
|
repo-token: ${{ secrets.PUSH_TOKEN }}
|
||||||
|
action: update
|
||||||
|
|
||||||
|
- name: Feature request label removed
|
||||||
|
uses: alex-page/github-project-automation-plus@v0.5.1
|
||||||
|
if: github.event.action == 'unlabeled' || github.event.action == 'closed' || github.event.action == 'deleted'
|
||||||
|
with:
|
||||||
|
action: delete
|
||||||
|
project: Feature Requests
|
||||||
|
column: To assign
|
||||||
|
repo-token: ${{ secrets.PUSH_TOKEN }}
|
|
@ -10734,9 +10734,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"y18n": {
|
"y18n": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
|
||||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yargs": {
|
"yargs": {
|
||||||
|
@ -11499,9 +11499,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"y18n": {
|
"y18n": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
|
||||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yargs": {
|
"yargs": {
|
||||||
|
@ -18293,18 +18293,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"youtube-suggest": {
|
"youtube-suggest": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/youtube-suggest/-/youtube-suggest-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/youtube-suggest/-/youtube-suggest-1.1.2.tgz",
|
||||||
"integrity": "sha512-nMkXJV24xe0QZ67YAfEtVfdGCtuyhOMcvX4GkO824TivwQbkHMNaWlMGlUkePSXCu2vPReP6nYhknoHzmD0/Aw==",
|
"integrity": "sha512-U1CrSIDf9q4H7lx84YiAPfGyMLIXDmSlOLrwcXBkGJFEUodzrD+ZSYMEpJK5UNVWyzE73yxvwGtqrV0dbNQ6LA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"node-fetch": "^2.6.0",
|
"node-fetch": "^2.6.0",
|
||||||
"smol-jsonp": "^1.0.0"
|
"smol-jsonp": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yt-channel-info": {
|
"yt-channel-info": {
|
||||||
"version": "1.3.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-2.0.0.tgz",
|
||||||
"integrity": "sha512-75ML9snDZhXSkaczR3mgcq6EyI2jjPYzjXcz5TV9C9gSRkhCv2gxVhJVPXfeUQuAa0YGySE3F1V0Yz2HyY3zfg==",
|
"integrity": "sha512-Qrd9ONv9NbVPGGwCWPDwuQds43iXcNQHMB4iE9VqBtDt9WuMKoZd6BvoZDT10QCKisknByO1XIkM1hxbKyZNnA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"querystring": "^0.2.0"
|
"querystring": "^0.2.0"
|
||||||
|
@ -18326,9 +18326,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yt-comment-scraper": {
|
"yt-comment-scraper": {
|
||||||
"version": "3.0.2",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-4.0.1.tgz",
|
||||||
"integrity": "sha512-vWg/2D0eCJ0DTRayBmxqjZdBXSjArDFp/UAlK/r9tOq+x89hyQwuvP5r5URzLeRXGyv0g0COXsNapZGQR5aaPA==",
|
"integrity": "sha512-5uReiiLnaBhTBBsTfxIYcoV62EATe8dXAkkUCkCG3pgLU+qty9iCjNQvSgY8tZhnCPNAPO+lJaxzbGJ3hJRm4g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"node-html-parser": "^2.0.2"
|
"node-html-parser": "^2.0.2"
|
||||||
|
@ -18377,9 +18377,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yt-trending-scraper": {
|
"yt-trending-scraper": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.1.2.tgz",
|
||||||
"integrity": "sha512-ElD3MIZ1ukjOcexYm5VIdLtY22hskrtHA9+8t/5Ox8CG7+vGlTJy2N5MUVAhh0ucoOl8cfkVrsuEUQbzXeABig==",
|
"integrity": "sha512-kRR/bBhNBq/GAvHDSdKE9MxJcwg+CxWb/JZtr2J3xZZ5UF3txdUc3zCLxqf+RRVcdJuObxEv0MgReCwspoFoAg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"axios": "^0.21.1"
|
"axios": "^0.21.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -46,9 +46,9 @@
|
||||||
"vuex": "^3.6.2",
|
"vuex": "^3.6.2",
|
||||||
"xml2json": "^0.12.0",
|
"xml2json": "^0.12.0",
|
||||||
"youtube-chat": "git+https://github.com/IcedCoffeee/youtube-chat.git",
|
"youtube-chat": "git+https://github.com/IcedCoffeee/youtube-chat.git",
|
||||||
"youtube-suggest": "^1.1.1",
|
"youtube-suggest": "^1.1.2",
|
||||||
"yt-channel-info": "^1.3.0",
|
"yt-channel-info": "^2.0.0",
|
||||||
"yt-comment-scraper": "^3.0.2",
|
"yt-comment-scraper": "^4.0.1",
|
||||||
"yt-dash-manifest-generator": "1.1.0",
|
"yt-dash-manifest-generator": "1.1.0",
|
||||||
"yt-trending-scraper": "^1.1.1",
|
"yt-trending-scraper": "^1.1.1",
|
||||||
"yt-xml2vtt": "^1.2.0",
|
"yt-xml2vtt": "^1.2.0",
|
||||||
|
|
|
@ -1,75 +1,150 @@
|
||||||
import { app, BrowserWindow, Menu, ipcMain, screen } from 'electron'
|
import { app, BrowserWindow, Menu, ipcMain, screen } from 'electron'
|
||||||
import { productName } from '../../package.json'
|
|
||||||
import Datastore from 'nedb'
|
import Datastore from 'nedb'
|
||||||
|
|
||||||
require('@electron/remote/main').initialize()
|
if (process.argv.includes('--version')) {
|
||||||
|
console.log(`v${app.getVersion()}`)
|
||||||
require('electron-context-menu')({
|
app.exit(0)
|
||||||
showSearchWithGoogle: false,
|
|
||||||
showSaveImageAs: true,
|
|
||||||
showCopyImageAddress: true,
|
|
||||||
prepend: (params, browserWindow) => []
|
|
||||||
})
|
|
||||||
|
|
||||||
const localDataStorage = app.getPath('userData') // Grabs the userdata directory based on the user's OS
|
|
||||||
|
|
||||||
const settingsDb = new Datastore({
|
|
||||||
filename: localDataStorage + '/settings.db',
|
|
||||||
autoload: true
|
|
||||||
})
|
|
||||||
|
|
||||||
// set app name
|
|
||||||
app.setName(productName)
|
|
||||||
|
|
||||||
// disable electron warning
|
|
||||||
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true'
|
|
||||||
const path = require('path')
|
|
||||||
const isDev = process.env.NODE_ENV === 'development'
|
|
||||||
const isDebug = process.argv.includes('--debug')
|
|
||||||
let mainWindow
|
|
||||||
let startupUrl
|
|
||||||
|
|
||||||
// CORS somehow gets re-enabled in Electron v9.0.4
|
|
||||||
// This line disables it.
|
|
||||||
// This line can possible be removed if the issue is fixed upstream
|
|
||||||
app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors')
|
|
||||||
|
|
||||||
app.commandLine.appendSwitch('enable-accelerated-video-decode')
|
|
||||||
app.commandLine.appendSwitch('ignore-gpu-blacklist')
|
|
||||||
|
|
||||||
// See: https://stackoverflow.com/questions/45570589/electron-protocol-handler-not-working-on-windows
|
|
||||||
// remove so we can register each time as we run the app.
|
|
||||||
app.removeAsDefaultProtocolClient('freetube')
|
|
||||||
|
|
||||||
// If we are running a non-packaged version of the app && on windows
|
|
||||||
if (isDev && process.platform === 'win32') {
|
|
||||||
// Set the path of electron.exe and your app.
|
|
||||||
// These two additional parameters are only available on windows.
|
|
||||||
app.setAsDefaultProtocolClient('freetube', process.execPath, [path.resolve(process.argv[1])])
|
|
||||||
} else {
|
} else {
|
||||||
app.setAsDefaultProtocolClient('freetube')
|
runApp()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Uncomment if needed
|
function runApp() {
|
||||||
// only allow single instance of application
|
require('@electron/remote/main').initialize()
|
||||||
if (!isDev) {
|
|
||||||
const gotTheLock = app.requestSingleInstanceLock()
|
|
||||||
|
|
||||||
if (gotTheLock) {
|
require('electron-context-menu')({
|
||||||
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
showSearchWithGoogle: false,
|
||||||
// Someone tried to run a second instance, we should focus our window.
|
showSaveImageAs: true,
|
||||||
if (mainWindow && typeof (commandLine) !== 'undefined') {
|
showCopyImageAddress: true,
|
||||||
if (mainWindow.isMinimized()) mainWindow.restore()
|
prepend: (params, browserWindow) => []
|
||||||
mainWindow.focus()
|
})
|
||||||
|
|
||||||
const url = getLinkUrl(commandLine)
|
const localDataStorage = app.getPath('userData') // Grabs the userdata directory based on the user's OS
|
||||||
if (url) {
|
|
||||||
mainWindow.webContents.send('openUrl', url)
|
const settingsDb = new Datastore({
|
||||||
|
filename: localDataStorage + '/settings.db',
|
||||||
|
autoload: true
|
||||||
|
})
|
||||||
|
|
||||||
|
// disable electron warning
|
||||||
|
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true'
|
||||||
|
const path = require('path')
|
||||||
|
const isDev = process.env.NODE_ENV === 'development'
|
||||||
|
const isDebug = process.argv.includes('--debug')
|
||||||
|
let mainWindow
|
||||||
|
let startupUrl
|
||||||
|
|
||||||
|
// CORS somehow gets re-enabled in Electron v9.0.4
|
||||||
|
// This line disables it.
|
||||||
|
// This line can possible be removed if the issue is fixed upstream
|
||||||
|
app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors')
|
||||||
|
|
||||||
|
app.commandLine.appendSwitch('enable-accelerated-video-decode')
|
||||||
|
app.commandLine.appendSwitch('enable-file-cookies')
|
||||||
|
app.commandLine.appendSwitch('ignore-gpu-blacklist')
|
||||||
|
|
||||||
|
// See: https://stackoverflow.com/questions/45570589/electron-protocol-handler-not-working-on-windows
|
||||||
|
// remove so we can register each time as we run the app.
|
||||||
|
app.removeAsDefaultProtocolClient('freetube')
|
||||||
|
|
||||||
|
// If we are running a non-packaged version of the app && on windows
|
||||||
|
if (isDev && process.platform === 'win32') {
|
||||||
|
// Set the path of electron.exe and your app.
|
||||||
|
// These two additional parameters are only available on windows.
|
||||||
|
app.setAsDefaultProtocolClient('freetube', process.execPath, [path.resolve(process.argv[1])])
|
||||||
|
} else {
|
||||||
|
app.setAsDefaultProtocolClient('freetube')
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Uncomment if needed
|
||||||
|
// only allow single instance of application
|
||||||
|
if (!isDev) {
|
||||||
|
const gotTheLock = app.requestSingleInstanceLock()
|
||||||
|
|
||||||
|
if (gotTheLock) {
|
||||||
|
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
||||||
|
// Someone tried to run a second instance, we should focus our window.
|
||||||
|
if (mainWindow && typeof (commandLine) !== 'undefined') {
|
||||||
|
if (mainWindow.isMinimized()) mainWindow.restore()
|
||||||
|
mainWindow.focus()
|
||||||
|
|
||||||
|
const url = getLinkUrl(commandLine)
|
||||||
|
if (url) {
|
||||||
|
mainWindow.webContents.send('openUrl', url)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
|
app.on('ready', (event, commandLine, workingDirectory) => {
|
||||||
|
settingsDb.find({
|
||||||
|
$or: [
|
||||||
|
{ _id: 'disableSmoothScrolling' },
|
||||||
|
{ _id: 'useProxy' },
|
||||||
|
{ _id: 'proxyProtocol' },
|
||||||
|
{ _id: 'proxyHostname' },
|
||||||
|
{ _id: 'proxyPort' }
|
||||||
|
]
|
||||||
|
}, function (err, doc) {
|
||||||
|
if (err) {
|
||||||
|
app.exit(0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let disableSmoothScrolling = false
|
||||||
|
let useProxy = false
|
||||||
|
let proxyProtocol = 'socks5'
|
||||||
|
let proxyHostname = '127.0.0.1'
|
||||||
|
let proxyPort = '9050'
|
||||||
|
|
||||||
|
if (typeof doc === 'object' && doc.length > 0) {
|
||||||
|
doc.forEach((dbItem) => {
|
||||||
|
switch (dbItem._id) {
|
||||||
|
case 'disableSmoothScrolling':
|
||||||
|
disableSmoothScrolling = dbItem.value
|
||||||
|
break
|
||||||
|
case 'useProxy':
|
||||||
|
useProxy = dbItem.value
|
||||||
|
break
|
||||||
|
case 'proxyProtocol':
|
||||||
|
proxyProtocol = dbItem.value
|
||||||
|
break
|
||||||
|
case 'proxyHostname':
|
||||||
|
proxyHostname = dbItem.value
|
||||||
|
break
|
||||||
|
case 'proxyPort':
|
||||||
|
proxyPort = dbItem.value
|
||||||
|
break
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (disableSmoothScrolling) {
|
||||||
|
app.commandLine.appendSwitch('disable-smooth-scrolling')
|
||||||
|
} else {
|
||||||
|
app.commandLine.appendSwitch('enable-smooth-scrolling')
|
||||||
|
}
|
||||||
|
|
||||||
|
const proxyUrl = `${proxyProtocol}://${proxyHostname}:${proxyPort}`
|
||||||
|
|
||||||
|
createWindow(useProxy, proxyUrl)
|
||||||
|
|
||||||
|
if (isDev) {
|
||||||
|
installDevTools()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDebug) {
|
||||||
|
mainWindow.webContents.openDevTools()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
app.quit()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
require('electron-debug')({
|
||||||
|
showDevTools: !(process.env.RENDERER_REMOTE_DEBUGGING === 'true')
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on('ready', (event, commandLine, workingDirectory) => {
|
app.on('ready', () => {
|
||||||
settingsDb.find({
|
settingsDb.find({
|
||||||
$or: [
|
$or: [
|
||||||
{ _id: 'disableSmoothScrolling' },
|
{ _id: 'disableSmoothScrolling' },
|
||||||
|
@ -131,426 +206,371 @@ if (!isDev) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
} else {
|
|
||||||
app.quit()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
require('electron-debug')({
|
|
||||||
showDevTools: !(process.env.RENDERER_REMOTE_DEBUGGING === 'true')
|
|
||||||
})
|
|
||||||
|
|
||||||
app.on('ready', () => {
|
|
||||||
settingsDb.find({
|
|
||||||
$or: [
|
|
||||||
{ _id: 'disableSmoothScrolling' },
|
|
||||||
{ _id: 'useProxy' },
|
|
||||||
{ _id: 'proxyProtocol' },
|
|
||||||
{ _id: 'proxyHostname' },
|
|
||||||
{ _id: 'proxyPort' }
|
|
||||||
]
|
|
||||||
}, function (err, doc) {
|
|
||||||
if (err) {
|
|
||||||
app.exit(0)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let disableSmoothScrolling = false
|
|
||||||
let useProxy = false
|
|
||||||
let proxyProtocol = 'socks5'
|
|
||||||
let proxyHostname = '127.0.0.1'
|
|
||||||
let proxyPort = '9050'
|
|
||||||
|
|
||||||
if (typeof doc === 'object' && doc.length > 0) {
|
|
||||||
doc.forEach((dbItem) => {
|
|
||||||
switch (dbItem._id) {
|
|
||||||
case 'disableSmoothScrolling':
|
|
||||||
disableSmoothScrolling = dbItem.value
|
|
||||||
break
|
|
||||||
case 'useProxy':
|
|
||||||
useProxy = dbItem.value
|
|
||||||
break
|
|
||||||
case 'proxyProtocol':
|
|
||||||
proxyProtocol = dbItem.value
|
|
||||||
break
|
|
||||||
case 'proxyHostname':
|
|
||||||
proxyHostname = dbItem.value
|
|
||||||
break
|
|
||||||
case 'proxyPort':
|
|
||||||
proxyPort = dbItem.value
|
|
||||||
break
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (disableSmoothScrolling) {
|
|
||||||
app.commandLine.appendSwitch('disable-smooth-scrolling')
|
|
||||||
} else {
|
|
||||||
app.commandLine.appendSwitch('enable-smooth-scrolling')
|
|
||||||
}
|
|
||||||
|
|
||||||
const proxyUrl = `${proxyProtocol}://${proxyHostname}:${proxyPort}`
|
|
||||||
|
|
||||||
createWindow(useProxy, proxyUrl)
|
|
||||||
|
|
||||||
if (isDev) {
|
|
||||||
installDevTools()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isDebug) {
|
|
||||||
mainWindow.webContents.openDevTools()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function installDevTools () {
|
|
||||||
try {
|
|
||||||
/* eslint-disable */
|
|
||||||
require('devtron').install()
|
|
||||||
require('vue-devtools').install()
|
|
||||||
/* eslint-enable */
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function createWindow (useProxy = false, proxyUrl = '') {
|
|
||||||
/**
|
|
||||||
* Initial window options
|
|
||||||
*/
|
|
||||||
mainWindow = new BrowserWindow({
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
icon: isDev
|
|
||||||
? path.join(__dirname, '../../_icons/iconColor.png')
|
|
||||||
/* eslint-disable-next-line */
|
|
||||||
: `${__dirname}/_icons/iconColor.png`,
|
|
||||||
autoHideMenuBar: true,
|
|
||||||
// useContentSize: true,
|
|
||||||
webPreferences: {
|
|
||||||
nodeIntegration: true,
|
|
||||||
nodeIntegrationInWorker: false,
|
|
||||||
webSecurity: false,
|
|
||||||
backgroundThrottling: false,
|
|
||||||
enableRemoteModule: true,
|
|
||||||
contextIsolation: false
|
|
||||||
},
|
|
||||||
show: false
|
|
||||||
})
|
|
||||||
|
|
||||||
mainWindow.setBounds({
|
|
||||||
width: 1200,
|
|
||||||
height: 800
|
|
||||||
})
|
|
||||||
|
|
||||||
if (useProxy) {
|
|
||||||
mainWindow.webContents.session.setProxy({
|
|
||||||
proxyRules: proxyUrl
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsDb.findOne({
|
async function installDevTools () {
|
||||||
_id: 'bounds'
|
try {
|
||||||
}, function (err, doc) {
|
/* eslint-disable */
|
||||||
if (doc === null || err) {
|
require('devtron').install()
|
||||||
return
|
require('vue-devtools').install()
|
||||||
|
/* eslint-enable */
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof doc !== 'object' || typeof doc.value !== 'object') {
|
function createWindow (useProxy = false, proxyUrl = '') {
|
||||||
return
|
/**
|
||||||
}
|
* Initial window options
|
||||||
|
*/
|
||||||
|
mainWindow = new BrowserWindow({
|
||||||
|
backgroundColor: '#fff',
|
||||||
|
icon: isDev
|
||||||
|
? path.join(__dirname, '../../_icons/iconColor.png')
|
||||||
|
/* eslint-disable-next-line */
|
||||||
|
: `${__dirname}/_icons/iconColor.png`,
|
||||||
|
autoHideMenuBar: true,
|
||||||
|
// useContentSize: true,
|
||||||
|
webPreferences: {
|
||||||
|
nodeIntegration: true,
|
||||||
|
nodeIntegrationInWorker: false,
|
||||||
|
webSecurity: false,
|
||||||
|
backgroundThrottling: false,
|
||||||
|
enableRemoteModule: true,
|
||||||
|
contextIsolation: false
|
||||||
|
},
|
||||||
|
show: false
|
||||||
|
})
|
||||||
|
|
||||||
const { maximized, ...bounds } = doc.value
|
mainWindow.setBounds({
|
||||||
const allDisplaysSummaryWidth = screen
|
width: 1200,
|
||||||
.getAllDisplays()
|
height: 800
|
||||||
.reduce((accumulator, { size: { width } }) => accumulator + width, 0)
|
})
|
||||||
|
|
||||||
if (allDisplaysSummaryWidth >= bounds.x) {
|
if (useProxy) {
|
||||||
mainWindow.setBounds({
|
mainWindow.webContents.session.setProxy({
|
||||||
x: bounds.x,
|
proxyRules: proxyUrl
|
||||||
y: bounds.y,
|
|
||||||
width: bounds.width,
|
|
||||||
height: bounds.height
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (maximized) {
|
|
||||||
mainWindow.maximize()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// eslint-disable-next-line
|
// Set CONSENT cookie on reasonable domains
|
||||||
setMenu()
|
[
|
||||||
|
'http://www.youtube.com',
|
||||||
// load root file/url
|
'https://www.youtube.com',
|
||||||
if (isDev) {
|
'http://youtube.com',
|
||||||
mainWindow.loadURL('http://localhost:9080')
|
'https://youtube.com'
|
||||||
} else {
|
].forEach(url => {
|
||||||
/* eslint-disable-next-line */
|
mainWindow.webContents.session.cookies.set({
|
||||||
mainWindow.loadFile(`${__dirname}/index.html`)
|
url: url,
|
||||||
|
name: 'CONSENT',
|
||||||
global.__static = path
|
value: 'YES+'
|
||||||
.join(__dirname, '/static')
|
})
|
||||||
.replace(/\\/g, '\\\\')
|
})
|
||||||
}
|
|
||||||
|
|
||||||
// Show when loaded
|
|
||||||
mainWindow.on('ready-to-show', () => {
|
|
||||||
mainWindow.show()
|
|
||||||
mainWindow.focus()
|
|
||||||
})
|
|
||||||
|
|
||||||
mainWindow.on('closed', () => {
|
|
||||||
console.log('closed')
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('setBounds', (_e, data) => {
|
|
||||||
const value = {
|
|
||||||
...mainWindow.getNormalBounds(),
|
|
||||||
maximized: mainWindow.isMaximized()
|
|
||||||
}
|
|
||||||
|
|
||||||
settingsDb.findOne({
|
settingsDb.findOne({
|
||||||
_id: 'bounds'
|
_id: 'bounds'
|
||||||
}, function (err, doc) {
|
}, function (err, doc) {
|
||||||
if (err) {
|
if (doc === null || err) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (doc !== null) {
|
|
||||||
settingsDb.update({
|
if (typeof doc !== 'object' || typeof doc.value !== 'object') {
|
||||||
_id: 'bounds'
|
return
|
||||||
}, {
|
}
|
||||||
$set: {
|
|
||||||
value
|
const { maximized, ...bounds } = doc.value
|
||||||
}
|
const allDisplaysSummaryWidth = screen
|
||||||
}, {})
|
.getAllDisplays()
|
||||||
} else {
|
.reduce((accumulator, { size: { width } }) => accumulator + width, 0)
|
||||||
settingsDb.insert({
|
|
||||||
_id: 'bounds',
|
if (allDisplaysSummaryWidth >= bounds.x) {
|
||||||
value
|
mainWindow.setBounds({
|
||||||
|
x: bounds.x,
|
||||||
|
y: bounds.y,
|
||||||
|
width: bounds.width,
|
||||||
|
height: bounds.height
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (maximized) {
|
||||||
|
mainWindow.maximize()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('appReady', () => {
|
// eslint-disable-next-line
|
||||||
if (startupUrl) {
|
setMenu()
|
||||||
mainWindow.webContents.send('openUrl', startupUrl)
|
|
||||||
|
// load root file/url
|
||||||
|
if (isDev) {
|
||||||
|
mainWindow.loadURL('http://localhost:9080')
|
||||||
|
} else {
|
||||||
|
/* eslint-disable-next-line */
|
||||||
|
mainWindow.loadFile(`${__dirname}/index.html`)
|
||||||
|
|
||||||
|
global.__static = path
|
||||||
|
.join(__dirname, '/static')
|
||||||
|
.replace(/\\/g, '\\\\')
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('disableSmoothScrolling', () => {
|
// Show when loaded
|
||||||
app.commandLine.appendSwitch('disable-smooth-scrolling')
|
mainWindow.on('ready-to-show', () => {
|
||||||
mainWindow.close()
|
mainWindow.show()
|
||||||
createWindow()
|
mainWindow.focus()
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('enableSmoothScrolling', () => {
|
|
||||||
app.commandLine.appendSwitch('enable-smooth-scrolling')
|
|
||||||
mainWindow.close()
|
|
||||||
createWindow()
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('enableProxy', (event, url) => {
|
|
||||||
console.log(url)
|
|
||||||
mainWindow.webContents.session.setProxy({
|
|
||||||
proxyRules: url
|
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.on('disableProxy', () => {
|
mainWindow.on('closed', () => {
|
||||||
mainWindow.webContents.session.setProxy({})
|
console.log('closed')
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
ipcMain.on('setBounds', (_e, data) => {
|
||||||
if (process.platform !== 'darwin') {
|
const value = {
|
||||||
app.quit()
|
...mainWindow.getNormalBounds(),
|
||||||
|
maximized: mainWindow.isMaximized()
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsDb.findOne({
|
||||||
|
_id: 'bounds'
|
||||||
|
}, function (err, doc) {
|
||||||
|
if (err) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (doc !== null) {
|
||||||
|
settingsDb.update({
|
||||||
|
_id: 'bounds'
|
||||||
|
}, {
|
||||||
|
$set: {
|
||||||
|
value
|
||||||
|
}
|
||||||
|
}, {})
|
||||||
|
} else {
|
||||||
|
settingsDb.insert({
|
||||||
|
_id: 'bounds',
|
||||||
|
value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('appReady', () => {
|
||||||
|
if (startupUrl) {
|
||||||
|
mainWindow.webContents.send('openUrl', startupUrl)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('disableSmoothScrolling', () => {
|
||||||
|
app.commandLine.appendSwitch('disable-smooth-scrolling')
|
||||||
|
mainWindow.close()
|
||||||
|
createWindow()
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('enableSmoothScrolling', () => {
|
||||||
|
app.commandLine.appendSwitch('enable-smooth-scrolling')
|
||||||
|
mainWindow.close()
|
||||||
|
createWindow()
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('enableProxy', (event, url) => {
|
||||||
|
console.log(url)
|
||||||
|
mainWindow.webContents.session.setProxy({
|
||||||
|
proxyRules: url
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('disableProxy', () => {
|
||||||
|
mainWindow.webContents.session.setProxy({})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
mainWindow.webContents.session.clearCache()
|
app.on('window-all-closed', () => {
|
||||||
mainWindow.webContents.session.clearStorageData({
|
if (process.platform !== 'darwin') {
|
||||||
storages: [
|
app.quit()
|
||||||
'appcache',
|
|
||||||
'cookies',
|
|
||||||
'filesystem',
|
|
||||||
'indexdb',
|
|
||||||
'shadercache',
|
|
||||||
'websql',
|
|
||||||
'serviceworkers',
|
|
||||||
'cachestorage'
|
|
||||||
]
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
app.on('activate', () => {
|
|
||||||
if (mainWindow === null) {
|
|
||||||
createWindow()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Callback when processing a freetube:// link (macOS)
|
|
||||||
*/
|
|
||||||
app.on('open-url', (event, url) => {
|
|
||||||
event.preventDefault()
|
|
||||||
|
|
||||||
if (mainWindow && mainWindow.webContents) {
|
|
||||||
mainWindow.webContents.send('openUrl', baseUrl(url))
|
|
||||||
} else {
|
|
||||||
startupUrl = baseUrl(url)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if an argument was passed and send it over to the GUI (Linux / Windows).
|
|
||||||
* Remove freetube:// protocol if present
|
|
||||||
*/
|
|
||||||
const url = getLinkUrl(process.argv)
|
|
||||||
if (url) {
|
|
||||||
startupUrl = url
|
|
||||||
}
|
|
||||||
|
|
||||||
function baseUrl(arg) {
|
|
||||||
return arg.replace('freetube://', '')
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLinkUrl(argv) {
|
|
||||||
if (argv.length > 1) {
|
|
||||||
return baseUrl(argv[argv.length - 1])
|
|
||||||
} else {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Auto Updater
|
|
||||||
*
|
|
||||||
* Uncomment the following code below and install `electron-updater` to
|
|
||||||
* support auto updating. Code Signing with a valid certificate is required.
|
|
||||||
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-builder.html#auto-updating
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
import { autoUpdater } from 'electron-updater'
|
|
||||||
autoUpdater.on('update-downloaded', () => {
|
|
||||||
autoUpdater.quitAndInstall()
|
|
||||||
})
|
|
||||||
|
|
||||||
app.on('ready', () => {
|
|
||||||
if (process.env.NODE_ENV === 'production') autoUpdater.checkForUpdates()
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* eslint-disable-next-line */
|
|
||||||
const sendMenuEvent = async data => {
|
|
||||||
mainWindow.webContents.send('change-view', data)
|
|
||||||
}
|
|
||||||
|
|
||||||
const template = [{
|
|
||||||
label: 'File',
|
|
||||||
submenu: [
|
|
||||||
{
|
|
||||||
role: 'quit'
|
|
||||||
}
|
}
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Edit',
|
|
||||||
submenu: [{
|
|
||||||
role: 'cut'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'copy',
|
|
||||||
accelerator: 'CmdOrCtrl+C',
|
|
||||||
selector: 'copy:'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'paste',
|
|
||||||
accelerator: 'CmdOrCtrl+V',
|
|
||||||
selector: 'paste:'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'pasteandmatchstyle'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'delete'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'selectall'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'View',
|
|
||||||
submenu: [{
|
|
||||||
role: 'reload'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'forcereload',
|
|
||||||
accelerator: 'CmdOrCtrl+Shift+R'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'toggledevtools'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'separator'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'resetzoom'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'zoomin'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'zoomout'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'separator'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'togglefullscreen'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'window',
|
|
||||||
submenu: [{
|
|
||||||
role: 'minimize'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
role: 'close'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
function setMenu () {
|
mainWindow.webContents.session.clearCache()
|
||||||
if (process.platform === 'darwin') {
|
mainWindow.webContents.session.clearStorageData({
|
||||||
template.unshift({
|
storages: [
|
||||||
label: app.getName(),
|
'appcache',
|
||||||
submenu: [
|
'cookies',
|
||||||
{ role: 'about' },
|
'filesystem',
|
||||||
{ type: 'separator' },
|
'indexdb',
|
||||||
{ role: 'services' },
|
'shadercache',
|
||||||
{ type: 'separator' },
|
'websql',
|
||||||
{ role: 'hide' },
|
'serviceworkers',
|
||||||
{ role: 'hideothers' },
|
'cachestorage'
|
||||||
{ role: 'unhide' },
|
|
||||||
{ type: 'separator' },
|
|
||||||
{ role: 'quit' }
|
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
template.push({
|
app.on('activate', () => {
|
||||||
role: 'window'
|
if (mainWindow === null) {
|
||||||
})
|
createWindow()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
template.push({
|
/*
|
||||||
role: 'help'
|
* Callback when processing a freetube:// link (macOS)
|
||||||
})
|
*/
|
||||||
|
app.on('open-url', (event, url) => {
|
||||||
|
event.preventDefault()
|
||||||
|
|
||||||
template.push({ role: 'services' })
|
if (mainWindow && mainWindow.webContents) {
|
||||||
|
mainWindow.webContents.send('openUrl', baseUrl(url))
|
||||||
|
} else {
|
||||||
|
startupUrl = baseUrl(url)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if an argument was passed and send it over to the GUI (Linux / Windows).
|
||||||
|
* Remove freetube:// protocol if present
|
||||||
|
*/
|
||||||
|
const url = getLinkUrl(process.argv)
|
||||||
|
if (url) {
|
||||||
|
startupUrl = url
|
||||||
}
|
}
|
||||||
|
|
||||||
const menu = Menu.buildFromTemplate(template)
|
function baseUrl(arg) {
|
||||||
Menu.setApplicationMenu(menu)
|
return arg.replace('freetube://', '')
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLinkUrl(argv) {
|
||||||
|
if (argv.length > 1) {
|
||||||
|
return baseUrl(argv[argv.length - 1])
|
||||||
|
} else {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto Updater
|
||||||
|
*
|
||||||
|
* Uncomment the following code below and install `electron-updater` to
|
||||||
|
* support auto updating. Code Signing with a valid certificate is required.
|
||||||
|
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-builder.html#auto-updating
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
import { autoUpdater } from 'electron-updater'
|
||||||
|
autoUpdater.on('update-downloaded', () => {
|
||||||
|
autoUpdater.quitAndInstall()
|
||||||
|
})
|
||||||
|
|
||||||
|
app.on('ready', () => {
|
||||||
|
if (process.env.NODE_ENV === 'production') autoUpdater.checkForUpdates()
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable-next-line */
|
||||||
|
const sendMenuEvent = async data => {
|
||||||
|
mainWindow.webContents.send('change-view', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
const template = [{
|
||||||
|
label: 'File',
|
||||||
|
submenu: [
|
||||||
|
{
|
||||||
|
role: 'quit'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Edit',
|
||||||
|
submenu: [{
|
||||||
|
role: 'cut'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'copy',
|
||||||
|
accelerator: 'CmdOrCtrl+C',
|
||||||
|
selector: 'copy:'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'paste',
|
||||||
|
accelerator: 'CmdOrCtrl+V',
|
||||||
|
selector: 'paste:'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'pasteandmatchstyle'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'delete'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'selectall'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'View',
|
||||||
|
submenu: [{
|
||||||
|
role: 'reload'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'forcereload',
|
||||||
|
accelerator: 'CmdOrCtrl+Shift+R'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'toggledevtools'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'resetzoom'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'zoomin'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'zoomout'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'togglefullscreen'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'window',
|
||||||
|
submenu: [{
|
||||||
|
role: 'minimize'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: 'close'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
function setMenu () {
|
||||||
|
if (process.platform === 'darwin') {
|
||||||
|
template.unshift({
|
||||||
|
label: app.getName(),
|
||||||
|
submenu: [
|
||||||
|
{ role: 'about' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'services' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'hide' },
|
||||||
|
{ role: 'hideothers' },
|
||||||
|
{ role: 'unhide' },
|
||||||
|
{ type: 'separator' },
|
||||||
|
{ role: 'quit' }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
template.push({
|
||||||
|
role: 'window'
|
||||||
|
})
|
||||||
|
|
||||||
|
template.push({
|
||||||
|
role: 'help'
|
||||||
|
})
|
||||||
|
|
||||||
|
template.push({ role: 'services' })
|
||||||
|
}
|
||||||
|
|
||||||
|
const menu = Menu.buildFromTemplate(template)
|
||||||
|
Menu.setApplicationMenu(menu)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,10 @@ export default Vue.extend({
|
||||||
saveWatchedProgress: function () {
|
saveWatchedProgress: function () {
|
||||||
return this.$store.getters.getSaveWatchedProgress
|
return this.$store.getters.getSaveWatchedProgress
|
||||||
},
|
},
|
||||||
|
removeVideoMetaFiles: function () {
|
||||||
|
return this.$store.getters.getRemoveVideoMetaFiles
|
||||||
|
},
|
||||||
|
|
||||||
profileList: function () {
|
profileList: function () {
|
||||||
return this.$store.getters.getProfileList
|
return this.$store.getters.getProfileList
|
||||||
},
|
},
|
||||||
|
@ -66,6 +70,13 @@ export default Vue.extend({
|
||||||
this.updateRememberHistory(value)
|
this.updateRememberHistory(value)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleVideoMetaFiles: function (value) {
|
||||||
|
if (!value) {
|
||||||
|
this.updateRemoveVideoMetaFiles(false)
|
||||||
|
}
|
||||||
|
this.updateRemoveVideoMetaFiles(value)
|
||||||
|
},
|
||||||
|
|
||||||
handleRemoveHistory: function (option) {
|
handleRemoveHistory: function (option) {
|
||||||
this.showRemoveHistoryPrompt = false
|
this.showRemoveHistoryPrompt = false
|
||||||
|
|
||||||
|
@ -102,6 +113,7 @@ export default Vue.extend({
|
||||||
|
|
||||||
...mapActions([
|
...mapActions([
|
||||||
'updateRememberHistory',
|
'updateRememberHistory',
|
||||||
|
'updateRemoveVideoMetaFiles',
|
||||||
'removeAllHistory',
|
'removeAllHistory',
|
||||||
'updateSaveWatchedProgress',
|
'updateSaveWatchedProgress',
|
||||||
'clearSessionSearchHistory',
|
'clearSessionSearchHistory',
|
||||||
|
|
|
@ -23,6 +23,15 @@
|
||||||
@change="updateSaveWatchedProgress"
|
@change="updateSaveWatchedProgress"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="switchColumn">
|
||||||
|
<ft-toggle-switch
|
||||||
|
:label="$t('Settings.Privacy Settings.Automatically Remove Video Meta Files')"
|
||||||
|
:compact="true"
|
||||||
|
:default-value="removeVideoMetaFiles"
|
||||||
|
:tooltip="$t('Tooltips.Privacy Settings.Remove Video Meta Files')"
|
||||||
|
@change="handleVideoMetaFiles"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<ft-flex-box>
|
<ft-flex-box>
|
||||||
|
|
|
@ -47,8 +47,9 @@
|
||||||
class="commentThumbnail"
|
class="commentThumbnail"
|
||||||
@click="goToChannel(comment.authorLink)"
|
@click="goToChannel(comment.authorLink)"
|
||||||
>
|
>
|
||||||
<p class="commentAuthor"
|
<p
|
||||||
@click="goToChannel(comment.authorLink)"
|
class="commentAuthor"
|
||||||
|
@click="goToChannel(comment.authorLink)"
|
||||||
>
|
>
|
||||||
{{ comment.author }}
|
{{ comment.author }}
|
||||||
<span class="commentDate">
|
<span class="commentDate">
|
||||||
|
|
|
@ -27,7 +27,7 @@ Vue.component('FontAwesomeIcon', FontAwesomeIcon)
|
||||||
Vue.use(VueI18n)
|
Vue.use(VueI18n)
|
||||||
|
|
||||||
// List of locales approved for use
|
// List of locales approved for use
|
||||||
const activeLocales = ['en-US', 'en_GB', 'ar', 'bg', 'cs', 'da', 'de-DE', 'el', 'es', 'es-MX', 'fi', 'fr-FR', 'gl', 'he', 'hu', 'hr', 'id', 'it', 'ja', 'nb_NO', 'nl', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'vi', 'zh-CN', 'zh-TW']
|
const activeLocales = ['en-US', 'en_GB', 'ar', 'bg', 'cs', 'da', 'de-DE', 'el', 'es', 'es-MX', 'fi', 'fr-FR', 'gl', 'he', 'hu', 'hr', 'id', 'is', 'it', 'ja', 'nb_NO', 'nl', 'nn', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'vi', 'zh-CN', 'zh-TW']
|
||||||
const messages = {}
|
const messages = {}
|
||||||
/* eslint-disable-next-line */
|
/* eslint-disable-next-line */
|
||||||
const fileLocation = isDev ? 'static/locales/' : `${__dirname}/static/locales/`
|
const fileLocation = isDev ? 'static/locales/' : `${__dirname}/static/locales/`
|
||||||
|
|
|
@ -47,6 +47,7 @@ const state = {
|
||||||
enableSearchSuggestions: true,
|
enableSearchSuggestions: true,
|
||||||
rememberHistory: true,
|
rememberHistory: true,
|
||||||
saveWatchedProgress: true,
|
saveWatchedProgress: true,
|
||||||
|
removeVideoMetaFiles: true,
|
||||||
autoplayVideos: true,
|
autoplayVideos: true,
|
||||||
autoplayPlaylists: true,
|
autoplayPlaylists: true,
|
||||||
playNextVideo: false,
|
playNextVideo: false,
|
||||||
|
@ -141,6 +142,10 @@ const getters = {
|
||||||
return state.saveWatchedProgress
|
return state.saveWatchedProgress
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getRemoveVideoMetaFiles: () => {
|
||||||
|
return state.removeVideoMetaFiles
|
||||||
|
},
|
||||||
|
|
||||||
getAutoplayVideos: () => {
|
getAutoplayVideos: () => {
|
||||||
return state.autoplayVideos
|
return state.autoplayVideos
|
||||||
},
|
},
|
||||||
|
@ -330,6 +335,9 @@ const actions = {
|
||||||
case 'saveWatchedProgress':
|
case 'saveWatchedProgress':
|
||||||
commit('setSaveWatchedProgress', result.value)
|
commit('setSaveWatchedProgress', result.value)
|
||||||
break
|
break
|
||||||
|
case 'removeVideoMetaFiles':
|
||||||
|
commit('setRemoveVideoMetaFiles', result.value)
|
||||||
|
break
|
||||||
case 'autoplayVideos':
|
case 'autoplayVideos':
|
||||||
commit('setAutoplayVideos', result.value)
|
commit('setAutoplayVideos', result.value)
|
||||||
break
|
break
|
||||||
|
@ -555,6 +563,14 @@ const actions = {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
updateRemoveVideoMetaFiles ({ commit }, removeVideoMetaFiles) {
|
||||||
|
settingsDb.update({ _id: 'removeVideoMetaFiles' }, { _id: 'removeVideoMetaFiles', value: removeVideoMetaFiles }, { upsert: true }, (err, numReplaced) => {
|
||||||
|
if (!err) {
|
||||||
|
commit('setRemoveVideoMetaFiles', removeVideoMetaFiles)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
updateAutoplayVideos ({ commit }, autoplayVideos) {
|
updateAutoplayVideos ({ commit }, autoplayVideos) {
|
||||||
settingsDb.update({ _id: 'autoplayVideos' }, { _id: 'autoplayVideos', value: autoplayVideos }, { upsert: true }, (err, numReplaced) => {
|
settingsDb.update({ _id: 'autoplayVideos' }, { _id: 'autoplayVideos', value: autoplayVideos }, { upsert: true }, (err, numReplaced) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
|
@ -822,6 +838,11 @@ const mutations = {
|
||||||
setSaveWatchedProgress (state, saveWatchedProgress) {
|
setSaveWatchedProgress (state, saveWatchedProgress) {
|
||||||
state.saveWatchedProgress = saveWatchedProgress
|
state.saveWatchedProgress = saveWatchedProgress
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setRemoveVideoMetaFiles (state, removeVideoMetaFiles) {
|
||||||
|
state.removeVideoMetaFiles = removeVideoMetaFiles
|
||||||
|
},
|
||||||
|
|
||||||
setAutoplayVideos (state, autoplayVideos) {
|
setAutoplayVideos (state, autoplayVideos) {
|
||||||
state.autoplayVideos = autoplayVideos
|
state.autoplayVideos = autoplayVideos
|
||||||
},
|
},
|
||||||
|
|
|
@ -91,6 +91,9 @@ export default Vue.extend({
|
||||||
rememberHistory: function () {
|
rememberHistory: function () {
|
||||||
return this.$store.getters.getRememberHistory
|
return this.$store.getters.getRememberHistory
|
||||||
},
|
},
|
||||||
|
removeVideoMetaFiles: function () {
|
||||||
|
return this.$store.getters.getRemoveVideoMetaFiles
|
||||||
|
},
|
||||||
saveWatchedProgress: function () {
|
saveWatchedProgress: function () {
|
||||||
return this.$store.getters.getSaveWatchedProgress
|
return this.$store.getters.getSaveWatchedProgress
|
||||||
},
|
},
|
||||||
|
@ -899,8 +902,6 @@ export default Vue.extend({
|
||||||
videoId: this.videoId,
|
videoId: this.videoId,
|
||||||
watchProgress: currentTime
|
watchProgress: currentTime
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('update watch progress')
|
|
||||||
this.updateWatchProgress(payload)
|
this.updateWatchProgress(payload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -928,6 +929,31 @@ export default Vue.extend({
|
||||||
}, 200)
|
}, 200)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.removeVideoMetaFiles) {
|
||||||
|
const userData = remote.app.getPath('userData')
|
||||||
|
if (this.isDev) {
|
||||||
|
const dashFileLocation = `dashFiles/${this.videoId}.xml`
|
||||||
|
const vttFileLocation = `storyboards/${this.videoId}.vtt`
|
||||||
|
// only delete the file it actually exists
|
||||||
|
if (fs.existsSync('dashFiles/') && fs.existsSync(dashFileLocation)) {
|
||||||
|
fs.rmSync(dashFileLocation)
|
||||||
|
}
|
||||||
|
if (fs.existsSync('storyboards/') && fs.existsSync(vttFileLocation)) {
|
||||||
|
fs.rmSync(vttFileLocation)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const dashFileLocation = `${userData}/dashFiles/${this.videoId}.xml`
|
||||||
|
const vttFileLocation = `${userData}/storyboards/${this.videoId}.vtt`
|
||||||
|
|
||||||
|
if (fs.existsSync(`${userData}/dashFiles/`) && fs.existsSync(dashFileLocation)) {
|
||||||
|
fs.rmSync(dashFileLocation)
|
||||||
|
}
|
||||||
|
if (fs.existsSync(`${userData}/storyboards/`) && fs.existsSync(vttFileLocation)) {
|
||||||
|
fs.rmSync(vttFileLocation)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
handleVideoError: function (error) {
|
handleVideoError: function (error) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ Delete: 'حذف'
|
||||||
Select all: 'تحديد الكل'
|
Select all: 'تحديد الكل'
|
||||||
Reload: 'إعادة تحميل'
|
Reload: 'إعادة تحميل'
|
||||||
Force Reload: 'فرض إعادة التحميل'
|
Force Reload: 'فرض إعادة التحميل'
|
||||||
Toggle Developer Tools: 'تفعيل أدوات المطوّر'
|
Toggle Developer Tools: 'فتح أدوات المطوّر'
|
||||||
Actual size: 'الحجم الأصلي'
|
Actual size: 'الحجم الأصلي'
|
||||||
Zoom in: 'تكبير'
|
Zoom in: 'تكبير'
|
||||||
Zoom out: 'تصغير'
|
Zoom out: 'تصغير'
|
||||||
|
@ -64,6 +64,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: 'الاشتراكات'
|
||||||
|
@ -80,6 +81,11 @@ 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: 'السجلّ'
|
||||||
|
@ -115,6 +121,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: 'طابق الشريط العلوي مع اللون الأساسي'
|
||||||
|
@ -175,6 +182,7 @@ Settings:
|
||||||
1440p: '1440p'
|
1440p: '1440p'
|
||||||
4k: '4k'
|
4k: '4k'
|
||||||
8k: '8k'
|
8k: '8k'
|
||||||
|
Playlist Next Video Interval: الفاصل الزمني لتشغيل الفيديو التالي في قائمة التشغيل
|
||||||
Privacy Settings:
|
Privacy Settings:
|
||||||
Privacy Settings: 'إعدادات الخصوصية'
|
Privacy Settings: 'إعدادات الخصوصية'
|
||||||
Remember History: 'تذّكر سجلّ المشاهدة'
|
Remember History: 'تذّكر سجلّ المشاهدة'
|
||||||
|
@ -191,6 +199,7 @@ Settings:
|
||||||
أنت متأكد أنك تريد إزالة جميع الاشتراكات والملفات الشخصية؟ لا يمكن التراجع عن
|
أنت متأكد أنك تريد إزالة جميع الاشتراكات والملفات الشخصية؟ لا يمكن التراجع عن
|
||||||
هذا.
|
هذا.
|
||||||
Remove All Subscriptions / Profiles: إزالة جميع الاشتراكات \ الملفات الشخصية
|
Remove All Subscriptions / Profiles: إزالة جميع الاشتراكات \ الملفات الشخصية
|
||||||
|
Automatically Remove Video Meta Files: إزالة ملفات تعريف الفيديو تلقائيًا
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'إعدادات الاشتراك'
|
Subscription Settings: 'إعدادات الاشتراك'
|
||||||
Hide Videos on Watch: 'أخفِ الفيديوهات عند مشاهدتها'
|
Hide Videos on Watch: 'أخفِ الفيديوهات عند مشاهدتها'
|
||||||
|
@ -265,7 +274,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: إدارة الإشتراكات
|
Manage Subscriptions: إدارة الإشتراكات
|
||||||
Distraction Free Settings:
|
Distraction Free Settings:
|
||||||
Hide Live Chat: اخفي الدردشة المباشرة
|
Hide Live Chat: اخفي الدردشة المباشرة
|
||||||
|
@ -273,10 +282,12 @@ Settings:
|
||||||
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 Views: اخفي عدد مشاهدات الفيديوهات
|
Hide Video Views: اخف عدد مشاهدات الفيديو
|
||||||
Hide Video Likes And Dislikes: إخفاء الإعجاب وعدم الإعجاب للفيديو
|
Hide Video Likes And Dislikes: إخفاء الإعجاب وعدم الإعجاب للفيديو
|
||||||
Distraction Free Settings: إعدادات عدم الإزعاج
|
Distraction Free Settings: إعدادات عدم الإزعاج
|
||||||
|
Hide Active Subscriptions: اخفي الإشتراكات الناشطة
|
||||||
|
Hide Playlists: إخفاء قوائم التشغيل
|
||||||
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:
|
Proxy Settings:
|
||||||
|
@ -291,6 +302,10 @@ Settings:
|
||||||
Proxy Protocol: بروتوكول البروكسي
|
Proxy Protocol: بروتوكول البروكسي
|
||||||
Enable Tor / Proxy: تفعيل تور / البروكسي
|
Enable Tor / Proxy: تفعيل تور / البروكسي
|
||||||
Proxy Settings: خيارات البروكسي
|
Proxy Settings: خيارات البروكسي
|
||||||
|
Error getting network information. Is your proxy configured properly?: هنالك خطأ
|
||||||
|
في جلب معلومات الشبكة. هل ضبطت إعدادات وكيلك بصورة صحيحة؟
|
||||||
|
Clicking on Test Proxy will send a request to: النقر على اختبار البروكسي سيؤدي
|
||||||
|
إلى إرسال طلب إلى
|
||||||
About:
|
About:
|
||||||
#On About page
|
#On About page
|
||||||
About: 'حول'
|
About: 'حول'
|
||||||
|
@ -335,6 +350,17 @@ About:
|
||||||
View License: اعرض الرخصة
|
View License: اعرض الرخصة
|
||||||
Source code: الشفرة المصدرية
|
Source code: الشفرة المصدرية
|
||||||
Beta: تجريبي
|
Beta: تجريبي
|
||||||
|
these people and projects: هؤلاء الناس والمشاريع
|
||||||
|
FreeTube is made possible by: Freetube أصبح ممكنا بواسطة
|
||||||
|
Credits: الاعتمادات
|
||||||
|
room rules: قواعد الغرفة
|
||||||
|
Please read the: يرجى قراءة
|
||||||
|
Please check for duplicates before posting: يرجى التحقق من التكرارات قبل النشر
|
||||||
|
GitHub issues: مشاكل GitHub
|
||||||
|
FreeTube Wiki: ويكي Freetube
|
||||||
|
GitHub releases: إصدارات GitHub
|
||||||
|
Downloads / Changelog: التحميلات\التغييرات
|
||||||
|
Licensed under the AGPLv3: مرخّص تحت رخصة أفيرو جيبيإل النسخة الثالثة
|
||||||
Profile:
|
Profile:
|
||||||
All Channels: 'جميع القنوات'
|
All Channels: 'جميع القنوات'
|
||||||
Profile Manager: 'مدير الملف الشخصي'
|
Profile Manager: 'مدير الملف الشخصي'
|
||||||
|
@ -376,6 +402,7 @@ Profile:
|
||||||
$ selected: $ تم اختياره
|
$ selected: $ تم اختياره
|
||||||
Other Channels: قنوات أُخرى
|
Other Channels: قنوات أُخرى
|
||||||
Subscription List: قائمة الاشتراكات
|
Subscription List: قائمة الاشتراكات
|
||||||
|
Profile Filter: مرشح الملف الشخصي
|
||||||
Channel:
|
Channel:
|
||||||
Subscriber: 'مُشترِك'
|
Subscriber: 'مُشترِك'
|
||||||
Subscribers: 'مُشترِكين'
|
Subscribers: 'مُشترِكين'
|
||||||
|
@ -465,7 +492,7 @@ Video:
|
||||||
Year: 'سنة'
|
Year: 'سنة'
|
||||||
Years: 'سنوات'
|
Years: 'سنوات'
|
||||||
Ago: 'منذ'
|
Ago: 'منذ'
|
||||||
Upcoming: 'العرض الأول في'
|
Upcoming: 'يبدأ العرض'
|
||||||
Published on: 'نُشر في'
|
Published on: 'نُشر في'
|
||||||
# $ is replaced with the number and % with the unit (days, hours, minutes...)
|
# $ is replaced with the number and % with the unit (days, hours, minutes...)
|
||||||
Publicationtemplate: 'قبل $ %'
|
Publicationtemplate: 'قبل $ %'
|
||||||
|
@ -480,12 +507,12 @@ Video:
|
||||||
الصفحة للتحقق مرة أخرى
|
الصفحة للتحقق مرة أخرى
|
||||||
Audio:
|
Audio:
|
||||||
Best: الأفضل
|
Best: الأفضل
|
||||||
High: عالٍ
|
High: عال
|
||||||
Medium: متوسط
|
Medium: متوسط
|
||||||
Low: منخفض
|
Low: منخفض
|
||||||
audio only: صوت فقط
|
audio only: الصوت فقط
|
||||||
video only: فيديو فقط
|
video only: الفيديو فقط
|
||||||
Download Video: نزّل الفيديو
|
Download Video: تحميل الفيديو
|
||||||
Started streaming on: بدأ البث على
|
Started streaming on: بدأ البث على
|
||||||
Streamed on: تبث على
|
Streamed on: تبث على
|
||||||
Copy Invidious Channel Link: انسخ رابط قناة انفيديوس
|
Copy Invidious Channel Link: انسخ رابط قناة انفيديوس
|
||||||
|
@ -494,6 +521,7 @@ Video:
|
||||||
Open Channel in YouTube: افتح القناة على يوتيوب
|
Open Channel in YouTube: افتح القناة على يوتيوب
|
||||||
Video has been saved: تم حفظ الفيديو
|
Video has been saved: تم حفظ الفيديو
|
||||||
Save Video: احفظ الفيديو
|
Save Video: احفظ الفيديو
|
||||||
|
Video has been removed from your saved list: تمت إزالة الفيديو من قائمتك المحفوظة
|
||||||
Videos:
|
Videos:
|
||||||
#& Sort By
|
#& Sort By
|
||||||
Sort By:
|
Sort By:
|
||||||
|
@ -591,9 +619,9 @@ Tooltips:
|
||||||
General Settings:
|
General Settings:
|
||||||
Thumbnail Preference: كلّ الصّور المصغّرة في FreeTube سيتمّ استبدالها بإطار من
|
Thumbnail Preference: كلّ الصّور المصغّرة في FreeTube سيتمّ استبدالها بإطار من
|
||||||
الفيديو بدل من الصّورة المصغّرة الافتراضيّة
|
الفيديو بدل من الصّورة المصغّرة الافتراضيّة
|
||||||
Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات
|
Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات.
|
||||||
. الAPI المحلي هو مستخرج محلي . الAPI التابع لInvidious يتطلب التواصل مع خادم
|
الواجهة البرمجية المحلية للتطبيق هي مستخرج محلي. الواجهة البرمجية للتطبيق التابعة
|
||||||
شبكة Invidious .
|
لInvidious (بديل لموقع يوتيوب) يتطلب التواصل مع خادم شبكة Invidious
|
||||||
Invidious Instance: واجهة Invidious البرمجية المستخدمة من قبل FreeTube. امسح الواجهة
|
Invidious Instance: واجهة Invidious البرمجية المستخدمة من قبل FreeTube. امسح الواجهة
|
||||||
البرمجية الحالية للاختيار من قائمة الواجهات
|
البرمجية الحالية للاختيار من قائمة الواجهات
|
||||||
Fallback to Non-Preferred Backend on Failure: عند تواجد مشكلة مع الواجهة البرمجية
|
Fallback to Non-Preferred Backend on Failure: عند تواجد مشكلة مع الواجهة البرمجية
|
||||||
|
@ -608,3 +636,18 @@ Tooltips:
|
||||||
باستخدام التنسيقات القديمة التي تم إرجاعها من قبلها بدلاً من أن تستخدم الصيغ
|
باستخدام التنسيقات القديمة التي تم إرجاعها من قبلها بدلاً من أن تستخدم الصيغ
|
||||||
التي تم إرجاعها من قبل Invidious . يساعد هذا الخيار عندما لا تعمل الفيديوهات
|
التي تم إرجاعها من قبل Invidious . يساعد هذا الخيار عندما لا تعمل الفيديوهات
|
||||||
التي تم إرجاعها من قبل Invidious بسبب قيود البلد
|
التي تم إرجاعها من قبل Invidious بسبب قيود البلد
|
||||||
|
Default Video Format: حدّد التنسيقات المستخدمة عند تشغيل الفيديو. تنسيق داش (التدفق
|
||||||
|
الميكانيكي المتكيّف عبر بروتوكول نقل النص التشعبي) يمكنها أن تُشغِّل جودات أعلى.
|
||||||
|
التنسيقات القديمة محدودة بجودة 720p كحدّ أقصى لكنها تستخدم عرضًا أقل للنطاق.
|
||||||
|
التنسيقات الصوتية هي للتدفق الصوتي فقط
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: عندما يمكن، يحذف Freetube تلقائيًا ملفات التعريف التي
|
||||||
|
تم إنشاؤها أثناء تشغيل الفيديو ، عندما تكون صفحة المشاهدة مغلقة.
|
||||||
|
Subscription Settings:
|
||||||
|
Fetch Feeds from RSS: عند تفعيلها، سوف يستخدم فريتيوب طريقة RSS بدلًا من طريقته
|
||||||
|
المعتادة لجلب صفحة اشتراكاتك. طريقة RSS أسرع وتتخطى حجب الآي بي IP، لكنها لا
|
||||||
|
تقدّم معلومات معينة مثل مدّة الفيديو أو حالة البث المباشر.
|
||||||
|
This video is unavailable because of missing formats. This can happen due to country unavailability.: هذا
|
||||||
|
الفيديو غير متوفر لفقدان بعض التنسيقات. من الممكن لهذا أن يحدث بسبب الحظر في دولة
|
||||||
|
معيّنة.
|
||||||
|
More: المزيد
|
||||||
|
|
|
@ -210,6 +210,7 @@ Settings:
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Сигурни
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Сигурни
|
||||||
ли сте, че искате да премахнете всички абонаменти и профили? Това не може да
|
ли сте, че искате да премахнете всички абонаменти и профили? Това не може да
|
||||||
бъде възстановено.'
|
бъде възстановено.'
|
||||||
|
Automatically Remove Video Meta Files: Автоматично премахване на видео метафайловете
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Настройки на абонаменти'
|
Subscription Settings: 'Настройки на абонаменти'
|
||||||
Hide Videos on Watch: 'Скриване на видеата при гледане'
|
Hide Videos on Watch: 'Скриване на видеата при гледане'
|
||||||
|
@ -628,10 +629,10 @@ Yes: 'Да'
|
||||||
No: 'Не'
|
No: 'Не'
|
||||||
Tooltips:
|
Tooltips:
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Fetch Feeds from RSS: Когато е активирано, FreeTube ще използва RSS вместо метода
|
Fetch Feeds from RSS: FreeTube ще използва RSS вместо метода по подразбиране за
|
||||||
по подразбиране за получаване на абонаментите. RSS е по-бърз метод и преодолява
|
получаване на абонаментите. RSS е по-бърз метод и преодолява блокиранията на
|
||||||
блокиранията на IP адреса, но не получава някои съпътстващи данни, като продължителност
|
IP адреса, но не получава някои съпътстващи данни, като продължителност на видеото
|
||||||
на видеото или дали е на живо
|
или дали е на живо
|
||||||
Player Settings:
|
Player Settings:
|
||||||
Default Video Format: Настройка на използваните формати. Dash форматите могат
|
Default Video Format: Настройка на използваните формати. Dash форматите могат
|
||||||
да показват видеа с по-високо качество. Старите формати са ограничени до макс.
|
да показват видеа с по-високо качество. Старите формати са ограничени до макс.
|
||||||
|
@ -657,6 +658,10 @@ Tooltips:
|
||||||
Preferred API Backend: Избиране на начина, по който FreeTube получава данните.
|
Preferred API Backend: Избиране на начина, по който FreeTube получава данните.
|
||||||
Локалният интерфейс има вградено извличане. Invidious интерфейсът изисква Invidious
|
Локалният интерфейс има вградено извличане. Invidious интерфейсът изисква Invidious
|
||||||
сървър, към който да се свърже.
|
сървър, към който да се свърже.
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Когато страницата за гледане бъде затворена, FreeTube
|
||||||
|
автоматично ще изтрива метафайловете, създадени по време на възпроизвеждане
|
||||||
|
на видеото.
|
||||||
More: Още
|
More: Още
|
||||||
Playing Next Video Interval: Пускане на следващото видео веднага. Щракнете за отказ.
|
Playing Next Video Interval: Пускане на следващото видео веднага. Щракнете за отказ.
|
||||||
| Пускане на следващото видео след {nextVideoInterval} секунда. Щракнете за отказ.
|
| Пускане на следващото видео след {nextVideoInterval} секунда. Щракнете за отказ.
|
||||||
|
|
|
@ -208,6 +208,7 @@ Settings:
|
||||||
Remove All Subscriptions / Profiles: 'Odstranit všechna odebírání / profily'
|
Remove All Subscriptions / Profiles: 'Odstranit všechna odebírání / profily'
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Chcete
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Chcete
|
||||||
opravdu odstranit všechna odebírání a profily? Toto nelze vrátit zpět.'
|
opravdu odstranit všechna odebírání a profily? Toto nelze vrátit zpět.'
|
||||||
|
Automatically Remove Video Meta Files: Automaticky odstranit meta soubory videa
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Nastavení odebírání'
|
Subscription Settings: 'Nastavení odebírání'
|
||||||
Hide Videos on Watch: 'Skrýt videa při přehrávání'
|
Hide Videos on Watch: 'Skrýt videa při přehrávání'
|
||||||
|
@ -630,6 +631,9 @@ Tooltips:
|
||||||
IP, ale neposkytuje určité informace, jako je délka videa a podobně'
|
IP, ale neposkytuje určité informace, jako je délka videa a podobně'
|
||||||
|
|
||||||
# Toast Messages
|
# Toast Messages
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Pokud je povoleno, FreeTube automaticky odstraní meta
|
||||||
|
soubory vytvořené během přehrávání videa, když se stránka sledování zavře.
|
||||||
Local API Error (Click to copy): 'Chyba lokálního API (kliknutím zkopírujete)'
|
Local API Error (Click to copy): 'Chyba lokálního API (kliknutím zkopírujete)'
|
||||||
Invidious API Error (Click to copy): 'Chyba Invidious API (kliknutím zkopírujete)'
|
Invidious API Error (Click to copy): 'Chyba Invidious API (kliknutím zkopírujete)'
|
||||||
Falling back to Invidious API: 'Přepínám na Invidious API'
|
Falling back to Invidious API: 'Přepínám na Invidious API'
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
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.': >-
|
||||||
Dieser Teil des Programms ist noch nicht fertig. Bitte komme zu einem späteren Zeitpunkt
|
Dieser Teil des Programms ist noch nicht fertig. Bitte komm zu einem späteren Zeitpunkt
|
||||||
wieder.
|
wieder.
|
||||||
|
|
||||||
# Webkit Menu Bar
|
# Webkit Menu Bar
|
||||||
|
@ -70,13 +70,13 @@ Subscriptions:
|
||||||
Subscriptions: Abonnements
|
Subscriptions: Abonnements
|
||||||
Latest Subscriptions: Neueste Abonnements
|
Latest Subscriptions: Neueste Abonnements
|
||||||
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': Deine
|
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': Deine
|
||||||
Abonnementliste ist aktuell leer. Beginne Abonnements hinzuzufügen um sie hier
|
Abonnementliste ist aktuell leer. Beginne Abonnements hinzuzufügen, um sie hier
|
||||||
zu sehen.
|
zu sehen.
|
||||||
'Getting Subscriptions. Please wait.': Rufe Abonnements ab. Bitte warten.
|
'Getting Subscriptions. Please wait.': Rufe Abonnements ab. Bitte warten.
|
||||||
Refresh Subscriptions: Abonnements aktualisieren
|
Refresh Subscriptions: Abonnements aktualisieren
|
||||||
Getting Subscriptions. Please wait.: Lade Abonnements. Bitte warten.
|
Getting Subscriptions. Please wait.: Lade Abonnements. Bitte warten.
|
||||||
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Dieses
|
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Dieses
|
||||||
Profil hat eine große Anzahl von Abonnenten. RSS zur Vermeidung von Tarifbeschränkungen
|
Profil hat eine große Anzahl von Abonnements. RSS zur Vermeidung von Geschwindigkeitsbeschränkungen
|
||||||
erzwingen
|
erzwingen
|
||||||
Load More Videos: Lade mehr Videos
|
Load More Videos: Lade mehr Videos
|
||||||
Trending: Trends
|
Trending: Trends
|
||||||
|
@ -85,12 +85,12 @@ 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
|
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
|
gespeicherten Videos sind leer. Klicke auf die Schaltfläche „Speichern“ in der
|
||||||
der Ecke eines Videos, damit es hier aufgelistet wird
|
Ecke eines Videos, damit es hier aufgelistet wird
|
||||||
Playlist Message: Diese Seite spiegelt nicht die vollständig funktionierenden Wiedergabelisten
|
Playlist Message: Diese Seite spiegelt nicht die vollständig funktionierenden Wiedergabelisten
|
||||||
wider. Sie listet nur Videos auf, die Sie gespeichert oder favorisiert haben.
|
wider. Sie listet nur Videos auf, die Du gespeichert oder favorisiert hast. Wenn
|
||||||
Wenn die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier
|
die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier befinden,
|
||||||
befinden, in eine Wiedergabeliste „Favoriten“ migriert.
|
in eine Wiedergabeliste „Favoriten“ migriert.
|
||||||
History:
|
History:
|
||||||
# On History Page
|
# On History Page
|
||||||
History: Verlauf
|
History: Verlauf
|
||||||
|
@ -110,7 +110,7 @@ Settings:
|
||||||
Preferred API Backend:
|
Preferred API Backend:
|
||||||
Preferred API Backend: Bevorzugtes API-System
|
Preferred API Backend: Bevorzugtes API-System
|
||||||
Local API: Lokale API
|
Local API: Lokale API
|
||||||
Invidious API: Invidious API
|
Invidious API: Invidious-API
|
||||||
Video View Type:
|
Video View Type:
|
||||||
Video View Type: Videoansichtstyp
|
Video View Type: Videoansichtstyp
|
||||||
Grid: Gitter
|
Grid: Gitter
|
||||||
|
@ -130,7 +130,7 @@ Settings:
|
||||||
View all Invidious instance information: Alle Informationen zur Invidious-Instanz
|
View all Invidious instance information: Alle Informationen zur Invidious-Instanz
|
||||||
anzeigen
|
anzeigen
|
||||||
Theme Settings:
|
Theme Settings:
|
||||||
Theme Settings: Thema Einstellungen
|
Theme Settings: Thema-Einstellungen
|
||||||
Match Top Bar with Main Color: Obere Leiste an Hauptfarbe anpassen
|
Match Top Bar with Main Color: Obere Leiste an Hauptfarbe anpassen
|
||||||
Base Theme:
|
Base Theme:
|
||||||
Base Theme: Grundlegendes Thema
|
Base Theme: Grundlegendes Thema
|
||||||
|
@ -246,6 +246,7 @@ Settings:
|
||||||
du sicher, dass du alle Abonnements und Profile löschen möchtest? Diese Aktion
|
du sicher, dass du alle Abonnements und Profile löschen möchtest? Diese Aktion
|
||||||
kann nicht rückgängig gemacht werden.
|
kann nicht rückgängig gemacht werden.
|
||||||
Remove All Subscriptions / Profiles: Alle Abonnements / Profile löschen
|
Remove All Subscriptions / Profiles: Alle Abonnements / Profile löschen
|
||||||
|
Automatically Remove Video Meta Files: Meta-Dateien von Videos automatisch löschen
|
||||||
Data Settings:
|
Data Settings:
|
||||||
How do I import my subscriptions?: Wie importiere ich meine Abonnements?
|
How do I import my subscriptions?: Wie importiere ich meine Abonnements?
|
||||||
Unknown data key: Unbekannter Datenschlüssel
|
Unknown data key: Unbekannter Datenschlüssel
|
||||||
|
@ -669,8 +670,8 @@ Tooltips:
|
||||||
API nicht verfügbar sein sollte, automatisch die nicht bevorzugte Alternative
|
API nicht verfügbar sein sollte, automatisch die nicht bevorzugte Alternative
|
||||||
zu nutzen.
|
zu nutzen.
|
||||||
Preferred API Backend: Wähle das Backend, welches FreeTube zum Laden der Daten
|
Preferred API Backend: Wähle das Backend, welches FreeTube zum Laden der Daten
|
||||||
nutzen soll. Die lokale API ist ein integrierter Extrahierer. Die Invidious
|
nutzen soll. Die lokale API ist ein integrierter Extrahierer. Die Invidious-API
|
||||||
API dagegen verwendet einen externen Server.
|
dagegen verwendet einen externen Server.
|
||||||
Region for Trending: Die Trendregion erlaubt es dir auszuwählen, aus welchem Land
|
Region for Trending: Die Trendregion erlaubt es dir auszuwählen, aus welchem Land
|
||||||
die Trends angezeigt werden sollen. Nicht alle Optionen werden auch von YouTube
|
die Trends angezeigt werden sollen. Nicht alle Optionen werden auch von YouTube
|
||||||
unterstützt
|
unterstützt
|
||||||
|
@ -685,11 +686,14 @@ Tooltips:
|
||||||
dafür aber auch weniger Bandbreite. Audioformate umfassen reine Audiostreams.
|
dafür aber auch weniger Bandbreite. Audioformate umfassen reine Audiostreams.
|
||||||
Proxy Videos Through Invidious: Zu Invidious verbinden, um Videos abzurufen, anstatt
|
Proxy Videos Through Invidious: Zu Invidious verbinden, um Videos abzurufen, anstatt
|
||||||
eine direkten Verbindung zu YouTube aufzubauen. Überschreibt die API-Präferenz.
|
eine direkten Verbindung zu YouTube aufzubauen. Überschreibt die API-Präferenz.
|
||||||
Force Local Backend for Legacy Formats: Dies funktioniert nur wenn du die Invidious
|
Force Local Backend for Legacy Formats: Dies funktioniert nur, wenn du die Invidious-API
|
||||||
API als Standard ausgewählt hast. Die lokale API wird bei der Verwendung von
|
als Standard ausgewählt hast. Die lokale API wird bei der Verwendung von Legacy
|
||||||
Legacy Formaten diese verwenden, anstatt auf Invidious zurückzugreifen. Dies
|
-Formaten diese verwenden, anstatt auf Invidious zurückzugreifen. Dies hilft
|
||||||
hilft dann, wenn Videos von Invidious nicht abspielbar sind. Zum Beispiel aufgrund
|
dann, wenn Videos von Invidious nicht abspielbar sind aufgrund von Landesbeschränkungen.
|
||||||
von Landesbeschränkungen.
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Bei Aktivierung löscht FreeTube alle Meta-Dateien die
|
||||||
|
während der Videowiedergabe erzeugt werden, sobald die Videoseite verlassen
|
||||||
|
wird.
|
||||||
Playing Next Video Interval: Nächstes Video wird sofort abgespielt. Zum Abbrechen
|
Playing Next Video Interval: Nächstes Video wird sofort abgespielt. Zum Abbrechen
|
||||||
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
|
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
|
||||||
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
|
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
|
||||||
|
|
|
@ -195,6 +195,7 @@ Settings:
|
||||||
Privacy Settings: Privacy Settings
|
Privacy Settings: Privacy Settings
|
||||||
Remember History: Remember History
|
Remember History: Remember History
|
||||||
Save Watched Progress: Save Watched Progress
|
Save Watched Progress: Save Watched Progress
|
||||||
|
Automatically Remove Video Meta Files: Automatically Remove Video Meta Files
|
||||||
Clear Search Cache: Clear Search Cache
|
Clear Search Cache: Clear Search Cache
|
||||||
Are you sure you want to clear out your search cache?: Are you sure you want to
|
Are you sure you want to clear out your search cache?: Are you sure you want to
|
||||||
clear out your search cache?
|
clear out your search cache?
|
||||||
|
@ -570,7 +571,10 @@ Tooltips:
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
|
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
|
||||||
method for grabbing your subscription feed. RSS is faster and prevents IP blocking,
|
method for grabbing your subscription feed. RSS is faster and prevents IP blocking,
|
||||||
but doesn't provide certain information like video duration or live status.
|
but doesn't provide certain information like video duration or live status
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files created during video playback,
|
||||||
|
when the watch page is closed.
|
||||||
|
|
||||||
# Toast Messages
|
# Toast Messages
|
||||||
Local API Error (Click to copy): Local API Error (Click to copy)
|
Local API Error (Click to copy): Local API Error (Click to copy)
|
||||||
|
|
|
@ -201,6 +201,8 @@ Settings:
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Stvarno
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Stvarno
|
||||||
želiš ukloniti sve pretplate i profile? Ovo je nepovratna radnja.
|
želiš ukloniti sve pretplate i profile? Ovo je nepovratna radnja.
|
||||||
Remove All Subscriptions / Profiles: Ukloni sve pretplate/profile
|
Remove All Subscriptions / Profiles: Ukloni sve pretplate/profile
|
||||||
|
Automatically Remove Video Meta Files: Automatski ukloni datoteke metapodataka
|
||||||
|
videa
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Postavke pretplata'
|
Subscription Settings: 'Postavke pretplata'
|
||||||
Hide Videos on Watch: 'Sakrij video nakon gledanja'
|
Hide Videos on Watch: 'Sakrij video nakon gledanja'
|
||||||
|
@ -663,6 +665,10 @@ Tooltips:
|
||||||
standardne metode za dohvaćanje podataka tvoje pretplate. RSS je brži i sprečava
|
standardne metode za dohvaćanje podataka tvoje pretplate. RSS je brži i sprečava
|
||||||
blokiranje IP adresa, ali ne pruža određene podatke kao što su trajanje videa
|
blokiranje IP adresa, ali ne pruža određene podatke kao što su trajanje videa
|
||||||
ili stanja „uživo”
|
ili stanja „uživo”
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Kad je aktivirano, FreeTube automatski uklanja datoteke
|
||||||
|
metapodataka koji su stvoreni tijekom reprodukcije videa, kad se zatvori stranica
|
||||||
|
gledanja.
|
||||||
Playing Next Video Interval: Trenutna reprodukcija sljedećeg videa. Pritisni za prekid.
|
Playing Next Video Interval: Trenutna reprodukcija sljedećeg videa. Pritisni za prekid.
|
||||||
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekunde. Pritisni za prekid.
|
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekunde. Pritisni za prekid.
|
||||||
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekundi. Pritisni za prekid.
|
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekundi. Pritisni za prekid.
|
||||||
|
|
|
@ -211,6 +211,7 @@ Settings:
|
||||||
Remove All Subscriptions / Profiles: 'Összes feliratkozás és profil eltávolítása'
|
Remove All Subscriptions / Profiles: 'Összes feliratkozás és profil eltávolítása'
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Biztosan
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Biztosan
|
||||||
törli az összes feliratkozást és profilt? A művelet nem vonható vissza.'
|
törli az összes feliratkozást és profilt? A művelet nem vonható vissza.'
|
||||||
|
Automatically Remove Video Meta Files: Videométafájlok önműködő eltávolítása
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Feliratkozás beállításai'
|
Subscription Settings: 'Feliratkozás beállításai'
|
||||||
Hide Videos on Watch: 'Videók elrejtése megtekintés után'
|
Hide Videos on Watch: 'Videók elrejtése megtekintés után'
|
||||||
|
@ -664,6 +665,9 @@ Tooltips:
|
||||||
visszaadott örökölt formátumokat fogja használni az Invidious által visszaadottak
|
visszaadott örökölt formátumokat fogja használni az Invidious által visszaadottak
|
||||||
helyett. Segít, ha az Invidious által visszaküldött videókat nem lehet lejátszani
|
helyett. Segít, ha az Invidious által visszaküldött videókat nem lehet lejátszani
|
||||||
az ország korlátozása miatt
|
az ország korlátozása miatt
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Ha engedélyezve van, a FreeTube önműködőén törli a videolejátszás
|
||||||
|
során létrehozott métafájlokat, amikor a nézési oldal bezárul.
|
||||||
Playing Next Video Interval: A következő videó lejátszása folyamatban van. Kattintson
|
Playing Next Video Interval: A következő videó lejátszása folyamatban van. Kattintson
|
||||||
a törléshez. | A következő videó lejátszása {nextVideoInterval} másodperc múlva
|
a törléshez. | A következő videó lejátszása {nextVideoInterval} másodperc múlva
|
||||||
történik. Kattintson a törléshez. | A következő videó lejátszása {nextVideoInterval}
|
történik. Kattintson a törléshez. | A következő videó lejátszása {nextVideoInterval}
|
||||||
|
|
|
@ -207,6 +207,7 @@ Settings:
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Apakah
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Apakah
|
||||||
Anda yakin ingin menghapus semua langganan dan profil? Tindakan ini tidak bisa
|
Anda yakin ingin menghapus semua langganan dan profil? Tindakan ini tidak bisa
|
||||||
diurungkan.'
|
diurungkan.'
|
||||||
|
Automatically Remove Video Meta Files: Secara Otomatis Hapus File Meta Video
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Pengaturan Langganan'
|
Subscription Settings: 'Pengaturan Langganan'
|
||||||
Hide Videos on Watch: 'Sembunyikan Video saat Menonton'
|
Hide Videos on Watch: 'Sembunyikan Video saat Menonton'
|
||||||
|
@ -654,6 +655,9 @@ Tooltips:
|
||||||
Preferred API Backend: Pilih layanan yang digunakan oleh FreeTube untuk mengambil
|
Preferred API Backend: Pilih layanan yang digunakan oleh FreeTube untuk mengambil
|
||||||
data. API lokal adalah ekstraktor bawaan. API Invidious membutuhkan sambungan
|
data. API lokal adalah ekstraktor bawaan. API Invidious membutuhkan sambungan
|
||||||
ke server Invidious.
|
ke server Invidious.
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Saat diaktifkan, FreeTube secara otomatis menghapus file
|
||||||
|
meta yang dibuat selama pemutaran video, saat halaman tonton ditutup.
|
||||||
Playing Next Video Interval: Langsung putar video berikutnya. Klik untuk batal. |
|
Playing Next Video Interval: Langsung putar video berikutnya. Klik untuk batal. |
|
||||||
Putar video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal. | Putar
|
Putar video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal. | Putar
|
||||||
video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal.
|
video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal.
|
||||||
|
|
|
@ -214,6 +214,7 @@ Settings:
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Ertu
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Ertu
|
||||||
viss um að þú viljir fjarlægja allar áskriftir og notkunarsnið? Ekki er hægt
|
viss um að þú viljir fjarlægja allar áskriftir og notkunarsnið? Ekki er hægt
|
||||||
að afturkalla þetta.'
|
að afturkalla þetta.'
|
||||||
|
Automatically Remove Video Meta Files: Sjálfvirkt fjarlægja lýsigögn úr myndskeiðaskrám
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Stillingar áskrifta'
|
Subscription Settings: 'Stillingar áskrifta'
|
||||||
Hide Videos on Watch: 'Fela myndskeið eftir áhorf'
|
Hide Videos on Watch: 'Fela myndskeið eftir áhorf'
|
||||||
|
@ -588,6 +589,9 @@ Tooltips:
|
||||||
á borð við tímalengd myndskeiða eða stöðu í beinni útsendingu'
|
á borð við tímalengd myndskeiða eða stöðu í beinni útsendingu'
|
||||||
|
|
||||||
# Toast Messages
|
# Toast Messages
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Þegar þetta er virkt, eyðir FreeTube sjálfkrafa lýsigagnaskrám
|
||||||
|
sem útbúnar eru við afspilun, þegar skoðunarsíðunni er lokað.
|
||||||
Local API Error (Click to copy): 'Villa í staðværu API-kerfisviðmóti (smella til að
|
Local API Error (Click to copy): 'Villa í staðværu API-kerfisviðmóti (smella til að
|
||||||
afrita)'
|
afrita)'
|
||||||
Invidious API Error (Click to copy): 'Villa í Invidious API-kerfisviðmóti (smella
|
Invidious API Error (Click to copy): 'Villa í Invidious API-kerfisviðmóti (smella
|
||||||
|
|
|
@ -44,7 +44,7 @@ Search Filters:
|
||||||
Time:
|
Time:
|
||||||
Time: 'Tijd'
|
Time: 'Tijd'
|
||||||
Any Time: 'Ooit'
|
Any Time: 'Ooit'
|
||||||
Last Hour: 'Laatste uur'
|
Last Hour: 'Afgelopen uur'
|
||||||
Today: 'Vandaag'
|
Today: 'Vandaag'
|
||||||
This Week: 'Deze week'
|
This Week: 'Deze week'
|
||||||
This Month: 'Deze maand'
|
This Month: 'Deze maand'
|
||||||
|
@ -62,7 +62,7 @@ Search Filters:
|
||||||
Long (> 20 minutes): 'Lang (> 20 minuten)'
|
Long (> 20 minutes): 'Lang (> 20 minuten)'
|
||||||
# On Search Page
|
# On Search Page
|
||||||
Search Results: 'Zoekresultaten'
|
Search Results: 'Zoekresultaten'
|
||||||
Fetching results. Please wait: 'Resultaten verzamelen. Een momentje'
|
Fetching results. Please wait: 'Resultaten verzamelen. Even geduld aub'
|
||||||
Fetch more results: 'Meer resultaten laden'
|
Fetch more results: 'Meer resultaten laden'
|
||||||
# Sidebar
|
# Sidebar
|
||||||
There are no more results for this search: Er zijn geen verdere resultaten voor
|
There are no more results for this search: Er zijn geen verdere resultaten voor
|
||||||
|
@ -70,24 +70,24 @@ Search Filters:
|
||||||
Subscriptions:
|
Subscriptions:
|
||||||
# On Subscriptions Page
|
# On Subscriptions Page
|
||||||
Subscriptions: 'Abonnementen'
|
Subscriptions: 'Abonnementen'
|
||||||
Latest Subscriptions: 'Nieuwste Van Abonnementen'
|
Latest Subscriptions: 'Nieuwste Abonnementen'
|
||||||
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'U
|
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'U
|
||||||
heeft nog geen Abonnementen. Voeg abonnementen toe om ze hier te zien'
|
heeft nog geen Abonnementen. Voeg abonnementen toe om ze hier te zien'
|
||||||
'Getting Subscriptions. Please wait.': ''
|
'Getting Subscriptions. Please wait.': ''
|
||||||
Refresh Subscriptions: Vernieuw abonnementen
|
Refresh Subscriptions: Vernieuw abonnementen
|
||||||
Getting Subscriptions. Please wait.: Abonnementen verzamelen. Een momentje.
|
Getting Subscriptions. Please wait.: Abonnementen verzamelen. Even geduld aub.
|
||||||
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Dit
|
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Dit
|
||||||
profiel heeft een groot aantal abonnementen. RSS wordt geforceerd om tariefbeperkingen
|
profiel heeft een groot aantal abonnementen. Forceer RSS om snelheidsbeperking
|
||||||
te voorkomen
|
te vermijden
|
||||||
Load More Videos: Laad Meer Video's
|
Load More Videos: Meer Video's Laden
|
||||||
Trending: 'Trending'
|
Trending: 'Trending'
|
||||||
Most Popular: 'Populair'
|
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
|
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
|
opgeslagen video's is leeg. Klik op de opslaan knop in de hoek van een video om
|
||||||
om het hier in de lijst te plaatsen
|
het hier in de lijst te plaatsen
|
||||||
Playlist Message: Deze pagina is niet reflectief van volledig functionele afspeellijst.
|
Playlist Message: Deze pagina is niet reflectief van volledig functionele afspeellijst.
|
||||||
Er worden alleen video's weergegeven die jij hebt opgeslagen of gefavoriet. Wanneer
|
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
|
we klaar zijn met de ontwikkeling van deze feature zullen al deze video's worden
|
||||||
|
@ -112,7 +112,7 @@ Settings:
|
||||||
Local API: 'Lokale API'
|
Local API: 'Lokale API'
|
||||||
Invidious API: 'Invidious API'
|
Invidious API: 'Invidious API'
|
||||||
Video View Type:
|
Video View Type:
|
||||||
Video View Type: 'Video Toontype'
|
Video View Type: 'Type Videoweergave'
|
||||||
Grid: 'Raster'
|
Grid: 'Raster'
|
||||||
List: 'Lijst'
|
List: 'Lijst'
|
||||||
Thumbnail Preference:
|
Thumbnail Preference:
|
||||||
|
@ -130,14 +130,14 @@ Settings:
|
||||||
View all Invidious instance information: Bekijk alle Invidious-instantiegegevens
|
View all Invidious instance information: Bekijk alle Invidious-instantiegegevens
|
||||||
Theme Settings:
|
Theme Settings:
|
||||||
Theme Settings: 'Thema Instellingen'
|
Theme Settings: 'Thema Instellingen'
|
||||||
Match Top Bar with Main Color: 'Paar Bovenste Balk met Primaire Kleur'
|
Match Top Bar with Main Color: 'Laat de bovenste balk overeenkomen met de hoofdkleur'
|
||||||
Base Theme:
|
Base Theme:
|
||||||
Base Theme: 'Basisthema'
|
Base Theme: 'Basisthema'
|
||||||
Black: 'Zwart'
|
Black: 'Zwart'
|
||||||
Dark: 'Donker'
|
Dark: 'Donker'
|
||||||
Light: 'Licht'
|
Light: 'Licht'
|
||||||
Main Color Theme:
|
Main Color Theme:
|
||||||
Main Color Theme: 'Primaire Themakleur'
|
Main Color Theme: 'Hoofdkleur Thema'
|
||||||
Red: 'Rood'
|
Red: 'Rood'
|
||||||
Pink: 'Roze'
|
Pink: 'Roze'
|
||||||
Purple: 'Paars'
|
Purple: 'Paars'
|
||||||
|
@ -161,7 +161,7 @@ Settings:
|
||||||
Disable Smooth Scrolling: Vloeiend Scrollen Uitschakelen
|
Disable Smooth Scrolling: Vloeiend Scrollen Uitschakelen
|
||||||
Player Settings:
|
Player Settings:
|
||||||
Player Settings: 'Speler Instellingen'
|
Player Settings: 'Speler Instellingen'
|
||||||
Force Local Backend for Legacy Formats: 'Forceer Lokale Backend Voor Legacy Indelingen'
|
Force Local Backend for Legacy Formats: 'Lokale Backend Forceren voor Oudere Formaten'
|
||||||
Play Next Video: 'Volgende Video Automatisch Afspelen'
|
Play Next Video: 'Volgende Video Automatisch Afspelen'
|
||||||
Turn on Subtitles by Default: 'Schakel Ondertiteling Standaard in'
|
Turn on Subtitles by Default: 'Schakel Ondertiteling Standaard in'
|
||||||
Autoplay Videos: 'Video''s Automatisch Afspelen'
|
Autoplay Videos: 'Video''s Automatisch Afspelen'
|
||||||
|
@ -171,10 +171,10 @@ Settings:
|
||||||
Default Volume: 'Standaard Volume'
|
Default Volume: 'Standaard Volume'
|
||||||
Default Playback Rate: 'Standaard Afspeelsnelheid'
|
Default Playback Rate: 'Standaard Afspeelsnelheid'
|
||||||
Default Video Format:
|
Default Video Format:
|
||||||
Default Video Format: 'Standaard Video-Indeling'
|
Default Video Format: 'Standaard Videoformaat'
|
||||||
Dash Formats: 'Dash Indelingen'
|
Dash Formats: 'Dash Formaten'
|
||||||
Legacy Formats: 'Legacy Indelingen'
|
Legacy Formats: 'Verouderde formaten'
|
||||||
Audio Formats: 'Audio Indelingen'
|
Audio Formats: 'Audio Formaten'
|
||||||
Default Quality:
|
Default Quality:
|
||||||
Default Quality: 'Standaard Videokwaliteit'
|
Default Quality: 'Standaard Videokwaliteit'
|
||||||
Auto: 'Automatisch'
|
Auto: 'Automatisch'
|
||||||
|
@ -190,20 +190,21 @@ Settings:
|
||||||
Playlist Next Video Interval: Afspeellijst Volgende Video Tussentijd
|
Playlist Next Video Interval: Afspeellijst Volgende Video Tussentijd
|
||||||
Privacy Settings:
|
Privacy Settings:
|
||||||
Privacy Settings: 'Privacy Instellingen'
|
Privacy Settings: 'Privacy Instellingen'
|
||||||
Remember History: 'Herinner Geschiedenis'
|
Remember History: 'Onthoud Geschiedenis'
|
||||||
Save Watched Progress: 'Herinner Video Voortgang'
|
Save Watched Progress: 'Bewaar Bekeken Voortgang'
|
||||||
Clear Search Cache: 'Verwijder Zoek-cache'
|
Clear Search Cache: 'Verwijder Zoek-Cache'
|
||||||
Are you sure you want to clear out your search cache?: 'Weet u zeker dat u de
|
Are you sure you want to clear out your search cache?: 'Weet u zeker dat u de
|
||||||
zoek-cache wil verwijderen?'
|
zoek-cache wil verwijderen?'
|
||||||
Search cache has been cleared: 'De zoek-cache is verwijdert'
|
Search cache has been cleared: 'De zoek-cache is verwijderd'
|
||||||
Remove Watch History: 'Verwijder Kijkgeschiedenis'
|
Remove Watch History: 'Verwijder Kijkgeschiedenis'
|
||||||
Are you sure you want to remove your entire watch history?: 'Weet u zeker dat
|
Are you sure you want to remove your entire watch history?: 'Weet u zeker dat
|
||||||
u uw volledige kijkgeschiedenis wil verwijderen?'
|
u uw volledige kijkgeschiedenis wil verwijderen?'
|
||||||
Watch history has been cleared: 'Kijkgeschiedenis is verwijdert'
|
Watch history has been cleared: 'Kijkgeschiedenis is verwijderd'
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Weet
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Weet
|
||||||
u zeker dat u alle abonnementen en profielen wil verwijderen? Dit kan niet worden
|
u zeker dat u alle abonnementen en profielen wil verwijderen? Dit kan niet worden
|
||||||
ontdaan.
|
ontdaan.
|
||||||
Remove All Subscriptions / Profiles: Verwijder alle Abonnementen / Profielen
|
Remove All Subscriptions / Profiles: Verwijder alle Abonnementen / Profielen
|
||||||
|
Automatically Remove Video Meta Files: Video-Metabestanden Automatisch Verwijderen
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Abonnement instellingen'
|
Subscription Settings: 'Abonnement instellingen'
|
||||||
Hide Videos on Watch: 'Verberg Video''s Zodra Bekeken'
|
Hide Videos on Watch: 'Verberg Video''s Zodra Bekeken'
|
||||||
|
@ -249,7 +250,7 @@ Settings:
|
||||||
niet genoeg data, item word overgeslagen
|
niet genoeg data, item word overgeslagen
|
||||||
Subscriptions have been successfully exported: Abonnementen zijn met succes geïmporteerd
|
Subscriptions have been successfully exported: Abonnementen zijn met succes geïmporteerd
|
||||||
Invalid history file: Ongeldig geschiedenisbestand
|
Invalid history file: Ongeldig geschiedenisbestand
|
||||||
This might take a while, please wait: Dit kan eventjes duren, een momentje
|
This might take a while, please wait: Dit kan eventjes duren, even geduld aub
|
||||||
Invalid subscriptions file: Ongeldig abonnementenbestand
|
Invalid subscriptions file: Ongeldig abonnementenbestand
|
||||||
One or more subscriptions were unable to be imported: Een of meer abonnementen
|
One or more subscriptions were unable to be imported: Een of meer abonnementen
|
||||||
konden niet worden geïmporteerd
|
konden niet worden geïmporteerd
|
||||||
|
@ -296,7 +297,7 @@ Settings:
|
||||||
Hide Playlists: Verberg Afspeellijst
|
Hide Playlists: Verberg Afspeellijst
|
||||||
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 en verandering toepassen?
|
||||||
Proxy Settings:
|
Proxy Settings:
|
||||||
Error getting network information. Is your proxy configured properly?: Fout bij
|
Error getting network information. Is your proxy configured properly?: Fout bij
|
||||||
het opvragen van netwerk informatie. Is uw proxy correct geconfigureerd?
|
het opvragen van netwerk informatie. Is uw proxy correct geconfigureerd?
|
||||||
|
@ -307,7 +308,7 @@ Settings:
|
||||||
Your Info: Uw Informatie
|
Your Info: Uw Informatie
|
||||||
Test Proxy: Test Proxy
|
Test Proxy: Test Proxy
|
||||||
Clicking on Test Proxy will send a request to: Door op Test Proxy te klikken zal
|
Clicking on Test Proxy will send a request to: Door op Test Proxy te klikken zal
|
||||||
er een request worden verstuurd naar
|
er een verzoek worden verstuurd naar
|
||||||
Proxy Port Number: Proxy Poortnummer
|
Proxy Port Number: Proxy Poortnummer
|
||||||
Proxy Host: Proxy Host
|
Proxy Host: Proxy Host
|
||||||
Proxy Protocol: Proxy Protocol
|
Proxy Protocol: Proxy Protocol
|
||||||
|
@ -346,7 +347,7 @@ About:
|
||||||
|
|
||||||
#On Channel Page
|
#On Channel Page
|
||||||
Donate: Doneer
|
Donate: Doneer
|
||||||
these people and projects: deze mensen en project
|
these people and projects: deze mensen en projecten
|
||||||
FreeTube is made possible by: FreeTube is mogelijk gemaakt door
|
FreeTube is made possible by: FreeTube is mogelijk gemaakt door
|
||||||
Credits: Met dank aan
|
Credits: Met dank aan
|
||||||
Translate: Vertalen
|
Translate: Vertalen
|
||||||
|
@ -377,18 +378,19 @@ Channel:
|
||||||
Unsubscribe: 'Afmelden'
|
Unsubscribe: 'Afmelden'
|
||||||
Search Channel: 'Zoek op Kanaal'
|
Search Channel: 'Zoek op Kanaal'
|
||||||
Your search results have returned 0 results: 'Uw zoekactie heeft 0 resultaten opgeleverd'
|
Your search results have returned 0 results: 'Uw zoekactie heeft 0 resultaten opgeleverd'
|
||||||
Sort By: 'Sorteer Bij'
|
Sort By: 'Sorteer Op'
|
||||||
Videos:
|
Videos:
|
||||||
Videos: 'Video''s'
|
Videos: 'Video''s'
|
||||||
This channel does not currently have any videos: 'Dit kanaal heeft nog geen video''s'
|
This channel does not currently have any videos: 'Dit kanaal heeft op dit moment
|
||||||
|
nog geen video''s'
|
||||||
Sort Types:
|
Sort Types:
|
||||||
Newest: 'Nieuwste'
|
Newest: 'Nieuwste'
|
||||||
Oldest: 'Oudste'
|
Oldest: 'Oudste'
|
||||||
Most Popular: 'Meest Populair'
|
Most Popular: 'Meest Populair'
|
||||||
Playlists:
|
Playlists:
|
||||||
Playlists: 'Afspeellijsten'
|
Playlists: 'Afspeellijsten'
|
||||||
This channel does not currently have any playlists: 'Dit kanaal heeft nog geen
|
This channel does not currently have any playlists: 'Dit kanaal heeft momenteel
|
||||||
afspeellijsten'
|
nog geen afspeellijsten'
|
||||||
Sort Types:
|
Sort Types:
|
||||||
Last Video Added: 'Laatst Toegevoegd'
|
Last Video Added: 'Laatst Toegevoegd'
|
||||||
Newest: 'Nieuwste'
|
Newest: 'Nieuwste'
|
||||||
|
@ -466,12 +468,12 @@ Video:
|
||||||
#& Videos
|
#& Videos
|
||||||
Autoplay: Automatisch Afspelen
|
Autoplay: Automatisch Afspelen
|
||||||
Play Previous Video: Speel Vorige Video af
|
Play Previous Video: Speel Vorige Video af
|
||||||
Play Next Video: Volgende Video Automatisch Afspelen
|
Play Next Video: Volgende Video Afspelen
|
||||||
Reverse Playlist: Playlist Omkeren
|
Reverse Playlist: Afspeellijst Omkeren
|
||||||
Shuffle Playlist: Schuifelen Playlist
|
Shuffle Playlist: Afspeellijst in willekeurige volgorde afspelen
|
||||||
Loop Playlist: Herhaal Playlist
|
Loop Playlist: Herhaal Playlist
|
||||||
Starting soon, please refresh the page to check again: Begint spoedig, a.u.b. herlaad
|
Starting soon, please refresh the page to check again: Start binnenkort, vernieuw
|
||||||
de pagina om nog maal te checken
|
de pagina om opnieuw te controleren
|
||||||
Audio:
|
Audio:
|
||||||
Best: Beste
|
Best: Beste
|
||||||
High: Hoog
|
High: Hoog
|
||||||
|
@ -516,13 +518,13 @@ Playlist:
|
||||||
#& Views
|
#& Views
|
||||||
Toggle Theatre Mode: 'Schakel Theatermodus In'
|
Toggle Theatre Mode: 'Schakel Theatermodus In'
|
||||||
Change Format:
|
Change Format:
|
||||||
Change Video Formats: 'Verander Video indeling'
|
Change Video Formats: 'Verander Video Formaten'
|
||||||
Use Dash Formats: 'Gebruik Dash Indelingen'
|
Use Dash Formats: 'Gebruik Dash Formaten'
|
||||||
Use Legacy Formats: 'Gebruik Legacy Indelingen'
|
Use Legacy Formats: 'Gebruik Legacy Formaten'
|
||||||
Use Audio Formats: 'Gebruik Audio Indelingen'
|
Use Audio Formats: 'Gebruik Audio Formaten'
|
||||||
Audio formats are not available for this video: Audio indelingen zijn niet beschikbaar
|
Audio formats are not available for this video: Audio formaten zijn niet beschikbaar
|
||||||
voor deze video
|
voor deze video
|
||||||
Dash formats are not available for this video: Dash indelingen zijn niet beschikbaar
|
Dash formats are not available for this video: Dash formaten zijn niet beschikbaar
|
||||||
voor deze video
|
voor deze video
|
||||||
Share:
|
Share:
|
||||||
Share Video: 'Deel Video'
|
Share Video: 'Deel Video'
|
||||||
|
@ -537,7 +539,7 @@ Share:
|
||||||
YouTube URL copied to clipboard: 'YouTube URL is gekopieerd naar het klembord'
|
YouTube URL copied to clipboard: 'YouTube URL is gekopieerd naar het klembord'
|
||||||
YouTube Embed URL copied to clipboard: 'YouTube Insluitlink is gekopieerd naar het
|
YouTube Embed URL copied to clipboard: 'YouTube Insluitlink is gekopieerd naar het
|
||||||
klemboard'
|
klemboard'
|
||||||
Include Timestamp: Begrijp Tijdstempel In
|
Include Timestamp: Inclusief Tijdstempel
|
||||||
YouTube Channel URL copied to clipboard: YouTube URL is gekopieerd naar het klembord
|
YouTube Channel URL copied to clipboard: YouTube URL is gekopieerd naar het klembord
|
||||||
Invidious Channel URL copied to clipboard: Invidious Kanaal URL is gekopieerd naar
|
Invidious Channel URL copied to clipboard: Invidious Kanaal URL is gekopieerd naar
|
||||||
het klembord
|
het klembord
|
||||||
|
@ -545,7 +547,7 @@ Mini Player: 'Minispeler'
|
||||||
Comments:
|
Comments:
|
||||||
Comments: 'Reacties'
|
Comments: 'Reacties'
|
||||||
Click to View Comments: 'Klik om Reacties Te Tonen'
|
Click to View Comments: 'Klik om Reacties Te Tonen'
|
||||||
Getting comment replies, please wait: 'Reacties worden verzameld, een momentje'
|
Getting comment replies, please wait: 'Reacties worden verzameld, even geduld aub'
|
||||||
Show Comments: 'Toon Reacties'
|
Show Comments: 'Toon Reacties'
|
||||||
Hide Comments: 'Verberg Reacties'
|
Hide Comments: 'Verberg Reacties'
|
||||||
# Context: View 10 Replies, View 1 Reply
|
# Context: View 10 Replies, View 1 Reply
|
||||||
|
@ -553,14 +555,15 @@ Comments:
|
||||||
Hide: 'Verberg'
|
Hide: 'Verberg'
|
||||||
Replies: 'Reacties'
|
Replies: 'Reacties'
|
||||||
Reply: 'Reactie'
|
Reply: 'Reactie'
|
||||||
There are no comments available for this video: 'Er zijn geen reacties op deze video'
|
There are no comments available for this video: 'Er zijn geen reacties beschikbaar
|
||||||
Load More Comments: 'Laad Meer Reacties'
|
voor deze video'
|
||||||
|
Load More Comments: 'Meer Reacties Laden'
|
||||||
There are no more comments for this video: Er zijn geen verdere reacties op deze
|
There are no more comments for this video: Er zijn geen verdere reacties op deze
|
||||||
video
|
video
|
||||||
No more comments available: Er zijn niet meer reacties beschikbaar
|
No more comments available: Er zijn geen reacties meer beschikbaar
|
||||||
Newest first: Nieuwste Eerst
|
Newest first: Nieuwste Eerst
|
||||||
Top comments: Bovenste reacties
|
Top comments: Top Reacties
|
||||||
Sort by: Sorteer Bij
|
Sort by: Sorteer Op
|
||||||
Up Next: 'Volgende'
|
Up Next: 'Volgende'
|
||||||
|
|
||||||
# Toast Messages
|
# Toast Messages
|
||||||
|
@ -571,8 +574,8 @@ Falling back to the local API: 'Terugvallen op lokale API'
|
||||||
Subscriptions have not yet been implemented: 'Abonnementen zijn nog niet geïmplementeerd'
|
Subscriptions have not yet been implemented: 'Abonnementen zijn nog niet geïmplementeerd'
|
||||||
Loop is now disabled: 'Herhalen is nu uitgeschakeld'
|
Loop is now disabled: 'Herhalen is nu uitgeschakeld'
|
||||||
Loop is now enabled: 'Herhalen is nu ingeschakeld'
|
Loop is now enabled: 'Herhalen is nu ingeschakeld'
|
||||||
Shuffle is now disabled: 'Schuifelen is nu uitgeschakeld'
|
Shuffle is now disabled: 'Willekeurig afspelen is nu uitgeschakeld'
|
||||||
Shuffle is now enabled: 'Schuifelen is nu ingeschakeld'
|
Shuffle is now enabled: 'Willekeurig afspelen is nu ingeschakeld'
|
||||||
Playing Next Video: 'Volgende Video Word Afgespeeld'
|
Playing Next Video: 'Volgende Video Word Afgespeeld'
|
||||||
Playing Previous Video: 'Vorige Video Word Afgespeeld'
|
Playing Previous Video: 'Vorige Video Word Afgespeeld'
|
||||||
Playing next video in 5 seconds. Click to cancel: 'Volgende Video Begint in 5 Seconden.
|
Playing next video in 5 seconds. Click to cancel: 'Volgende Video Begint in 5 Seconden.
|
||||||
|
@ -588,14 +591,14 @@ Profile:
|
||||||
$ is now the active profile: $ is nu het actieve profiel
|
$ is now the active profile: $ is nu het actieve profiel
|
||||||
Your default profile has been changed to your primary profile: Uw standaardprofiel
|
Your default profile has been changed to your primary profile: Uw standaardprofiel
|
||||||
is veranderd naar uw hoofdprofiel
|
is veranderd naar uw hoofdprofiel
|
||||||
Removed $ from your profiles: $ is verwijdert uit uw profielen
|
Removed $ from your profiles: $ is verwijderd uit uw profielen
|
||||||
Your default profile has been set to $: Uw standaard profiel is ingesteld op $
|
Your default profile has been set to $: Uw standaard profiel is ingesteld op $
|
||||||
Profile has been updated: Profiel is geüpdate
|
Profile has been updated: Profiel is geüpdate
|
||||||
Profile has been created: Profiel is aangemaakt
|
Profile has been created: Profiel is aangemaakt
|
||||||
Your profile name cannot be empty: U profiel naam kan niet leeg zijn
|
Your profile name cannot be empty: Uw profielnaam mag niet leeg zijn
|
||||||
Profile could not be found: Profiel kon niet worden gevonden
|
Profile could not be found: Profiel kon niet worden gevonden
|
||||||
All subscriptions will also be deleted.: Alle abonnementen zullen worden verwijderd.
|
All subscriptions will also be deleted.: Alle abonnementen zullen ook worden verwijderd.
|
||||||
Are you sure you want to delete this profile?: Weet u zeker dat u dit profiel wil
|
Are you sure you want to delete this profile?: Weet u zeker dat u dit profiel wilt
|
||||||
verwijderen?
|
verwijderen?
|
||||||
Delete Profile: Verwijder Profiel
|
Delete Profile: Verwijder Profiel
|
||||||
Make Default Profile: Creëer Standaard Profiel
|
Make Default Profile: Creëer Standaard Profiel
|
||||||
|
@ -605,7 +608,7 @@ Profile:
|
||||||
Custom Color: Eigen Kleur
|
Custom Color: Eigen Kleur
|
||||||
Color Picker: Kleur Kiezer
|
Color Picker: Kleur Kiezer
|
||||||
Edit Profile: Pas Profiel aan
|
Edit Profile: Pas Profiel aan
|
||||||
Create New Profile: Creëer een Nieuw Profile
|
Create New Profile: Creëer een Nieuw Profiel
|
||||||
Profile Manager: Beheer Profiel
|
Profile Manager: Beheer Profiel
|
||||||
All Channels: Alle Kanalen
|
All Channels: Alle Kanalen
|
||||||
Profile Select: Selecteer een Profiel
|
Profile Select: Selecteer een Profiel
|
||||||
|
@ -631,8 +634,8 @@ Download From Site: Download van de Website
|
||||||
Version $ is now available! Click for more details: Versie $ is nu beschikbaar! Klik
|
Version $ is now available! Click for more details: Versie $ is nu beschikbaar! Klik
|
||||||
voor meer informatie
|
voor meer informatie
|
||||||
This video is unavailable because of missing formats. This can happen due to country unavailability.: Deze
|
This video is unavailable because of missing formats. This can happen due to country unavailability.: Deze
|
||||||
video is niet beschikbaar vanwege ontbrekende video indelingen. Dit kan gebeuren
|
video is niet beschikbaar vanwege ontbrekende videoformaten. Dit kan gebeuren als
|
||||||
als de video niet in uw land beschikbaar is.
|
de video niet in uw land beschikbaar is.
|
||||||
Tooltips:
|
Tooltips:
|
||||||
Player Settings:
|
Player Settings:
|
||||||
Default Video Format: Selecteer de video indeling dat wordt gebruikt wanneer u
|
Default Video Format: Selecteer de video indeling dat wordt gebruikt wanneer u
|
||||||
|
@ -667,6 +670,10 @@ Tooltips:
|
||||||
Region for Trending: Met trend regio kan je instellen uit welk land je trending
|
Region for Trending: Met trend regio kan je instellen uit welk land je trending
|
||||||
video's je wil zien. Niet alle weergegeven landen worden ook daadwerkelijk ondersteund
|
video's je wil zien. Niet alle weergegeven landen worden ook daadwerkelijk ondersteund
|
||||||
door YouTube
|
door YouTube
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Wanneer ingeschakeld zal FreeTube automatisch meta bestanden
|
||||||
|
die worden gecreëerd tijdens het afspelen van video's verwijderen zodra de pagina
|
||||||
|
wordt gesloten.
|
||||||
Playing Next Video Interval: Volgende video wordt afgespeeld. Klik om te onderbreken.
|
Playing Next Video Interval: Volgende video wordt afgespeeld. Klik om te onderbreken.
|
||||||
| Volgende video wordt afgespeeld in {nextVideoInterval} seconde. Klik om te onderbreken.
|
| Volgende video wordt afgespeeld in {nextVideoInterval} seconde. Klik om te onderbreken.
|
||||||
| Volgende video wordt afgespeeld in {nextVideoInterval} seconden. Klik om te onderbreken.
|
| Volgende video wordt afgespeeld in {nextVideoInterval} seconden. Klik om te onderbreken.
|
||||||
|
|
|
@ -244,6 +244,7 @@ Settings:
|
||||||
jesteś pewny/a, że chcesz usunąć wszystkie subskrypcje i profile? Nie będzie
|
jesteś pewny/a, że chcesz usunąć wszystkie subskrypcje i profile? Nie będzie
|
||||||
można tego cofnąć.
|
można tego cofnąć.
|
||||||
Remove All Subscriptions / Profiles: Usuń wszystkie subskrypcje / profile
|
Remove All Subscriptions / Profiles: Usuń wszystkie subskrypcje / profile
|
||||||
|
Automatically Remove Video Meta Files: Samoczynnie usuwaj pliki metadanych filmu
|
||||||
Data Settings:
|
Data Settings:
|
||||||
How do I import my subscriptions?: Jak mogę zaimportować swoje subskrypcje?
|
How do I import my subscriptions?: Jak mogę zaimportować swoje subskrypcje?
|
||||||
Unknown data key: Nieznany klucz danych
|
Unknown data key: Nieznany klucz danych
|
||||||
|
@ -675,6 +676,9 @@ Tooltips:
|
||||||
720p, ale zużywają mniej przepustowości. Formaty audio odtwarzają tylko dźwięk
|
720p, ale zużywają mniej przepustowości. Formaty audio odtwarzają tylko dźwięk
|
||||||
Proxy Videos Through Invidious: Będzie dostarczał filmy, łącząc się z Invidious,
|
Proxy Videos Through Invidious: Będzie dostarczał filmy, łącząc się z Invidious,
|
||||||
a nie bezpośrednio z YouTube. Nadpisuje ustawienia API
|
a nie bezpośrednio z YouTube. Nadpisuje ustawienia API
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Po włączeniu FreeTube samoczynnie usunie pliki metadanych
|
||||||
|
utworzone podczas odtwarzania filmu, gdy tylko strona odtwarzania zostanie zamknięta.
|
||||||
Playing Next Video Interval: Odtwarzanie kolejnego filmu już za chwilę. Wciśnij aby
|
Playing Next Video Interval: Odtwarzanie kolejnego filmu już za chwilę. Wciśnij aby
|
||||||
przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekundę. Wciśnij
|
przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekundę. Wciśnij
|
||||||
aby przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekund. Wciśnij
|
aby przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekund. Wciśnij
|
||||||
|
|
|
@ -185,6 +185,7 @@ Settings:
|
||||||
1440p: '1440p'
|
1440p: '1440p'
|
||||||
4k: '4k'
|
4k: '4k'
|
||||||
8k: '8k'
|
8k: '8k'
|
||||||
|
Playlist Next Video Interval: Intervalo do próximo vídeo da lista de reprodução
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Configurações de inscrições'
|
Subscription Settings: 'Configurações de inscrições'
|
||||||
Hide Videos on Watch: 'Esconder vídeos após assisti-los'
|
Hide Videos on Watch: 'Esconder vídeos após assisti-los'
|
||||||
|
@ -241,6 +242,8 @@ Settings:
|
||||||
certeza de que quer apagar todas as inscrições e perfis? Esta ação não pode
|
certeza de que quer apagar todas as inscrições e perfis? Esta ação não pode
|
||||||
ser desfeita.
|
ser desfeita.
|
||||||
Remove All Subscriptions / Profiles: Remover Todas as Inscrições / Perfis
|
Remove All Subscriptions / Profiles: Remover Todas as Inscrições / Perfis
|
||||||
|
Automatically Remove Video Meta Files: Remover automaticamente os metarquivos
|
||||||
|
de vídeo
|
||||||
Data Settings:
|
Data Settings:
|
||||||
Subscriptions have been successfully exported: Inscrições foram exportadas com
|
Subscriptions have been successfully exported: Inscrições foram exportadas com
|
||||||
sucesso
|
sucesso
|
||||||
|
@ -291,6 +294,7 @@ Settings:
|
||||||
Hide Video Likes And Dislikes: Ocultar curtidas e desgostos do vídeo
|
Hide Video Likes And Dislikes: Ocultar curtidas e desgostos do vídeo
|
||||||
Hide Video Views: Ocultar Visualizações de Vídeo
|
Hide Video Views: Ocultar Visualizações de Vídeo
|
||||||
Hide Active Subscriptions: Ocultar Inscrições Ativas
|
Hide Active Subscriptions: Ocultar Inscrições Ativas
|
||||||
|
Hide Playlists: Ocultar listas de reprodução
|
||||||
The app needs to restart for changes to take effect. Restart and apply change?: O
|
The app needs to restart for changes to take effect. Restart and apply change?: O
|
||||||
aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar
|
aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar
|
||||||
mudança?
|
mudança?
|
||||||
|
@ -621,6 +625,7 @@ Profile:
|
||||||
Profile has been updated: Perfil atualizado
|
Profile has been updated: Perfil atualizado
|
||||||
Profile has been created: Perfil criado
|
Profile has been created: Perfil criado
|
||||||
Your profile name cannot be empty: Seu nome de perfil não pode ficar em branco
|
Your profile name cannot be empty: Seu nome de perfil não pode ficar em branco
|
||||||
|
Profile Filter: Filtro de Perfil
|
||||||
Version $ is now available! Click for more details: Versão $ está disponível agora!
|
Version $ is now available! Click for more details: Versão $ está disponível agora!
|
||||||
Clique para mais detalhes
|
Clique para mais detalhes
|
||||||
A new blog is now available, $. Click to view more: Um novo blog está disponível,
|
A new blog is now available, $. Click to view more: Um novo blog está disponível,
|
||||||
|
@ -633,7 +638,7 @@ This video is unavailable because of missing formats. This can happen due to cou
|
||||||
Tooltips:
|
Tooltips:
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Fetch Feeds from RSS: Quando ativado, o FreeTube usará RSS em vez de seu método
|
Fetch Feeds from RSS: Quando ativado, o FreeTube usará RSS em vez de seu método
|
||||||
padrão para obter o feed de sua assinatura. O RSS é mais rápido e evita o bloqueio
|
padrão para obter o feed de sua assinatura. O RSS é mais rápido e evita bloqueio
|
||||||
de IP, mas não fornece certas informações como duração do vídeo ou status ao
|
de IP, mas não fornece certas informações como duração do vídeo ou status ao
|
||||||
vivo
|
vivo
|
||||||
Player Settings:
|
Player Settings:
|
||||||
|
@ -663,4 +668,12 @@ Tooltips:
|
||||||
Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados.
|
Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados.
|
||||||
A API local é um extrator integrado. A API Invidious requer um servidor Invidious
|
A API local é um extrator integrado. A API Invidious requer um servidor Invidious
|
||||||
para se conectar.
|
para se conectar.
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os
|
||||||
|
metarquivos criados durante a reprodução do vídeo quando a página de exibição
|
||||||
|
é fechada.
|
||||||
More: Mais
|
More: Mais
|
||||||
|
Playing Next Video Interval: Reproduzindo o próximo vídeo imediatamente. Clique para
|
||||||
|
cancelar. | Reproduzindo o próximo vídeo em {nextVideoInterval} segundo(s). Clique
|
||||||
|
para cancelar. | Reproduzindo o próximo vídeo em {nextVideoInterval} segundos. Clique
|
||||||
|
para cancelar.
|
||||||
|
|
|
@ -189,9 +189,10 @@ Settings:
|
||||||
Remember History: ''
|
Remember History: ''
|
||||||
Save Watched Progress: ''
|
Save Watched Progress: ''
|
||||||
Clear Search Cache: ''
|
Clear Search Cache: ''
|
||||||
Are you sure you want to clear out your search cache?: ''
|
Are you sure you want to clear out your search cache?: 'Sunteti siguri ca doriti
|
||||||
Search cache has been cleared: ''
|
sa stergeti chache-ul cautarilor ?'
|
||||||
Remove Watch History: ''
|
Search cache has been cleared: 'Cache-ul cautarilor a fost sters'
|
||||||
|
Remove Watch History: 'Sterge Istoricul Vizualizarilor'
|
||||||
Are you sure you want to remove your entire watch history?: ''
|
Are you sure you want to remove your entire watch history?: ''
|
||||||
Watch history has been cleared: ''
|
Watch history has been cleared: ''
|
||||||
Remove All Subscriptions / Profiles: ''
|
Remove All Subscriptions / Profiles: ''
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
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.': >-
|
||||||
Эта часть приложения еще не готова. Вернитесь позже, когда будет достигнут прогресс.
|
Эта часть приложения ещё не готова. Вернитесь позже, когда будет достигнут прогресс.
|
||||||
|
|
||||||
# Webkit Menu Bar
|
# Webkit Menu Bar
|
||||||
File: 'Файл'
|
File: 'Файл'
|
||||||
|
@ -127,21 +127,21 @@ Settings:
|
||||||
View all Invidious instance information: Показать все доступные экземпляры Invidious
|
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: 'Верхняя панель основного цвета'
|
||||||
Base Theme:
|
Base Theme:
|
||||||
Base Theme: 'Базовая тема'
|
Base Theme: 'Базовая тема'
|
||||||
Black: 'Чёрная'
|
Black: 'Чёрная'
|
||||||
Dark: 'Тёмная'
|
Dark: 'Тёмная'
|
||||||
Light: 'Светлая'
|
Light: 'Светлая'
|
||||||
Main Color Theme:
|
Main Color Theme:
|
||||||
Main Color Theme: 'Основная цветовая тема'
|
Main Color Theme: 'Тема основного цвета'
|
||||||
Red: 'Красная'
|
Red: 'Красная'
|
||||||
Pink: 'Розовая'
|
Pink: 'Розовая'
|
||||||
Purple: 'Фиолетовая'
|
Purple: 'Фиолетовая'
|
||||||
Deep Purple: 'Тёмно-фиолетовая'
|
Deep Purple: 'Тёмно-фиолетовая'
|
||||||
Indigo: 'Индиго'
|
Indigo: 'Индиго'
|
||||||
Blue: 'Синия'
|
Blue: 'Синяя'
|
||||||
Light Blue: 'Светло-синия'
|
Light Blue: 'Светло-синяя'
|
||||||
Cyan: 'Голубая'
|
Cyan: 'Голубая'
|
||||||
Teal: 'Бирюзовая'
|
Teal: 'Бирюзовая'
|
||||||
Green: 'Зелёная'
|
Green: 'Зелёная'
|
||||||
|
@ -242,6 +242,7 @@ Settings:
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Вы
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Вы
|
||||||
уверены, что хотите удалить все подписки и профили? Это нельзя отменить.
|
уверены, что хотите удалить все подписки и профили? Это нельзя отменить.
|
||||||
Remove All Subscriptions / Profiles: Удалить все подписки/профили
|
Remove All Subscriptions / Profiles: Удалить все подписки/профили
|
||||||
|
Automatically Remove Video Meta Files: Автоматическое удаление мета-файлов видео
|
||||||
Data Settings:
|
Data Settings:
|
||||||
How do I import my subscriptions?: Как мне импортировать свои подписки?
|
How do I import my subscriptions?: Как мне импортировать свои подписки?
|
||||||
Unknown data key: Неизвестный ключ данных
|
Unknown data key: Неизвестный ключ данных
|
||||||
|
@ -466,9 +467,9 @@ Video:
|
||||||
Autoplay: Автовоспроизведение
|
Autoplay: Автовоспроизведение
|
||||||
Play Previous Video: Воспроизвести предыдущее видео
|
Play Previous Video: Воспроизвести предыдущее видео
|
||||||
Play Next Video: Воспроизводить следующее видео
|
Play Next Video: Воспроизводить следующее видео
|
||||||
Reverse Playlist: Обратный плейлист
|
Reverse Playlist: Обратный порядок плейлиста
|
||||||
Shuffle Playlist: Перемешанный плейлист
|
Shuffle Playlist: Перемешать плейлист
|
||||||
Loop Playlist: Циклический плейлист
|
Loop Playlist: Зациклить плейлист
|
||||||
Starting soon, please refresh the page to check again: Скоро начнётся, обновите
|
Starting soon, please refresh the page to check again: Скоро начнётся, обновите
|
||||||
страницу, чтобы проверить ещё раз
|
страницу, чтобы проверить ещё раз
|
||||||
Audio:
|
Audio:
|
||||||
|
@ -485,9 +486,9 @@ Video:
|
||||||
Open Channel in YouTube: Открыть канал в YouTube
|
Open Channel in YouTube: Открыть канал в YouTube
|
||||||
Streamed on: Транслировано
|
Streamed on: Транслировано
|
||||||
Started streaming on: Трансляция начата на
|
Started streaming on: Трансляция начата на
|
||||||
Video has been removed from your saved list: Видео было удалено из списка сохраненных
|
Video has been removed from your saved list: Видео было удалено из списка сохранённых
|
||||||
Video has been saved: Видео было добавлено в сохраненные
|
Video has been saved: Видео было добавлено в сохранённые
|
||||||
Save Video: Добавить видео в сохраненные
|
Save Video: Добавить видео в сохранённые
|
||||||
Videos:
|
Videos:
|
||||||
#& Sort By
|
#& Sort By
|
||||||
Sort By:
|
Sort By:
|
||||||
|
@ -568,8 +569,8 @@ Invidious API Error (Click to copy): 'Ошибка invidious API (Нажмите
|
||||||
Falling back to Invidious API: 'Возврат к Invidious API'
|
Falling back to Invidious API: 'Возврат к Invidious API'
|
||||||
Falling back to the local API: 'Возврат к локальному API'
|
Falling back to the local API: 'Возврат к локальному API'
|
||||||
Subscriptions have not yet been implemented: 'Подписки ещё не реализованы'
|
Subscriptions have not yet been implemented: 'Подписки ещё не реализованы'
|
||||||
Loop is now disabled: 'Цикл теперь отключён'
|
Loop is now disabled: 'Зацикливание теперь отключено'
|
||||||
Loop is now enabled: 'Цикл теперь включён'
|
Loop is now enabled: 'Зацикливание теперь включено'
|
||||||
Shuffle is now disabled: 'Перемешивание теперь отключено'
|
Shuffle is now disabled: 'Перемешивание теперь отключено'
|
||||||
Shuffle is now enabled: 'Перемешивание теперь включено'
|
Shuffle is now enabled: 'Перемешивание теперь включено'
|
||||||
Playing Next Video: 'Воспроизведение следующего видео'
|
Playing Next Video: 'Воспроизведение следующего видео'
|
||||||
|
@ -578,7 +579,7 @@ Playing next video in 5 seconds. Click to cancel: 'Воспроизведени
|
||||||
через 5 секунд. Нажмите, чтобы отменить.'
|
через 5 секунд. Нажмите, чтобы отменить.'
|
||||||
Canceled next video autoplay: 'Отменено автовоспроизведение следующего видео'
|
Canceled next video autoplay: 'Отменено автовоспроизведение следующего видео'
|
||||||
'The playlist has ended. Enable loop to continue playing': 'Плейлист закончился.
|
'The playlist has ended. Enable loop to continue playing': 'Плейлист закончился.
|
||||||
Включите цикл, чтобы продолжить воспроизведение'
|
Включите зацикливание, чтобы продолжить воспроизведение'
|
||||||
|
|
||||||
Yes: 'Да'
|
Yes: 'Да'
|
||||||
No: 'Нет'
|
No: 'Нет'
|
||||||
|
@ -619,7 +620,7 @@ Profile:
|
||||||
No channel(s) have been selected: Канал(ы) не были выбраны
|
No channel(s) have been selected: Канал(ы) не были выбраны
|
||||||
Add Selected To Profile: Добавить выбранное в профиль
|
Add Selected To Profile: Добавить выбранное в профиль
|
||||||
Delete Selected: Удалить выбранное
|
Delete Selected: Удалить выбранное
|
||||||
Select None: Выбрать ничего
|
Select None: Не выбрано
|
||||||
Select All: Выбрать все
|
Select All: Выбрать все
|
||||||
$ selected: $ выбрано
|
$ selected: $ выбрано
|
||||||
Other Channels: Другие каналы
|
Other Channels: Другие каналы
|
||||||
|
@ -632,7 +633,7 @@ Download From Site: Скачать с сайта
|
||||||
Version $ is now available! Click for more details: Версия $ уже доступна! Нажмите,
|
Version $ is now available! Click for more details: Версия $ уже доступна! Нажмите,
|
||||||
чтобы узнать больше
|
чтобы узнать больше
|
||||||
This video is unavailable because of missing formats. This can happen due to country unavailability.: Это
|
This video is unavailable because of missing formats. This can happen due to country unavailability.: Это
|
||||||
видео недоступно из-за отсутствия форматов. Это может произойти из-за недоступности
|
видео недоступно из-за отсутствия форматов. Это может произойти из-за ограничений
|
||||||
страны.
|
страны.
|
||||||
Tooltips:
|
Tooltips:
|
||||||
General Settings:
|
General Settings:
|
||||||
|
@ -647,9 +648,8 @@ Tooltips:
|
||||||
Preferred API Backend: Выберите серверную часть, которую FreeTube использует для
|
Preferred API Backend: Выберите серверную часть, которую FreeTube использует для
|
||||||
получения данных. Локальный API - это встроенный экстрактор. Invidious API требует
|
получения данных. Локальный API - это встроенный экстрактор. Invidious API требует
|
||||||
подключения к Invidious серверу.
|
подключения к Invidious серверу.
|
||||||
Region for Trending: Область тенденций позволяет вам выбрать популярные видео
|
Region for Trending: Регион трендов позволяет вам выбрать популярные видео из
|
||||||
из страны, которые вы хотите отображать. Не все отображаемые страны на самом
|
выбранной страны. Не все отображаемые страны поддерживаются YouTube
|
||||||
деле поддерживаются YouTube
|
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Fetch Feeds from RSS: Если этот параметр включен, FreeTube будет получать вашу
|
Fetch Feeds from RSS: Если этот параметр включен, FreeTube будет получать вашу
|
||||||
ленту подписок с помощью RSS, а не как обычно. RSS работает быстрее и предотвращает
|
ленту подписок с помощью RSS, а не как обычно. RSS работает быстрее и предотвращает
|
||||||
|
@ -667,6 +667,10 @@ Tooltips:
|
||||||
устаревшие форматы, возвращаемые им, вместо форматов, возвращаемых Invidious.
|
устаревшие форматы, возвращаемые им, вместо форматов, возвращаемых Invidious.
|
||||||
Помогает, когда видео, возвращенные Invidious, не воспроизводятся из-за ограничений
|
Помогает, когда видео, возвращенные Invidious, не воспроизводятся из-за ограничений
|
||||||
страны
|
страны
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Если этот параметр включен, FreeTube автоматически удаляет
|
||||||
|
метафайлы, созданные во время воспроизведения видео, когда страница просмотра
|
||||||
|
закрывается.
|
||||||
More: Больше
|
More: Больше
|
||||||
Playing Next Video Interval: Воспроизведение следующего видео без задержки. Нажмите
|
Playing Next Video Interval: Воспроизведение следующего видео без задержки. Нажмите
|
||||||
для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите
|
для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите
|
||||||
|
|
|
@ -70,6 +70,8 @@ Search Filters:
|
||||||
Fetching results. Please wait: 'Hämtar resultat. Snälla vänta'
|
Fetching results. Please wait: 'Hämtar resultat. Snälla vänta'
|
||||||
Fetch more results: 'Hämta fler resultat'
|
Fetch more results: 'Hämta fler resultat'
|
||||||
# Sidebar
|
# Sidebar
|
||||||
|
There are no more results for this search: Det finns inte fler resultat för den
|
||||||
|
här sökningen
|
||||||
Subscriptions:
|
Subscriptions:
|
||||||
# On Subscriptions Page
|
# On Subscriptions Page
|
||||||
Subscriptions: 'Prenumerationer'
|
Subscriptions: 'Prenumerationer'
|
||||||
|
|
|
@ -206,6 +206,8 @@ Settings:
|
||||||
Remove All Subscriptions / Profiles: 'Tüm Abonelikler/Profilleri Temizle'
|
Remove All Subscriptions / Profiles: 'Tüm Abonelikler/Profilleri Temizle'
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tüm
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tüm
|
||||||
abonelikler/profilleri temizlemek istediğinizden emin misiniz? Geri alınamaz.'
|
abonelikler/profilleri temizlemek istediğinizden emin misiniz? Geri alınamaz.'
|
||||||
|
Automatically Remove Video Meta Files: Video Meta Dosyalarını Otomatik Olarak
|
||||||
|
Kaldır
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Abonelik Ayarları'
|
Subscription Settings: 'Abonelik Ayarları'
|
||||||
Hide Videos on Watch: 'İzlenmiş Videoları Gizle'
|
Hide Videos on Watch: 'İzlenmiş Videoları Gizle'
|
||||||
|
@ -661,6 +663,9 @@ Tooltips:
|
||||||
Region for Trending: Trendlerin bölgesi, hangi ülkenin trend videolarını görüntülemek
|
Region for Trending: Trendlerin bölgesi, hangi ülkenin trend videolarını görüntülemek
|
||||||
istediğinizi seçmenize olanak tanır. Görüntülenen ülkelerden bazıları YouTube
|
istediğinizi seçmenize olanak tanır. Görüntülenen ülkelerden bazıları YouTube
|
||||||
tarafından desteklenmemektedir
|
tarafından desteklenmemektedir
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Etkinleştirildiğinde, izleme sayfası kapatıldığında video
|
||||||
|
oynatma sırasında oluşturulan meta dosyaları otomatik olarak silinir.
|
||||||
Playing Next Video Interval: Sonraki video hemen oynatılıyor. İptal etmek için tıklayın.
|
Playing Next Video Interval: Sonraki video hemen oynatılıyor. İptal etmek için tıklayın.
|
||||||
| Sonraki video {nextVideoInterval} saniye içinde oynatılıyor. İptal etmek için
|
| Sonraki video {nextVideoInterval} saniye içinde oynatılıyor. İptal etmek için
|
||||||
tıklayın. | Sonraki video {nextVideoInterval} saniye içinde oynatılıyor. İptal etmek
|
tıklayın. | Sonraki video {nextVideoInterval} saniye içinde oynatılıyor. İptal etmek
|
||||||
|
|
|
@ -211,6 +211,7 @@ Settings:
|
||||||
Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі'
|
Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі'
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Справді
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Справді
|
||||||
хочете вилучити всі підписки та профілі? Цю дію не можна скасувати.'
|
хочете вилучити всі підписки та профілі? Цю дію не можна скасувати.'
|
||||||
|
Automatically Remove Video Meta Files: Автоматично вилучати метафайли відео
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: 'Налаштування підписки'
|
Subscription Settings: 'Налаштування підписки'
|
||||||
Hide Videos on Watch: 'Ховати відео при перегляді'
|
Hide Videos on Watch: 'Ховати відео при перегляді'
|
||||||
|
@ -617,6 +618,9 @@ Tooltips:
|
||||||
ІР, але не надає дані, як-от тривалість відео або стан трансляції'
|
ІР, але не надає дані, як-от тривалість відео або стан трансляції'
|
||||||
|
|
||||||
# Toast Messages
|
# Toast Messages
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: Якщо увімкнено, FreeTube автоматично видаляє метафайли,
|
||||||
|
створені під час відтворення відео, коли сторінку перегляду закрито.
|
||||||
Local API Error (Click to copy): 'Помилка локального API (натисніть, щоб скопіювати)'
|
Local API Error (Click to copy): 'Помилка локального API (натисніть, щоб скопіювати)'
|
||||||
Invidious API Error (Click to copy): 'Помилка Invidious API (натисніть, щоб скопіювати)'
|
Invidious API Error (Click to copy): 'Помилка Invidious API (натисніть, щоб скопіювати)'
|
||||||
Falling back to Invidious API: 'Повернення до API Invidious'
|
Falling back to Invidious API: 'Повернення до API Invidious'
|
||||||
|
|
|
@ -175,6 +175,7 @@ Settings:
|
||||||
1440p: '1440p'
|
1440p: '1440p'
|
||||||
4k: '4k'
|
4k: '4k'
|
||||||
8k: '8k'
|
8k: '8k'
|
||||||
|
Playlist Next Video Interval: 播放列表 下一个影片时间间隔
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Subscription Settings: '订阅设置'
|
Subscription Settings: '订阅设置'
|
||||||
Hide Videos on Watch: '观看时隐藏视频'
|
Hide Videos on Watch: '观看时隐藏视频'
|
||||||
|
@ -222,6 +223,7 @@ Settings:
|
||||||
Clear Search Cache: 清除搜索缓存
|
Clear Search Cache: 清除搜索缓存
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您确定您想移除所有订阅和配置文件吗?这无法撤销。
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您确定您想移除所有订阅和配置文件吗?这无法撤销。
|
||||||
Remove All Subscriptions / Profiles: 移除所有订阅 / 配置文件
|
Remove All Subscriptions / Profiles: 移除所有订阅 / 配置文件
|
||||||
|
Automatically Remove Video Meta Files: 自动删除硬盘元数据文件
|
||||||
Data Settings:
|
Data Settings:
|
||||||
Subscriptions have been successfully exported: 订阅已成功导出
|
Subscriptions have been successfully exported: 订阅已成功导出
|
||||||
This might take a while, please wait: 这可能需要一段时间,请稍候
|
This might take a while, please wait: 这可能需要一段时间,请稍候
|
||||||
|
@ -264,6 +266,7 @@ Settings:
|
||||||
Hide Video Views: 隐藏视频观看数量
|
Hide Video Views: 隐藏视频观看数量
|
||||||
Distraction Free Settings: 零打扰设置
|
Distraction Free Settings: 零打扰设置
|
||||||
Hide Active Subscriptions: 隐藏活跃的订阅
|
Hide Active Subscriptions: 隐藏活跃的订阅
|
||||||
|
Hide Playlists: 隐藏播放列表
|
||||||
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:
|
Proxy Settings:
|
||||||
Proxy Protocol: 代理协议
|
Proxy Protocol: 代理协议
|
||||||
|
@ -278,6 +281,7 @@ Settings:
|
||||||
Test Proxy: 测试代理
|
Test Proxy: 测试代理
|
||||||
Clicking on Test Proxy will send a request to: 点击测试代理将会发送一个请求给
|
Clicking on Test Proxy will send a request to: 点击测试代理将会发送一个请求给
|
||||||
Proxy Port Number: 代理端口号
|
Proxy Port Number: 代理端口号
|
||||||
|
Proxy Host: 代理主机
|
||||||
About:
|
About:
|
||||||
#On About page
|
#On About page
|
||||||
About: '关于'
|
About: '关于'
|
||||||
|
@ -308,6 +312,18 @@ About:
|
||||||
Website: 网站
|
Website: 网站
|
||||||
Blog: 博客
|
Blog: 博客
|
||||||
Email: 电子邮件
|
Email: 电子邮件
|
||||||
|
Donate: 捐款
|
||||||
|
Credits: 贡献者
|
||||||
|
Translate: 翻译
|
||||||
|
Please read the: 请阅读
|
||||||
|
Chat on Matrix: 在 Matrix 上聊天
|
||||||
|
Mastodon: Mastodon
|
||||||
|
FAQ: 常见问题
|
||||||
|
FreeTube Wiki: FreeTube维基
|
||||||
|
Help: 说明
|
||||||
|
GitHub releases: GitHub 版本
|
||||||
|
View License: 查看授权
|
||||||
|
Licensed under the AGPLv3: 以 AGPLv3 协议授权
|
||||||
Channel:
|
Channel:
|
||||||
Subscriber: '订阅者'
|
Subscriber: '订阅者'
|
||||||
Subscribers: '订阅者'
|
Subscribers: '订阅者'
|
||||||
|
@ -417,6 +433,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:
|
||||||
|
|
|
@ -121,9 +121,9 @@ Settings:
|
||||||
Match Top Bar with Main Color: '頂部功能表欄對應主色彩'
|
Match Top Bar with Main Color: '頂部功能表欄對應主色彩'
|
||||||
Base Theme:
|
Base Theme:
|
||||||
Base Theme: '基本主題'
|
Base Theme: '基本主題'
|
||||||
Black: '黑'
|
Black: '黑色'
|
||||||
Dark: '深'
|
Dark: '深色'
|
||||||
Light: '淺'
|
Light: '淺色'
|
||||||
Main Color Theme:
|
Main Color Theme:
|
||||||
Main Color Theme: '主題色'
|
Main Color Theme: '主題色'
|
||||||
Red: '紅'
|
Red: '紅'
|
||||||
|
@ -161,7 +161,7 @@ Settings:
|
||||||
Default Playback Rate: '預設播放速度'
|
Default Playback Rate: '預設播放速度'
|
||||||
Default Video Format:
|
Default Video Format:
|
||||||
Default Video Format: '預設影片格式'
|
Default Video Format: '預設影片格式'
|
||||||
Dash Formats: 'Dash格式'
|
Dash Formats: '儀錶盤格式'
|
||||||
Legacy Formats: '傳統格式'
|
Legacy Formats: '傳統格式'
|
||||||
Audio Formats: '音訊格式'
|
Audio Formats: '音訊格式'
|
||||||
Default Quality:
|
Default Quality:
|
||||||
|
@ -224,6 +224,7 @@ Settings:
|
||||||
Privacy Settings: 隱私設定
|
Privacy Settings: 隱私設定
|
||||||
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。
|
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。
|
||||||
Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔
|
Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔
|
||||||
|
Automatically Remove Video Meta Files: 自動刪除影片元檔案
|
||||||
Data Settings:
|
Data Settings:
|
||||||
How do I import my subscriptions?: 我要如何匯入我的訂閱?
|
How do I import my subscriptions?: 我要如何匯入我的訂閱?
|
||||||
Unknown data key: 未知的資料金鑰
|
Unknown data key: 未知的資料金鑰
|
||||||
|
@ -479,11 +480,11 @@ Playlist:
|
||||||
Toggle Theatre Mode: '切換為劇院模式'
|
Toggle Theatre Mode: '切換為劇院模式'
|
||||||
Change Format:
|
Change Format:
|
||||||
Change Video Formats: '變更影片格式'
|
Change Video Formats: '變更影片格式'
|
||||||
Use Dash Formats: '使用Dash格式'
|
Use Dash Formats: '使用儀錶盤格式'
|
||||||
Use Legacy Formats: '使用傳統格式'
|
Use Legacy Formats: '使用傳統格式'
|
||||||
Use Audio Formats: '使用音訊格式'
|
Use Audio Formats: '使用音訊格式'
|
||||||
Audio formats are not available for this video: 這個影片沒有音訊格式
|
Audio formats are not available for this video: 這個影片沒有音訊格式
|
||||||
Dash formats are not available for this video: 這個影片沒有Dash格式
|
Dash formats are not available for this video: 這個影片沒有儀錶盤格式
|
||||||
Share:
|
Share:
|
||||||
Share Video: '分享影片'
|
Share Video: '分享影片'
|
||||||
Copy Link: '複製連結'
|
Copy Link: '複製連結'
|
||||||
|
@ -584,7 +585,7 @@ Tooltips:
|
||||||
Subscription Settings:
|
Subscription Settings:
|
||||||
Fetch Feeds from RSS: 啟用後,FreeTube將使用RSS代替它的預設方法來抓取您的訂閱來源。RSS的速度較快,而且可以防止IP封鎖,但它可能不會提供某些資訊,例如影片長度或是直播狀態。
|
Fetch Feeds from RSS: 啟用後,FreeTube將使用RSS代替它的預設方法來抓取您的訂閱來源。RSS的速度較快,而且可以防止IP封鎖,但它可能不會提供某些資訊,例如影片長度或是直播狀態。
|
||||||
Player Settings:
|
Player Settings:
|
||||||
Default Video Format: 設定要用於影片播放的格式。Dash格式有更高的品質。傳統格式會限制在 720p但頻寬需求更低。音訊格式為僅有音訊的串流
|
Default Video Format: 設定要用於影片播放的格式。儀錶盤格式有更高的畫質。傳統格式會限制在 720p 但頻寬需求更低。音訊格式為僅有音訊的串流
|
||||||
Proxy Videos Through Invidious: 將連線到 Invidious而非直接連線到 YouTube 來提供影片。覆寫 API 偏好
|
Proxy Videos Through Invidious: 將連線到 Invidious而非直接連線到 YouTube 來提供影片。覆寫 API 偏好
|
||||||
Force Local Backend for Legacy Formats: 僅當 Invidious API是您預設 API 時才有效。啟用後,區域 API
|
Force Local Backend for Legacy Formats: 僅當 Invidious API是您預設 API 時才有效。啟用後,區域 API
|
||||||
將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious回傳的影片時有幫助
|
將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious回傳的影片時有幫助
|
||||||
|
@ -596,6 +597,8 @@ Tooltips:
|
||||||
Preferred API Backend: 選擇 FreeTube 要用於取得YouTube資料的伺服器。本地 API 是內建擷取器。Invidious
|
Preferred API Backend: 選擇 FreeTube 要用於取得YouTube資料的伺服器。本地 API 是內建擷取器。Invidious
|
||||||
API 需要 Invidious 伺服器才能連線。
|
API 需要 Invidious 伺服器才能連線。
|
||||||
Region for Trending: 發燒影片區域可以讓您選擇想要顯示哪個國家的發燒影片。 注意:並非所有國家都被YouTube支援
|
Region for Trending: 發燒影片區域可以讓您選擇想要顯示哪個國家的發燒影片。 注意:並非所有國家都被YouTube支援
|
||||||
|
Privacy Settings:
|
||||||
|
Remove Video Meta Files: 如果啟用,FreeTube會在關閉觀看頁面時,自動刪除影片播放過程中建立的暫存檔案。
|
||||||
Playing Next Video Interval: 馬上播放下一個影片。點擊取消。| 播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。|
|
Playing Next Video Interval: 馬上播放下一個影片。點擊取消。| 播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。|
|
||||||
播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。
|
播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。
|
||||||
More: 更多
|
More: 更多
|
||||||
|
|
Loading…
Reference in New Issue