Merge branch 'development'

This commit is contained in:
Preston 2021-05-17 16:30:27 -04:00
commit 70ff00c00d
98 changed files with 8383 additions and 3028 deletions

View File

@ -11,7 +11,7 @@ jobs:
build:
strategy:
matrix:
node-version: [12.x]
node-version: [14.x]
runtime: [ linux-x64, linux-arm64, win-x64, osx-x64 ]
include:
- runtime: linux-x64

50
.github/workflows/report.yml vendored Normal file
View File

@ -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 }}

View File

@ -20,7 +20,7 @@ if (platform == 'darwin') {
arch = Arch.arm64
}
if (args[3] === 'arm32') {
if (args[2] === 'arm32') {
arch = Arch.armv7l
}
@ -69,6 +69,19 @@ const config = {
icon: '_icons/icon.svg',
target: ['deb', 'zip', 'apk', 'rpm', 'AppImage', 'pacman'],
},
deb: {
depends: [
"libgtk-3-0",
"libnotify4",
"libnss3",
"libxss1",
"libxtst6",
"xdg-utils",
"libatspi2.0-0",
"libuuid1",
"libsecret-1-0"
]
},
mac: {
category: 'public.app-category.utilities',
icon: '_icons/iconMac.icns',

3347
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,105 +8,104 @@
"url": "https://github.com/FreeTubeApp/FreeTube/issues"
},
"dependencies": {
"@electron/remote": "^1.0.4",
"@fortawesome/fontawesome-svg-core": "^1.2.34",
"@fortawesome/free-brands-svg-icons": "^5.15.2",
"@fortawesome/free-solid-svg-icons": "^5.15.2",
"@electron/remote": "^1.1.0",
"@fortawesome/fontawesome-svg-core": "^1.2.35",
"@fortawesome/free-brands-svg-icons": "^5.15.3",
"@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/vue-fontawesome": "^2.0.2",
"@silvermine/videojs-quality-selector": "^1.2.4",
"autolinker": "^3.14.2",
"@silvermine/videojs-quality-selector": "^1.2.5",
"autolinker": "^3.14.3",
"bulma-pro": "^0.2.0",
"dateformat": "^4.5.1",
"electron-context-menu": "^2.5.0",
"electron-context-menu": "^3.0.0",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
"jquery": "^3.6.0",
"js-yaml": "^4.0.0",
"js-yaml": "^4.1.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
"lodash.uniqwith": "^4.5.0",
"markdown": "^0.5.0",
"material-design-icons": "^3.0.1",
"nedb": "^1.8.0",
"node-forge": "^0.10.0",
"opml-to-json": "^1.0.1",
"rss-parser": "^3.12.0",
"socks-proxy-agent": "^5.0.0",
"video.js": "7.10.2",
"video.js": "^7.10.2",
"videojs-abloop": "^1.2.0",
"videojs-contrib-quality-levels": "^2.0.9",
"videojs-contrib-quality-levels": "^2.1.0",
"videojs-http-source-selector": "^1.1.6",
"videojs-overlay": "^2.1.4",
"videojs-replay": "^1.1.0",
"videojs-vtt-thumbnails-freetube": "0.0.15",
"vue": "^2.6.12",
"vue-electron": "^1.0.6",
"vue-i18n": "^8.23.0",
"vue-i18n": "^8.24.4",
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.5.1",
"vuex": "^3.6.2",
"xml2json": "^0.12.0",
"youtube-chat": "git+https://github.com/IcedCoffeee/youtube-chat.git",
"youtube-suggest": "^1.1.0",
"yt-channel-info": "^1.3.0",
"yt-comment-scraper": "^3.0.2",
"youtube-suggest": "^1.1.2",
"yt-channel-info": "^2.1.1",
"yt-comment-scraper": "^4.0.1",
"yt-dash-manifest-generator": "1.1.0",
"yt-trending-scraper": "^1.1.0",
"yt-xml2vtt": "^1.2.0",
"ytdl-core": "^4.5.0",
"ytpl": "^2.0.5",
"ytsr": "^3.3.1"
"yt-trending-scraper": "^2.0.0",
"ytdl-core": "^4.8.0",
"ytpl": "^2.2.1",
"ytsr": "^3.5.0"
},
"description": "A private YouTube client",
"devDependencies": {
"@babel/core": "^7.13.8",
"@babel/core": "^7.14.2",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-proposal-object-rest-spread": "^7.13.8",
"@babel/preset-env": "^7.13.9",
"@babel/plugin-proposal-object-rest-spread": "^7.14.2",
"@babel/preset-env": "^7.14.2",
"@babel/preset-typescript": "^7.13.0",
"@typescript-eslint/eslint-plugin": "^4.16.1",
"@typescript-eslint/parser": "^4.16.1",
"acorn": "^8.0.5",
"@typescript-eslint/eslint-plugin": "^4.23.0",
"@typescript-eslint/parser": "^4.23.0",
"acorn": "^8.2.4",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.2",
"copy-webpack-plugin": "8.0.0",
"css-loader": "^5.1.1",
"devtron": "^1.4.0",
"electron": "^12.0.0",
"copy-webpack-plugin": "8.1.1",
"css-loader": "^5.2.4",
"electron": "^12.0.7",
"electron-builder": "^22.10.5",
"electron-builder-squirrel-windows": "^22.10.5",
"electron-builder-squirrel-windows": "^22.11.4",
"electron-debug": "^3.2.0",
"electron-rebuild": "^2.3.5",
"eslint": "^7.21.0",
"eslint-config-prettier": "^8.1.0",
"eslint": "^7.26.0",
"eslint-config-prettier": "^8.3.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-import": "^2.23.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^7.7.0",
"eslint-plugin-vue": "^7.9.0",
"fast-glob": "^3.2.5",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.2.0",
"html-webpack-plugin": "^5.3.1",
"jest": "^26.6.3",
"mini-css-extract-plugin": "^1.3.9",
"node-abi": "^2.20.0",
"node-loader": "^1.0.2",
"mini-css-extract-plugin": "^1.6.0",
"node-abi": "^2.26.0",
"node-loader": "^2.0.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.2.1",
"sass": "^1.32.8",
"sass-loader": "^11.0.1",
"prettier": "^2.3.0",
"sass": "^1.32.13",
"sass-loader": "^11.1.1",
"style-loader": "^2.0.0",
"tree-kill": "1.2.2",
"typescript": "^4.2.2",
"typescript": "^4.2.4",
"url-loader": "^4.1.1",
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^7.6.0",
"vue-loader": "^15.9.6",
"vue-loader": "^15.9.7",
"vue-style-loader": "^4.1.3",
"vue-template-compiler": "^2.6.12",
"webpack": "^5.24.3",
"webpack-cli": "^4.5.0",
"webpack": "^5.37.0",
"webpack-cli": "^4.7.0",
"webpack-dev-server": "^3.11.2"
},
"license": "AGPL-3.0-or-later",
@ -149,5 +148,5 @@
"test": "run-s rebuild:node pack:workers jest",
"test:watch": "run-s rebuild:node pack:workers jest:watch"
},
"version": "0.12.0"
"version": "0.13.0"
}

View File

@ -1,75 +1,151 @@
import { app, BrowserWindow, Menu, ipcMain, screen } from 'electron'
import { productName } from '../../package.json'
import Datastore from 'nedb'
require('@electron/remote/main').initialize()
require('electron-context-menu')({
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])])
if (process.argv.includes('--version')) {
console.log(`v${app.getVersion()}`)
app.exit(0)
} else {
app.setAsDefaultProtocolClient('freetube')
runApp()
}
// TODO: Uncomment if needed
// only allow single instance of application
if (!isDev) {
const gotTheLock = app.requestSingleInstanceLock()
function runApp() {
require('@electron/remote/main').initialize()
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()
require('electron-context-menu')({
showSearchWithGoogle: false,
showSaveImageAs: true,
showCopyImageAddress: true,
prepend: (params, browserWindow) => []
})
const url = getLinkUrl(commandLine)
if (url) {
mainWindow.webContents.send('openUrl', url)
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
})
// 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 openedWindows = []
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({
$or: [
{ _id: 'disableSmoothScrolling' },
@ -131,180 +207,160 @@ 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' }
]
async function installDevTools () {
try {
/* eslint-disable */
require('vue-devtools').install()
/* eslint-enable */
} catch (err) {
console.log(err)
}
}
function createWindow (useProxy = false, proxyUrl = '', replaceMainWindow = true) {
/**
* Initial window options
*/
const newWindow = 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
})
openedWindows.push(newWindow)
if (replaceMainWindow) {
mainWindow = newWindow
}
newWindow.setBounds({
width: 1200,
height: 800
})
if (useProxy) {
newWindow.webContents.session.setProxy({
proxyRules: proxyUrl
})
}
// Set CONSENT cookie on reasonable domains
[
'http://www.youtube.com',
'https://www.youtube.com',
'http://youtube.com',
'https://youtube.com'
].forEach(url => {
newWindow.webContents.session.cookies.set({
url: url,
name: 'CONSENT',
value: 'YES+'
})
})
settingsDb.findOne({
_id: 'bounds'
}, function (err, doc) {
if (err) {
app.exit(0)
if (doc === null || err) {
return
}
let disableSmoothScrolling = false
let useProxy = false
let proxyProtocol = 'socks5'
let proxyHostname = '127.0.0.1'
let proxyPort = '9050'
if (typeof doc !== 'object' || typeof doc.value !== 'object') {
return
}
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
}
const { maximized, ...bounds } = doc.value
const allDisplaysSummaryWidth = screen
.getAllDisplays()
.reduce((accumulator, { size: { width } }) => accumulator + width, 0)
if (allDisplaysSummaryWidth >= bounds.x) {
newWindow.setBounds({
x: bounds.x,
y: bounds.y,
width: bounds.width,
height: bounds.height
})
}
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()
if (maximized) {
newWindow.maximize()
}
})
})
}
async function installDevTools () {
try {
/* eslint-disable */
require('devtron').install()
require('vue-devtools').install()
/* eslint-enable */
} catch (err) {
console.log(err)
}
}
// If called multiple times
// Duplicate menu items will be added
if (replaceMainWindow) {
// eslint-disable-next-line
setMenu()
}
function createWindow (useProxy = false, proxyUrl = '') {
/**
* Initial window options
*/
mainWindow = new BrowserWindow({
backgroundColor: '#fff',
icon: isDev
? path.join(__dirname, '../../_icons/iconColor.png')
// load root file/url
if (isDev) {
newWindow.loadURL('http://localhost:9080')
} else {
/* 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
})
newWindow.loadFile(`${__dirname}/index.html`)
mainWindow.setBounds({
width: 1200,
height: 800
})
global.__static = path
.join(__dirname, '/static')
.replace(/\\/g, '\\\\')
}
if (useProxy) {
mainWindow.webContents.session.setProxy({
proxyRules: proxyUrl
// Show when loaded
newWindow.on('ready-to-show', () => {
newWindow.show()
newWindow.focus()
})
newWindow.on('close', () => {
// Clear cache and storage if it's the last window
if (openedWindows.length === 1) {
newWindow.webContents.session.clearCache()
newWindow.webContents.session.clearStorageData({
storages: [
'appcache',
'cookies',
'filesystem',
'indexdb',
'shadercache',
'websql',
'serviceworkers',
'cachestorage'
]
})
}
})
newWindow.on('closed', () => {
// Remove closed window
openedWindows = openedWindows.filter((window) => window !== newWindow)
if (newWindow === mainWindow) {
// Replace mainWindow to avoid accessing `mainWindow.webContents`
// Which raises "Object has been destroyed" error
mainWindow = openedWindows[0]
}
console.log('closed')
})
}
settingsDb.findOne({
_id: 'bounds'
}, function (err, doc) {
if (doc === null || err) {
return
}
if (typeof doc !== 'object' || typeof doc.value !== 'object') {
return
}
const { maximized, ...bounds } = doc.value
const allDisplaysSummaryWidth = screen
.getAllDisplays()
.reduce((accumulator, { size: { width } }) => accumulator + width, 0)
if (allDisplaysSummaryWidth >= bounds.x) {
mainWindow.setBounds({
x: bounds.x,
y: bounds.y,
width: bounds.width,
height: bounds.height
})
}
if (maximized) {
mainWindow.maximize()
}
})
// eslint-disable-next-line
setMenu()
// 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, '\\\\')
}
// Show when loaded
mainWindow.on('ready-to-show', () => {
mainWindow.show()
mainWindow.focus()
})
mainWindow.on('closed', () => {
console.log('closed')
})
// Save closing window bounds & maximized status
ipcMain.on('setBounds', (_e, data) => {
const value = {
...mainWindow.getBounds(),
...mainWindow.getNormalBounds(),
maximized: mainWindow.isMaximized()
}
@ -359,198 +415,188 @@ function createWindow (useProxy = false, proxyUrl = '') {
ipcMain.on('disableProxy', () => {
mainWindow.webContents.session.setProxy({})
})
}
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
mainWindow.webContents.session.clearCache()
mainWindow.webContents.session.clearStorageData({
storages: [
'appcache',
'cookies',
'filesystem',
'indexdb',
'shadercache',
'websql',
'serviceworkers',
'cachestorage'
]
ipcMain.on('createNewWindow', () => {
createWindow(false, '', false)
})
})
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'
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
]
},
{
label: 'Edit',
submenu: [{
role: 'cut'
})
app.on('activate', () => {
if (mainWindow === null || mainWindow === undefined) {
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'
}
]
},
{
role: 'copy',
accelerator: 'CmdOrCtrl+C',
selector: 'copy:'
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'
}
]
},
{
role: 'paste',
accelerator: 'CmdOrCtrl+V',
selector: 'paste:'
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: 'pasteandmatchstyle'
},
{
role: 'delete'
},
{
role: 'selectall'
role: 'window',
submenu: [{
role: 'minimize'
},
{
role: 'close'
}
]
}
]
},
{
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'
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)
}
]
},
{
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)
}

View File

@ -1,4 +1,5 @@
import Vue from 'vue'
import { mapActions } from 'vuex'
import { ObserveVisibility } from 'vue-observe-visibility'
import FtFlexBox from './components/ft-flex-box/ft-flex-box.vue'
import TopNav from './components/top-nav/top-nav.vue'
@ -9,6 +10,7 @@ import FtButton from './components/ft-button/ft-button.vue'
import FtToast from './components/ft-toast/ft-toast.vue'
import FtProgressBar from './components/ft-progress-bar/ft-progress-bar.vue'
import $ from 'jquery'
import { app } from '@electron/remote'
import { markdown } from 'markdown'
import Parser from 'rss-parser'
@ -41,6 +43,7 @@ export default Vue.extend({
},
data: function () {
return {
dataReady: false,
hideOutlines: true,
showUpdatesBanner: false,
showBlogBanner: false,
@ -85,34 +88,50 @@ export default Vue.extend({
}
},
mounted: function () {
this.$store.dispatch('grabUserSettings')
this.$store.dispatch('grabHistory')
this.$store.dispatch('grabAllProfiles', this.$t('Profile.All Channels'))
this.$store.dispatch('grabAllPlaylists')
this.$store.commit('setUsingElectron', useElectron)
this.checkThemeSettings()
this.checkLocale()
const v = this
this.$store.dispatch('grabUserSettings').then(() => {
this.$store.dispatch('grabAllProfiles', this.$t('Profile.All Channels')).then(() => {
this.$store.dispatch('grabHistory')
this.$store.dispatch('grabAllPlaylists')
this.$store.commit('setUsingElectron', useElectron)
this.checkThemeSettings()
this.checkLocale()
if (useElectron) {
console.log('User is using Electron')
this.activateKeyboardShortcuts()
this.openAllLinksExternally()
this.enableOpenUrl()
this.setBoundsOnClose()
}
v.dataReady = true
setTimeout(() => {
this.checkForNewUpdates()
this.checkForNewBlogPosts()
}, 500)
if (useElectron) {
console.log('User is using Electron')
this.activateKeyboardShortcuts()
this.openAllLinksExternally()
this.enableOpenUrl()
this.setBoundsOnClose()
}
setTimeout(() => {
this.checkForNewUpdates()
this.checkForNewBlogPosts()
}, 500)
})
})
},
methods: {
checkLocale: function () {
const locale = localStorage.getItem('locale')
if (locale === null) {
// TODO: Get User default locale
this.$i18n.locale = 'en-US'
if (locale === null || locale === 'system') {
const systemLocale = app.getLocale().replace(/-|_/, '_')
const findLocale = Object.keys(this.$i18n.messages).find((locale) => {
const localeName = locale.replace(/-|_/, '_')
return localeName.includes(systemLocale)
})
if (typeof findLocale !== 'undefined') {
this.$i18n.locale = findLocale
localStorage.setItem('locale', 'system')
} else {
this.$i18n.locale = 'en-US'
localStorage.setItem('locale', 'en-US')
}
} else {
this.$i18n.locale = locale
}
@ -268,14 +287,98 @@ export default Vue.extend({
},
openAllLinksExternally: function () {
// Open links externally by default
$(document).on('click', 'a[href^="http"]', (event) => {
const el = event.currentTarget
console.log(useElectron)
console.log(el)
if (typeof (shell) !== 'undefined') {
event.preventDefault()
shell.openExternal(el.href)
event.preventDefault()
// Check if it's a YouTube link
const youtubeUrlPattern = /^https?:\/\/((www\.)?youtube\.com(\/embed)?|youtu\.be)\/.*$/
const isYoutubeLink = youtubeUrlPattern.test(el.href)
if (isYoutubeLink) {
this.handleYoutubeLink(el.href)
} else {
// Open links externally by default
if (typeof (shell) !== 'undefined') {
shell.openExternal(el.href)
}
}
})
},
handleYoutubeLink: function (href) {
this.$store.dispatch('getYoutubeUrlInfo', href).then((result) => {
switch (result.urlType) {
case 'video': {
const { videoId, timestamp } = result
this.$router.push({
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
break
}
case 'playlist': {
const { playlistId, query } = result
this.$router.push({
path: `/playlist/${playlistId}`,
query
})
break
}
case 'search': {
const { searchQuery, query } = result
this.$router.push({
path: `/search/${encodeURIComponent(searchQuery)}`,
query
})
break
}
case 'hashtag': {
// TODO: Implement a hashtag related view
let message = 'Hashtags have not yet been implemented, try again later'
if (this.$te(message) && this.$t(message) !== '') {
message = this.$t(message)
}
this.showToast({
message: message
})
break
}
case 'channel': {
const { channelId } = result
this.$router.push({
path: `/channel/${channelId}`
})
break
}
case 'invalid_url': {
// Do nothing
break
}
default: {
// Unknown URL type
let message = 'Unknown YouTube url type, cannot be opened in app'
if (this.$te(message) && this.$t(message) !== '') {
message = this.$t(message)
}
this.showToast({
message: message
})
}
}
})
},
@ -284,14 +387,7 @@ export default Vue.extend({
const v = this
electron.ipcRenderer.on('openUrl', function (event, url) {
if (url) {
v.$store.dispatch('getVideoParamsFromUrl', url).then(({ videoId, timestamp }) => {
if (videoId) {
v.$router.push({
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
}
})
v.handleYoutubeLink(url)
}
})
@ -302,6 +398,10 @@ export default Vue.extend({
window.onbeforeunload = (e) => {
electron.ipcRenderer.send('setBounds')
}
}
},
...mapActions([
'showToast'
])
}
})

View File

@ -27,6 +27,7 @@
/>
</ft-flex-box>
<transition
v-if="dataReady"
mode="out-in"
name="fade"
>

View File

@ -249,6 +249,10 @@ export default Vue.extend({
const primaryProfile = JSON.parse(JSON.stringify(this.profileList[0]))
const subscriptions = []
this.showToast({
message: this.$t('Settings.Data Settings.This might take a while, please wait')
})
this.updateShowProgressBar(true)
this.setProgressBarPercentage(0)
@ -258,6 +262,11 @@ export default Vue.extend({
const snippet = channel.snippet
if (typeof snippet === 'undefined') {
const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
this.showToast({
message: message
})
throw new Error('Unable to find channel data')
}
@ -321,12 +330,7 @@ export default Vue.extend({
}
const filePath = response.filePaths[0]
try {
this.handleYoutubeImportFile(filePath)
} catch (err) {
console.log(err)
}
this.handleYoutubeImportFile(filePath)
})
},
@ -569,7 +573,8 @@ export default Vue.extend({
}
},
exportFreeTubeSubscriptions: function () {
exportFreeTubeSubscriptions: async function () {
await this.compactProfiles()
const userData = app.getPath('userData')
const subscriptionsDb = `${userData}/profiles.db`
const date = new Date()
@ -929,7 +934,7 @@ export default Vue.extend({
}
})
if (Object.keys(historyObject).length < requiredKeys.length) {
if (Object.keys(historyObject).length < (requiredKeys.length - 2)) {
this.showToast({
message: this.$t('Settings.Data Settings.History object has insufficient data, skipping item')
})
@ -945,7 +950,8 @@ export default Vue.extend({
})
},
exportHistory: function () {
exportHistory: async function () {
await this.compactHistory()
const userData = app.getPath('userData')
const historyDb = `${userData}/history.db`
const date = new Date()
@ -1102,8 +1108,10 @@ export default Vue.extend({
...mapActions([
'invidiousAPICall',
'updateProfile',
'compactProfiles',
'updateShowProgressBar',
'updateHistory',
'compactHistory',
'showToast',
'getRandomColor',
'calculateColorLuminance'

View File

@ -12,7 +12,6 @@
text-decoration: none;
transition: 0.3s;
border-radius: 4px;
outline: none;
white-space: nowrap;
font-weight: 500;
vertical-align: middle;

View File

@ -27,6 +27,10 @@ export default Vue.extend({
type: Boolean,
default: false
},
selectOnFocus: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
@ -130,6 +134,13 @@ export default Vue.extend({
handleInputBlur: function () {
if (!this.searchState.isPointerInList) { this.searchState.showOptions = false }
},
handleFocus: function(e) {
this.searchState.showOptions = true
if (this.selectOnFocus) {
e.target.select()
}
}
}
})

View File

@ -27,7 +27,7 @@
:placeholder="placeholder"
:disabled="disabled"
@input="e => handleInput(e.target.value)"
@focus="searchState.showOptions = true"
@focus="handleFocus"
@blur="handleInputBlur"
@keydown="e => handleKeyDown(e.keyCode)"
>

View File

@ -42,6 +42,7 @@ export default Vue.extend({
isLive: false,
isFavorited: false,
isUpcoming: false,
isPremium: false,
hideViews: false,
optionsValues: [
'history',
@ -321,6 +322,7 @@ export default Vue.extend({
this.description = this.data.description
this.isLive = this.data.liveNow || this.data.lengthSeconds === 'undefined'
this.isUpcoming = this.data.isUpcoming || this.data.premiere
this.isPremium = this.data.premium || false
this.viewCount = this.data.viewCount
if (typeof (this.data.premiereTimestamp) !== 'undefined') {
@ -383,7 +385,7 @@ export default Vue.extend({
title: this.title,
author: this.channelName,
authorId: this.channelId,
published: '',
published: this.publishedText.split(',')[0],
description: this.description,
viewCount: this.viewCount,
lengthSeconds: this.data.lengthSeconds,
@ -393,9 +395,7 @@ export default Vue.extend({
paid: false,
type: 'video'
}
this.updateHistory(videoData)
this.showToast({
message: this.$t('Video.Video has been marked as watched')
})

View File

@ -13,6 +13,7 @@
>
<router-link
class="thumbnailLink"
tabindex="-1"
:to="{
path: `/watch/${id}`,
query: playlistId ? {playlistId} : {}
@ -80,7 +81,7 @@
>
<span>{{ channelName }}</span>
</router-link>
<template v-if="!isLive && !isUpcoming && !hideViews">
<template v-if="!isLive && !isUpcoming && !isPremium && !hideViews">
<span class="viewCount"> {{ parsedViewCount }}</span>
<span v-if="viewCount === 1">{{ $t("Video.View").toLowerCase() }}</span>
<span v-else>{{ $t("Video.Views").toLowerCase() }}</span>

View File

@ -43,6 +43,10 @@ export default Vue.extend({
type: Array,
default: () => { return [] }
},
adaptiveFormats: {
type: Array,
default: () => { return [] }
},
dashSrc: {
type: Array,
default: null
@ -51,7 +55,7 @@ export default Vue.extend({
type: Array,
default: null
},
captionList: {
captionHybridList: {
type: Array,
default: () => { return [] }
},
@ -62,6 +66,10 @@ export default Vue.extend({
thumbnail: {
type: String,
default: ''
},
videoId: {
type: String,
required: true
}
},
data: function () {
@ -73,8 +81,11 @@ export default Vue.extend({
useDash: false,
useHls: false,
selectedDefaultQuality: '',
selectedQuality: '',
using60Fps: false,
maxFramerate: 0,
activeSourceList: [],
activeAdaptiveFormats: [],
mouseTimeout: null,
touchTimeout: null,
lastTouchTime: null,
@ -142,16 +153,14 @@ export default Vue.extend({
autoplayVideos: function () {
return this.$store.getters.getAutoplayVideos
}
},
watch: {
sourceList: function () {
this.determineFormatType()
},
captionList: function () {
this.player.caption({
data: this.captionList
})
useSponsorBlock: function () {
return this.$store.getters.getUseSponsorBlock
},
sponsorBlockShowSkippedToast: function () {
return this.$store.getters.getSponsorBlockShowSkippedToast
}
},
mounted: function () {
@ -186,6 +195,7 @@ export default Vue.extend({
},
methods: {
initializePlayer: async function () {
console.log(this.adaptiveFormats)
const videoPlayer = document.getElementById(this.id)
if (videoPlayer !== null) {
if (!this.useDash) {
@ -195,10 +205,12 @@ export default Vue.extend({
this.player = videojs(videoPlayer, {
html5: {
preloadTextTracks: false,
vhs: {
limitRenditionByPlayerDimensions: false,
smoothQualityChange: false,
allowSeeksWithinUnsafeLiveWindow: true
allowSeeksWithinUnsafeLiveWindow: true,
handlePartialData: true
}
}
})
@ -214,14 +226,12 @@ export default Vue.extend({
}
if (this.useDash) {
this.dataSetup.plugins.httpSourceSelector = {
default: 'auto'
}
// this.dataSetup.plugins.httpSourceSelector = {
// default: 'auto'
// }
this.player.httpSourceSelector()
setTimeout(() => {
this.determineDefaultQualityDash()
}, 400)
// this.player.httpSourceSelector()
this.createDashQualitySelector(this.player.qualityLevels())
}
if (this.autoplayVideos) {
@ -240,12 +250,16 @@ export default Vue.extend({
this.player.controlBar.getChild('volumePanel').on('mousewheel', this.mouseScrollVolume)
this.player.on('fullscreenchange', this.fullscreenOverlay)
this.player.on('fullscreenchange', this.toggleFullscreenClass)
const v = this
this.player.on('ready', function () {
v.$emit('ready')
v.checkAspectRatio()
if (v.captionHybridList.length !== 0) {
v.transformAndInsertCaptions()
}
})
this.player.on('ended', function () {
@ -272,6 +286,109 @@ export default Vue.extend({
}
})
}
setTimeout(() => { this.fetchSponsorBlockInfo() }, 100)
},
fetchSponsorBlockInfo() {
if (this.useSponsorBlock) {
this.$store.dispatch('sponsorBlockSkipSegments', {
videoId: this.videoId,
categories: ['sponsor']
}).then((skipSegments) => {
this.player.on('timeupdate', () => {
this.skipSponsorBlocks(skipSegments)
})
skipSegments.forEach(({
category,
segment: [startTime, endTime]
}) => {
this.addSponsorBlockMarker({
time: startTime,
duration: endTime - startTime,
color: this.sponsorBlockCategoryColor(category)
})
})
})
}
},
skipSponsorBlocks(skipSegments) {
const currentTime = this.player.currentTime()
let newTime = null
let skippedCategory = null
skipSegments.forEach(({ category, segment: [startTime, endTime] }) => {
if (startTime <= currentTime && currentTime < endTime) {
newTime = endTime
skippedCategory = category
}
})
if (newTime !== null) {
if (this.sponsorBlockShowSkippedToast) {
this.showSkippedSponsorSegmentInformation(skippedCategory)
}
this.player.currentTime(newTime)
}
},
showSkippedSponsorSegmentInformation(category) {
const translatedCategory = this.sponsorBlockTranslatedCategory(category)
this.showToast({
message: `${this.$t('Video.Skipped segment')} ${translatedCategory}`
})
},
sponsorBlockTranslatedCategory(category) {
switch (category) {
case 'sponsor':
return this.$t('Video.Sponsor Block category.sponsor')
case 'intro':
return this.$t('Video.Sponsor Block category.intro')
case 'outro':
return this.$t('Video.Sponsor Block category.outro')
case 'selfpromo':
return this.$t('Video.Sponsor Block category.self-promotion')
case 'interaction':
return this.$t('Video.Sponsor Block category.interaction')
case 'music_offtopic':
return this.$t('Video.Sponsor Block category.music offtopic')
default:
console.error(`Unknown translation for SponsorBlock category ${category}`)
return category
}
},
sponsorBlockCategoryColor(category) {
// TODO: allow to set these colors in settings
switch (category) {
case 'sponsor':
return 'var(--accent-color)'
case 'intro':
return 'var(--accent-color)'
case 'outro':
return 'var(--accent-color)'
case 'selfpromo':
return 'var(--accent-color)'
case 'interaction':
return 'var(--accent-color)'
case 'music_offtopic':
return 'var(--accent-color)'
default:
console.error(`Unknown SponsorBlock category ${category}`)
return 'var(--accent-color)'
}
},
addSponsorBlockMarker(marker) {
const markerDiv = videojs.dom.createEl('div', {}, {})
markerDiv.className = 'sponsorBlockMarker'
markerDiv.style.height = '100%'
markerDiv.style.position = 'absolute'
markerDiv.style['background-color'] = marker.color
markerDiv.style.width = (marker.duration / this.player.duration()) * 100 + '%'
markerDiv.style.marginLeft = (marker.time / this.player.duration()) * 100 + '%'
this.player.el().querySelector('.vjs-progress-holder').appendChild(markerDiv)
},
checkAspectRatio() {
@ -417,11 +534,60 @@ export default Vue.extend({
determineDefaultQualityDash: function () {
if (this.defaultQuality === 'auto') {
return
this.setDashQualityLevel('auto')
}
this.player.qualityLevels().levels_.sort((a, b) => {
return a.height - b.height
let formatsToTest
if (typeof this.activeAdaptiveFormats !== 'undefined' && this.activeAdaptiveFormats.length > 0) {
formatsToTest = this.activeAdaptiveFormats.filter((format) => {
return format.height === this.defaultQuality
})
if (formatsToTest.length === 0) {
formatsToTest = this.activeAdaptiveFormats.filter((format) => {
return format.height < this.defaultQuality
})
}
formatsToTest = formatsToTest.sort((a, b) => {
if (a.height === b.height) {
return b.bitrate - a.bitrate
} else {
return b.height - a.height
}
})
} else {
formatsToTest = this.player.qualityLevels().levels_.filter((format) => {
return format.height === this.defaultQuality
})
if (formatsToTest.length === 0) {
formatsToTest = this.player.qualityLevels().levels_.filter((format) => {
return format.height < this.defaultQuality
})
}
formatsToTest = formatsToTest.sort((a, b) => {
if (a.height === b.height) {
return b.bitrate - a.bitrate
} else {
return b.height - a.height
}
})
}
// TODO: Test formats to determine if HDR / 60 FPS and skip them based on
// User settings
this.setDashQualityLevel(formatsToTest[0].bitrate)
// Old logic. Revert if needed
/* this.player.qualityLevels().levels_.sort((a, b) => {
if (a.height === b.height) {
return a.bitrate - b.bitrate
} else {
return a.height - b.height
}
}).forEach((ql, index, arr) => {
const height = ql.height
const width = ql.width
@ -432,26 +598,151 @@ export default Vue.extend({
upperLevel = arr[index + 1]
}
if (this.defaultQuality === quality) {
ql.enabled = true
if (this.defaultQuality === quality && upperLevel === null) {
this.setDashQualityLevel(height, true)
} else if (upperLevel !== null) {
const upperHeight = upperLevel.height
const upperWidth = upperLevel.width
const upperQuality = upperWidth < upperHeight ? upperWidth : upperHeight
if (this.defaultQuality >= quality && this.defaultQuality < upperQuality) {
ql.enabled = true
} else {
ql.enabled = false
if (this.defaultQuality >= quality && this.defaultQuality === upperQuality) {
this.setDashQualityLevel(height, true)
} else if (this.defaultQuality >= quality && this.defaultQuality < upperQuality) {
this.setDashQualityLevel(height)
}
} else if (index === 0 && quality > this.defaultQuality) {
ql.enabled = true
this.setDashQualityLevel(height)
} else if (index === (arr.length - 1) && quality < this.defaultQuality) {
this.setDashQualityLevel(height)
}
}) */
},
setDashQualityLevel: function (bitrate) {
let adaptiveFormat = null
if (bitrate !== 'auto') {
adaptiveFormat = this.activeAdaptiveFormats.find((format) => {
return format.bitrate === bitrate
})
}
let qualityLabel = adaptiveFormat ? adaptiveFormat.qualityLabel : ''
this.player.qualityLevels().levels_.sort((a, b) => {
if (a.height === b.height) {
return a.bitrate - b.bitrate
} else {
return a.height - b.height
}
}).forEach((ql, index, arr) => {
if (bitrate === 'auto' || bitrate === ql.bitrate) {
ql.enabled = true
ql.enabled_(true)
if (bitrate !== 'auto' && qualityLabel === '') {
qualityLabel = ql.height + 'p'
}
} else {
ql.enabled = false
ql.enabled_(false)
}
})
const selectedQuality = bitrate === 'auto' ? 'auto' : qualityLabel
const qualityElement = document.getElementById('vjs-current-quality')
qualityElement.innerText = selectedQuality
this.selectedQuality = selectedQuality
const qualityItems = $('.quality-item').get()
$('.quality-item').removeClass('quality-selected')
qualityItems.forEach((item) => {
const qualityText = $(item).find('.vjs-menu-item-text').get(0)
if (qualityText.innerText === selectedQuality.toLowerCase()) {
$(item).addClass('quality-selected')
}
})
/* if (this.selectedQuality === qualityLevel && this.using60Fps === is60Fps) {
return
}
let foundSelectedQuality = false
this.using60Fps = is60Fps
this.player.qualityLevels().levels_.sort((a, b) => {
if (a.height === b.height) {
return a.bitrate - b.bitrate
} else {
return a.height - b.height
}
}).forEach((ql, index, arr) => {
if (foundSelectedQuality) {
ql.enabled = false
ql.enabled_(false)
} else if (qualityLevel === 'auto') {
ql.enabled = true
ql.enabled_(true)
} else if (ql.height === qualityLevel) {
ql.enabled = true
ql.enabled_(true)
foundSelectedQuality = true
let lowerQuality
let higherQuality
if ((index - 1) !== -1) {
lowerQuality = arr[index - 1]
}
if ((index + 1) < arr.length) {
higherQuality = arr[index + 1]
}
if (typeof (lowerQuality) !== 'undefined' && lowerQuality.height === ql.height && lowerQuality.bitrate < ql.bitrate && !is60Fps) {
ql.enabled = false
ql.enabled_(false)
foundSelectedQuality = false
}
if (typeof (higherQuality) !== 'undefined' && higherQuality.height === ql.height && higherQuality.bitrate > ql.bitrate && is60Fps) {
ql.enabled = false
ql.enabled_(false)
foundSelectedQuality = false
}
} else {
ql.enabled = false
ql.enabled_(false)
}
})
let selectedQuality = qualityLevel
if (selectedQuality !== 'auto' && is60Fps) {
selectedQuality = selectedQuality + 'p60'
} else if (selectedQuality !== 'auto') {
selectedQuality = selectedQuality + 'p'
}
const qualityElement = document.getElementById('vjs-current-quality')
qualityElement.innerText = selectedQuality
this.selectedQuality = qualityLevel
const qualityItems = $('.quality-item').get()
$('.quality-item').removeClass('quality-selected')
qualityItems.forEach((item) => {
const qualityText = $(item).find('.vjs-menu-item-text').get(0)
if (qualityText.innerText === selectedQuality) {
$(item).addClass('quality-selected')
}
})
// const currentTime = this.player.currentTime()
// this.player.currentTime(0)
// this.player.currentTime(currentTime) */
},
enableDashFormat: function () {
@ -622,13 +913,125 @@ export default Vue.extend({
v.toggleFullWindow()
},
createControlTextEl: function (button) {
return $(button).html($('<div id="fullwindow" class="vjs-icon-fullwindow-enter vjs-button"></div>')
.attr('title', 'Fullwindow'))
// Add class name to button to be able to target it with CSS selector
return $(button)
.addClass('vjs-button-fullwindow')
.html($('<div id="fullwindow" class="vjs-icon-fullwindow-enter vjs-button"></div>')
.attr('title', 'Full Window'))
}
})
videojs.registerComponent('fullWindowButton', fullWindowButton)
},
createDashQualitySelector: function (levels) {
const v = this
if (levels.levels_.length === 0) {
setTimeout(() => {
this.createDashQualitySelector(this.player.qualityLevels())
}, 200)
return
}
const VjsButton = videojs.getComponent('Button')
const dashQualitySelector = videojs.extend(VjsButton, {
constructor: function(player, options) {
VjsButton.call(this, player, options)
},
handleClick: function(event) {
console.log(event)
const selectedQuality = event.target.innerText
const bitrate = selectedQuality === 'auto' ? 'auto' : parseInt(event.target.attributes.bitrate.value)
v.setDashQualityLevel(bitrate)
},
createControlTextEl: function (button) {
const beginningHtml = `<div class="vjs-quality-level-value">
<span id="vjs-current-quality">1080p</span>
</div>
<div class="vjs-quality-level-menu vjs-menu">
<ul class="vjs-menu-content" role="menu">`
const endingHtml = '</ul></div>'
let qualityHtml = `<li class="vjs-menu-item quality-item" role="menuitemradio" tabindex="-1" aria-checked="false" aria-disabled="false">
<span class="vjs-menu-item-text">Auto</span>
<span class="vjs-control-text" aria-live="polite"></span>
</li>`
levels.levels_.sort((a, b) => {
if (b.height === a.height) {
return b.bitrate - a.bitrate
} else {
return b.height - a.height
}
}).forEach((quality, index, array) => {
let fps
let qualityLabel
let bitrate
if (typeof v.adaptiveFormats !== 'undefined' && v.adaptiveFormats.length > 0) {
const adaptiveFormat = v.adaptiveFormats.find((format) => {
return format.bitrate === quality.bitrate
})
v.activeAdaptiveFormats.push(adaptiveFormat)
fps = adaptiveFormat.fps
qualityLabel = adaptiveFormat.qualityLabel ? adaptiveFormat.qualityLabel : quality.height + 'p'
bitrate = quality.bitrate
} else {
fps = 30
qualityLabel = quality.height + 'p'
bitrate = quality.bitrate
}
qualityHtml = qualityHtml + `<li class="vjs-menu-item quality-item" role="menuitemradio" tabindex="-1" aria-checked="false" aria-disabled="false" fps="${fps}" bitrate="${bitrate}">
<span class="vjs-menu-item-text" fps="${fps}" bitrate="${bitrate}">${qualityLabel}</span>
<span class="vjs-control-text" aria-live="polite"></span>
</li>`
// Old logic, revert if needed.
/* let is60Fps = false
if (index < array.length - 1 && array[index + 1].height === quality.height) {
if (array[index + 1].bitrate < quality.bitrate) {
is60Fps = true
}
}
const qualityText = is60Fps ? quality.height + 'p60' : quality.height + 'p'
qualityHtml = qualityHtml + `<li class="vjs-menu-item quality-item" role="menuitemradio" tabindex="-1" aria-checked="false aria-disabled="false">
<span class="vjs-menu-item-text">${qualityText}</span>
<span class="vjs-control-text" aria-live="polite"></span>
</li>` */
})
return $(button).html(
$(beginningHtml + qualityHtml + endingHtml).attr(
'title',
'Select Quality'
))
}
})
videojs.registerComponent('dashQualitySelector', dashQualitySelector)
this.player.controlBar.addChild('dashQualitySelector', {}, this.player.controlBar.children_.length - 1)
this.determineDefaultQualityDash()
},
transformAndInsertCaptions: async function() {
let captionList
if (this.captionHybridList[0] instanceof Promise) {
captionList = await Promise.all(this.captionHybridList)
this.$emit('store-caption-list', captionList)
} else {
captionList = this.captionHybridList
}
for (const caption of captionList) {
this.player.addRemoteTextTrack({
kind: 'subtitles',
src: caption.baseUrl || caption.url,
srclang: caption.languageCode,
label: caption.label || caption.name.simpleText,
type: caption.type
}, true)
}
},
toggleFullWindow: function() {
if (!this.player.isFullscreen_) {
if (this.player.isFullWindow) {
@ -720,6 +1123,14 @@ export default Vue.extend({
}
},
toggleFullscreenClass: function () {
if (this.player.isFullscreen()) {
$('body').addClass('vjs--full-screen-enabled')
} else {
$('body').removeClass('vjs--full-screen-enabled')
}
},
handleTouchStart: function (event) {
const v = this
this.touchPauseTimeout = setTimeout(() => {
@ -927,6 +1338,7 @@ export default Vue.extend({
},
...mapActions([
'showToast',
'calculateColorLuminance'
])
}

View File

@ -18,15 +18,6 @@
:label="source.qualityLabel"
:selected="source.qualityLabel === selectedDefaultQuality"
>
<track
v-for="(caption, index) in captionList"
:key="index + '_caption'"
kind="subtitles"
:src="caption.baseUrl || caption.url"
:srclang="caption.languageCode"
:label="caption.label || caption.name.simpleText"
:type="caption.type"
>
</video>
</div>
</template>

View File

@ -1,6 +1,7 @@
import Vue from 'vue'
import $ from 'jquery'
import { mapActions } from 'vuex'
import { app } from '@electron/remote'
import FtCard from '../ft-card/ft-card.vue'
import FtSelect from '../ft-select/ft-select.vue'
import FtInput from '../ft-input/ft-input.vue'
@ -96,11 +97,13 @@ export default Vue.extend({
},
localeOptions: function () {
return Object.keys(this.$i18n.messages)
return ['system'].concat(Object.keys(this.$i18n.messages))
},
localeNames: function () {
const names = []
const names = [
this.$t('Settings.General Settings.System Default')
]
Object.keys(this.$i18n.messages).forEach((locale) => {
const localeName = this.$i18n.messages[locale]['Locale Name']
@ -167,7 +170,7 @@ export default Vue.extend({
this.updateInvidiousInstanceBounce = debounce(this.updateInvidiousInstance, 500)
this.currentLocale = this.$i18n.locale
this.currentLocale = localStorage.getItem('locale')
},
beforeDestroy: function () {
if (this.invidiousInstance === '') {
@ -190,18 +193,41 @@ export default Vue.extend({
},
updateLocale: function (locale) {
this.$i18n.locale = locale
this.currentLocale = locale
localStorage.setItem('locale', locale)
if (locale === 'system') {
const systemLocale = app.getLocale().replace(/-|_/, '_')
const findLocale = Object.keys(this.$i18n.messages).find((locale) => {
const localeName = locale.replace(/-|_/, '_')
return localeName.includes(systemLocale)
})
if (typeof findLocale !== 'undefined') {
this.$i18n.locale = findLocale
this.currentLocale = 'system'
localStorage.setItem('locale', 'system')
} else {
// Translating this string isn't needed because the user will always see it in English
this.showToast({
message: 'Locale not found, defaulting to English (US)'
})
this.$i18n.locale = 'en-US'
this.currentLocale = 'en-US'
localStorage.setItem('locale', 'en-US')
}
} else {
this.$i18n.locale = locale
this.currentLocale = locale
localStorage.setItem('locale', locale)
}
const payload = {
isDev: this.isDev,
locale: locale
locale: this.currentLocale
}
this.getRegionData(payload)
},
...mapActions([
'showToast',
'updateEnableSearchSuggestions',
'updateBackendFallback',
'updateCheckForUpdates',

View File

@ -62,7 +62,7 @@
</div>
<ft-flex-box>
<ft-slider
:label="$t('Settings.Player Settings.Playlist Next Video Interval')"
:label="$t('Settings.Player Settings.Next Video Interval')"
:default-value="defaultInterval"
:min-value="0"
:max-value="60"

View File

@ -33,6 +33,10 @@ export default Vue.extend({
saveWatchedProgress: function () {
return this.$store.getters.getSaveWatchedProgress
},
removeVideoMetaFiles: function () {
return this.$store.getters.getRemoveVideoMetaFiles
},
profileList: function () {
return this.$store.getters.getProfileList
},
@ -66,6 +70,13 @@ export default Vue.extend({
this.updateRememberHistory(value)
},
handleVideoMetaFiles: function (value) {
if (!value) {
this.updateRemoveVideoMetaFiles(false)
}
this.updateRemoveVideoMetaFiles(value)
},
handleRemoveHistory: function (option) {
this.showRemoveHistoryPrompt = false
@ -102,6 +113,7 @@ export default Vue.extend({
...mapActions([
'updateRememberHistory',
'updateRemoveVideoMetaFiles',
'removeAllHistory',
'updateSaveWatchedProgress',
'clearSessionSearchHistory',

View File

@ -23,6 +23,15 @@
@change="updateSaveWatchedProgress"
/>
</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>
<br>
<ft-flex-box>

View File

@ -1,7 +1,6 @@
import Vue from 'vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import SideNavMoreOptions from '../side-nav-more-options/side-nav-more-options.vue'
import router from '../../router/index.js'
export default Vue.extend({
name: 'SideNav',
@ -60,7 +59,7 @@ export default Vue.extend({
},
methods: {
navigate: function (route) {
router.push('/' + route)
this.$router.push('/' + route)
},
goToChannel: function (id) {

View File

@ -7,11 +7,14 @@
<div class="inner">
<div
class="navOption topNavOption mobileShow"
role="button"
tabindex="0"
@click="navigate('subscriptions')"
>
<font-awesome-icon
icon="rss"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("Subscriptions.Subscriptions") }}
@ -20,11 +23,15 @@
<div
v-if="!hideTrendingVideos"
class="navOption mobileHidden"
role="button"
tabindex="0"
@click="navigate('trending')"
@keypress="navigate('trending')"
>
<font-awesome-icon
icon="fire"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("Trending") }}
@ -33,11 +40,15 @@
<div
v-if="!hidePopularVideos"
class="navOption mobileHidden"
role="button"
tabindex="0"
@click="navigate('popular')"
@keypress="navigate('popular')"
>
<font-awesome-icon
icon="users"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("Most Popular") }}
@ -46,11 +57,15 @@
<div
v-if="!hidePlaylists"
class="navOption mobileShow"
role="button"
tabindex="0"
@click="navigate('userplaylists')"
@keypress="navigate('userplaylists')"
>
<font-awesome-icon
icon="bookmark"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("Playlists") }}
@ -61,11 +76,15 @@
/>
<div
class="navOption mobileShow"
role="button"
tabindex="0"
@click="navigate('history')"
@keypress="navigate('history')"
>
<font-awesome-icon
icon="history"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("History.History") }}
@ -74,11 +93,15 @@
<hr>
<div
class="navOption mobileShow"
role="button"
tabindex="0"
@click="navigate('settings')"
@keypress="navigate('settings')"
>
<font-awesome-icon
icon="sliders-h"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("Settings.Settings") }}
@ -86,11 +109,15 @@
</div>
<div
class="navOption mobileHidden"
role="button"
tabindex="0"
@click="navigate('about')"
@keypress="navigate('about')"
>
<font-awesome-icon
icon="info-circle"
class="navIcon"
fixed-width
/>
<p class="navLabel">
{{ $t("About.About") }}
@ -105,7 +132,10 @@
:key="index"
class="navChannel mobileHidden"
:title="channel.name"
role="button"
tabindex="0"
@click="goToChannel(channel.id)"
@keypress="goToChannel(channel.id)"
>
<div
class="thumbnailContainer"

View File

@ -0,0 +1,25 @@
.relative {
position: relative;
}
.card {
width: 85%;
margin: 0 auto;
margin-bottom: 10px;
}
.center {
text-align: center;
}
@media only screen and (max-width: 680px) {
.card {
width: 90%;
}
}
@media only screen and (max-width: 500px) {
.sponsorBlockSettingsFlexBox {
justify-content: flex-start;
}
}

View File

@ -0,0 +1,48 @@
import Vue from 'vue'
import { mapActions } from 'vuex'
import FtCard from '../ft-card/ft-card.vue'
import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue'
import FtInput from '../ft-input/ft-input.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
export default Vue.extend({
name: 'SponsorBlockSettings',
components: {
'ft-card': FtCard,
'ft-toggle-switch': FtToggleSwitch,
'ft-input': FtInput,
'ft-flex-box': FtFlexBox
},
computed: {
useSponsorBlock: function () {
return this.$store.getters.getUseSponsorBlock
},
sponsorBlockUrl: function () {
return this.$store.getters.getSponsorBlockUrl
},
sponsorBlockShowSkippedToast: function () {
return this.$store.getters.getSponsorBlockShowSkippedToast
}
},
methods: {
handleUpdateSponsorBlock: function (value) {
this.updateUseSponsorBlock(value)
},
handleUpdateSponsorBlockUrl: function (value) {
const sponsorBlockUrlWithoutTrailingSlash = value.replace(/\/$/, '')
const sponsorBlockUrlWithoutApiSuffix = sponsorBlockUrlWithoutTrailingSlash.replace(/\/api$/, '')
this.updateSponsorBlockUrl(sponsorBlockUrlWithoutApiSuffix)
},
handleUpdateSponsorBlockShowSkippedToast: function (value) {
this.updateSponsorBlockShowSkippedToast(value)
},
...mapActions([
'updateUseSponsorBlock',
'updateSponsorBlockUrl',
'updateSponsorBlockShowSkippedToast'
])
}
})

View File

@ -0,0 +1,37 @@
<template>
<ft-card
class="relative card"
>
<h3
class="videoTitle"
>
{{ $t("Settings.SponsorBlock Settings.SponsorBlock Settings") }}
</h3>
<ft-flex-box class="sponsorBlockSettingsFlexBox">
<ft-toggle-switch
:label="$t('Settings.SponsorBlock Settings.Enable SponsorBlock')"
:default-value="useSponsorBlock"
@change="handleUpdateSponsorBlock"
/>
</ft-flex-box>
<ft-flex-box class="sponsorBlockSettingsFlexBox">
<ft-toggle-switch
:label="$t('Settings.SponsorBlock Settings.Notify when sponsor segment is skipped')"
:default-value="sponsorBlockShowSkippedToast"
@change="handleUpdateSponsorBlockShowSkippedToast"
/>
</ft-flex-box>
<ft-flex-box>
<ft-input
:placeholder="$t('Settings.SponsorBlock Settings[\'SponsorBlock API Url (Default is https://sponsor.ajay.app)\']')"
:show-arrow="false"
:show-label="true"
:value="sponsorBlockUrl"
@input="handleUpdateSponsorBlockUrl"
/>
</ft-flex-box>
</ft-card>
</template>
<script src="./sponsor-block-settings.js" />
<style scoped src="./sponsor-block-settings.css" />

View File

@ -1,11 +1,12 @@
import Vue from 'vue'
import { mapActions } from 'vuex'
import FtInput from '../ft-input/ft-input.vue'
import FtSearchFilters from '../ft-search-filters/ft-search-filters.vue'
import FtProfileSelector from '../ft-profile-selector/ft-profile-selector.vue'
import $ from 'jquery'
import router from '../../router/index.js'
import debounce from 'lodash.debounce'
import ytSuggest from 'youtube-suggest'
const { ipcRenderer } = require('electron')
export default Vue.extend({
name: 'TopNav',
@ -49,6 +50,18 @@ export default Vue.extend({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
forwardText: function () {
return this.$t('Forward')
},
backwardText: function () {
return this.$t('Backward')
},
newWindowText: function () {
return this.$t('Open New Window')
}
},
mounted: function () {
@ -89,32 +102,76 @@ export default Vue.extend({
searchInput.blur()
}
const { videoId, timestamp } = await this.$store.dispatch('getVideoParamsFromUrl', query)
const playlistId = await this.$store.dispatch('getPlaylistIdFromUrl', query)
this.$store.dispatch('getYoutubeUrlInfo', query).then((result) => {
switch (result.urlType) {
case 'video': {
const { videoId, timestamp } = result
console.log(playlistId)
if (videoId) {
this.$router.push({
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
} else if (playlistId) {
this.$router.push({
path: `/playlist/${playlistId}`
})
} else {
router.push({
path: `/search/${encodeURIComponent(query)}`,
query: {
sortBy: this.searchSettings.sortBy,
time: this.searchSettings.time,
type: this.searchSettings.type,
duration: this.searchSettings.duration
this.$router.push({
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
break
}
})
}
case 'playlist': {
const { playlistId, query } = result
this.$router.push({
path: `/playlist/${playlistId}`,
query
})
break
}
case 'search': {
const { searchQuery, query } = result
this.$router.push({
path: `/search/${encodeURIComponent(searchQuery)}`,
query
})
break
}
case 'hashtag': {
// TODO: Implement a hashtag related view
let message = 'Hashtags have not yet been implemented, try again later'
if (this.$t(message) && this.$t(message) !== '') {
message = this.$t(message)
}
this.showToast({
message: message
})
break
}
case 'channel': {
const { channelId } = result
this.$router.push({
path: `/channel/${channelId}`
})
break
}
case 'invalid_url':
default: {
this.$router.push({
path: `/search/${encodeURIComponent(query)}`,
query: {
sortBy: this.searchSettings.sortBy,
time: this.searchSettings.time,
type: this.searchSettings.type,
duration: this.searchSettings.duration
}
})
}
}
})
// Close the filter panel
this.showFilters = false
},
@ -195,6 +252,14 @@ export default Vue.extend({
toggleSideNav: function () {
this.$store.commit('toggleSideNav')
}
},
createNewWindow: function () {
ipcRenderer.send('createNewWindow')
},
...mapActions([
'showToast'
])
}
})

View File

@ -66,6 +66,10 @@
@media only screen and (min-width: 681px)
display: none
.navNewWindowIcon
@media only screen and (max-width: 680px)
display: none
.logo // parts that make up the logo
display: flex
align-items: center

View File

@ -7,22 +7,42 @@
<font-awesome-icon
class="menuIcon navIcon"
icon="bars"
role="button"
tabindex="0"
@click="toggleSideNav"
@keypress="toggleSideNav"
/>
<font-awesome-icon
class="navBackIcon navIcon"
icon="arrow-left"
role="button"
tabindex="0"
:title="forwardText"
@click="historyBack"
@keypress="historyBack"
/>
<font-awesome-icon
class="navForwardIcon navIcon"
icon="arrow-right"
role="button"
tabindex="0"
:title="forwardText"
@click="historyForward"
@keypress="historyForward"
/>
<font-awesome-icon
class="navSearchIcon navIcon"
icon="search"
role="button"
tabindex="0"
@click="toggleSearchContainer"
@keypress="toggleSearchContainer"
/>
<font-awesome-icon
class="navNewWindowIcon navIcon"
icon="clone"
:title="newWindowText"
@click="createNewWindow"
/>
<div class="logo">
<div
@ -39,6 +59,7 @@
:placeholder="$t('Search / Go to URL')"
class="searchInput"
:is-search="true"
:select-on-focus="true"
:data-list="searchSuggestionsDataList"
@input="getSearchSuggestionsDebounce"
@click="goToSearch"
@ -46,7 +67,10 @@
<font-awesome-icon
class="navFilterIcon navIcon"
icon="filter"
role="button"
tabindex="0"
@click="showFilters = !showFilters"
@keypress="showFilters = !showFilters"
/>
</div>
<ft-search-filters

View File

@ -34,6 +34,7 @@
height: 60px;
border-radius: 200px 200px 200px 200px;
-webkit-border-radius: 200px 200px 200px 200px;
cursor: pointer;
}
.commentAuthor {
@ -41,6 +42,7 @@
font-size: 14px;
margin-left: 68px;
margin-top: 0px;
cursor: pointer;
}
.commentText {

View File

@ -227,6 +227,7 @@ export default Vue.extend({
parseLocalCommentData: function (response, index = null) {
const commentData = response.comments.map((comment) => {
comment.authorLink = comment.authorId
comment.showReplies = false
comment.authorThumb = comment.authorThumb[0].url
comment.replies = []
@ -273,6 +274,7 @@ export default Vue.extend({
this.invidiousAPICall(payload).then((response) => {
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.authorLink = comment.authorId
comment.authorThumb = comment.authorThumbnails[1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
if (this.hideCommentLikes) {
comment.likes = null
@ -338,6 +340,7 @@ export default Vue.extend({
this.$store.dispatch('invidiousAPICall', payload).then((response) => {
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.authorLink = comment.authorId
comment.authorThumb = comment.authorThumbnails[1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
if (this.hideCommentLikes) {
comment.likes = null
@ -372,6 +375,10 @@ export default Vue.extend({
})
},
goToChannel: function (channelId) {
this.$router.push({ path: `/channel/${channelId}` })
},
...mapActions([
'showToast',
'toLocalePublicationString',

View File

@ -45,8 +45,12 @@
<img
:src="comment.authorThumb"
class="commentThumbnail"
@click="goToChannel(comment.authorLink)"
>
<p
class="commentAuthor"
@click="goToChannel(comment.authorLink)"
>
<p class="commentAuthor">
{{ comment.author }}
<span class="commentDate">
{{ comment.time }}

View File

@ -55,9 +55,8 @@ export default Vue.extend({
descriptionText = descriptionText.replace(/&v.+?(?=")/g, '')
descriptionText = descriptionText.replace(/&redirect-token.+?(?=")/g, '')
descriptionText = descriptionText.replace(/&redir_token.+?(?=")/g, '')
descriptionText = descriptionText.replace(/href="http(s)?:\/\/youtube\.com/g, 'href="freetube://https://youtube.com')
descriptionText = descriptionText.replace(/href="\/watch/g, 'href="freetube://https://youtube.com')
descriptionText = descriptionText.replace(/href="\/results\?search_query=/g, 'href="freetube://')
descriptionText = descriptionText.replace(/href="\//g, 'href="https://www.youtube.com/')
// TODO: Implement hashtag support
descriptionText = descriptionText.replace(/href="\/hashtag\//g, 'href="freetube://')
descriptionText = descriptionText.replace(/yt\.www\.watch\.player\.seekTo/g, 'changeDuration')

View File

@ -74,7 +74,7 @@
v-if="theatrePossible"
:title="$t('Toggle Theatre Mode')"
class="theatreModeButton option"
icon="expand-alt"
icon="tv"
theme="secondary"
@click="$emit('theatre-mode')"
/>

View File

@ -161,7 +161,7 @@ export default Vue.extend({
comment.messageHtml = comment.messageHtml + text.text
}
} else if (typeof (text.alt) !== 'undefined') {
const htmlImg = `<img src="${text.url}" alt="${text.alt}" />`
const htmlImg = `<img src="${text.url}" alt="${text.alt}" height="24" width="24" />`
comment.messageHtml = comment.messageHtml + htmlImg
} else {
comment.messageHtml = comment.messageHtml + text.text

View File

@ -27,7 +27,7 @@ Vue.component('FontAwesomeIcon', FontAwesomeIcon)
Vue.use(VueI18n)
// 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', 'nl', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sk', 'sl', 'sv', 'tr', '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 = {}
/* eslint-disable-next-line */
const fileLocation = isDev ? 'static/locales/' : `${__dirname}/static/locales/`
@ -46,7 +46,7 @@ activeLocales.forEach((locale) => {
const i18n = new VueI18n({
locale: 'en-US', // set locale
fallbackLocale: {
default: 'en-US'
default: 'en-US' // for the case systems locale has no corresponding .yaml file en-US gets set
},
messages // set locale messages
})

View File

@ -13,7 +13,6 @@ if (window && window.process && window.process.type === 'renderer') {
const remote = require('@electron/remote')
dbLocation = remote.app.getPath('userData')
dbLocation = dbLocation + '/history.db'
} else {
dbLocation = 'history.db'
@ -77,6 +76,10 @@ const actions = {
dispatch('grabHistory')
}
})
},
compactHistory (_) {
historyDb.persistence.compactDatafile()
}
}

View File

@ -47,38 +47,44 @@ const getters = {
const actions = {
grabAllProfiles ({ rootState, dispatch, commit }, defaultName = null) {
profileDb.find({}, (err, results) => {
if (!err) {
if (results.length === 0) {
dispatch('createDefaultProfile', defaultName)
} else {
// We want the primary profile to always be first
// So sort with that then sort alphabetically by profile name
const profiles = results.sort((a, b) => {
if (a._id === 'allChannels') {
return -1
}
return new Promise((resolve, reject) => {
profileDb.find({}, (err, results) => {
if (!err) {
if (results.length === 0) {
dispatch('createDefaultProfile', defaultName)
} else {
// We want the primary profile to always be first
// So sort with that then sort alphabetically by profile name
const profiles = results.sort((a, b) => {
if (a._id === 'allChannels') {
return -1
}
if (b._id === 'allChannels') {
return 1
}
if (b._id === 'allChannels') {
return 1
}
return b.name - a.name
})
if (state.profileList.length < profiles.length) {
const profileIndex = profiles.findIndex((profile) => {
return profile._id === rootState.settings.defaultProfile
return b.name - a.name
})
if (profileIndex !== -1) {
dispatch('updateActiveProfile', profileIndex)
if (state.profileList.length < profiles.length) {
const profileIndex = profiles.findIndex((profile) => {
return profile._id === rootState.settings.defaultProfile
})
if (profileIndex !== -1) {
commit('setActiveProfile', profileIndex)
}
}
commit('setProfileList', profiles)
}
commit('setProfileList', profiles)
resolve()
} else {
reject(err)
}
}
})
})
},
@ -103,7 +109,7 @@ const actions = {
textColor: textColor,
subscriptions: []
}
console.log(defaultProfile)
profileDb.update({ _id: 'allChannels' }, defaultProfile, { upsert: true }, (err, numReplaced) => {
if (!err) {
dispatch('grabAllProfiles')
@ -135,6 +141,10 @@ const actions = {
})
},
compactProfiles (_) {
profileDb.persistence.compactDatafile()
},
updateActiveProfile ({ commit }, index) {
commit('setActiveProfile', index)
}

View File

@ -47,6 +47,7 @@ const state = {
enableSearchSuggestions: true,
rememberHistory: true,
saveWatchedProgress: true,
removeVideoMetaFiles: true,
autoplayVideos: true,
autoplayPlaylists: true,
playNextVideo: false,
@ -77,7 +78,10 @@ const state = {
hidePopularVideos: false,
hidePlaylists: false,
hideLiveChat: false,
hideActiveSubscriptions: false
hideActiveSubscriptions: false,
useSponsorBlock: false,
sponsorBlockUrl: 'https://sponsor.ajay.app',
sponsorBlockShowSkippedToast: true
}
const getters = {
@ -141,6 +145,10 @@ const getters = {
return state.saveWatchedProgress
},
getRemoveVideoMetaFiles: () => {
return state.removeVideoMetaFiles
},
getAutoplayVideos: () => {
return state.autoplayVideos
},
@ -259,157 +267,185 @@ const getters = {
getHideActiveSubscriptions: () => {
return state.hideActiveSubscriptions
},
getUseSponsorBlock: () => {
return state.useSponsorBlock
},
getSponsorBlockUrl: () => {
return state.sponsorBlockUrl
},
getSponsorBlockShowSkippedToast: () => {
return state.sponsorBlockShowSkippedToast
}
}
const actions = {
grabUserSettings ({ dispatch, commit, rootState }) {
settingsDb.find({}, (err, results) => {
if (!err) {
console.log(results)
results.forEach((result) => {
switch (result._id) {
case 'invidiousInstance':
if (result.value === '') {
dispatch('updateInvidiousInstance', 'https://invidious.snopyta.org')
} else {
commit('setInvidiousInstance', result.value)
}
break
case 'backendFallback':
commit('setBackendFallback', result.value)
break
case 'defaultProfile':
commit('setDefaultProfile', result.value)
break
case 'checkForUpdates':
commit('setCheckForUpdates', result.value)
break
case 'checkForBlogPosts':
commit('setCheckForBlogPosts', result.value)
break
case 'enableSearchSuggestions':
commit('setEnableSearchSuggestions', result.value)
break
case 'backendPreference':
commit('setBackendPreference', result.value)
break
case 'landingPage':
commit('setLandingPage', result.value)
break
case 'region':
commit('setRegion', result.value)
break
case 'listType':
commit('setListType', result.value)
break
case 'thumbnailPreference':
commit('setThumbnailPreference', result.value)
break
case 'barColor':
commit('setBarColor', result.value)
break
case 'uiScale':
webframe.setZoomFactor(parseInt(result.value) / 100)
commit('setUiScale', result.value)
break
case 'disableSmoothScrolling':
commit('setDisableSmoothScrolling', result.value)
break
case 'hideWatchedSubs':
commit('setHideWatchedSubs', result.value)
break
case 'useRssFeeds':
commit('setUseRssFeeds', result.value)
break
case 'rememberHistory':
commit('setRememberHistory', result.value)
break
case 'saveWatchedProgress':
commit('setSaveWatchedProgress', result.value)
break
case 'autoplayVideos':
commit('setAutoplayVideos', result.value)
break
case 'autoplayPlaylists':
commit('setAutoplayPlaylists', result.value)
break
case 'playNextVideo':
commit('setPlayNextVideo', result.value)
break
case 'enableSubtitles':
commit('setEnableSubtitles', result.value)
break
case 'forceLocalBackendForLegacy':
commit('setForceLocalBackendForLegacy', result.value)
break
case 'proxyVideos':
commit('setProxyVideos', result.value)
break
case 'useProxy':
commit('setUseProxy', result.value)
break
case 'proxyProtocol':
commit('setProxyProtocol', result.value)
break
case 'proxyHostname':
commit('setProxyHostname', result.value)
break
case 'proxyPort':
commit('setProxyPort', result.value)
break
case 'defaultTheatreMode':
commit('setDefaultTheatreMode', result.value)
break
case 'defaultInterval':
commit('setDefaultInterval', result.value)
break
case 'defaultVolume':
commit('setDefaultVolume', result.value)
sessionStorage.setItem('volume', result.value)
break
case 'defaultPlayback':
commit('setDefaultPlayback', result.value)
break
case 'defaultVideoFormat':
commit('setDefaultVideoFormat', result.value)
break
case 'defaultQuality':
commit('setDefaultQuality', result.value)
break
case 'hideVideoViews':
commit('setHideVideoViews', result.value)
break
case 'hideVideoLikesAndDislikes':
commit('setHideVideoLikesAndDislikes', result.value)
break
case 'hideChannelSubscriptions':
commit('setHideChannelSubscriptions', result.value)
break
case 'hideCommentLikes':
commit('setHideCommentLikes', result.value)
break
case 'hideRecommendedVideos':
commit('setHideRecommendedVideos', result.value)
break
case 'hideTrendingVideos':
commit('setHideTrendingVideos', result.value)
break
case 'hidePopularVideos':
commit('setHidePopularVideos', result.value)
break
case 'hidePlaylists':
commit('setHidePlaylists', result.value)
break
case 'hideLiveChat':
commit('setHideLiveChat', result.value)
break
case 'hideActiveSubscriptions':
commit('setHideActiveSubscriptions', result.value)
break
}
})
}
return new Promise((resolve, reject) => {
settingsDb.find({}, (err, results) => {
if (!err) {
console.log(results)
results.forEach((result) => {
switch (result._id) {
case 'invidiousInstance':
if (result.value === '') {
dispatch('updateInvidiousInstance', 'https://invidious.snopyta.org')
} else {
commit('setInvidiousInstance', result.value)
}
break
case 'backendFallback':
commit('setBackendFallback', result.value)
break
case 'defaultProfile':
console.log('IN SETTING DEFAULT:', result.value)
commit('setDefaultProfile', result.value)
break
case 'checkForUpdates':
commit('setCheckForUpdates', result.value)
break
case 'checkForBlogPosts':
commit('setCheckForBlogPosts', result.value)
break
case 'enableSearchSuggestions':
commit('setEnableSearchSuggestions', result.value)
break
case 'backendPreference':
commit('setBackendPreference', result.value)
break
case 'landingPage':
commit('setLandingPage', result.value)
break
case 'region':
commit('setRegion', result.value)
break
case 'listType':
commit('setListType', result.value)
break
case 'thumbnailPreference':
commit('setThumbnailPreference', result.value)
break
case 'barColor':
commit('setBarColor', result.value)
break
case 'uiScale':
webframe.setZoomFactor(parseInt(result.value) / 100)
commit('setUiScale', result.value)
break
case 'disableSmoothScrolling':
commit('setDisableSmoothScrolling', result.value)
break
case 'hideWatchedSubs':
commit('setHideWatchedSubs', result.value)
break
case 'useRssFeeds':
commit('setUseRssFeeds', result.value)
break
case 'rememberHistory':
commit('setRememberHistory', result.value)
break
case 'saveWatchedProgress':
commit('setSaveWatchedProgress', result.value)
break
case 'removeVideoMetaFiles':
commit('setRemoveVideoMetaFiles', result.value)
break
case 'autoplayVideos':
commit('setAutoplayVideos', result.value)
break
case 'autoplayPlaylists':
commit('setAutoplayPlaylists', result.value)
break
case 'playNextVideo':
commit('setPlayNextVideo', result.value)
break
case 'enableSubtitles':
commit('setEnableSubtitles', result.value)
break
case 'forceLocalBackendForLegacy':
commit('setForceLocalBackendForLegacy', result.value)
break
case 'proxyVideos':
commit('setProxyVideos', result.value)
break
case 'useProxy':
commit('setUseProxy', result.value)
break
case 'proxyProtocol':
commit('setProxyProtocol', result.value)
break
case 'proxyHostname':
commit('setProxyHostname', result.value)
break
case 'proxyPort':
commit('setProxyPort', result.value)
break
case 'defaultTheatreMode':
commit('setDefaultTheatreMode', result.value)
break
case 'defaultInterval':
commit('setDefaultInterval', result.value)
break
case 'defaultVolume':
commit('setDefaultVolume', result.value)
sessionStorage.setItem('volume', result.value)
break
case 'defaultPlayback':
commit('setDefaultPlayback', result.value)
break
case 'defaultVideoFormat':
commit('setDefaultVideoFormat', result.value)
break
case 'defaultQuality':
commit('setDefaultQuality', result.value)
break
case 'hideVideoViews':
commit('setHideVideoViews', result.value)
break
case 'hideVideoLikesAndDislikes':
commit('setHideVideoLikesAndDislikes', result.value)
break
case 'hideChannelSubscriptions':
commit('setHideChannelSubscriptions', result.value)
break
case 'hideCommentLikes':
commit('setHideCommentLikes', result.value)
break
case 'hideRecommendedVideos':
commit('setHideRecommendedVideos', result.value)
break
case 'hideTrendingVideos':
commit('setHideTrendingVideos', result.value)
break
case 'hidePopularVideos':
commit('setHidePopularVideos', result.value)
break
case 'hidePlaylists':
commit('setHidePlaylists', result.value)
break
case 'hideLiveChat':
commit('setHideLiveChat', result.value)
break
case 'hideActiveSubscriptions':
commit('setHideActiveSubscriptions', result.value)
break
case 'useSponsorBlock':
commit('setUseSponsorBlock', result.value)
break
case 'sponsorBlockUrl':
commit('setSponsorBlockUrl', result.value)
break
case 'sponsorBlockShowSkippedToast':
commit('setSponsorBlockShowSkippedToast', result.value)
}
})
resolve()
}
reject(err)
})
})
},
@ -550,6 +586,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) {
settingsDb.update({ _id: 'autoplayVideos' }, { _id: 'autoplayVideos', value: autoplayVideos }, { upsert: true }, (err, numReplaced) => {
if (!err) {
@ -765,6 +809,30 @@ const actions = {
commit('setHideLiveChat', hideLiveChat)
}
})
},
updateUseSponsorBlock ({ commit }, useSponsorBlock) {
settingsDb.update({ _id: 'useSponsorBlock' }, { _id: 'useSponsorBlock', value: useSponsorBlock }, { upsert: true }, (err, numReplaced) => {
if (!err) {
commit('setUseSponsorBlock', useSponsorBlock)
}
})
},
updateSponsorBlockUrl ({ commit }, sponsorBlockUrl) {
settingsDb.update({ _id: 'sponsorBlockUrl' }, { _id: 'sponsorBlockUrl', value: sponsorBlockUrl }, { upsert: true }, (err, numReplaced) => {
if (!err) {
commit('setSponsorBlockUrl', sponsorBlockUrl)
}
})
},
updateSponsorBlockShowSkippedToast ({ commit }, sponsorBlockShowSkippedToast) {
settingsDb.update({ _id: 'sponsorBlockShowSkippedToast' }, { _id: 'sponsorBlockShowSkippedToast', value: sponsorBlockShowSkippedToast }, { upsert: true }, (err, numReplaced) => {
if (!err) {
commit('setSponsorBlockShowSkippedToast', sponsorBlockShowSkippedToast)
}
})
}
}
@ -817,6 +885,11 @@ const mutations = {
setSaveWatchedProgress (state, saveWatchedProgress) {
state.saveWatchedProgress = saveWatchedProgress
},
setRemoveVideoMetaFiles (state, removeVideoMetaFiles) {
state.removeVideoMetaFiles = removeVideoMetaFiles
},
setAutoplayVideos (state, autoplayVideos) {
state.autoplayVideos = autoplayVideos
},
@ -918,6 +991,15 @@ const mutations = {
},
setHideActiveSubscriptions (state, hideActiveSubscriptions) {
state.hideActiveSubscriptions = hideActiveSubscriptions
},
setUseSponsorBlock (state, useSponsorBlock) {
state.useSponsorBlock = useSponsorBlock
},
setSponsorBlockUrl (state, sponsorBlockUrl) {
state.sponsorBlockUrl = sponsorBlockUrl
},
setSponsorBlockShowSkippedToast (state, sponsorBlockShowSkippedToast) {
state.sponsorBlockShowSkippedToast = sponsorBlockShowSkippedToast
}
}

View File

@ -0,0 +1,38 @@
import $ from 'jquery'
import forge from 'node-forge'
const state = {}
const getters = {}
const actions = {
sponsorBlockSkipSegments ({ rootState }, { videoId, categories }) {
return new Promise((resolve, reject) => {
const messageDigestSha256 = forge.md.sha256.create()
messageDigestSha256.update(videoId)
const videoIdHashPrefix = messageDigestSha256.digest().toHex().substring(0, 4)
const requestUrl = `${rootState.settings.sponsorBlockUrl}/api/skipSegments/${videoIdHashPrefix}?categories=${JSON.stringify(categories)}`
$.getJSON(requestUrl, (response) => {
const segments = response
.filter((result) => result.videoID === videoId)
.flatMap((result) => result.segments)
resolve(segments)
}).fail((xhr, textStatus, error) => {
console.log(xhr)
console.log(textStatus)
console.log(requestUrl)
console.log(error)
reject(xhr)
})
})
}
}
const mutations = {}
export default {
state,
getters,
actions,
mutations
}

View File

@ -239,25 +239,143 @@ const actions = {
return extractors.reduce((a, c) => a || c(), null) || paramsObject
},
getPlaylistIdFromUrl (_, url) {
/** @type {URL} */
let urlObject
try {
urlObject = new URL(url)
} catch (e) {
return false
getYoutubeUrlInfo ({ state }, urlStr) {
// Returns
// - urlType [String] `video`, `playlist`
//
// If `urlType` is "video"
// - videoId [String]
// - timestamp [String]
//
// If `urlType` is "playlist"
// - playlistId [String]
// - query [Object]
//
// If `urlType` is "search"
// - searchQuery [String]
// - query [Object]
//
// If `urlType` is "hashtag"
// Nothing else
//
// If `urlType` is "channel"
// - channelId [String]
//
// If `urlType` is "unknown"
// Nothing else
//
// If `urlType` is "invalid_url"
// Nothing else
const { videoId, timestamp } = actions.getVideoParamsFromUrl(null, urlStr)
if (videoId) {
return {
urlType: 'video',
videoId,
timestamp
}
}
const extractors = [
// anything with /playlist?list=
function() {
if (urlObject.pathname === '/playlist' && urlObject.searchParams.has('list')) {
return urlObject.searchParams.get('list')
let url
try {
url = new URL(urlStr)
} catch {
return {
urlType: 'invalid_url'
}
}
let urlType = 'unknown'
const channelPattern =
/^\/(?:c\/|channel\/|user\/)?([^/]+)(?:\/join)?\/?$/
const typePatterns = new Map([
['playlist', /^\/playlist\/?$/],
['search', /^\/results\/?$/],
['hashtag', /^\/hashtag\/([^/?&#]+)$/],
['channel', channelPattern]
])
for (const [type, pattern] of typePatterns) {
const matchFound = pattern.test(url.pathname)
if (matchFound) {
urlType = type
break
}
}
switch (urlType) {
case 'playlist': {
if (!url.searchParams.has('list')) {
throw new Error('Playlist: "list" field not found')
}
const playlistId = url.searchParams.get('list')
url.searchParams.delete('list')
const query = {}
for (const [param, value] of url.searchParams) {
query[param] = value
}
return {
urlType: 'playlist',
playlistId,
query
}
}
]
return extractors.reduce((a, c) => a || c(), null) || false
case 'search': {
if (!url.searchParams.has('search_query')) {
throw new Error('Search: "search_query" field not found')
}
const searchQuery = url.searchParams.get('search_query')
url.searchParams.delete('search_query')
const searchSettings = state.searchSettings
const query = {
sortBy: searchSettings.sortBy,
time: searchSettings.time,
type: searchSettings.type,
duration: searchSettings.duration
}
for (const [param, value] of url.searchParams) {
query[param] = value
}
return {
urlType: 'search',
searchQuery,
query
}
}
case 'hashtag': {
return {
urlType: 'hashtag'
}
}
case 'channel': {
const channelId = url.pathname.match(channelPattern)[1]
if (!channelId) {
throw new Error('Channel: could not extract id')
}
return {
urlType: 'channel',
channelId
}
}
default: {
// Unknown URL type
return {
urlType: 'unknown'
}
}
}
},
padNumberWithLeadingZeros(_, payload) {

View File

@ -347,7 +347,7 @@ const actions = {
}
ytdl.getInfo(videoId, {
lang: localStorage.getItem('locale'),
lang: 'en-US',
requestOptions: { agent }
}).then((result) => {
resolve(result)

View File

@ -448,6 +448,10 @@ body.vjs-full-window {
.vjs-icon-fullwindow-enter:before, .video-js .vjs-fullwindow-control .vjs-icon-placeholder:before {
content: url(assets/img/open_fullwindow.svg);
}
/* Hide button in full screen mode */
.vjs--full-screen-enabled .vjs-button-fullwindow {
display: none;
}
.vjs-icon-fullwindow-exit, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder {
font-family: VideoJS;
@ -643,6 +647,48 @@ body.vjs-full-window {
display: none;
}
.vjs-quality-level-value {
width: 100%;
height: 100%;
}
.vjs-quality-level-value span {
line-height: 40px;
}
.vjs-quality-level-value:hover + .vjs-quality-level-menu {
display: block;
}
.vjs-quality-level-menu {
display: none;
position: absolute;
bottom: 30px;
left: -33px;
z-index: 5;
background-color: #151b17;
width: 100px;
max-height: 225px;
overflow-y: auto;
}
.vjs-quality-level-menu:hover {
display: block;
}
.vjs-quality-level-menu .vjs-menu-item {
padding: 5px;
}
.quality-selected {
background-color: var(--primary-color);
color: var(--text-with-main-color);
}
.quality-selected:hover {
background-color: var(--primary-color-hover) !important;
}
.vjs-menu .vjs-menu-content {
display: block;
padding: 0;
@ -1064,6 +1110,10 @@ body.vjs-full-window {
margin-left: -1px;
}
.video-js .vjs-volume-tooltip {
display: none;
}
.video-js .vjs-volume-panel {
transition: width 1s;
}

View File

@ -29,7 +29,7 @@ export default Vue.extend({
{
icon: 'question-circle',
title: this.$t('About.Help'),
content: `<a href="https://github.com/FreeTubeApp/FreeTube/wiki">${this.$t('About.FreeTube Wiki')}</a> / <a href="https://github.com/FreeTubeApp/FreeTube/wiki/F.A.Q.">${this.$t('About.FAQ')}</a>`
content: `<a href="https://docs.freetubeapp.io/">${this.$t('About.FreeTube Wiki')}</a> / <a href="https://docs.freetubeapp.io/faq/">${this.$t('About.FAQ')}</a>`
},
{
icon: 'exclamation-circle',
@ -44,7 +44,7 @@ export default Vue.extend({
{
icon: 'newspaper',
title: this.$t('About.Blog'),
content: '<a href="https://freetube.writeas.com/">https://freetube.writeas.com/</a>'
content: '<a href="https://blog.freetubeapp.io">https://blog.freetubeapp.io</a>'
},
{
icon: 'envelope',
@ -69,7 +69,7 @@ export default Vue.extend({
{
icon: 'users',
title: this.$t('About.Credits'),
content: `${this.$t('About.FreeTube is made possible by')} <a href="https://github.com/FreeTubeApp/FreeTube/wiki/Credits">${this.$t('About.these people and projects')}</a>`
content: `${this.$t('About.FreeTube is made possible by')} <a href="https://docs.freetubeapp.io/credits/">${this.$t('About.these people and projects')}</a>`
},
{
icon: 'heart',

View File

@ -257,7 +257,7 @@ export default Vue.extend({
}
this.thumbnailUrl = response.authorThumbnails[2].url
this.channelDescription = autolinker.link(response.description)
this.relatedChannels = response.relatedChannels
this.relatedChannels = response.relatedChannels.items
if (response.authorBanners !== null) {
const bannerUrl = response.authorBanners[response.authorBanners.length - 1].url

View File

@ -70,6 +70,7 @@
</div>
<ft-input
:placeholder="$t('Channel.Search Channel')"
:select-on-focus="true"
class="channelSearch"
@click="newSearch"
/>

View File

@ -7,7 +7,7 @@ import FtListVideo from '../../components/ft-list-video/ft-list-video.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
export default Vue.extend({
name: 'Search',
name: 'Playlist',
components: {
'ft-loader': FtLoader,
'ft-card': FtCard,
@ -40,37 +40,25 @@ export default Vue.extend({
watch: {
$route () {
// react to route changes...
const payload = {
query: this.$route.params.query,
options: {},
nextPage: false
}
if (typeof (this.sessionSearchHistory[this.query]) !== 'undefined' && this.query !== this.$route.params.query) {
this.isLoading = true
this.shownResults = []
// Replacing the data right away causes a strange error where the data
// Shown is mixed from 2 different search results. So we'll wait a moment
// Before showing the results.
setTimeout(this.replaceShownResults, 100, this.sessionSearchHistory[this.query])
} else {
this.performSearch(payload)
}
this.getPlaylist()
}
},
mounted: function () {
this.playlistId = this.$route.params.id
switch (this.backendPreference) {
case 'local':
this.getPlaylistLocal()
break
case 'invidious':
this.getPlaylistInvidious()
break
}
this.getPlaylist()
},
methods: {
getPlaylist: function () {
this.playlistId = this.$route.params.id
switch (this.backendPreference) {
case 'local':
this.getPlaylistLocal()
break
case 'invidious':
this.getPlaylistInvidious()
break
}
},
getPlaylistLocal: function () {
this.isLoading = true

View File

@ -136,17 +136,17 @@ export default Vue.extend({
return null
})
const returnDataInvidious = []
const dataToShow = []
returnData.forEach((video) => {
if (video.type === 'video') {
const authId = video.author.channelID
const publishDate = video.uploadedAt
let videoDuration = video.duration
const videoId = video.id
if (video.duration !== null && video.duration !== '') {
if (videoDuration !== null && videoDuration !== '' && videoDuration !== 'LIVE') {
videoDuration = ytTrendScraper.calculate_length_in_seconds(video.duration)
}
returnDataInvidious.push(
dataToShow.push(
{
videoId: videoId,
title: video.title,
@ -160,22 +160,22 @@ export default Vue.extend({
published: publishDate,
publishedText: publishDate,
lengthSeconds: videoDuration,
liveNow: video.isLive,
liveNow: video.isLive || videoDuration === 'LIVE',
paid: false,
premium: false,
isUpcoming: false,
timeText: video.duration
timeText: videoDuration
}
)
} else {
returnDataInvidious.push(video)
dataToShow.push(video)
}
})
if (payload.nextPage) {
this.shownResults = this.shownResults.concat(returnDataInvidious)
this.shownResults = this.shownResults.concat(dataToShow)
} else {
this.shownResults = returnDataInvidious
this.shownResults = dataToShow
}
this.nextPageRef = result.continuation

View File

@ -9,6 +9,7 @@ import PrivacySettings from '../../components/privacy-settings/privacy-settings.
import DataSettings from '../../components/data-settings/data-settings.vue'
import DistractionSettings from '../../components/distraction-settings/distraction-settings.vue'
import ProxySettings from '../../components/proxy-settings/proxy-settings.vue'
import SponsorBlockSettings from '../../components/sponsor-block-settings/sponsor-block-settings.vue'
export default Vue.extend({
name: 'Settings',
@ -22,6 +23,7 @@ export default Vue.extend({
'privacy-settings': PrivacySettings,
'data-settings': DataSettings,
'distraction-settings': DistractionSettings,
'proxy-settings': ProxySettings
'proxy-settings': ProxySettings,
'sponsor-block-settings': SponsorBlockSettings
}
})

View File

@ -8,6 +8,7 @@
<privacy-settings />
<data-settings />
<proxy-settings />
<sponsor-block-settings />
</div>
</template>

View File

@ -1,6 +1,5 @@
import Vue from 'vue'
import { mapActions } from 'vuex'
import xml2vtt from 'yt-xml2vtt'
import $ from 'jquery'
import fs from 'fs'
import ytDashGen from 'yt-dash-manifest-generator'
@ -33,6 +32,7 @@ export default Vue.extend({
},
beforeRouteLeave: function (to, from, next) {
this.handleRouteChange()
window.removeEventListener('beforeunload', this.handleWatchProgress)
next()
},
data: function() {
@ -69,7 +69,8 @@ export default Vue.extend({
activeSourceList: [],
videoSourceList: [],
audioSourceList: [],
captionSourceList: [],
adaptiveFormats: [],
captionHybridList: [], // [] -> Promise[] -> string[] (URIs)
recommendedVideos: [],
downloadLinks: [],
watchingPlaylist: false,
@ -91,6 +92,9 @@ export default Vue.extend({
rememberHistory: function () {
return this.$store.getters.getRememberHistory
},
removeVideoMetaFiles: function () {
return this.$store.getters.getRemoveVideoMetaFiles
},
saveWatchedProgress: function () {
return this.$store.getters.getSaveWatchedProgress
},
@ -153,7 +157,7 @@ export default Vue.extend({
this.firstLoad = true
this.activeFormat = this.defaultVideoFormat
this.videoStoryboardSrc = ''
this.captionSourceList = []
this.captionHybridList = []
this.downloadLinks = []
this.checkIfPlaylist()
@ -193,6 +197,8 @@ export default Vue.extend({
break
}
}
window.addEventListener('beforeunload', this.handleWatchProgress)
},
methods: {
changeTimestamp: function(timestamp) {
@ -290,17 +296,6 @@ export default Vue.extend({
this.isLiveContent = result.player_response.videoDetails.isLiveContent
this.isUpcoming = result.player_response.videoDetails.isUpcoming ? result.player_response.videoDetails.isUpcoming : false
if (!this.isLive && !this.isUpcoming) {
const captionTracks =
result.player_response.captions &&
result.player_response.captions.playerCaptionsTracklistRenderer
.captionTracks
if (typeof captionTracks !== 'undefined') {
await this.createCaptionUrls(captionTracks)
}
}
if (this.videoDislikeCount === null && !this.hideVideoLikesAndDislikes) {
this.videoDislikeCount = 0
}
@ -317,7 +312,7 @@ export default Vue.extend({
}
}
if (this.isLive && !this.isUpcoming) {
if ((this.isLive || this.isLiveContent) && !this.isUpcoming) {
this.enableLegacyFormat()
this.videoSourceList = result.formats.filter((format) => {
@ -365,8 +360,15 @@ export default Vue.extend({
} else {
this.videoLengthSeconds = parseInt(result.videoDetails.lengthSeconds)
if (result.player_response.streamingData !== undefined) {
this.videoSourceList = result.player_response.streamingData.formats.reverse()
this.downloadLinks = result.formats.map((format) => {
if (typeof (result.player_response.streamingData.formats) !== 'undefined') {
this.videoSourceList = result.player_response.streamingData.formats.reverse()
} else {
this.videoSourceList = result.player_response.streamingData.adaptiveFormats.reverse()
}
this.adaptiveFormats = this.videoSourceList
this.downloadLinks = result.formats.filter((format) => {
return typeof format.mimeType !== 'undefined'
}).map((format) => {
const qualityLabel = format.qualityLabel || format.bitrate
const itag = format.itag
const fps = format.fps ? (format.fps + 'fps') : 'kbps'
@ -387,16 +389,35 @@ export default Vue.extend({
return object
})
let captionLinks = result.player_response.captions
if (typeof captionLinks !== 'undefined') {
captionLinks = captionLinks.playerCaptionsTracklistRenderer.captionTracks.map((caption) => {
const captionTracks =
result.player_response.captions &&
result.player_response.captions.playerCaptionsTracklistRenderer
.captionTracks
if (typeof captionTracks !== 'undefined') {
const locale = this.$i18n.locale
if (locale !== null) {
const standardLocale = locale.replace('_', '-')
const noLocaleCaption = !captionTracks.some(track =>
track.languageCode === standardLocale && track.kind !== 'asr'
)
if (!standardLocale.startsWith('en') && noLocaleCaption) {
const baseUrl = result.player_response.captions.playerCaptionsRenderer.baseUrl
this.tryAddingTranslatedLocaleCaption(captionTracks, standardLocale, baseUrl)
}
}
this.captionHybridList = this.createCaptionPromiseList(captionTracks)
const captionLinks = captionTracks.map((caption) => {
const label = `${caption.name.simpleText} (${caption.languageCode}) - text/vtt`
const object = {
return {
url: caption.baseUrl,
label: label
}
return object
})
this.downloadLinks = this.downloadLinks.concat(captionLinks)
@ -415,7 +436,9 @@ export default Vue.extend({
if (this.proxyVideos) {
this.dashSrc = await this.createInvidiousDashManifest()
} else {
this.dashSrc = await this.createLocalDashManifest(result.player_response.streamingData.adaptiveFormats)
const adaptiveFormats = result.player_response.streamingData.adaptiveFormats
this.dashSrc = await this.createLocalDashManifest(adaptiveFormats)
this.adaptiveFormats = adaptiveFormats
}
this.audioSourceList = result.player_response.streamingData.adaptiveFormats.filter((format) => {
@ -524,8 +547,9 @@ export default Vue.extend({
this.videoPublished = result.published * 1000
this.videoDescriptionHtml = result.descriptionHtml
this.recommendedVideos = result.recommendedVideos
this.adaptiveFormats = result.adaptiveFormats
this.isLive = result.liveNow
this.captionSourceList = result.captions.map(caption => {
this.captionHybridList = result.captions.map(caption => {
caption.url = this.invidiousInstance + caption.url
caption.type = ''
caption.dataSource = 'invidious'
@ -678,6 +702,21 @@ export default Vue.extend({
this.updateHistory(videoData)
},
handleWatchProgress: function () {
if (this.rememberHistory && !this.isUpcoming && !this.isLoading && !this.isLive) {
const player = this.$refs.videoPlayer.player
if (player !== null && this.saveWatchedProgress) {
const currentTime = this.getWatchedProgress()
const payload = {
videoId: this.videoId,
watchProgress: currentTime
}
this.updateWatchProgress(payload)
}
}
},
checkIfWatched: function () {
const historyIndex = this.historyCache.findIndex((video) => {
return video.videoId === this.videoId
@ -839,71 +878,63 @@ export default Vue.extend({
},
handleVideoEnded: function () {
const nextVideoInterval = this.defaultInterval
if (this.watchingPlaylist) {
this.playNextTimeout = setTimeout(() => {
const player = this.$refs.videoPlayer.player
if (player !== null && player.paused()) {
this.$refs.watchVideoPlaylist.playNextVideo()
}
}, nextVideoInterval * 1000)
if (!this.watchingPlaylist && !this.playNextVideo) {
return
}
this.showToast({
message: this.$tc('Playing Next Video Interval', nextVideoInterval, { nextVideoInterval: nextVideoInterval }),
time: (nextVideoInterval * 1000) + 500,
action: () => {
clearTimeout(this.playNextTimeout)
this.showToast({
message: this.$t('Canceled next video autoplay')
})
}
})
} else if (this.playNextVideo) {
this.playNextTimeout = setTimeout(() => {
const player = this.$refs.videoPlayer.player
if (player !== null && player.paused()) {
const nextVideoInterval = this.defaultInterval
this.playNextTimeout = setTimeout(() => {
const player = this.$refs.videoPlayer.player
if (player !== null && player.paused()) {
if (this.watchingPlaylist) {
this.$refs.watchVideoPlaylist.playNextVideo()
} else {
const nextVideoId = this.recommendedVideos[0].videoId
this.$router.push(
{
path: `/watch/${nextVideoId}`
}
)
this.$router.push({
path: `/watch/${nextVideoId}`
})
this.showToast({
message: this.$t('Playing Next Video')
})
}
}, 5000)
}
}, nextVideoInterval * 1000)
let countDownTimeLeftInSecond = nextVideoInterval
const showCountDownMessage = () => {
// Will not display "Playing next video in no time" as it's too late to cancel
// Also there is a separate message when playing next video
if (countDownTimeLeftInSecond <= 0) {
clearInterval(countDownIntervalId)
return
}
this.showToast({
message: this.$t('Playing next video in 5 seconds. Click to cancel'),
time: 5500,
message: this.$tc('Playing Next Video Interval', countDownTimeLeftInSecond, { nextVideoInterval: countDownTimeLeftInSecond }),
// To avoid message flashing
// `time` is manually tested to be 700
time: 700,
action: () => {
clearTimeout(this.playNextTimeout)
clearInterval(countDownIntervalId)
this.showToast({
message: this.$t('Canceled next video autoplay')
})
}
})
// At least this var should be updated AFTER showing the message
countDownTimeLeftInSecond = countDownTimeLeftInSecond - 1
}
// Execute once before scheduling it
showCountDownMessage()
const countDownIntervalId = setInterval(showCountDownMessage, 1000)
},
handleRouteChange: function () {
clearTimeout(this.playNextTimeout)
if (this.rememberHistory && !this.isUpcoming && !this.isLoading && !this.isLive) {
const player = this.$refs.videoPlayer.player
if (player !== null && this.saveWatchedProgress) {
const currentTime = this.getWatchedProgress()
const payload = {
videoId: this.videoId,
watchProgress: currentTime
}
console.log('update watch progress')
this.updateWatchProgress(payload)
}
}
this.handleWatchProgress()
if (!this.isUpcoming && !this.isLoading) {
const player = this.$refs.videoPlayer.player
@ -928,6 +959,31 @@ export default Vue.extend({
}, 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) {
@ -1047,29 +1103,80 @@ export default Vue.extend({
})
},
createCaptionUrls: function (captionTracks) {
this.captionSourceList = captionTracks.map(caption => {
tryAddingTranslatedLocaleCaption: function (captionTracks, locale, baseUrl) {
const enCaptionIdx = captionTracks.findIndex(track =>
track.languageCode === 'en' && track.kind !== 'asr'
)
const enCaptionExists = enCaptionIdx !== -1
const asrEnabled = captionTracks.some(track => track.kind === 'asr')
if (enCaptionExists || asrEnabled) {
let label
let url
if (this.$te('Video.translated from English') && this.$t('Video.translated from English') !== '') {
label = `${this.$t('Locale Name')} (${this.$t('Video.translated from English')})`
} else {
label = `${this.$t('Locale Name')} (translated from English)`
}
if (enCaptionExists) {
url = new URL(captionTracks[enCaptionIdx].baseUrl)
} else {
url = new URL(baseUrl)
url.searchParams.set('lang', 'en')
url.searchParams.set('kind', 'asr')
}
url.searchParams.set('tlang', locale)
captionTracks.unshift({
baseUrl: url.toString(),
name: { simpleText: label },
languageCode: locale
})
}
},
createCaptionPromiseList: function (captionTracks) {
return captionTracks.map(caption => new Promise((resolve, reject) => {
caption.type = 'text/vtt'
caption.charset = 'charset=utf-8'
caption.dataSource = 'local'
$.get(caption.baseUrl, response => {
xml2vtt
.Parse(new XMLSerializer().serializeToString(response))
.then(vtt => {
caption.baseUrl = `data:${caption.type};${caption.charset},${vtt}`
})
.catch(err =>
console.log(`Error while converting XML to VTT : ${err}`)
)
const url = new URL(caption.baseUrl)
url.searchParams.set('fmt', 'vtt')
$.get(url.toString(), response => {
// The character '#' needs to be percent-encoded in a (data) URI
// because it signals an identifier, which means anything after it
// is automatically removed when the URI is used as a source
let vtt = response.replace(/#/g, '%23')
// A lot of videos have messed up caption positions that need to be removed
// This can be either because this format isn't really used by YouTube
// or because it's expected for the player to be able to somehow
// wrap the captions so that they won't step outside its boundaries
//
// Auto-generated captions are also all aligned to the start
// so those instances must also be removed
// In addition, all aligns seem to be fixed to "start" when they do pop up in normal captions
// If it's prominent enough that people start to notice, it can be removed then
if (caption.kind === 'asr') {
vtt = vtt.replace(/ align:start| position:\d{1,3}%/g, '')
} else {
vtt = vtt.replace(/ position:\d{1,3}%/g, '')
}
caption.baseUrl = `data:${caption.type};${caption.charset},${vtt}`
resolve(caption)
}).fail((xhr, textStatus, error) => {
console.log(xhr)
console.log(textStatus)
console.log(error)
reject(error)
})
return caption
})
}))
},
getWatchedProgress: function () {

View File

@ -18,15 +18,18 @@
ref="videoPlayer"
:dash-src="dashSrc"
:source-list="activeSourceList"
:caption-list="captionSourceList"
:adaptive-formats="adaptiveFormats"
:caption-hybrid-list="captionHybridList"
:storyboard-src="videoStoryboardSrc"
:format="activeFormat"
:thumbnail="thumbnail"
:video-id="videoId"
class="videoPlayer"
:class="{ theatrePlayer: useTheatreMode }"
@ready="checkIfWatched"
@ended="handleVideoEnded"
@error="handleVideoError"
@store-caption-list="captionHybridList = $event"
/>
<div
v-if="!isLoading && isUpcoming"

View File

@ -0,0 +1,195 @@
[{"id":4,"name":"Afganistan","alpha2":"af","alpha3":"afg"},
{"id":8,"name":"Albanía","alpha2":"al","alpha3":"alb"},
{"id":12,"name":"Alsír","alpha2":"dz","alpha3":"dza"},
{"id":20,"name":"Andorra","alpha2":"ad","alpha3":"and"},
{"id":24,"name":"Angóla","alpha2":"ao","alpha3":"ago"},
{"id":28,"name":"Antígva og Barbúda","alpha2":"ag","alpha3":"atg"},
{"id":32,"name":"Argentína","alpha2":"ar","alpha3":"arg"},
{"id":51,"name":"Armenía","alpha2":"am","alpha3":"arm"},
{"id":36,"name":"Ástralía","alpha2":"au","alpha3":"aus"},
{"id":40,"name":"Austurríki","alpha2":"at","alpha3":"aut"},
{"id":31,"name":"Aserbædsjan","alpha2":"az","alpha3":"aze"},
{"id":44,"name":"Bahamaeyjar","alpha2":"bs","alpha3":"bhs"},
{"id":48,"name":"Barein","alpha2":"bh","alpha3":"bhr"},
{"id":50,"name":"Bangladess","alpha2":"bd","alpha3":"bgd"},
{"id":52,"name":"Barbados","alpha2":"bb","alpha3":"brb"},
{"id":112,"name":"Belarús","alpha2":"by","alpha3":"blr"},
{"id":56,"name":"Belgía","alpha2":"be","alpha3":"bel"},
{"id":84,"name":"Belís","alpha2":"bz","alpha3":"blz"},
{"id":204,"name":"Benín","alpha2":"bj","alpha3":"ben"},
{"id":64,"name":"Bútan","alpha2":"bt","alpha3":"btn"},
{"id":68,"name":"Bólivía (Fjölþjóðaríkið)","alpha2":"bo","alpha3":"bol"},
{"id":70,"name":"Bosnía og Herzegóvína","alpha2":"ba","alpha3":"bih"},
{"id":72,"name":"Botsvana","alpha2":"bw","alpha3":"bwa"},
{"id":76,"name":"Brasilía","alpha2":"br","alpha3":"bra"},
{"id":96,"name":"Brunei-Daresalam","alpha2":"bn","alpha3":"brn"},
{"id":100,"name":"Búlgaría","alpha2":"bg","alpha3":"bgr"},
{"id":854,"name":"Burkína Fasó","alpha2":"bf","alpha3":"bfa"},
{"id":108,"name":"Búrundí","alpha2":"bi","alpha3":"bdi"},
{"id":132,"name":"Grænhöfðaeyjar","alpha2":"cv","alpha3":"cpv"},
{"id":116,"name":"Kambódía","alpha2":"kh","alpha3":"khm"},
{"id":120,"name":"Kamerún","alpha2":"cm","alpha3":"cmr"},
{"id":124,"name":"Kanada","alpha2":"ca","alpha3":"can"},
{"id":140,"name":"Miðafríkulýðveldið","alpha2":"cf","alpha3":"caf"},
{"id":148,"name":"Tsjad","alpha2":"td","alpha3":"tcd"},
{"id":152,"name":"Síle","alpha2":"cl","alpha3":"chl"},
{"id":156,"name":"Kína","alpha2":"cn","alpha3":"chn"},
{"id":170,"name":"Kólumbía","alpha2":"co","alpha3":"col"},
{"id":174,"name":"Kómorróeyjar","alpha2":"km","alpha3":"com"},
{"id":178,"name":"Kongó","alpha2":"cg","alpha3":"cog"},
{"id":180,"name":"Kongó, Lýðstjórnarlýðveldið","alpha2":"cd","alpha3":"cod"},
{"id":188,"name":"Kosta Ríka","alpha2":"cr","alpha3":"cri"},
{"id":384,"name":"Fílabeinsströndin","alpha2":"ci","alpha3":"civ"},
{"id":191,"name":"Króatía","alpha2":"hr","alpha3":"hrv"},
{"id":192,"name":"Kúba","alpha2":"cu","alpha3":"cub"},
{"id":196,"name":"Kýpur","alpha2":"cy","alpha3":"cyp"},
{"id":203,"name":"Tékkland","alpha2":"cz","alpha3":"cze"},
{"id":208,"name":"Danmörk","alpha2":"dk","alpha3":"dnk"},
{"id":262,"name":"Djibútí","alpha2":"dj","alpha3":"dji"},
{"id":212,"name":"Dóminíka","alpha2":"dm","alpha3":"dma"},
{"id":214,"name":"Dóminíkanska lýðveldið","alpha2":"do","alpha3":"dom"},
{"id":218,"name":"Ekvador","alpha2":"ec","alpha3":"ecu"},
{"id":818,"name":"Egyptaland","alpha2":"eg","alpha3":"egy"},
{"id":222,"name":"El Salvador","alpha2":"sv","alpha3":"slv"},
{"id":226,"name":"Miðbaugs-Gínea","alpha2":"gq","alpha3":"gnq"},
{"id":232,"name":"Erítrea","alpha2":"er","alpha3":"eri"},
{"id":233,"name":"Eistland","alpha2":"ee","alpha3":"est"},
{"id":748,"name":"Esvatíní","alpha2":"sz","alpha3":"swz"},
{"id":231,"name":"Eþíópía","alpha2":"et","alpha3":"eth"},
{"id":242,"name":"Fídjíeyjar","alpha2":"fj","alpha3":"fji"},
{"id":246,"name":"Finnland","alpha2":"fi","alpha3":"fin"},
{"id":250,"name":"Frakkland","alpha2":"fr","alpha3":"fra"},
{"id":266,"name":"Gabon","alpha2":"ga","alpha3":"gab"},
{"id":270,"name":"Gambía","alpha2":"gm","alpha3":"gmb"},
{"id":268,"name":"Georgía","alpha2":"ge","alpha3":"geo"},
{"id":276,"name":"Þýskaland","alpha2":"de","alpha3":"deu"},
{"id":288,"name":"Gana","alpha2":"gh","alpha3":"gha"},
{"id":300,"name":"Grikkland","alpha2":"gr","alpha3":"grc"},
{"id":308,"name":"Grenada","alpha2":"gd","alpha3":"grd"},
{"id":320,"name":"Gvatemala","alpha2":"gt","alpha3":"gtm"},
{"id":324,"name":"Gínea","alpha2":"gn","alpha3":"gin"},
{"id":624,"name":"Gínea-Bissá","alpha2":"gw","alpha3":"gnb"},
{"id":328,"name":"Gvæjana","alpha2":"gy","alpha3":"guy"},
{"id":332,"name":"Haítí","alpha2":"ht","alpha3":"hti"},
{"id":340,"name":"Hondúras","alpha2":"hn","alpha3":"hnd"},
{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"},
{"id":348,"name":"Ungverjaland","alpha2":"hu","alpha3":"hun"},
{"id":352,"name":"Ísland","alpha2":"is","alpha3":"isl"},
{"id":356,"name":"Indland","alpha2":"in","alpha3":"ind"},
{"id":360,"name":"Indónesía","alpha2":"id","alpha3":"idn"},
{"id":364,"name":"Íran (Íslamska lýðveldið)","alpha2":"ir","alpha3":"irn"},
{"id":368,"name":"Írak","alpha2":"iq","alpha3":"irq"},
{"id":372,"name":"Írland","alpha2":"ie","alpha3":"irl"},
{"id":376,"name":"Ísrael","alpha2":"il","alpha3":"isr"},
{"id":380,"name":"Ítala","alpha2":"it","alpha3":"ita"},
{"id":388,"name":"Jamaíka","alpha2":"jm","alpha3":"jam"},
{"id":392,"name":"Japan","alpha2":"jp","alpha3":"jpn"},
{"id":400,"name":"Jórdanía","alpha2":"jo","alpha3":"jor"},
{"id":398,"name":"Kasakstan","alpha2":"kz","alpha3":"kaz"},
{"id":404,"name":"Kenýa","alpha2":"ke","alpha3":"ken"},
{"id":296,"name":"Kíríbatí","alpha2":"ki","alpha3":"kir"},
{"id":408,"name":"Kórea (Alþýðulýðveldið, Norður)","alpha2":"kp","alpha3":"prk"},
{"id":410,"name":"Kórea (Lýðveldið, Suður)","alpha2":"kr","alpha3":"kor"},
{"id":414,"name":"Kúveit","alpha2":"kw","alpha3":"kwt"},
{"id":417,"name":"Kirgistan","alpha2":"kg","alpha3":"kgz"},
{"id":418,"name":"Laos (Alþýðulýðveldið)","alpha2":"la","alpha3":"lao"},
{"id":428,"name":"Lettland","alpha2":"lv","alpha3":"lva"},
{"id":422,"name":"Líbanon","alpha2":"lb","alpha3":"lbn"},
{"id":426,"name":"Lesótó","alpha2":"ls","alpha3":"lso"},
{"id":430,"name":"Líbería","alpha2":"lr","alpha3":"lbr"},
{"id":434,"name":"Líbía","alpha2":"ly","alpha3":"lby"},
{"id":438,"name":"Liechtenstein","alpha2":"li","alpha3":"lie"},
{"id":440,"name":"Litháen","alpha2":"lt","alpha3":"ltu"},
{"id":442,"name":"Luxembúrg","alpha2":"lu","alpha3":"lux"},
{"id":450,"name":"Madagaskar","alpha2":"mg","alpha3":"mdg"},
{"id":454,"name":"Malaví","alpha2":"mw","alpha3":"mwi"},
{"id":458,"name":"Malasía","alpha2":"my","alpha3":"mys"},
{"id":462,"name":"Maldíveyjar","alpha2":"mv","alpha3":"mdv"},
{"id":466,"name":"Malí","alpha2":"ml","alpha3":"mli"},
{"id":470,"name":"Malta","alpha2":"mt","alpha3":"mlt"},
{"id":584,"name":"Marshalleyjar","alpha2":"mh","alpha3":"mhl"},
{"id":478,"name":"Máritanía","alpha2":"mr","alpha3":"mrt"},
{"id":480,"name":"Máritíus","alpha2":"mu","alpha3":"mus"},
{"id":484,"name":"Mexíkó","alpha2":"mx","alpha3":"mex"},
{"id":583,"name":"Míkrónesía (Sambandsríkið)","alpha2":"fm","alpha3":"fsm"},
{"id":498,"name":"Moldóvía, Lýðveldið","alpha2":"md","alpha3":"mda"},
{"id":492,"name":"Mónakó","alpha2":"mc","alpha3":"mco"},
{"id":496,"name":"Mongólía","alpha2":"mn","alpha3":"mng"},
{"id":499,"name":"Svartfjallaland","alpha2":"me","alpha3":"mne"},
{"id":504,"name":"Marokkó","alpha2":"ma","alpha3":"mar"},
{"id":508,"name":"Mósambík","alpha2":"mz","alpha3":"moz"},
{"id":104,"name":"Mjanmar","alpha2":"mm","alpha3":"mmr"},
{"id":516,"name":"Namibía","alpha2":"na","alpha3":"nam"},
{"id":520,"name":"Nárú","alpha2":"nr","alpha3":"nru"},
{"id":524,"name":"Nepal","alpha2":"np","alpha3":"npl"},
{"id":528,"name":"Holland","alpha2":"nl","alpha3":"nld"},
{"id":554,"name":"Nýja-Sjáland","alpha2":"nz","alpha3":"nzl"},
{"id":558,"name":"Níkaragva","alpha2":"ni","alpha3":"nic"},
{"id":562,"name":"Níger","alpha2":"ne","alpha3":"ner"},
{"id":566,"name":"Nígería","alpha2":"ng","alpha3":"nga"},
{"id":807,"name":"Norður-Makedónía","alpha2":"mk","alpha3":"mkd"},
{"id":578,"name":"Noregur","alpha2":"no","alpha3":"nor"},
{"id":512,"name":"Óman","alpha2":"om","alpha3":"omn"},
{"id":586,"name":"Pakistan","alpha2":"pk","alpha3":"pak"},
{"id":585,"name":"Palá","alpha2":"pw","alpha3":"plw"},
{"id":591,"name":"Panama","alpha2":"pa","alpha3":"pan"},
{"id":598,"name":"Papúa Nýja-Gínea","alpha2":"pg","alpha3":"png"},
{"id":600,"name":"Paragvæ","alpha2":"py","alpha3":"pry"},
{"id":604,"name":"Perú","alpha2":"pe","alpha3":"per"},
{"id":608,"name":"Filippseyjar","alpha2":"ph","alpha3":"phl"},
{"id":616,"name":"Pólland","alpha2":"pl","alpha3":"pol"},
{"id":620,"name":"Portúgal","alpha2":"pt","alpha3":"prt"},
{"id":634,"name":"Katar","alpha2":"qa","alpha3":"qat"},
{"id":642,"name":"Rúmenía","alpha2":"ro","alpha3":"rou"},
{"id":643,"name":"Rússland, Sambandsríkið","alpha2":"ru","alpha3":"rus"},
{"id":646,"name":"Rúanda","alpha2":"rw","alpha3":"rwa"},
{"id":659,"name":"Sankti Kitts og Nevis","alpha2":"kn","alpha3":"kna"},
{"id":662,"name":"Sankti Lúsía","alpha2":"lc","alpha3":"lca"},
{"id":670,"name":"Sankti Vinsent og Grenadínur","alpha2":"vc","alpha3":"vct"},
{"id":882,"name":"Samóa","alpha2":"ws","alpha3":"wsm"},
{"id":674,"name":"San Marínó","alpha2":"sm","alpha3":"smr"},
{"id":678,"name":"Saó Tóme og Prinsípe","alpha2":"st","alpha3":"stp"},
{"id":682,"name":"Sádí-Arabía","alpha2":"sa","alpha3":"sau"},
{"id":686,"name":"Senegal","alpha2":"sn","alpha3":"sen"},
{"id":688,"name":"Serbía","alpha2":"rs","alpha3":"srb"},
{"id":690,"name":"Seychelles-eyjar","alpha2":"sc","alpha3":"syc"},
{"id":694,"name":"Síerra Leóne","alpha2":"sl","alpha3":"sle"},
{"id":702,"name":"Singapúr","alpha2":"sg","alpha3":"sgp"},
{"id":703,"name":"Slóvakía","alpha2":"sk","alpha3":"svk"},
{"id":705,"name":"Slóvenía","alpha2":"si","alpha3":"svn"},
{"id":90,"name":"Salómonseyjar","alpha2":"sb","alpha3":"slb"},
{"id":706,"name":"Sómalía","alpha2":"so","alpha3":"som"},
{"id":710,"name":"Suður-Afríka","alpha2":"za","alpha3":"zaf"},
{"id":728,"name":"Suður-Súdan","alpha2":"ss","alpha3":"ssd"},
{"id":724,"name":"Spánn","alpha2":"es","alpha3":"esp"},
{"id":144,"name":"Srí Lanka","alpha2":"lk","alpha3":"lka"},
{"id":729,"name":"Súdan","alpha2":"sd","alpha3":"sdn"},
{"id":740,"name":"Súrínam","alpha2":"sr","alpha3":"sur"},
{"id":752,"name":"Svíþjóð","alpha2":"se","alpha3":"swe"},
{"id":756,"name":"Sviss","alpha2":"ch","alpha3":"che"},
{"id":760,"name":"Sýrland, Arabalýðveldið","alpha2":"sy","alpha3":"syr"},
{"id":762,"name":"Tadsíkistan","alpha2":"tj","alpha3":"tjk"},
{"id":834,"name":"Tansanía, Sambandslýðveldið","alpha2":"tz","alpha3":"tza"},
{"id":764,"name":"Tæland","alpha2":"th","alpha3":"tha"},
{"id":626,"name":"Tímor-Leste","alpha2":"tl","alpha3":"tls"},
{"id":768,"name":"Tógó","alpha2":"tg","alpha3":"tgo"},
{"id":776,"name":"Tonga","alpha2":"to","alpha3":"ton"},
{"id":780,"name":"Trínídad og Tóbagó","alpha2":"tt","alpha3":"tto"},
{"id":788,"name":"Túnis","alpha2":"tn","alpha3":"tun"},
{"id":792,"name":"Tyrkland","alpha2":"tr","alpha3":"tur"},
{"id":795,"name":"Túrkmenistan","alpha2":"tm","alpha3":"tkm"},
{"id":798,"name":"Túvalú","alpha2":"tv","alpha3":"tuv"},
{"id":800,"name":"Úganda","alpha2":"ug","alpha3":"uga"},
{"id":804,"name":"Úkraína","alpha2":"ua","alpha3":"ukr"},
{"id":784,"name":"Sameinuðu arabísku furstadæmin","alpha2":"ae","alpha3":"are"},
{"id":826,"name":"Bretland (Sameinaða konungsríkið Stóra-Bretland og Norður-Írland)","alpha2":"gb","alpha3":"gbr"},
{"id":840,"name":"Bandaríkin","alpha2":"us","alpha3":"usa"},
{"id":858,"name":"Úrúgvæ","alpha2":"uy","alpha3":"ury"},
{"id":860,"name":"Úsbekistan","alpha2":"uz","alpha3":"uzb"},
{"id":548,"name":"Vanúatú","alpha2":"vu","alpha3":"vut"},
{"id":862,"name":"Venesúela (Bólivarska lýðveldið)","alpha2":"ve","alpha3":"ven"},
{"id":704,"name":"Víetnam","alpha2":"vn","alpha3":"vnm"},
{"id":887,"name":"Jemen","alpha2":"ye","alpha3":"yem"},
{"id":894,"name":"Sambía","alpha2":"zm","alpha3":"zmb"},
{"id":716,"name":"Simbabve","alpha2":"zw","alpha3":"zwe"},
{"id": 158, "name":"Taiwan", "alpha2": "tw", "alpha3": "twn"}]

View File

@ -18,7 +18,7 @@ Delete: 'حذف'
Select all: 'تحديد الكل'
Reload: 'إعادة تحميل'
Force Reload: 'فرض إعادة التحميل'
Toggle Developer Tools: 'تفعيل أدوات المطوّر'
Toggle Developer Tools: 'فتح أدوات المطوّر'
Actual size: 'الحجم الأصلي'
Zoom in: 'تكبير'
Zoom out: 'تصغير'
@ -64,6 +64,7 @@ Search Filters:
Fetching results. Please wait: 'جاري إحضار النتائج. الرجاء الانتظار'
Fetch more results: 'إحضار المزيد من النتائج'
# Sidebar
There are no more results for this search: لم يتبقى المزيد من النتائج لهذا البحث
Subscriptions:
# On Subscriptions Page
Subscriptions: 'الاشتراكات'
@ -80,6 +81,11 @@ Most Popular: 'الأكثر شعبية'
Playlists: 'قوائم التشغيل'
User 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:
# On History Page
History: 'السجلّ'
@ -115,6 +121,8 @@ Settings:
#! List countries
Check for Latest Blog Posts: تحقق من أحدث منشورات المدونة
Check for Updates: تحقّق من وجود تحديثات
View all Invidious instance information: عرض جميع نماذج Invidious
System Default: افتراضي النظام
Theme Settings:
Theme Settings: 'إعدادات السِمة'
Match Top Bar with Main Color: 'طابق الشريط العلوي مع اللون الأساسي'
@ -175,6 +183,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: الفاصل الزمني لتشغيل الفيديو التالي في قائمة التشغيل
Next Video Interval: الفاصل الزمني للفيديو التالي
Privacy Settings:
Privacy Settings: 'إعدادات الخصوصية'
Remember History: 'تذّكر سجلّ المشاهدة'
@ -191,6 +201,7 @@ Settings:
أنت متأكد أنك تريد إزالة جميع الاشتراكات والملفات الشخصية؟ لا يمكن التراجع عن
هذا.
Remove All Subscriptions / Profiles: إزالة جميع الاشتراكات \ الملفات الشخصية
Automatically Remove Video Meta Files: إزالة ملفات تعريف الفيديو تلقائيًا
Subscription Settings:
Subscription Settings: 'إعدادات الاشتراك'
Hide Videos on Watch: 'أخفِ الفيديوهات عند مشاهدتها'
@ -265,7 +276,7 @@ Settings:
Data Settings: إعدادات البيانات
One or more subscriptions were unable to be imported: تعذر استيراد واحد أو أكثر
من الاشتراكات
Check for Legacy Subscriptions: تحقق من وجود اشتراك قديم
Check for Legacy Subscriptions: تحقق من وجود اشتراكات بالصيغة القديمة
Manage Subscriptions: إدارة الإشتراكات
Distraction Free Settings:
Hide Live Chat: اخفي الدردشة المباشرة
@ -273,10 +284,12 @@ Settings:
Hide Trending Videos: اخفي الفيديوهات الرائجة
Hide Recommended Videos: اخفي الفيديوهات الموصّى بها
Hide Comment Likes: اخفي اعجابات التعليقات
Hide Channel Subscribers: اخفي اشتراكات القنوات
Hide Video Views: اخفي عدد مشاهدات الفيديوهات
Hide Channel Subscribers: اخف عدد اشتراكات القناة
Hide Video Views: اخف عدد مشاهدات الفيديو
Hide Video Likes And Dislikes: إخفاء الإعجاب وعدم الإعجاب للفيديو
Distraction Free Settings: إعدادات عدم الإزعاج
Hide Active Subscriptions: اخفي الإشتراكات الناشطة
Hide Playlists: إخفاء قوائم التشغيل
The app needs to restart for changes to take effect. Restart and apply change?: البرنامج
يحتاج لإعادة التشغيل كي يسري مفعول التغييرات. هل تريد إعادة التشغيل و تطبيق التغييرات؟
Proxy Settings:
@ -291,6 +304,10 @@ Settings:
Proxy Protocol: بروتوكول البروكسي
Enable Tor / Proxy: تفعيل تور / البروكسي
Proxy Settings: خيارات البروكسي
Error getting network information. Is your proxy configured properly?: هنالك خطأ
في جلب معلومات الشبكة. هل ضبطت إعدادات وكيلك بصورة صحيحة؟
Clicking on Test Proxy will send a request to: النقر على اختبار البروكسي سيؤدي
إلى إرسال طلب إلى
About:
#On About page
About: 'حول'
@ -335,6 +352,17 @@ About:
View License: اعرض الرخصة
Source code: الشفرة المصدرية
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:
All Channels: 'جميع القنوات'
Profile Manager: 'مدير الملف الشخصي'
@ -376,6 +404,7 @@ Profile:
$ selected: $ تم اختياره
Other Channels: قنوات أُخرى
Subscription List: قائمة الاشتراكات
Profile Filter: مرشح الملف الشخصي
Channel:
Subscriber: 'مُشترِك'
Subscribers: 'مُشترِكين'
@ -465,7 +494,7 @@ Video:
Year: 'سنة'
Years: 'سنوات'
Ago: 'منذ'
Upcoming: 'العرض الأول في'
Upcoming: 'يبدأ العرض'
Published on: 'نُشر في'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'قبل $ %'
@ -480,12 +509,12 @@ Video:
الصفحة للتحقق مرة أخرى
Audio:
Best: الأفضل
High: عالٍ
High: عال
Medium: متوسط
Low: منخفض
audio only: صوت فقط
video only: فيديو فقط
Download Video: نزّل الفيديو
audio only: الصوت فقط
video only: الفيديو فقط
Download Video: تحميل الفيديو
Started streaming on: بدأ البث على
Streamed on: تبث على
Copy Invidious Channel Link: انسخ رابط قناة انفيديوس
@ -494,6 +523,8 @@ Video:
Open Channel in YouTube: افتح القناة على يوتيوب
Video has been saved: تم حفظ الفيديو
Save Video: احفظ الفيديو
Video has been removed from your saved list: تمت إزالة الفيديو من قائمتك المحفوظة
translated from English: مترجمة من الإنجليزية
Videos:
#& Sort By
Sort By:
@ -590,21 +621,44 @@ Version $ is now available! Click for more details: الإصدار $ متاح
Tooltips:
General Settings:
Thumbnail Preference: كلّ الصّور المصغّرة في FreeTube سيتمّ استبدالها بإطار من
الفيديو بدل من الصّورة المصغّرة الافتراضيّة
Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات
. الAPI المحلي هو مستخرج محلي . الAPI التابع لInvidious يتطلب التواصل مع خادم
شبكة Invidious .
الفيديو بدل من الصّورة المصغّرة الافتراضيّة.
Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات.
الواجهة البرمجية المحلية للتطبيق هي مستخرج محلي. الواجهة البرمجية للتطبيق التابعة
لInvidious (بديل لموقع يوتيوب) يتطلب التواصل مع خادم شبكة Invidious.
Invidious Instance: واجهة Invidious البرمجية المستخدمة من قبل FreeTube. امسح الواجهة
البرمجية الحالية للاختيار من قائمة الواجهات
Fallback to Non-Preferred Backend on Failure: عند تواجد مشكلة مع الواجهة البرمجية
المفضلة لك، سوف يقوم فريتيوب باستخدام الواجهات الأخرى عند تفعيل هذا الخيار
Region for Trending: يمكّنك اختيار الدولة من عرض الفيديوهات الشائعة التابعة للدولة
التي تفضل . ليست كل البلدان المعروضة في هذه القائمة مدعومة من قبل يوتيوب
البرمجية الحالية للاختيار من قائمة الواجهات.
Fallback to Non-Preferred Backend on Failure: عند التفعيل اذا واجه الAPI المفضّل
لديك أيّ مشكلة، سيحاول FreeTube استخدام الAPI الغير مفضّل لديك تلقائيّاً كإجراء
التراجع.
Region for Trending: الانتشار المحلي (Trend) يسمح لك بأن تشاهد الفيديوهات الأكثر
انتشارا حسب الدولة. ليست كل الدول المعروضة في هذه القائمة مدعومة من طرف يوتيوب.
Player Settings:
Proxy Videos Through Invidious: سيتم الاتصال ب Invidious لتقديم مقاطع الفيديو
بدلاً من إجراء اتصال مباشر مع يوتيوب. يلغي تفضيل الواجهة البرمجية
بدلاً من إجراء اتصال مباشر مع يوتيوب. يلغي تفضيل الواجهة البرمجية.
Force Local Backend for Legacy Formats: تعمل فقط عندما تكون واجهة 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: المزيد
Playing Next Video Interval: سيتم تشغيل الفيديو التالي على الفور.| إضغط للإلغاء.|
سيبدأ الفيديو التالي في {nextVideoInterval} ثانية.| إضغط للإلغاء.
Hashtags have not yet been implemented, try again later: لم يتم تنفيذ علامات التصنيف
بعد، حاول مرة أخرى لاحقا
Unknown YouTube url type, cannot be opened in app: نوع URL غير معروف على YouTube،
لا يمكن فتحه في التطبيق
Open New Window: افتح نافذة جديدة

View File

@ -132,6 +132,7 @@ Settings:
#! List countries
View all Invidious instance information: Преглед на пълна информация за Invidious
обекта
System Default: Стандартен за системата
Theme Settings:
Theme Settings: 'Настройки на изгледа на приложението'
Match Top Bar with Main Color: 'Съвпадане на горната лента с основната цветова
@ -178,7 +179,7 @@ Settings:
Default Playback Rate: 'Скорост на възпроизвеждане'
Default Video Format:
Default Video Format: 'Видео формат'
Dash Formats: 'Dash формати'
Dash Formats: 'DASH формати'
Legacy Formats: 'Стари формати'
Audio Formats: 'Аудио формати'
Default Quality:
@ -194,6 +195,7 @@ Settings:
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Интервал за следващо видео в плейлист
Next Video Interval: Интервал за следващо видео
Privacy Settings:
Privacy Settings: 'Настройки за поверителност'
Remember History: 'Запазване на историята'
@ -210,6 +212,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Сигурни
ли сте, че искате да премахнете всички абонаменти и профили? Това не може да
бъде възстановено.'
Automatically Remove Video Meta Files: Автоматично премахване на видео метафайловете
Subscription Settings:
Subscription Settings: 'Настройки на абонаменти'
Hide Videos on Watch: 'Скриване на видеата при гледане'
@ -532,6 +535,7 @@ Video:
списък
Video has been saved: Видеото е запазено
Save Video: Запазване на видео
translated from English: преведено от английски
Videos:
#& Sort By
Sort By:
@ -559,10 +563,10 @@ Playlist:
Toggle Theatre Mode: 'Режим "Широк екран"'
Change Format:
Change Video Formats: 'Смяна видео формати'
Use Dash Formats: 'Използване на Dash формати'
Use Dash Formats: 'Използване на DASH формати'
Use Legacy Formats: 'Използване на стари формати'
Use Audio Formats: 'Използване на аудио формати'
Dash formats are not available for this video: 'Dash форматите не са достъпни за
Dash formats are not available for this video: 'DASH форматите не са достъпни за
това видео'
Audio formats are not available for this video: 'Аудио форматите не са достъпни
за това видео'
@ -628,36 +632,45 @@ Yes: 'Да'
No: 'Не'
Tooltips:
Subscription Settings:
Fetch Feeds from RSS: Когато е активирано, FreeTube ще използва RSS вместо метода
по подразбиране за получаване на абонаментите. RSS е по-бърз метод и преодолява
блокиранията на IP адреса, но не получава някои съпътстващи данни, като продължителност
на видеото или дали е на живо
Fetch Feeds from RSS: FreeTube ще използва RSS вместо метода по подразбиране за
получаване на абонаментите. RSS е по-бърз метод и преодолява блокиранията на
IP адреса, но не получава някои съпътстващи данни, като продължителност на видеото
или дали е на живо
Player Settings:
Default Video Format: Настройка на използваните формати. Dash форматите могат
Default Video Format: Настройка на използваните формати. DASH форматите могат
да показват видеа с по-високо качество. Старите формати са ограничени до макс.
720р, но пък генерират по-малък трафик. Аудио форматите предават само звук
720р, но пък генерират по-малък трафик. Аудио форматите предават само звук.
Proxy Videos Through Invidious: Ще се свърже с Invidious, за да изтегли видеото,
вместо да прави дирекна връзка с YouTube. Пренебрегва настройките на локалния
интерфейс
интерфейс.
Force Local Backend for Legacy Formats: Действа само когато по подразбиране е
избран Invidious интерфейс. Когато е активиран, локалният интерфейс ще използва
старите формати вместо тези на Invidious. Това помага когато видеата, получавани
от Invidious не вървят поради регионални ограничения
от Invidious не вървят поради регионални ограничения.
General Settings:
Region for Trending: Регионът на набиращите популярност дава възможност да се
избере страната, за която това се отнася. Не всички страни показани тук се поддържат
от YouTube
от YouTube.
Invidious Instance: Сървър на Invidious, към който FreeTube ще се свързва. Премахнете
настоящия избор, за да видите списък с други възможни сървъри
настоящия избор, за да видите списък с други възможни сървъри.
Thumbnail Preference: Всички миниатюри във FreeTube ще бъдат подменени с кадър
от клипа вместо тези по подразбиране
от клипа вместо тези по подразбиране.
Fallback to Non-Preferred Backend on Failure: Когато избраният интерфейс срещне
проблем, FreeTube ще опита да премине автоматично към друг метод, ако има избран
такъв
такъв.
Preferred API Backend: Избиране на начина, по който FreeTube получава данните.
Локалният интерфейс има вградено извличане. Invidious интерфейсът изисква Invidious
сървър, към който да се свърже.
Privacy Settings:
Remove Video Meta Files: Когато страницата за гледане бъде затворена, FreeTube
автоматично ще изтрива метафайловете, създадени по време на възпроизвеждане
на видеото.
More: Още
Playing Next Video Interval: Пускане на следващото видео веднага. Щракнете за отказ.
| Пускане на следващото видео след {nextVideoInterval} секунда. Щракнете за отказl.
| Пускане на следващото видео след {nextVideoInterval} секунда. Щракнете за отказ.
| Пускане на следващото видео след {nextVideoInterval} секунди. Щракнете за отказ.
Hashtags have not yet been implemented, try again later: Хаштаговете все още не са
реализирани, опитайте отново по-късно
Unknown YouTube url type, cannot be opened in app: Неизвестен тип URL адрес за YouTube,
не може да се отвори в приложението
Open New Window: Отваряне на нов прозорец

View File

@ -22,62 +22,65 @@ Toggle Developer Tools: 'ডেভেলপার যন্ত্র টগল
Actual size: 'প্রকৃত আকার'
Zoom in: 'সম্প্রসারিত করো (জুম)'
Zoom out: 'সংকুচিত করো(জুম)'
Toggle fullscreen: ''
Toggle fullscreen: 'পূর্ণ-স্ক্রিন'
Window: 'উইন্ডো'
Minimize: ''
Close: ''
Back: ''
Forward: ''
Minimize: 'ক্ষুদ্রকরণ'
Close: 'বন্ধ'
Back: 'পিছনে'
Forward: 'সামনে'
Version $ is now available! Click for more details: ''
Download From Site: ''
A new blog is now available, $. Click to view more: ''
Version $ is now available! Click for more details: 'সংস্করণ $ এসে গেছে! আরো জানতে
টিপ দাও'
Download From Site: 'সাইট থেকে ডাউনলোড করো'
A new blog is now available, $. Click to view more: 'নতুন ব্লগ আছে, $. আরো দেখতে টিপ
দাও'
# Search Bar
Search / Go to URL: ''
Search / Go to URL: 'অনুসন্ধান / ইউআরএলে যাও'
# In Filter Button
Search Filters:
Search Filters: ''
Search Filters: 'অনুসন্ধান ছাঁকনি'
Sort By:
Sort By: ''
Most Relevant: ''
Sort By: 'সাজানোর পদ্ধতি'
Most Relevant: 'সবচেয়ে প্রাসঙ্গিক'
Rating: ''
Upload Date: ''
View Count: ''
Upload Date: 'ছাপানোর তারিখ'
View Count: 'দৃশ্য সংখ্যা'
Time:
Time: ''
Any Time: ''
Last Hour: ''
Today: ''
This Week: ''
This Month: ''
This Year: ''
Time: 'সময়'
Any Time: 'যেকোনো সময়'
Last Hour: 'শেষ ঘণ্টা'
Today: 'আজকে'
This Week: 'এই সপ্তাহে'
This Month: 'এই মাসে'
This Year: 'এই বছর'
Type:
Type: ''
All Types: ''
Videos: ''
Channels: ''
Type: 'ধরণ'
All Types: 'সব ধরণ'
Videos: 'ভিডিও'
Channels: 'চ্যানেল'
#& Playlists
Duration:
Duration: 'সময়কাল'
All Durations: ''
Short (< 4 minutes): ''
Long (> 20 minutes): ''
All Durations: 'সকল দৈর্ঘ্যের'
Short (< 4 minutes): 'ছোট (< মিনিট)'
Long (> 20 minutes): 'লম্বা (> ২০ মিনিট)'
# On Search Page
Search Results: ''
Fetching results. Please wait: ''
Fetch more results: ''
Search Results: 'অনুসন্ধান ফলাফল'
Fetching results. Please wait: 'ফলাফল আনা হচ্ছে, একটু অপেক্ষা করো'
Fetch more results: 'আরো ফলাফল আনো'
# Sidebar
There are no more results for this search: এই অনুসন্ধানের আর কোনো ফলাফল নেই
Subscriptions:
# On Subscriptions Page
Subscriptions: ''
Latest Subscriptions: ''
Subscriptions: 'সদস্যতা'
Latest Subscriptions: 'শেষ সদস্যতা'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: ''
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': ''
'Getting Subscriptions. Please wait.': ''
Refresh Subscriptions: ''
Load More Videos: ''
Trending: ''
Trending: 'চলছে'
Most Popular: ''
Playlists: ''
User Playlists:
@ -86,7 +89,7 @@ User Playlists:
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: ''
History:
# On History Page
History: ''
History: 'ইতিহাস'
Watch History: ''
Your history list is currently empty.: ''
Settings:
@ -259,7 +262,7 @@ About:
Donate: ''
Beta: ''
License: ''
Email: ''
Email: 'ই-মেইল'
Channel Rules: ''
Report an Issue: ''
Wiki: ''
@ -521,3 +524,4 @@ Canceled next video autoplay: ''
Yes: ''
No: ''
Open New Window: নতুন জানালা খুলো

View File

@ -273,6 +273,9 @@ About:
Latest FreeTube News: ''
Blog: Blog
Website: Lloc web
Email: Correu-e
Profile:
Profile Select: ''
All Channels: ''

View File

@ -133,6 +133,7 @@ Settings:
#! List countries
View all Invidious instance information: Zobrazit všechny informace o instanci
Invidious
System Default: Výchozí nastavení systému
Theme Settings:
Theme Settings: 'Nastavení motivu'
Match Top Bar with Main Color: 'Přizpůsobit hlavní lištu hlavní barvě'
@ -177,7 +178,7 @@ Settings:
Default Playback Rate: 'Výchozí rychlost přehrávání'
Default Video Format:
Default Video Format: 'Výchozí formát videa'
Dash Formats: 'Formát Dash'
Dash Formats: 'Formát DASH'
Legacy Formats: 'Starší formáty'
Audio Formats: 'Zvukové formáty'
Default Quality:
@ -192,7 +193,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Interval dalšího seznamu videí
Playlist Next Video Interval: Interval pro další video na playlistu
Next Video Interval: Další interval videa
Privacy Settings:
Privacy Settings: 'Nastavení soukromí'
Remember History: 'Zapamatovat historii'
@ -208,6 +210,7 @@ Settings:
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
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: 'Nastavení odebírání'
Hide Videos on Watch: 'Skrýt videa při přehrávání'
@ -345,8 +348,8 @@ About:
room rules: pravidla místnosti
Please read the: Prosím, přečtěte si
Chat on Matrix: Chat na síti Matrix
Mastodon: mastodon
Email: Email
Mastodon: Mastodon
Email: E-mail
Blog: Blog
Website: Webová stránka
FAQ: Často kladené dotazy
@ -410,7 +413,7 @@ Channel:
Channel has been removed from your subscriptions: 'Kanál byl odebrán z vašich odběrů'
Removed subscription from $ other channel(s): 'Odběr odebrán z $ jiných kanálů'
Added channel to your subscriptions: 'K vašim odběrům byl přidán kanál'
Search Channel: 'Hledat kanál'
Search Channel: 'Hledat v kanálu'
Your search results have returned 0 results: 'Vaše vyhledávání přineslo 0 výsledků'
Sort By: 'Seřadit podle'
Videos:
@ -513,7 +516,7 @@ Video:
Upcoming: 'Premiéra'
Published on: 'Publikováno'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'před $ %'
Publicationtemplate: 'před $ %'
#& Videos
Started streaming on: Začátek vysílání
Streamed on: Vysíláno
@ -521,6 +524,7 @@ Video:
Save Video: Uložit video
Video has been removed from your saved list: Video bylo odstraněno z vašeho uloženého
seznamu
translated from English: přeloženo z angličtiny
Videos:
#& Sort By
Sort By:
@ -548,10 +552,10 @@ Playlist:
Toggle Theatre Mode: 'Přepnout režim divadla'
Change Format:
Change Video Formats: 'Změnit formát videa'
Use Dash Formats: 'Použít Dash formáty'
Use Dash Formats: 'Použít DASH formáty'
Use Legacy Formats: 'Použít starší formáty'
Use Audio Formats: 'Použít zvukové formáty'
Dash formats are not available for this video: 'Dash formáty nejsou pro toto video
Dash formats are not available for this video: 'DASH formáty nejsou pro toto video
dostupné'
Audio formats are not available for this video: 'Zvukové formáty nejsou pro toto
video dostupné'
@ -605,31 +609,35 @@ Tooltips:
Invidious.'
Fallback to Non-Preferred Backend on Failure: 'Pokud má vaše preferované API problém,
FreeTube se automaticky pokusí použít vaše nepreferované API jako záložní metodu,
pokud je povoleno'
Thumbnail Preference: 'Všechny miniatury v celém FreeTube budou nahrazeny rámečkem
videa namísto výchozí miniatury'
Invidious Instance: 'Invidious instance, ke které se FreeTube připojí pro volání
API. Smazáním aktuální instance zobrazíte seznam veřejných instancí, ze kterých
si můžete vybrat'
Region for Trending: 'Region trendů vám umožní vybrat si videa trendů jednotlivých
zemí, které chcete zobrazit. Ne všechny zobrazené země ale YouTube aktuálně
podporuje'
pokud je povoleno.'
Thumbnail Preference: 'Všechny miniatury v celém FreeTube budou nahrazeny snímkem
z videa namísto výchozí miniatury.'
Invidious Instance: 'Invidious instance, ke které se FreeTube připojí za účelem
volání API. Smazáním aktuální instance zobrazíte seznam veřejných instancí,
ze kterých si můžete vybrat.'
Region for Trending: 'Region trendů vám umožní vybrat si zemi, ze které si přejete
zobrazovat videa trendů. Ne všechny zobrazené země jsou ale službou YouTube
reálně podporovány.'
Player Settings:
Force Local Backend for Legacy Formats: 'Funguje pouze v případě, že je výchozím
nastavením API Invidious. Je-li povoleno, spustí se místní API a použije starší
formáty místo těch, které vrátí Invidious. V některých zemích je zakázáno přehrání,
toto může překonat toto omezení'
formáty místo těch, které vrátí Invidious. Může pomoci, pokud videa z Invidious
nemohou být přehrána kvůli regionálnímu omezení.'
Proxy Videos Through Invidious: 'Připojí se k Invidious, aby poskytoval videa
namísto přímého připojení k YouTube. Toto přepíše předvolby API'
namísto přímého připojení k YouTube. Toto přepíše předvolby API.'
Default Video Format: 'Nastavte formáty použité při přehrávání videa. Formáty
Dash mohou hrát vyšší kvality. Starší formáty jsou omezeny na maximálně 720p,
ale používají menší šířku pásma. Zvukové formáty jsou pouze zvukové streamy'
DASH umožní přehrávat vyšší kvality. Starší formáty jsou omezeny na maximálně
720p, ale používají menší šířku pásma. Zvukové formáty jsou streamy obsahující
pouze audio.'
Subscription Settings:
Fetch Feeds from RSS: 'Je-li povoleno, FreeTube použije RSS místo své výchozí
metody pro získání vašeho odebírání kanálů. RSS je rychlejší a brání blokování
IP, ale neposkytuje určité informace, jako je délka videa a podobně'
# 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)'
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'
@ -653,7 +661,12 @@ Canceled next video autoplay: 'Automatické přehrávání dalšího videa bylo
Yes: 'Ano'
No: 'Ne'
Playing Next Video Interval: Přehrávání dalšího videa v žádném čase. Kliknutím zrušíte.
Playing Next Video Interval: Přehrávání dalšího videa bez prodlevy Kliknutím zrušíte.
| Přehrávání dalšího videa za {nextVideoInterval} s. Kliknutím zrušíte. | Přehrávání
dalšího videa za {nextVideoInterval} s. Kliknutím zrušíte.
More: Více
Hashtags have not yet been implemented, try again later: Hashtagy nebyly dosud implementovány,
zkuste to znovu později
Unknown YouTube url type, cannot be opened in app: Neznámý typ adresy URL YouTube,
nelze v aplikaci otevřít
Open New Window: Otevřít nové okno

View File

@ -1,7 +1,7 @@
FreeTube: FreeTube
# Currently on Subscriptions, Playlists, and History
'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.
# Webkit Menu Bar
@ -70,13 +70,13 @@ Subscriptions:
Subscriptions: Abonnements
Latest Subscriptions: Neueste Abonnements
'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.
'Getting Subscriptions. Please wait.': Rufe Abonnements ab. Bitte warten.
Refresh Subscriptions: Abonnements aktualisieren
Getting Subscriptions. Please wait.: Lade Abonnements. Bitte warten.
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
Load More Videos: Lade mehr Videos
Trending: Trends
@ -85,12 +85,12 @@ Playlists: Wiedergabelisten
User Playlists:
Your Playlists: Deine Wiedergabelisten
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Deine
gespeicherten Videos sind leer. Klicken Sie auf die Schaltfläche "Speichern" in
der Ecke eines Videos, damit es hier aufgelistet wird
gespeicherten Videos sind leer. Klicke auf die Schaltfläche „Speichern“ in der
Ecke eines Videos, damit es hier aufgelistet wird
Playlist Message: Diese Seite spiegelt nicht die vollständig funktionierenden Wiedergabelisten
wider. Sie listet nur Videos auf, die Sie gespeichert oder favorisiert haben.
Wenn die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier
befinden, in eine Wiedergabeliste "Favoriten" migriert.
wider. Sie listet nur Videos auf, die Du gespeichert oder favorisiert hast. Wenn
die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier befinden,
in eine Wiedergabeliste „Favoriten“ migriert.
History:
# On History Page
History: Verlauf
@ -110,7 +110,7 @@ Settings:
Preferred API Backend:
Preferred API Backend: Bevorzugtes API-System
Local API: Lokale API
Invidious API: Invidious API
Invidious API: Invidious-API
Video View Type:
Video View Type: Videoansichtstyp
Grid: Gitter
@ -130,7 +130,7 @@ Settings:
View all Invidious instance information: Alle Informationen zur Invidious-Instanz
anzeigen
Theme Settings:
Theme Settings: Thema Einstellungen
Theme Settings: Thema-Einstellungen
Match Top Bar with Main Color: Obere Leiste an Hauptfarbe anpassen
Base Theme:
Base Theme: Grundlegendes Thema
@ -174,7 +174,7 @@ Settings:
Default Playback Rate: Standard-Wiedergabegeschwindigkeit
Default Video Format:
Default Video Format: Standard-Videoformat
Dash Formats: DASH-Formate
Dash Formats: DASH-Format
Legacy Formats: Legacy Formate
Audio Formats: Audioformate
Default Quality:
@ -189,6 +189,7 @@ Settings:
1440p: 1440p
4k: 4k
8k: 8k
Playlist Next Video Interval: Zeit zwischen automatischer Videowiedergabe
Subscription Settings:
Subscription Settings: Abonnement-Einstellungen
Hide Videos on Watch: Verstecke Videos bei Wiedergabe
@ -245,6 +246,7 @@ Settings:
du sicher, dass du alle Abonnements und Profile löschen möchtest? Diese Aktion
kann nicht rückgängig gemacht werden.
Remove All Subscriptions / Profiles: Alle Abonnements / Profile löschen
Automatically Remove Video Meta Files: Meta-Dateien von Videos automatisch löschen
Data Settings:
How do I import my subscriptions?: Wie importiere ich meine Abonnements?
Unknown data key: Unbekannter Datenschlüssel
@ -295,6 +297,7 @@ Settings:
Hide Video Views: Video-Aufrufe verbergen
Distraction Free Settings: Einstellungen für ablenkungsfreien Modus
Hide Active Subscriptions: Aktive Abonnements ausblenden
Hide Playlists: Wiedergabelisten ausblenden
The app needs to restart for changes to take effect. Restart and apply change?: Um
die Änderungen anzuwenden muss die Anwendung neustarten. Jetzt neustarten und
Änderungen aktivieren?
@ -350,7 +353,7 @@ About:
This software is FOSS and released under the GNU Affero General Public License v3.0.: Diese
freie Software ist unter der AGPL-3.0 lizenziert.
Translate via Weblate: Auf Weblate übersetzen
Website: Webseite
Website: Website
Source Code: Quellcode
Release Notes: Versionshinweise
Blog: Blog
@ -359,7 +362,7 @@ About:
Wiki: Wiki
Report an Issue: Fehler melden
Channel Rules: Kanalregeln
Email: Email
Email: E-Mail
License: Lizenz
Beta: Beta
Donate: Spenden
@ -375,7 +378,7 @@ About:
Mastodon: Mastodon
Please check for duplicates before posting: Bitte überprüfe vor dem Absenden, ob
es Duplikate gibt
GitHub issues: GitHub Issues
GitHub issues: GitHub-Probleme
Report a problem: Problem melden
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub Veröffentlichungen
@ -504,6 +507,7 @@ Video:
Videos entfernt
Video has been saved: Video wurde gespeichert
Save Video: Video speichern
translated from English: Aus dem Englischen übersetzt
Videos:
#& Sort By
Sort By:
@ -538,12 +542,12 @@ Share Playlist:
Toggle Theatre Mode: Kinomodus umschalten
Change Format:
Change Video Formats: Ändere Videoformat
Use Dash Formats: Nutze DASH-Format
Use Dash Formats: DASH-Format benutzen
Use Legacy Formats: Nutze Altformat
Use Audio Formats: Nutze Audioformat
Audio formats are not available for this video: Es sind keine Audioformate für dieses
Video verfügbar
Dash formats are not available for this video: Das DASH-Format ist für dieses Video
Dash formats are not available for this video: DASH-Formate sind für dieses Video
nicht verfügbar
Share:
Share Video: Teile das Video
@ -649,6 +653,7 @@ Profile:
Other Channels: Andere Kanäle
Subscription List: Abonnement-Liste
Profile Select: Profilauswahl
Profile Filter: Profilfilter
The playlist has been reversed: Die Wiedergabeliste wurde umgedreht
A new blog is now available, $. Click to view more: Ein neuer Blogeintrag ist verfügbar,
$. Um ihn zu öffnen klicken
@ -657,33 +662,45 @@ Version $ is now available! Click for more details: Version $ ist jetzt verfüg
mehr Details klicken
Tooltips:
General Settings:
Thumbnail Preference: Alle Videovoransichten in FreeTube werden durch ein Einzelbild
aus dem Video ersetzt und entsprechen somit nicht mehr der Standardvoransicht.
Invidious Instance: Die Invidious-Instanz, welche FreeTube für API-Aufrufe verwendet.
Thumbnail Preference: Alle Thumbnails in FreeTube werden durch ein Standbild aus
dem Video ersetzt und entsprechen somit nicht mehr dem Standart-Vorschaubild.
Invidious Instance: Die Invidious-Instanz, welche FreeTube für API-Calls verwendet.
Leere die aktuelle Instanz, um eine vollständige Liste der verfügbaren Server
anzuzeigen.
Fallback to Non-Preferred Backend on Failure: Erlaube FreeTube, falls die bevorzugte
API nicht verfügbar sein sollte, automatisch die nicht bevorzugte Alternative
zu nutzen.
API nicht verfügbar sein sollte, automatisch eine alternative API zu nutzen.
Preferred API Backend: Wähle das Backend, welches FreeTube zum Laden der Daten
nutzen soll. Die lokale API ist ein integrierter Extrahierer. Die Invidious
API dagegen verwendet einen externen Server.
nutzen soll. Die lokale API ist ein integrierter Extrahierer. Die Invidious-API
dagegen verwendet einen externen Server.
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
unterstützt
unterstützt.
Subscription Settings:
Fetch Feeds from RSS: Mit dieser Option nutzt FreeTube einen RSS-Feed von Youtube
um deine Abonnements zu aktualisieren. RSS ist sowohl schneller als auch sicherer,
wenn du oft temporär von YouTube geblockt wirst(Error 429). Allerdings sind
nicht alle Videoinformationen, wie Videodauer oder Live-Status, verfügbar.
Fetch Feeds from RSS: Sobald aktiviert wird FreeTube RSS anstatt der Standartmethode
nutzen, um deine Abos zu aktualisieren. RSS ist schneller und verhindert das
Blockieren deiner IP-Adresse, doch gewisse Informationen, wie z.B. die Dauer
des Videos oder der Status eines Livestreams, werden nicht mehr verfügbar sein
Player Settings:
Default Video Format: Auswahl der Formate bei der Videowiedergabe. Dash-Formate
bieten eine höhere Qualität, Legacy-Formate sind auf 720p begrenzt, benötigen
dafür aber auch weniger Bandbreite. Audioformate umfassen reine Audiostreams.
Default Video Format: Auswahl der Formate bei der Videowiedergabe. DASH-Formate
bieten eine höhere Qualität, LEGACY-Formate sind auf 720p begrenzt, benötigen
dafür aber auch weniger Bandbreite. Audioformate beinhalten nur den Ton.
Proxy Videos Through Invidious: Zu Invidious verbinden, um Videos abzurufen, anstatt
eine direkten Verbindung zu YouTube aufzubauen. Überschreibt die API-Präferenz.
Force Local Backend for Legacy Formats: Dies funktioniert nur wenn du die Invidious
API als Standard ausgewählt hast. Die lokale API wird bei der Verwendung von
Legacy Formaten diese verwenden, anstatt auf Invidious zurückzugreifen. Dies
hilft dann, wenn Videos von Invidious nicht abspielbar sind. Zum Beispiel aufgrund
von Landesbeschränkungen.
Force Local Backend for Legacy Formats: Funktioniert nur, wenn du die Invidious-API
als Standard ausgewählt hast. Die lokale API wird bei der Verwendung von "Legacy"
-Formaten diese verwenden, anstatt auf Invidious zurückzugreifen. Dies hilft
dann, wenn Videos von Invidious aufgrund von Ländersperren nicht abspielbar
sind.
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
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
klicken. | Nächstes Video wird in {nextVideoInterval} Sekunden abgespielt. Zum Abbrechen
klicken.
More: Weiteres
Hashtags have not yet been implemented, try again later: Hashtags wurden noch nicht
implementiert, bitte versuche es später noch einmal
Unknown YouTube url type, cannot be opened in app: Unbekannte YouTube-Adresse, kann
in FreeTube nicht geöffnet werden

View File

@ -47,7 +47,7 @@ Search Filters:
Last Hour: 'Τελευταίας ώρας'
Today: 'Σήμερα'
This Week: 'Τρέχουσα Εβδομάδα'
This Month: 'Αυτό το μήνα'
This Month: 'Τρέχων μήνα'
This Year: 'Τρέχων έτος'
Type:
Type: 'Είδος'
@ -170,7 +170,7 @@ Settings:
Autoplay Videos: 'Αυτόματη αναπαραγωγή βίντεο'
Proxy Videos Through Invidious: 'Βίντεο μέσω του διακομιστή μεσολάβησης Invidious'
Autoplay Playlists: 'Αυτόματη αναπαραγωγή της λίστας αναπαραγωγής'
Enable Theatre Mode by Default: 'Ενεργοποίση λειτουργίας κινηματογράφου από προεπιλογή'
Enable Theatre Mode by Default: 'Ενεργοποίηση λειτουργίας κινηματογράφου από προεπιλογή'
Default Volume: 'Προεπιλεγμένο επίπεδο έντασης'
Default Playback Rate: 'Προεπιλεγμένη ταχύτητα αναπαραγωγής'
Default Video Format:
@ -190,6 +190,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Παύση μεταξύ Βίντεο στη λίστα αναπαραγωγής
Next Video Interval: Επόμενο διάστημα του βίντεο
Privacy Settings:
Privacy Settings: 'Ρυθμίσεις απορρήτου'
Remember History: 'Διατήρηση ιστορικού'
@ -206,6 +208,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Είστε
βέβαιοι ότι θέλετε να καταργήσετε όλες τις συνδρομές και τα προφίλ; Αυτό δεν
μπορεί να αναιρεθεί.'
Automatically Remove Video Meta Files: Αυτόματη αφαίρεση μετα-αρχείων βίντεο
Subscription Settings:
Subscription Settings: 'Ρυθμίσεις Συνδρομών'
Hide Videos on Watch: 'Απόκρυψη των βίντεο κατά την αναπαραγωγή'
@ -290,6 +293,7 @@ Settings:
Hide Channel Subscribers: Απόκρυψη συνδρομών καναλιού
Hide Video Views: Απόκρυψη προβολών βίντεο
Hide Active Subscriptions: Απόκρυψη ενεργών συνδρομών
Hide Playlists: Απόκρυψη λιστών αναπαραγωγής
The app needs to restart for changes to take effect. Restart and apply change?: Η
εφαρμογή πρέπει να κάνει επανεκκίνηση για να εφαρμοστούν οι αλλαγές. Επανεκκίνηση
και εφαρμογή αλλαγών;
@ -411,6 +415,7 @@ Profile:
βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα κανάλια; Αυτό δε θα διαγράψει
το κανάλι από οποιοδήποτε άλλο προφίλ.'
#On Channel Page
Profile Filter: Φίλτρο προφίλ
Channel:
Subscriber: 'Συνδρομητής'
Subscribers: 'Συνδρομητές'
@ -462,7 +467,7 @@ Video:
View: 'Προβολή'
Views: 'Προβολές'
Loop Playlist: 'Επανάληψη λίστας αναπαραγωγής'
Shuffle Playlist: 'Τυχαία αναπαραγωγή'
Shuffle Playlist: 'Τυχαία σειρά στη λίστα αναπαραγωγής'
Reverse Playlist: 'Αντιστροφή της λίστας αναπαραγωγής'
Play Next Video: 'Αναπαραγωγή επόμενου βίντεο'
Play Previous Video: 'Αναπαραγωγή προηγούμενου βίντεο'
@ -537,6 +542,7 @@ Video:
λίστα σας
Video has been saved: Το βίντεο έχει αποθηκευτεί
Save Video: Αποθήκευση βίντεο
translated from English: μεταφράστηκε από τα Αγγλικά
Videos:
#& Sort By
Sort By:
@ -653,27 +659,41 @@ Tooltips:
Player Settings:
Default Video Format: Ορίστε τις μορφές που χρησιμοποιούνται κατά την αναπαραγωγή
ενός βίντεο. Οι μορφές DASH μπορούν να παίξουν υψηλότερη ποιότητα. Οι παλαιότερες
μορφές περιορίζονται σε μέγιστο ανάλυσγς 720p αλλά χρησιμοποιούν λιγότερους
πόρους. Οι μορφές ήχου περιλαμβάνουν ροές μόνο ήχου
Proxy Videos Through Invidious: Θα συνδεθεί με το Invidious για να σερβίρει τα
βίντεο αντί να κάνει μια άμεση σύνδεση με το YouTube. Παράκαμψη προτίμησης API
μορφές περιορίζονται σε μέγιστο ανάλυσης 720p αλλά χρησιμοποιούν λιγότερους
πόρους. Οι μορφές ήχου περιλαμβάνουν ροές μόνο ήχου.
Proxy Videos Through Invidious: Θα συνδεθεί με το Invidious για να εξυπηρετήσει
τα βίντεο αντί να κάνει μια άμεση σύνδεση με το YouTube. Παράκαμψη προτίμησης
API.
Force Local Backend for Legacy Formats: Λειτουργεί μόνο όταν το Invidious API
είναι η προεπιλογή σας. Όταν ενεργοποιηθεί, το τοπικό API θα χρησιμοποιήσει
τις μορφές παλαιού τύπου που επιστρέφονται από αυτό αντί για αυτές που επιστρέφονται
από το Invidious. Βοηθά όταν τα βίντεο που επιστρέφονται από το Invidious δεν
αναπαράγονται λόγω περιορισμών χώρας
αναπαράγονται λόγω περιορισμών χώρας.
General Settings:
Region for Trending: Η περιοχή των τάσεων σας επιτρέπει να επιλέξετε τα δημοφιλή
βίντεο της χώρας που θέλετε να εμφανίζονται. Δεν υποστηρίζονται όλες οι χώρες
που προβάλλονται από το YouTube
που προβάλλονται από το YouTube.
Thumbnail Preference: Όλες οι μικρογραφίες του FreeTube θα αντικατασταθούν με
ένα πλαίσιο του βίντεο αντί για την προεπιλεγμένη μικρογραφία
ένα πλαίσιο του βίντεο αντί για την προεπιλεγμένη μικρογραφία.
Fallback to Non-Preferred Backend on Failure: Όταν το προτιμώμενο API αντιμετωπίζει
πρόβλημα, το FreeTube θα προσπαθήσει να χρησιμοποιήσει το μη προτιμώμενο API
ως εναλλακτική μέθοδο όταν ενεργοποιηθεί
ως εναλλακτική μέθοδο όταν ενεργοποιηθεί.
Preferred API Backend: Επέλεξε το σύστημα με το οποίο το Freetube θα συλλέγει
δεδομένα. Το τοπικό API είναι ένα ενσωματωμένο εργαλείο. Ενώ το Invidious API
απαιτεί έναν Invidious server για να συνδεθεί.
Invidious Instance: Το στιγμιότυπο Invidious στο οποίο το FreeTube θα συνδεθεί
για κλήσεις διεπαφής. Καθαρίστε το παρόν στιγμιότυπο για να δείτε μια λίστα
δημόσιων στιγμιότυπων προς επιλογή
δημόσιων στιγμιότυπων προς επιλογή.
Privacy Settings:
Remove Video Meta Files: Όταν είναι ενεργοποιημένο, το FreeTube διαγράφει αυτόματα
τα μετα-αρχεία που δημιουργήθηκαν κατά την αναπαραγωγή βίντεο, όταν η σελίδα
παρακολούθησης είναι κλειστή.
Playing Next Video Interval: Αναπαραγωγή επόμενου βίντεο άμεσα. Κάντε κλικ για ακύρωση.
| Αναπαραγωγή επόμενου βίντεο σε {nextVideoInterval} δευτερόλεπτο. Κάντε κλικ για
ακύρωση. | Αναπαραγωγή επόμενου βίντεο σε {nextVideoInterval} δευτερόλεπτα. Κάντε
κλικ για ακύρωση.
More: Περισσότερα
Hashtags have not yet been implemented, try again later: Τα Hashtags δεν έχουν ακόμη
εφαρμοστεί, δοκιμάστε ξανά αργότερα
Unknown YouTube url type, cannot be opened in app: Άγνωστος τύπος διεύθυνσης URL YouTube,
δεν είναι δυνατό να ανοίξει στην εφαρμογή

View File

@ -28,6 +28,7 @@ Minimize: Minimize
Close: Close
Back: Back
Forward: Forward
Open New Window: Open New Window
Version $ is now available! Click for more details: Version $ is now available! Click
for more details
@ -112,6 +113,7 @@ Settings:
Enable Search Suggestions: Enable Search Suggestions
Default Landing Page: Default Landing Page
Locale Preference: Locale Preference
System Default: System Default
Preferred API Backend:
Preferred API Backend: Preferred API Backend
Local API: Local API
@ -171,12 +173,12 @@ Settings:
Proxy Videos Through Invidious: Proxy Videos Through Invidious
Autoplay Playlists: Autoplay Playlists
Enable Theatre Mode by Default: Enable Theatre Mode by Default
Playlist Next Video Interval: Playlist Next Video Interval
Next Video Interval: Next Video Interval
Default Volume: Default Volume
Default Playback Rate: Default Playback Rate
Default Video Format:
Default Video Format: Default Video Format
Dash Formats: Dash Formats
Dash Formats: DASH Formats
Legacy Formats: Legacy Formats
Audio Formats: Audio Formats
Default Quality:
@ -195,6 +197,7 @@ Settings:
Privacy Settings: Privacy Settings
Remember History: Remember History
Save Watched Progress: Save Watched Progress
Automatically Remove Video Meta Files: Automatically Remove Video Meta Files
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?
@ -277,6 +280,11 @@ Settings:
Region: Region
City: City
Error getting network information. Is your proxy configured properly?: Error getting network information. Is your proxy configured properly?
SponsorBlock Settings:
SponsorBlock Settings: SponsorBlock Settings
Enable SponsorBlock: Enable SponsorBlock
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': SponsorBlock API Url (Default is https://sponsor.ajay.app)
Notify when sponsor segment is skipped: Notify when sponsor segment is skipped
About:
#On About page
About: About
@ -466,8 +474,17 @@ Video:
Published on: Published on
Streamed on: Streamed on
Started streaming on: Started streaming on
translated from English: translated from English
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: $ % ago
Publicationtemplate: $ % ago
Skipped segment: Skipped segment
Sponsor Block category:
sponsor: sponsor
intro: intro
outro: outro
self-promotion: self-promotion
interaction: interaction
music offtopic: music offtopic
#& Videos
Videos:
#& Sort By
@ -496,10 +513,10 @@ Playlist:
Toggle Theatre Mode: Toggle Theatre Mode
Change Format:
Change Video Formats: Change Video Formats
Use Dash Formats: Use Dash Formats
Use Dash Formats: Use DASH Formats
Use Legacy Formats: Use Legacy Formats
Use Audio Formats: Use Audio Formats
Dash formats are not available for this video: Dash formats are not available for
Dash formats are not available for this video: DASH formats are not available for
this video
Audio formats are not available for this video: Audio formats are not available
for this video
@ -548,29 +565,32 @@ Tooltips:
to connect to.
Fallback to Non-Preferred Backend on Failure: When your preferred API has a problem,
FreeTube will automatically attempt to use your non-preferred API as a fallback
method when enabled
method when enabled.
Thumbnail Preference: All thumbnails throughout FreeTube will be replaced with
a frame of the video instead of the default thumbnail
a frame of the video instead of the default thumbnail.
Invidious Instance: The Invidious instance that FreeTube will connect to for API
calls. Clear the current instance to see a list of public instances to choose
from
from.
Region for Trending: The region of trends allows you to pick which country's trending
videos you want to have displayed. Not all countries displayed are actually
supported by YouTube
supported by YouTube.
Player Settings:
Force Local Backend for Legacy Formats: Only works when the Invidious API is your
default. When enabled, the local API will run and use the legacy formats returned
by that instead of the ones returned by Invidious. Helps when the videos returned
by Invidious don't play due to country restrictions
by Invidious don't play due to country restrictions.
Proxy Videos Through Invidious: Will connect to Invidious to serve videos instead
of making a direct connection to YouTube. Overrides API preference
Default Video Format: Set the formats used when a video plays. Dash formats can
of making a direct connection to YouTube. Overrides API preference.
Default Video Format: Set the formats used when a video plays. DASH formats can
play higher qualities. Legacy formats are limited to a max of 720p but use less
bandwidth. Audio formats are audio only streams
bandwidth. Audio formats are audio only streams.
Subscription Settings:
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,
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
Local API Error (Click to copy): Local API Error (Click to copy)
@ -581,6 +601,8 @@ This video is unavailable because of missing formats. This can happen due to cou
video is unavailable because of missing formats. This can happen due to country
unavailability.
Subscriptions have not yet been implemented: Subscriptions have not yet been implemented
Unknown YouTube url type, cannot be opened in app: Unknown YouTube url type, cannot be opened in app
Hashtags have not yet been implemented, try again later: Hashtags have not yet been implemented, try again later
Loop is now disabled: Loop is now disabled
Loop is now enabled: Loop is now enabled
Shuffle is now disabled: Shuffle is now disabled

View File

@ -44,7 +44,7 @@ Search Filters:
Sort By: 'Sort By'
Most Relevant: 'Most Relevant'
Rating: 'Rating'
Upload Date: 'Upload Date'
Upload Date: 'Upload date'
View Count: 'View Count'
Time:
Time: 'Time'
@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'Fetching results. Please wait'
Fetch more results: 'Fetch more results'
# Sidebar
There are no more results for this search: There are no more results for this search
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Subscriptions'
@ -86,6 +87,12 @@ Most Popular: 'Most Popular'
Playlists: 'Playlists'
User Playlists:
Your Playlists: 'Your Playlists'
Playlist Message: This page is not reflective of fully working playlists. It only
lists videos that you have saved or favourited. When the work has finished, all
videos currently here will be migrated to a Favourites playlist.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Your
saved videos are empty. Click on the save button on the corner of a video to have
it listed here
History:
# On History Page
History: 'History'
@ -121,6 +128,8 @@ Settings:
(Default is https://invidious.snopyta.org)'
Region for Trending: 'Region for Trending'
#! List countries
View all Invidious instance information: View all Invidious instance information
System Default: System Default
Theme Settings:
Theme Settings: 'Theme Settings'
Match Top Bar with Main Color: 'Match top bar with main colour'
@ -165,7 +174,7 @@ Settings:
Default Playback Rate: 'Default Playback Rate'
Default Video Format:
Default Video Format: 'Default Video Format'
Dash Formats: 'Dash Formats'
Dash Formats: 'DASH Formats'
Legacy Formats: 'Legacy Formats'
Audio Formats: 'Audio Formats'
Default Quality:
@ -180,6 +189,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Playlist Next Video Interval
Next Video Interval: Next Video Interval
Privacy Settings:
Privacy Settings: 'Privacy Settings'
Remember History: 'Remember History'
@ -196,6 +207,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: Automatically Remove Video Meta Files
Subscription Settings:
Subscription Settings: 'Subscription Settings'
Hide Videos on Watch: 'Hide Videos on Watch'
@ -239,6 +251,7 @@ Settings:
Unknown data key: 'Unknown data key'
How do I import my subscriptions?: 'How do I import my subscriptions?'
Check for Legacy Subscriptions: Check for Legacy Subscriptions
Manage Subscriptions: Manage Subscriptions
Advanced Settings:
Advanced Settings: 'Advanced Settings'
Enable Debug Mode (Prints data to the console): 'Enable Debug Mode (Prints data
@ -277,9 +290,32 @@ Settings:
Hide Video Views: Hide Video Views
Hide Active Subscriptions: Hide Active Subscriptions
Distraction Free Settings: Distraction Free Settings
Hide Playlists: 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. Do you want to restart and apply
the changes?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Error getting
network information. Is your proxy configured properly?
City: City
Region: Region
Country: Country
Ip: Ip
Your Info: Your Info
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: Proxy Host
Proxy Protocol: Proxy Protocol
Enable Tor / Proxy: Enable Tor / Proxy
Proxy Settings: Proxy Settings
SponsorBlock Settings:
Notify when sponsor segment is skipped: Notify when sponsor segment is skipped
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': SponsorBlock API
Url (Default is https://sponsor.ajay.app)
Enable SponsorBlock: Enable SponsorBlock
SponsorBlock Settings: SponsorBlock Settings
About:
#On About page
About: About
@ -289,7 +325,7 @@ About:
Donate: Donate
Beta: Beta
License: License
Email: Email
Email: E-mail
Channel Rules: Channel Rules
Report an Issue: Report an Issue
Wiki: Wiki
@ -301,6 +337,22 @@ About:
Website: Website
Translate via Weblate: Translate via Weblate
these people and projects: these people and projects
FreeTube is made possible by: FreeTube is made possible by
Translate: Translate
room rules: room rules
Please read the: Please read the
Chat on Matrix: Chat on Matrix
Mastodon: Mastodon
Please check for duplicates before posting: Please check for duplicates before posting
GitHub issues: GitHub issues
Report a problem: Report a problem
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub releases
Downloads / Changelog: Downloads / Changelog
View License: View Licence
Licensed under the AGPLv3: Licensed under the AGPLv3
Source code: Source code
Profile:
Profile Select: 'Profile Select'
All Channels: 'All Channels'
@ -342,6 +394,7 @@ Profile:
you sure you want to delete the selected channels? This will not delete the channel
from any other profile.'
#On Channel Page
Profile Filter: Profile Filter
Channel:
Subscriber: 'Subscriber'
Subscribers: 'Subscribers'
@ -461,6 +514,19 @@ Video:
Open Channel in Invidious: Open this Channel in Invidious
Copy YouTube Channel Link: Copy the Link of this YouTube Channel
Open Channel in YouTube: Open this Channel in YouTube
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
translated from English: translated from English
Sponsor Block category:
music offtopic: music offtopic
interaction: interaction
self-promotion: self-promotion
outro: outro
intro: intro
sponsor: sponsor
Skipped segment: Skipped segment
Videos:
#& Sort By
Sort By:
@ -488,10 +554,10 @@ Playlist:
Toggle Theatre Mode: 'Toggle Theatre Mode'
Change Format:
Change Video Formats: 'Change Video Formats'
Use Dash Formats: 'Use Dash Formats'
Use Dash Formats: 'Use DASH Formats'
Use Legacy Formats: 'Use Legacy Formats'
Use Audio Formats: 'Use Audio Formats'
Dash formats are not available for this video: 'Dash formats are not available for
Dash formats are not available for this video: 'DASH formats are not available for
this video'
Audio formats are not available for this video: 'Audio formats are not available
for this video'
@ -560,29 +626,41 @@ Tooltips:
Subscription Settings:
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
method to grab your subscription feed. RSS is faster and prevents IP blocking,
but it doesn't provide certain information like video duration, or live status
but it doesnt provide certain information like video duration, or live status
Player Settings:
Default Video Format: Set the formats used when a video plays. Dash formats can
play much higher qualities. Legacy formats are limited to a maximum of 720p,
but use less bandwidth. Audio formats stream only audio
Default Video Format: Set the formats used when a video plays. DASH formats can
play higher qualities. Legacy formats are limited to a max of 720p but use less
bandwidth. Audio formats are audio only streams.
Proxy Videos Through Invidious: Will connect to Invidious to serve videos instead
of making a direct connection to YouTube. Overrides API preference
Force Local Backend for Legacy Formats: This only works when the Invidious API
is your default. When enabled, the local API will run and use the legacy formats
returned by that instead of the ones returned by Invidious. It helps when the
videos returned by Invidious can't play because of regional restrictions
of making a direct connection to YouTube. Overrides API preference.
Force Local Backend for Legacy Formats: Only works when the Invidious API is your
default. When enabled, the local API will run and use the legacy formats returned
by that instead of the ones returned by Invidious. Helps when the videos returned
by Invidious dont play due to country restrictions.
General Settings:
Region for Trending: The region of trends allows you to pick which country's trending
Region for Trending: The region of trends allows you to pick which countrys trending
videos you want to have displayed. Not all countries displayed are actually
supported by YouTube
supported by YouTube.
Invidious Instance: The Invidious instance that FreeTube will connect to for API
calls. Clear the current instance to see a list of public instances to choose
from
from.
Thumbnail Preference: All thumbnails throughout FreeTube will be replaced with
a frame of the video instead of the default thumbnail
a frame of the video instead of the default thumbnail.
Fallback to Non-Preferred Backend on Failure: When your preferred API has a problem,
FreeTube will automatically attempt to use your non-preferred API as a fallback
method when it's enabled
method when enabled.
Preferred API Backend: Choose the back-end that FreeTube uses to obtain data.
The local API is a built-in extractor. The Invidious API requires an Invidious
server to connect to.
Privacy Settings:
Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files
created during video playback, when the watch page is closed.
Playing Next Video Interval: Playing next video in no time. Click to cancel. | Playing
next video in {nextVideoInterval} second. Click to cancel. | Playing next video
in {nextVideoInterval} seconds. Click to cancel.
More: More
Hashtags have not yet been implemented, try again later: Hashtags have not yet been
implemented, try again later
Unknown YouTube url type, cannot be opened in app: Unknown YouTube url type, cannot
be opened in app
Open New Window: Open New Window

View File

@ -258,6 +258,9 @@ About:
Latest FreeTube News: ''
Blog: Blogo
Website: Retejo
Email: Retpoŝto
Profile:
Profile Select: ''
All Channels: ''

View File

@ -294,6 +294,9 @@ About:
Latest FreeTube News: 'Últimas noticias de FreeTube'
#On Channel Page
Blog: Blog
Website: Sitio web
Email: Correo electrónico
Channel:
Subscriber: 'Suscriptor'
Subscribers: 'Suscriptores'

View File

@ -171,7 +171,7 @@ Settings:
Legacy Formats: 'Legacy'
Audio Formats: 'Solo audio'
Default Quality:
Default Quality: 'Calidad predeterminada'
Default Quality: 'Calidad Predeterminada'
Auto: 'Automático'
144p: '144p'
240p: '240p'
@ -182,36 +182,37 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Intervalo de Siguiente Video en Playlist
Privacy Settings:
Privacy Settings: 'Privacidad'
Remember History: 'Recordar historial'
Privacy Settings: 'Ajustes de Privacidad'
Remember History: 'Recordar Historial'
Save Watched Progress: 'Guardar progreso reproducido'
Clear Search Cache: 'Borrar cache de búsqueda'
Clear Search Cache: 'Borrar Cache de Búsqueda'
Are you sure you want to clear out your search cache?: '¿Seguro de que quieres
borrar la cache de búsqueda?'
Search cache has been cleared: '¡Hecho!'
Search cache has been cleared: 'El cache de búsqueda ha sido eliminado'
Remove Watch History: 'Borrar historial de reproducción'
Are you sure you want to remove your entire watch history?: '¿Seguro de que quieres
borrar el historial de reproducción?'
Watch history has been cleared: '¡Hecho!'
Watch history has been cleared: 'El Historial de Reproducción ha sido eliminado'
Remove All Subscriptions / Profiles: 'Borrar todas las suscripciones y perfiles'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '¿Estás
seguro de que quieres borrar todas las suscripciones y perfiles? Esta operación
será irreversible.'
Subscription Settings:
Subscription Settings: 'Suscripciones'
Subscription Settings: 'Ajustes de Suscripciones'
Hide Videos on Watch: 'Ocultar videos vistos'
Fetch Feeds from RSS: 'Obtener suscripciones usando RSS'
Manage Subscriptions: 'Administrar suscripciones'
Manage Subscriptions: 'Administrar Suscripciones'
Data Settings:
Data Settings: 'Datos locales'
Select Import Type: 'Tipo de importación'
Select Export Type: 'Tipo de exportación'
Import Subscriptions: 'Importar suscripciones'
Data Settings: 'Ajustes de Datos'
Select Import Type: 'Seleccionar Tipo de Importación'
Select Export Type: 'Seleccionar Tipo de Exportación'
Import Subscriptions: 'Importar Suscripciones'
Import FreeTube: 'Importar FreeTube'
Import YouTube: 'Importar YouTube'
Import NewPipe: 'Importar NewPipe'
Export Subscriptions: 'Exportar suscripciones'
Export Subscriptions: 'Exportar Suscripciones'
Export FreeTube: 'Exportar FreeTube'
Export YouTube: 'Exportar YouTube'
Export NewPipe: 'Exportar NewPipe'
@ -270,16 +271,17 @@ Settings:
#& No
Distraction Free Settings:
Hide Video Likes And Dislikes: No mostrar likes/dislikes en videos
Hide Video Views: No mostrar visitas en videos
Hide Live Chat: No mostrar chat
Hide Popular Videos: No mostrar más populares
Hide Trending Videos: No mostrar tendencias
Hide Recommended Videos: No mostrar videos recomendados
Hide Comment Likes: No mostrar likes de comentarios
Hide Channel Subscribers: No mostrar suscriptores en canales
Distraction Free Settings: No distraer
Hide Active Subscriptions: Ocultar suscripciones activas
Hide Video Likes And Dislikes: Ocultar Likes/Dislikes del Video
Hide Video Views: Ocultar las Vistas del Video
Hide Live Chat: Ocultar Chat en Vivo
Hide Popular Videos: Ocultar Videos Populares
Hide Trending Videos: Ocultar Tendencias
Hide Recommended Videos: Ocultar Videos Recomendados
Hide Comment Likes: Ocultar Likes de Comentarios
Hide Channel Subscribers: Ocultar Suscriptores de Canales
Distraction Free Settings: Sin Distracción
Hide Active Subscriptions: Ocultar Suscripciones Activas
Hide Playlists: Ocultar las Playlists
The app needs to restart for changes to take effect. Restart and apply change?: ¿Quieres
reiniciar FreeTube ahora para aplicar los cambios?
Proxy Settings:
@ -340,7 +342,7 @@ About:
Mastodon: Mastodon
Email: Correo electrónico
Blog: Blog
Website: Página web
Website: Sitio web
Please check for duplicates before posting: Por favor, antes de publicar asegúrate
de no duplicar temas
GitHub issues: Sugerencias en GitHub
@ -396,6 +398,7 @@ Profile:
Other Channels: Otros canales
Subscription List: Lista de suscripciones
Profile Select: Seleccionar perfil
Profile Filter: Filtro de Perfil
Channel:
Subscriber: 'Suscriptor'
Subscribers: 'Suscriptores'
@ -488,7 +491,7 @@ Video:
Year: 'Año'
Years: 'Años'
Ago: 'Hace'
Upcoming: 'Comenzará el'
Upcoming: 'Se estrenará el'
Published on: 'Publicado el'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'Hace $ %'
@ -518,6 +521,7 @@ Video:
de guardados
Video has been saved: El video ha sido guardado
Save Video: Guardiar video
translated from English: traducido del Inglés
Videos:
#& Sort By
Sort By:
@ -529,20 +533,20 @@ Playlist:
#& About
View Full Playlist: 'Ver la lista de reproducción completa'
Videos: 'Videos'
View: 'Vista'
View: 'Ver'
Views: 'Vistas'
Last Updated On: 'Se actualizó por última vez el'
Share Playlist:
Share Playlist: 'Compartir lista de reproducción'
Copy YouTube Link: 'Copiar enlace YouTube'
Open in YouTube: 'Abrir en YouTube'
Copy Invidious Link: 'Copiar enlace Invidious'
Copy Invidious Link: 'Copiar Enlace de Invidious'
Open in Invidious: 'Abrir en Invidious'
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'Pasar al modo cine'
Toggle Theatre Mode: 'Activar Modo Cine'
Change Format:
Change Video Formats: 'Cambiar formato de video'
Use Dash Formats: 'Usar formato Dash'
@ -553,41 +557,43 @@ Change Format:
Dash formats are not available for this video: El formato Dash no está disponible
para este video
Share:
Share Video: 'Compartir video'
Share Video: 'Compartir Video'
Copy Link: 'Copiar enlace'
Open Link: 'Abrir enlace'
Copy Embed: 'Copiar código encrustado'
Open Embed: 'Abrir código encrustado'
# On Click
Invidious URL copied to clipboard: 'El enlace de Invidious ha sido copiado al portapapeles'
Invidious Embed URL copied to clipboard: 'El enlace encrustada de Invidious ha sido
copiada al portapapeles'
YouTube URL copied to clipboard: 'El enlace de Youtube ha sido copiado al portapapeles'
YouTube Embed URL copied to clipboard: 'El enlace encrustado de Youtube ha sido
copiado al portapapeles'
Invidious URL copied to clipboard: 'Enlace de Invidious copiado al porta-papeles'
Invidious Embed URL copied to clipboard: 'Enlace Incrustado de Invidious copiado
al porta-papeles'
YouTube URL copied to clipboard: 'Enlace de YouTube copiado al porta-papeles'
YouTube Embed URL copied to clipboard: 'Enlace Incrustado de YouTube copiado al
porta-papeles'
Include Timestamp: Incluir marcas de tiempo
YouTube Channel URL copied to clipboard: Enlace youtube copiado
Invidious Channel URL copied to clipboard: Enlace Invidious copiado
Mini Player: 'Reproductor Mini'
YouTube Channel URL copied to clipboard: Enlace del Canal de YouTube copiado al
porta-papeles
Invidious Channel URL copied to clipboard: Enlace del Canal de Invidious copiado
al porta-papeles
Mini Player: 'Mini Reproductor'
Comments:
Comments: 'Comentarios'
Click to View Comments: 'Ver comentarios'
Getting comment replies, please wait: 'Obteniendo las respuestas. Por favor, espera'
Show Comments: 'Ver comentarios'
Hide Comments: 'Esconder comentarios'
Click to View Comments: 'Ver Comentarios'
Getting comment replies, please wait: 'Obteniendo las respuestas. Por favor, espera...'
Show Comments: 'Ver Comentarios'
Hide Comments: 'Ocultar Comentarios'
# Context: View 10 Replies, View 1 Reply
View: 'Ver'
Hide: 'Esconder'
Hide: 'Ocultar'
Replies: 'Respuestas'
Reply: 'Respuesta'
Reply: 'Responder'
There are no comments available for this video: 'Aún no hay comentarios'
Load More Comments: 'Más comentarios'
There are no more comments for this video: No hay más comentarios en este video
Newest first: Comentarios más recientes
Newest first: Los más Recientes Primero
Top comments: Mejores comentarios
Sort by: Ordenar por
No more comments available: No hay más comentarios
Up Next: 'Siguientes'
Up Next: 'A Continuación'
# Toast Messages
Local API Error (Click to copy): 'Error de la API local (Click para copiar el código)'
@ -615,15 +621,16 @@ A new blog is now available, $. Click to view more: Nueva publicación del blog
Download From Site: Descargar de la web
Version $ is now available! Click for more details: La versión $ está disponible!
Click para saber más
The playlist has been reversed: Orden invertido
The playlist has been reversed: Orden de Playlist invertido
This video is unavailable because of missing formats. This can happen due to country unavailability.: Este
video no está disponible por no tener un formato válido. Esto puede suceder por
la falta de acceso de este formato a tu región.
Tooltips:
Subscription Settings:
Fetch Feeds from RSS: Si lo habilitas, FreeTube usará RSS por defecto para obtener
tus suscripciones. RSS es más rápido e impide el bloqueo de IP, pero no podrá
obtener cierta información como la duración de videos o si un video es en directo
Fetch Feeds from RSS: Si lo habilitas, FreeTube usará RSS en lugar de su método
por defecto para obtener tus actualizaciones de suscripciones. RSS es más rápido
e impide el bloqueo de IP, pero no provee cierta información como la duración
de un video o si es en directo
Player Settings:
Default Video Format: Selecciona el formato usado para reproducir videos. El formato
Dash proporciona resoluciones más altas. El formato Legacy está limitado a 720p,
@ -644,7 +651,11 @@ Tooltips:
Thumbnail Preference: Todas las miniaturas en FreeTube serán reemplazadas con
un frame del vídeo en lugar de la miniatura por defecto
Fallback to Non-Preferred Backend on Failure: Si la API primaria falla, FreeTube
utilizará automáticamente la API secundara si se habilita
utilizará automáticamente la API secundara si se habilita.
Preferred API Backend: Elige el backend que FreeTube utiliza para obtener datos.
La API local es un extractor incluido. La API Invidious requiere un servidor
Invidious al que conectarse.
More: Más
Unknown YouTube url type, cannot be opened in app: Tipo de LRU desconocido. No se
puede abrir en applicación
Open New Window: Abrir ventana nueva

View File

@ -273,7 +273,7 @@ Settings:
Distraction Free Settings: Configuraciones para evitar distraerse
The app needs to restart for changes to take effect. Restart and apply change?: Esta
aplicación necesita reiniciarse para que los cambios entren en efecto. ¿Reiniciar
y aplicar cambios?
y aplicar el cambio?
About:
#On About page
About: ''
@ -296,6 +296,9 @@ About:
Latest FreeTube News: ''
Website: Sitio web
Email: Correo electrónico
Blog: Blog
Profile:
All Channels: ''
Profile Manager: ''
@ -477,8 +480,8 @@ Playing next video in 5 seconds. Click to cancel: ''
Canceled next video autoplay: ''
'The playlist has ended. Enable loop to continue playing': ''
Yes: ''
No: ''
Yes: ''
No: 'No'
A new blog is now available, $. Click to view more: Un nuevo blog está disponible,
$. Hacé click para ver más
Download From Site: Descargar desde el sitio

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'Laen tulemusi. Palun oota üks hetk'
Fetch more results: 'Lae veel andmeid'
# Sidebar
There are no more results for this search: Sellel otsingul pole rohkem vastuseid
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Tellimused'
@ -78,11 +79,18 @@ Subscriptions:
tellimuste loend on hetkel tühi. Telli kanaleid ja sa näed neid siin loendis.'
'Getting Subscriptions. Please wait.': 'Laen tellimusi, palun oota.'
Refresh Subscriptions: 'Värskenda tellimusi'
Trending: ''
Load More Videos: Laadi veel videosid
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Sellel
profiilil on väga palju tellimusi. Vältimaks serveripoolseid piiranguid teen RSS-voo
päringud harvemini
Trending: 'Populaarsed videod'
Most Popular: 'Populaarseimad'
Playlists: 'Esitusloendid'
User Playlists:
Your Playlists: 'Sinu esitusloendid'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Sa
pole veel videosid siia salvestanud. Selleks palun vajuta video nurgas asuvat
salvestusnuppu
History:
# On History Page
History: 'Ajalugu'
@ -94,17 +102,18 @@ Settings:
General Settings:
General Settings: 'Üldised seadistused'
Check for Updates: 'Kontrolli uuendusi'
Check for Latest Blog Posts: ''
Fallback to Non-Preferred Backend on Failure: ''
Enable Search Suggestions: ''
Default Landing Page: ''
Locale Preference: ''
Check for Latest Blog Posts: 'Vaata viimaseid blogipostitusi'
Fallback to Non-Preferred Backend on Failure: 'Luba vigade korral kasutada teist
taustateenust'
Enable Search Suggestions: 'Kasuta otsingusoovitusi'
Default Landing Page: 'Vaikimisi avaleht'
Locale Preference: 'Lokaadi eelistus'
Preferred API Backend:
Preferred API Backend: ''
Local API: ''
Invidious API: ''
Preferred API Backend: 'Eelistatud taustateenuste API'
Local API: 'API kohalikus arvutis'
Invidious API: 'API Invidious''e veebirakenduses'
Video View Type:
Video View Type: ''
Video View Type: 'Kasutatav videote vaade'
Grid: 'Võrgustik'
List: 'Loend'
Thumbnail Preference:
@ -113,99 +122,115 @@ Settings:
Beginning: 'Alguses'
Middle: 'Keskel'
End: 'Lõpus'
'Invidious Instance (Default is https://invidious.snopyta.org)': ''
Region for Trending: ''
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious''e
veebirakendus (vaikimisi kasutatav sait on https://invidious.snopyta.org)'
Region for Trending: 'Mis geograafia alusel tuvastame populaarsemad videod'
#! List countries
System Default: Arvuti vaikeseadistused
View all Invidious instance information: Vaata kõike teavet kasutatava Invidious'e
veebirakenduse kohta
Theme Settings:
Theme Settings: ''
Match Top Bar with Main Color: ''
Theme Settings: 'Välimuse seadistused'
Match Top Bar with Main Color: 'Kasuta ülaribal põhivärvi'
Base Theme:
Base Theme: ''
Black: ''
Dark: ''
Light: ''
Base Theme: 'Põhiteema'
Black: 'Must'
Dark: 'Tume'
Light: 'Hele'
Main Color Theme:
Main Color Theme: ''
Red: ''
Pink: ''
Purple: ''
Deep Purple: ''
Indigo: ''
Blue: ''
Light Blue: ''
Cyan: ''
Teal: ''
Green: ''
Light Green: ''
Lime: ''
Yellow: ''
Amber: ''
Orange: ''
Deep Orange: ''
Secondary Color Theme: ''
Main Color Theme: 'Põhiline värviteema'
Red: 'Punane'
Pink: 'Roosa'
Purple: 'Purpurpunane'
Deep Purple: 'Sügavpurpurpunane'
Indigo: 'Indigosinine'
Blue: 'Sinine'
Light Blue: 'Helesinine'
Cyan: 'Rohekassinine'
Teal: 'Sinakasroheline'
Green: 'Roheline'
Light Green: 'Heleroheline'
Lime: 'Kollakasroheline'
Yellow: 'Kollane'
Amber: 'Merevaigukollane'
Orange: 'Oranž'
Deep Orange: 'Sügavoranž'
Secondary Color Theme: 'Värvide alamteema'
#* Main Color Theme
UI Scale: Kasutajaliidese suurus
Disable Smooth Scrolling: Ära kasuta sujuvat kerimist
Expand Side Bar by Default: Vaikimis näita külgriba laiana
Player Settings:
Player Settings: ''
Force Local Backend for Legacy Formats: ''
Play Next Video: ''
Turn on Subtitles by Default: ''
Player Settings: 'Videomängija seadistused'
Force Local Backend for Legacy Formats: 'Pärandvormingute puhul kasuta sundkorras
kohalikku taustateenust'
Play Next Video: 'Esita ka järgmist videot'
Turn on Subtitles by Default: 'Vaikimisi näita subtiitreid'
Autoplay Videos: 'Esita videod automaatselt'
Proxy Videos Through Invidious: ''
Autoplay Playlists: ''
Enable Theatre Mode by Default: ''
Default Volume: ''
Default Playback Rate: ''
Proxy Videos Through Invidious: 'Puhverda videosid Invidious''e veebiteenuse kaudu'
Autoplay Playlists: 'Automaatselt mängi esitusloendit'
Enable Theatre Mode by Default: 'Vaikimisi kasuta teatrivaadet (laia vaadet)'
Default Volume: 'Vaikimisi helivaljus'
Default Playback Rate: 'Vaikimisi videoesituse kiirus'
Default Video Format:
Default Video Format: ''
Dash Formats: ''
Legacy Formats: ''
Audio Formats: ''
Default Video Format: 'Vaikimisi videovorming'
Dash Formats: 'DASH-vormingud'
Legacy Formats: 'Pärandvormingud'
Audio Formats: 'Helivormingud'
Default Quality:
Default Quality: ''
Auto: ''
144p: ''
240p: ''
360p: ''
480p: ''
720p: ''
1080p: ''
1440p: ''
4k: ''
8k: ''
Default Quality: 'Vaikimisi videokvaliteet'
Auto: 'Vali automaatselt'
144p: '144p'
240p: '240p'
360p: '360p'
480p: '480p'
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: '4k'
8k: '8k'
Next Video Interval: Viivitus järgmise video esitamisel
Privacy Settings:
Privacy Settings: ''
Remember History: ''
Save Watched Progress: ''
Clear Search Cache: ''
Are you sure you want to clear out your search cache?: ''
Search cache has been cleared: ''
Remove Watch History: ''
Are you sure you want to remove your entire watch history?: ''
Watch history has been cleared: ''
Remove All Subscriptions / Profiles: ''
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: ''
Privacy Settings: 'Privaatsuse seadistused'
Remember History: 'Jäta ajalugu meelde'
Save Watched Progress: 'Salvesta vaatamise olek'
Clear Search Cache: 'Kustuta otsingute ajalugu'
Are you sure you want to clear out your search cache?: 'Kas sa oled kindel, et
soovid kustutada sinu otsingute ajaloo?'
Search cache has been cleared: 'Otsingute ajalugu on nüüd kustutatud'
Remove Watch History: 'Kustuta vaatamiste ajalugu'
Are you sure you want to remove your entire watch history?: 'Kas sa oled kindel,
et soovid kustutada kogu sinu vaatamiste ajaloo?'
Watch history has been cleared: 'Vaatamiste ajalugu on nüüd kustutatud'
Remove All Subscriptions / Profiles: 'Kustuta kõik tellimused / profiilid'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Kas
sa oled kindel, et soovid kustutada kõik tellimused/profiilid? Seda tegevust
ei saa tagasi pöörata.'
Automatically Remove Video Meta Files: Automaatselt kustuta videote metateave
Subscription Settings:
Subscription Settings: ''
Hide Videos on Watch: ''
Fetch Feeds from RSS: ''
Manage Subscriptions: ''
Subscription Settings: 'Tellimuste seadistused'
Hide Videos on Watch: 'Vaatamisel peida videod'
Fetch Feeds from RSS: 'Laadi RSS-uudisvood'
Manage Subscriptions: 'Halda tellimusi'
Data Settings:
Data Settings: ''
Select Import Type: ''
Select Export Type: ''
Import Subscriptions: ''
Import FreeTube: ''
Import YouTube: ''
Import NewPipe: ''
Export Subscriptions: ''
Export FreeTube: ''
Export YouTube: ''
Export NewPipe: ''
Import History: ''
Export History: ''
Profile object has insufficient data, skipping item: ''
All subscriptions and profiles have been successfully imported: ''
All subscriptions have been successfully imported: ''
Data Settings: 'Andmehaldus'
Select Import Type: 'Vali imporditava faili vorming'
Select Export Type: 'Vali eksporditava faili vorming'
Import Subscriptions: 'Impordi tellimused'
Import FreeTube: 'Kasuta FreeTube vormingut'
Import YouTube: 'Kasuta YouTube vormingut'
Import NewPipe: 'Kasuta NewPipe vormingut'
Export Subscriptions: 'Ekspordi tellimused'
Export FreeTube: 'Ekspordi FreeTube vormingus'
Export YouTube: 'Ekspordi YouTube vormingus'
Export NewPipe: 'Ekspordi NewPipe vormingus'
Import History: 'Impordi ajalugu'
Export History: 'Ekspordi ajalugu'
Profile object has insufficient data, skipping item: 'Osal profiilis pole piisavalt
andmeid ja selle jätan vahele'
All subscriptions and profiles have been successfully imported: 'Kõikide tellimuste
ja profiilide import õnnestus'
All subscriptions have been successfully imported: 'Kõikide tellimuste õnnestus'
One or more subscriptions were unable to be imported: 'Ühte või enamat tellimust
ei õnnestunud importida'
Invalid subscriptions file: 'Vigane tellimuste fail'
@ -220,8 +245,10 @@ Settings:
edukalt eksporditud'
Unable to read file: 'Faili lugemine ei õnnestu'
Unable to write file: 'Faili kirjutamine ei õnnestu'
Unknown data key: ''
How do I import my subscriptions?: ''
Unknown data key: 'Tundmatu andmevõti'
How do I import my subscriptions?: 'Kuidas ma saan oma tellimusi importida?'
Manage Subscriptions: Halda tellimusi
Check for Legacy Subscriptions: Kontrolli pärandvormingus tellimuste olemasolu
Advanced Settings:
Advanced Settings: ''
Enable Debug Mode (Prints data to the console): ''
@ -244,9 +271,39 @@ Settings:
#& Yes
#& No
Distraction Free Settings:
Hide Active Subscriptions: Peida aktiivsed tellimused
Hide Live Chat: Peida veebivestlused
Hide Playlists: Peida esitusloendid
Hide Popular Videos: Peida enimvaadatud videod
Hide Trending Videos: Peida populaarsust koguvad videod
Hide Recommended Videos: Peida soovitatud videod
Hide Comment Likes: Peida kommentaaride meeldimised
Hide Channel Subscribers: Peida kanalite tellijad
Hide Video Likes And Dislikes: Peida videote meeldimiste ja mittemeeldimiste arvud
Hide Video Views: Peida videote vaatamiskordade arv
Distraction Free Settings: Seadista endale võimalikult rahulik videote vaatamine
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Võrguteavet
ei õnnestu leida. Kas sa oled puhverserveri ikka korralikult seadistanud?
City: Linn
Region: Piirkond
Country: Riik
Ip: IP-aadress
Your Info: Sinu andmed
Clicking on Test Proxy will send a request to: Puhverserveri testimisel saadame
päringu aadressile
Test Proxy: Testi puhverserverit
Proxy Port Number: Puhverserveri pordi number
Proxy Host: Puhverserveri aadress
Proxy Protocol: Puhverserveri protokoll
Enable Tor / Proxy: Kasuta Tor'i või puhverserverit
Proxy Settings: Puhverserveri seadistused
The app needs to restart for changes to take effect. Restart and apply change?: See
rakendus vajab muudatuste jõustamiseks uuesti käivitamist. Kas teeme seda nüüd?
About:
#On About page
About: ''
About: 'Rakenduse teave'
#& About
'This software is FOSS and released under the GNU Affero General Public License v3.0.': ''
@ -266,156 +323,215 @@ About:
Latest FreeTube News: ''
Email: E-post
Donate: Toeta meid
these people and projects: tänu nendele inimestele ja projektidele
FreeTube is made possible by: FreeTube loomine ja arendamine on olnud võimalik
Credits: Tänuavaldused
Translate: Tõlked
room rules: jututoa reeglitega
Please read the: Palun kindlasti tutvu
Chat on Matrix: Vestle meiega Matrix'i võrgus
Mastodon: Mikroblogiteenus Mastodon
Blog: Ajaveeb
Website: Veebisait
Please check for duplicates before posting: Enne uue veateate tegemist palun kontrolli,
kas sellest on juba meile teada antud
GitHub issues: Teata vigadest GitHub'i vahendusel
Report a problem: Vead ja probleemid
FAQ: KKK
FreeTube Wiki: FreeTube viki
Help: Abiteave
GitHub releases: Avaldatud versioonid leiad GitHub'ist
Downloads / Changelog: Allalaadimised ja muudatuste logi
View License: Vaata litsentsiteavet inglise keeles
Licensed under the AGPLv3: Avaldatud AGPLv3 litsentsi alusel
Source code: Lähtekood
Beta: beetaversioon
Profile:
Profile Select: ''
All Channels: ''
Profile Manager: ''
Create New Profile: ''
Edit Profile: ''
Color Picker: ''
Custom Color: ''
Profile Preview: ''
Create Profile: ''
Update Profile: ''
Make Default Profile: ''
Delete Profile: ''
Are you sure you want to delete this profile?: ''
All subscriptions will also be deleted.: ''
Profile could not be found: ''
Your profile name cannot be empty: ''
Profile has been created: ''
Profile has been updated: ''
Your default profile has been set to $: ''
Removed $ from your profiles: ''
Your default profile has been changed to your primary profile: ''
$ is now the active profile: ''
Subscription List: ''
Other Channels: ''
$ selected: ''
Select All: ''
Select None: ''
Delete Selected: ''
Add Selected To Profile: ''
No channel(s) have been selected: ''
Profile Select: 'Vali profiil'
All Channels: 'Kõik kanalid'
Profile Manager: 'Profiilihaldur'
Create New Profile: 'Loo uus profiil'
Edit Profile: 'Muuda profiili'
Color Picker: 'Vali värv'
Custom Color: 'Vali täpne värv'
Profile Preview: 'Profiili eelvaade'
Create Profile: 'Loo profiil'
Update Profile: 'Uuenda profiili'
Make Default Profile: 'Määra vaikimisi profiiliks'
Delete Profile: 'Kustuta profiil'
Are you sure you want to delete this profile?: 'Kas sa kindlasti soovid selle profiili
kustutada?'
All subscriptions will also be deleted.: 'Samaga kustutame ka kõik tellimused.'
Profile could not be found: 'Profiili ei leidunud'
Your profile name cannot be empty: 'Profiilil peab olema nimi'
Profile has been created: 'Profiili loomine õnnestus'
Profile has been updated: 'Profiili uuendamine õnnestus'
Your default profile has been set to $: 'Määrasin $ sinu vaikimisi profiiliks'
Removed $ from your profiles: 'Kustutasin $ sinu profiilide loendist'
Your default profile has been changed to your primary profile: 'Muutsin sinu esmase
profiili vaikimisi kasutatavaks profiiliks'
$ is now the active profile: '$ on nüüd kasutusel olev profiil'
Subscription List: 'Tellimuste loend'
Other Channels: 'Muud kanalid'
$ selected: '$ on valitud'
Select All: 'Vali kõik'
Select None: 'Ära vali mitte midagi'
Delete Selected: 'Kustuta valik'
Add Selected To Profile: 'Lisa valik profiilile'
No channel(s) have been selected: 'Sa pole kanaleid valinud'
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: ''
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: ''
: 'See on sinu algne profiil. Kas sa kindlasti soovid kustutada valitud kanalid?
Me kustutame nad sel juhul ka kõikidest profiilidest.'
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Kas
sa kindlasti soovid kustutada valitud kanalid? Sellega me ei kustuta neid teistest
profiilidest.'
#On Channel Page
Profile Filter: Sirvi profiile
Channel:
Subscriber: ''
Subscribers: ''
Subscribe: ''
Unsubscribe: ''
Channel has been removed from your subscriptions: ''
Removed subscription from $ other channel(s): ''
Added channel to your subscriptions: ''
Search Channel: ''
Your search results have returned 0 results: ''
Sort By: ''
Subscriber: 'Tellija'
Subscribers: 'Tellijad'
Subscribe: 'Telli'
Unsubscribe: 'Lõpeta tellimus'
Channel has been removed from your subscriptions: 'Kustutasin kanali sinu tellimustest'
Removed subscription from $ other channel(s): 'Kustutasin tellimuse ka $''st must
kanalist'
Added channel to your subscriptions: 'Lisasin kanali sinu tellimuste hulka'
Search Channel: 'Otsi kanalit'
Your search results have returned 0 results: 'Otsingul on 0 tulemust'
Sort By: 'Sortimise alus'
Videos:
Videos: ''
This channel does not currently have any videos: ''
Videos: 'Videod'
This channel does not currently have any videos: 'Sellel kanalik pole hetkel ühtegi
videot'
Sort Types:
Newest: ''
Oldest: ''
Most Popular: ''
Newest: 'Uusimad'
Oldest: 'Vanimad'
Most Popular: 'Kõike populaarsemad'
Playlists:
Playlists: ''
This channel does not currently have any playlists: ''
Playlists: 'Esitusloendid'
This channel does not currently have any playlists: 'Sellel kanalil pole hetkel
ühtegi esitusloendit'
Sort Types:
Last Video Added: ''
Newest: ''
Oldest: ''
Last Video Added: 'Viimati lisatud video'
Newest: 'Uusimad'
Oldest: 'Vanimad'
About:
About: ''
Channel Description: ''
Featured Channels: ''
About: 'Kanali teave'
Channel Description: 'Kanali kirjeldus'
Featured Channels: 'Soovitatud kanalid'
Video:
Mark As Watched: ''
Remove From History: ''
Video has been marked as watched: ''
Video has been removed from your history: ''
Open in YouTube: ''
Copy YouTube Link: ''
Open YouTube Embedded Player: ''
Copy YouTube Embedded Player Link: ''
Open in Invidious: ''
Copy Invidious Link: ''
View: ''
Views: ''
Loop Playlist: ''
Shuffle Playlist: ''
Reverse Playlist: ''
Play Next Video: ''
Play Previous Video: ''
Mark As Watched: 'Märgi vaadatuks'
Remove From History: 'Kustuta ajaloost'
Video has been marked as watched: 'Video on märgitud vaadatuks'
Video has been removed from your history: 'Video on kustutatud sinu vaatamiste ajaloost'
Open in YouTube: 'Ava YouTube''is'
Copy YouTube Link: 'Kopeeri YouTube''i link'
Open YouTube Embedded Player: 'Ava YouTube''i lõimitud meediamängija'
Copy YouTube Embedded Player Link: 'Kopeeri YouTube''i lõimitud meediamängija link'
Open in Invidious: 'Ava Invidious''e veebirakenduses'
Copy Invidious Link: 'Kopeeri Invidious''e veebirakenduse link'
View: 'Vaatamine'
Views: 'Vaatamist'
Loop Playlist: 'Korda esitusloendit'
Shuffle Playlist: 'Sega esitusloend'
Reverse Playlist: 'Pööra esitusloend tagurpidi'
Play Next Video: 'Esita järgmist videot'
Play Previous Video: 'Esita eelmist videot'
# Context is "X People Watching"
Watching: ''
Watched: ''
Autoplay: ''
Starting soon, please refresh the page to check again: ''
Watching: 'Vaatan'
Watched: 'Vaadatud'
Autoplay: 'Automaatne esitus'
Starting soon, please refresh the page to check again: 'Kuvamine algab varsti, vajadusel
värskenda uuesti kontrollimiseks lehte'
# As in a Live Video
Live: ''
Live Now: ''
Live Chat: ''
Enable Live Chat: ''
Live Chat is currently not supported in this build.: ''
'Chat is disabled or the Live Stream has ended.': ''
Live chat is enabled. Chat messages will appear here once sent.: ''
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': ''
Live: 'Otse eetris'
Live Now: 'Otse eetris'
Live Chat: 'Vestlus reaalajas'
Enable Live Chat: 'Luba reaalajas vestlust'
Live Chat is currently not supported in this build.: 'Reaalajas vestlus ei ole selles
versioonis toetatud.'
'Chat is disabled or the Live Stream has ended.': 'Reaalajas vestlus kas ei ole
toetatud või on otseetris edastus lõppenud.'
Live chat is enabled. Chat messages will appear here once sent.: 'Reaalajas vestlus
on kasutusel. Sõnumid on nähtaval kohe pärast saatmist.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Kui
kasutad Invidious''e veebiteenuse-põhist API''t, siis reaalajas vestlus ei ole
toetatud. Selleks on vajalik otseliidestus YouTube''ga.'
Published:
Jan: ''
Feb: ''
Mar: ''
Apr: ''
May: ''
Jun: ''
Jul: ''
Aug: ''
Sep: ''
Oct: ''
Nov: ''
Dec: ''
Second: ''
Seconds: ''
Minute: ''
Minutes: ''
Hour: ''
Hours: ''
Day: ''
Days: ''
Week: ''
Weeks: ''
Month: ''
Months: ''
Year: ''
Years: ''
Ago: ''
Upcoming: ''
Published on: ''
Jan: 'Jaan'
Feb: 'Veeb'
Mar: 'Mar'
Apr: 'Apr'
May: 'Mai'
Jun: 'Juuni'
Jul: 'Juuli'
Aug: 'Aug'
Sep: 'Sep'
Oct: 'Okt'
Nov: 'Nov'
Dec: 'Dets'
Second: 'Sekund'
Seconds: 'Sekundit'
Minute: 'Minut'
Minutes: 'Minutit'
Hour: 'Tund'
Hours: 'Tundi'
Day: 'Päev'
Days: 'Päeva'
Week: 'Nädal'
Weeks: 'Nädalat'
Month: 'Kuu'
Months: 'Kuud'
Year: 'Aasta'
Years: 'Aastat'
Ago: 'tagasi'
Upcoming: 'Esilinastus'
Published on: 'Avaldatud'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: ''
Publicationtemplate: '$ % tagasi'
#& Videos
Copy Invidious Channel Link: Kopeeri kanali link Invidious'e veebirakenduses
Open Channel in Invidious: Ava kanal Invidious'e veebirakenduses
Copy YouTube Channel Link: Kopeeri YouTube'i kanali link
Open Channel in YouTube: Ava kanal YouTube'is
Video has been removed from your saved list: Video on kustutatud sinu salvestatud
videote loendist
Video has been saved: Video on salvestatud
Save Video: Salvesta video
translated from English: tõlgitud inglise keelest
Started streaming on: Voogedastus algas
Streamed on: Voogedastatud
Audio:
High: Kõrge kvaliteet
Medium: Keskmine kvaliteet
Low: Madal kvaliteet
Best: Parim kvaliteet
audio only: vaid helivoog
video only: vaid videovoog
Download Video: Laadi video alla
Videos:
#& Sort By
Sort By:
Newest: ''
Oldest: ''
Newest: 'Uusim'
Oldest: 'Vanim'
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: ''
Videos: ''
View: ''
Views: ''
Last Updated On: ''
View Full Playlist: 'Näita kogu esitusloendit'
Videos: 'Videod'
View: 'Vaata'
Views: 'vaatamist'
Last Updated On: 'Viimati uuendatud'
Share Playlist:
Share Playlist: ''
Copy YouTube Link: ''
Open in YouTube: ''
Copy Invidious Link: ''
Open in Invidious: ''
Share Playlist: 'Jaga esitusloendit'
Copy YouTube Link: 'Kopeeri YouTube''i link'
Open in YouTube: 'Ava YouTube''is'
Copy Invidious Link: 'Kopeeri Invidious''e veebirakenduse link'
Open in Invidious: 'Ava Invidious''e veebirakenduses'
# On Video Watch Page
#* Published
@ -479,3 +595,5 @@ Canceled next video autoplay: 'Tühistasin järgmise video automaatse esituse'
Yes: 'Jah'
No: 'Ei'
More: Veel
Open New Window: Ava uus aken

540
static/locales/eu.yaml Normal file
View File

@ -0,0 +1,540 @@
# Put the name of your locale in the same language
Locale Name: 'Euskera'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Zati hau ez dago prest oraindik. Itzuli aurrerago aurrerapenak egin direnean.
# Webkit Menu Bar
File: ''
Quit: ''
Edit: ''
Undo: ''
Redo: ''
Cut: ''
Copy: ''
Paste: ''
Delete: ''
Select all: ''
Reload: ''
Force Reload: ''
Toggle Developer Tools: ''
Actual size: ''
Zoom in: ''
Zoom out: ''
Toggle fullscreen: ''
Window: ''
Minimize: ''
Close: ''
Back: ''
Forward: ''
Version $ is now available! Click for more details: ''
Download From Site: ''
A new blog is now available, $. Click to view more: ''
# Search Bar
Search / Go to URL: ''
# In Filter Button
Search Filters:
Search Filters: ''
Sort By:
Sort By: ''
Most Relevant: ''
Rating: ''
Upload Date: ''
View Count: ''
Time:
Time: ''
Any Time: ''
Last Hour: ''
Today: ''
This Week: ''
This Month: ''
This Year: ''
Type:
Type: ''
All Types: ''
Videos: ''
Channels: ''
#& Playlists
Duration:
Duration: ''
All Durations: ''
Short (< 4 minutes): ''
Long (> 20 minutes): ''
# On Search Page
Search Results: ''
Fetching results. Please wait: ''
Fetch more results: ''
There are no more results for this search: ''
# Sidebar
Subscriptions:
# On Subscriptions Page
Subscriptions: ''
Latest Subscriptions: ''
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: ''
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': ''
'Getting Subscriptions. Please wait.': ''
Refresh Subscriptions: ''
Load More Videos: ''
More: ''
Trending: ''
Most Popular: ''
Playlists: ''
User Playlists:
Your Playlists: ''
Playlist Message: ''
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: ''
History:
# On History Page
History: ''
Watch History: ''
Your history list is currently empty.: ''
Settings:
# On Settings Page
Settings: ''
The app needs to restart for changes to take effect. Restart and apply change?: ''
General Settings:
General Settings: ''
Check for Updates: ''
Check for Latest Blog Posts: ''
Fallback to Non-Preferred Backend on Failure: ''
Enable Search Suggestions: ''
Default Landing Page: ''
Locale Preference: ''
Preferred API Backend:
Preferred API Backend: ''
Local API: ''
Invidious API: ''
Video View Type:
Video View Type: ''
Grid: ''
List: ''
Thumbnail Preference:
Thumbnail Preference: ''
Default: ''
Beginning: ''
Middle: ''
End: ''
'Invidious Instance (Default is https://invidious.snopyta.org)': ''
View all Invidious instance information: ''
Region for Trending: ''
#! List countries
Theme Settings:
Theme Settings: ''
Match Top Bar with Main Color: ''
Expand Side Bar by Default: ''
Disable Smooth Scrolling: ''
UI Scale: ''
Base Theme:
Base Theme: ''
Black: ''
Dark: ''
Light: ''
Main Color Theme:
Main Color Theme: ''
Red: ''
Pink: ''
Purple: ''
Deep Purple: ''
Indigo: ''
Blue: ''
Light Blue: ''
Cyan: ''
Teal: ''
Green: ''
Light Green: ''
Lime: ''
Yellow: ''
Amber: ''
Orange: ''
Deep Orange: ''
Secondary Color Theme: ''
#* Main Color Theme
Player Settings:
Player Settings: ''
Force Local Backend for Legacy Formats: ''
Play Next Video: ''
Turn on Subtitles by Default: ''
Autoplay Videos: ''
Proxy Videos Through Invidious: ''
Autoplay Playlists: ''
Enable Theatre Mode by Default: ''
Playlist Next Video Interval: ''
Default Volume: ''
Default Playback Rate: ''
Default Video Format:
Default Video Format: ''
Dash Formats: ''
Legacy Formats: ''
Audio Formats: ''
Default Quality:
Default Quality: ''
Auto: ''
144p: ''
240p: ''
360p: ''
480p: ''
720p: ''
1080p: ''
1440p: ''
4k: ''
8k: ''
Privacy Settings:
Privacy Settings: ''
Remember History: ''
Save Watched Progress: ''
Automatically Remove Video Meta Files: ''
Clear Search Cache: ''
Are you sure you want to clear out your search cache?: ''
Search cache has been cleared: ''
Remove Watch History: ''
Are you sure you want to remove your entire watch history?: ''
Watch history has been cleared: ''
Remove All Subscriptions / Profiles: ''
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: ''
Subscription Settings:
Subscription Settings: ''
Hide Videos on Watch: ''
Fetch Feeds from RSS: ''
Manage Subscriptions: ''
Distraction Free Settings:
Distraction Free Settings: ''
Hide Video Views: ''
Hide Video Likes And Dislikes: ''
Hide Channel Subscribers: ''
Hide Comment Likes: ''
Hide Recommended Videos: ''
Hide Trending Videos: ''
Hide Popular Videos: ''
Hide Playlists: ''
Hide Live Chat: ''
Hide Active Subscriptions: ''
Data Settings:
Data Settings: ''
Select Import Type: ''
Select Export Type: ''
Import Subscriptions: ''
Import FreeTube: ''
Import YouTube: ''
Import NewPipe: ''
Check for Legacy Subscriptions: ''
Export Subscriptions: ''
Export FreeTube: ''
Export YouTube: ''
Export NewPipe: ''
Import History: ''
Export History: ''
Profile object has insufficient data, skipping item: ''
All subscriptions and profiles have been successfully imported: ''
All subscriptions have been successfully imported: ''
One or more subscriptions were unable to be imported: ''
Invalid subscriptions file: ''
This might take a while, please wait: ''
Invalid history file: ''
Subscriptions have been successfully exported: ''
History object has insufficient data, skipping item: ''
All watched history has been successfully imported: ''
All watched history has been successfully exported: ''
Unable to read file: ''
Unable to write file: ''
Unknown data key: ''
How do I import my subscriptions?: ''
Manage Subscriptions: ''
Proxy Settings:
Proxy Settings: ''
Enable Tor / Proxy: ''
Proxy Protocol: ''
Proxy Host: ''
Proxy Port Number: ''
Clicking on Test Proxy will send a request to: ''
Test Proxy: ''
Your Info: ''
Ip: ''
Country: ''
Region: ''
City: ''
Error getting network information. Is your proxy configured properly?: ''
About:
#On About page
About: ''
Beta: ''
Source code: ''
Licensed under the AGPLv3: ''
View License: ''
Downloads / Changelog: ''
GitHub releases: ''
Help: ''
FreeTube Wiki: ''
FAQ: ''
Report a problem: ''
GitHub issues: ''
Please check for duplicates before posting: ''
Website: ''
Blog: ''
Email: ''
Mastodon: ''
Chat on Matrix: ''
Please read the: ''
room rules: ''
Translate: ''
Credits: ''
FreeTube is made possible by: ''
these people and projects: ''
Donate: ''
Profile:
Profile Select: ''
Profile Filter: ''
All Channels: ''
Profile Manager: ''
Create New Profile: ''
Edit Profile: ''
Color Picker: ''
Custom Color: ''
Profile Preview: ''
Create Profile: ''
Update Profile: ''
Make Default Profile: ''
Delete Profile: ''
Are you sure you want to delete this profile?: ''
All subscriptions will also be deleted.: ''
Profile could not be found: ''
Your profile name cannot be empty: ''
Profile has been created: ''
Profile has been updated: ''
Your default profile has been set to $: ''
Removed $ from your profiles: ''
Your default profile has been changed to your primary profile: ''
$ is now the active profile: ''
Subscription List: ''
Other Channels: ''
$ selected: ''
Select All: ''
Select None: ''
Delete Selected: ''
Add Selected To Profile: ''
No channel(s) have been selected: ''
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: ''
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: ''
#On Channel Page
Channel:
Subscriber: ''
Subscribers: ''
Subscribe: ''
Unsubscribe: ''
Channel has been removed from your subscriptions: ''
Removed subscription from $ other channel(s): ''
Added channel to your subscriptions: ''
Search Channel: ''
Your search results have returned 0 results: ''
Sort By: ''
Videos:
Videos: ''
This channel does not currently have any videos: ''
Sort Types:
Newest: ''
Oldest: ''
Most Popular: ''
Playlists:
Playlists: ''
This channel does not currently have any playlists: ''
Sort Types:
Last Video Added: ''
Newest: ''
Oldest: ''
About:
About: ''
Channel Description: ''
Featured Channels: ''
Video:
Mark As Watched: ''
Remove From History: ''
Video has been marked as watched: ''
Video has been removed from your history: ''
Save Video: ''
Video has been saved: ''
Video has been removed from your saved list: ''
Open in YouTube: ''
Copy YouTube Link: ''
Open YouTube Embedded Player: ''
Copy YouTube Embedded Player Link: ''
Open in Invidious: ''
Copy Invidious Link: ''
Open Channel in YouTube: ''
Copy YouTube Channel Link: ''
Open Channel in Invidious: ''
Copy Invidious Channel Link: ''
View: ''
Views: ''
Loop Playlist: ''
Shuffle Playlist: ''
Reverse Playlist: ''
Play Next Video: ''
Play Previous Video: ''
# Context is "X People Watching"
Watching: ''
Watched: ''
Autoplay: ''
Starting soon, please refresh the page to check again: ''
# As in a Live Video
Live: ''
Live Now: ''
Live Chat: ''
Enable Live Chat: ''
Live Chat is currently not supported in this build.: ''
'Chat is disabled or the Live Stream has ended.': ''
Live chat is enabled. Chat messages will appear here once sent.: ''
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': ''
Download Video: ''
video only: ''
audio only: ''
Audio:
Low: ''
Medium: ''
High: ''
Best: ''
Published:
Jan: ''
Feb: ''
Mar: ''
Apr: ''
May: ''
Jun: ''
Jul: ''
Aug: ''
Sep: ''
Oct: ''
Nov: ''
Dec: ''
Second: ''
Seconds: ''
Minute: ''
Minutes: ''
Hour: ''
Hours: ''
Day: ''
Days: ''
Week: ''
Weeks: ''
Month: ''
Months: ''
Year: ''
Years: ''
Ago: ''
Upcoming: ''
Published on: ''
Streamed on: ''
Started streaming on: ''
translated from English: ''
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: ''
#& Videos
Videos:
#& Sort By
Sort By:
Newest: ''
Oldest: ''
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: ''
Videos: ''
View: ''
Views: ''
Last Updated On: ''
Share Playlist:
Share Playlist: ''
Copy YouTube Link: ''
Open in YouTube: ''
Copy Invidious Link: ''
Open in Invidious: ''
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: ''
Change Format:
Change Video Formats: ''
Use Dash Formats: ''
Use Legacy Formats: ''
Use Audio Formats: ''
Dash formats are not available for this video: ''
Audio formats are not available for this video: ''
Share:
Share Video: ''
Include Timestamp: ''
Copy Link: ''
Open Link: ''
Copy Embed: ''
Open Embed: ''
# On Click
Invidious URL copied to clipboard: ''
Invidious Embed URL copied to clipboard: ''
Invidious Channel URL copied to clipboard: ''
YouTube URL copied to clipboard: ''
YouTube Embed URL copied to clipboard: ''
YouTube Channel URL copied to clipboard: ''
Mini Player: ''
Comments:
Comments: ''
Click to View Comments: ''
Getting comment replies, please wait: ''
There are no more comments for this video: ''
Show Comments: ''
Hide Comments: ''
Sort by: ''
Top comments: ''
Newest first: ''
# Context: View 10 Replies, View 1 Reply
View: ''
Hide: ''
Replies: ''
Reply: ''
There are no comments available for this video: ''
Load More Comments: ''
No more comments available: ''
Up Next: ''
#Tooltips
Tooltips:
General Settings:
Preferred API Backend: ''
Fallback to Non-Preferred Backend on Failure: ''
Thumbnail Preference: ''
Invidious Instance: ''
Region for Trending: ''
Player Settings:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
Subscription Settings:
Fetch Feeds from RSS: ''
Privacy Settings:
Remove Video Meta Files: ''
# Toast Messages
Local API Error (Click to copy): ''
Invidious API Error (Click to copy): ''
Falling back to Invidious API: ''
Falling back to the local API: ''
This video is unavailable because of missing formats. This can happen due to country unavailability.: ''
Subscriptions have not yet been implemented: ''
Loop is now disabled: ''
Loop is now enabled: ''
Shuffle is now disabled: ''
Shuffle is now enabled: ''
The playlist has been reversed: ''
Playing Next Video: ''
Playing Previous Video: ''
Playing Next Video Interval: ''
Canceled next video autoplay: ''
'The playlist has ended. Enable loop to continue playing': ''
Yes: ''
No: ''

View File

@ -31,17 +31,17 @@ Forward: 'Eteenpäin'
Search / Go to URL: 'Etsi / Mene osoitteeseen'
# In Filter Button
Search Filters:
Search Filters: 'Etsi suodattimia'
Search Filters: 'Hakusuodattimet'
Sort By:
Sort By: 'Lajitteluperuste'
Most Relevant: 'Osuvin'
Rating: 'Arvosana'
Rating: 'Arvio'
Upload Date: 'Latauspäivämäärä'
View Count: 'Katselumäärä'
View Count: 'Näyttökerrat'
Time:
Time: 'Aika'
Any Time: 'Milloin tahansa'
Last Hour: 'Edellinen tunti'
Last Hour: 'Viime tunti'
Today: 'Tänään'
This Week: 'Tällä viikolla'
This Month: 'Tässä kuussa'
@ -62,6 +62,7 @@ Search Filters:
Fetching results. Please wait: 'Haetaan tuloksia. Odota hetki'
Fetch more results: 'Hae lisää tuloksia'
# Sidebar
There are no more results for this search: Ei lisää tuloksia tällä haulla
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Tilaukset'
@ -79,6 +80,12 @@ Most Popular: 'Suosituimmat'
Playlists: 'Soittolistat'
User Playlists:
Your Playlists: 'Omat soittolistat'
Playlist Message: Tämä sivu ei kuvasta täysin toimivia soittolistoja. Se listaa
vain tallentamasi tai tykkäämäsi videot. Kun tämä on valmis, kaikki täällä olevat
videot siirretään soittolistaan "Tykkäykset".
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Et
ole tallentanut videoita. Paina "Tallenna" painiketta videon kulmassa tallentaaksesi
sen tänne
History:
# On History Page
History: 'Historia'
@ -114,6 +121,8 @@ Settings:
#! List countries
Check for Latest Blog Posts: Tarkista tuoreimmat blogimerkinnät
Check for Updates: Tarkista päivitykset
View all Invidious instance information: Invidious instancen tiedot
System Default: Järjestelmän oletus
Theme Settings:
Theme Settings: 'Teema-asetukset'
Match Top Bar with Main Color: 'Käytä pääväriä yläpalkissa'
@ -175,6 +184,7 @@ Settings:
1440p: '1440p'
4k: '4K'
8k: '8K'
Next Video Interval: Seuraavan videon väli
Subscription Settings:
Subscription Settings: 'Tilausasetukset'
Hide Videos on Watch: 'Piilota katsotut videot'
@ -229,6 +239,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Haluatko
cvarmasti poistaa kaikki tilaukset ja profiilit. Tätä toimintoa ei voi perua.
Remove All Subscriptions / Profiles: Poista kaikki tilaukset / profiilit
Automatically Remove Video Meta Files: Poista videoiden metadata automaattisesti
Data Settings:
How do I import my subscriptions?: Kuinka voin tuoda tilaukseni?
Unknown data key: Tuntematon data-avain
@ -265,6 +276,7 @@ Settings:
Select Import Type: Valitse Tuonnin tyyppi
Data Settings: Data-asetukset
Check for Legacy Subscriptions: Tarkista vanhat tilaukset
Manage Subscriptions: Hallitse tilauksia
Distraction Free Settings:
Hide Live Chat: Piilota Live-keskustelu
Hide Popular Videos: Piilota suositut videot
@ -275,9 +287,25 @@ Settings:
Hide Video Likes And Dislikes: Piilota videon tykkäykset
Distraction Free Settings: Häiriöttömän tilan asetukset
Hide Video Views: Piilota videon katselukerrat
Hide Active Subscriptions: Piilota aktiiviset tilaukset
Hide Playlists: Piilota soittolistat
The app needs to restart for changes to take effect. Restart and apply change?: Sovellus
on käynnistettävä uudelleen, jotta sovellukset tulevat voimaan. Käynnistetäänkö
on käynnistettävä uudelleen, jotta muutokset tulevat voimaan. Käynnistetäänkö
uudelleen?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Virhe verkkoyhteyden
tietojen saamisessa. Onko välityspalvelin määritetty oikein?
Ip: Ip-osoite
Your Info: Tietosi
Country: Valtio
Test Proxy: Testaa välityspalvelin
Region: Alue
City: Kaupunki
Proxy Port Number: Välityspalvelimen portin numero
Proxy Host: Välityspalvelin
Proxy Settings: Välityspalvelimen asetukset
Enable Tor / Proxy: Ota käyttöön Tor/välityspalvelin
Proxy Protocol: Välityspalvelimen protokolla
About:
#On About page
About: 'Tietoja'
@ -307,6 +335,30 @@ About:
Latest FreeTube News: 'Viimeisimmät Freetube-uutiset'
#On Channel Page
GitHub issues: GitHub-ongelmat
Report a problem: Ilmoita ongelmasta
FAQ: UKK
Blog: Blogi
Email: Sähköposti
Licensed under the AGPLv3: Lisensoitu AGPLv3:n alle
Chat on Matrix: Matrix
these people and projects: nämä henkilöt ja projektit
room rules: huoneen säännöt
Please read the: Lue
View License: Katso lisenssi
Please check for duplicates before posting: Tarkista kopioiden varalta ennen julkaisua
Website: Verkkosivu
Mastodon: Mastodon
Translate: Käännös
Credits: Kiitokset
Help: Apua
FreeTube is made possible by: FreeTuben mahdollistavat
GitHub releases: GitHub julkaisut
Downloads / Changelog: Lataukset/muutosloki
Beta: Beta
FreeTube Wiki: FreeTube Wiki
Donate: Lahjoita
Source code: Lähdekoodi
Channel:
Subscriber: 'Tilaaja'
Subscribers: 'Tilaajat'
@ -390,7 +442,7 @@ Video:
Years: 'Vuotta'
Ago: 'sitten'
Upcoming: 'Ensiesitys'
Minutes: Minuutit
Minutes: Minuuttia
Minute: Minuutti
Published on: 'Julkaistu'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
@ -449,12 +501,12 @@ Playlist:
Toggle Theatre Mode: 'Teatteritila'
Change Format:
Change Video Formats: 'Vaihda videoformaattia'
Use Dash Formats: 'Käytä Dash-formaatteja'
Use Dash Formats: 'Käytä DASH-formaatteja'
Use Legacy Formats: 'Käytä Legacy-formaatteja'
Use Audio Formats: 'Käytä ääniformaatteja'
Audio formats are not available for this video: Audioformaatit eivät ole saatavilla
tähän videoon
Dash formats are not available for this video: Dash-formaatit eivät ole saatavilla
Dash formats are not available for this video: DASH-formaatit eivät ole saatavilla
tähän videoon
Share:
Share Video: 'Jaa video'
@ -521,7 +573,7 @@ Profile:
Your default profile has been set to $: Oletusprofiiliksesi on määritetty $
Profile has been updated: Profiili on päivitetty
Profile has been created: Profiili on luotu
Your profile name cannot be empty: Profiilisi nimi ei voi olla tyhjä
Your profile name cannot be empty: Profiililla täytyy olla nimi
Profile could not be found: Profiilia ei löydetty
All subscriptions will also be deleted.: Kaikki tilaukset tullaan myös poistamaan.
Are you sure you want to delete this profile?: Haluatko varmasti poistaa tämän profiilin?
@ -542,7 +594,7 @@ Profile:
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: Tämä on ensisijainen profiilisi. Haluatko poistaa valitut kanavat? Kanavat poistetaan
kaikista profiileista joissa ne ovat.
myös muista profiileista.
No channel(s) have been selected: Kanavia ei ole valittu
Add Selected To Profile: Lisää valitut profiiliin
Delete Selected: Poista valitut
@ -551,8 +603,9 @@ Profile:
$ selected: $ valittu
Other Channels: Muut kanavat
Subscription List: Tilauslista
Profile Filter: Profiilisuodatin
Version $ is now available! Click for more details: Versio $ on nyt saatavilla! Napsauta
lisätietoja
saadaksesi lisätietoja
This video is unavailable because of missing formats. This can happen due to country unavailability.: Tämä
video ei ole saatavilla puuttuvien formaattien takia. Tämä voi tapahtua koska video
ei ole saatavilla maassasi.
@ -563,25 +616,32 @@ Tooltips:
General Settings:
Preferred API Backend: Valitse taustaohjelma, jota Freetube käyttää datan noutamiseen.
Paikallinen API on ohjelmiston sisäinen. Invidious API vaatii yhteyden Invidious-palvelimeen.
Region for Trending: Valinta sallii sinun valita minkä maan Nousevat videot sinulle
näytetään. Kaikki listatut maat eivät ole YouTuben tukemia
Region for Trending: Valitsee minkä maan Nousevat videot sinulle näytetään. Kaikki
listatut maat eivät ole YouTuben tukemia.
Invidious Instance: Invidious instanssi jota Freetube käyttää. Tyhjennä kenttä
nähdäksesi listan julkisista instansseista
nähdäksesi listan julkisista instansseista.
Thumbnail Preference: Kaikki pikkukuvat Freetubessa korvataan ruudulla videosta
alkuperäisen pikkukuvan sijaan
alkuperäisen pikkukuvan sijaan.
Fallback to Non-Preferred Backend on Failure: Kun valitsemasi API kohtaa ongelman,
Freetube yrittää automaattisestia käyttää toissijaista vaihtoehtoa
Freetube yrittää automaattisestia käyttää toissijaista vaihtoehtoa.
Subscription Settings:
Fetch Feeds from RSS: Kun valittuna, FreeTube käyttää RSS-syötettä oletusmetodin
sijaan tilauslistasi hakemisessa. RSS on nopeampi ja ehkäisee IP-estoa, mutta
ei anna tietoja kuten videon kesto tai livetila
ei anna tietoja, kuten videon kesto tai livetila
Player Settings:
Default Video Format: Aseta videon toistamisessa käytätettävä formaatti. Dash-formaatit
toistavat korkealaatuisempia videoita. Legacy-formaatit ovvat rajoitettu 720p-resoluutioon,
mutta kkäyttävät väheämmän kaistaa. Audioformaatit ovat vain äänistriimeihin
Default Video Format: Aseta videon toistamisessa käytätettävä formaatti. DASH-formaatit
toistavat korkealaatuisempia videoita. Legacy-formaatit ovat rajoitettu 720p-resoluutioon,
mutta käyttävät vähemmän dataa. Audioformaatit ovat vain äänistriimeihin
Proxy Videos Through Invidious: Yhdistää Invidious-palvelimeen suoran YouTuben-yhteyden
sijaan. Ohittaa API-valinnan
sijaan. Ohittaa API-valinnan.
Force Local Backend for Legacy Formats: Toimii vain kun Invidious API on oletuksena.
Kun valittuna, paikallinen API käyttää vanhoja formaatteja Invidiousin käyttämien
sijaan. Tämä auttaa, jos Invidiousin palauttamat videot eivät toimi maarajoituksien
takia
takia.
More: Lisää
Playing Next Video Interval: Seuraava video alkaa. Klikkaa peruuttaaksesi. |Seuraava
video alkaa {nextVideoInterval} sekunnin kuluttua. Klikkaa peruuttaaksesi. | Seuraava
video alkaa {nextVideoInterval} sekunnin kuluttua. Klikkaa peruuttaaksesi.
Hashtags have not yet been implemented, try again later: Hashtageja ei vielä ole lisätty,
yritä uudelleen myöhemmin.
Open New Window: Avaa uusi ikkuna

View File

@ -91,7 +91,7 @@ User Playlists:
Playlist Message: Cette page ne reflète pas les listes de lecture entièrement fonctionnelles.
Elle ne répertorie que les vidéos que vous avez enregistrées ou mises en favoris.
Une fois le travail terminé, toutes les vidéos actuellement présentes ici seront
migrées vers une liste de lecture «Favoris».
migrées vers une liste de lecture « Favoris ».
History:
# On History Page
History: 'Historique'
@ -129,6 +129,7 @@ Settings:
Check for Updates: Vérifier les mises à jour
View all Invidious instance information: Voir les informations de toutes les instances
Invidious
System Default: Valeur par défaut du système
Theme Settings:
Theme Settings: 'Paramètres du thème'
Match Top Bar with Main Color: 'Faire correspondre la barre supérieure à la couleur
@ -176,7 +177,7 @@ Settings:
Default Playback Rate: 'Vitesse de lecture par défaut'
Default Video Format:
Default Video Format: 'Format de vidéo par défaut'
Dash Formats: 'Format Dash'
Dash Formats: 'Format DASH'
Legacy Formats: 'Format Legacy'
Audio Formats: 'Format Audio'
Default Quality:
@ -191,6 +192,9 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Intervalle de la prochaine vidéo dans la liste de
lecture
Next Video Interval: Intervalle vidéo suivante
Subscription Settings:
Subscription Settings: 'Paramètres des abonnements'
Hide Videos on Watch: 'Masquer les vidéos visionnées'
@ -247,6 +251,8 @@ Settings:
sûr(e) de vouloir supprimer tous les abonnements et les profils ? Cette action
est définitive.
Remove All Subscriptions / Profiles: Supprimer tous les Abonnements / Profils
Automatically Remove Video Meta Files: Suppression automatique des MétaFichiers
vidéo
Data Settings:
How do I import my subscriptions?: Comment importer mes abonnements ?
Subscriptions have been successfully exported: Les abonnements ont été exportés
@ -292,12 +298,13 @@ Settings:
Hide Comment Likes: Masquer les J'aime dans les commentaires
Hide Channel Subscribers: Masquer le nombre d'abonnés des chaînes
Hide Video Views: Masquer les vues des vidéos
Hide Live Chat: Masquer le chat en direct
Hide Live Chat: Masquer le tchat en direct
Hide Popular Videos: Masquer les vidéos populaires
Hide Trending Videos: Masquer les tendances
Hide Recommended Videos: Masquer les vidéos recommandées
Distraction Free Settings: Mode sans distraction
Hide Active Subscriptions: Masquer les abonnements actifs
Hide Playlists: Masquer les listes de lecture
The app needs to restart for changes to take effect. Restart and apply change?: L'application
doit être redémarrée pour que les changements prennent effet. Redémarrer et appliquer
les changements ?
@ -318,6 +325,13 @@ Settings:
Proxy Protocol: Protocole du proxy
Enable Tor / Proxy: Activer Tor / Proxy
Proxy Settings: Paramètres du proxy
SponsorBlock Settings:
Notify when sponsor segment is skipped: Notification lorsqu'un segment sponsorisé
est ignoré
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': URL de l'API SponsorBlock
(la valeur par défaut est https://sponsor.ajay.app)
Enable SponsorBlock: Activer SponsorBlock
SponsorBlock Settings: Paramètres de SponsorBlock
About:
#On About page
About: 'À propos'
@ -353,7 +367,7 @@ About:
#On Channel Page
Channel Rules: Règles du salon
Website: Site internet
Website: Site web
Source Code: Code source
Release Notes: Notes de version
Email: Courriel
@ -370,7 +384,7 @@ About:
Donate: Faire un don
Useful Links: Liens utiles
Translate: Aidez-nous à traduire FreeTube
Chat on Matrix: Chatter sur Matrix
Chat on Matrix: Discuter sur Matrix
Mastodon: Mastodon
Report a problem: Signaler un problème
View License: Voir la license
@ -381,7 +395,7 @@ About:
room rules: règles du salon
Please read the: Veuillez lire les
Please check for duplicates before posting: Veuillez vérifier s'il y a des doublons
avant de poster
avant de publier
GitHub issues: Les problèmes identifiés par la communauté sur GitHub
FreeTube Wiki: Wiki de FreeTube
GitHub releases: Les différentes versions de FreeTube disponibles sur GitHub
@ -509,6 +523,15 @@ Video:
enregistrée
Video has been saved: La vidéo a été enregistrée
Save Video: Enregistrer la vidéo
translated from English: traduit de langlais
Sponsor Block category:
music offtopic: musique hors sujet
interaction: interaction
sponsor: sponsor
self-promotion: autopromotion
outro: outro
intro: intro
Skipped segment: Segment ignoré
Videos:
#& Sort By
Sort By:
@ -536,12 +559,12 @@ Playlist:
Toggle Theatre Mode: 'Mode Cinéma'
Change Format:
Change Video Formats: 'Changer le format de la vidéo'
Use Dash Formats: 'Utiliser le format Dash'
Use Dash Formats: 'Utiliser le format DASH'
Use Legacy Formats: 'Utiliser le format Legacy'
Use Audio Formats: 'Utiliser le format Audio'
Audio formats are not available for this video: Le format Audio n'est pas disponible
pour cette vidéo
Dash formats are not available for this video: Le format Dash n'est pas disponible
Dash formats are not available for this video: Le format DASH n'est pas disponible
pour cette vidéo
Share:
Share Video: 'Partager la vidéo'
@ -647,6 +670,7 @@ Profile:
Select All: Tout sélectionner
$ selected: $ sélectionné(s)
Other Channels: Autres chaînes
Profile Filter: Filtre de profil
The playlist has been reversed: La liste de lecture a été inversée
A new blog is now available, $. Click to view more: Un nouveau billet est maintenant
disponible, $. Cliquez pour en savoir plus
@ -664,29 +688,43 @@ Tooltips:
comme la durée de la vidéo ou le statut en direct
Player Settings:
Default Video Format: Définir les formats utilisés lors de la lecture d'une vidéo.
Les formats Dash peuvent être lus en qualité supérieure. Les formats Legacy
Les formats DASH peuvent être lus en qualité supérieure. Les formats Legacy
sont limités à un maximum de 720p mais utilisent moins de bande passante. Les
formats audio sont des flux audio uniquement
formats audio sont des flux audio uniquement.
Proxy Videos Through Invidious: Se connectera à Invidious pour lire des vidéos
au lieu d'établir une connexion directe avec YouTube. Remplace les préférences
de l'API
de l'API.
Force Local Backend for Legacy Formats: Ne fonctionne que lorsque l'API Invidious
est activée par défaut. Lorsqu'elle est activée, l'API locale s'exécute et utilise
les formats Legacy renvoyés par celle-ci au lieu de ceux renvoyés par Invidious.
Utile lorsque les vidéos renvoyées par Invidious ne sont pas lues en raison
de restrictions pays
de restrictions pays.
General Settings:
Invidious Instance: L'instance Invidious à laquelle FreeTube se connectera pour
les appels d'API. Effacez l'instance actuelle pour voir une liste d'instances
publiques parmi lesquelles choisir
publiques parmi lesquelles choisir.
Thumbnail Preference: Toutes les miniatures de FreeTube seront remplacées par
une image de la vidéo au lieu de la vignette par défaut
une image de la vidéo au lieu de la vignette par défaut.
Fallback to Non-Preferred Backend on Failure: Lorsque votre API préférée a un
problème, FreeTube tentera automatiquement d'utiliser votre API non préférée
comme méthode de secours lorsqu'elle est activée
comme méthode de secours lorsqu'elle est activée.
Preferred API Backend: Choisissez le backend que FreeTube utilise pour obtenir
les données. L'API locale est un extracteur intégré. L'API Invidious nécessite
un serveur Invidious pour se connecter.
Region for Trending: Ceci vous permet de choisir les vidéos tendance du pays que
vous souhaitez afficher. Attention, certains pays affichés ne sont pas pris
en charge par YouTube
en charge par YouTube.
Privacy Settings:
Remove Video Meta Files: Lorsqu'il est activé, FreeTube supprime automatiquement
les MétaFichiers créés pendant la lecture de la vidéo, dès que la page de la
vidéo est quittée.
More: Plus
Playing Next Video Interval: Lecture de la prochaine vidéo en un rien de temps. Cliquez
pour annuler. | Lecture de la prochaine vidéo dans {nextVideoInterval} seconde.
Cliquer pour annuler. | Lecture de la vidéo suivante dans {l'intervalle vidéo suivant}
secondes. Cliquer pour annuler.
Hashtags have not yet been implemented, try again later: Les hashtags n'ont pas encore
été implémentés, réessayez plus tard
Unknown YouTube url type, cannot be opened in app: Type durl YouTube inconnu, ne
peut pas être ouvert dans lapplication
Open New Window: Ouvrir une nouvelle fenêtre

View File

@ -171,7 +171,7 @@ Settings:
Default Playback Rate: 'ברירת המחדל למהירות הצפייה'
Default Video Format:
Default Video Format: 'תצורת הסרטונים כברירת־המחדל'
Dash Formats: 'תצורות Dash'
Dash Formats: 'תצורות DASH'
Legacy Formats: 'תצורות מיושנות'
Audio Formats: 'תצורות שמע'
Default Quality:
@ -186,6 +186,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: מרווח זמן לפני ניגון הסרטון הבא בפלייליסט
Next Video Interval: משך הסרטון הבא
Privacy Settings:
Privacy Settings: 'הגדרות פרטיות'
Remember History: 'זכור את היסטוריית הצפייה'
@ -201,6 +203,7 @@ Settings:
Remove All Subscriptions / Profiles: 'מחק את כל המנויים / פרופילים'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'האם
אתם בטוחים שאתם רוצים למחוק כל את המנויים והפרופילים? פעולה זו היא לא הפיכה.'
Automatically Remove Video Meta Files: להסיר אוטומטית קובצי נתוני על של הסרטון
Subscription Settings:
Subscription Settings: 'הגדרות מנויים'
Hide Videos on Watch: 'הסתר סרטונים לאחר הצפייה'
@ -281,6 +284,7 @@ Settings:
Distraction Free Settings: הגדרות להשבתת הסחות
Hide Video Views: הסתרת תצוגות סרטונים
Hide Active Subscriptions: הסתרת מינויים פעילים
Hide Playlists: הסתרת פלייליסטים
The app needs to restart for changes to take effect. Restart and apply change?: צריך
להפעיל את היישומון מחדש כדי שהשינויים ייכנסו לתוקף. להפעיל מחדש ולהחיל את השינוי?
Proxy Settings:
@ -401,6 +405,7 @@ Profile:
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'האם
אתם בטוחים שאתם רוצים למחוק את הערוצים שבחרתם? הערוצים לא יימחקו משאר הפרופילים.'
#On Channel Page
Profile Filter: מסנן פרופילים
Channel:
Subscriber: 'מנוי'
Subscribers: 'מנויים'
@ -497,7 +502,7 @@ Video:
Upcoming: 'שידור הבכורה ישודר ב־'
Published on: 'פורסם'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'לפני $ %'
Publicationtemplate: 'לפני $ %'
#& Videos
Audio:
Best: איכות הכי טובה
@ -516,6 +521,7 @@ Video:
Video has been removed from your saved list: הסרטון הוסר מרשימת השמורים שלך
Video has been saved: סרטון נשמר
Save Video: שמירת סרטון
translated from English: תורגם מאנגלית
Videos:
#& Sort By
Sort By:
@ -543,10 +549,10 @@ Playlist:
Toggle Theatre Mode: 'הפעלו / בטלו מצב קולנוע'
Change Format:
Change Video Formats: 'שינוי תצורות הסרטונים'
Use Dash Formats: 'שימוש בתצורות Dash'
Use Dash Formats: 'שימוש בתצורות DASH'
Use Legacy Formats: 'שימוש בתצורות המיושנות'
Use Audio Formats: 'שימוש בתצורות שמע'
Dash formats are not available for this video: 'לא קיימות תצורות Dash לסרטון הזה'
Dash formats are not available for this video: 'לא קיימות תצורות DASH לסרטון הזה'
Audio formats are not available for this video: 'לא קיימות תצורות שמע לסרטון הזה'
Share:
Share Video: 'שתפו את הסרטון'
@ -610,25 +616,25 @@ Tooltips:
General Settings:
Fallback to Non-Preferred Backend on Failure: כאשר ל־API המועדף עליך יש בעיה,
FreeTube ינסה להשתמש ב־API בעדיפות הנמוכה יותר באופן אוטומטי כשיטת נסיגה כאשר
האפשרות פעילה
האפשרות פעילה.
Preferred API Backend: נא לבחור את המנגנון לשימוש FreeTube כדי לקבל נתונים. ה־API
המקומי הוא מחלץ מובנה. ה־API של Invidious דורש התחברות לשרת Invidious.
Region for Trending: מגמות אזוריות מאפשר לך לבחור סרטונים חמים של איזו מדינה מעניין
אותך לראות. לא כל המדינות שמוצגות אכן נתמכות על ידי YouTube
אותך לראות. לא כל המדינות שמוצגות אכן נתמכות על ידי YouTube.
Invidious Instance: העותק של Invidious שאליו FreeTube יתחבר לפניות API. מחיקת
העותק הנוכחי תעלה רשימה של עותקים ציבוריים לבחור מביניהם
Thumbnail Preference: כל התמונות הייצוגיות ברחבי FreeTube תוחלפנה בתמונית מתוך
הסרטון במקום התמונה הייצוגית כבררת המחדל
העותק הנוכחי תעלה רשימה של עותקים ציבוריים לבחור מביניהם.
Thumbnail Preference: כל התמונות הממוזערות ברחבי FreeTube יוחלפו בפריים מתוך הסרטון
במקום התמונה הממוזערת כברירת המחדל.
Player Settings:
Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא ברירת
המחדל שלך. כאשר האפשרות פעילה, ה־API המקומי יופעל וישתמש בתצורות המיושנות שהוחזרו
על ידיו במקום באלו שהוחזרו על ידי Invidious. מועיל כאשר הסרטונים שמוחזרים על
ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה
ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה.
Proxy Videos Through Invidious: יתבצע חיבור ל־Invidious כדי להגיש סרטונים במקום
להתחבר ישירות ל־YouTube. דורס את העדפת ה־API
Default Video Format: קביעת התצורות בעת ניגון סרטונים. תצורות Dash יכולות לנגן
להתחבר ישירות ל־YouTube. דורס את העדפת ה־API.
Default Video Format: קביעת התצורות בעת ניגון סרטונים. תצורות DASH יכולות לנגן
באיכויות גבוהות יותר. התצורות המיושנות מוגבלות ל־720 פיקסלים לכל היותר אך משתמשות
בפחות רוחב פס. תצורות שמע הן הזרמות של שמע בלבד
בפחות רוחב פס. תצורות שמע הן הזרמות של שמע בלבד.
Subscription Settings:
Fetch Feeds from RSS: כאשר אפשרות זו פעילה. FreeTube ישתמש ב־RSS במקום בשיטת ברירת
המחדל לאיסוף הזנת המינויים שלך. RSS היא שיטה מהירה יותר ומונעת חסימת IP אבל

View File

@ -90,15 +90,24 @@ Most Popular: 'सबसे ज़्यादा देखा हुआ'
Playlists: 'प्लेलिस्टे (playlists)'
User Playlists:
Your Playlists: 'आपके प्लेलिस्टे'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: आपके
पास बचाए गए वीडियोए नहीं हैं। एक वीडियो के कोने पर सेव बटन पर क्लिक (click) करें,
यहां लिस्ट पर वही आएगा
Playlist Message: यह पृष्ठ पूरी तरह से काम करने वाली प्लेलिस्ट को प्रतिबिंबित नहीं
करता है। यह केवल उन वीडियो को सूचीबद्ध करता है जिन्हें आपने सहेजा है या पसंदीदा
है। जब काम समाप्त हो जाता है, तो वर्तमान में यहां सभी वीडियो 'पसंदीदा' प्लेलिस्ट
में स्थानांतरित हो जाएंगे।
History:
# On History Page
History: ''
History: 'इतिहास'
Watch History: ''
Your history list is currently empty.: ''
Settings:
# On Settings Page
Settings: ''
The app needs to restart for changes to take effect. Restart and apply change?: ''
Settings: 'स्थापना'
The app needs to restart for changes to take effect. Restart and apply change?: 'ऐप
को प्रभावी होने वाले परिवर्तनों के लिए पुनः आरंभ करने की आवश्यकता है। Restart
और परिवर्तन लागू करें?'
General Settings:
General Settings: ''
Check for Updates: ''
@ -284,6 +293,7 @@ About:
Latest FreeTube News: ''
Email: ईमेल
Profile:
Profile Select: ''
All Channels: ''
@ -531,3 +541,4 @@ Canceled next video autoplay: ''
Yes: ''
No: ''
More: ज़्यादा

View File

@ -125,6 +125,7 @@ Settings:
Check for Latest Blog Posts: Traži najnovije objave na blogu
Check for Updates: Traži nove verzije
View all Invidious instance information: Prikaži podatke svih Invidious primjeraka
System Default: Standard sustava
Theme Settings:
Theme Settings: 'Postavke teme'
Match Top Bar with Main Color: 'Koristi glavnu boju u gornjoj traci'
@ -170,7 +171,7 @@ Settings:
Default Playback Rate: 'Standardna brzina reprodukcije'
Default Video Format:
Default Video Format: 'Standardni videoformat'
Dash Formats: 'Dash formati'
Dash Formats: 'DASH formati'
Legacy Formats: 'Stari formati'
Audio Formats: 'Audioformati'
Default Quality:
@ -185,6 +186,8 @@ Settings:
1440p: '1440 p'
4k: '4 k'
8k: '8 k'
Playlist Next Video Interval: Interval sljedećeg videa zbirke
Next Video Interval: Interval za sljedeći video
Privacy Settings:
Privacy Settings: 'Postavke privatnosti'
Remember History: 'Zapamti povijest'
@ -200,6 +203,8 @@ Settings:
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.
Remove All Subscriptions / Profiles: Ukloni sve pretplate/profile
Automatically Remove Video Meta Files: Automatski ukloni datoteke metapodataka
videa
Subscription Settings:
Subscription Settings: 'Postavke pretplata'
Hide Videos on Watch: 'Sakrij video nakon gledanja'
@ -287,6 +292,7 @@ Settings:
Hide Video Views: Sakrij broj gledanja videa
Distraction Free Settings: Postavke za nesmetan rad
Hide Active Subscriptions: Sakrij aktivne pretplate
Hide Playlists: Sakrij zbirke
The app needs to restart for changes to take effect. Restart and apply change?: Promjene
će se primijeniti nakon ponovnog pokeretanja programa. Ponovo pokrenuti program?
Proxy Settings:
@ -410,6 +416,7 @@ Profile:
$ selected: $ je odabran
Other Channels: Ostali kanali
Subscription List: Popis pretplata
Profile Filter: Filtar profila
Channel:
Subscriber: 'Pretplatnik'
Subscribers: 'Pretplatnici'
@ -502,7 +509,7 @@ Video:
Upcoming: 'Premijera'
Published on: 'Objavljeno'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'prije $ %'
Publicationtemplate: 'prije $ %'
#& Videos
Autoplay: Automatska reprodukcija
Play Previous Video: Reproduciraj prethodni video
@ -530,6 +537,7 @@ Video:
spremljenih
Video has been saved: Video je spremljen
Save Video: Spremi video
translated from English: prevedeno iz engleskog
Videos:
#& Sort By
Sort By:
@ -557,12 +565,12 @@ Playlist:
Toggle Theatre Mode: 'Uključi/isključi kazališni modus'
Change Format:
Change Video Formats: 'Promijeni videoformate'
Use Dash Formats: 'Koristi Dash-formate'
Use Dash Formats: 'Koristi DASH formate'
Use Legacy Formats: 'Koristi stare formate'
Use Audio Formats: 'Koristi audioformate'
Audio formats are not available for this video: Audioformati nisu dostupni za ovaj
video
Dash formats are not available for this video: Dash formati nisu dostupni za ovaj
Dash formats are not available for this video: DASH formati nisu dostupni za ovaj
video
Share:
Share Video: 'Dijeli video'
@ -632,31 +640,44 @@ This video is unavailable because of missing formats. This can happen due to cou
u zemlji.
Tooltips:
Player Settings:
Default Video Format: Postavi formate za reprodukciju videa. Dash formati mogu
Default Video Format: Postavi formate za reprodukciju videa. DASH formati mogu
reproducirati višu kvalitetu slike. Stari formati su ograničeni na 720 p, ali
su zato brži. Audioformati sadrže samo audiosnimke
su zato brži. Audioformati sadrže samo audiosnimke.
Proxy Videos Through Invidious: Za reprodukciju videa povezat će se s Invidiousom
umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja
umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja.
Force Local Backend for Legacy Formats: Radi samo, kad se Invidious postavi kao
standardno sučelje. Kad je aktivirano, lokalno sučelje će pokretati i koristiti
stare formate umjesto onih koje dostavlja Invidious. Pomaže u slučajevima, kad
je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena
je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena.
General Settings:
Invidious Instance: Invidious primjerak na koji će se FreeTube povezati za pozive
sučelja. Isprazni trenutačni primjerak za prikaz popisa javnih primjeraka koje
možeš odabrati
možeš odabrati.
Thumbnail Preference: U FreeTubeu će se sve minijature zamijeniti s jednim kadrom
videa umjesto standardne minijature
videa umjesto standardne minijature.
Fallback to Non-Preferred Backend on Failure: Ako primarno odabrano sučelje ima
problema, FreeTube će automatski pokušati koristiti sekundarno sučelje kao zamjensku
metodu, ako je aktivirano
metodu, ako je aktivirano.
Preferred API Backend: Odaberi pozadinski sustav koji FreeTube koristi za dobivanje
podataka. Lokalno sučelje je ugrađeni sustav. Invidious sučelje zahtijeva Invidious
poslužitelja na koji će se povezati.
Region for Trending: 'Regija trendova omogućuje biranje prikaza videa u trendu
za određenu zemlju. YouTube zapravo ne podržava sve prikazane zemlje'
za određenu zemlju. YouTube zapravo ne podržava sve prikazane zemlje.'
Subscription Settings:
Fetch Feeds from RSS: Kad je aktivirano, FreeTube će koristiti RSS umjesto vlastite
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
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.
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekunde. Pritisni za prekid.
| Reprodukcija sljedećeg videa za {nextVideoInterval} sekundi. Pritisni za prekid.
More: Još
Hashtags have not yet been implemented, try again later: Hashtagovi još nisu implementirani,
pokušaj kasnije ponovo
Unknown YouTube url type, cannot be opened in app: Nepoznata vrsta URL adrese na YouTubeu,
ne može se otvoriti u programu
Open New Window: Otvori novi prozor

View File

@ -135,6 +135,7 @@ Settings:
#! List countries
View all Invidious instance information: Az Invidious példány összes tájékoztatásának
megtekintése
System Default: Rendszer alapértelmezett
Theme Settings:
Theme Settings: 'Téma beállítások'
Match Top Bar with Main Color: 'Illessze a felső sávot a fő színnel'
@ -180,7 +181,8 @@ Settings:
Default Playback Rate: 'Alapértelmezett lejátszási sebesség'
Default Video Format:
Default Video Format: 'Alapértelmezett videóformátum'
Dash Formats: 'Kötőjel formátumok'
Dash Formats: 'DASH (Dinamikus adaptív sávszélességű folyamatos átvitel HTTP-n
keresztül) formátumok'
Legacy Formats: 'Örökölt formátumok'
Audio Formats: 'Hangformátumok'
Default Quality:
@ -196,6 +198,7 @@ Settings:
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Lejátszási lista következő videó intervalluma
Next Video Interval: Következő videó időköze
Privacy Settings:
Privacy Settings: 'Adatvédelmi beállítások'
Remember History: 'Előzmények megjegyzése'
@ -211,6 +214,7 @@ Settings:
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
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: 'Feliratkozás beállításai'
Hide Videos on Watch: 'Videók elrejtése megtekintés után'
@ -304,7 +308,7 @@ Settings:
Ip: IP-cím
Your Info: Az Ön adatai
Clicking on Test Proxy will send a request to: 'A Meghatalmazás-ellenőrzés gombra
kattintva kérést küld a következő címre:'
kattintva kérést küld a következő címre'
Test Proxy: Meghatalmazás-ellenőrzés
Proxy Port Number: Meghatalmazás kikötőszáma
Proxy Host: Meghatalmazás gazdaszámítógép
@ -313,6 +317,12 @@ Settings:
Proxy Settings: Meghatalmazás beállításai
Error getting network information. Is your proxy configured properly?: Hiba a
hálózati adatok lekérésekor. Megfelelő a meghatalmazás beállítása?
SponsorBlock Settings:
Notify when sponsor segment is skipped: Értesítés a szponzorált szegmens kihagyásáról
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': 'SponsorBlock API
URL címe (Alapértelmezés: https://sponsor.ajay.app)'
Enable SponsorBlock: SponsorBlock engedélyezése
SponsorBlock Settings: SponsorBlock beállításai
About:
#On About page
About: 'Névjegy'
@ -346,7 +356,7 @@ About:
Latest FreeTube News: 'Legfrissebb FreeTube hírek'
these people and projects: ezek emberek és projektek
FreeTube is made possible by: 'A FreeTube engedélyezése:'
FreeTube is made possible by: 'A FreeTube engedélyezése'
Donate: Hozzájárulás
Credits: Közreműködők
Translate: Fordítás
@ -514,7 +524,7 @@ Video:
Upcoming: 'Az első előadás hamarosan lesz'
Published on: 'Megjelent'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % ezelőtt'
Publicationtemplate: '$ % ezelőtt'
#& Videos
Audio:
Best: Legjobb
@ -533,6 +543,15 @@ Video:
Video has been removed from your saved list: A videót eltávolítottuk a mentett listáról
Video has been saved: A videó mentve
Save Video: Videó mentése
translated from English: angolról fordítva
Sponsor Block category:
music offtopic: témán kívüli zene
interaction: kölcsönhatás
self-promotion: önreklám
outro: kivezetés
intro: bevezetés
sponsor: szponzor
Skipped segment: Szegmens kihagyva
Videos:
#& Sort By
Sort By:
@ -546,7 +565,7 @@ Playlist:
Videos: 'Videók'
View: 'Megtekintés'
Views: 'Megtekintések'
Last Updated On: 'Utoljára frissítve:'
Last Updated On: 'Utoljára frissítve'
Share Playlist:
Share Playlist: 'Lejátszási lista megosztása'
Copy YouTube Link: 'YouTube hivatkozás másolása'
@ -560,11 +579,13 @@ Playlist:
Toggle Theatre Mode: 'Mozi mód be-/kikapcsolása'
Change Format:
Change Video Formats: 'Videoformátumok módosítása'
Use Dash Formats: 'Kötőjel formátumok használata'
Use Dash Formats: 'DASH (Dinamikus adaptív sávszélességű folyamatos átvitel HTTP-n
keresztül) formátumok használata'
Use Legacy Formats: 'Örökölt formátumok használata'
Use Audio Formats: 'Hangformátumok használata'
Dash formats are not available for this video: 'Kötőjel formátumok nem állnak rendelkezésre
ehhez a videóhoz'
Dash formats are not available for this video: 'DASH (Dinamikus adaptív sávszélességű
folyamatos átvitel HTTP-n keresztül) formátumok nem állnak rendelkezésre ehhez
a videóhoz'
Audio formats are not available for this video: 'Hangformátumok nem érhetők el ehhez
a videóhoz'
Share:
@ -637,15 +658,15 @@ Tooltips:
használatához Invidious-kiszolgáló szükséges.
Region for Trending: A népszerűk körzetével kiválaszthatja, mely ország népszerű
videóit szeretné megjeleníteni. Nem minden megjelenített országot támogat a
YouTube
YouTube.
Invidious Instance: Invidious példány, amelyhez a FreeTube csatlakozni fog az
API-hívásokhoz. Törölje az aktuális példányt a nyilvános példányok listájának
megjelenítéséhez
megjelenítéséhez.
Thumbnail Preference: A FreeTube összes miniatűrökét az alapértelmezett miniatűr
helyett egy képkocka váltja fel
helyett egy képkocka váltja fel.
Fallback to Non-Preferred Backend on Failure: Ha az Ön által előnyben részesített
API-val hibába merül fel, a FreeTube önműködően megpróbálja a nem előnyben API-t
tartalékként használni, ha engedélyezve van
tartalékként használni, ha engedélyezve van.
Subscription Settings:
Fetch Feeds from RSS: Ha engedélyezve van, a FreeTube az alapértelmezett módszer
helyett RSS-t fog használni a feliratkozás hírcsatornájának megragadásához.
@ -653,19 +674,28 @@ Tooltips:
például a videó időtartamát vagy az élő állapotot
Player Settings:
Default Video Format: Állítsa be a videó lejátszásakor használt formátumokat.
A kötőjel formátumok magasabb minőséget játszhatnak le. Az örökölt formátumok
legfeljebb 720 képpontra korlátozódnak, de kevesebb sávszélességet használnak.
A hangformátumok csak hang-adatfolyamok
A DASH (dinamikus adaptív sávszélességű folyamatos átvitel HTTP-n keresztül)
formátumok magasabb minőséget játszhatnak le. Az örökölt formátumok legfeljebb
720 képpontra korlátozódnak, de kevesebb sávszélességet használnak. A hangformátumok
csak hang-adatfolyamok.
Proxy Videos Through Invidious: Csatlakozik az Invidious szolgáltatáshoz, hogy
videókat szolgáltasson, ahelyett, hogy közvetlen kapcsolatot létesítene a YouTube
szolgáltatással. Felülbírálja az API beállítást
szolgáltatással. Felülbírálja az API beállítást.
Force Local Backend for Legacy Formats: Csak akkor működik, ha az Invidious API
az alapértelmezett. Ha engedélyezve van, a helyi API futni fog, és az általa
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
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
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}
másodperc múlva történik. Kattintson a törléshez.
More: Több
Hashtags have not yet been implemented, try again later: A kettőskeresztescímke még
nincs megvalósítva. Próbálkozzon később.
Unknown YouTube url type, cannot be opened in app: Ismeretlen YouTube URL-típusa,
nem nyitható meg az alkalmazásban
Open New Window: Új ablak megnyitása

View File

@ -131,6 +131,7 @@ Settings:
Region for Trending: 'Wilayah untuk Sedang Tren'
#! List countries
View all Invidious instance information: Lihat semua informasi situs Invidious
System Default: Sistem standar
Theme Settings:
Theme Settings: 'Pengaturan Tema'
Match Top Bar with Main Color: 'Samakan Bilah Atas dengan Warna Utama'
@ -175,7 +176,7 @@ Settings:
Default Playback Rate: 'Laju Pemutaran Bawaan'
Default Video Format:
Default Video Format: 'Format Video Bawaan'
Dash Formats: 'Format Dash'
Dash Formats: 'Format DASH'
Legacy Formats: 'Format Lama'
Audio Formats: 'Format Audio'
Default Quality:
@ -191,6 +192,7 @@ Settings:
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Interval Video dalam Daftar Putar
Next Video Interval: Interval Video Selanjutnya
Privacy Settings:
Privacy Settings: 'Pengaturan Privasi'
Remember History: 'Ingat Riwayat'
@ -207,6 +209,7 @@ Settings:
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
diurungkan.'
Automatically Remove Video Meta Files: Secara Otomatis Hapus File Meta Video
Subscription Settings:
Subscription Settings: 'Pengaturan Langganan'
Hide Videos on Watch: 'Sembunyikan Video saat Menonton'
@ -403,6 +406,7 @@ Profile:
Anda yakin ingin menghapus kanal yang terpilih? Tindakan ini tidak akan menghapus
kanalnya dari profil lain.'
#On Channel Page
Profile Filter: Filter Profil
Channel:
Subscriber: 'Pelanggan'
Subscribers: 'Pelanggan'
@ -503,7 +507,7 @@ Video:
Upcoming: 'Segera tayang di'
Published on: 'Dipublikasi pada'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % yang lalu'
Publicationtemplate: '$ % yang lalu'
#& Videos
Audio:
Best: Terbaik
@ -525,6 +529,7 @@ Video:
Anda
Video has been saved: Video telah disimpan
Save Video: Simpan Video
translated from English: diterjemahkan dari Bahasa Inggris
Videos:
#& Sort By
Sort By:
@ -552,10 +557,10 @@ Playlist:
Toggle Theatre Mode: 'Mode Teater'
Change Format:
Change Video Formats: 'Ubah Format Video'
Use Dash Formats: 'Gunakan Format Dash'
Use Dash Formats: 'Gunakan Format DASH'
Use Legacy Formats: 'Gunakan Format Legasi'
Use Audio Formats: 'Gunakan Format Audio'
Dash formats are not available for this video: 'Format dash tidak tersedia untuk
Dash formats are not available for this video: 'Format DASH tidak tersedia untuk
video ini'
Audio formats are not available for this video: 'Format audio tidak tersedia untuk
video ini'
@ -628,32 +633,39 @@ Tooltips:
IP, tetapi tidak menyediakan informasi tertentu seperti durasi video atau status
siaran langsung
Player Settings:
Default Video Format: Atur format yang digunakan ketika video diputar. Format
dash bisa memutar kualitas yang lebih tinggi. Format lama terbatas ke maks 720p
tetapi dengan bandwidth yang lebih rendah. Format audio hanya berisi stream
audio
Default Video Format: Atur format video. Format DASH bisa memutar kualitas yang
lebih tinggi. Format lama terbatas ke maks 720p tetapi dengan bandwidth yang
lebih rendah. Format audio hanya berisi stream audio.
Proxy Videos Through Invidious: Akan menyambung ke Invidious daripada YouTube.
Menimpa preferensi API
Menimpa preferensi API.
Force Local Backend for Legacy Formats: Hanya bekerja jika APi Invidious diatur
sebagai default. Ketika diaktifkan, API lokal akan berjalan dan menggunakan
format lama yang dihasilkan oleh API lokal daripada yang dihasilkan oleh API
Invidious. Membantu saat video yang ditampilkan oleh Invidious tidak bisa diputar
karena dibatasi oleh wilayah pemutaran
karena dibatasi oleh wilayah pemutaran.
General Settings:
Region for Trending: Wilayah tren memungkinkan Anda memilih video yang sedang
ngetren dari negara tersebut untuk ditampilkan. Tidak semua daftar negara didukung
oleh YouTube
oleh YouTube.
Invidious Instance: Situs Invidious yang akan tersambung dengan FreeTube untuk
panggilan API. Hapus situs saat ini untuk melihat daftar situs publik yang didukung
panggilan API. Hapus situs saat ini untuk melihat daftar situs publik yang didukung.
Thumbnail Preference: Semua thumbnail di dalam aplikasi FreeTube akan diganti
dengan frame dari video
dengan frame dari video.
Fallback to Non-Preferred Backend on Failure: Ketika API yang Anda pilih memiliki
masalah, FreeTube akan secara otomatis menggunakan layanan API lainnya sebagai
cadangan jika diaktifkan
cadangan jika diaktifkan.
Preferred API Backend: Pilih layanan yang digunakan oleh FreeTube untuk mengambil
data. API lokal adalah ekstraktor bawaan. API Invidious membutuhkan sambungan
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. |
Putar video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal. | Putar
video berikutnya dalam {nextVideoInterval} detik. Klik untuk batal.
More: Lebih banyak
Hashtags have not yet been implemented, try again later: Hashtag belum diimplementasikan,
silakan coba lagi nanti
Unknown YouTube url type, cannot be opened in app: Tipe URL YouTube tidak dikenal,
tidak bisa dibuka di aplikasi
Open New Window: Buka Jendela Baru

642
static/locales/is.yaml Normal file
View File

@ -0,0 +1,642 @@
# Put the name of your locale in the same language
Locale Name: 'Íslenska'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Þessi hluti forritsins er ekki tilbúinn. Skoðaðu þetta seinna þegar meira hefur
verið unnið í þessu.
# Webkit Menu Bar
File: 'Skrá'
Quit: 'Hætta'
Edit: 'Breyta'
Undo: 'Afturkalla'
Redo: 'Endurtaka'
Cut: 'Klippa'
Copy: 'Afrita'
Paste: 'Líma'
Delete: 'Eyða'
Select all: 'Velja allt'
Reload: 'Endurlesa'
Force Reload: 'Þvinga endurlestur'
Toggle Developer Tools: 'Víxla forritaratólum af/á'
Actual size: 'Raunstærð'
Zoom in: 'Renna að'
Zoom out: 'Renna frá'
Toggle fullscreen: 'Víxla skjáfylli af/á'
Window: 'Gluggi'
Minimize: 'Lágmarka'
Close: 'Loka'
Back: 'Til baka'
Forward: 'Áfram'
Version $ is now available! Click for more details: 'Útgáfa $ er tiltæk! Smelltu
til að skoða nánar'
Download From Site: 'Sækja af vefsvæði'
A new blog is now available, $. Click to view more: 'Ný bloggfærsla er núna er tiltæk,
$. Smelltu til að skoða nánar'
# Search Bar
Search / Go to URL: 'Leita / Fara á slóð'
# In Filter Button
Search Filters:
Search Filters: 'Leitarsíur'
Sort By:
Sort By: 'Raða eftir'
Most Relevant: 'Mest viðeigandi'
Rating: 'Einkunn'
Upload Date: 'Dags. innsendingar'
View Count: 'Fjöldi áhorfa'
Time:
Time: 'Tími'
Any Time: 'Hvenær sem er'
Last Hour: 'Síðustu klukkustund'
Today: 'Í dag'
This Week: 'Í þessari viku'
This Month: 'Í þessum mánuði'
This Year: 'Á þessu ári'
Type:
Type: 'Tegund'
All Types: 'Allar tegundir'
Videos: 'Myndskeið'
Channels: 'Rásir'
#& Playlists
Duration:
Duration: 'Tímalengd'
All Durations: 'Allar tímalengdir'
Short (< 4 minutes): 'Stutt (< 4 mínútur)'
Long (> 20 minutes): 'Langt (> 20 mínútur)'
# On Search Page
Search Results: 'Leitarniðurstöður'
Fetching results. Please wait: 'Sæki niðurstöður. Hinkraðu aðeins'
Fetch more results: 'Sækja fleiri niðurstöður'
There are no more results for this search: 'Engar fleiri niðurstöður samsvara leitinni
þinni'
# Sidebar
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Áskriftir'
Latest Subscriptions: 'Síðustu áskriftir'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Þetta
notkunarsnið er með mikinn fjölda áskrifta. Þvinga notkun á RSS til að forðast
takmarkanir á magni'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Listi
með áskriftum er tómur í augnablikinu. Gerstu áskrifandi að rásum og þær munu
birtast hér.'
'Getting Subscriptions. Please wait.': 'Sæki áskriftir. Hinkraðu aðeins.'
Refresh Subscriptions: 'Endurlesa áskriftir'
Load More Videos: 'Hlaða inn fleiri myndskeiðum'
More: 'Meira'
Trending: 'Í umræðunni'
Most Popular: 'Vinsælast'
Playlists: 'Spilunarlistar'
User Playlists:
Your Playlists: 'Spilunarlistarnir þínir'
Playlist Message: 'Þessi síða endurspeglar ekki alveg fullvirka spilunarlista. Hún
telur aðeins upp þau myndskeið sem þú hefur vistað eða sett í eftirlæti. Þegar
verkinu er lokið munu öll þessi myndskeið færast yfir í ''Eftirlæti''-spilunarlista.'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 'Listinn
þinn yfir vistuð myndskeið er tómur. Smelltu á vistunarhnapp myndskeiðs til að
það birtist hér'
History:
# On History Page
History: 'Vinnsluferill'
Watch History: 'Áhorfsferill'
Your history list is currently empty.: 'Listi með vinnsluferli er tómur í augnablikinu.'
Settings:
# On Settings Page
Settings: 'Stillingar'
The app needs to restart for changes to take effect. Restart and apply change?: 'Þú
þarft að endurræsa forritið svo breytingarnar taki gildi. á að endurræsa og virkja
breytingar?'
General Settings:
General Settings: 'Almennar stillingar'
Check for Updates: 'Athuga með uppfærslur'
Check for Latest Blog Posts: 'Athuga með nýjustu bloggfærslur'
Fallback to Non-Preferred Backend on Failure: 'Nota varaleið um ekki-forgangsbakenda
þegar villa kemur upp'
Enable Search Suggestions: 'Virkja tillögur í leit'
Default Landing Page: 'Sjálfgefin upphafssíða'
Locale Preference: 'Umbeðin staðfærsla'
Preferred API Backend:
Preferred API Backend: 'Forgangsbakendi API-kerfisviðmóts'
Local API: 'Staðvært API-kerfisviðmót'
Invidious API: 'Invidious API-kerfisviðmót'
Video View Type:
Video View Type: 'Tegund myndskeiðsskoðunar'
Grid: 'Reitir'
List: 'Listi'
Thumbnail Preference:
Thumbnail Preference: 'Kjörstillingar smámynda'
Default: 'Sjálfgefið'
Beginning: 'Upphaf'
Middle: 'Miðja'
End: 'Endir'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious-tilvik
(sjálfgefið er https://invidious.snopyta.org)'
View all Invidious instance information: 'Skoða allar upplýsingar um Invidious-tilvik'
Region for Trending: 'Landssvæði sem skal miða vinsældir við'
#! List countries
System Default: Sjálfgefið í kerfinu
Theme Settings:
Theme Settings: 'Þemastillingar'
Match Top Bar with Main Color: 'Láta toppstiku samsvara aðallit'
Expand Side Bar by Default: 'Fletta sjálfgefið út hliðarstiku'
Disable Smooth Scrolling: 'Gera mjúkt skrun óvirkt'
UI Scale: 'Kvörðun viðmóts'
Base Theme:
Base Theme: 'Grunnþema'
Black: 'Svart'
Dark: 'Dökkt'
Light: 'Ljóst'
Main Color Theme:
Main Color Theme: 'Aðallitur þema'
Red: 'Rautt'
Pink: 'Bleikt'
Purple: 'Purpurablátt'
Deep Purple: 'Dökkpurpurablátt'
Indigo: 'Djúpfjólublátt'
Blue: 'Blátt'
Light Blue: 'Ljósblátt'
Cyan: 'Blágrænt'
Teal: 'Djúpblágrænt'
Green: 'Grænt'
Light Green: 'Ljósgrænt'
Lime: 'Límónugrænt'
Yellow: 'Gult'
Amber: 'Raflitt'
Orange: 'Appelsínugult'
Deep Orange: 'Dimmappelsínugult'
Secondary Color Theme: 'Aukalitur þema'
#* Main Color Theme
Player Settings:
Player Settings: 'Stillingar spilara'
Force Local Backend for Legacy Formats: 'Þvinga notkun staðværs bakenda fyrir
eldri skráasnið'
Play Next Video: 'Spila næsta myndskeið'
Turn on Subtitles by Default: 'Sjálfgefið kveikja á skjátextum'
Autoplay Videos: 'Spila myndskeið sjálfkrafa'
Proxy Videos Through Invidious: 'Beina myndskeiðum í gegnum Invidious-milliþjón'
Autoplay Playlists: 'Spila spilunarlista sjálfkrafa'
Enable Theatre Mode by Default: 'Sjálfgefið virkja bíóham (theater mode)'
Playlist Next Video Interval: 'Millibil afspilunar næsta myndskeiðs í spilunarlista'
Default Volume: 'Sjálfgefinn hljóðstyrkur'
Default Playback Rate: 'Sjálfgefinn afspilunarhraði'
Default Video Format:
Default Video Format: 'Sjálfgefið skráasnið myndskeiða'
Dash Formats: 'DASH-skráasnið'
Legacy Formats: 'Eldri skráasnið'
Audio Formats: 'Hljóðskráasnið'
Default Quality:
Default Quality: 'Sjálfgefin gæði'
Auto: 'Sjálfvirkt'
144p: '144p'
240p: '240p'
360p: '360p'
480p: '480p'
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: '4k'
8k: '8k'
Next Video Interval: Bil í næsta myndskeið
Privacy Settings:
Privacy Settings: 'Stillingar gagnaleyndar'
Remember History: 'Muna vinnsluferil'
Save Watched Progress: 'Vista framvindu áhorfs'
Clear Search Cache: 'Hreinsa skyndiminni leitar'
Are you sure you want to clear out your search cache?: 'Ertu viss um að þú viljir
eyða skyndiminni leitar?'
Search cache has been cleared: 'Skyndiminni leitar var hreinsað'
Remove Watch History: 'Fjarlægja áhorfsferil'
Are you sure you want to remove your entire watch history?: 'Ertu viss um að þú
viljir fjarlægja allan áhorfsferilinn þinn?'
Watch history has been cleared: 'Áhorfsferill var hreinsaður'
Remove All Subscriptions / Profiles: 'Fjarlægja allar áskriftir / notkunarsnið'
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
að afturkalla þetta.'
Automatically Remove Video Meta Files: Sjálfvirkt fjarlægja lýsigögn úr myndskeiðaskrám
Subscription Settings:
Subscription Settings: 'Stillingar áskrifta'
Hide Videos on Watch: 'Fela myndskeið eftir áhorf'
Fetch Feeds from RSS: 'Ná í streymi úr RSS'
Manage Subscriptions: 'Sýsla með áskriftir'
Distraction Free Settings:
Distraction Free Settings: 'Truflanaminnkandi stillingar'
Hide Video Views: 'Fela fjölda áhorfa á myndskeið'
Hide Video Likes And Dislikes: 'Fela hve mörgum líkar eða mislíkar myndskeið'
Hide Channel Subscribers: 'Fela fjölda áskrifenda myndskeiða'
Hide Comment Likes: 'Fela hve mörgum líkar athugasemdir'
Hide Recommended Videos: 'Fela myndskeið sem mælt er með'
Hide Trending Videos: 'Fela myndskeið í umræðunni'
Hide Popular Videos: 'Fela vinsæl myndskeið'
Hide Playlists: 'Fela spilunarlista'
Hide Live Chat: 'Fela spjall í beinni'
Hide Active Subscriptions: 'Fela virkar áskriftir'
Data Settings:
Data Settings: 'Stillingar gagna'
Select Import Type: 'Veldu tegund innflutnings'
Select Export Type: 'Veldu tegund útflutnings'
Import Subscriptions: 'Flytja inn áskriftir'
Import FreeTube: 'Flytja inn FreeTube'
Import YouTube: 'Flytja inn YouTube'
Import NewPipe: 'Flytja inn NewPipe'
Check for Legacy Subscriptions: 'Athuga með eldri áskriftir'
Export Subscriptions: 'Flytja út áskriftir'
Export FreeTube: 'Flytja út FreeTube'
Export YouTube: 'Flytja út YouTube'
Export NewPipe: 'Flytja út NewPipe'
Import History: 'Flytja inn vinnsluferil'
Export History: 'Flytja út vinnsluferil'
Profile object has insufficient data, skipping item: 'Atriði notkunarsniðs er
ekki með næg gögn, sleppi þessu'
All subscriptions and profiles have been successfully imported: 'Innflutningur
á öllum áskriftum og notkunarsniðum tókst'
All subscriptions have been successfully imported: 'Innflutningur á öllum áskriftum
tókst'
One or more subscriptions were unable to be imported: 'Ekki tókst að flytja inn
eina eða fleiri áskriftir'
Invalid subscriptions file: 'Ógild áskriftaskrá'
This might take a while, please wait: 'Þetta getur tekið dálítinn tíma, sýndu
smá þolinmæði'
Invalid history file: 'Ógild vinnsluferilskrá'
Subscriptions have been successfully exported: 'Úflutningur á áskriftum tókst'
History object has insufficient data, skipping item: 'Atriði vinnsluferils er
ekki með næg gögn, sleppi þessu'
All watched history has been successfully imported: 'Allur áhorfsferillinn var
fluttur inn'
All watched history has been successfully exported: 'Allur áhorfsferillinn var
fluttur út'
Unable to read file: 'Gat ekki lesið skrá'
Unable to write file: 'Gat ekki skrifað skrá'
Unknown data key: 'Óþekktur gagnalykill'
How do I import my subscriptions?: 'Hvernig flyt ég inn áskriftirnar mínar?'
Manage Subscriptions: 'Sýsla með áskriftir'
Proxy Settings:
Proxy Settings: 'Stillingar milliþjóns (proxy)'
Enable Tor / Proxy: 'Virkja Tor / milliþjón'
Proxy Protocol: 'Samskiptamáti milliþjóns'
Proxy Host: 'Hýsilvél milliþjóns'
Proxy Port Number: 'Númer á gátt milliþjóns'
Clicking on Test Proxy will send a request to: 'Ef smellt er á ''Prófa milliþjón''
verður send beiðni á'
Test Proxy: 'Prófa milliþjón'
Your Info: 'Upplýsingar um þig'
Ip: 'IP-vistfang'
Country: 'Land'
Region: 'Hérað'
City: 'Borg/Sveitarfélag'
Error getting network information. Is your proxy configured properly?: 'Það tókst
ekki að sækja upplýsingar um netkerfið. Er milliþjónninn rétt uppsettur?'
SponsorBlock Settings:
Notify when sponsor segment is skipped: Láta vita þegar kostaður bútur er hunsaður
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': SponsorBlock API-slóð
(sjálfgefið er https://sponsor.ajay.app)
Enable SponsorBlock: Virkja SponsorBlock
SponsorBlock Settings: Stillingar SponsorBlock
About:
#On About page
About: 'Um hugbúnaðinn'
Beta: 'Beta-prófunarútgáfa'
Source code: 'Grunnkóði'
Licensed under the AGPLv3: 'Gefið út með AGPLv3-notkunarleyfi'
View License: 'Skoða notkunarleyfi'
Downloads / Changelog: 'Sóttar skrár / Breytingaskrá'
GitHub releases: 'Útgáfur af GitHub'
Help: 'Hjálp'
FreeTube Wiki: 'FreeTube wikivefur'
FAQ: 'FAQ / Algengar spurningar'
Report a problem: 'Tilkynna vandamál'
GitHub issues: 'GitHub verkbeiðnir'
Please check for duplicates before posting: 'Athugaðu hvort fyrir séu eins fyrirspurnir
áður en þú sendir nýja'
Website: 'Vefsvæði'
Blog: 'Blogg'
Email: 'Tölvupóstur'
Mastodon: 'Mastodon'
Chat on Matrix: 'Spjall á Matrix'
Please read the: 'Endilega lestu'
room rules: 'reglur spjallsins'
Translate: 'Þýða'
Credits: 'Framlög'
FreeTube is made possible by: 'FreeTube er gert mögulegt af'
these people and projects: 'þessu fólki og verkefnum'
Donate: 'Styrkja'
Profile:
Profile Select: 'Val á notkunarsniði'
Profile Filter: 'Sía notkunarsnið'
All Channels: 'Allar rásir'
Profile Manager: 'Sýsla með notkunarsnið'
Create New Profile: 'Búa til nýtt notkunarsnið'
Edit Profile: 'Breyta notkunarsniði'
Color Picker: 'Litaplokkari'
Custom Color: 'Sérsniðinn litur'
Profile Preview: 'Forskoðun notkunarsniðs'
Create Profile: 'Búa til notkunarsnið'
Update Profile: 'Uppfæra notkunarsnið'
Make Default Profile: 'Gera að sjálfgefnu notkunarsniði'
Delete Profile: 'Eyða notkunarsniði'
Are you sure you want to delete this profile?: 'Ertu viss um að þú viljir eyða þessu
notkunarsniði?'
All subscriptions will also be deleted.: 'Öllum áskriftum verður einnig eytt.'
Profile could not be found: 'Notkunarsnið fannst ekki'
Your profile name cannot be empty: 'Nafn notkunarsniðsins má ekki vera tómt'
Profile has been created: 'Notkunarsnið hefur verið útbúið'
Profile has been updated: 'Notkunarsnið hefur verið uppfært'
Your default profile has been set to $: 'Sjálfgefið notandasnið þitt hefur stillt
sem $'
Removed $ from your profiles: 'Fjarlægði $ úr notkunarsniðunum þínum'
Your default profile has been changed to your primary profile: 'Sjálfgefið notandasnið
þitt hefur stillt á aðalnotkunarsniðið þitt'
$ is now the active profile: '$ er núna virka notkunarsniðið'
Subscription List: 'Áskriftalisti'
Other Channels: 'Aðrar rásir'
$ selected: '$ valið'
Select All: 'Velja allt'
Select None: 'Velja ekkert'
Delete Selected: 'Eyða völdu'
Add Selected To Profile: 'Breyta völdu við notkunarsnið'
No channel(s) have been selected: 'Engin rás hefur verið valin'
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: 'Þetta er aðalnotkunarsnið þitt. Ertu viss um að þú viljir eyða völdu rásunum?
Þessum sömu rásum verður eytt úr öllum þeim notkunarsniðum þar sem þær finnast.'
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Ertu
viss um að þú viljir eyða völdu rásunum? Þetta mun ekki eyða rásunum úr öðrum
notkunarsniðum.'
#On Channel Page
Channel:
Subscriber: 'Áskrifandi'
Subscribers: 'Áskrifendur'
Subscribe: 'Gerast áskrifandi'
Unsubscribe: 'Segja upp áskrift'
Channel has been removed from your subscriptions: 'Rás var fjarlægð úr áskriftunum
þínum'
Removed subscription from $ other channel(s): 'Fjarlægði áskrift úr $ rás(um) til
viðbótar'
Added channel to your subscriptions: 'Bætti rás í áskriftirnar þínar'
Search Channel: 'Leita á rás'
Your search results have returned 0 results: 'Leitin skilaði 0 niðurstöðum'
Sort By: 'Raða eftir'
Videos:
Videos: 'Myndskeið'
This channel does not currently have any videos: 'Þessi rás er ekki með nein myndskeið'
Sort Types:
Newest: 'Nýjast'
Oldest: 'Elst'
Most Popular: 'Vinsælast'
Playlists:
Playlists: 'Spilunarlistar'
This channel does not currently have any playlists: 'Þessi rás er ekki með neina
spilunarlista'
Sort Types:
Last Video Added: 'Síðast viðbætta myndskeið'
Newest: 'Nýjast'
Oldest: 'Elst'
About:
About: 'Um rásina'
Channel Description: 'Lýsing á rás'
Featured Channels: 'Rásir í deiglunni'
Video:
Mark As Watched: 'Merkja sem búið að horfa á'
Remove From History: 'Fjarlægja úr vinnsluferli'
Video has been marked as watched: 'Myndskeið hefur verið merkt sem skoðað'
Video has been removed from your history: 'Myndskeið hefur verið fjarlægt úr vinnsluferlinum
þínum'
Save Video: 'Vista myndskeið'
Video has been saved: 'Myndskeið hefur verið vistað'
Video has been removed from your saved list: 'Myndskeið hefur verið fjarlægt úr
listanum yfir vistað'
Open in YouTube: 'Opna í YouTube'
Copy YouTube Link: 'Afrita YouTube-tengil'
Open YouTube Embedded Player: 'Opna ívafinn YouTube-spilara'
Copy YouTube Embedded Player Link: 'Afrita tengil á ívafinn YouTube-spilara'
Open in Invidious: 'Opna í Invidious'
Copy Invidious Link: 'Afrita Invidious-tengil'
Open Channel in YouTube: 'Opna rás í YouTube'
Copy YouTube Channel Link: 'Afrita tengil YouTube-rásar'
Open Channel in Invidious: 'Opna rás í Invidious'
Copy Invidious Channel Link: 'Afrita tengil Invidious-rásar'
View: 'Áhorf'
Views: 'Áhorf'
Loop Playlist: 'Endurtaka spilunarlista endalaust'
Shuffle Playlist: 'Stokka spilunarlista'
Reverse Playlist: 'Snúa við spilunarlista'
Play Next Video: 'Spila næsta myndskeið'
Play Previous Video: 'Spila fyrra myndskeið'
# Context is "X People Watching"
Watching: 'Verið að horfa'
Watched: 'Búið að horfa'
Autoplay: 'Spila sjálfkrafa'
Starting soon, please refresh the page to check again: 'Byrjar bráðum, endurlestu
síðuna til að fylgjast með'
# As in a Live Video
Live: 'Beint'
Live Now: 'Í beinni útsendingu núna'
Live Chat: 'Spjall í beinni'
Enable Live Chat: 'Virkja spjall í beinni'
Live Chat is currently not supported in this build.: 'Spjall í beinni er ekki stutt
í þessari byggingarútgáfu.'
'Chat is disabled or the Live Stream has ended.': 'Spjall er óvirkt eða að beinu
streymi er lokið.'
Live chat is enabled. Chat messages will appear here once sent.: 'Beint spjall
er virkt. Skilaboð spjallsins munu birtast hér.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Spjall
í beinni er ekki stutt í Invidious API-kerfisviðmótinu. Nauðsynlegt er að vera
með beina tengingu við YouTube.'
Download Video: 'Sækja myndskeið'
video only: 'einungis myndmerki'
audio only: 'einungis hljóð'
Audio:
Low: 'Lág'
Medium: 'Miðlungs'
High: 'Há'
Best: 'Besta'
Published:
Jan: 'Jan'
Feb: 'Feb'
Mar: 'Mar'
Apr: 'Apr'
May: 'Maí'
Jun: 'Jún'
Jul: 'Júl'
Aug: 'Ágú'
Sep: 'Sep'
Oct: 'Okt'
Nov: 'Nóv'
Dec: 'Des'
Second: 'sekúndu'
Seconds: 'sekúndum'
Minute: 'mínútu'
Minutes: 'mínútum'
Hour: 'klukkustund'
Hours: 'klukkustundum'
Day: 'degi'
Days: 'dögum'
Week: 'viku'
Weeks: 'vikum'
Month: 'mánuði'
Months: 'mánuðum'
Year: 'ári'
Years: 'árum'
Ago: 'síðan'
Upcoming: 'Frumsýnt'
Published on: 'Gefið út'
Streamed on: 'Streymt'
Started streaming on: 'Byrjaði streymi'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'Fyrir $ % síðan'
#& Videos
translated from English: þýtt úr ensku
Sponsor Block category:
music offtopic: tónlist óskyld efni
interaction: gagnvirkni
self-promotion: sjálfskynning
intro: kynning
sponsor: kostunaraðili
Skipped segment: Búti sleppt
Videos:
#& Sort By
Sort By:
Newest: 'Nýjast'
Oldest: 'Elst'
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: 'Sjá allan spilunarlistann'
Videos: 'Myndskeið'
View: 'Áhorf'
Views: 'Áhorf'
Last Updated On: 'Síðast uppfært'
Share Playlist:
Share Playlist: 'Deila spilunarlista'
Copy YouTube Link: 'Afrita YouTube-tengil'
Open in YouTube: 'Opna í YouTube'
Copy Invidious Link: 'Afrita Invidious-tengil'
Open in Invidious: 'Opna í Invidious'
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'Víxla bíóham af/á'
Change Format:
Change Video Formats: 'Skipta um myndskeiðasnið'
Use Dash Formats: 'Nota DASH-skráasnið'
Use Legacy Formats: 'Nota eldri skráasnið'
Use Audio Formats: 'Nota hljóðskráasnið'
Dash formats are not available for this video: 'DASH-skráasnið eru ekki tiltæk fyrir
þetta myndskeið'
Audio formats are not available for this video: 'Hljóðskráasnið eru ekki tiltæk
fyrir þetta myndskeið'
Share:
Share Video: 'Deila myndskeiði'
Include Timestamp: 'Hafa með tímamerki'
Copy Link: 'Afrita tengil'
Open Link: 'Opna tengil'
Copy Embed: 'Afrita ívafið'
Open Embed: 'Opna ívafið'
# On Click
Invidious URL copied to clipboard: 'Invidious-slóð afrituð á klippispjaldið'
Invidious Embed URL copied to clipboard: 'Ívafin Invidious-slóð afrituð á klippispjaldið'
Invidious Channel URL copied to clipboard: 'Slóð Invidious-rásar afrituð á klippispjaldið'
YouTube URL copied to clipboard: 'YouTube-slóð afrituð á klippispjaldið'
YouTube Embed URL copied to clipboard: 'Ívafin YouTube-slóð afrituð á klippispjaldið'
YouTube Channel URL copied to clipboard: 'Slóð YouTube-rásar afrituð á klippispjaldið'
Mini Player: 'Smáspilari'
Comments:
Comments: 'Athugasemdir'
Click to View Comments: 'Smelltu til að skoða athugasemdir'
Getting comment replies, please wait: 'Sæki svör við athugasemdum, bíddu aðeins'
There are no more comments for this video: 'Það eru engar fleiri athugasemdir við
þetta myndskeið'
Show Comments: 'Birta athugasemdir'
Hide Comments: 'Fela athugasemdir'
Sort by: 'Raða eftir'
Top comments: 'Efstu athugasemdir'
Newest first: 'Nýjasta fyrst'
# Context: View 10 Replies, View 1 Reply
View: 'Skoða'
Hide: 'Fela'
Replies: 'Svör'
Reply: 'Svara'
There are no comments available for this video: 'Engar athugasemdir eru tiltækar
fyrir þetta myndskeið'
Load More Comments: 'Hlaða inn fleiri athugasemdum'
No more comments available: 'Engar fleiri athugasemdir eru tiltækar'
Up Next: 'Næst í spilun'
#Tooltips
Tooltips:
General Settings:
Preferred API Backend: 'Veldu bakendann sem FreeTube notar til að ná í gögn. Staðværa
API-kerfisviðmótið er innbyggður skrapari. Invidious API-kerfisviðmótið krefst
tengingar við Invidious-netþjón.'
Fallback to Non-Preferred Backend on Failure: 'Þegar forgangsbakendi API-kerfisviðmóts
á í vandræðum, mun FreeTube reyna sjálfkrafa að nota ekki-forgangsbakenda API-kerfisviðmóts
sem varaleið, þegar þetta er virkjað.'
Thumbnail Preference: 'Öllum smámyndum í FreeTube verður skipt út fyrir ramma
með myndskeiðinu í stað sjálfgefinnar smámyndar.'
Invidious Instance: 'Tilvik Invidious-netþjóns sem FreeTube mun tengjast fyrir
beðnir í API-kerfisviðmót. Hreinsaðu út fyrirliggjandi tilvik til að sjá lista
yfir opinber tilvik sem hægt er að velja um.'
Region for Trending: 'Landssvæði sem skal miða vinsældir við gerir þér kleift
að velja í hvaða landi aukning á vinsældum í umræðunni skal miða við. Ekki eru
öll löndin sem birtast raunverulega studd af YouTube.'
Player Settings:
Force Local Backend for Legacy Formats: 'Virkar bara þegar Invidious API-kerfisviðmótið
er sjálfgefið hjá þér. Þegar þetta er virkt, mun staðværa API-kerfisviðmótið
keyra og nota þau eldri skráasnið sem finnast í stað þeirra sem Invidious gefur
upp. Hjálpar til þegar myndskeið sem Invidious gefur upp spilast ekki vegna
landsháðra takmarkana.'
Proxy Videos Through Invidious: 'Mun tengjast við Invidious til að miðla myndskeiðum
í stað þess að tengjast beint við YouTube. Tekur fram fyrir valin API-kerfisviðmót.'
Default Video Format: 'Stillu skráasniðin sem notuð eru við afspilun myndskeiða.
DASH-snið (Dynamic Adaptive Streaming over HTTP) er hægt að spila í meiri gæðum.
Eldri snið takmarkast við 720p en nota minni bandbreidd. Hljóðsnið eru streymi
einungis með hljóði.'
Subscription Settings:
Fetch Feeds from RSS: 'Þegar þetta er virkt, mun FreeTube nota RSS í stað sjálfgefinnar
aðferðar við að safna streymi áskriftarinnar þinnar. RSS er hraðvirkara og kemur
í veg fyrir útilokun IP-vistfanga, en nær ekki að birta ákveðnar upplýsingar
á borð við tímalengd myndskeiða eða stöðu í beinni útsendingu'
# 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ð
afrita)'
Invidious API Error (Click to copy): 'Villa í Invidious API-kerfisviðmóti (smella
til að afrita)'
Falling back to Invidious API: 'Nota til vara Invidious API-kerfisviðmót'
Falling back to the local API: 'Nota til vara staðvært API-kerfisviðmót'
This video is unavailable because of missing formats. This can happen due to country unavailability.: 'Þetta
myndskeiðer ekki tiltækt vegna þess að það vantar skráasnið. Þetta getur gest ef
þau eru ekki tiltæk í viðkomandi landi.'
Subscriptions have not yet been implemented: 'Áskriftir eru enn ekki frágengnar'
Loop is now disabled: 'Endurtekning er núna óvirk'
Loop is now enabled: 'Endurtekning er núna virk'
Shuffle is now disabled: 'Stokkun er núna óvirk'
Shuffle is now enabled: 'Stokkun er núna virk'
The playlist has been reversed: 'Spilunarlistanum hefur verið snúið'
Playing Next Video: 'Spila næsta myndskeið'
Playing Previous Video: 'Spila fyrra myndskeið'
Playing Next Video Interval: 'Spila næsta myndskeið strax. Smelltu til að hætta við.
| Spila næsta myndskeið eftir {nextVideoInterval} sekúndu. Smelltu til að hætta
við. | Spila næsta myndskeið eftir {nextVideoInterval} sekúndur. Smelltu til að
hætta við.'
Canceled next video autoplay: 'Hætti við sjálfvirka afspilun næsta myndskeiðs'
'The playlist has ended. Enable loop to continue playing': 'Spilunarlistinn er kominn
út á enda. Virkjaðu óendanlega endurtekningu til að halda afspilun áfram'
Yes: 'Já'
No: 'Nei'
Hashtags have not yet been implemented, try again later: Ekki er ennþá stuðningur
við myllumerki (hashtags), prófaðu aftur síðar
Unknown YouTube url type, cannot be opened in app: Óþekkt gerð YouTube-slóðar, er
ekki hægt að opna í forritinu
Open New Window: Opna í nýjum glugga

View File

@ -65,7 +65,7 @@ Search Filters:
Fetching results. Please wait: 'Caricamento risultati. Attendi'
Fetch more results: 'Carica più risultati'
# Sidebar
There are no more results for this search: Non ci sono altri risultati per questa
There are no more results for this search: Non ci sono più risultati per questa
ricerca
Subscriptions:
# On Subscriptions Page
@ -86,11 +86,11 @@ Playlists: 'Playlist'
User Playlists:
Your Playlists: 'Le tue playlist'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: La
lista preferiti è vuota. Clicca sul tasto salva in basso a destra di un video
lista preferiti è vuota. Clicca sul tasto Salva in basso a destra di un video
per vederlo qui
Playlist Message: Questa pagina non è rappresentativa di una playlist completa.
Mostra solo video che hai salvato o aggiunti ai preferiti. A lavoro finito, tutti
i video attualmente qui verrano spostati in una playlist dei 'preferiti'.
i video attualmente qui verrano spostati in una playlist dei «Preferiti».
History:
# On History Page
History: 'Cronologia'
@ -126,7 +126,8 @@ Settings:
#! List countries
Check for Latest Blog Posts: Controlla gli ultimi post del blog
Check for Updates: Controlla gli aggiornamenti
View all Invidious instance information: Espandi informazioni delle istanze Invidious
View all Invidious instance information: Visualizza tutti i dati della istanza
Invidious
Theme Settings:
Theme Settings: 'Impostazioni Tema'
Match Top Bar with Main Color: 'Abbina la barra superiore con il colore principale'
@ -186,6 +187,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Intervallo video successivo nella playlist
Privacy Settings:
Privacy Settings: 'Impostazioni privacy'
Remember History: 'Salva la Cronologia'
@ -293,6 +295,7 @@ Settings:
Hide Live Chat: Nascondi la chat live
Hide Video Likes And Dislikes: Nascondi Mi piace e Non mi piace
Hide Active Subscriptions: Nascondi le iscrizioni attive
Hide Playlists: Nascondi le playlist
The app needs to restart for changes to take effect. Restart and apply change?: L'applicazione
deve essere riavviata per applicare i cambiamenti. Riavviare e applicare i cambiamenti
ora?
@ -308,8 +311,8 @@ Settings:
Country: Paese
Ip: Ip
Your Info: Le tue informazioni
Test Proxy: Test Proxy
Clicking on Test Proxy will send a request to: Cliccando su "Testa Proxy" verrà
Test Proxy: Testa proxy
Clicking on Test Proxy will send a request to: Cliccando su «Testa proxy» verrà
inviata una richiesta a
Proxy Port Number: Numero di porta Proxy
Proxy Host: Host Proxy
@ -349,7 +352,7 @@ About:
Blog: Blog
GitHub issues: Segnalazioni GitHub
Report a problem: Segnala un problema
FAQ: Domande Frequenti
FAQ: Domande frequenti
FreeTube Wiki: Wiki FreeTube
Help: Aiuto
Downloads / Changelog: Download / Changelog
@ -360,11 +363,11 @@ About:
Translate: Traduci
room rules: Regole stanza
Please read the: Si prega di leggere
Chat on Matrix: Chat su Matrix
Chat on Matrix: Chatta su Matrix
Mastodon: Mastodon
Email: Email
Email: E-mail
Website: Sito web
Please check for duplicates before posting: Perfavore controlla se ci sono duplicati
Please check for duplicates before posting: Per favore controlla se ci sono duplicati
prima di pubblicare
View License: Vedi licenza
Licensed under the AGPLv3: Distribuito sotto la licenza AGPLv3
@ -631,6 +634,7 @@ Profile:
Profile Manager: Gestione Profili
All Channels: Tutti i Canali
Profile Select: Seleziona il Profilo
Profile Filter: Filtro profilo
This video is unavailable because of missing formats. This can happen due to country unavailability.: Questo
video non è disponibile a causa di alcuni formati mancanti. Questo può succedere
in caso di mancata disponibilità del paese.
@ -650,7 +654,7 @@ Tooltips:
Fetch Feeds from RSS: Quando abilitato, FreeTube userà gli RSS invece del metodo
standard per leggere la tua lista istrizioni. Gli RSS sono più veloci e impediscono
il blocco dell'IP ma non mostrano informazioni come la durata video o lo stato
delle live
delle dirette
General Settings:
Invidious Instance: L'istanza Invidious che FreeTube usa per le chiamate API.
Pulisci l'istanza attuale per vedere una lista di istanze pubbliche da cui scegliere
@ -665,3 +669,8 @@ Tooltips:
Region for Trending: La regione delle tendenze permette di scegliere la nazione
di cui si vogliono vedere i video di tendenza. Non tutte le nazioni mostrate
sono ufficialmente supportate da YouTube
Playing Next Video Interval: Riproduzione del video successivo in pochissimo tempo.
Fare clic per annullare. | Riproduzione del video successivo tra {nextVideoInterval}
secondo. Fare clic per annullare. | Riproduzione del video successivo tra {nextVideoInterval}
secondi. Fare clic per annullare.
More: Altro

View File

@ -176,6 +176,8 @@ Settings:
1440p: '1440p'
4k: '4K'
8k: '8K'
Playlist Next Video Interval: 次の再生リストを再生する間隔
Next Video Interval: 次のビデオまでの間隔
Subscription Settings:
Subscription Settings: '登録チャンネルの設定'
Hide Videos on Watch: '視聴済み動画の非表示'
@ -224,6 +226,7 @@ Settings:
Privacy Settings: 個人情報の設定
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。
Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除
Automatically Remove Video Meta Files: 動画のメタファイルの自動削除
Data Settings:
How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか?
Unknown data key: 不明なデータ キー
@ -266,6 +269,7 @@ Settings:
Hide Video Likes And Dislikes: 評価の非表示
Distraction Free Settings: 集中モード
Hide Active Subscriptions: 使用中の登録チャンネルの非表示
Hide Playlists: 再生リストの非表示
The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: ネットワーク情報の取得中にエラーが発生しました。プロキシーを正しく設定してますか?
@ -318,9 +322,9 @@ About:
Please read the: 確認してください
Chat on Matrix: Matrix でチャット
Mastodon: Mastodon
Email: メール アドレス
Email: 電子メール
Blog: ブログ
Website: WEB サイト
Website: ウェブサイト
Please check for duplicates before posting: 投稿する前に重複を確認してください
GitHub issues: GitHub の課題ツール
Report a problem: 問題の報告
@ -415,7 +419,7 @@ Video:
Minute:
Published on: '公開日'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ %前'
Publicationtemplate: '$ % 前'
#& Videos
Video has been removed from your history: 動画を履歴から削除しました
Remove From History: 履歴から削除
@ -445,6 +449,7 @@ Video:
Video has been removed from your saved list: 動画を保存一覧から削除しました
Video has been saved: ビデオを保存しました
Save Video: 動画の保存
translated from English: 英語から翻訳
Videos:
#& Sort By
Sort By:
@ -566,6 +571,7 @@ Profile:
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: これは上位のプロファイルです。選択したチャンネルを削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
Profile Filter: プロファイルのフィルター
The playlist has been reversed: 再生リストを逆順にしました
A new blog is now available, $. Click to view more: '新着ブログ公開、$。クリックしてブログを読む'
Download From Site: サイトからダウンロード
@ -588,3 +594,11 @@ Tooltips:
Fallback to Non-Preferred Backend on Failure: 有効にすると、選択した API で取得できなければ、FreeTube
は自動的に他の API での取得を試みます。
Region for Trending: 急上昇の地域設定では、急上昇動画を表示する国を選択できます。YouTube は、すべての国に対応していません。
Privacy Settings:
Remove Video Meta Files: 有効にすると、FreeTube はビデオ再生中に作成したメタファイルは、再生ページを閉じるときに自動的に削除されます。
Playing Next Video Interval: すぐに次のビデオを再生します。クリックするとキャンセル。|次のビデオを {nextVideoInterval}
秒で再生します。クリックするとキャンセル。|次のビデオを {nextVideoInterval} 秒で再生します。クリックするとキャンセル。
More: もっと見る
Hashtags have not yet been implemented, try again later: ハッシュタグは未実装です。実装後に実行してください
Unknown YouTube url type, cannot be opened in app: 不明な YouTube URL の種類、アプリで実行できません
Open New Window: 新しいウィンドウを開く

View File

@ -126,6 +126,7 @@ Settings:
(기본설정은 https://invidious.snopyta.org)'
Region for Trending: '트렌드 국가'
#! List countries
View all Invidious instance information: Indivious 서버의 전체 목록 보기
Theme Settings:
Theme Settings: '테마 설정'
Match Top Bar with Main Color: '상단바를 메인컬러와 동기화'
@ -185,6 +186,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: 재생 목록 다음 비디오 간격
Privacy Settings:
Privacy Settings: '개인정보 설정'
Remember History: '기록 저장하기'
@ -213,36 +215,40 @@ Settings:
Hide Trending Videos: '현재 트렌딩 영상 숨기기'
Hide Popular Videos: '인기 영상 숨기기'
Hide Live Chat: '실시간 댓글 숨기기'
Hide Playlists: 재생 목록 숨기기
Hide Active Subscriptions: 활성 구독 숨기기
Data Settings:
Data Settings: '데이터 설정'
Select Import Type: '구독 및 재생 목록 가져오기 형식 고르기'
Select Export Type: '구독 및 재생 목록 내보내기 형식 고르기'
Select Import Type: '가져오기 유형 선택'
Select Export Type: '내보내기 유형 선택'
Import Subscriptions: '구독 목록 가져오기'
Import FreeTube: '구독 목록 가져오기: 형식 Freetube'
Import YouTube: '구독 목록 가져오기 형식: 유투브'
Import NewPipe: '구독 목록 가져오기 형식: NewPipe'
Check for Legacy Subscriptions: ''
Import FreeTube: 'FreeTube 가져오기'
Import YouTube: 'YouTube 가져오기'
Import NewPipe: 'NewPipe 가져오기'
Check for Legacy Subscriptions: '레거시 구독 확인'
Export Subscriptions: '구독 목록 내보내기'
Export FreeTube: '구독 목록 내보내기 형식: FreeTube'
Export YouTube: '구독 목록 내보내기 형식: 유투브'
Export NewPipe: '구독 목록 내보내기 형식: NewPipe'
Export FreeTube: 'FreeTube 내보내기'
Export YouTube: 'YouTube 내보내기'
Export NewPipe: 'NewPipe 내보내기'
Import History: '재생 기록 가져오기'
Export History: '재생 기록 내보내기'
Profile object has insufficient data, skipping item: ''
All subscriptions and profiles have been successfully imported: ''
All subscriptions have been successfully imported: ''
One or more subscriptions were unable to be imported: ''
Invalid subscriptions file: ''
This might take a while, please wait: ''
Invalid history file: ''
Subscriptions have been successfully exported: ''
History object has insufficient data, skipping item: ''
All watched history has been successfully imported: ''
All watched history has been successfully exported: ''
Unable to read file: ''
Unable to write file: ''
Unknown data key: ''
How do I import my subscriptions?: ''
Profile object has insufficient data, skipping item: '프로필 개체에 데이터가 부족하여 항목을 건너뜁니다'
All subscriptions and profiles have been successfully imported: '모든 구독 및 프로필을
성공적으로 가져왔습니다'
All subscriptions have been successfully imported: '모든 구독을 성공적으로 가져왔습니다'
One or more subscriptions were unable to be imported: '하나 이상의 구독을 가져올 수 없습니다'
Invalid subscriptions file: '잘못된 구독 파일입니다'
This might take a while, please wait: '시간이 좀 걸릴 수 있습니다. 잠시 기다려 주십시오'
Invalid history file: '잘못된 기록 파일입니다'
Subscriptions have been successfully exported: '구독을 성공적으로 내보냈습니다'
History object has insufficient data, skipping item: '기록 개체에 데이터가 부족하여 항목을 건너뜁니다'
All watched history has been successfully imported: '시청한 모든 기록을 성공적으로 가져왔습니다'
All watched history has been successfully exported: '시청한 모든 기록이 성공적으로 내보내졌습니다'
Unable to read file: '파일을 읽을 수 없습니다'
Unable to write file: '파일을 쓸 수 없습니다'
Unknown data key: '알 수 없는 데이터 키입니다'
How do I import my subscriptions?: '구독을 가져오려면 어떻게 해야 합니까?'
Manage Subscriptions: 구독 관리
Advanced Settings:
Advanced Settings: ''
Enable Debug Mode (Prints data to the console): ''
@ -265,9 +271,24 @@ Settings:
#& Yes
#& No
Proxy Settings:
Error getting network information. Is your proxy configured properly?: 네트워크 정보를
가져오는 중 오류가 발생했습니다. 프록시가 올바르게 구성되어 있습니까?
City: 도시
Region: 지역
Country: 국가
Ip: Ip
Your Info: 사용자 정보
Test Proxy: 프록시 테스트
Clicking on Test Proxy will send a request to: 프록시 테스트를 클릭하면 다음 주소로 요청이 전송됩니다
Proxy Port Number: 프록시 포트 번호
Proxy Host: 프록시 호스트
Proxy Protocol: 프록시 프로토콜
Enable Tor / Proxy: Tor / Proxy 사용
Proxy Settings: 프록시 설정
About:
#On About page
About: ''
About: '정보'
#& About
'This software is FOSS and released under the GNU Affero General Public License v3.0.': ''
@ -287,51 +308,78 @@ About:
Latest FreeTube News: ''
Donate: 기부
these people and projects: 이 사람들과 프로젝트
FreeTube is made possible by: FreeTube는 가능합니다
Credits: 제작
Translate: 번역
room rules: 방 규정
Please read the: 읽어주세요
Chat on Matrix: 매트릭스 채팅
Mastodon: Mastodon
Email: 이메일
Blog: 블로그
Website: 웹사이트
Please check for duplicates before posting: 게시하기 전에 중복 항목을 확인하십시오
GitHub issues: GitHub 이슈
Report a problem: 문제 보고
FAQ: FAQ
FreeTube Wiki: FreeTube Wiki
Help: 도움말
GitHub releases: GitHub 릴리스
Downloads / Changelog: 다운로드 / 변경 로그
View License: 라이센스 보기
Licensed under the AGPLv3: AGPLv3에 따라 라이센스가 부여됨
Source code: 소스 코드
Beta: 베타
Profile:
Profile Select: ''
All Channels: ''
Profile Manager: ''
Create New Profile: ''
Edit Profile: ''
Color Picker: ''
Custom Color: ''
Profile Preview: ''
Create Profile: ''
Update Profile: ''
Make Default Profile: ''
Delete Profile: ''
Are you sure you want to delete this profile?: ''
All subscriptions will also be deleted.: ''
Profile could not be found: ''
Your profile name cannot be empty: ''
Profile has been created: ''
Profile has been updated: ''
Your default profile has been set to $: ''
Removed $ from your profiles: ''
Your default profile has been changed to your primary profile: ''
$ is now the active profile: ''
Subscription List: ''
Other Channels: ''
$ selected: ''
Select All: ''
Select None: ''
Delete Selected: ''
Add Selected To Profile: ''
No channel(s) have been selected: ''
Profile Select: '프로필 선택'
All Channels: '모든 채널'
Profile Manager: '프로필 관리자'
Create New Profile: '새 프로파일 작성'
Edit Profile: '프로필 편집'
Color Picker: '색상 선택기'
Custom Color: '사용자 지정 색'
Profile Preview: '프로필 미리보기'
Create Profile: '프로필 작성'
Update Profile: '프로필 업데이트'
Make Default Profile: '기본 프로파일 만들기'
Delete Profile: '프로필 삭제'
Are you sure you want to delete this profile?: '이 프로필을 삭제하시겠습니까?'
All subscriptions will also be deleted.: '모든 구독도 삭제됩니다.'
Profile could not be found: '프로필을 찾을 수 없습니다'
Your profile name cannot be empty: '프로필 이름은 비워 둘 수 없습니다'
Profile has been created: '프로필이 생성되었습니다'
Profile has been updated: '프로필이 업데이트되었습니다'
Your default profile has been set to $: '기본 프로필이 $로 설정되었습니다'
Removed $ from your profiles: '프로필에서 $가 제거되었습니다'
Your default profile has been changed to your primary profile: '기본값 프로필이 기본 프로필로
변경되었습니다'
$ is now the active profile: '$가 현재 활성 프로필입니다'
Subscription List: '구독 목록'
Other Channels: '기타 채널'
$ selected: '$선택되었습니다'
Select All: '모두 선택'
Select None: '선택 안 함'
Delete Selected: '선택한 항목 삭제'
Add Selected To Profile: '프로필에 선택한 항목 추가'
No channel(s) have been selected: '선택된 채널이 없습니다'
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: ''
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: ''
: '이것은 귀하의 기본 프로필입니다. 선택한 채널을 삭제하시겠습니까? 동일한 채널이 발견되는 모든 프로필에서 삭제됩니다.'
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '선택한
채널을 삭제하시겠습니까? 다른 프로파일에서는 채널이 삭제되지 않습니다.'
#On Channel Page
Profile Filter: 프로필 필터
Channel:
Subscriber: ''
Subscribers: ''
Subscribe: ''
Unsubscribe: ''
Channel has been removed from your subscriptions: ''
Removed subscription from $ other channel(s): ''
Added channel to your subscriptions: ''
Search Channel: ''
Subscriber: '구독자'
Subscribers: '구독자'
Subscribe: '구독'
Unsubscribe: '구독 취소'
Channel has been removed from your subscriptions: '채널이 구독에서 제거되었습니다'
Removed subscription from $ other channel(s): '$ 다른 채널에서 구독을 제거했습니다'
Added channel to your subscriptions: '구독에 채널을 추가했습니다'
Search Channel: '채널 검색'
Your search results have returned 0 results: ''
Sort By: ''
Videos:
@ -534,3 +582,4 @@ Canceled next video autoplay: ''
Yes: ''
No: ''
More: 더 보기

View File

@ -1,12 +1,12 @@
# Put the name of your locale in the same language
Locale Name: 'Latina'
Locale Name: 'Latina (LA)'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Haec programmatis pars perfecta non est. Remea cum in hac profectum sit.
# Webkit Menu Bar
File: ''
File: 'volumen'
Quit: 'Exi'
Edit: 'Muta'
Undo: 'Tolle'

View File

@ -18,11 +18,11 @@ Delete: 'Slett'
Select all: 'Velg alt'
Reload: 'Last inn på nytt'
Force Reload: 'Tving gjeninnlasting'
Toggle Developer Tools: 'Veksle utviklerverktøy'
Toggle Developer Tools: 'Utviklerverktøy'
Actual size: 'Faktisk størrelse'
Zoom in: 'Forstørr'
Zoom out: 'Forminsk'
Toggle fullscreen: 'Veksle fullskjermsvisning'
Toggle fullscreen: 'Fullskjermsvisning'
Window: 'Vindu'
Minimize: 'Minimer'
Close: 'Lukk'
@ -30,7 +30,7 @@ Back: 'Tilbake'
Forward: 'Framover'
# Search Bar
Search / Go to URL: 'Søk / gå til nettadresse'
Search / Go to URL: 'Søk/gå til nettadresse'
# In Filter Button
Search Filters:
Search Filters: 'Søkefiltre'
@ -61,11 +61,10 @@ Search Filters:
Long (> 20 minutes): 'Lang (> 20 minutter)'
# On Search Page
Search Results: 'Søkeresultater'
Fetching results. Please wait: 'Henter resultater. Vent.'
Fetching results. Please wait: 'Henter resultater'
Fetch more results: 'Hent flere resultater'
# Sidebar
There are no more results for this search: Det er ikke flere resultat for dette
søket
There are no more results for this search: Søket ga ingen flere resultater
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonnementer'
@ -77,18 +76,18 @@ Subscriptions:
Getting Subscriptions. Please wait.: Henter abonnementer. Vent.
Load More Videos: Last flere videoer
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Denne
profilen har mange abonnementer. Påtvinger RSS for å unngå adgangsbegrensning.
profilen har mange abonnementer. Påtvinger RSS for å unngå adgangsbegrensning
Trending: 'På vei opp'
Most Popular: 'Mest populært'
Playlists: 'Spillelister'
User Playlists:
Your Playlists: 'Dine spillelister'
Playlist Message: Denne siden reflekterer ikke fullstendig fungerende spillelister.
Den lister kun opp videoer du har lagret eller favorittmerket. Når arbeidet er
fullført, vil alle videoer som vises her bli flyttet til en «Favoritt»-spilleliste.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Dine
lagrede videoer er tomme. klikk på "Lagre"-knappen i hjørnet av en video for å
liste den opp her.
Den viser kun videoer du har lagret eller favorittmerket. Når arbeidet er fullført,
vil alle videoer som vises her bli flyttet til en «Favoritt»-spilleliste.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Du
har ikke lagret noen videoer enda. Trykk på «Lagre»-knappen i hjørnet av en video
for å sende den hit
History:
# On History Page
History: 'Historikk'
@ -118,15 +117,16 @@ Settings:
Beginning: 'Begynnelsen'
Middle: 'Midten'
End: 'Slutten'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Individious-instans
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Individious-forekomst
(forvalget er https://invidious.snopyta.org)'
Region for Trending: 'Region for På vei opp'
Region for Trending: 'Region for «På vei opp»'
#! List countries
Check for Updates: Se etter oppdateringer
View all Invidious instance information: Vis info om alle Invidious-instanser
Check for Latest Blog Posts: Se etter nye bloggposter
View all Invidious instance information: Vis info om alle Invidious-forekomster
Check for Latest Blog Posts: Se etter nye blogginnlegg
System Default: Systemforvalg
Theme Settings:
Theme Settings: 'Tema innstillinger'
Theme Settings: 'Draktvalg'
Match Top Bar with Main Color: 'Bruk hovedfarge i toppbjelke'
Base Theme:
Base Theme: 'Hovedtema'
@ -134,7 +134,7 @@ Settings:
Dark: 'Mørk'
Light: 'Lys'
Main Color Theme:
Main Color Theme: 'Hovedfargedrakt'
Main Color Theme: 'Hovedfarge'
Red: 'Rød'
Pink: 'Rosa'
Purple: 'Lilla'
@ -143,38 +143,38 @@ Settings:
Blue: 'Blå'
Light Blue: 'Lyseblå'
Cyan: 'Cyanblå'
Teal: 'Turkis'
Teal: 'Blågrønn'
Green: 'Grønn'
Light Green: 'Lysegrønn'
Lime: 'Limegrønn'
Lime: 'Lime'
Yellow: 'Gul'
Amber: 'Rav'
Amber: 'Ravgul'
Orange: 'Oransje'
Deep Orange: 'Dyp oransje'
Secondary Color Theme: 'Sekundær fargedrakt'
Secondary Color Theme: 'Sekundærfarge'
#* Main Color Theme
UI Scale: Grensesnittskala
Disable Smooth Scrolling: Skru av myk rulling
Expand Side Bar by Default: Utvid sidestolpe som forvalg
Disable Smooth Scrolling: S av myk rulling
Expand Side Bar by Default: Utvidet sidefelt som forvalg
Player Settings:
Player Settings: 'Spillerinnstillinger'
Player Settings: 'Videoavspillingsinnstillinger'
Force Local Backend for Legacy Formats: 'Påtving lokal bakende for forelede formater'
Play Next Video: 'Spill av neste video'
Turn on Subtitles by Default: 'Slå på undertekster som standard'
Autoplay Videos: 'Auto-spill videoer'
Turn on Subtitles by Default: 'Undertekster som forvalg'
Autoplay Videos: 'Spill av videoer automatisk'
Proxy Videos Through Invidious: 'Mellomtjen videoer gjennom Invidious'
Autoplay Playlists: 'Autospillings-spillelister'
Autoplay Playlists: 'Spill av spillelister automatisk'
Enable Theatre Mode by Default: 'Kinomodus som standardvalg'
Default Volume: 'Standardvolum'
Default Playback Rate: 'Forvalgt avspillingshastighet'
Default Playback Rate: 'Avspillingshastighet'
Default Video Format:
Default Video Format: 'Forvalgt videoformat'
Default Video Format: 'Videoformat'
Dash Formats: 'DASH-formater'
Legacy Formats: 'Gamle formater'
Audio Formats: 'Lydformater'
Default Quality:
Default Quality: 'Forvalgt kvalitet'
Auto: 'Auto'
Default Quality: 'Kvalitetsinnstilling'
Auto: 'Automatisk'
144p: '144p'
240p: '240p'
360p: '360p'
@ -182,12 +182,14 @@ Settings:
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: 'UHD'
8k: '8k UHD'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Intervall for avspilling av neste i spilleliste
Next Video Interval: Intervall mellom videoer
Privacy Settings:
Privacy Settings: 'Personvernsinnstillinger'
Remember History: 'Husk historikk'
Save Watched Progress: 'Lagre framdriftsposisjon'
Save Watched Progress: 'Lagre visningsposisjon'
Clear Search Cache: 'Tøm søkehurtiglager'
Are you sure you want to clear out your search cache?: 'Tøm søkehurtiglager?'
Search cache has been cleared: 'Søkehurtiglager tømt'
@ -198,6 +200,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Er
du sikker på at du vil fjerne alle abonnementer og profiler? Dette kan ikke
angres.
Automatically Remove Video Meta Files: Fjern metadata automatisk fra videoer
Subscription Settings:
Subscription Settings: 'Abonnementsinnstillinger'
Hide Videos on Watch: 'Skjul sette videoer'
@ -255,11 +258,11 @@ Settings:
Manage Subscriptions: Håndter abonnementer
Unable to read file: Kunne ikke lese fil
Invalid subscriptions file: Ugyldig abonnementsfil
Profile object has insufficient data, skipping item: Profilobjekt har utilstrekkelig
data. Hopper over element.
Profile object has insufficient data, skipping item: Hopper over profilobjektet
siden det har utilstrekkelig data.
Check for Legacy Subscriptions: Se etter foreldede abonnementer
Subscriptions have been successfully exported: Abonnementer eksportert
This might take a while, please wait: Dette kan ta sin tid
This might take a while, please wait: Dette kan ta litt tid
Export History: Historikk-eksport
Import History: Historikk-import
Export NewPipe: NewPipe-eksport
@ -275,8 +278,8 @@ Settings:
Data Settings: Datainnstillinger
Proxy Settings:
Region: Region
Clicking on Test Proxy will send a request to: Klikk på «Test mellomtjener» for
å sende en forespørsel til
Clicking on Test Proxy will send a request to: Hvis du trykker på «Test mellomtjener»
sender vi en forespørsel til
Error getting network information. Is your proxy configured properly?: Klarte
ikke å hente nettverksinfo. Er din mellomtjener satt opp riktig?
Test Proxy: Test mellomtjener
@ -290,7 +293,7 @@ Settings:
Enable Tor / Proxy: Skru på Tor/mellomtjener
Proxy Settings: Mellomtjenerinnstillinger
Distraction Free Settings:
Hide Trending Videos: Gjem På vei opp
Hide Trending Videos: Skjul «På vei opp»
Hide Video Likes And Dislikes: Skjul video-gunst
Distraction Free Settings: Distraksjonsfri-innstillinger
Hide Active Subscriptions: Skjul aktive abonnementer
@ -299,9 +302,10 @@ Settings:
Hide Channel Subscribers: Skjul kanalabonnementer
Hide Popular Videos: Skjul populære videoer
Hide Video Views: Skjul videovisninger
Hide Live Chat: Gjem direktechat
Hide Live Chat: Skjul sanntidssludring
Hide Playlists: Skjul spillelister
The app needs to restart for changes to take effect. Restart and apply change?: Start
programmet på ny for å bruke de nye endringene?
programmet på ny for å ta i bruk endringene?
About:
#On About page
About: 'Om'
@ -389,8 +393,8 @@ Video:
din'
Open in YouTube: 'Åpne i YouTube'
Copy YouTube Link: 'Kopier YouTube-lenke'
Open YouTube Embedded Player: 'Åpne innebygd YouTube-spiller'
Copy YouTube Embedded Player Link: 'Kopier lenke til innebygd YouTube-spiller'
Open YouTube Embedded Player: 'Åpne innebygd YouTube-avspiller'
Copy YouTube Embedded Player Link: 'Kopier lenke til innebygd YouTube-avspiller'
Open in Invidious: 'Åpne i Invidious'
Copy Invidious Link: 'Kopier Invidious-lenke'
View: 'Vis'
@ -400,18 +404,17 @@ Video:
Watched: 'Sett'
# As in a Live Video
Live: 'Direkte'
Live Now: 'Direkte'
Live Chat: 'Direktechat'
Enable Live Chat: 'Slå på direktechat'
Live Chat is currently not supported in this build.: 'Direktechat er ikke støttet
i den nåværende versjonen.'
'Chat is disabled or the Live Stream has ended.': 'Chatten er slått av eller direktesendingen
er avsluttet.'
Live chat is enabled. Chat messages will appear here once sent.: 'Direktechat er
slått på. Chatmeldinger vil bli vist her når de er sendt.'
Live Now: 'Direkte'
Live Chat: 'Sanntidssludring'
Enable Live Chat: 'Slå på sanntidssludring'
Live Chat is currently not supported in this build.: 'Sanntidssludring støttes ikke
i denne versjonen.'
'Chat is disabled or the Live Stream has ended.': 'Sludringen er slått av, eller
er direktesendingen avsluttet.'
Live chat is enabled. Chat messages will appear here once sent.: 'Sanntidssludring
er påslått. Meldinger vil vises her når de er sendt.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Sanntidssludring
støttes for tiden ikke med Invidious-API-et. En direkte tilkobling til YouTube
kreves.'
støttes for tiden ikke med Invidious-API-et. Direkte tilkobling til YouTube kreves.'
Published:
Jan: 'Jan'
Feb: 'Feb'
@ -443,7 +446,7 @@ Video:
Minute: Minutt
Published on: 'Publisert'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % siden'
Publicationtemplate: '$ % siden'
#& Videos
Audio:
High: Høy
@ -471,6 +474,7 @@ Video:
Open Channel in YouTube: Åpne kanal i YouTube
Play Previous Video: Spill av forrige video
Play Next Video: Spill av neste video
translated from English: oversatt fra engelsk
Videos:
#& Sort By
Sort By:
@ -495,7 +499,7 @@ Playlist:
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'Veksle teatermodus'
Toggle Theatre Mode: 'Teatermodus'
Change Format:
Change Video Formats: 'Endre videoformater'
Use Dash Formats: 'Bruk DASH-formater'
@ -509,24 +513,24 @@ Share:
Share Video: 'Del video'
Copy Link: 'Kopier lenke'
Open Link: 'Åpne lenke'
Copy Embed: 'Kopier innebygd'
Open Embed: 'Åpne innebygd'
Copy Embed: 'Kopier innebyggingslenke'
Open Embed: 'Åpne innebyggingslenke'
# On Click
Invidious URL copied to clipboard: 'Invidious-nettadresse kopiert til utklippstavle'
Invidious Embed URL copied to clipboard: 'Innebygd Invidious-nettadresse kopiert
Invidious Embed URL copied to clipboard: 'Innebyggingslenke for Invidious kopiert
til utklippstavle'
YouTube URL copied to clipboard: 'YouTube-nettadresse kopiert til utklippstavle'
YouTube Embed URL copied to clipboard: 'Innebygd YouTube-nettadresse kopiert til
utklippstavle'
YouTube Channel URL copied to clipboard: YouTube-kanalnettadresse kopiert til utklippstavle
Include Timestamp: Inkluder tidsstempel
Invidious Channel URL copied to clipboard: Ugyldig kanalnettadresse kopiert til
Invidious Channel URL copied to clipboard: Invidious-kanalnettadresse kopiert til
utklippstavle
Mini Player: 'Minispiller'
Mini Player: 'Miniavspiller'
Comments:
Comments: 'Kommentarer'
Click to View Comments: 'Klikk for å vise kommentarer'
Getting comment replies, please wait: 'Henter kommentarsvar, vent.'
Getting comment replies, please wait: 'Henter kommentarsvar'
Show Comments: 'Vis kommentarer'
Hide Comments: 'Skjul kommentarer'
# Context: View 10 Replies, View 1 Reply
@ -534,8 +538,8 @@ Comments:
Hide: 'Skjul'
Replies: 'Svar'
Reply: 'Svar'
There are no comments available for this video: 'Det finnes ingen tilgjengelige
kommentarer for denne videoen'
There are no comments available for this video: 'Det er ingen kommentarer tilgjengelige
denne videoen'
Load More Comments: 'Last inn flere kommentarer'
No more comments available: Ingen flere kommentarer tilgjengelig
Newest first: Nyeste først
@ -581,7 +585,7 @@ Profile:
Are you sure you want to delete this profile?: Er du sikker på at du vil slette
denne profilen?
Delete Profile: Slett profil
Make Default Profile: Gjør til forvalgt profil
Make Default Profile: Angi som forvalgt profil
Update Profile: Oppdater profil
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: Er
du sikker på at du vil fjerne de valgte kanalene? Disse vil ikke bli slettet fra
@ -599,49 +603,62 @@ Profile:
All Channels: Alle kanaler
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: Dette er din hovedprofil. Er du sikker på at du ønsker å slette valgte kanaler?
: Dette er din hovedprofil. Er du sikker på at du ønsker å slette de valgte kanalene?
De samme kanalene vil bli slettet i enhver profil de finnes i.
Select None: Fravelg alt
Select None: Velg ingen
Delete Selected: Slett valgte
Add Selected To Profile: Legg til valgt i profil
Subscription List: Abonnementsliste
Profile Preview: Profilforhåndsvisning
Custom Color: Egendefinert farge
Profile Filter: Profilfilter
This video is unavailable because of missing formats. This can happen due to country unavailability.: Denne
videoen er utilgjengelig grunnet manglende formater. Dette kan skyldes tilgangbegrensninger
i ditt land.
Tooltips:
General Settings:
Invidious Instance: Invidious-forekomsten som FreeTube vil koble til for API-kall.
Fjern den gjeldene forekomsten for å se en liste over offentlige forekomster
å velge mellom
Invidious Instance: Invidious-forekomsten FreeTube kobler til for API-kall. Fjern
den gjeldene forekomsten for å se en liste over offentlige forekomster å velge
mellom.
Thumbnail Preference: Alle miniatyrbilder i FreeTube vil bli erstattet av et bilde
av videoen i stedet for standardminiatyrbildet
av videoen i stedet for forvalgt miniatyrbilde.
Fallback to Non-Preferred Backend on Failure: Når ditt foretrukne API har et problem,
vil FreeTube prøve å automatisk bruke ditt ikke-foretrukne API som en tilbakefallingsmetode
dersom det er aktivert
vil FreeTube automatisk prøve å bruke ditt ikke-foretrukne API som en tilbakefallsmetode
dersom det er aktivert.
Region for Trending: Trendregionen lar deg enkelt velge hvilkets lands populære
videoer du ønsker å vise. Ikke alle land som vises støttes for tiden av YouTube.
Preferred API Backend: Velg bakenden FreeTube bruker til å hente data. Det lokale
videoer du ønsker å vise. Ikke alle land som vises støttes av YouTube.
Preferred API Backend: Velg metoden FreeTube bruker til å hente data. Det lokale
API-et er en innebygd utpakker. Invidious-API-et krever en Invidious-tjener
å koble til.
Subscription Settings:
Fetch Feeds from RSS: Når påskrudd, vil FreeTube bruke RSS istedenfor dens forvalgte
metode for å hente din abonnementsstrøm. RSS er raskere og forhindrer IP-blokkering,
men har ikke gitt info som videovarighet, eller sanntidsstatus.
Fetch Feeds from RSS: Bruk RSS istedenfor FreeTube sin forvalgte metode for innhenting
av din abonnementsstrøm. RSS er raskere og forhindrer IP-blokkering, men mangler
noe info som videovarighet og sanntidsstatus.
Player Settings:
Default Video Format: Sett formater brukt når en video spilles. DASH-formater
kan spille høyere kvaliteter. Foreldede formater er begrenset til maks. 720p,
men bruker mindre båndbredde. Lydformater er kun lydstrømmer.
Force Local Backend for Legacy Formats: Fungerer kun når Invidious-API-et er satt
som forvalg. Når påslått vil det lokale API-et kjøre og bruke de foreldede formatene
Force Local Backend for Legacy Formats: Fungerer kun med Invidious-API-et som
forvalg. Når påslått vil det lokale API-et kjøre og bruke de foreldede formatene
som returneres derfra, istedenfor dem returnert av Invidious. Hjelper når videoer
returnert av Invidious ikke spilles som følge av regionsrestriksjoner.
Proxy Videos Through Invidious: Kobler til Invidious for å vertstjene videoer
istedenfor å gjøre direkte tilkoblinger til YouTube. (Overskriver API-preferanse.)
A new blog is now available, $. Click to view more: En ny bloggpost er nå tilgjengelig,
$. Klikk for å se den
Proxy Videos Through Invidious: Kobler til Invidious for å servere videoer istedenfor
å koble direkte til YouTube. Overstyrer API-innstilling.
Privacy Settings:
Remove Video Meta Files: Hvis denne instillingen er på, vil FreeTube automatisk
slette metadata generert under videoavspilling når du lukker avspillingsiden.
A new blog is now available, $. Click to view more: Et nytt blogginnlegg er nå tilgjengelig,
$. Trykk her for å se mer
The playlist has been reversed: Spillelisten har blitt snudd
Download From Site: Last ned fra nettsiden
Version $ is now available! Click for more details: Versjon $ er nå tilgjengelig.
Klikk for flere detaljer.
Download From Site: Last ned fra nettside
Version $ is now available! Click for more details: Versjon $ er nå tilgjengelig!
Trykk her for detaljer
Playing Next Video Interval: Spiller av neste video nå. Klikk for å avbryte. | Spiller
av neste video om {nextVideoInterval} sekund. Klikk for å avbryte. | Spiller av
neste video om {nextVideoInterval} sekunder. Klikk for å avbryte.
More: Mer
Unknown YouTube url type, cannot be opened in app: Ukjent YouTube-nettadressetype,
kan ikke åpnes i programmet
Hashtags have not yet been implemented, try again later: Emneknagger er ikke implementert
enda, prøv igjen senere
Open New Window: Åpne et nytt vindu

View File

@ -44,7 +44,7 @@ Search Filters:
Time:
Time: 'Tijd'
Any Time: 'Ooit'
Last Hour: 'Laatste uur'
Last Hour: 'Afgelopen uur'
Today: 'Vandaag'
This Week: 'Deze week'
This Month: 'Deze maand'
@ -62,7 +62,7 @@ Search Filters:
Long (> 20 minutes): 'Lang (> 20 minuten)'
# On Search Page
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'
# Sidebar
There are no more results for this search: Er zijn geen verdere resultaten voor
@ -70,24 +70,24 @@ Search Filters:
Subscriptions:
# On Subscriptions Page
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
heeft nog geen Abonnementen. Voeg abonnementen toe om ze hier te zien'
'Getting Subscriptions. Please wait.': ''
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
profiel heeft een groot aantal abonnementen. RSS wordt geforceerd om tariefbeperkingen
te voorkomen
Load More Videos: Laad Meer Video's
profiel heeft een groot aantal abonnementen. Forceer RSS om snelheidsbeperking
te vermijden
Load More Videos: Meer Video's Laden
Trending: 'Trending'
Most Popular: 'Populair'
Playlists: 'Afspeellijsten'
User Playlists:
Your Playlists: 'Uw afspeellijsten'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Je
opgeslagen video's is leeg. Klik op de video opslaan knop in de hoek van een video
om het hier in de lijst te plaatsen
opgeslagen video's is leeg. Klik op de opslaan knop in de hoek van een video om
het hier in de lijst te plaatsen
Playlist Message: Deze pagina is niet reflectief van volledig functionele afspeellijst.
Er worden alleen video's weergegeven die jij hebt opgeslagen of gefavoriet. Wanneer
we klaar zijn met de ontwikkeling van deze feature zullen al deze video's worden
@ -112,7 +112,7 @@ Settings:
Local API: 'Lokale API'
Invidious API: 'Invidious API'
Video View Type:
Video View Type: 'Video Toontype'
Video View Type: 'Type Videoweergave'
Grid: 'Raster'
List: 'Lijst'
Thumbnail Preference:
@ -130,14 +130,14 @@ Settings:
View all Invidious instance information: Bekijk alle Invidious-instantiegegevens
Theme Settings:
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: 'Basisthema'
Black: 'Zwart'
Dark: 'Donker'
Light: 'Licht'
Main Color Theme:
Main Color Theme: 'Primaire Themakleur'
Main Color Theme: 'Hoofdkleur Thema'
Red: 'Rood'
Pink: 'Roze'
Purple: 'Paars'
@ -161,7 +161,7 @@ Settings:
Disable Smooth Scrolling: Vloeiend Scrollen Uitschakelen
Player Settings:
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'
Turn on Subtitles by Default: 'Schakel Ondertiteling Standaard in'
Autoplay Videos: 'Video''s Automatisch Afspelen'
@ -171,10 +171,10 @@ Settings:
Default Volume: 'Standaard Volume'
Default Playback Rate: 'Standaard Afspeelsnelheid'
Default Video Format:
Default Video Format: 'Standaard Video-Indeling'
Dash Formats: 'Dash Indelingen'
Legacy Formats: 'Legacy Indelingen'
Audio Formats: 'Audio Indelingen'
Default Video Format: 'Standaard Videoformaat'
Dash Formats: 'DASH Formaten'
Legacy Formats: 'Verouderde formaten'
Audio Formats: 'Audio Formaten'
Default Quality:
Default Quality: 'Standaard Videokwaliteit'
Auto: 'Automatisch'
@ -187,22 +187,25 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Afspeellijst Volgende Video Tussentijd
Next Video Interval: Volgende Video Tussenpauze Duur
Privacy Settings:
Privacy Settings: 'Privacy Instellingen'
Remember History: 'Herinner Geschiedenis'
Save Watched Progress: 'Herinner Video Voortgang'
Clear Search Cache: 'Verwijder Zoek-cache'
Remember History: 'Onthoud Geschiedenis'
Save Watched Progress: 'Bewaar Bekeken Voortgang'
Clear Search Cache: 'Verwijder Zoek-Cache'
Are you sure you want to clear out your search cache?: 'Weet u zeker dat u de
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'
Are you sure you want to remove your entire watch history?: 'Weet u zeker dat
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
u zeker dat u alle abonnementen en profielen wil verwijderen? Dit kan niet worden
ontdaan.
Remove All Subscriptions / Profiles: Verwijder alle Abonnementen / Profielen
Automatically Remove Video Meta Files: Video-Metabestanden Automatisch Verwijderen
Subscription Settings:
Subscription Settings: 'Abonnement instellingen'
Hide Videos on Watch: 'Verberg Video''s Zodra Bekeken'
@ -248,7 +251,7 @@ Settings:
niet genoeg data, item word overgeslagen
Subscriptions have been successfully exported: Abonnementen zijn met succes geïmporteerd
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
One or more subscriptions were unable to be imported: Een of meer abonnementen
konden niet worden geïmporteerd
@ -292,9 +295,10 @@ Settings:
Hide Video Views: Verberg Weergaven
Distraction Free Settings: Afleidingsvrije Instellingen
Hide Active Subscriptions: Verberg Actieve Abonnementen
Hide Playlists: Verberg Afspeellijst
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
opstarten?
opstarten en verandering toepassen?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Fout bij
het opvragen van netwerk informatie. Is uw proxy correct geconfigureerd?
@ -305,7 +309,7 @@ Settings:
Your Info: Uw Informatie
Test Proxy: Test Proxy
Clicking on Test Proxy will send a request to: Door op Test Proxy te klikken zal
er een request worden verstuurd naar
er een verzoek worden verstuurd naar
Proxy Port Number: Proxy Poortnummer
Proxy Host: Proxy Host
Proxy Protocol: Proxy Protocol
@ -344,7 +348,7 @@ About:
#On Channel Page
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
Credits: Met dank aan
Translate: Vertalen
@ -352,7 +356,7 @@ About:
Please read the: Lees alstublieft de
Chat on Matrix: Chat op Matrix
Mastodon: Mastodon
Email: Email
Email: E-mail
Blog: Blog
Website: Website
Please check for duplicates before posting: Controleer op duplicaten voordat u een
@ -375,18 +379,19 @@ Channel:
Unsubscribe: 'Afmelden'
Search Channel: 'Zoek op Kanaal'
Your search results have returned 0 results: 'Uw zoekactie heeft 0 resultaten opgeleverd'
Sort By: 'Sorteer Bij'
Sort By: 'Sorteer Op'
Videos:
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:
Newest: 'Nieuwste'
Oldest: 'Oudste'
Most Popular: 'Meest Populair'
Playlists:
Playlists: 'Afspeellijsten'
This channel does not currently have any playlists: 'Dit kanaal heeft nog geen
afspeellijsten'
This channel does not currently have any playlists: 'Dit kanaal heeft momenteel
nog geen afspeellijsten'
Sort Types:
Last Video Added: 'Laatst Toegevoegd'
Newest: 'Nieuwste'
@ -464,12 +469,12 @@ Video:
#& Videos
Autoplay: Automatisch Afspelen
Play Previous Video: Speel Vorige Video af
Play Next Video: Volgende Video Automatisch Afspelen
Reverse Playlist: Playlist Omkeren
Shuffle Playlist: Schuifelen Playlist
Play Next Video: Volgende Video Afspelen
Reverse Playlist: Afspeellijst Omkeren
Shuffle Playlist: Afspeellijst in willekeurige volgorde afspelen
Loop Playlist: Herhaal Playlist
Starting soon, please refresh the page to check again: Begint spoedig, a.u.b. herlaad
de pagina om nog maal te checken
Starting soon, please refresh the page to check again: Start binnenkort, vernieuw
de pagina om opnieuw te controleren
Audio:
Best: Beste
High: Hoog
@ -488,6 +493,7 @@ Video:
video's lijst
Video has been saved: Video is opgeslagen
Save Video: Video Opslaan
translated from English: vertaald vanuit het engels
Videos:
#& Sort By
Sort By:
@ -514,13 +520,13 @@ Playlist:
#& Views
Toggle Theatre Mode: 'Schakel Theatermodus In'
Change Format:
Change Video Formats: 'Verander Video indeling'
Use Dash Formats: 'Gebruik Dash Indelingen'
Use Legacy Formats: 'Gebruik Legacy Indelingen'
Use Audio Formats: 'Gebruik Audio Indelingen'
Audio formats are not available for this video: Audio indelingen zijn niet beschikbaar
Change Video Formats: 'Verander Video Formaten'
Use Dash Formats: 'Gebruik DASH Formaten'
Use Legacy Formats: 'Gebruik Legacy Formaten'
Use Audio Formats: 'Gebruik Audio Formaten'
Audio formats are not available for this video: Audio formaten zijn niet beschikbaar
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
Share:
Share Video: 'Deel Video'
@ -535,7 +541,7 @@ Share:
YouTube URL copied to clipboard: 'YouTube URL is gekopieerd naar het klembord'
YouTube Embed URL copied to clipboard: 'YouTube Insluitlink is gekopieerd naar het
klemboard'
Include Timestamp: Begrijp Tijdstempel In
Include Timestamp: Inclusief Tijdstempel
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
het klembord
@ -543,7 +549,7 @@ Mini Player: 'Minispeler'
Comments:
Comments: 'Reacties'
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'
Hide Comments: 'Verberg Reacties'
# Context: View 10 Replies, View 1 Reply
@ -551,14 +557,15 @@ Comments:
Hide: 'Verberg'
Replies: 'Reacties'
Reply: 'Reactie'
There are no comments available for this video: 'Er zijn geen reacties op deze video'
Load More Comments: 'Laad Meer Reacties'
There are no comments available for this video: 'Er zijn geen reacties beschikbaar
voor deze video'
Load More Comments: 'Meer Reacties Laden'
There are no more comments for this video: Er zijn geen verdere reacties op deze
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
Top comments: Bovenste reacties
Sort by: Sorteer Bij
Top comments: Top Reacties
Sort by: Sorteer Op
Up Next: 'Volgende'
# Toast Messages
@ -569,8 +576,8 @@ Falling back to the local API: 'Terugvallen op lokale API'
Subscriptions have not yet been implemented: 'Abonnementen zijn nog niet geïmplementeerd'
Loop is now disabled: 'Herhalen is nu uitgeschakeld'
Loop is now enabled: 'Herhalen is nu ingeschakeld'
Shuffle is now disabled: 'Schuifelen is nu uitgeschakeld'
Shuffle is now enabled: 'Schuifelen is nu ingeschakeld'
Shuffle is now disabled: 'Willekeurig afspelen is nu uitgeschakeld'
Shuffle is now enabled: 'Willekeurig afspelen is nu ingeschakeld'
Playing Next Video: 'Volgende 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.
@ -586,14 +593,14 @@ Profile:
$ is now the active profile: $ is nu het actieve profiel
Your default profile has been changed to your primary profile: Uw standaardprofiel
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 $
Profile has been updated: Profiel is geüpdate
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
All subscriptions will also be deleted.: Alle abonnementen zullen worden verwijderd.
Are you sure you want to delete this profile?: Weet u zeker dat u dit profiel wil
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 wilt
verwijderen?
Delete Profile: Verwijder Profiel
Make Default Profile: Creëer Standaard Profiel
@ -603,7 +610,7 @@ Profile:
Custom Color: Eigen Kleur
Color Picker: Kleur Kiezer
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
All Channels: Alle Kanalen
Profile Select: Selecteer een Profiel
@ -622,28 +629,29 @@ Profile:
$ selected: $ is geselecteerd
Other Channels: Andere Kanalen
Subscription List: Abonnementen
Profile Filter: Profielfilter
A new blog is now available, $. Click to view more: Een nieuwe blogpost is beschikbaar,
$. Klik voor meer informatie
Download From Site: Download van de Website
Version $ is now available! Click for more details: Versie $ is nu beschikbaar! Klik
voor meer informatie
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
als de video niet in uw land beschikbaar is.
video is niet beschikbaar vanwege ontbrekende videoformaten. Dit kan gebeuren als
de video niet in uw land beschikbaar is.
Tooltips:
Player Settings:
Default Video Format: Selecteer de video indeling dat wordt gebruikt wanneer u
een video afspeelt. Dash kan video's afspelen met hogere kwaliteitsinstellingen.
Default Video Format: Selecteer de video indeling die wordt gebruikt wanneer u
een video afspeelt. DASH kan video's afspelen met hogere kwaliteitsinstellingen.
Legacy gaat niet hoger dan 720p maar gebruikt minder bandbreedte. Audio zal
alleen het geluid streamen
alleen het geluid streamen.
Force Local Backend for Legacy Formats: Dit zal alleen werken wanneer Invidious
is geselecteerd als de standaard API. Wanneer ingeschakeld zal de lokale API
legacy video indelingen gebruiken in plaats van de video indeling die worden
teruggegeven door Invidious. Dit kan helpen wanneer een video die word gestreamed
via Invidious niet afspeelt in verband met regio restricties
Proxy Videos Through Invidious: FreeTube zal verbinden met Invidious en via daar
de video's downloaden in de plaats van de video's rechstreeks bij YouTube vandaan
te halen. Dit overschrijft de ingestelde API voorkeur
teruggegeven door Invidious. Dit kan helpen wanneer een video die wordt gestreamed
via Invidious niet afspeelt in verband met regio restricties.
Proxy Videos Through Invidious: FreeTube zal verbinden met Invidious en daar de
video's downloaden in de plaats van de video's rechtstreeks bij YouTube vandaan
te halen. Dit overschrijft de ingestelde API voorkeur.
Subscription Settings:
Fetch Feeds from RSS: Wanneer ingeschakeld zal FreeTube RSS gebruiken in plaats
van de standaard methode om de videolijsten van je abonnementen te verzamelen.
@ -652,15 +660,28 @@ Tooltips:
General Settings:
Invidious Instance: Dit is de Invidious instantie waar FreeTube mee zal verbinden
om API calls te maken. Verwijder de momenteel geselecteerd instantie om een
lijst van publieke instanties te tonen
lijst van publieke instanties te tonen.
Thumbnail Preference: Alle thumbnails in FreeTube zullen worden vervangen met
een momentopname in plaats van de standaard thumbnail
een momentopname uit de video in plaats van de standaard thumbnail.
Fallback to Non-Preferred Backend on Failure: Wanneer het API met voorkeur problemen
heeft dan zal FreeTube automatisch terugvallen op het alternatieve niet-voorkeur
API als deze instelling is ingeschakeld
geeft dan zal FreeTube automatisch terugvallen op het alternatieve niet-voorkeur
API wanneer deze instelling is ingeschakeld.
Preferred API Backend: Kies de backend die FreeTube gebruikt om data te verzamelen.
De lokale API is een ingebouwde extractor. De Invidious API moet worden verbonden
met een Invidious server.
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
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.
| Volgende video wordt afgespeeld in {nextVideoInterval} seconde. Klik om te onderbreken.
| Volgende video wordt afgespeeld in {nextVideoInterval} seconden. Klik om te onderbreken.
More: Meer
Hashtags have not yet been implemented, try again later: Hastags zijn nog niet geïmplementeerd,
probeer het later nogmaals
Unknown YouTube url type, cannot be opened in app: Onbekende YouTube url type, de
url kan niet worden geopend in de app
Open New Window: Open Nieuw Venster

View File

@ -132,13 +132,13 @@ Settings:
End: 'Slutt'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious-førekomst
(Standard er https://invidious.snopyta.org)'
View all Invidious instance information: 'Vis all Invidious-førekomstinformasjon'
View all Invidious instance information: 'Vis informasjon om alle Invidious-førekomstar'
Region for Trending: 'Region for På veg opp'
#! List countries
Theme Settings:
Theme Settings: 'Temainnstillingar'
Match Top Bar with Main Color: ''
Expand Side Bar by Default: ''
Match Top Bar with Main Color: 'Match topplinja med hovudfargen.'
Expand Side Bar by Default: 'Utvid sidefeltet som forval'
Disable Smooth Scrolling: 'Deaktiver jevn rulling'
UI Scale: 'Skalering av brukargrensesnitt'
Base Theme:
@ -155,7 +155,7 @@ Settings:
Indigo: 'Indigo'
Blue: 'Blå'
Light Blue: 'Lyseblå'
Cyan: ''
Cyan: 'Turkis'
Teal: 'Blågrøn'
Green: 'Grøn'
Light Green: 'Lysegrøn'
@ -167,12 +167,12 @@ Settings:
Secondary Color Theme: 'Sekundærfargetema'
#* Main Color Theme
Player Settings:
Player Settings: 'Videospelarinnstillingar'
Player Settings: 'Videoavspelingsinnstillingar'
Force Local Backend for Legacy Formats: ''
Play Next Video: 'Spel av neste video'
Turn on Subtitles by Default: 'Slå på undertekst som standard'
Turn on Subtitles by Default: 'Slå på undertekst som standardval'
Autoplay Videos: 'Spel av videoar automatisk'
Proxy Videos Through Invidious: ''
Proxy Videos Through Invidious: 'Mellomtjen videoar gjennom Invidious'
Autoplay Playlists: 'Spel av spelelister automatisk'
Enable Theatre Mode by Default: 'Kinomodus som standardval'
Default Volume: 'Standardvolum'
@ -197,7 +197,7 @@ Settings:
Privacy Settings:
Privacy Settings: 'Personvernsinnstillingar'
Remember History: 'Husk historikk'
Save Watched Progress: ''
Save Watched Progress: 'Lagre framgangsdrift'
Clear Search Cache: 'Slett søkebuffer'
Are you sure you want to clear out your search cache?: 'Er du sikker på at du
vil slette søkebufferen?'
@ -206,24 +206,28 @@ Settings:
Are you sure you want to remove your entire watch history?: 'Er du sikker på at
du vil fjerne heile sjåarhistorikken din?'
Watch history has been cleared: 'Sjåarhistorikk har blitt fjerna'
Remove All Subscriptions / Profiles: ''
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: ''
Remove All Subscriptions / Profiles: 'Fjern alle abonnentar / profil'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Er
du sikker på at du vil fjerne alle abonnentar og profil? Dette kan ikkje bli
ugjort.'
Automatically Remove Video Meta Files: Fjern metadata automatisk frå videoar
Subscription Settings:
Subscription Settings: 'Abonnementinnstillingar'
Hide Videos on Watch: ''
Hide Videos on Watch: 'Skjul sette videoar'
Fetch Feeds from RSS: 'Hent feedar frå RSS'
Manage Subscriptions: 'Behandle abonnement'
Distraction Free Settings:
Distraction Free Settings: ''
Distraction Free Settings: 'Distraksjonsfri-instillingar'
Hide Video Views: 'Gøym videovisingar'
Hide Video Likes And Dislikes: ''
Hide Channel Subscribers: 'Gøym kanalabonnement'
Hide Comment Likes: ''
Hide Recommended Videos: 'Gøym anbefalte videoar'
Hide Trending Videos: ''
Hide Trending Videos: 'Gøym På veg opp'
Hide Popular Videos: 'Gøym populære videoar'
Hide Live Chat: 'Gøym direktechat'
Hide Active Subscriptions: 'Gøym aktive abonnement'
Hide Playlists: Skjul spelelister
Data Settings:
Data Settings: 'Datainnstillingar'
Select Import Type: 'Vel importtype'
@ -245,7 +249,8 @@ Settings:
og profila har blitt importert'
All subscriptions have been successfully imported: 'Alle abonnement har blitt
importert'
One or more subscriptions were unable to be imported: ''
One or more subscriptions were unable to be imported: 'Eit eller fleire abonnentar
kunne ikkje importerast'
Invalid subscriptions file: 'Ugyldig abonnementfil'
This might take a while, please wait: 'Dette kan ta ei stund, venleg vent'
Invalid history file: 'Ugyldig historiefil'
@ -262,14 +267,14 @@ Settings:
How do I import my subscriptions?: 'Korleis importerer eg abonnementa mine?'
Manage Subscriptions: 'Behandle abonnement'
Proxy Settings:
Proxy Settings: 'Proxyinnstillingar'
Enable Tor / Proxy: 'Aktiver Tor / Proxy'
Proxy Protocol: 'Proxyprotokoll'
Proxy Host: 'Proxyvert'
Proxy Port Number: 'Proxyportnummer'
Clicking on Test Proxy will send a request to: 'Klikk på testproxyen du vil sende
Proxy Settings: 'Mellomtenarinnstillingar'
Enable Tor / Proxy: 'Skru på Tor / Mellomtenar'
Proxy Protocol: 'Mellomtenarprotokoll'
Proxy Host: 'Mellomtenarvert'
Proxy Port Number: 'Mellomtenar-portnummer'
Clicking on Test Proxy will send a request to: 'Klikk på testtenaren du vil sende
ein førespurnad til'
Test Proxy: 'Test proxy'
Test Proxy: 'Test mellomtenar'
Your Info: 'Din informasjon'
Ip: 'IP-adresse'
Country: 'Land'
@ -312,7 +317,7 @@ Profile:
Create New Profile: 'Lag ny profil'
Edit Profile: 'Rediger profil'
Color Picker: 'Fargeveljar'
Custom Color: ''
Custom Color: 'Eigendefinert farge'
Profile Preview: 'Forhandsvising av profil'
Create Profile: 'Lag profil'
Update Profile: 'Oppdater profil'
@ -325,11 +330,11 @@ Profile:
Your profile name cannot be empty: 'Profilnamnet ditt kan ikkje vere tomt'
Profile has been created: 'Profilet har blitt laga'
Profile has been updated: 'Profilet har blitt oppdatert'
Your default profile has been set to $: 'Standardprofilet ditt har blitt satt til
Your default profile has been set to $: 'Ditt standardprofil har blitt satt til
$'
Removed $ from your profiles: 'Fjerna $ frå profila dine'
Your default profile has been changed to your primary profile: 'Standardprofilet
ditt har blitt endra til primærprofilet ditt'
ditt har blitt endra til ditt hovudprofil'
$ is now the active profile: '$ er no det aktive profilet'
Subscription List: 'Abonnementliste'
Other Channels: 'Andre kanalar'
@ -347,6 +352,7 @@ Profile:
du sikker på at du vil fjerne dei valte kanalane? Dette vil ikkje slette kanalane
frå andre profil.'
#On Channel Page
Profile Filter: Profilfilter
Channel:
Subscriber: 'Abonnent'
Subscribers: 'Abonnentar'
@ -354,7 +360,7 @@ Channel:
Unsubscribe: 'Opphev abonnement'
Channel has been removed from your subscriptions: 'Kanalen har blitt fjerna frå
dine abonnement'
Removed subscription from $ other channel(s): ''
Removed subscription from $ other channel(s): 'Fjerna abonnement frå $ kanal(ar)'
Added channel to your subscriptions: 'Lagt til kanal til dine abonnentar'
Search Channel: 'Søk i kanal'
Your search results have returned 0 results: 'Søket gitt gav 0 resultat'
@ -390,8 +396,8 @@ Video:
over lagra videoar'
Open in YouTube: 'Opne i YouTube'
Copy YouTube Link: 'Kopier YouTube-lenke'
Open YouTube Embedded Player: ''
Copy YouTube Embedded Player Link: ''
Open YouTube Embedded Player: 'Opne innebygd YouTube-spelar'
Copy YouTube Embedded Player Link: 'Kopier lenke til innebygd YouTube-spelar'
Open in Invidious: 'Opne i Invidious'
Copy Invidious Link: 'Kopier Invidious-lenke'
Open Channel in YouTube: 'Opne kanal i YouTube'
@ -402,7 +408,7 @@ Video:
Views: 'Visingar'
Loop Playlist: 'Gjenta speleliste'
Shuffle Playlist: 'Spel av tilfeldig frå spelelista'
Reverse Playlist: ''
Reverse Playlist: 'Snu spelelista'
Play Next Video: 'Spel av neste video'
Play Previous Video: 'Spel av førre video'
# Context is "X People Watching"
@ -422,7 +428,9 @@ Video:
er avslutta.'
Live chat is enabled. Chat messages will appear here once sent.: 'Direktechat er
slått på. Chatmeldingar vil bli vist her når dei er sendt.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': ''
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Direktechat
er førebels ikkje støtta av Invidious-API-et. Ei direkte tilkopling til YouTube
er krevja.'
Download Video: 'Last ned video'
video only: 'berre video'
audio only: 'berre lyd'
@ -466,6 +474,7 @@ Video:
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % sidan'
#& Videos
translated from English: omsett frå englesk
Videos:
#& Sort By
Sort By:
@ -477,7 +486,7 @@ Playlist:
#& About
View Full Playlist: 'Vis heile spelelista'
Videos: 'Videoar'
View: ''
View: 'Vising'
Views: 'Visingar'
Last Updated On: 'Sist oppdatert'
Share Playlist:
@ -551,7 +560,7 @@ Tooltips:
Thumbnail Preference: 'Alle miniatyrbilete i FreeTube vil bli erstatta av eit
bilete av videoen i staden for standardminiatyrbiletet'
Invidious Instance: 'Invidious-førekomsten som FreeTube vil kople til for API-kall.
Fjern den gjeldene førekomsten for å sjå ei liste over offentlige førekomstar
Fjern den gjeldene førekomsten for å sjå ei liste over offentlege førekomstar
å velje mellom'
Region for Trending: ''
Player Settings:
@ -586,3 +595,10 @@ Canceled next video autoplay: 'Avbryt automatisk avspeling av neste video'
Yes: 'Ja'
No: 'Nei'
Unknown YouTube url type, cannot be opened in app: Ukjent type YouTube-nettadresse,
kan ikkje opnast i applikasjonen
Playing Next Video Interval: Speler av neste video no. Klikk for å avbryte. | Speler
av neste video om {nextVideoInterval} sekund. Klikk for å avbryte. | Speler av neste
video om {nextVideoInterval} sekund. Klikk for å avbryte.
More: Meir
Open New Window: Opne nytt vindauge

View File

@ -172,7 +172,7 @@ Settings:
Default Playback Rate: 'Domyślna szybkość odtwarzania'
Default Video Format:
Default Video Format: 'Domyślny format filmów'
Dash Formats: 'Formaty Dash'
Dash Formats: 'Formaty DASH'
Legacy Formats: 'Stare formaty'
Audio Formats: 'Formaty audio'
Default Quality:
@ -187,6 +187,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Przerwa przed kolejną pozycją playlisty
Next Video Interval: Czas do następnego filmu
Subscription Settings:
Subscription Settings: 'Ustawienia subskrypcji'
Hide Videos on Watch: 'Ukrywaj filmy po obejrzeniu'
@ -243,6 +245,7 @@ Settings:
jesteś pewny/a, że chcesz usunąć wszystkie subskrypcje i profile? Nie będzie
można tego cofnąć.
Remove All Subscriptions / Profiles: Usuń wszystkie subskrypcje / profile
Automatically Remove Video Meta Files: Samoczynnie usuwaj pliki metadanych filmu
Data Settings:
How do I import my subscriptions?: Jak mogę zaimportować swoje subskrypcje?
Unknown data key: Nieznany klucz danych
@ -293,6 +296,7 @@ Settings:
Hide Video Likes And Dislikes: Schowaj łapki w górę i w dół
Hide Video Views: Schowaj obejrzenia filmu
Hide Active Subscriptions: Schowaj aktywne subskrypcje
Hide Playlists: Ukryj playlistę
The app needs to restart for changes to take effect. Restart and apply change?: Aplikacja
musi zostać ponownie uruchomiona, aby zmiany zostały wprowadzone. Uruchomić ponownie
i zastosować zmiany?
@ -354,7 +358,7 @@ About:
Wiki: Wiki
Report an Issue: Zgłoś problem
Channel Rules: Zasady kanału
Email: Email
Email: E-mail
License: Licencja
Beta: Beta
Donate: Wesprzyj
@ -499,6 +503,7 @@ Video:
zachowanych
Video has been saved: Film został zachowany
Save Video: Zachowaj film
translated from English: przetłumaczone z angielskiego
Videos:
#& Sort By
Sort By:
@ -526,12 +531,12 @@ Playlist:
Toggle Theatre Mode: 'Aktywuj tryb kinowy'
Change Format:
Change Video Formats: 'Zmień formaty wideo'
Use Dash Formats: 'Użyj formatów Dash'
Use Dash Formats: 'Użyj formatów DASH'
Use Legacy Formats: 'Użyj starych formatów'
Use Audio Formats: 'Użyj formatów audio'
Audio formats are not available for this video: Formaty audio nie są dostępne dla
tego filmu
Dash formats are not available for this video: Formaty Dash nie są dostępne dla
Dash formats are not available for this video: Formaty DASH nie są dostępne dla
tego filmu
Share:
Share Video: 'Podziel się filmem'
@ -633,6 +638,7 @@ Profile:
$ selected: Wybrano $
Other Channels: Inne kanały
Subscription List: Lista subskrypcji
Profile Filter: Filtr profilu
The playlist has been reversed: Playlista została odwrócona
A new blog is now available, $. Click to view more: Nowy wpis na blogu jest dostępny,
$. Kliknij, aby zobaczyć więcej
@ -651,24 +657,37 @@ Tooltips:
General Settings:
Fallback to Non-Preferred Backend on Failure: Po włączeniu, kiedy twój preferowany
API napotka problem, FreeTube samoczynnie spróbuje użyć niepreferowanego API
jako metody zapasowej
jako metody zapasowej.
Preferred API Backend: Wybierz back-end , który FreeTube użyje do uzyskiwania
danych. Lokalne API jest wbudowanym ekstraktorem. API Invidious wymaga połączenia
z serwerem Invidious.
Region for Trending: Obszar filmów „Na czasie” pozwala wybrać kraj, z którego
chciałbyś zobaczyć filmy zdobywające popularność. Nie wszystkie wyświetlone
kraje są obsługiwane przez YouTube
kraje są obsługiwane przez YouTube.
Invidious Instance: Serwer Invidious, którym FreeTube będzie się łączył do wywołań
API. Wyczyść pole z serwerem, by zobaczyć listę publicznych serwerów do wyboru
API. Wyczyść pole z serwerem, by zobaczyć listę publicznych serwerów do wyboru.
Thumbnail Preference: Wszystkie miniaturki na FreeTube zostaną zastąpione klatką
z filmu zamiast miniaturki domyślnej
z filmu zamiast miniaturki domyślnej.
Player Settings:
Force Local Backend for Legacy Formats: Działa tylko, kiedy API Invidious jest
ustawiony jako domyślny. Gdy opcja jest włączona, do odtwarzania starych formatów
zostanie użyty lokalny API, zamiast API Invidious. Pomaga w przypadkach, gdy
filmy zwracane przez Invidious nie odtwarzają się z powodu blokady regionalnej
filmy zwracane przez Invidious nie odtwarzają się z powodu blokady regionalnej.
Default Video Format: Ustaw formaty, które zostaną użyte do odtwarzania filmów.
Formaty Dash obsługują wyższe rozdzielczości. Stare formaty są ograniczone do
720p, ale zużywają mniej przepustowości. Formaty audio odtwarzają tylko dźwięk
Formaty DASH obsługują wyższe rozdzielczości. Stare formaty są ograniczone do
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,
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
przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekundę. Wciśnij
aby przerwać. | Odtwarzanie kolejnego filmu za {nextVideoInterval} sekund. Wciśnij
aby przerwać.
More: Więcej
Unknown YouTube url type, cannot be opened in app: Nieznany typ adresu URL YouTube,
nie można go otworzyć w aplikacji
Hashtags have not yet been implemented, try again later: Hashtagi nie zostały jeszcze
wprowadzone, spróbuj później
Open New Window: Otwórz nowe okno

View File

@ -185,6 +185,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Intervalo do próximo vídeo da lista de reprodução
Subscription Settings:
Subscription Settings: 'Configurações de inscrições'
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
ser desfeita.
Remove All Subscriptions / Profiles: Remover Todas as Inscrições / Perfis
Automatically Remove Video Meta Files: Remover automaticamente os metarquivos
de vídeo
Data Settings:
Subscriptions have been successfully exported: Inscrições foram exportadas com
sucesso
@ -291,6 +294,7 @@ Settings:
Hide Video Likes And Dislikes: Ocultar curtidas e desgostos do vídeo
Hide Video Views: Ocultar Visualizações de Vídeo
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
aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar
mudança?
@ -343,7 +347,7 @@ About:
#On Channel Page
GitHub issues: Problemas com o GitHub
Report a problem: Reportar um problema
FAQ: FAQs
FAQ: Perguntas frequentes
FreeTube Wiki: Wiki do FreeTube
Help: Ajuda
GitHub releases: Lançamentos do GitHub
@ -458,7 +462,7 @@ Video:
Minute: Minuto
Published on: 'Publicado em'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'Há $ % atrás'
Publicationtemplate: 'Há $ %'
#& Videos
Started streaming on: Transmissão iniciada em
Streamed on: Transmitido em
@ -486,6 +490,7 @@ Video:
vídeos salvos
Video has been saved: O vídeo foi salvo
Save Video: Salvar vídeo
translated from English: Traduzido do inglês
Videos:
#& Sort By
Sort By:
@ -518,7 +523,7 @@ Change Format:
Use Audio Formats: 'Usar formato de áudio'
Audio formats are not available for this video: Formatos de áudio não disponíveis
para este vídeo
Dash formats are not available for this video: Formatos Dash não disponíveis para
Dash formats are not available for this video: Formatos DASH não disponíveis para
este vídeo
Share:
Share Video: 'Compartilhar vídeo'
@ -621,6 +626,7 @@ Profile:
Profile has been updated: Perfil atualizado
Profile has been created: Perfil criado
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!
Clique para mais detalhes
A new blog is now available, $. Click to view more: Um novo blog está disponível,
@ -633,34 +639,42 @@ This video is unavailable because of missing formats. This can happen due to cou
Tooltips:
Subscription Settings:
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
vivo
Player Settings:
Default Video Format: Define os formatos usados quando um vídeo é reproduzido.
Formatos Dash podem reproduzir qualidades mais altas. Os formatos antigos são
Formatos DASH podem reproduzir qualidades mais altas. Os formatos antigos são
limitados a um máximo de 720p, mas usam menos largura de banda. Formatos de
áudio são para transmissões sem vídeo
áudio são para transmissões sem vídeo.
Proxy Videos Through Invidious: Conectar-se-á ao Invidious para obter vídeos em
vez de fazer uma conexão direta com o YouTube. Ignora a preferência da API
vez de fazer uma conexão direta com o YouTube. Ignora a preferência da API.
Force Local Backend for Legacy Formats: Só funciona quando a API do Invidious
é predefinida. Quando ativada, a API local será executada e usará os formatos
antigos retornados por ela em vez dos retornados pelo Invidious. É útil quando
os vídeos retornados pelo Invidious não são reproduzidos devido a restrições
de país
de país.
General Settings:
Region for Trending: A região de tendências permite escolher quais vídeos de tendências
do país você quer exibir. Nem todos os países exibidos são realmente suportados
pelo YouTube
Region for Trending: A região de tendências lhe permite de escolher quais vídeos
de tendências do país você quer exibir. Nem todos os países exibidos são realmente
suportados pelo YouTube.
Invidious Instance: A instância Invidious à qual o FreeTube se conectará para
chamadas de API. Limpe a instância atual para ver uma lista de instâncias públicas
para escolher
chamadas de API. Apague a instância atual para ver uma lista de instâncias públicas
para escolher.
Thumbnail Preference: Todas as miniaturas do FreeTube serão substituídas por um
quadro do vídeo em vez da miniatura padrão
quadro do vídeo em vez da miniatura padrão.
Fallback to Non-Preferred Backend on Failure: Quando a sua API preferida tiver
um problema, o FreeTube tentará automaticamente usar sua API não preferida como
um método substituto quando ativado
um problema, o FreeTube tentará usar automaticamente sua API não preferida em
substituição quando ativado.
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
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
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.

View File

@ -91,8 +91,9 @@ User Playlists:
Playlist Message: Esta página não é indicativa do resultado final. Apenas mostra
vídeos que foram guardados ou marcados como favoritos. Quando estiver pronta,
todos os vídeos que estiverem aqui serão postos numa lista chamada 'Favoritos'.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: A sua lista está vazia. Carregue no botão com a estrela no canto de um vídeo para o
guardar aqui.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Os
seus vídeos guardados estão vazios. Clique no botão gravar no canto de um vídeo
para ser listado aqui
History:
# On History Page
History: Histórico
@ -112,7 +113,7 @@ Settings:
Preferido em Caso de Falha
Enable Search Suggestions: Activar Sugestões de Pesquisa
Default Landing Page: Página Inicial
Locale Preference: Localização
Locale Preference: Idioma
Preferred API Backend:
Preferred API Backend: Sistema de Ligação Favorito
Local API: API Local
@ -129,9 +130,11 @@ Settings:
End: Fim
'Invidious Instance (Default is https://invidious.snopyta.org)': Instância Invidious
(Por omissão é https://invidious.snopyta.org)
View all Invidious instance information: Mostrar toda a informação sobre esta instância Invidious
View all Invidious instance information: Mostrar toda a informação sobre esta
instância Invidious
Region for Trending: Região para as tendências
#! List countries
System Default: Definições do sistema
Theme Settings:
Theme Settings: Definições de Tema
Match Top Bar with Main Color: Utilizar Cor Principal Para Barra Superior
@ -178,7 +181,7 @@ Settings:
Default Playback Rate: Velocidade de Reprodução
Default Video Format:
Default Video Format: Formato de Vídeo
Dash Formats: Formato Dash
Dash Formats: Formatos DASH
Legacy Formats: Formato Antigo
Audio Formats: Formato de Áudio
Default Quality:
@ -193,6 +196,7 @@ Settings:
1440p: 1440p
4k: 4k
8k: 8k
Next Video Interval: Próximo intervalo de vídeo
Privacy Settings:
Privacy Settings: Definições de Privacidade
Remember History: Lembrar Histórico
@ -209,6 +213,8 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Tem
a certeza de que quer apagar todas as suas subscrições e perfis? Esta acção
não pode ser revertida.
Automatically Remove Video Meta Files: Remover automaticamente os metficheiros
de vídeo
Subscription Settings:
Subscription Settings: Definições de Subscrições
Hide Videos on Watch: Esconder Vídeos Visualisados
@ -230,6 +236,7 @@ Settings:
Hide Popular Videos: Esconder Mais Populares
Hide Live Chat: Esconder Chat ao Vivo
Hide Active Subscriptions: Esconder Subscrições da barra lateral
Hide Playlists: Ocultar listas de reprodução
Data Settings:
Data Settings: Definições de dados
Select Import Type: Escolher tipo de importação
@ -275,14 +282,16 @@ Settings:
Proxy Protocol: Protocolo do Intermediário
Proxy Host: Endereço do Intermediário
Proxy Port Number: Porto do Intermediário
Clicking on Test Proxy will send a request to: Carregar em Testar Intermediário irá enviar um pedido a
Clicking on Test Proxy will send a request to: Carregar em Testar Intermediário
irá enviar um pedido a
Test Proxy: Testar Intermediário
Your Info: A sua Informação
Ip: Ip
Country: País
Region: Região
City: Cidade
Error getting network information. Is your proxy configured properly?: Houve um erro a receber a informação sobre a sua rede. Verifique que o seu intermediário está configurado correctamente.
Error getting network information. Is your proxy configured properly?: Erro ao
obter informações da rede. O seu proxy está configurado corretamente?
About:
#On About page
About: Sobre
@ -294,13 +303,14 @@ About:
GitHub releases: Lançamentos no GitHub
Help: Ajuda
FreeTube Wiki: Wiki do FreeTube
FAQ: Perguntas Frequentes
FAQ: Perguntas frequentes
Report a problem: Relatar um problema
GitHub issues: Problemas no GitHub
Please check for duplicates before posting: É favor verificar se um problema já foi relatado
Website: Site
Please check for duplicates before posting: É favor verificar se um problema já
foi relatado
Website: Saite
Blog: Blogue
Email: Email
Email: Correio eletrónico
Mastodon: Mastodon
Chat on Matrix: Chat no Matrix
Please read the: Por favor leia as
@ -352,6 +362,7 @@ Profile:
os canais em mais nenhum perfil.
#On Channel Page
Profile Select: Selecção de perfil
Profile Filter: Filtro de Perfil
Channel:
Subscriber: Subscritor
Subscribers: Subscritores
@ -399,7 +410,7 @@ Video:
Copy Invidious Link: Copiar Ligação para Invidious
Open Channel in YouTube: Abrir Canal no Youtube
Copy YouTube Channel Link: Copiar Ligação para Youtube
Open Channel in Invidious: Abrir Calan no Invidious
Open Channel in Invidious: Abrir Canal no Invidious
Copy Invidious Channel Link: Copiar Ligação para Invidious
View: Visualização
Views: Visualizações
@ -459,7 +470,7 @@ Video:
Year: Ano
Years: Anos
Ago:
Upcoming: Estreia em breve
Upcoming: Futuramente em
Published on: Publicado a
Streamed on: Transmitido a
Started streaming on: Transmissão iniciada a
@ -471,6 +482,7 @@ Video:
Reverse Playlist: Inverter lista de reprodução
Shuffle Playlist: Baralhar lista de reprodução
Loop Playlist: Repetir lista de reprodução
translated from English: Traduzido do inglês
Videos:
#& Sort By
Sort By:
@ -498,10 +510,10 @@ Playlist:
Toggle Theatre Mode: Alternar Modo Cinema
Change Format:
Change Video Formats: Mudar Formato do Vídeo
Use Dash Formats: Utilizar Formato Dash
Use Dash Formats: Usar formatos DASH
Use Legacy Formats: Utilizar Formato Antigo
Use Audio Formats: Utilizar Formatos de Áudio
Dash formats are not available for this video: Formato DASH não disponível para
Dash formats are not available for this video: Formatos DASH não disponíveis para
este vídeo
Audio formats are not available for this video: Formato áudio não disponível para
este vídeo
@ -549,39 +561,43 @@ Up Next: A Seguir
#Tooltips
Tooltips:
General Settings:
Preferred API Backend: O sistema que FreeTube utilizará para se ligar ao Youtube.
O API local existe como parte do FreeTube e faz ligações directas ao Youtube.
O API Invidious necessita de uma ligação a um servidor Invidious
Fallback to Non-Preferred Backend on Failure: Quando o seu sistema preferido encontrar
um erro, o FreeTube vai automaticamente tentar usar o sistema não preferido
como uma salvaguarda, caso esta opção esteja activada
Thumbnail Preference: Todas as antevisões dos vídeos no FreeTube vão ser substituidas
por um fotograma do vídeo
Invidious Instance: A instância Invidious à qual o FreeTube irá ligar-se para
ir buscar dados. Apague o que está escrito para ver uma lista de instâncias
públicas disponíveis
Region for Trending: A região permite-lhe escolher de qual país quer que seja
utilizado pela secção das tendências. Nem todos os países apresentados estão
de facto a funcionar devido ao Youtube
Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados.
O API local é um extrator incorporado. A API Invidious requer um servidor Invidious
para se conectar.
Fallback to Non-Preferred Backend on Failure: Quando a sua API preferida tiver
um problema, o FreeTube tentará usar automaticamente a sua API não preferida
em substituição quando ativado.
Thumbnail Preference: Todas as miniaturas do FreeTube serão substituídas por um
quadro do vídeo em vez da miniatura padrão.
Invidious Instance: A instância Invidious à qual o FreeTube se conectará para
chamadas de API. Apague a instância atual para ver uma lista de instâncias públicas
para escolher.
Region for Trending: A região de tendências permite-lhe de escolher quais vídeos
de tendências do país que quer exibir. Nem todos os países exibidos são realmente
suportados pelo YouTube.
Player Settings:
Force Local Backend for Legacy Formats: Apenas funciona quando o API Invidious
é o seu sistema preferido. Quando activado, o API local irá ser usado para ir
buscar os formatos antigos, invés daqueles devolvidos pelo Invidious. Útil quando
os vídeos dados pelo Invidious não funcionam devido a restrições geográficas
Proxy Videos Through Invidious: O FreeTube irá ligar-se ao Invidious para apresentar
vídeos em vez de fazer uma ligação directa ao Youtube. Ignora a escolha de sistema
preferido
Default Video Format: Define o formato utilizado quando um vídeo é reproduzido.
O formato DASH consegue reproduzir melhor qualidades. O formato antigo está
limitado a 720p, mas utiliza menos rede. Formatos áudio são para transmissões
sem vídeo
Force Local Backend for Legacy Formats: Só funciona quando a API do Invidious
é predefinida. Quando ativada, a API local será executada e usará os formatos
antigos retornados por ela em vez dos retornados pelo Invidious. É útil quando
os vídeos retornados pelo Invidious não são reproduzidos devido a restrições
de país.
Proxy Videos Through Invidious: Conectar-se-á ao Invidious para obter vídeos em
vez de fazer uma conexão direta com o YouTube. Ignora a preferência da API.
Default Video Format: Define os formatos usados quando um vídeo é reproduzido.
Formatos DASH podem reproduzir qualidades mais altas. Os formatos antigos são
limitados a um máximo de 720p, mas usam menos largura de banda. Formatos de
áudio são para transmissões sem vídeo.
Subscription Settings:
Fetch Feeds from RSS: Quando activado, o FreeTube irá buscar as suas subscrições
através de RSS em vez do método normal. RSS é mais rápido e previne ser limitado
por fazer demasiadas ligações ao Youtube, mas não disponibiliza informação tal
como a duração de um vídeo ou se este é ao vivo
Fetch Feeds from RSS: Quando ativado, o FreeTube usará RSS em vez do método padrão
dele para obter o feed da 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 estado ao
vivo
# Toast Messages
Privacy Settings:
Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os
metficheiros criados durante a reprodução do vídeo quando a página de exibição
é fechada.
Local API Error (Click to copy): API local encontrou um erro (Clique para copiar)
Invidious API Error (Click to copy): API Invidious encontrou um erro (Clique para
copiar)
@ -606,3 +622,13 @@ Canceled next video autoplay: Reprodução automática cancelada
Yes: Sim
No: Não
The playlist has been reversed: A lista de reprodução foi invertida
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.
More: Mais
Hashtags have not yet been implemented, try again later: Os Hashtags ainda não foram
implementados, tente novamente mais tarde
Unknown YouTube url type, cannot be opened in app: Tipo de url do YouTube desconhecido,
não pode ser aberto numa app
Open New Window: Abrir uma nova janela

View File

@ -289,6 +289,10 @@ About:
Latest FreeTube News: 'Notícias recentes sobre FreeTube'
FAQ: Perguntas frequentes
Blog: Blogue
Website: Sítio Web
Email: Correio eletrónico
Profile:
Profile Select: 'Selecção de perfil'
All Channels: 'Todos os Canais'

View File

@ -189,9 +189,10 @@ Settings:
Remember History: ''
Save Watched Progress: ''
Clear Search Cache: ''
Are you sure you want to clear out your search cache?: ''
Search cache has been cleared: ''
Remove Watch History: ''
Are you sure you want to clear out your search cache?: 'Sunteti siguri ca doriti
sa stergeti chache-ul cautarilor ?'
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?: ''
Watch history has been cleared: ''
Remove All Subscriptions / Profiles: ''

View File

@ -1,7 +1,7 @@
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Эта часть приложения еще не готова. Вернитесь позже, когда будет достигнут прогресс.
Эта часть приложения ещё не готова. Вернитесь позже, когда будет достигнут прогресс.
# Webkit Menu Bar
File: 'Файл'
@ -127,21 +127,21 @@ Settings:
View all Invidious instance information: Показать все доступные экземпляры Invidious
Theme Settings:
Theme Settings: 'Настройки темы'
Match Top Bar with Main Color: 'Совместить верхнюю панель с основным цветом'
Match Top Bar with Main Color: 'Верхняя панель основного цвета'
Base Theme:
Base Theme: 'Базовая тема'
Black: 'Чёрная'
Dark: 'Тёмная'
Light: 'Светлая'
Main Color Theme:
Main Color Theme: 'Основная цветовая тема'
Main Color Theme: 'Тема основного цвета'
Red: 'Красная'
Pink: 'Розовая'
Purple: 'Фиолетовая'
Deep Purple: 'Тёмно-фиолетовая'
Indigo: 'Индиго'
Blue: 'Синия'
Light Blue: 'Светло-синия'
Blue: 'Синяя'
Light Blue: 'Светло-синяя'
Cyan: 'Голубая'
Teal: 'Бирюзовая'
Green: 'Зелёная'
@ -186,6 +186,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Задержка перед автовоспроизведением
Subscription Settings:
Subscription Settings: 'Настройки подписки'
Hide Videos on Watch: 'Скрыть видео после просмотра'
@ -241,6 +242,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Вы
уверены, что хотите удалить все подписки и профили? Это нельзя отменить.
Remove All Subscriptions / Profiles: Удалить все подписки/профили
Automatically Remove Video Meta Files: Автоматическое удаление мета-файлов видео
Data Settings:
How do I import my subscriptions?: Как мне импортировать свои подписки?
Unknown data key: Неизвестный ключ данных
@ -290,6 +292,7 @@ Settings:
Hide Video Likes And Dislikes: Скрыть лайки и дизлайки к видео
Hide Video Views: Скрыть просмотры видео
Hide Active Subscriptions: Скрыть активные подписки
Hide Playlists: Скрыть плейлисты
The app needs to restart for changes to take effect. Restart and apply change?: Чтобы
изменения вступили в силу, необходимо перезапустить приложение. Перезапустить
и применить изменения?
@ -297,7 +300,7 @@ Settings:
Error getting network information. Is your proxy configured properly?: Ошибка
при получении информации о сети. Вы уверены, что прокси настроен правильно?
Your Info: Ваша информация
Clicking on Test Proxy will send a request to: Нажмите на rкнопку "Протестировать
Clicking on Test Proxy will send a request to: Нажмите на кнопку "Протестировать
соединение", чтобы отправить запрос на
Test Proxy: Протестировать соединение
Proxy Port Number: Порт прокси-сервера
@ -352,7 +355,7 @@ About:
Mastodon: Mastodon
Email: Электронная почта
Blog: Блог
Website: Сайт
Website: Веб-сайт
Report a problem: Сообщить о проблеме
FAQ: FAQ
FreeTube Wiki: Вики-сайт FreeTube
@ -394,7 +397,7 @@ Channel:
About: 'О канале'
Channel Description: 'Описание канала'
Featured Channels: 'Избранные каналы'
Added channel to your subscriptions: Канаь добавлен в ваши подписки
Added channel to your subscriptions: Канал добавлен в ваши подписки
Removed subscription from $ other channel(s): Подписка удалена с $ другого(их) канала(ов)
Channel has been removed from your subscriptions: Канал был удалён из ваших подписок
Video:
@ -464,9 +467,9 @@ Video:
Autoplay: Автовоспроизведение
Play Previous Video: Воспроизвести предыдущее видео
Play Next Video: Воспроизводить следующее видео
Reverse Playlist: Обратный плейлист
Shuffle Playlist: Перемешанный плейлист
Loop Playlist: Циклический плейлист
Reverse Playlist: Обратный порядок плейлиста
Shuffle Playlist: Перемешать плейлист
Loop Playlist: Зациклить плейлист
Starting soon, please refresh the page to check again: Скоро начнётся, обновите
страницу, чтобы проверить ещё раз
Audio:
@ -483,9 +486,10 @@ Video:
Open Channel in YouTube: Открыть канал в YouTube
Streamed on: Транслировано
Started streaming on: Трансляция начата на
Video has been removed from your saved list: Видео было удалено из списка сохраненных
Video has been saved: Видео было добавлено в сохраненные
Save Video: Добавить видео в сохраненные
Video has been removed from your saved list: Видео было удалено из списка сохранённых
Video has been saved: Видео было добавлено в сохранённые
Save Video: Добавить видео в сохранённые
translated from English: переведен с Английского
Videos:
#& Sort By
Sort By:
@ -566,17 +570,17 @@ Invidious API Error (Click to copy): 'Ошибка invidious API (Нажмите
Falling back to Invidious API: 'Возврат к Invidious API'
Falling back to the local API: 'Возврат к локальному API'
Subscriptions have not yet been implemented: 'Подписки ещё не реализованы'
Loop is now disabled: 'Цикл теперь отключён'
Loop is now enabled: 'Цикл теперь включён'
Loop is now disabled: 'Зацикливание теперь отключено'
Loop is now enabled: 'Зацикливание теперь включено'
Shuffle is now disabled: 'Перемешивание теперь отключено'
Shuffle is now enabled: 'Перемешивание теперь включено'
Playing Next Video: 'Воспроизвести следующее видео'
Playing Previous Video: 'Воспроизвести предыдущее видео'
Playing Next Video: 'Воспроизведение следующего видео'
Playing Previous Video: 'Воспроизведение предыдущего видео'
Playing next video in 5 seconds. Click to cancel: 'Воспроизведение следующего видео
через 5 секунд. Нажмите, чтобы отменить.'
Canceled next video autoplay: 'Отменено автовоспроизведение следующего видео'
'The playlist has ended. Enable loop to continue playing': 'Плейлист закончился.
Включите цикл, чтобы продолжить воспроизведение'
Включите зацикливание, чтобы продолжить воспроизведение'
Yes: 'Да'
No: 'Нет'
@ -617,11 +621,12 @@ Profile:
No channel(s) have been selected: Канал(ы) не были выбраны
Add Selected To Profile: Добавить выбранное в профиль
Delete Selected: Удалить выбранное
Select None: Выбрать ничего
Select None: Не выбрано
Select All: Выбрать все
$ selected: $ выбрано
Other Channels: Другие каналы
Subscription List: Список подписок
Profile Filter: Фильтры профилей
The playlist has been reversed: Плейлист был перевёрнут
A new blog is now available, $. Click to view more: Теперь доступен новый блог $.
Нажмите, чтобы увидеть больше
@ -629,7 +634,7 @@ Download From Site: Скачать с сайта
Version $ is now available! Click for more details: Версия $ уже доступна! Нажмите,
чтобы узнать больше
This video is unavailable because of missing formats. This can happen due to country unavailability.: Это
видео недоступно из-за отсутствия форматов. Это может произойти из-за недоступности
видео недоступно из-за отсутствия форматов. Это может произойти из-за ограничений
страны.
Tooltips:
General Settings:
@ -644,14 +649,13 @@ Tooltips:
Preferred API Backend: Выберите серверную часть, которую FreeTube использует для
получения данных. Локальный API - это встроенный экстрактор. Invidious API требует
подключения к Invidious серверу.
Region for Trending: Область тенденций позволяет вам выбрать популярные видео
из страны, которые вы хотите отображать. Не все отображаемые страны на самом
деле поддерживаются YouTube
Region for Trending: Регион трендов позволяет вам выбрать популярные видео из
выбранной страны. Не все отображаемые страны поддерживаются YouTube
Subscription Settings:
Fetch Feeds from RSS: Если этот параметр включен, FreeTube будет использовать
RSS вместо метода по умолчанию для получения вашего канала подписки. RSS работает
быстрее и предотвращает блокировку IP, но не предоставляет определенную информацию,
такую как продолжительность видео или статус в реальном времени
Fetch Feeds from RSS: Если этот параметр включен, FreeTube будет получать вашу
ленту подписок с помощью RSS, а не как обычно. RSS работает быстрее и предотвращает
блокировку IP, но не предоставляет определенную информацию, такую как продолжительность
видео или сведения о том, транслируется ли видео в реальном времени
Player Settings:
Default Video Format: Установите форматы, используемые при воспроизведении видео.
Формат dash может воспроизводить более высокое качество. Устаревшие форматы
@ -664,3 +668,17 @@ Tooltips:
устаревшие форматы, возвращаемые им, вместо форматов, возвращаемых Invidious.
Помогает, когда видео, возвращенные Invidious, не воспроизводятся из-за ограничений
страны
Privacy Settings:
Remove Video Meta Files: Если этот параметр включен, FreeTube автоматически удаляет
метафайлы, созданные во время воспроизведения видео, когда страница просмотра
закрывается.
More: Больше
Playing Next Video Interval: Воспроизведение следующего видео без задержки. Нажмите
для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите
для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите
для отмены.
Hashtags have not yet been implemented, try again later: Хештеги еще не реализованы,
попробуйте позже
Unknown YouTube url type, cannot be opened in app: Неизвестный тип URL-адреса YouTube,
не может быть открыт в приложении
Open New Window: Открыть новое окно

View File

@ -1,5 +1,5 @@
# Put the name of your locale in the same language
Locale Name: 'English (US)'
Locale Name: 'ᱥᱟᱱᱛᱟᱲᱤ'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-

View File

@ -105,7 +105,7 @@ Settings:
Preferred API Backend:
Preferred API Backend: 'Preferované API Backend'
Local API: 'Lokálne API'
Invidious API: 'Invidious API'
Invidious API: 'API služby Invidious'
Video View Type:
Video View Type: 'Typ zobrazenia videa'
Grid: 'Mriežka'
@ -184,6 +184,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Čas spustenia nasledujúceho videa v zozname videí
Subscription Settings:
Subscription Settings: 'Nastavenia Odberov'
Hide Videos on Watch: 'Skryť videá po zhliadnutí'
@ -272,6 +273,7 @@ Settings:
Hide Video Views: Skryť počet zhliadnutí
Distraction Free Settings: Nastavenia nerušenia
Hide Active Subscriptions: Skryť aktívne odbery
Hide Playlists: Skryť zoznamy videí
Privacy Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Naozaj
chcete odstrániť všetky odbery a profily? Toto je nenávratná akcia.
@ -356,7 +358,7 @@ About:
room rules: pravidlá miestností
Please read the: Prečítajte si
Chat on Matrix: Napíšte nám na Matrix-e
Mastodon: Mastodon
Mastodon: Komunikačná platforma Mastodon
Email: Elektronická pošta
Blog: Blog
Website: Webstránka
@ -649,9 +651,14 @@ Profile:
Profile Manager: Správca profilov
All Channels: Všetky kanály
Profile Select: Vyberte profil
Profile Filter: Filter Profilov
A new blog is now available, $. Click to view more: Nový príspevok na blogu je k dispozícií,
$. Klikni pre viac informácií
Download From Site: Stiahnuť zo stránky
Version $ is now available! Click for more details: Je k dispozícií verzia $ ! Klikni
pre viac informácií
Locale Name: Slovenčina
Playing Next Video Interval: Prehrávanie ďalšieho videa za chvíľu. Kliknutím zrušíte.
| Prehráva sa ďalšie video o {nextVideoInterval} sekundu. Kliknutím zrušíte. | Prehráva
sa ďalšie video o {nextVideoInterval} sekúnd. Kliknutím zrušíte.
More: Viac

View File

@ -30,8 +30,8 @@ Close: 'Zapri'
Back: 'Nazaj'
Forward: 'Naprej'
Version $ is now available! Click for more details: 'Na voljo je različica $!·· ··
Za več podrobnosti kliknite tukaj'
Version $ is now available! Click for more details: 'Na voljo je različica $!· Za
več podrobnosti kliknite tukaj'
Download From Site: 'Prenesi iz spletne strani'
A new blog is now available, $. Click to view more: 'Na voljo je nov članek, $. Kliknite
tukaj, če ga želite prebrati'
@ -71,6 +71,7 @@ Search Filters:
Fetching results. Please wait: 'Pridobivamo rezultate. Prosimo, počakajte'
Fetch more results: 'Pridobi več rezultatov'
# Sidebar
There are no more results for this search: Nič več rezultatov
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Naročnine'
@ -81,14 +82,21 @@ Subscriptions:
'Getting Subscriptions. Please wait.': 'Pridobivamo naročnine. Prosimo, počakajte.'
Refresh Subscriptions: 'Osveži naročnine'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Ta
profil ima veliko količino naročnin.·· ·· Da bi se izognili omejitvi hitrosti,
bo uporabljen RSS
profil ima veliko količino naročnin.· Da bi se izognili omejitvi hitrosti, bo
uporabljen RSS
Load More Videos: Naloži več videoposnetkov
Trending: 'Priljubljeno'
Most Popular: 'Najbolj popularno'
Playlists: 'Seznami predvajanja'
User Playlists:
Your Playlists: 'Vaši seznami predvajanja'
Playlist Message: Ta stran ne odraža stanja popolnoma delujočih seznamov predvajanja.
Na njej so prikazani zgolj videoposnetki, ki ste jih shranili ali označili kot
priljubljene. Ko bo delo končano, bodo ti videoposnetki preseljeni v Seznam priljubljenih
videoposnetkov.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Nimate
shranjenih videoposnetkov. Kliknite na gumb Shrani v kotu videoposnetka, da bo
ta dodan tukaj
History:
# On History Page
History: 'Zgodovina'
@ -125,6 +133,7 @@ Settings:
(prevzeta je https://invidious.snopyta.org)'
Region for Trending: 'Regija za priljubljene videoposnetke'
#! List countries
View all Invidious instance information: Prikaži vse podatke o Invidious domeni
Theme Settings:
Theme Settings: 'Nastavitve tem'
Match Top Bar with Main Color: 'Uskladi zgornji trak z glavno barvo'
@ -185,6 +194,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Razmik med videoposnetki v seznamu predvajanja
Privacy Settings:
Privacy Settings: 'Nastavitve zasebnosti'
Remember History: 'Zapomni si zgodovino'
@ -199,8 +209,8 @@ Settings:
Watch history has been cleared: 'Zgodovina gledanj je bila izbrisana'
Remove All Subscriptions / Profiles: 'Izbriši vse naročnine/profile'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Ste
prepričani, da želite izbrisati vse naročnine in profile?·· ·· Te odločitve
ni mogoče razveljaviti.'
prepričani, da želite izbrisati vse naročnine in profile?· Te odločitve ni
mogoče razveljaviti.'
Subscription Settings:
Subscription Settings: 'Nastavitve naročnin'
Hide Videos on Watch: 'Skrij gledane videoposnetke'
@ -244,6 +254,7 @@ Settings:
Unknown data key: 'Neznan podatkovni ključ'
How do I import my subscriptions?: 'Kako lahko uvozim moje naročnine?'
Check for Legacy Subscriptions: Poišči zapuščinske naročnine
Manage Subscriptions: Upravljaj z naročninami
Advanced Settings:
Advanced Settings: 'Napredne nastavitve'
Enable Debug Mode (Prints data to the console): 'Vklopi razhroščevalni način (podatke
@ -280,9 +291,28 @@ Settings:
Hide Channel Subscribers: Skrij število naročnikov
Hide Video Views: Skrij število ogledov
Distraction Free Settings: Brezmotenjske nastavitve
Hide Active Subscriptions: Skrij aktivne naročnine
Hide Playlists: Skrij sezname predvajanja
The app needs to restart for changes to take effect. Restart and apply change?: Program
se mora ponovno zagnati, preden bodo spremembe uveljavljene. Ga želite ponovno
zagnati zdaj?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Prišlo
je do napake pri pridobivanju informacij o omrežju. Ali je vaš namestnik pravilno
nastavljen?
City: Mesto
Region: Regija
Country: Država
Ip: IP naslov
Your Info: Vaši podatki
Test Proxy: Preizkusi namestnik
Clicking on Test Proxy will send a request to: Ko kliknete na Preizkusi namestnik,
bo poizvedba poslana na
Proxy Port Number: Številka vrat namestnika
Proxy Settings: Nastavitve namestnika
Proxy Host: Gostitelj namestnika
Proxy Protocol: Protokol namestnika
Enable Tor / Proxy: Vklopi Tor/namestnik
About:
#On About page
About: 'O programu'
@ -314,6 +344,31 @@ About:
Latest FreeTube News: 'Najnovejše FreeTube novice'
Donate: Doniraj
these people and projects: teh ljudi in projektov
FreeTube is made possible by: FreeTube obstaja zaradi
Credits: Zahvale
Translate: Prevedi
room rules: sobna pravila
Please read the: Prosimo, preberite
Chat on Matrix: Klepetajte na Matrixu
Mastodon: Mastodon
Email: E-pošta
Blog: Blog
Website: Spletna stran
Please check for duplicates before posting: Prosimo, da pred pošiljanjem preverite,
da ni dvojnikov
GitHub issues: GitHub težave
Report a problem: Prijavi napako
FAQ: Pogosto zastavljena vprašanja
FreeTube Wiki: FreeTube wiki
Help: Pomoč
GitHub releases: Github izdaje
Downloads / Changelog: Prenosi in dnevnik sprememb
View License: Ogled licence
Licensed under the AGPLv3: Licencirano pod AGPLv3
Source code: Izvirna koda
Beta: Beta
Profile:
Profile Select: 'Izberi profil'
All Channels: 'Vsi kanali'
@ -350,12 +405,14 @@ Profile:
No channel(s) have been selected: 'Označili niste nobenih kanalov'
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: 'To je vaš primarni profil.·· ·· Ste prepričani, da želite izbrisati označene
kanale?·· ·· Kanali bodo izbrisani v vseh profilih, kjer se nahajajo.'
: 'To je vaš primarni profil.· Ste prepričani, da želite izbrisati označene kanale?· Kanali
bodo izbrisani v vseh profilih, kjer se nahajajo.'
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Ste
prepričani, da želite izbrisati označene kanale?·· ·· Kanali ne bodo izbrisani
iz drugih profilov.'
prepričani, da želite izbrisati označene kanale?
· Kanali ne bodo izbrisani iz drugih profilov.'
#On Channel Page
Profile Filter: Filter profilov
Channel:
Subscriber: 'Naročnik'
Subscribers: 'Naročnikov'
@ -425,8 +482,9 @@ Video:
Live chat is enabled. Chat messages will appear here once sent.: 'Pogovor v živo
je vklopljen.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Pogovor
v živo trenutno ni podprt v Invidious APV.·· ·· Potrebna je neposredna povezava
z YouTube-om.'
v živo trenutno ni podprt v Invidious APV.
· Potrebna je neposredna povezava z YouTubom.'
Published:
Jan: 'jan.'
Feb: 'feb.'
@ -468,6 +526,16 @@ Video:
audio only: Samo avdio
video only: Samo video
Download Video: Prenesi videoposnetek
Started streaming on: Pretok začet dne
Streamed on: Pretočeno dne
Copy Invidious Channel Link: Kopiraj povezavo Invidious kanala
Open Channel in Invidious: Odpri ta kanal v Invidiousu
Copy YouTube Channel Link: Kopiraj povezavo YouTube kanala
Open Channel in YouTube: Odpri ta kanal v YouTubu
Video has been removed from your saved list: Videoposnetek je bil odstranjen iz
seznama
Video has been saved: Videoposnetek je bil shranjen
Save Video: Shrani videoposnetek
Videos:
#& Sort By
Sort By:
@ -514,6 +582,8 @@ Share:
Invidious Embed URL copied to clipboard: 'Invidious vložek URL kopiran'
YouTube URL copied to clipboard: 'YouTube URL kopiran'
YouTube Embed URL copied to clipboard: 'YouTube vložek URL kopiran'
YouTube Channel URL copied to clipboard: URL YouTube kanala je bil kopiran
Invidious Channel URL copied to clipboard: URL Invidious kanala je bil kopiran
Mini Player: 'Mini predvajalnik'
Comments:
Comments: 'Komentarji'
@ -554,8 +624,14 @@ Playing Previous Video: 'Predvaja se prejšnji videoposnetek'
Playing next video in 5 seconds. Click to cancel: 'Naslednji videoposnetek čez 5
sekund. Kliknite za preklic.'
Canceled next video autoplay: 'Samodejno predvajanje preklicano'
'The playlist has ended. Enable loop to continue playing': 'Seznama predvajanja je
konec. ·· ·· Vklopite ponovno predvajanje, če želite nadaljevati'
'The playlist has ended. Enable loop to continue playing': "Seznama predvajanja je\
\ konec. \n· Vklopite ponovno predvajanje, če želite nadaljevati"
Yes: 'Da'
No: 'Ne'
More: Več
Tooltips:
General Settings:
Preferred API Backend: Izberite zaledje, ki ga FreeTube uporablja za pridobivanje
podatkov. Lokalni APV je vgrajeni . Invidious APV za delovanje potrebuje Invidious
strežnik.

574
static/locales/sr.yaml Normal file
View File

@ -0,0 +1,574 @@
# Put the name of your locale in the same language
Locale Name: 'Српски'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Овај део апликације још није спреман. Вратите се касније када буде постигнут напредак.
# Webkit Menu Bar
File: 'Датотека'
Quit: 'Затвори'
Edit: 'Промени'
Undo: 'Поништи'
Redo: 'Обнови'
Cut: 'Исеци'
Copy: 'Копирај'
Paste: 'Прилепи'
Delete: 'Избриши'
Select all: 'Све одабрати'
Reload: 'Освежи'
Force Reload: 'Натерај освежавање'
Toggle Developer Tools: 'Укључите/искључите алате за програмере'
Actual size: 'Тренутна величина'
Zoom in: 'Повећај'
Zoom out: 'Смањи'
Toggle fullscreen: 'Цео екран'
Window: 'Прозор'
Minimize: 'Минимизуј'
Close: 'Затвори'
Back: 'Назад'
Forward: 'Напред'
Version $ is now available! Click for more details: 'Верзија $ је сада достуна! Кликните
за више детаља'
Download From Site: 'Преузми са сајта'
A new blog is now available, $. Click to view more: 'Нови блог је сада доступан, $.
Кликни за приказ више'
# Search Bar
Search / Go to URL: 'Претражи / иди на УРЛ'
# In Filter Button
Search Filters:
Search Filters: 'Филтери претраге'
Sort By:
Sort By: 'Среди по'
Most Relevant: 'Најрелевантније'
Rating: 'Оцена'
Upload Date: 'Датум отпремања'
View Count: 'Број прегледа'
Time:
Time: 'Датум'
Any Time: 'Све'
Last Hour: 'Последњи сат'
Today: 'Данас'
This Week: 'Ове недеље'
This Month: 'Овај месец'
This Year: 'Ова година'
Type:
Type: 'Тип'
All Types: 'Сва'
Videos: 'Видео'
Channels: 'Канали'
#& Playlists
Duration:
Duration: 'Трајање'
All Durations: 'Све'
Short (< 4 minutes): 'Кратко (< 4 минута)'
Long (> 20 minutes): 'Дугачко (> 20 минута)'
# On Search Page
Search Results: 'Резултати претраге'
Fetching results. Please wait: 'Примање резултата. Сачекајте'
Fetch more results: 'Покажи још резултата'
There are no more results for this search: 'Нема више резултата за ову претрагу'
# Sidebar
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Праћења'
Latest Subscriptions: 'Задња праћења'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Овај
профил има велики број праћења. Присиљавање RSS-а да се избегне ограничење'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Ваша
листа прећења је тренутно празна. Почните да додајете прећење да бисте их видели
овде.'
'Getting Subscriptions. Please wait.': 'Примање праћења. Сачекајте.'
Refresh Subscriptions: 'Освежи праћења'
Load More Videos: 'Учитај више видео записа'
More: 'Још'
Trending: 'Тренда'
Most Popular: 'Нај популарније'
Playlists: 'Плејлисте'
User Playlists:
Your Playlists: 'Ваше плејлисте'
Playlist Message: 'Ова страница се не одражава у потпуности радне плејлисте. Она
само приказује видео записе које сте сачували или фаворизирали. Када је посао
завршио, сви видео записи одавде ће се преместити на плејлисту "Омиљени".'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 'Нисте
сачували ни један видео. Кликни на дугме Сачувај на углу видео записа да бисте
је овде навели'
History:
# On History Page
History: 'Историја'
Watch History: 'Види историју'
Your history list is currently empty.: 'Ваша историја је празна.'
Settings:
# On Settings Page
Settings: 'Подешавања'
The app needs to restart for changes to take effect. Restart and apply change?: 'Апликација
треба да се поново покрене како би промене ступиле на снагу. Поново покрените
и примените промене?'
General Settings:
General Settings: 'Општа подешавања'
Check for Updates: 'Провери ажурирања'
Check for Latest Blog Posts: 'Провери најновије поруке блога'
Fallback to Non-Preferred Backend on Failure: 'Повратак на неомиљени Backend на
неуспех'
Enable Search Suggestions: 'Покажи предлоге за претрагу'
Default Landing Page: 'Подразумевана почетна страница'
Locale Preference: 'Локална преференција'
Preferred API Backend:
Preferred API Backend: 'Омиљени API Backend'
Local API: 'Локални API'
Invidious API: 'Invidious API'
Video View Type:
Video View Type: 'Тип приказа видеа'
Grid: 'Решетка'
List: 'Листа'
Thumbnail Preference:
Thumbnail Preference: 'Преференције сличице'
Default: 'Подразумевано'
Beginning: 'Почетак'
Middle: 'Средина'
End: 'Крај'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious инстанца
(Подразумевано је https://invidious.snopyta.org)'
View all Invidious instance information: 'Погледајте информације свих Invidious
инстанце'
Region for Trending: 'Регион за тренд'
#! List countries
Theme Settings:
Theme Settings: 'Подешавања теме'
Match Top Bar with Main Color: 'Усклади горњу траку са главном бојом'
Expand Side Bar by Default: 'Подразумевано прошири бочну траку'
Disable Smooth Scrolling: 'Онемогући глатко померање'
UI Scale: 'UI скала'
Base Theme:
Base Theme: 'Основна тема'
Black: 'Црна'
Dark: 'Тамна'
Light: 'Светла'
Main Color Theme:
Main Color Theme: 'Главна боја теме'
Red: 'Црвено'
Pink: 'Розе'
Purple: 'Љубичасто'
Deep Purple: 'Тамно љубичасто'
Indigo: 'Индиго'
Blue: 'Плаво'
Light Blue: 'Светло плаво'
Cyan: 'Цијан'
Teal: 'Teal'
Green: 'Зелено'
Light Green: 'Светло зелено'
Lime: 'Лимун зелено'
Yellow: 'Жуто'
Amber: 'Амбер'
Orange: 'Наранђасто'
Deep Orange: 'Тамно нарађасто'
Secondary Color Theme: 'Секундарна боја теме'
#* Main Color Theme
Player Settings:
Player Settings: 'Подешавања плејера'
Force Local Backend for Legacy Formats: 'форсирај локални Backend за Legacy формате'
Play Next Video: 'Пусти следећи видео'
Turn on Subtitles by Default: 'Подразумевано упали титлове'
Autoplay Videos: 'Ауто-пусти видео'
Proxy Videos Through Invidious: 'Прокси видео преко Invidious'
Autoplay Playlists: 'Ауто-пусти плејлисте'
Enable Theatre Mode by Default: 'Подразумевано активирај театар мод'
Playlist Next Video Interval: 'Интервал следећег видеа из плејлисте'
Default Volume: 'Подразумевана јачина'
Default Playback Rate: 'Подразумевана брзина репродукције'
Default Video Format:
Default Video Format: 'Подразумеван формат видеа'
Dash Formats: 'Dash формати'
Legacy Formats: 'Legacy формати'
Audio Formats: 'Аудио формати'
Default Quality:
Default Quality: 'Подразумеван квалитет'
Auto: 'Ауто'
144p: '144p'
240p: '240p'
360p: '360p'
480p: '480p'
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: '4k'
8k: '8k'
Privacy Settings:
Privacy Settings: 'Подешавања приватности'
Remember History: 'Запамти историју'
Save Watched Progress: 'Сачувај напредак видеа'
Clear Search Cache: 'Испразни кеш претраге'
Are you sure you want to clear out your search cache?: 'Јесте ли сигурни да желите
да очистите кеш претраге?'
Search cache has been cleared: 'Кеш претраживања је обрисано'
Remove Watch History: 'Избриши историју гледања'
Are you sure you want to remove your entire watch history?: 'Сигурно желите да
избришете целу историју гледања?'
Watch history has been cleared: 'Историја је избрисана'
Remove All Subscriptions / Profiles: 'Обриши сва праћења/профили'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Да
ли сте сигурни да желите уклонити сва праћења и профиле? Ово се не може поништити.'
Subscription Settings:
Subscription Settings: 'Подешавања праћења'
Hide Videos on Watch: 'Сакриј одгледани видео записи'
Fetch Feeds from RSS: 'Дохват RSS-а'
Manage Subscriptions: 'Управљај ста пратиш'
Distraction Free Settings:
Distraction Free Settings: 'Подешавања дистракције'
Hide Video Views: 'Сакриј број приказа видеа'
Hide Video Likes And Dislikes: 'Сакриј видео лајкове'
Hide Channel Subscribers: 'Сакриј број праћења канала'
Hide Comment Likes: 'Сакриј лајковање из коментара'
Hide Recommended Videos: 'Сакриј препоручене видее'
Hide Trending Videos: 'Сакриј видее у тренду'
Hide Popular Videos: 'Сакриј популарне видее'
Hide Playlists: 'Сакриј плејлисте'
Hide Live Chat: 'Сакриј уживо ћаскање'
Hide Active Subscriptions: 'Сакриј активна праћења'
Data Settings:
Data Settings: 'Подешавања података'
Select Import Type: 'Одабери тип увоза'
Select Export Type: 'Одабери тип извоза'
Import Subscriptions: 'Увоз праћења'
Import FreeTube: 'Увоз FreeTube'
Import YouTube: 'Увоз YouTube'
Import NewPipe: 'Увоз NewPipe'
Check for Legacy Subscriptions: 'Провери да ли постоје стара праћања'
Export Subscriptions: 'Извоз праћања'
Export FreeTube: 'Извоз FreeTube'
Export YouTube: 'Извоз YouTube'
Export NewPipe: 'Извоз NewPipe'
Import History: 'Увоз историје'
Export History: 'Извоз историје'
Profile object has insufficient data, skipping item: 'Објект профила нема довољно
података, прескакање'
All subscriptions and profiles have been successfully imported: 'Сва праћања и
профили су успешно увезени'
All subscriptions have been successfully imported: 'Сва праћања су успешно увезене'
One or more subscriptions were unable to be imported: 'Увоз једне или више праћења
није успео'
Invalid subscriptions file: 'Датотека праћења није добра'
This might take a while, please wait: 'Ово би могло потрајати неко време, молим
вас причекајте'
Invalid history file: 'Неважећа датотека историје'
Subscriptions have been successfully exported: 'Праћења су успешно извезени'
History object has insufficient data, skipping item: 'Објект историје нема довољно
података, прескакање'
All watched history has been successfully imported: 'Цела историја гледања је
успешно увезена'
All watched history has been successfully exported: 'Цела историја гледања је
успешно извезена'
Unable to read file: 'Није могуће читати датотеку'
Unable to write file: 'Није могуће писати датотеку'
Unknown data key: 'Непознат кључ података'
How do I import my subscriptions?: 'Како унети моја праћања?'
Manage Subscriptions: 'Управљај праћањима'
Proxy Settings:
Proxy Settings: 'Подешавања проксија'
Enable Tor / Proxy: 'Активирај Tor/Прокси'
Proxy Protocol: 'Протокол проксија'
Proxy Host: 'Хост проксија'
Proxy Port Number: 'Порт за прокси'
Clicking on Test Proxy will send a request to: 'Клик на „Пробај Прокси“ послаће
захтев на'
Test Proxy: 'Пробај Прокси'
Your Info: 'Ваше информације'
Ip: 'IP'
Country: 'Земља'
Region: 'Регион'
City: 'Град'
Error getting network information. Is your proxy configured properly?: 'Грешка
у добијању информација о мрежи. Да ли је ваш проки правилно подешен?'
About:
#On About page
About: 'О програму'
Beta: 'Бета'
Source code: 'Изворни код'
Licensed under the AGPLv3: 'Лиценциран под AGPLv3'
View License: 'Види лиценцу'
Downloads / Changelog: 'Преузимања/Листа промена'
GitHub releases: 'Доступна издања на GitHub'
Help: 'Помоћ'
FreeTube Wiki: 'Wiki од FreeTube-а'
FAQ: 'FAQ'
Report a problem: 'Пријави проблем'
GitHub issues: 'Проблеми које је заједничка идентификовала на GitHub'
Please check for duplicates before posting: 'Молимо проверите дупликате пре објављивања'
Website: 'Вебсајт'
Blog: 'Блог'
Email: 'Е-пошта'
Mastodon: 'Mastodon'
Chat on Matrix: 'Ћаскање на Matrix'
Please read the: 'Прочитајте'
room rules: 'правила собе'
Translate: 'Превод'
Credits: 'Призњања'
FreeTube is made possible by: 'FreeTube је омогућено од'
these people and projects: 'ови људи и пројекти'
Donate: 'Донација'
Profile:
Profile Select: 'Одабир профила'
Profile Filter: 'Филтер профила'
All Channels: 'Сви канали'
Profile Manager: 'Менаџер профила'
Create New Profile: 'Креирај нови профил'
Edit Profile: 'Уреди профил'
Color Picker: 'Селектор боја'
Custom Color: 'Прилагођена боја'
Profile Preview: 'Преглед профила'
Create Profile: 'Креирај профил'
Update Profile: 'Ажурирај профил'
Make Default Profile: 'Креирај подразумевани профил'
Delete Profile: 'Избриши профил'
Are you sure you want to delete this profile?: 'Сигурно желите да избришете овај
профил?'
All subscriptions will also be deleted.: 'Сва праћања ће такође бити избрисани.'
Profile could not be found: 'Профил не може да се нађе'
Your profile name cannot be empty: 'Име профила не може да буде празно'
Profile has been created: 'Профил је креиран'
Profile has been updated: 'Профил је ажуриран'
Your default profile has been set to $: 'Ваш подразумеван профил је постављен на
$'
Removed $ from your profiles: 'Уклоњено $ од ваших профила'
Your default profile has been changed to your primary profile: 'Ваш подразумевани
профил је промењен на ваш примарни профил'
$ is now the active profile: '$ је сада активан профил'
Subscription List: 'Листа праћања'
Other Channels: 'Остали канали'
$ selected: '$ одабрано'
Select All: 'Све одабрати'
Select None: 'Скини одабирање'
Delete Selected: 'Избриши одабрано'
Add Selected To Profile: 'Додај одабрано на профил'
No channel(s) have been selected: 'Ни један канал није одабран'
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: 'Ово је ваш примарни профил. Јесте ли сигурни да желите да избришете одабране
канале? Исти канали биће избрисани у било којем профилу у којем се налазе.'
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Јесте
ли сигурни да желите да избришете одабране канале? Ово неће избрисати канал из
било којег другог профила.'
#On Channel Page
Channel:
Subscriber: 'Пратилац'
Subscribers: 'Пратиоци'
Subscribe: 'Прати'
Unsubscribe: 'Не прати више'
Channel has been removed from your subscriptions: 'Канал је уклоњен из праћања'
Removed subscription from $ other channel(s): 'Праћење уклоњен из $ остала канала'
Added channel to your subscriptions: 'Канал додат у прећења'
Search Channel: 'Тражи канал'
Your search results have returned 0 results: 'Резултати претраге вратили су 0 резултата'
Sort By: 'Среди по'
Videos:
Videos: 'Видео'
This channel does not currently have any videos: 'Овај канал тренутно нема видео'
Sort Types:
Newest: 'Најновије'
Oldest: 'Нај старије'
Most Popular: 'Нај популарније'
Playlists:
Playlists: 'Плејлиста'
This channel does not currently have any playlists: 'Овај канал тренутно нема
ни једну плејлисту'
Sort Types:
Last Video Added: 'Задњи додат видео'
Newest: 'Нај новије'
Oldest: 'Нај старије'
About:
About: 'О...'
Channel Description: 'Опис канала'
Featured Channels: 'Истакнути канали'
Video:
Mark As Watched: 'Означи као погледано'
Remove From History: 'Уклони из историје'
Video has been marked as watched: 'Видео је постављен као гледан'
Video has been removed from your history: 'Видео је уклоњеј из историје'
Save Video: 'Сачувај видео'
Video has been saved: 'Видео је сачуван'
Video has been removed from your saved list: 'Видео је уклоњен из сачуване листе'
Open in YouTube: 'Отвори у YouTube'
Copy YouTube Link: 'Копирај YouTube везу'
Open YouTube Embedded Player: 'Отвори у Youtube-NoCookie'
Copy YouTube Embedded Player Link: 'Копирај Youtube-NoCookie везу'
Open in Invidious: 'Отвори у Invidious'
Copy Invidious Link: 'Копирај Invidious везу'
Open Channel in YouTube: 'Отвори канал у YouTube'
Copy YouTube Channel Link: 'Копирај везу YouTube канала'
Open Channel in Invidious: 'Отвори канал у Invidious'
Copy Invidious Channel Link: 'Копирај везу Invidious канала'
View: 'Прегледа'
Views: 'Прегледа'
Loop Playlist: 'Безкрајна плејлиста'
Shuffle Playlist: 'Промешај плејлисту'
Reverse Playlist: 'Обрни плејлисту'
Play Next Video: 'Пусти следећи видео'
Play Previous Video: 'Пусти претходни видео'
# Context is "X People Watching"
Watching: 'Гледа се'
Watched: 'Одгледано'
Autoplay: 'Аутоматско покретање'
Starting soon, please refresh the page to check again: 'Ускоро почиње, освежите
страницу да бисте поново проверили'
# As in a Live Video
Live: 'Директно'
Live Now: 'Директно сада'
Live Chat: 'Директно ћаскање'
Enable Live Chat: 'Упали директно ћаскање'
Live Chat is currently not supported in this build.: 'Директно ћаскање тренутно
није подржан у овој изградњи.'
'Chat is disabled or the Live Stream has ended.': 'Ћаскање је угашено или директан
пренос је завршен.'
Live chat is enabled. Chat messages will appear here once sent.: ''
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': ''
Download Video: ''
video only: ''
audio only: ''
Audio:
Low: ''
Medium: ''
High: ''
Best: ''
Published:
Jan: ''
Feb: ''
Mar: ''
Apr: ''
May: ''
Jun: ''
Jul: ''
Aug: ''
Sep: ''
Oct: ''
Nov: ''
Dec: ''
Second: ''
Seconds: ''
Minute: ''
Minutes: ''
Hour: ''
Hours: ''
Day: ''
Days: ''
Week: ''
Weeks: ''
Month: ''
Months: ''
Year: ''
Years: ''
Ago: ''
Upcoming: ''
Published on: ''
Streamed on: ''
Started streaming on: ''
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: ''
#& Videos
Videos:
#& Sort By
Sort By:
Newest: ''
Oldest: ''
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: ''
Videos: ''
View: ''
Views: ''
Last Updated On: ''
Share Playlist:
Share Playlist: ''
Copy YouTube Link: ''
Open in YouTube: ''
Copy Invidious Link: ''
Open in Invidious: ''
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: ''
Change Format:
Change Video Formats: ''
Use Dash Formats: ''
Use Legacy Formats: ''
Use Audio Formats: ''
Dash formats are not available for this video: ''
Audio formats are not available for this video: ''
Share:
Share Video: ''
Include Timestamp: ''
Copy Link: ''
Open Link: ''
Copy Embed: ''
Open Embed: ''
# On Click
Invidious URL copied to clipboard: ''
Invidious Embed URL copied to clipboard: ''
Invidious Channel URL copied to clipboard: ''
YouTube URL copied to clipboard: ''
YouTube Embed URL copied to clipboard: ''
YouTube Channel URL copied to clipboard: ''
Mini Player: ''
Comments:
Comments: ''
Click to View Comments: ''
Getting comment replies, please wait: ''
There are no more comments for this video: ''
Show Comments: ''
Hide Comments: ''
Sort by: ''
Top comments: ''
Newest first: ''
# Context: View 10 Replies, View 1 Reply
View: ''
Hide: ''
Replies: ''
Reply: ''
There are no comments available for this video: ''
Load More Comments: ''
No more comments available: ''
Up Next: ''
#Tooltips
Tooltips:
General Settings:
Preferred API Backend: ''
Fallback to Non-Preferred Backend on Failure: ''
Thumbnail Preference: ''
Invidious Instance: ''
Region for Trending: ''
Player Settings:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
Subscription Settings:
Fetch Feeds from RSS: 'Када је омогућено, FreeTube ће користити РСС уместо свог
подразумеваног метода за прикупљање вашег праћења. РСС је бржи и спречава блокирање
ИП-а, али не пружа одређене информације попут трајања видеа или статуса уживо'
# Toast Messages
Local API Error (Click to copy): ''
Invidious API Error (Click to copy): ''
Falling back to Invidious API: ''
Falling back to the local API: ''
This video is unavailable because of missing formats. This can happen due to country unavailability.: ''
Subscriptions have not yet been implemented: 'Праћења још увек нису примењени'
Loop is now disabled: ''
Loop is now enabled: ''
Shuffle is now disabled: ''
Shuffle is now enabled: ''
The playlist has been reversed: ''
Playing Next Video: ''
Playing Previous Video: ''
Playing Next Video Interval: ''
Canceled next video autoplay: ''
'The playlist has ended. Enable loop to continue playing': ''
Yes: ''
No: ''

View File

@ -70,6 +70,8 @@ Search Filters:
Fetching results. Please wait: 'Hämtar resultat. Snälla vänta'
Fetch more results: 'Hämta fler resultat'
# Sidebar
There are no more results for this search: Det finns inte fler resultat för den
här sökningen
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Prenumerationer'
@ -342,7 +344,7 @@ About:
Mastodon: Mastodon
Email: E-post
Blog: Blogg
Website: Webbsida
Website: Webbplats
Please check for duplicates before posting: Vänligen kontrollera om dubbletter innan
du postar
GitHub issues: GitHub-problem

View File

@ -1,6 +1,6 @@
# Put the name of your locale in the same language
Locale Name: 'Türkçe'
FreeTube: 'Freetube'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Uygulamanın bu bölümü henüz hazır değil. Tamamlanınca geri gel.
@ -76,7 +76,7 @@ Subscriptions:
Subscriptions: 'Abonelikler'
Latest Subscriptions: 'En Yeni'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Abonelik
listeniz şu anda boş. Burada görmek için abone olmaya başlayın.'
listeniz şu anda boş. Aboneliklerinizi görebilmek için abone olmaya başlayın.'
'Getting Subscriptions. Please wait.': 'Abonelikler yükleniyor. Lütfen bekleyin.'
Refresh Subscriptions: 'Abonelikleri Yenile'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Bu
@ -88,8 +88,8 @@ Playlists: 'Oynatma Listeleri'
User Playlists:
Your Playlists: 'Oynatma Listelerin'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Kaydedilen
videolarınız boş. Burada listelenmesi için videonun köşesindeki kaydet düğmesine
tıklayın
videolarınız boş. Kaydedilen videolarınızın burada listelenmesi için videonun
köşesindeki kaydet düğmesine tıklayın
Playlist Message: Bu sayfa, tam olarak çalışan oynatma listelerini yansıtmamaktadır.
Yalnızca kaydettiğiniz veya favorilerinize eklediğiniz videoları listeler. İş
bittiğinde, şu anda burada bulunan tüm videolar bir 'Favoriler' oynatma listesine
@ -109,7 +109,7 @@ Settings:
Fallback to Non-Preferred Backend on Failure: 'Hata Durumunda Tercih Edilmeyen
Arka Uca Geç'
Enable Search Suggestions: 'Arama Önerilerini Etkinleştir'
Default Landing Page: 'Varsayılanılış Ekranı'
Default Landing Page: 'Öntanımlıılış Ekranı'
Locale Preference: 'Tercih Edilen Yerel Ayar'
Preferred API Backend:
Preferred API Backend: 'Tercih Edilen API Arka Ucu'
@ -121,15 +121,16 @@ Settings:
List: 'Liste'
Thumbnail Preference:
Thumbnail Preference: 'Küçük Resim Tercihi'
Default: 'Varsayılan'
Default: 'Öntanımlı'
Beginning: 'Başlangıç'
Middle: 'Orta'
End: 'Bitiş'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious Örneği
(Varsayılan https://invidious.snopyta.org)'
(Öntanımlı olarak https://invidious.snopyta.org)'
Region for Trending: 'Trendler İçin Bölge Tercihi'
#! List countries
View all Invidious instance information: Tüm Invidious örnek bilgilerini görüntüle
System Default: Sistem Öntanımlı Değeri
Theme Settings:
Theme Settings: 'Tema Ayarları'
Match Top Bar with Main Color: 'Üst Barı Ana Renk ile Eşleştir'
@ -166,20 +167,20 @@ Settings:
Force Local Backend for Legacy Formats: 'Eski Biçimler için Yerel Arka Ucu Kullanmaya
Zorla'
Play Next Video: 'Sonraki Videoyu Oynat'
Turn on Subtitles by Default: 'Altyazıyı Varsayılan Olarak Aç'
Turn on Subtitles by Default: 'Alt Yazıları Öntanımlı Olarak Aç'
Autoplay Videos: 'Videoları Otomatik Başlat'
Proxy Videos Through Invidious: 'Videolari Invidious Üzerinden Aktar'
Autoplay Playlists: 'Oytma Listelerini Otomatik Başlat'
Enable Theatre Mode by Default: 'Sinema Modunu Varsayılan Olarak Etkinleştir'
Default Volume: 'Varsayılan Ses Düzeyi'
Default Playback Rate: 'Varsayılan Oynatma Hızı'
Enable Theatre Mode by Default: 'Sinema Modunu Öntanımlı Olarak Etkinleştir'
Default Volume: 'Öntanımlı Ses Düzeyi'
Default Playback Rate: 'Öntanımlı Oynatma Hızı'
Default Video Format:
Default Video Format: 'Varsayılan Video Biçimi'
Dash Formats: 'Dash Biçimleri'
Default Video Format: 'Öntanımlı Video Biçimi'
Dash Formats: 'DASH Biçimleri'
Legacy Formats: 'Eski Biçimler'
Audio Formats: 'Ses Biçimi'
Audio Formats: 'Ses Biçimleri'
Default Quality:
Default Quality: 'Varsayılan Kalite'
Default Quality: 'Öntanımlı Kalite'
Auto: 'Otomatik'
144p: '144p'
240p: '240p'
@ -191,6 +192,7 @@ Settings:
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Oynatma Listesi Sonraki Video Aralığı
Next Video Interval: Sonraki Video Aralığı
Privacy Settings:
Privacy Settings: 'Gizlilik Ayarları'
Remember History: 'Geçmişi Hatırla'
@ -206,6 +208,8 @@ Settings:
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
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: 'Abonelik Ayarları'
Hide Videos on Watch: 'İzlenmiş Videoları Gizle'
@ -309,6 +313,12 @@ Settings:
Proxy Protocol: Vekil Sunucu Protokolü
Enable Tor / Proxy: Tor / Vekil Sunucu Etkinleştir
Proxy Settings: Vekil Sunucu Ayarları
SponsorBlock Settings:
Notify when sponsor segment is skipped: Sponsor bölümü atlandığında bildir
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': SponsorBlock API
URL'si (Öntanımlı olarak https://sponsor.ajay.app)
Enable SponsorBlock: SponsorBlock'u Etkinleştir
SponsorBlock Settings: SponsorBlock Ayarları
About:
#On About page
About: 'Hakkında'
@ -340,7 +350,7 @@ About:
Latest FreeTube News: 'En Yeni FreeTube Haberleri'
Translate via Weblate: Weblate'de Çevir
Website: Web Sitesi
Website: İnternet Sitesi
Source Code: Kaynak Kodları
Release Notes: Sürüm Notları
Blog: Blog
@ -363,8 +373,8 @@ About:
Please read the: Lütfen okuyun
Chat on Matrix: Matrix'te sohbet et
Mastodon: Mastodon
Please check for duplicates before posting: Lütfen göndermeden önce yinelenmeleri
denetleyin
Please check for duplicates before posting: Lütfen bildirmeden önce bildirilmiş
olup olmadığını kontrol edin
GitHub issues: GitHub sorunları
Report a problem: Sorun bildir
FreeTube Wiki: FreeTube Wiki
@ -384,7 +394,7 @@ Profile:
Profile Preview: 'Profil Önizleme'
Create Profile: 'Profil Oluştur'
Update Profile: 'Profili Güncelle'
Make Default Profile: 'Varsayılan Profil Yap'
Make Default Profile: 'Öntanımlı Profil Yap'
Delete Profile: 'Profili Sil'
Are you sure you want to delete this profile?: 'Bu profili silmek istediğinizden
emin misiniz?'
@ -393,9 +403,9 @@ Profile:
Your profile name cannot be empty: 'Profil adı boş bırakılamaz'
Profile has been created: 'Profil oluşturuldu'
Profile has been updated: 'Profil güncellendi'
Your default profile has been set to $: 'Varsayılan profiliniz $ olarak ayarlandı'
Your default profile has been set to $: 'Öntanımlı profiliniz $ olarak ayarlandı'
Removed $ from your profiles: '$ Profillerinizden kaldırıldı'
Your default profile has been changed to your primary profile: 'Varsayılan profiliniz
Your default profile has been changed to your primary profile: 'Öntanımlı profiliniz
birincil profiliniz olarak değiştirildi'
$ is now the active profile: '$ artık etkin profil'
Subscription List: 'Abonelik Listesi'
@ -417,13 +427,13 @@ Profile:
Profile Filter: Profil Filtresi
Channel:
Subscriber: 'Abone'
Subscribers: 'Aboneler'
Subscribers: 'Abone'
Subscribe: 'Abone ol'
Unsubscribe: 'Abonelikten çık'
Channel has been removed from your subscriptions: 'Kanal aboneliklerinizden kaldırıldı'
Removed subscription from $ other channel(s): 'Diğer $ kanallarından abonelik kaldırıldı'
Added channel to your subscriptions: 'Kanal aboneliklerinize eklendi'
Search Channel: 'Kanal ara'
Search Channel: 'Kanalda ara'
Your search results have returned 0 results: 'Arama sonuçlarınız 0 sonuç verdi'
Sort By: 'Sırala'
Videos:
@ -514,7 +524,7 @@ Video:
Upcoming: 'İlk gösterim tarihi'
Published on: 'Yayımlanma tarihi'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % önce'
Publicationtemplate: '$ % önce'
#& Videos
Audio:
Best: En iyi
@ -533,6 +543,15 @@ Video:
Video has been removed from your saved list: Video, kaydedilen listenizden kaldırıldı
Video has been saved: Video kaydedildi
Save Video: Videoyu Kaydet
translated from English: İngilizceden çevrildi
Sponsor Block category:
music offtopic: müzik konu dışı
interaction: etkileşim
self-promotion: kendini tanıtma
outro: çıkış
intro: giriş
sponsor: sponsor
Skipped segment: Atlanan bölüm
Videos:
#& Sort By
Sort By:
@ -559,13 +578,13 @@ Playlist:
#& Views
Toggle Theatre Mode: 'Tiyatro Modunu Aç/Kapat'
Change Format:
Change Video Formats: 'Video Biçimini Değiştir'
Use Dash Formats: 'Dash Biçimi Kullan'
Change Video Formats: 'Video Biçimlerini Değiştir'
Use Dash Formats: 'DASH Biçimlerini Kullan'
Use Legacy Formats: 'Eski Biçimleri Kullan'
Use Audio Formats: 'Ses Biçimi Kullan'
Dash formats are not available for this video: 'Dash biçimi bu video için kullanılabilir
Use Audio Formats: 'Ses Biçimlerini Kullan'
Dash formats are not available for this video: 'DASH biçimleri bu video için kullanılabilir
değil'
Audio formats are not available for this video: 'Ses biçimi bu video için kullanılabilir
Audio formats are not available for this video: 'Ses biçimleri bu video için kullanılabilir
değil'
Share:
Share Video: 'Videoyu Paylaş'
@ -635,34 +654,42 @@ Tooltips:
önüne geçer, ancak video süresi veya canlı yayın durumu gibi belirli bilgileri
sağlamaz
Player Settings:
Default Video Format: Bir video oynatılırken kullanılan biçimleri ayarlayın. Dash
Default Video Format: Bir video oynatılırken kullanılan biçimleri ayarlayın. DASH
biçimleri daha yüksek kalitelerde oynatabilir. Eski biçimler en fazla 720p ile
sınırlıdır ancak daha az bant genişliği kullanır. Ses biçimleri yalnızca ses
akışlarıdır
akışlarıdır.
Proxy Videos Through Invidious: Videoları sunmak için YouTube ile doğrudan bağlantı
kurmak yerine Invidious'a bağlanılacak. API tercihini geçersiz kılar
kurmak yerine Invidious'a bağlanılacak. API tercihini geçersiz kılar.
Force Local Backend for Legacy Formats: Yalnızca Invidious API'si öntanımlı seçeneğiniz
olduğunda çalışır. Etkinleştirildiğinde, yerel API çalışacak ve Invidious tarafından
döndürülen biçimler yerine onun döndürdüğü eski biçimler kullanılacaktır. Invidious
tarafından döndürülen videolar ülke kısıtlamaları nedeniyle oynatılmadığında
yardımcı olur
yardımcı olur.
General Settings:
Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious örneği.
Aralarından seçim yapabileceğiniz herkese açık örneklerin bir listesini görmek
için geçerli örneği temizleyin
için geçerli örneği temizleyin.
Thumbnail Preference: FreeTube'daki tüm küçük resimler, öntanımlı küçük resim
yerine videonun bir karesiyle değiştirilecektir
yerine videonun bir karesiyle değiştirilecektir.
Fallback to Non-Preferred Backend on Failure: Etkinleştirildiğinde, tercih ettiğiniz
API'de bir sorun olduğunda FreeTube otomatik olarak tercih edilmeyen API'nizi
yedek yöntem olarak kullanmaya çalışır
yedek yöntem olarak kullanmaya çalışır.
Preferred API Backend: FreeTube'un veri elde etmek için kullandığı arka ucu seçin.
Yerel API yerleşik bir çıkarıcıdır. Invidious API'si, bağlanmak için bir Invidious
sunucusu gerektirir.
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
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.
| 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
için tıklayın.
More: Daha Fazla
Hashtags have not yet been implemented, try again later: Hashtag'ler henüz uygulanmadı,
daha sonra tekrar deneyin
Unknown YouTube url type, cannot be opened in app: Bilinmeyen YouTube URL türü, uygulamada
ılamıyor
Open New Window: Yeni Pencere Aç

View File

@ -85,15 +85,15 @@ Subscriptions:
Load More Videos: 'Завантажити більше відео'
Trending: 'Популярне'
Most Popular: 'Найпопулярніші'
Playlists: 'Списки відтворення'
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: Ця сторінка не відображає повністю робочих списків відтворення.
На ній перелічено лише відео, які ви зберегли або вибрали. Коли робота закінчиться,
усі відео, які зараз знаходяться тут, буде переміщено до списку відтворення "Вибране".
Playlist Message: Ця сторінка не показує повністю робочих добірок. На ній перелічено
лише відео, які ви зберегли або вибрали. Коли робота завершиться, усі відео, які
зараз знаходяться тут, буде переміщено до добірки "Вибране".
History:
# On History Page
History: 'Історія'
@ -113,8 +113,8 @@ Settings:
проблема, FreeTube спробує автоматично використати допоміжний API у якості резервного,
якщо він увімкнений'
Enable Search Suggestions: 'Увімкнути рекомендації пошуку'
Default Landing Page: 'Головна сторінка за замовчуванням'
Locale Preference: 'Локальні преференції'
Default Landing Page: 'Типова головна сторінка'
Locale Preference: 'Локальні налаштування'
Preferred API Backend:
Preferred API Backend: 'Головний API бекенд'
Local API: 'Локальний API'
@ -135,6 +135,7 @@ Settings:
#! List countries
View all Invidious instance information: Перегляд усіх відомостей про екземпляр
Invidious
System Default: За системними налаштуваннями
Theme Settings:
Theme Settings: 'Налаштування теми'
Match Top Bar with Main Color: 'Верхня панель основного кольору'
@ -174,17 +175,17 @@ Settings:
Turn on Subtitles by Default: 'Увімкнути субтитри за замовченням'
Autoplay Videos: 'Автоматичне відтворення відео'
Proxy Videos Through Invidious: 'Проксі-відео через Invidious'
Autoplay Playlists: 'Автоматичне відтворення списків'
Enable Theatre Mode by Default: 'Усталено увімкнений режим театру'
Default Volume: 'Гучніть за замовченням'
Default Playback Rate: 'Усталена швидкість відтворення'
Autoplay Playlists: 'Автоматичне відтворення добірок'
Enable Theatre Mode by Default: 'Типово увімкнути режим театру'
Default Volume: 'Типова гучність'
Default Playback Rate: 'Типова швидкість відтворення'
Default Video Format:
Default Video Format: 'Формат відео за замовченням'
Dash Formats: 'Формати Dash'
Default Video Format: 'Типовий формат відео'
Dash Formats: 'Формати DASH'
Legacy Formats: 'Застарілі формати'
Audio Formats: 'Аудіо формати'
Default Quality:
Default Quality: 'Якість за замовченням'
Default Quality: 'Типова якість'
Auto: 'Автоматично'
144p: '144p'
240p: '240p'
@ -196,6 +197,7 @@ Settings:
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Інтервал відтворення наступного відео
Next Video Interval: Інтервал до наступного відео
Privacy Settings:
Privacy Settings: 'Налаштування приватності'
Remember History: 'Збрігати історію'
@ -211,6 +213,7 @@ Settings:
Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі'
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Справді
хочете вилучити всі підписки та профілі? Цю дію не можна скасувати.'
Automatically Remove Video Meta Files: Автоматично вилучати метафайли відео
Subscription Settings:
Subscription Settings: 'Налаштування підписки'
Hide Videos on Watch: 'Ховати відео при перегляді'
@ -227,7 +230,7 @@ Settings:
Hide Popular Videos: 'Не показувати популярні відео'
Hide Live Chat: 'Не показувати живий чат'
Hide Active Subscriptions: Сховати активні підписки
Hide Playlists: Сховати списки відтворення
Hide Playlists: Сховати добірки
Data Settings:
Data Settings: 'Налаштування даних'
Select Import Type: 'Оберіть тип імпорту'
@ -303,6 +306,12 @@ Settings:
Proxy Protocol: Проксі-протокол
Enable Tor / Proxy: Увімкнути Tor / Проксі
Proxy Settings: Налаштування проксі
SponsorBlock Settings:
Notify when sponsor segment is skipped: Сповіщати про пропуск спонсорованого відтинка
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': URL-адреса API SponsorBlock
(типово https://sponsor.ajay.app)
Enable SponsorBlock: Увімкнути SponsorBlock
SponsorBlock Settings: Налаштування SponsorBlock
About:
#On About page
About: 'Про'
@ -410,9 +419,8 @@ Channel:
Oldest: 'Найдавніші'
Most Popular: 'Найпопулярніші'
Playlists:
Playlists: 'Списки відтворення'
This channel does not currently have any playlists: 'Цей канал наразі не має списків
відтворення'
Playlists: 'Добірки'
This channel does not currently have any playlists: 'Цей канал наразі не має добірок'
Sort Types:
Last Video Added: 'Останнє додане відео'
Newest: 'Найновіші'
@ -438,9 +446,9 @@ Video:
Copy Invidious Channel Link: 'Копіювати посилання на канал Invidious'
View: 'Перегляд'
Views: 'Перегляди'
Loop Playlist: 'Циклічний список відтворення'
Shuffle Playlist: 'Перемішати список відтворення'
Reverse Playlist: 'Змінити напрямок списку відтворення'
Loop Playlist: 'Зациклити добірку'
Shuffle Playlist: 'Перемішати добірку'
Reverse Playlist: 'Змінити напрямок добірки'
Play Next Video: 'Відтворити наступне відео'
Play Previous Video: 'Відтворити попереднє відео'
# Context is "X People Watching"
@ -509,6 +517,15 @@ Video:
Video has been removed from your saved list: Відео вилучено зі списку збережених
Video has been saved: Відео збережено
Save Video: Зберегти відео
translated from English: перекладено з англійської
Sponsor Block category:
music offtopic: музика по за темою
interaction: взаємодія
self-promotion: самореклама
outro: кінцівка
intro: вступ
sponsor: спонсор
Skipped segment: Пропущений відтинок
Videos:
#& Sort By
Sort By:
@ -518,13 +535,13 @@ Videos:
#& Playlists
Playlist:
#& About
View Full Playlist: 'Переглянути повний список відтворення'
View Full Playlist: 'Переглянути всю добірку'
Videos: 'Відео'
View: 'Перегляд'
Views: 'Переглядів'
Last Updated On: 'Востаннє оновлено'
Share Playlist:
Share Playlist: 'Поділитися списком відтворення'
Share Playlist: 'Поділитися добіркою'
Copy YouTube Link: 'Копіювати посилання youTube'
Open in YouTube: 'Відкрити в YouTube'
Copy Invidious Link: 'Копіювати посилання Invidious'
@ -536,10 +553,10 @@ Playlist:
Toggle Theatre Mode: 'Перемкнути режим театру'
Change Format:
Change Video Formats: 'Зміна форматів відео'
Use Dash Formats: 'Використовувати формати Dash'
Use Dash Formats: 'Використовувати формати DASH'
Use Legacy Formats: 'Використовувати застарілі формати'
Use Audio Formats: 'Використовувати аудіоформати'
Dash formats are not available for this video: 'Формати Dash недоступні для цього
Dash formats are not available for this video: 'Формати DASH недоступні для цього
відео'
Audio formats are not available for this video: 'Аудіоформати недоступні для цього
відео'
@ -587,36 +604,39 @@ Up Next: 'Далі вгору'
Tooltips:
General Settings:
Preferred API Backend: 'Виберіть сервер, який FreeTube використовує для отримання
даних. Локальний API є вбудованим витягувачем. Для API Invidious потрібен сервер
даних. Локальний API є вбудованим видобувачем. Для API Invidious потрібен сервер
Invidious для з'' єднання.'
Fallback to Non-Preferred Backend on Failure: 'Коли бажаний API має проблеми,
FreeTube автоматично спробує використовувати ваш не вибраний API як запасний
метод, коли його увімкнено'
метод, коли його увімкнено.'
Thumbnail Preference: 'Усі ескізи у FreeTube заміняться на кадр відео, а не на
типову мініатюру'
типову мініатюру.'
Invidious Instance: 'Сервер Invidious, до якого FreeTube під''єднуватиметься для
викликів API. Очистьте поточний сервер, щоб побачити список загальнодоступних
серверів на вибір'
серверів на вибір.'
Region for Trending: 'Регіон популярного дозволяє вам вибрати популярні відео
країни, які ви хочете бачити. Не всі показані країни насправді підтримуються
YouTube'
YouTube.'
Player Settings:
Force Local Backend for Legacy Formats: 'Працює, лише якщо API Invidious використовується
типовим. Якщо увімкнено, локальний API буде запущено і використовуватиме застарілі
формати, які було повернуто Invidious. Допомагає, коли відео, повернуті Invidious,
не відтворюються через обмеження в країні'
не відтворюються через обмеження в країні.'
Proxy Videos Through Invidious: 'Під’єднається до Invidious, щоб дивитися відео,
а не встановлювати пряме з’єднання з YouTube. Замінює налаштування API'
а не встановлювати пряме з’єднання з YouTube. Замінює налаштування API.'
Default Video Format: 'Встановіть формати, що використовуються під час відтворення
відео. Формати Dash можуть відтворюватися в кращій якості. Старі формати мають
відео. Формати DASH можуть відтворюватися в кращій якості. Старі формати мають
обмеження у 720p, але використовують меншу пропускну здатність. Формати аудіо
— це лише аудіопотоки'
— це лише аудіопотоки.'
Subscription Settings:
Fetch Feeds from RSS: 'Якщо ввімкнено, FreeTube використовуватиме RSS замість
стандартного способу захоплення каналу підписки. RSS швидше і запобігає блокуванню
ІР, але не надає дані, як-от тривалість відео або стан трансляції'
# Toast Messages
Privacy Settings:
Remove Video Meta Files: Якщо увімкнено, FreeTube автоматично видаляє метафайли,
створені під час відтворення відео, коли сторінку перегляду закрито.
Local API Error (Click to copy): 'Помилка локального API (натисніть, щоб скопіювати)'
Invidious API Error (Click to copy): 'Помилка Invidious API (натисніть, щоб скопіювати)'
Falling back to Invidious API: 'Повернення до API Invidious'
@ -629,13 +649,13 @@ Loop is now disabled: 'Цикл вимкнено'
Loop is now enabled: 'Цикл увімкнено'
Shuffle is now disabled: 'Випадковий порядок вимкнено'
Shuffle is now enabled: 'Випадковий порядок увімкнено'
The playlist has been reversed: 'Список відтворення обернено'
The playlist has been reversed: 'Добірку обернено'
Playing Next Video: 'Відтворення наступного відео'
Playing Previous Video: 'Відтворення попереднього відео'
Playing next video in 5 seconds. Click to cancel: 'Відтворення наступного відео за
5 секунд. Клацніть, щоб скасувати операцію.'
Canceled next video autoplay: 'Скасовано автовідтворення наступного відео'
'The playlist has ended. Enable loop to continue playing': 'Список відтворення закінчився.
'The playlist has ended. Enable loop to continue playing': 'Добірка завершилася.
Увімкніть цикл, щоб продовжити відтворення'
Yes: 'Так'
@ -645,3 +665,8 @@ Playing Next Video Interval: Відтворення наступного від
Клацніть, щоб скасувати. | Відтворення наступного відео через {nextVideoInterval}
секунд. Клацніть, щоб скасувати.
More: Докладніше
Hashtags have not yet been implemented, try again later: Хештеги ще не впроваджені,
спробуйте пізніше
Unknown YouTube url type, cannot be opened in app: Невідомий тип URL-адреси YouTube,
його не можна відкрити в застосункові
Open New Window: Відкрити нове вікно

View File

@ -175,6 +175,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: 播放列表 下一个影片时间间隔
Subscription Settings:
Subscription Settings: '订阅设置'
Hide Videos on Watch: '观看时隐藏视频'
@ -222,6 +223,7 @@ Settings:
Clear Search Cache: 清除搜索缓存
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您确定您想移除所有订阅和配置文件吗?这无法撤销。
Remove All Subscriptions / Profiles: 移除所有订阅 / 配置文件
Automatically Remove Video Meta Files: 自动删除硬盘元数据文件
Data Settings:
Subscriptions have been successfully exported: 订阅已成功导出
This might take a while, please wait: 这可能需要一段时间,请稍候
@ -264,6 +266,7 @@ Settings:
Hide Video Views: 隐藏视频观看数量
Distraction Free Settings: 零打扰设置
Hide Active Subscriptions: 隐藏活跃的订阅
Hide Playlists: 隐藏播放列表
The app needs to restart for changes to take effect. Restart and apply change?: 应用需要重启让修改生效。重启以应用修改?
Proxy Settings:
Proxy Protocol: 代理协议
@ -278,6 +281,7 @@ Settings:
Test Proxy: 测试代理
Clicking on Test Proxy will send a request to: 点击测试代理将会发送一个请求给
Proxy Port Number: 代理端口号
Proxy Host: 代理主机
About:
#On About page
About: '关于'
@ -305,6 +309,21 @@ About:
#On Channel Page
Source code: 源代码
Beta: 测试版
Website: 网站
Blog: 博客
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:
Subscriber: '订阅者'
Subscribers: '订阅者'
@ -414,6 +433,9 @@ Video:
Open Channel in YouTube: 在YouTube打开频道
Started streaming on: 开始在线直播于
Streamed on: 在线直播于
Video has been removed from your saved list: 视频已从你的播放列表移除
Video has been saved: 视频已保存
Save Video: 保存视频到播放列表
Videos:
#& Sort By
Sort By:

View File

@ -116,14 +116,15 @@ Settings:
Check for Latest Blog Posts: 檢查最新的部落格貼文
Check for Updates: 檢查更新
View all Invidious instance information: 檢視所有 Invidious 站台的資訊
System Default: 系統預設值
Theme Settings:
Theme Settings: '主題設定'
Match Top Bar with Main Color: '頂部功能表欄對應主色彩'
Base Theme:
Base Theme: '基本主題'
Black: '黑'
Dark: '深'
Light: '淺'
Black: '黑'
Dark: '深'
Light: '淺'
Main Color Theme:
Main Color Theme: '主題色'
Red: '紅'
@ -161,7 +162,7 @@ Settings:
Default Playback Rate: '預設播放速度'
Default Video Format:
Default Video Format: '預設影片格式'
Dash Formats: 'Dash格式'
Dash Formats: 'DASH 格式'
Legacy Formats: '傳統格式'
Audio Formats: '音訊格式'
Default Quality:
@ -176,6 +177,8 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: 播放清單 下一個影片間隔時間
Next Video Interval: 下一個影片區段
Subscription Settings:
Subscription Settings: '訂閱設定'
Hide Videos on Watch: '觀看時隱藏影片'
@ -223,6 +226,7 @@ Settings:
Privacy Settings: 隱私設定
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。
Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔
Automatically Remove Video Meta Files: 自動刪除影片元檔案
Data Settings:
How do I import my subscriptions?: 我要如何匯入我的訂閱?
Unknown data key: 未知的資料金鑰
@ -265,6 +269,7 @@ Settings:
Hide Recommended Videos: 隱藏推薦影片
Hide Channel Subscribers: 隱藏頻道訂閱者
Hide Active Subscriptions: 隱藏作用中的訂閱
Hide Playlists: 隱藏播放清單
The app needs to restart for changes to take effect. Restart and apply change?: 此變更需要重啟讓修改生效。重啟並且套用變更?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: 取得網路資訊時發生錯誤。您的代理伺服器設定正確嗎?
@ -280,6 +285,12 @@ Settings:
Proxy Protocol: 代理伺服器協定
Enable Tor / Proxy: 啟用 Tor 或代理伺服器
Proxy Settings: 代理伺服器設定
SponsorBlock Settings:
Notify when sponsor segment is skipped: 當贊助商片段被跳過時通知
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': SponsorBlock API
網址(預設為 https://sponsor.ajay.app
Enable SponsorBlock: 啟用 SponsorBlock
SponsorBlock Settings: SponsorBlock 設定
About:
#On About page
About: '關於'
@ -328,7 +339,7 @@ About:
room rules: 聊天室規則
Please read the: 請閱讀
Chat on Matrix: 在 Matrix 上聊天
Mastodon: Mastodon
Mastodon: Mastodon(長毛象/萬象)
Please check for duplicates before posting: 提交前請檢查有無重複的問題
GitHub issues: GitHub 問題追蹤器
Report a problem: 回報問題
@ -363,7 +374,7 @@ Channel:
About:
About: '關於'
Channel Description: '頻道說明'
Featured Channels: '列出頻道'
Featured Channels: '推薦頻道'
Added channel to your subscriptions: 已新增頻道至您的訂閱
Removed subscription from $ other channel(s): 從$個其他頻道移除訂閱
Channel has been removed from your subscriptions: 頻道已從您的訂閱中移除
@ -420,7 +431,7 @@ Video:
Minute: 分鐘
Published on: '發布於'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ %前'
Publicationtemplate: '$ % 前'
#& Videos
Video has been removed from your history: 影片已從您的歷史紀錄中移除
Video has been marked as watched: 影片標記為已觀看
@ -445,11 +456,20 @@ Video:
Open Channel in Invidious: 在Invidious開啟頻道
Copy YouTube Channel Link: 複製YouTube頻道連結
Open Channel in YouTube: 在YouTube開啟頻道
Started streaming on: '開始直播時間:'
Started streaming on: '開始直播時間'
Streamed on: 直播於
Video has been removed from your saved list: 影片已從您的播放清單移除
Video has been saved: 影片已儲存
Save Video: 儲存影片至播放清單
translated from English: 從英文翻譯
Sponsor Block category:
music offtopic: 音樂離題
interaction: 互動
self-promotion: 自我推廣
outro: 其他
intro: 介紹
sponsor: 贊助商
Skipped segment: 已跳過的片段
Videos:
#& Sort By
Sort By:
@ -477,11 +497,11 @@ Playlist:
Toggle Theatre Mode: '切換為劇院模式'
Change Format:
Change Video Formats: '變更影片格式'
Use Dash Formats: '使用Dash格式'
Use Dash Formats: '使用 DASH 格式'
Use Legacy Formats: '使用傳統格式'
Use Audio Formats: '使用音訊格式'
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: 這個影片沒有 DASH 格式
Share:
Share Video: '分享影片'
Copy Link: '複製連結'
@ -500,7 +520,7 @@ Mini Player: '迷你播放器'
Comments:
Comments: '留言'
Click to View Comments: '點擊查看留言'
Getting comment replies, please wait: '取留言中,請稍候...'
Getting comment replies, please wait: '取留言中,請稍候...'
Show Comments: '查看留言'
Hide Comments: '隱藏留言'
# Context: View 10 Replies, View 1 Reply
@ -572,6 +592,7 @@ Profile:
$ selected: $個選取的
Other Channels: 其他頻道
Subscription List: 訂閱清單
Profile Filter: 設定檔篩選器
The playlist has been reversed: 播放清單已反轉
A new blog is now available, $. Click to view more: 已有新的部落格文章,$。點擊以檢視更多
Download From Site: 從網站下載
@ -579,17 +600,25 @@ Version $ is now available! Click for more details: 版本更新囉! 最新版
This video is unavailable because of missing formats. This can happen due to country unavailability.: 沒有這個影片因為缺少格式。這個可能發生由於國家不可用。
Tooltips:
Subscription Settings:
Fetch Feeds from RSS: 啟用後FreeTube 將使用 RSS 而非預設方式來取得您的訂閱推送。RSS 更快而且可避免 IP 封鎖,但不提供某些訊息,如影片長度與即時狀態
Fetch Feeds from RSS: 啟用後FreeTube將使用RSS代替它的預設方法來抓取您的訂閱來源。RSS的速度較快而且可以防止IP封鎖但它可能不會提供某些資訊例如影片長度或是直播狀態。
Player Settings:
Default Video Format: 設定要用於影片播放的格式。Dash格式有更高的品質。傳統格式會限制在 720p但頻寬需求更低。音訊格式為僅有音訊的串流
Proxy Videos Through Invidious: 將連線到 Invidious而非直接連線到 YouTube 來提供影片。覆寫 API 偏好
Force Local Backend for Legacy Formats: 僅當 Invidious API是您預設 API 時才有效。啟用後,區域 API
將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious回傳的影片時有幫助
Default Video Format: 設定要用於影片播放的格式。DASH 格式有更高的畫質。傳統格式會限制在 720p 但頻寬需求更低。音訊格式為僅有音訊的串流
Proxy Videos Through Invidious: 將連線到 Invidious 而非直接連線到 YouTube 來提供影片。覆寫 API 偏好
Force Local Backend for Legacy Formats: 僅當 Invidious API 是您預設 API 時才有效。啟用後,區域
API 將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious 回傳的影片時有幫助
General Settings:
Invidious Instance: FreeTube將連線為 API呼叫的Invidious實例。清除目前的實例以檢視可供選擇的公用實例清單
Thumbnail Preference: FreeTube中所有縮圖都會被替換為影片畫面而非預設縮圖
Fallback to Non-Preferred Backend on Failure: 當您的偏好API 有問題時FreeTube將自動嘗試使用您的非偏好API
作為汰退方案
Invidious Instance: FreeTube 將連線到 Invidious 站台進行 API 呼叫。清除目前的站台以檢視可供選擇的公開站台清單。
Thumbnail Preference: FreeTube 中所有縮圖都會被替換為影片畫面而非預設縮圖
Fallback to Non-Preferred Backend on Failure: 當您的偏好 API 有問題時FreeTube 將自動嘗試使用您的非偏好
API 作為汰退方案
Preferred API Backend: 選擇 FreeTube 要用於取得YouTube資料的伺服器。本地 API 是內建擷取器。Invidious
API 需要 Invidious 伺服器才能連線。
Region for Trending: 發燒影片區域可以讓您選擇想要顯示哪個國家的發燒影片。 注意:並非所有國家都被YouTube支援
Region for Trending: 熱門影片區域可以讓您選擇想要顯示哪個國家的熱門影片。注意:並非所有國家都被 YouTube 支援。
Privacy Settings:
Remove Video Meta Files: 如果啟用FreeTube會在關閉觀看頁面時自動刪除影片播放過程中建立的暫存檔案。
Playing Next Video Interval: 馬上播放下一個影片。點擊取消。| 播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。|
播放下一個影片的時間為{nextVideoInterval}秒。點擊取消。
More: 更多
Hashtags have not yet been implemented, try again later: 尚未實作主題標籤,請稍後再試
Unknown YouTube url type, cannot be opened in app: 未知的 YouTube url 類型,無法在應用程式開啟
Open New Window: 開啟新視窗