Merge branch 'development'

This commit is contained in:
Preston 2021-03-06 17:48:51 -05:00
commit 91b7570823
56 changed files with 5336 additions and 5019 deletions

View File

@ -22,7 +22,6 @@ module.exports = {
// order matters: from least important to most important in terms of overriding
// Prettier + Vue: https://medium.com/@gogl.alex/how-to-properly-set-up-eslint-with-prettier-for-vue-or-nuxt-in-vscode-e42532099a9c
extends: [
'prettier/vue',
'prettier',
'eslint:recommended',
'plugin:vue/recommended',

View File

@ -41,7 +41,7 @@ jobs:
with:
path: 'package.json'
follow-symlinks: false
- name: Set Version Number Variable
id: versionNumber
uses: actions/github-script@v3
@ -58,13 +58,13 @@ jobs:
return "${{env.VERSION_NUMBER }}"
}
# script: if ${{ env.IS_DEV }} then echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER_NIGHTLY }}" else echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER }}" fi
- name: Update package.json version
uses: jossef/action-set-json-field@v1
with:
file: package.json
field: version
value: ${{ steps.versionNumber.outputs.result }}
value: ${{ steps.versionNumber.outputs.result }}
- name: Install libarchive-tools
@ -156,12 +156,12 @@ jobs:
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.pacman
path: build/freetube-${{ steps.versionNumber.outputs.result }}.pacman
- name: Upload Web Build
uses: actions/upload-artifact@v2
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.result }}_static_web
path: dist/web
# - name: Upload Web Build
# uses: actions/upload-artifact@v2
# if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
# with:
# name: freetube_${{ steps.versionNumber.outputs.result }}_static_web
# path: dist/web
- name: Upload Windows .exe Artifact
uses: actions/upload-artifact@v2

View File

@ -1,5 +1,5 @@
<p align="center">
<img src="https://freetubeapp.github.io/images/logoColor.png" width=500 align="center">
<img src="https://docs.freetubeapp.io/images/logoColor.png" width=500 align="center">
</p>
FreeTube is an open source desktop YouTube player built with privacy in mind.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 162 KiB

9
_icons/icon.svg Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" version="1">
<path style="opacity:0.2" d="M 8.2,5 C 5.8732,5 4,6.8732001 4,9.2000001 V 21.8 44.2 56.8 C 4,59.1268 5.8732,61 8.2,61 H 20.8 33.960547 43.2 C 52.5072,61 60,53.5072 60,44.2 V 36.921093 21.8 9.2000001 C 60,6.8732001 58.1268,5 55.8,5 H 43.2 20.8 Z"/>
<path style="fill:#e4e4e4" d="M 8.2,4 C 5.8732,4 4,5.8732001 4,8.2000001 V 20.8 43.2 55.8 C 4,58.1268 5.8732,60 8.2,60 H 20.8 33.960547 43.2 C 52.5072,60 60,52.5072 60,43.2 V 35.921093 20.8 8.2000001 C 60,5.8732001 58.1268,4 55.8,4 H 43.2 20.8 Z"/>
<path style="opacity:0.1" d="M 14.75,13 C 13.2265,13 12,14.274565 12,15.857422 v 30 C 12,50.143136 17.5,53 20.25,53 H 23 v -2.857422 -4.285156 -30 C 23,14.274565 21.7735,13 20.25,13 Z m 14.091797,0 C 27.267271,13 26,14.2265 26,15.75 v 5.5 C 26,22.7735 27.267271,24 28.841797,24 H 45.894531 C 50.157689,24 53,18.5 53,15.75 V 13 H 50.158203 45.894531 Z M 27.320312,27 A 1.2913161,1.1414724 0 0 0 26,28.142578 v 7.359375 7.359375 a 1.2913161,1.1414724 0 0 0 1.935547,0.986328 l 7.210937,-3.679687 7.208985,-3.679688 a 1.2913161,1.1414724 0 0 0 0,-1.976562 L 35.146484,30.833984 27.935547,27.154297 A 1.2913161,1.1414724 0 0 0 27.320312,27 Z"/>
<path style="fill:#f04242" d="M 14.75,12 C 13.2265,12 12,13.274286 12,14.857143 v 30 C 12,49.142857 17.5,52 20.25,52 H 23 v -2.857143 -4.285714 -30 C 23,13.274286 21.7735,12 20.25,12 Z"/>
<path style="fill:#f04242" d="M 26,20.25 C 26,21.7735 27.267579,23 28.842105,23 H 45.894737 C 50.157895,23 53,17.5 53,14.75 V 12 H 50.157895 45.894737 28.842105 C 27.267579,12 26,13.2265 26,14.75 Z"/>
<path style="fill:#14a4df" d="m 27.321275,26.000307 a 1.2913161,1.1414724 0 0 0 -1.321274,1.142629 v 7.358815 7.358816 a 1.2913161,1.1414724 0 0 0 1.936147,0.986925 l 7.209509,-3.679407 7.209511,-3.679409 a 1.2913161,1.1414724 0 0 0 0,-1.976244 l -7.209511,-3.679408 -7.209509,-3.679407 a 1.2913161,1.1414724 0 0 0 -0.614873,-0.15331 z"/>
<path style="fill:#ffffff;opacity:0.2" d="M 8.1992188 4 C 5.8724189 4 4 5.8724189 4 8.1992188 L 4 9.1992188 C 4 6.8724189 5.8724189 5 8.1992188 5 L 55.800781 5 C 58.127581 5 60 6.8724189 60 9.1992188 L 60 8.1992188 C 60 5.8724189 58.127581 4 55.800781 4 L 8.1992188 4 z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -16,10 +16,14 @@ if (platform == 'darwin') {
} else if (platform == 'linux') {
let arch = Arch.x64
if (args[2] === 'arm') {
if (args[2] === 'arm64') {
arch = Arch.arm64
}
if (args[3] === 'arm32') {
arch = Arch.armv7l
}
targets = Platform.LINUX.createTarget(['deb', 'zip', 'apk', 'rpm', 'AppImage', 'pacman'], arch)
}
@ -40,7 +44,7 @@ const config = {
]
}
],
files: ['_icons/iconColor.*', './dist/**/*', '!./dist/web/**/*'],
files: ['_icons/iconColor.*', 'icon.svg', './dist/**/*', '!./dist/web/**/*'],
dmg: {
contents: [
{
@ -62,7 +66,7 @@ const config = {
},
linux: {
category: 'Network',
icon: '_icons/icon.png',
icon: '_icons/icon.svg',
target: ['deb', 'zip', 'apk', 'rpm', 'AppImage', 'pacman'],
},
mac: {
@ -80,7 +84,7 @@ const config = {
}
},
win: {
icon: '_icons/iconColor.ico',
icon: '_icons/icon.ico',
target: ['nsis', 'zip', 'portable', 'squirrel'],
},
nsis: {

View File

@ -15,7 +15,7 @@ const whiteListedModules = []
const config = {
name: 'main',
mode: process.env.NODE_ENV,
devtool: isDevMode ? '#cheap-module-eval-source-map' : false,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
main: path.join(__dirname, '../src/main/index.js'),
},
@ -24,18 +24,19 @@ const config = {
rules: [
{
test: /\.(j|t)s$/,
loader: ['babel-loader'],
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.node$/,
use: 'node-loader',
loader: 'node-loader',
},
],
},
node: {
__dirname: isDevMode,
__filename: isDevMode,
global: isDevMode,
},
plugins: [
new webpack.DefinePlugin({

View File

@ -18,7 +18,7 @@ const whiteListedModules = ['vue']
const config = {
name: 'renderer',
mode: process.env.NODE_ENV,
devtool: isDevMode ? '#cheap-module-eval-source-map' : false,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
renderer: path.join(__dirname, '../src/renderer/main.js'),
},
@ -37,7 +37,7 @@ const config = {
},
{
test: /\.node$/,
use: 'node-loader',
loader: 'node-loader',
},
{
test: /\.vue$/,
@ -102,6 +102,7 @@ const config = {
node: {
__dirname: isDevMode,
__filename: isDevMode,
global: isDevMode,
},
plugins: [
// new WriteFilePlugin(),

View File

@ -13,7 +13,7 @@ const isDevMode = process.env.NODE_ENV === 'development'
const config = {
name: 'workers',
mode: process.env.NODE_ENV,
devtool: isDevMode ? '#cheap-module-eval-source-map' : false,
devtool: isDevMode ? 'eval-cheap-module-source-map' : false,
entry: {
workerSample: path.join(__dirname, '../src/utilities/workerSample.ts'),
},
@ -32,13 +32,14 @@ const config = {
},
{
test: /\.node$/,
use: 'node-loader',
loader: 'node-loader',
},
],
},
node: {
__dirname: isDevMode,
__filename: isDevMode,
global: isDevMode,
},
plugins: [
// new WriteFilePlugin(),

7559
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,7 @@
"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",
@ -15,11 +16,11 @@
"@silvermine/videojs-quality-selector": "^1.2.4",
"autolinker": "^3.14.2",
"bulma-pro": "^0.2.0",
"dateformat": "^4.4.1",
"electron-context-menu": "^2.4.0",
"dateformat": "^4.5.1",
"electron-context-menu": "^2.5.0",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
"jquery": "^3.5.1",
"jquery": "^3.6.0",
"js-yaml": "^4.0.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
@ -27,8 +28,8 @@
"markdown": "^0.5.0",
"material-design-icons": "^3.0.1",
"nedb": "^1.8.0",
"opml-to-json": "1.0.1",
"rss-parser": "^3.10.0",
"opml-to-json": "^1.0.1",
"rss-parser": "^3.12.0",
"socks-proxy-agent": "^5.0.0",
"video.js": "7.10.2",
"videojs-abloop": "^1.2.0",
@ -39,73 +40,73 @@
"videojs-vtt-thumbnails-freetube": "0.0.15",
"vue": "^2.6.12",
"vue-electron": "^1.0.6",
"vue-i18n": "^8.22.4",
"vue-i18n": "^8.23.0",
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.4.9",
"vuex": "^3.6.0",
"vue-router": "^3.5.1",
"vuex": "^3.6.2",
"xml2json": "^0.12.0",
"youtube-chat": "^1.1.0",
"youtube-chat": "git+https://github.com/IcedCoffeee/youtube-chat.git",
"youtube-suggest": "^1.1.0",
"yt-channel-info": "^1.2.2",
"yt-comment-scraper": "^3.0.0",
"yt-channel-info": "^1.3.0",
"yt-comment-scraper": "^3.0.2",
"yt-dash-manifest-generator": "1.1.0",
"yt-trending-scraper": "1.1.0",
"yt-trending-scraper": "^1.1.0",
"yt-xml2vtt": "^1.2.0",
"ytdl-core": "^4.4.5",
"ytdl-core": "^4.5.0",
"ytpl": "^2.0.5",
"ytsr": "^3.2.4"
"ytsr": "^3.3.1"
},
"description": "A private YouTube client",
"devDependencies": {
"@babel/core": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
"@babel/preset-env": "^7.12.11",
"@babel/preset-typescript": "^7.12.7",
"@typescript-eslint/eslint-plugin": "^4.14.0",
"@typescript-eslint/parser": "^4.14.0",
"acorn": "^8.0.4",
"@babel/core": "^7.13.8",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-proposal-object-rest-spread": "^7.13.8",
"@babel/preset-env": "^7.13.9",
"@babel/preset-typescript": "^7.13.0",
"@typescript-eslint/eslint-plugin": "^4.16.1",
"@typescript-eslint/parser": "^4.16.1",
"acorn": "^8.0.5",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.2",
"copy-webpack-plugin": "6.4.0",
"css-loader": "^5.0.1",
"copy-webpack-plugin": "8.0.0",
"css-loader": "^5.1.1",
"devtron": "^1.4.0",
"electron": "11.1.1",
"electron-builder": "^22.9.1",
"electron-builder-squirrel-windows": "^22.10.4",
"electron": "^12.0.0",
"electron-builder": "^22.10.5",
"electron-builder-squirrel-windows": "^22.10.5",
"electron-debug": "^3.2.0",
"electron-rebuild": "^2.3.4",
"eslint": "^7.18.0",
"eslint-config-prettier": "^7.2.0",
"electron-rebuild": "^2.3.5",
"eslint": "^7.21.0",
"eslint-config-prettier": "^8.1.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^7.4.1",
"eslint-plugin-vue": "^7.7.0",
"fast-glob": "^3.2.5",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^4.5.1",
"html-webpack-plugin": "^5.2.0",
"jest": "^26.6.3",
"mini-css-extract-plugin": "^1.3.4",
"node-abi": "^2.19.3",
"mini-css-extract-plugin": "^1.3.9",
"node-abi": "^2.20.0",
"node-loader": "^1.0.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.2.1",
"sass": "^1.32.5",
"sass-loader": "^10.1.1",
"sass": "^1.32.8",
"sass-loader": "^11.0.1",
"style-loader": "^2.0.0",
"tree-kill": "1.2.2",
"typescript": "^4.1.3",
"typescript": "^4.2.2",
"url-loader": "^4.1.1",
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^7.4.1",
"vue-eslint-parser": "^7.6.0",
"vue-loader": "^15.9.6",
"vue-style-loader": "^4.1.2",
"vue-style-loader": "^4.1.3",
"vue-template-compiler": "^2.6.12",
"webpack": "4.44.2",
"webpack-cli": "3.3.12",
"webpack": "^5.24.3",
"webpack-cli": "^4.5.0",
"webpack-dev-server": "^3.11.2"
},
"license": "AGPL-3.0-or-later",
@ -119,9 +120,11 @@
},
"scripts": {
"build": "run-s rebuild:electron pack build-release",
"build:arm": "run-s rebuild:electron pack build-release:arm",
"build:arm64": "run-s rebuild:electron pack build-release:arm64",
"build:arm32": "run-s rebuild:electron pack build-release:arm32",
"build-release": "node _scripts/build.js",
"build-release:arm": "node _scripts/build.js arm",
"build-release:arm64": "node _scripts/build.js arm64",
"build-release:arm32": "node _scripts/build.js arm32",
"debug": "run-s rebuild:electron debug-runner",
"debug-runner": "node _scripts/dev-runner.js --remote-debug",
"dev": "run-s rebuild:electron dev-runner",
@ -133,11 +136,11 @@
"jest:watch": "jest --watch",
"lint-fix": "eslint --fix --ext .js,.ts,.vue ./",
"lint": "eslint --ext .js,.ts,.vue ./",
"pack": "run-p pack:main pack:renderer pack:web pack:workers",
"pack:main": "webpack --mode=production --env.NODE_ENV=production --hide-modules --config _scripts/webpack.main.config.js",
"pack:renderer": "webpack --mode=production --env.NODE_ENV=production --hide-modules --config _scripts/webpack.renderer.config.js",
"pack:web": "webpack --mode=production --env.NODE_ENV=production --hide-modules --config _scripts/webpack.web.config.js",
"pack:workers": "webpack --mode=production --env.NODE_ENV=production --hide-modules --config _scripts/webpack.workers.config.js",
"pack": "run-p pack:main pack:renderer pack:workers",
"pack:main": "webpack --mode=production --node-env=production --config _scripts/webpack.main.config.js",
"pack:renderer": "webpack --mode=production --node-env=production --config _scripts/webpack.renderer.config.js",
"pack:web": "webpack --mode=production --node-env=production --config _scripts/webpack.web.config.js",
"pack:workers": "webpack --mode=production --node-env=production --config _scripts/webpack.workers.config.js",
"postinstall": "electron-rebuild",
"prettier": "prettier --write \"{src,_scripts}/**/*.{js,ts,vue}\"",
"rebuild:electron": "run-s electron-builder-install electron-rebuild",

View File

@ -2,6 +2,8 @@ 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,
@ -32,6 +34,9 @@ let startupUrl
// 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')
@ -226,7 +231,8 @@ function createWindow (useProxy = false, proxyUrl = '') {
nodeIntegrationInWorker: false,
webSecurity: false,
backgroundThrottling: false,
enableRemoteModule: true
enableRemoteModule: true,
contextIsolation: false
},
show: false
})

View File

@ -284,20 +284,11 @@ export default Vue.extend({
const v = this
electron.ipcRenderer.on('openUrl', function (event, url) {
if (url) {
v.$store.dispatch('getVideoIdFromUrl', url).then((result) => {
if (result) {
v.$store.dispatch('getVideoParamsFromUrl', url).then(({ videoId, timestamp }) => {
if (videoId) {
v.$router.push({
path: `/watch/${result}`
})
} else {
v.$router.push({
path: `/search/${encodeURIComponent(url)}`,
query: {
sortBy: v.searchSettings.sortBy,
time: v.searchSettings.time,
type: v.searchSettings.type,
duration: v.searchSettings.duration
}
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
}
})

View File

@ -6,11 +6,11 @@ import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtPrompt from '../ft-prompt/ft-prompt.vue'
import { remote } from 'electron'
import fs from 'fs'
import { opmlToJSON } from 'opml-to-json'
import ytch from 'yt-channel-info'
const remote = require('@electron/remote')
const app = remote.app
const dialog = remote.dialog

View File

@ -37,6 +37,9 @@ export default Vue.extend({
hidePopularVideos: function () {
return this.$store.getters.getHidePopularVideos
},
hidePlaylists: function () {
return this.$store.getters.getHidePlaylists
},
hideLiveChat: function () {
return this.$store.getters.getHideLiveChat
},
@ -61,6 +64,7 @@ export default Vue.extend({
'updateHideRecommendedVideos',
'updateHideTrendingVideos',
'updateHidePopularVideos',
'updateHidePlaylists',
'updateHideLiveChat',
'updateHideActiveSubscriptions',
'updatePlayNextVideo',

View File

@ -59,6 +59,12 @@
:default-value="hidePopularVideos"
@change="updateHidePopularVideos"
/>
<ft-toggle-switch
:label="$t('Settings.Distraction Free Settings.Hide Playlists')"
:compact="true"
:default-value="hidePlaylists"
@change="updateHidePlaylists"
/>
<ft-toggle-switch
:label="$t('Settings.Distraction Free Settings.Hide Live Chat')"
:compact="true"

View File

@ -1,5 +0,0 @@
.card {
width: 85%;
margin: 0 auto;
margin-bottom: 30px;
}

View File

@ -0,0 +1,17 @@
.card {
width: 85%;
margin: 0 auto;
margin-bottom: 30px;
}
.selected {
text-align: center;
}
::v-deep .select-label {
width: 95%;
}
::v-deep .select {
text-align-last: center;
}

View File

@ -6,15 +6,17 @@ import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtChannelBubble from '../../components/ft-channel-bubble/ft-channel-bubble.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtPrompt from '../../components/ft-prompt/ft-prompt.vue'
import FtSelect from '../ft-select/ft-select.vue'
export default Vue.extend({
name: 'FtProfileAllChannelsList',
name: 'FtProfileFilterChannelsList',
components: {
'ft-card': FtCard,
'ft-flex-box': FtFlexBox,
'ft-channel-bubble': FtChannelBubble,
'ft-button': FtButton,
'ft-prompt': FtPrompt
'ft-prompt': FtPrompt,
'ft-select': FtSelect
},
props: {
profile: {
@ -25,7 +27,8 @@ export default Vue.extend({
data: function () {
return {
channels: [],
selectedLength: 0
selectedLength: 0,
filteredProfileIndex: 0
}
},
computed: {
@ -38,44 +41,21 @@ export default Vue.extend({
profileList: function () {
return this.$store.getters.getProfileList
},
profileNameList: function () {
return this.profileList.flatMap((profile) => profile.name !== this.profile.name ? [profile.name] : [])
},
selectedText: function () {
const localeText = this.$t('Profile.$ selected')
return localeText.replace('$', this.selectedLength)
},
primaryProfile: function () {
return JSON.parse(JSON.stringify(this.profileList[0]))
}
},
watch: {
profile: function () {
this.channels = JSON.parse(JSON.stringify(this.primaryProfile.subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
return -1
}
if (nameA > nameB) {
return 1
}
return 0
}).filter((channel) => {
const index = this.profile.subscriptions.findIndex((sub) => {
return sub.id === channel.id
})
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})
}
profile: 'updateChannelList',
filteredProfileIndex: 'updateChannelList'
},
mounted: function () {
if (typeof this.profile.subscriptions !== 'undefined') {
this.channels = JSON.parse(JSON.stringify(this.profileList[0].subscriptions)).sort((a, b) => {
this.channels = JSON.parse(JSON.stringify(this.profileList[this.filteredProfileIndex].subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
@ -101,6 +81,32 @@ export default Vue.extend({
}
},
methods: {
updateChannelList () {
this.channels = JSON.parse(JSON.stringify(this.profileList[this.filteredProfileIndex].subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
return -1
}
if (nameA > nameB) {
return 1
}
return 0
}).filter((channel) => {
const index = this.profile.subscriptions.findIndex((sub) => {
return sub.id === channel.id
})
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})
},
handleChannelClick: function (index) {
this.channels[index].selected = !this.channels[index].selected
this.selectedLength = this.channels.filter((channel) => {
@ -108,6 +114,10 @@ export default Vue.extend({
}).length
},
handleProfileFilterChange: function (change) {
this.filteredProfileIndex = this.profileList.findIndex(profile => profile.name === change)
},
addChannelToProfile: function () {
if (this.selectedLength === 0) {
this.showToast({

View File

@ -4,7 +4,16 @@
<h2>
{{ $t("Profile.Other Channels") }}
</h2>
<p>
<ft-flex-box>
<ft-select
:placeholder="$t('Profile.Profile Filter')"
:value="profileNameList[0]"
:select-names="profileNameList"
:select-values="profileNameList"
@change="handleProfileFilterChange"
/>
</ft-flex-box>
<p class="selected">
{{ selectedText }}
</p>
<ft-flex-box>
@ -38,5 +47,5 @@
</div>
</template>
<script src="./ft-profile-all-channels-list.js" />
<style scoped src="./ft-profile-all-channels-list.css" />
<script src="./ft-profile-filter-channels-list.js" />
<style scoped src="./ft-profile-filter-channels-list.css" />

View File

@ -62,6 +62,10 @@ export default Vue.extend({
return this.$store.getters.getProxyVideos
},
defaultInterval: function () {
return parseInt(this.$store.getters.getDefaultInterval)
},
defaultVolume: function () {
return parseFloat(this.$store.getters.getDefaultVolume) * 100
},
@ -119,6 +123,7 @@ export default Vue.extend({
'updateForceLocalBackendForLegacy',
'updateProxyVideos',
'updateDefaultTheatreMode',
'updateDefaultInterval',
'updateDefaultVolume',
'updateDefaultPlayback',
'updateDefaultVideoFormat',

View File

@ -61,6 +61,15 @@
</div>
</div>
<ft-flex-box>
<ft-slider
:label="$t('Settings.Player Settings.Playlist Next Video Interval')"
:default-value="defaultInterval"
:min-value="0"
:max-value="60"
:step="1"
value-extension="s"
@change="updateDefaultInterval"
/>
<ft-slider
:label="$t('Settings.Player Settings.Default Volume')"
:default-value="defaultVolume"

View File

@ -9,7 +9,7 @@
class="navIcon"
/>
<p class="navLabel">
More
{{ $t("More") }}
</p>
</div>
<div
@ -25,7 +25,7 @@
class="navIcon"
/>
<p class="navLabel">
Trending
{{ $t("Trending") }}
</p>
</div>
<div
@ -37,7 +37,7 @@
class="navIcon"
/>
<p class="navLabel">
Most Popular
{{ $t("Most Popular") }}
</p>
</div>
<div
@ -49,7 +49,7 @@
class="navIcon"
/>
<p class="navLabel">
About
{{ $t("About.About") }}
</p>
</div>
</div>
@ -62,7 +62,7 @@
class="navIcon"
/>
<p class="navLabel">
History
{{ $t("History.History") }}
</p>
</div>
<hr>
@ -75,7 +75,7 @@
class="navIcon"
/>
<p class="navLabel">
Settings
{{ $t("Settings.Settings") }}
</p>
</div>
<div
@ -87,7 +87,7 @@
class="navIcon"
/>
<p class="navLabel">
About
{{ $t("About.About") }}
</p>
</div>
</div>

View File

@ -48,6 +48,9 @@ export default Vue.extend({
hidePopularVideos: function () {
return this.$store.getters.getHidePopularVideos
},
hidePlaylists: function () {
return this.$store.getters.getHidePlaylists
},
hideTrendingVideos: function () {
return this.$store.getters.getHideTrendingVideos
},

View File

@ -44,6 +44,7 @@
</p>
</div>
<div
v-if="!hidePlaylists"
class="navOption mobileShow"
@click="navigate('userplaylists')"
>

View File

@ -89,14 +89,15 @@ export default Vue.extend({
searchInput.blur()
}
const videoId = await this.$store.dispatch('getVideoIdFromUrl', query)
const { videoId, timestamp } = await this.$store.dispatch('getVideoParamsFromUrl', query)
const playlistId = await this.$store.dispatch('getPlaylistIdFromUrl', query)
console.log(playlistId)
if (videoId) {
this.$router.push({
path: `/watch/${videoId}`
path: `/watch/${videoId}`,
query: timestamp ? { timestamp } : {}
})
} else if (playlistId) {
this.$router.push({

View File

@ -58,6 +58,7 @@ export default Vue.extend({
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="\/hashtag\//g, 'href="freetube://')
descriptionText = descriptionText.replace(/yt\.www\.watch\.player\.seekTo/g, 'changeDuration')
return descriptionText

View File

@ -90,6 +90,10 @@ export default Vue.extend({
lengthSeconds: {
type: Number,
required: true
},
videoThumbnail: {
type: String,
required: true
}
},
data: function () {
@ -223,6 +227,22 @@ export default Vue.extend({
}
}
},
mounted: function () {
if ('mediaSession' in navigator) {
/* eslint-disable-next-line */
navigator.mediaSession.metadata = new MediaMetadata({
title: this.title,
artist: this.channelName,
artwork: [
{
src: this.videoThumbnail,
sizes: '128x128',
type: 'image/png'
}
]
})
}
},
methods: {
goToChannel: function () {
this.$router.push({ path: `/channel/${this.channelId}` })

View File

@ -11,8 +11,8 @@ if (window && window.process && window.process.type === 'renderer') {
dbLocation = electron.remote.app.getPath('userData')
} */
const electron = require('electron')
dbLocation = electron.remote.app.getPath('userData')
const remote = require('@electron/remote')
dbLocation = remote.app.getPath('userData')
dbLocation = dbLocation + '/history.db'
} else {

View File

@ -13,8 +13,8 @@ if (window && window.process && window.process.type === 'renderer') {
//
// dbLocation += '/playlists.db'
const electron = require('electron')
dbLocation = electron.remote.app.getPath('userData')
const remote = require('@electron/remote')
dbLocation = remote.app.getPath('userData')
dbLocation = dbLocation + '/playlists.db'
} else {

View File

@ -11,8 +11,8 @@ if (window && window.process && window.process.type === 'renderer') {
dbLocation = electron.remote.app.getPath('userData')
} */
const electron = require('electron')
dbLocation = electron.remote.app.getPath('userData')
const remote = require('@electron/remote')
dbLocation = remote.app.getPath('userData')
dbLocation = dbLocation + '/profiles.db'
} else {

View File

@ -15,7 +15,8 @@ if (window && window.process && window.process.type === 'renderer') {
electron = require('electron')
webframe = electron.webFrame
dbLocation = electron.remote.app.getPath('userData')
const remote = require('@electron/remote')
dbLocation = remote.app.getPath('userData')
dbLocation = dbLocation + '/settings.db'
} else {
@ -53,6 +54,7 @@ const state = {
forceLocalBackendForLegacy: false,
proxyVideos: false,
defaultTheatreMode: false,
defaultInterval: 5,
defaultVolume: 1,
defaultPlayback: 1,
defaultVideoFormat: 'dash',
@ -73,6 +75,7 @@ const state = {
hideRecommendedVideos: false,
hideTrendingVideos: false,
hidePopularVideos: false,
hidePlaylists: false,
hideLiveChat: false,
hideActiveSubscriptions: false
}
@ -182,6 +185,10 @@ const getters = {
return state.defaultTheatreMode
},
getDefaultInterval: () => {
return state.defaultInterval
},
getDefaultVolume: () => {
return state.defaultVolume
},
@ -241,9 +248,15 @@ const getters = {
getHidePopularVideos: () => {
return state.hidePopularVideos
},
getHidePlaylists: () => {
return state.hidePlaylists
},
getHideLiveChat: () => {
return state.hideLiveChat
},
getHideActiveSubscriptions: () => {
return state.hideActiveSubscriptions
}
@ -348,6 +361,9 @@ const actions = {
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)
@ -382,6 +398,9 @@ const actions = {
case 'hidePopularVideos':
commit('setHidePopularVideos', result.value)
break
case 'hidePlaylists':
commit('setHidePlaylists', result.value)
break
case 'hideLiveChat':
commit('setHideLiveChat', result.value)
break
@ -587,6 +606,14 @@ const actions = {
})
},
updateDefaultInterval ({ commit }, defaultInterval) {
settingsDb.update({ _id: 'defaultInterval' }, { _id: 'defaultInterval', value: defaultInterval }, { upsert: true }, (err, numReplaced) => {
if (!err) {
commit('setDefaultInterval', defaultInterval)
}
})
},
updateDefaultVolume ({ commit }, defaultVolume) {
settingsDb.update({ _id: 'defaultVolume' }, { _id: 'defaultVolume', value: defaultVolume }, { upsert: true }, (err, numReplaced) => {
if (!err) {
@ -716,6 +743,14 @@ const actions = {
})
},
updateHidePlaylists ({ commit }, hidePlaylists) {
settingsDb.update({ _id: 'hidePlaylists' }, { _id: 'hidePlaylists', value: hidePlaylists }, { upsert: true }, (err, numReplaced) => {
if (!err) {
commit('setHidePlaylists', hidePlaylists)
}
})
},
updateHideActiveSubscriptions ({ commit }, hideActiveSubscriptions) {
settingsDb.update({ _id: 'hideActiveSubscriptions' }, { _id: 'hideActiveSubscriptions', value: hideActiveSubscriptions }, { upsert: true }, (err, numReplaced) => {
if (!err) {
@ -800,6 +835,9 @@ const mutations = {
setProxyVideos (state, proxyVideos) {
state.proxyVideos = proxyVideos
},
setDefaultInterval (state, defaultInterval) {
state.defaultInterval = defaultInterval
},
setDefaultVolume (state, defaultVolume) {
state.defaultVolume = defaultVolume
},
@ -872,6 +910,9 @@ const mutations = {
setHidePopularVideos (state, hidePopularVideos) {
state.hidePopularVideos = hidePopularVideos
},
setHidePlaylists (state, hidePlaylists) {
state.hidePlaylists = hidePlaylists
},
setHideLiveChat (state, hideLiveChat) {
state.hideLiveChat = hideLiveChat
},

View File

@ -190,43 +190,53 @@ const actions = {
return date.getTime() - timeSpan
},
getVideoIdFromUrl (_, url) {
getVideoParamsFromUrl (_, url) {
/** @type {URL} */
let urlObject
const paramsObject = { videoId: null, timestamp: null }
try {
urlObject = new URL(url)
} catch (e) {
return false
return paramsObject
}
function extractParams(videoId) {
paramsObject.videoId = videoId
paramsObject.timestamp = urlObject.searchParams.get('t')
}
const extractors = [
// anything with /watch?v=
function() {
if (urlObject.pathname === '/watch' && urlObject.searchParams.has('v')) {
return urlObject.searchParams.get('v')
extractParams(urlObject.searchParams.get('v'))
return paramsObject
}
},
// youtu.be
function() {
if (urlObject.host === 'youtu.be' && urlObject.pathname.match(/^\/[A-Za-z0-9_-]+$/)) {
return urlObject.pathname.slice(1)
extractParams(urlObject.pathname.slice(1))
return paramsObject
}
},
// youtube.com/embed
function() {
if (urlObject.pathname.match(/^\/embed\/[A-Za-z0-9_-]+$/)) {
return urlObject.pathname.replace('/embed/', '')
extractParams(urlObject.pathname.replace('/embed/', ''))
return paramsObject
}
},
// cloudtube
function() {
if (urlObject.host.match(/^cadence\.(gq|moe)$/) && urlObject.pathname.match(/^\/cloudtube\/video\/[A-Za-z0-9_-]+$/)) {
return urlObject.pathname.slice('/cloudtube/video/'.length)
extractParams(urlObject.pathname.slice('/cloudtube/video/'.length))
return paramsObject
}
}
]
return extractors.reduce((a, c) => a || c(), null) || false
return extractors.reduce((a, c) => a || c(), null) || paramsObject
},
getPlaylistIdFromUrl (_, url) {

View File

@ -56,8 +56,7 @@ export default Vue.extend({
],
playlistSelectValues: [
'last',
'newest',
'oldest'
'newest'
]
}
},
@ -121,8 +120,7 @@ export default Vue.extend({
playlistSelectNames: function () {
return [
this.$t('Channel.Playlists.Sort Types.Last Video Added'),
this.$t('Channel.Playlists.Sort Types.Newest'),
this.$t('Channel.Playlists.Sort Types.Oldest')
this.$t('Channel.Playlists.Sort Types.Newest')
]
},

View File

@ -3,7 +3,7 @@ import { mapActions } from 'vuex'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtProfileEdit from '../../components/ft-profile-edit/ft-profile-edit.vue'
import FtProfileChannelList from '../../components/ft-profile-channel-list/ft-profile-channel-list.vue'
import FtProfileAllChannelsList from '../../components/ft-profile-all-channels-list/ft-profile-all-channels-list.vue'
import FtProfileFilterChannelsList from '../../components/ft-profile-filter-channels-list/ft-profile-filter-channels-list.vue'
export default Vue.extend({
name: 'ProfileEdit',
@ -11,7 +11,7 @@ export default Vue.extend({
'ft-loader': FtLoader,
'ft-profile-edit': FtProfileEdit,
'ft-profile-channel-list': FtProfileChannelList,
'ft-profile-all-channels-list': FtProfileAllChannelsList
'ft-profile-filter-channels-list': FtProfileFilterChannelsList
},
data: function () {
return {

View File

@ -16,7 +16,7 @@
:profile="profile"
:is-main-profile="isMainProfile"
/>
<ft-profile-all-channels-list
<ft-profile-filter-channels-list
v-if="!isNew && !isMainProfile"
:profile="profile"
/>

View File

@ -3,7 +3,6 @@ import { mapActions } from 'vuex'
import xml2vtt from 'yt-xml2vtt'
import $ from 'jquery'
import fs from 'fs'
import electron from 'electron'
import ytDashGen from 'yt-dash-manifest-generator'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtCard from '../../components/ft-card/ft-card.vue'
@ -16,6 +15,8 @@ import WatchVideoLiveChat from '../../components/watch-video-live-chat/watch-vid
import WatchVideoPlaylist from '../../components/watch-video-playlist/watch-video-playlist.vue'
import WatchVideoRecommendations from '../../components/watch-video-recommendations/watch-video-recommendations.vue'
const remote = require('@electron/remote')
export default Vue.extend({
name: 'Watch',
components: {
@ -73,6 +74,7 @@ export default Vue.extend({
downloadLinks: [],
watchingPlaylist: false,
playlistId: '',
timestamp: null,
playNextTimeout: null
}
},
@ -104,6 +106,9 @@ export default Vue.extend({
proxyVideos: function () {
return this.$store.getters.getProxyVideos
},
defaultInterval: function () {
return this.$store.getters.getDefaultInterval
},
defaultTheatreMode: function () {
return this.$store.getters.getDefaultTheatreMode
},
@ -152,6 +157,7 @@ export default Vue.extend({
this.downloadLinks = []
this.checkIfPlaylist()
this.checkIfTimestamp()
switch (this.backendPreference) {
case 'local':
@ -173,6 +179,7 @@ export default Vue.extend({
this.useTheatreMode = this.defaultTheatreMode
this.checkIfPlaylist()
this.checkIfTimestamp()
if (!this.usingElectron) {
this.getVideoInformationInvidious()
@ -269,6 +276,7 @@ export default Vue.extend({
video.viewCount = video.view_count
video.lengthSeconds = video.length_seconds
video.author = video.author.name
video.publishedText = video.published
return video
})
if (this.hideVideoLikesAndDislikes) {
@ -677,18 +685,32 @@ export default Vue.extend({
console.log(historyIndex)
if (historyIndex !== -1 && !this.isLive) {
const watchProgress = this.historyCache[historyIndex].watchProgress
if (!this.isLive) {
if (this.timestamp) {
if (this.timestamp < 0) {
this.$refs.videoPlayer.player.currentTime(0)
} else if (this.timestamp > (this.videoLengthSeconds - 10)) {
this.$refs.videoPlayer.player.currentTime(this.videoLengthSeconds - 10)
} else {
this.$refs.videoPlayer.player.currentTime(this.timestamp)
}
} else if (historyIndex !== -1) {
const watchProgress = this.historyCache[historyIndex].watchProgress
if (watchProgress < (this.videoLengthSeconds - 10)) {
this.$refs.videoPlayer.player.currentTime(watchProgress)
if (watchProgress < (this.videoLengthSeconds - 10)) {
this.$refs.videoPlayer.player.currentTime(watchProgress)
}
}
}
if (this.rememberHistory && historyIndex !== -1) {
this.addToHistory(this.historyCache[historyIndex].watchProgress)
} else if (this.rememberHistory) {
this.addToHistory(0)
if (this.rememberHistory) {
if (this.timestamp) {
this.addToHistory(this.timestamp)
} else if (historyIndex !== -1) {
this.addToHistory(this.historyCache[historyIndex].watchProgress)
} else {
this.addToHistory(0)
}
}
},
@ -706,6 +728,16 @@ export default Vue.extend({
}
},
checkIfTimestamp: function () {
if (typeof (this.$route.query) !== 'undefined') {
try {
this.timestamp = parseInt(this.$route.query.timestamp)
} catch {
this.timestamp = null
}
}
},
getLegacyFormats: function () {
this.$store
.dispatch('ytGetVideoInformation', this.videoId)
@ -807,14 +839,18 @@ export default Vue.extend({
},
handleVideoEnded: function () {
const nextVideoInterval = this.defaultInterval
if (this.watchingPlaylist) {
this.playNextTimeout = setTimeout(() => {
this.$refs.watchVideoPlaylist.playNextVideo()
}, 5000)
const player = this.$refs.videoPlayer.player
if (player !== null && player.paused()) {
this.$refs.watchVideoPlaylist.playNextVideo()
}
}, nextVideoInterval * 1000)
this.showToast({
message: this.$t('Playing next video in 5 seconds. Click to cancel'),
time: 5500,
message: this.$tc('Playing Next Video Interval', nextVideoInterval, { nextVideoInterval: nextVideoInterval }),
time: (nextVideoInterval * 1000) + 500,
action: () => {
clearTimeout(this.playNextTimeout)
this.showToast({
@ -824,15 +860,18 @@ export default Vue.extend({
})
} else if (this.playNextVideo) {
this.playNextTimeout = setTimeout(() => {
const nextVideoId = this.recommendedVideos[0].videoId
this.$router.push(
{
path: `/watch/${nextVideoId}`
}
)
this.showToast({
message: this.$t('Playing Next Video')
})
const player = this.$refs.videoPlayer.player
if (player !== null && player.paused()) {
const nextVideoId = this.recommendedVideos[0].videoId
this.$router.push(
{
path: `/watch/${nextVideoId}`
}
)
this.showToast({
message: this.$t('Playing Next Video')
})
}
}, 5000)
this.showToast({
@ -911,7 +950,7 @@ export default Vue.extend({
createLocalDashManifest: function (formats) {
const xmlData = ytDashGen.generate_dash_file_from_formats(formats, this.videoLengthSeconds)
const userData = electron.remote.app.getPath('userData')
const userData = remote.app.getPath('userData')
let fileLocation
let uriSchema
if (this.isDev) {
@ -982,7 +1021,7 @@ export default Vue.extend({
})
// TODO: MAKE A VARIABLE WHICH CAN CHOOSE BETWEEN STROYBOARD ARRAY ELEMENTS
this.buildVTTFileLocally(storyboardArray[1]).then((results) => {
const userData = electron.remote.app.getPath('userData')
const userData = remote.app.getPath('userData')
let fileLocation
let uriSchema

View File

@ -82,6 +82,7 @@
:watching-playlist="watchingPlaylist"
:theatre-possible="theatrePossible"
:length-seconds="videoLengthSeconds"
:video-thumbnail="thumbnail"
class="watchVideo"
:class="{ theatreWatchVideo: useTheatreMode }"
@theatre-mode="toggleTheatreMode"

View File

@ -30,10 +30,10 @@ Close: 'Затваряне'
Back: 'Назад'
Forward: 'Напред'
Version $ is now available! Click for more details: 'Версия $ е вече налична! Кликни
Version $ is now available! Click for more details: 'Версия $ е вече налична! Щракнете
за повече детайли'
Download From Site: 'Сваляне от сайта'
A new blog is now available, $. Click to view more: 'Нова публикация в блога, $. Кликни
A new blog is now available, $. Click to view more: 'Нова публикация в блога, $. Щракнете
за преглед'
# Search Bar
@ -90,7 +90,7 @@ 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: Тази страница не отразява напълно работещи плейлисти. В него са
изброени само видеоклипове, които сте запазили или избрали за любими. Когато работата
приключи, всички видеоклипове, които в момента са тук, ще бъдат мигрирани в плейлист
@ -114,8 +114,8 @@ Settings:
Locale Preference: 'Език'
Preferred API Backend:
Preferred API Backend: 'Предпочитан вътрешен интерфейс'
Local API: 'Локален API'
Invidious API: 'Invidious Интерфейс'
Local API: 'Локален'
Invidious API: 'Invidious'
Video View Type:
Video View Type: 'Подредба на видеата'
Grid: 'Решетка'
@ -130,7 +130,8 @@ Settings:
(по подразбиране е https://invidious.snopyta.org)'
Region for Trending: 'Регион за набиращи популярност'
#! List countries
View all Invidious instance information: Виж пълна информация за Invidious обекта
View all Invidious instance information: Преглед на пълна информация за Invidious
обекта
Theme Settings:
Theme Settings: 'Настройки на изгледа на приложението'
Match Top Bar with Main Color: 'Съвпадане на горната лента с основната цветова
@ -192,6 +193,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Интервал за следващо видео в плейлист
Privacy Settings:
Privacy Settings: 'Настройки за поверителност'
Remember History: 'Запазване на историята'
@ -289,7 +291,8 @@ Settings:
Hide Video Likes And Dislikes: Скриване оценките на видеата
Hide Video Views: Скриване броя показвания на видеата
Distraction Free Settings: Настройки за неразсейване
Hide Active Subscriptions: Скриване на активни абонаменти
Hide Active Subscriptions: Скриване на активните абонаменти
Hide Playlists: Скриване на плейлисти
The app needs to restart for changes to take effect. Restart and apply change?: Приложението
трябва да се рестартира за да се приложат промените. Рестартиране?
Proxy Settings:
@ -301,13 +304,13 @@ Settings:
Country: Държава
Ip: Ip
Your Info: Вашата информация
Test Proxy: Тестово прокси
Clicking on Test Proxy will send a request to: Кликването върху тестово прокси
Test Proxy: Тестване на прокси
Clicking on Test Proxy will send a request to: Щракването върху "Тестване на прокси"
ще изпрати заявка до
Proxy Port Number: Номер на прокси порта
Proxy Host: Прокси хост
Proxy Protocol: Прокси протокол
Enable Tor / Proxy: Активирайте Tor / Proxy
Enable Tor / Proxy: Активиране на Tor / Proxy
Proxy Settings: Настройки на прокси
About:
#On About page
@ -342,20 +345,20 @@ About:
Donate: Дарете
these people and projects: тези хора и проекти
FreeTube is made possible by: FreeTube е възможен чрез
FreeTube is made possible by: FreeTube благодарение на
Translate: Превод
room rules: правилата за стаите
room rules: Правилата за общуване
Please read the: Моля, прочетете
Chat on Matrix: Чат в Matrix
Mastodon: мастодонт
Email: Имейл
Mastodon: Mastodon
Email: Електронна поща
Blog: Блог
Website: Уебсайт
Please check for duplicates before posting: Моля, проверете за дубликати преди публикуване
GitHub issues: GitHub проблеми
Report a problem: Съобщете за проблем
FAQ: ЧЗВ
FreeTube Wiki: FreeTube Уики
FreeTube Wiki: FreeTube Wiki
Help: Помощ
GitHub releases: GitHub издания
Downloads / Changelog: Изтегляния / Дневник с промени
@ -392,7 +395,7 @@ Profile:
$ is now the active profile: 'Активният профил сега е $'
Subscription List: 'Списък с абонаменти'
Other Channels: 'Други канали'
$ selected: '$ избран'
$ selected: '$ избран(и)'
Select All: 'Избиране на всички'
Select None: 'Без избиране'
Delete Selected: 'Изтриване на избраните'
@ -406,6 +409,7 @@ Profile:
ли сте, че искате да изтриете избраните канали? Така каналът няма да бъде изтрит
от другите профили.'
#On Channel Page
Profile Filter: Профилен филтър
Channel:
Subscriber: 'Абонат'
Subscribers: 'Абонати'
@ -432,9 +436,9 @@ Channel:
This channel does not currently have any playlists: 'В този канал по настоящем
няма плейлисти'
Sort Types:
Last Video Added: 'Последно добавено видео'
Newest: 'Най-ново'
Oldest: 'Най-старо'
Last Video Added: 'Последно добавени'
Newest: 'Най-нови'
Oldest: 'Най-стари'
About:
About: 'Относно'
Channel Description: 'Описание на канала'
@ -505,7 +509,7 @@ Video:
Year: 'година'
Years: 'години'
Ago: 'преди'
Upcoming: 'Премиерата върви'
Upcoming: 'Премиера на'
Published on: 'Публикуван на'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'Преди $ %'
@ -522,8 +526,8 @@ Video:
Open Channel in Invidious: Отваряне на канала в Invidious
Copy YouTube Channel Link: Копиране на връзка за канала в YouTube
Open Channel in YouTube: Отваряне на канала в YouTube
Started streaming on: Начало на излъчването
Streamed on: Излъчване
Started streaming on: Начало на предаването
Streamed on: На живо на
Video has been removed from your saved list: Видеоклипът е премахнат от вашия запазен
списък
Video has been saved: Видеото е запазено
@ -552,7 +556,7 @@ Playlist:
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'Режим "Театър"'
Toggle Theatre Mode: 'Режим "Широк екран"'
Change Format:
Change Video Formats: 'Смяна видео формати'
Use Dash Formats: 'Използване на Dash формати'
@ -570,16 +574,16 @@ Share:
Copy Embed: 'Копиране за вграждане'
Open Embed: 'Отваряне на връзка за вграждане'
# On Click
Invidious URL copied to clipboard: 'Адреса за Invidious е копиран'
Invidious Embed URL copied to clipboard: 'Адреса на Invidious за вграждане е копиран'
YouTube URL copied to clipboard: 'Адреса за YouTube е копиран'
YouTube Embed URL copied to clipboard: 'Адреса на YouTube за вграждане е копиран'
YouTube Channel URL copied to clipboard: Адреса на YouTube канала е копиран
Invidious Channel URL copied to clipboard: Адреса на Invidious канала е копиран
Invidious URL copied to clipboard: 'Invidious адресът е копиран'
Invidious Embed URL copied to clipboard: 'Invidious адресът за вграждане е копиран'
YouTube URL copied to clipboard: 'YouTube адресът е копиран'
YouTube Embed URL copied to clipboard: 'YouTube адресът за вграждане е копиран'
YouTube Channel URL copied to clipboard: YouTube адресът на канала е копиран
Invidious Channel URL copied to clipboard: Invidious адресът на канала е копиран
Mini Player: 'Мини плейър'
Comments:
Comments: 'Коментари'
Click to View Comments: 'Кликни, за да видиш коментарите'
Click to View Comments: 'Щракнете, за да видите коментарите'
Getting comment replies, please wait: 'Получаване на отговори на коментара, моля
изчакайте'
There are no more comments for this video: 'Към това видео няма повече коментари'
@ -599,8 +603,8 @@ Comments:
Up Next: 'Следващ'
# Toast Messages
Local API Error (Click to copy): 'Грешка в локалния интерфейс (кликни за копиране)'
Invidious API Error (Click to copy): 'Грешка в Invidious интерфейса (кликни за копиране)'
Local API Error (Click to copy): 'Грешка в локалния интерфейс (щракнете за копиране)'
Invidious API Error (Click to copy): 'Грешка в Invidious интерфейса (щракнете за копиране)'
Falling back to Invidious API: 'Връщане към Invidious интерфейса'
Falling back to the local API: 'Връщане към локалния интерфейс'
This video is unavailable because of missing formats. This can happen due to country unavailability.: 'Видеото
@ -615,7 +619,7 @@ 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': 'Плейлиста приключи. Включете
повторението за да продължи'
@ -653,3 +657,7 @@ Tooltips:
Preferred API Backend: Избиране на начина, по който FreeTube получава данните.
Локалният интерфейс има вградено извличане. Invidious интерфейсът изисква Invidious
сървър, към който да се свърже.
More: Още
Playing Next Video Interval: Пускане на следващото видео веднага. Щракнете за отказ.
| Пускане на следващото видео след {nextVideoInterval} секунда. Щракнете за отказl.
| Пускане на следващото видео след {nextVideoInterval} секунди. Щракнете за отказ.

View File

@ -192,6 +192,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Interval dalšího seznamu videí
Privacy Settings:
Privacy Settings: 'Nastavení soukromí'
Remember History: 'Zapamatovat historii'
@ -223,6 +224,7 @@ Settings:
Hide Popular Videos: 'Skrýt populární videa'
Hide Live Chat: 'Skrýt chat'
Hide Active Subscriptions: Skrýt aktivní odběry
Hide Playlists: Skrýt playlist
Data Settings:
Data Settings: 'Nastavení dat'
Select Import Type: 'Vybrat typ importu'
@ -399,6 +401,7 @@ Profile:
chcete odstranit vybrané kanály? Tím nebude kanál odstraněn z žádného jiného
profilu.'
#On Channel Page
Profile Filter: Filtr profilu
Channel:
Subscriber: 'Odběratel'
Subscribers: 'Odběratelé'
@ -650,3 +653,7 @@ 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.
| 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

View File

@ -63,11 +63,11 @@ Search Filters:
Fetching results. Please wait: Lade Ergebnisse. Bitte warten
Fetch more results: Lade mehr Ergebnisse
# Sidebar
There are no more results for this search: Es gibt keine weiteren Ergebnisse für
diese Suche
There are no more results for this search: Keine weiteren Ergebnisse für diese Suche
vorhanden
Subscriptions:
# On Subscriptions Page
Subscriptions: Abonnement
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
@ -76,7 +76,7 @@ Subscriptions:
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 Abonnementen. RSS zur Vermeidung von Tarifbeschränkungen
Profil hat eine große Anzahl von Abonnenten. RSS zur Vermeidung von Tarifbeschränkungen
erzwingen
Load More Videos: Lade mehr Videos
Trending: Trends
@ -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
@ -131,7 +131,7 @@ Settings:
anzeigen
Theme Settings:
Theme Settings: Thema Einstellungen
Match Top Bar with Main Color: Passe obere Leiste an Hauptfarbe an
Match Top Bar with Main Color: Obere Leiste an Hauptfarbe anpassen
Base Theme:
Base Theme: Grundlegendes Thema
Black: Schwarz
@ -146,11 +146,11 @@ Settings:
Indigo: Indigo
Blue: Blau
Light Blue: Hellblau
Cyan: Mittleres Zyan
Teal: Dunkles Türkis
Cyan: Türkis
Teal: Türkisblau
Green: Grün
Light Green: Hellgrün
Lime: Lindgrün
Lime: Limette
Yellow: Gelb
Amber: Bernsteingelb
Orange: Orange
@ -175,7 +175,7 @@ Settings:
Default Video Format:
Default Video Format: Standard-Videoformat
Dash Formats: DASH-Formate
Legacy Formats: Altformate
Legacy Formats: Legacy Formate
Audio Formats: Audioformate
Default Quality:
Default Quality: Standardqualität
@ -197,7 +197,7 @@ Settings:
#& Freetube
Newpipe: Newpipe
OPML: OPML
Manage Subscriptions: Verwalte Abonnements
Manage Subscriptions: Abonnements verwalten
Import Subscriptions: Importiere Abonnements
Export Subscriptions: Exportiere Abonnements
How do I import my subscriptions?: Wie importiere ich meine Abonnements?
@ -234,10 +234,10 @@ Settings:
Are you sure you want to remove your entire watch history?: Bist du sicher, dass
du deinen gesamten Verlauf löschen willst?
Remove Watch History: Verlauf löschen
Search cache has been cleared: Suchzwischenspeicher wurde geleert
Search cache has been cleared: Suchanfragen wurden gelöscht
Are you sure you want to clear out your search cache?: Bist du sicher, dass du
deinen Suchzwischenspeicher leeren möchtest?
Clear Search Cache: Suchzwischenspeicher löschen
deine Suchanfragen löschen möchtest?
Clear Search Cache: Suchanfragen löschen
Save Watched Progress: Videofortschritt speichern
Remember History: Verlauf speichern
Privacy Settings: Datenschutzeinstellungen
@ -274,15 +274,15 @@ Settings:
Export NewPipe: Exportiere NewPipe
Export YouTube: Exportiere YouTube
Export FreeTube: Exportiere FreeTube
Export Subscriptions: Exportiere Abonnements
Export Subscriptions: Abonnements exportieren
Import NewPipe: Importiere NewPipe
Import YouTube: Importiere YouTube
Import FreeTube: Importiere FreeTube
Import Subscriptions: Importiere Abonnements
Import Subscriptions: Abonnements importieren
Select Export Type: Wähle Exporttyp
Select Import Type: Wähle Importtyp
Data Settings: Dateneinstellungen
Check for Legacy Subscriptions: Prüfung auf Altabonnements
Check for Legacy Subscriptions: Auf ältere Abonnements prüfen
Manage Subscriptions: Abonnements verwalten
Distraction Free Settings:
Hide Live Chat: Live-Chat verbergen
@ -373,7 +373,7 @@ About:
Please read the: Bitte lese die
Chat on Matrix: Chatten bei Matrix
Mastodon: Mastodon
Please check for duplicates before posting: Bitte überprüfe vor dem absenden, ob
Please check for duplicates before posting: Bitte überprüfe vor dem Absenden, ob
es Duplikate gibt
GitHub issues: GitHub Issues
Report a problem: Problem melden
@ -567,7 +567,7 @@ Mini Player: Mini-Abspieler
Comments:
Comments: Kommentare
Click to View Comments: Klicke um Kommentare anzuzeigen
Getting comment replies, please wait: Kommentare werden geledan, bitte warten
Getting comment replies, please wait: Kommentare werden geladen, bitte warten
Show Comments: Zeige Kommentare
Hide Comments: Verstecke Kommentare
# Context: View 10 Replies, View 1 Reply
@ -686,4 +686,4 @@ Tooltips:
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 Landesrestiktionen.
von Landesbeschränkungen.

View File

@ -399,7 +399,7 @@ Profile:
Other Channels: 'Άλλα κανάλια'
$ selected: '$ επιλεγμένο'
Select All: 'Επιλογή όλων'
Select None: 'Επιλογή καμίας'
Select None: 'Επιλογή κανενός'
Delete Selected: 'Διαγραφή επιλεγμένου στοιχείου'
Add Selected To Profile: 'Προσθήκη επιλεγμένου στοιχείου στο προφίλ'
No channel(s) have been selected: 'Δεν έχει γίνει επιλογή κάποιου καναλιού'

View File

@ -82,6 +82,7 @@ Subscriptions:
'Getting Subscriptions. Please wait.': Getting Subscriptions. Please wait.
Refresh Subscriptions: Refresh Subscriptions
Load More Videos: Load More Videos
More: More
Trending: Trending
Most Popular: Most Popular
Playlists: Playlists
@ -170,6 +171,7 @@ 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
Default Volume: Default Volume
Default Playback Rate: Default Playback Rate
Default Video Format:
@ -219,6 +221,7 @@ Settings:
Hide Recommended Videos: Hide Recommended Videos
Hide Trending Videos: Hide Trending Videos
Hide Popular Videos: Hide Popular Videos
Hide Playlists: Hide Playlists
Hide Live Chat: Hide Live Chat
Hide Active Subscriptions: Hide Active Subscriptions
Data Settings:
@ -304,6 +307,7 @@ About:
Profile:
Profile Select: Profile Select
Profile Filter: Profile Filter
All Channels: All Channels
Profile Manager: Profile Manager
Create New Profile: Create New Profile
@ -564,7 +568,7 @@ Tooltips:
play higher qualities. Legacy formats are limited to a max of 720p but use less
bandwidth. Audio formats are audio only streams
Subscription Settings:
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of it's default
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
method for grabbing your subscription feed. RSS is faster and prevents IP blocking,
but doesn't provide certain information like video duration or live status
@ -584,8 +588,7 @@ Shuffle is now enabled: Shuffle is now enabled
The playlist has been reversed: The playlist has been reversed
Playing Next Video: Playing Next Video
Playing Previous Video: Playing Previous Video
Playing next video in 5 seconds. Click to cancel: Playing next video in 5 seconds.
Click to cancel.
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.
Canceled next video autoplay: Canceled next video autoplay
'The playlist has ended. Enable loop to continue playing': 'The playlist has ended. Enable
loop to continue playing'

View File

@ -630,6 +630,7 @@ Tooltips:
באיכויות גבוהות יותר. התצורות המיושנות מוגבלות ל־720 פיקסלים לכל היותר אך משתמשות
בפחות רוחב פס. תצורות שמע הן הזרמות של שמע בלבד
Subscription Settings:
Fetch Feeds from RSS: כאשר אפשרות זו פעילה. FreeTube ישתמש ב־RSS במקום בשיטת בררת
המחדל ללכידת הזנת המינויים שלך. RSS זו שיטה מהירה יותר ומונעת חסימות IP אבל
Fetch Feeds from RSS: כאשר אפשרות זו פעילה. FreeTube ישתמש ב־RSS במקום בשיטת ברירת
המחדל לאיסוף הזנת המינויים שלך. RSS היא שיטה מהירה יותר ומונעת חסימת IP אבל
לא מספקת חלק מהמידע כמו אורך הסרטון או מצב שידור חי
More: עוד

View File

@ -14,74 +14,82 @@ Redo: 'फिर से करें'
Cut: 'कट'
Copy: 'प्रतिलिपि'
Paste: 'पेस्ट करें'
Delete: ''
Delete: 'निकाले'
Select all: 'सबको चुनें'
Reload: ''
Force Reload: ''
Toggle Developer Tools: ''
Actual size: ''
Zoom in: ''
Zoom out: ''
Toggle fullscreen: ''
Window: ''
Minimize: ''
Close: ''
Back: ''
Forward: ''
Reload: 'फिरसे लोड करे'
Force Reload: 'फ़ोर्स से फिरसे लोड करे'
Toggle Developer Tools: 'Developer tools टॉगल करे'
Actual size: 'वास्तविक आकार'
Zoom in: 'Zoom in'
Zoom out: 'Zoom out'
Toggle fullscreen: 'फ़ुलस्क्रीन टॉगल करे'
Window: 'विंडो'
Minimize: 'मिनिमाइज़ (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: 'Version $ आ गया है! और details
के लिए इधर click करे।'
Download From Site: 'साइट से डाउनलोड (download) करे'
A new blog is now available, $. Click to view more: 'एक नया ब्लॉग है, $। और जानने
के लिए इधर click करिए'
# Search Bar
Search / Go to URL: ''
Search / Go to URL: 'Search / URL पर जाए'
# In Filter Button
Search Filters:
Search Filters: ''
Search Filters: 'Search फ़िल्टर'
Sort By:
Sort By: ''
Most Relevant: ''
Rating: ''
Upload Date: ''
View Count: ''
Sort By: 'सॉर्ट करे'
Most Relevant: 'सबसे प्रासंगिक'
Rating: 'रेटिंग'
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): ''
Duration: 'अवधि'
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: ''
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: ''
Most Popular: ''
Playlists: ''
Subscriptions: 'सब्सक्रिप्शन'
Latest Subscriptions: 'सबसे नए सब्सक्रिप्शन'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'यह
प्रोफ़ाइल (profile)के पास बहुत सारे सब्सक्रिप्शने है। RSS को बल से रटे लिमिटिंग
(rate limiting) से बचाए'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'आपकेय
सब्सक्रिप्शन लिस्ट अब के लिए ख़ाली है। सब्सक्रिप्शन add करने से इधर देख सक्ते
है।'
'Getting Subscriptions. Please wait.': 'सब्सक्रिप्शने (subscriptions) ढूंड रहे है।
कृपया रुके।'
Refresh Subscriptions: 'सब्सक्रिप्शने Refresh करे'
Load More Videos: 'ज़्यादा विडीओए लोड करे'
Trending: 'ट्रेनडिंग'
Most Popular: 'सबसे ज़्यादा देखा हुआ'
Playlists: 'प्लेलिस्टे (playlists)'
User Playlists:
Your Playlists: ''
Your Playlists: 'आपके प्लेलिस्टे'
History:
# On History Page
History: ''

View File

@ -195,6 +195,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Lejátszási lista következő videó intervalluma
Privacy Settings:
Privacy Settings: 'Adatvédelmi beállítások'
Remember History: 'Előzmények megjegyzése'
@ -292,6 +293,7 @@ Settings:
Hide Video Views: Videó nézetek elrejtése
Distraction Free Settings: Zavartalan beállítások
Hide Active Subscriptions: Elérhető feliratkozások elrejtése
Hide Playlists: Lejátszási listák elrejtése
The app needs to restart for changes to take effect. Restart and apply change?: Az
alkalmazásnak újra kell indulnia, hogy a változtatások életbe lépjenek. Indítsa
újra és alkalmazza a módosítást?
@ -309,6 +311,8 @@ Settings:
Proxy Protocol: Meghatalmazás protokoll
Enable Tor / Proxy: Tor/meghatalmazás engedélyezése
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?
About:
#On About page
About: 'Névjegy'
@ -341,6 +345,32 @@ 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:'
Donate: Hozzájárulás
Credits: Közreműködők
Translate: Fordítás
room rules: szobaszabályok
Please read the: Kérjük, olvassa el a(z)
Chat on Matrix: Matrix csevegése
Mastodon: Mastodon
Blog: Napló
Email: E-mail
Website: Honlap
Please check for duplicates before posting: Feladás előtt ellenőrizze, hogy vannak-e
másolatok
GitHub issues: GitHub kérdések
Help: Súgó
GitHub releases: GitHub kiadások
Downloads / Changelog: Letöltések/Változásnapló
View License: Licenc megtekintése
Licensed under the AGPLv3: Az AGPL (GNU Affero General Public License - GNU Affero
általános nyilvános licenc) 3. verziója alatt licencelt
FreeTube Wiki: FreeTube Wiki
Source code: Forráskód
Beta: Béta
FAQ: GyIK
Report a problem: Probléma jelentése
Profile:
Profile Select: 'Profil kiválasztása'
All Channels: 'Összes csatorna'
@ -381,6 +411,7 @@ Profile:
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Biztosan
törli a kijelölt csatornákat? Ez nem törli a csatornát más profilokból.'
#On Channel Page
Profile Filter: Profilszűrő
Channel:
Subscriber: 'Feliratkozó'
Subscribers: 'Feliratkozók'
@ -499,6 +530,9 @@ Video:
Open Channel in Invidious: Csatorna megnyitása az Invidious oldalán
Started streaming on: Folyamatos átvitel indult
Streamed on: Folyamatos átvitele
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
Videos:
#& Sort By
Sort By:
@ -630,3 +664,8 @@ Tooltips:
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
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

View File

@ -3,14 +3,15 @@ Locale Name: 'Bahasa Indonesia'
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.': >-
Bagian aplikasi ini belum tersedia. Kembali lagi jika sudah ada kemajuan.
Bagian dari aplikasi ini belum disiapkan. Kembali lagi nanti saat kemajuan telah
dibuat.
# Webkit Menu Bar
File: 'Berkas'
Quit: 'Keluar'
Edit: 'Sunting'
Undo: 'Urungkan'
Redo: 'Redo'
Redo: 'Majukan'
Cut: 'Potong'
Copy: 'Salin'
Paste: 'Tempel'
@ -189,6 +190,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Interval Video dalam Daftar Putar
Privacy Settings:
Privacy Settings: 'Pengaturan Privasi'
Remember History: 'Ingat Riwayat'
@ -247,7 +249,7 @@ Settings:
Unable to write file: 'Tidak dapat menulis berkas'
Unknown data key: 'Kunci data tidak diketahui'
How do I import my subscriptions?: 'Bagaimana saya mengimpor langganan saya?'
Check for Legacy Subscriptions: Periksa langganan lawas
Check for Legacy Subscriptions: Periksa Langganan Lawas
Manage Subscriptions: Kelola Langganan
Advanced Settings:
Advanced Settings: 'Pengaturan Lanjutan'
@ -287,6 +289,7 @@ Settings:
Hide Video Likes And Dislikes: Sembunyikan Suka dan Tidak Suka Video
Hide Video Views: Sembunyikan Tinjauan Video
Hide Active Subscriptions: Sembunyikan Langganan Aktif
Hide Playlists: Sembunyikan Daftar Putar
The app needs to restart for changes to take effect. Restart and apply change?: Aplikasi
butuh dimulai ulang agar perbubahan diterapkan. Mulai ulang dan terapkan perubahan?
Proxy Settings:
@ -650,3 +653,7 @@ Tooltips:
Preferred API Backend: Pilih layanan yang digunakan oleh FreeTube untuk mengambil
data. API lokal adalah ekstraktor bawaan. API Invidious membutuhkan sambungan
ke server Invidious.
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

View File

@ -315,7 +315,7 @@ About:
Credits: クレジット
Translate: 翻訳
room rules: ルームの規則
Please read the: ご覧ください
Please read the: 確認してください
Chat on Matrix: Matrix でチャット
Mastodon: Mastodon
Email: メール アドレス
@ -569,7 +569,7 @@ Profile:
The playlist has been reversed: 再生リストを逆順にしました
A new blog is now available, $. Click to view more: '新着ブログ公開、$。クリックしてブログを読む'
Download From Site: サイトからダウンロード
Version $ is now available! Click for more details: 最新の Ver. $ 登場! 詳細はクリックしてご覧ください
Version $ is now available! Click for more details: 最新の Ver. $ 登場! 詳細はクリックして確認
This video is unavailable because of missing formats. This can happen due to country unavailability.: この動画は、動画形式の情報が利用できないため再生できません。再生許可のない国で発生します。
Tooltips:
Subscription Settings:

View File

@ -16,7 +16,7 @@ Copy: 'Kopier'
Paste: 'Lim inn'
Delete: 'Slett'
Select all: 'Velg alt'
Reload: 'Gjeninnlast'
Reload: 'Last inn på nytt'
Force Reload: 'Tving gjeninnlasting'
Toggle Developer Tools: 'Veksle utviklerverktøy'
Actual size: 'Faktisk størrelse'
@ -43,7 +43,7 @@ Search Filters:
Time:
Time: 'Tid'
Any Time: 'Når som helst'
Last Hour: 'Siste time'
Last Hour: 'Den siste timen'
Today: 'I dag'
This Week: 'Denne uken'
This Month: 'Denne måneden'
@ -64,20 +64,31 @@ Search Filters:
Fetching results. Please wait: 'Henter resultater. Vent.'
Fetch more results: 'Hent flere resultater'
# Sidebar
There are no more results for this search: Det er ikke flere resultat for dette
søket
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonnementer'
Latest Subscriptions: 'Siste abonnementer'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Din
abbonementsliste er for tiden tom. Legg til noen for å se dem her.'
abonnementsliste er for tiden tom. Legg til noen for å se dem her.'
'Getting Subscriptions. Please wait.': 'Henter abonnementer. Vent.'
Refresh Subscriptions: Gjenoppfrisk abonnementer
Refresh Subscriptions: Oppdater abonnementer
Getting Subscriptions. Please wait.: Henter abonnementer. Vent.
Trending: 'Populært'
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.
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.
History:
# On History Page
History: 'Historikk'
@ -90,9 +101,9 @@ Settings:
General Settings: 'Generelle innstillinger'
Fallback to Non-Preferred Backend on Failure: 'Tilbakefall til ikke-foretrukken
bakende ved feil'
Enable Search Suggestions: 'Skru på søkeforslag'
Enable Search Suggestions: 'S på søkeforslag'
Default Landing Page: 'Forvalgt landingsside'
Locale Preference: 'Lokale-innstilling'
Locale Preference: 'Språkinnstilling'
Preferred API Backend:
Preferred API Backend: 'Foretrukket API-bakende'
Local API: 'Lokalt API'
@ -109,11 +120,14 @@ Settings:
End: 'Slutten'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Individious-instans
(forvalget er https://invidious.snopyta.org)'
Region for Trending: 'Region for populære'
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
Theme Settings:
Theme Settings: 'Tema innstillinger'
Match Top Bar with Main Color: ''
Match Top Bar with Main Color: 'Bruk hovedfarge i toppbjelke'
Base Theme:
Base Theme: 'Hovedtema'
Black: 'Svart'
@ -128,36 +142,39 @@ Settings:
Indigo: 'Indigo'
Blue: 'Blå'
Light Blue: 'Lyseblå'
Cyan: ''
Teal: ''
Cyan: 'Cyanblå'
Teal: 'Turkis'
Green: 'Grønn'
Light Green: 'Lysegrønn'
Lime: ''
Lime: 'Limegrønn'
Yellow: 'Gul'
Amber: ''
Orange: ''
Deep Orange: ''
Secondary Color Theme: ''
Amber: 'Rav'
Orange: 'Oransje'
Deep Orange: 'Dyp oransje'
Secondary Color Theme: 'Sekundær fargedrakt'
#* Main Color Theme
UI Scale: Grensesnittskala
Disable Smooth Scrolling: Skru av myk rulling
Expand Side Bar by Default: Utvid sidestolpe som forvalg
Player Settings:
Player Settings: 'Spillerinnstillinger'
Force Local Backend for Legacy Formats: ''
Play Next Video: 'Spill neste video'
Turn on Subtitles by Default: ''
Autoplay Videos: ''
Proxy Videos Through Invidious: ''
Autoplay Playlists: ''
Enable Theatre Mode by Default: ''
Default Volume: 'Forvalgt lydstyrke'
Default Playback Rate: ''
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'
Proxy Videos Through Invidious: 'Mellomtjen videoer gjennom Invidious'
Autoplay Playlists: 'Autospillings-spillelister'
Enable Theatre Mode by Default: 'Kinomodus som standardvalg'
Default Volume: 'Standardvolum'
Default Playback Rate: 'Forvalgt avspillingshastighet'
Default Video Format:
Default Video Format: ''
Dash Formats: ''
Legacy Formats: ''
Default Video Format: 'Forvalgt videoformat'
Dash Formats: 'DASH-formater'
Legacy Formats: 'Gamle formater'
Audio Formats: 'Lydformater'
Default Quality:
Default Quality: 'Forvalgt kvalitet'
Auto: ''
Auto: 'Auto'
144p: '144p'
240p: '240p'
360p: '360p'
@ -165,21 +182,25 @@ Settings:
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: ''
8k: ''
4k: 'UHD'
8k: '8k UHD'
Privacy Settings:
Privacy Settings: 'Personvernsinnstillinger'
Remember History: 'Husk historikk'
Save Watched Progress: 'Lagre framdriftsposisjon'
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: ''
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'
Remove Watch History: 'Fjern visningshistorikk'
Are you sure you want to remove your entire watch history?: 'Fjern hele visningshistorikken?'
Watch history has been cleared: 'VIsningshistorikk fjernet'
Remove All Subscriptions / Profiles: Fjern alle abonnementer/profiler
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.
Subscription Settings:
Subscription Settings: ''
Hide Videos on Watch: ''
Subscription Settings: 'Abonnementsinnstillinger'
Hide Videos on Watch: 'Skjul sette videoer'
Subscriptions Export Format:
Subscriptions Export Format: ''
#& Freetube
@ -189,6 +210,7 @@ Settings:
Import Subscriptions: 'Importer abonnementer'
Export Subscriptions: 'Eksporter abonnementer'
How do I import my subscriptions?: 'Hvordan importerer jeg mine abonnementer?'
Fetch Feeds from RSS: Hent informasjonskanaler fra RSS
Advanced Settings:
Advanced Settings: 'Avanserte innstillinger'
Enable Debug Mode (Prints data to the console): ''
@ -219,6 +241,67 @@ Settings:
Unknown data key: Ukjent datanøkkel
Unable to write file: Kunne ikke skrive fil
Invalid history file: Ugyldig historikkfil
All watched history has been successfully exported: All visningshistorikk har
blitt eksportert
All watched history has been successfully imported: All visningshistorikk importert
History object has insufficient data, skipping item: Hopper over historikkobjekt
med utilstrekkelig data
One or more subscriptions were unable to be imported: Ett eller flere abonnement
kunne ikke importeres
All subscriptions have been successfully imported: Alle abonnementer har blitt
importert
All subscriptions and profiles have been successfully imported: Importerte alle
abonnementer og profiler
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.
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…
Export History: Historikk-eksport
Import History: Historikk-import
Export NewPipe: NewPipe-eksport
Export YouTube: YouTube-eksport
Export FreeTube: FreeTube-eksport
Export Subscriptions: Eksporter abonnementer
Import NewPipe: Importer NewPipe
Import YouTube: Importer YouTube
Import FreeTube: Importer FreeTube
Import Subscriptions: Importer abonnementer
Select Export Type: Velg eksporttype
Select Import Type: Velg importtype
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
Error getting network information. Is your proxy configured properly?: Klarte
ikke å hente nettverksinfo. Er din mellomtjener satt opp riktig?
Test Proxy: Test mellomtjener
City: By
Country: Land
Ip: IP
Your Info: Din info
Proxy Port Number: Mellomtjener-portnummer
Proxy Host: Mellomtjenervert
Proxy Protocol: Mellomtjenerprotokoll
Enable Tor / Proxy: Skru på Tor/mellomtjener
Proxy Settings: Mellomtjenerinnstillinger
Distraction Free Settings:
Hide Trending Videos: Gjem På vei opp
Hide Video Likes And Dislikes: Skjul video-gunst
Distraction Free Settings: Distraksjonsfri-innstillinger
Hide Active Subscriptions: Skjul aktive abonnementer
Hide Recommended Videos: Skjul anbefalte videoer
Hide Comment Likes: Skjul kommentargunst
Hide Channel Subscribers: Skjul kanalabonnementer
Hide Popular Videos: Skjul populære videoer
Hide Video Views: Skjul videovisninger
Hide Live Chat: Gjem direktechat
The app needs to restart for changes to take effect. Restart and apply change?: Start
programmet på ny for å bruke de nye endringene?
About:
#On About page
About: 'Om'
@ -243,13 +326,37 @@ About:
Latest FreeTube News: ''
#On Channel Page
FAQ: Ofte stilte spørsmål
Downloads / Changelog: Nedlastninger / Endringslogg
Licensed under the AGPLv3: Lisensiert under AGPLv3
Help: Hjelp
View License: Vis lisens
Donate: Doner
Website: Nettsted
Report a problem: Rapporter et problem
Source code: Kildekode
Please read the: Vennligst les
Mastodon: Mastodon
Email: E-post
Blog: Blogg
Translate: Oversett
Please check for duplicates before posting: Se etter duplikater før innsendelse
these people and projects: disse folkene og prosjektene
FreeTube is made possible by: FreeTube er gjort mulig av
Credits: Bidragsytere
room rules: romregler
GitHub issues: GitHub-problemsporer
FreeTube Wiki: FreeTube-wiki
GitHub releases: GitHub-utgivelser
Beta: Beta
Chat on Matrix: Snakk med oss på Matrix
Channel:
Subscriber: 'Abonnent'
Subscribers: 'Abonnenter'
Subscribe: 'Abonner'
Unsubscribe: 'Opphev abonnement'
Search Channel: 'Søk i kanal'
Your search results have returned 0 results: 'Resultatløst søk'
Your search results have returned 0 results: 'Søktet ditt ga 0 resultater'
Sort By: 'Sorter etter'
Videos:
Videos: 'Videoer'
@ -270,11 +377,16 @@ Channel:
About: 'Om'
Channel Description: 'Kanalbeskrivelse'
Featured Channels: 'Framhevede kanaler'
Added channel to your subscriptions: Lagt til kanal til dine abonnenter
Removed subscription from $ other channel(s): Fjernet abonnement fra $ andre kanal(er)
Channel has been removed from your subscriptions: Kanalen har blitt fjernet fra
dine abonnement
Video:
Mark As Watched: 'Marker som sett'
Remove From History: 'Fjern fra historikk'
Video has been marked as watched: 'Videoen har blitt markert som sett'
Video has been removed from your history: ''
Video has been removed from your history: 'Videoen har blitt fjernet fra historikken
din'
Open in YouTube: 'Åpne i YouTube'
Copy YouTube Link: 'Kopier YouTube-lenke'
Open YouTube Embedded Player: 'Åpne innebygd YouTube-spiller'
@ -284,17 +396,22 @@ Video:
View: 'Vis'
Views: 'Visninger'
# Context is "X People Watching"
Watching: ''
Watched: ''
Watching: 'Ser på'
Watched: 'Sett'
# As in a Live Video
Live: 'Direktesendt'
Live Now: 'Direktesendt nå'
Live Chat: 'Sanntidssludring'
Enable Live Chat: 'Skru på sanntidssludring'
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: 'Direkte'
Live Now: 'Direkte nå'
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 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.'
Published:
Jan: 'Jan'
Feb: 'Feb'
@ -321,11 +438,39 @@ Video:
Year: 'År'
Years: 'År'
Ago: 'Siden'
Upcoming: ''
Published on: ''
Upcoming: 'Har premiere'
Minutes: Minutter
Minute: Minutt
Published on: 'Publisert'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % siden'
#& Videos
Audio:
High: Høy
Medium: Middels
Low: Lav
Best: Beste
audio only: Bare lyd
video only: Bare video
Download Video: Last ned video
Video has been saved: Videoen har blitt lagret
Save Video: Lagre video
Copy Invidious Channel Link: Kopier Invidious-kanallenke
Reverse Playlist: Snu spillelisten
Started streaming on: Startet strømming
Streamed on: Strømmet
Starting soon, please refresh the page to check again: Starter snart, vennligst
oppdater siden for å sjekke igjen
Autoplay: Automatisk avspilling
Shuffle Playlist: Spill av tilfeldig fra spillelisten
Loop Playlist: Gjenta spilleliste
Open Channel in Invidious: Opne kanal i Invidious
Copy YouTube Channel Link: Kopier YouTube-kanallenke
Video has been removed from your saved list: Videoen har blitt fjernet fra din liste
over lagrede videoer
Open Channel in YouTube: Åpne kanal i YouTube
Play Previous Video: Spill av forrige video
Play Next Video: Spill av neste video
Videos:
#& Sort By
Sort By:
@ -350,12 +495,16 @@ Playlist:
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: ''
Toggle Theatre Mode: 'Veksle teatermodus'
Change Format:
Change Video Formats: 'Endre videoformater'
Use Dash Formats: ''
Use Legacy Formats: ''
Use Audio Formats: ''
Use Dash Formats: 'Bruk DASH-formater'
Use Legacy Formats: 'Bruk foreldede formater'
Use Audio Formats: 'Bruk lydformater'
Audio formats are not available for this video: Lydformater er ikke tilgjengelig
for denne videoen
Dash formats are not available for this video: DASH-formater er ikke tilgjengelig
for denne videoen
Share:
Share Video: 'Del video'
Copy Link: 'Kopier lenke'
@ -369,6 +518,10 @@ Share:
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
utklippstavle
Mini Player: 'Minispiller'
Comments:
Comments: 'Kommentarer'
@ -381,25 +534,35 @@ Comments:
Hide: 'Skjul'
Replies: 'Svar'
Reply: 'Svar'
There are no comments available for this video: ''
There are no comments available for this video: 'Det finnes ingen tilgjengelige
kommentarer for denne videoen'
Load More Comments: 'Last inn flere kommentarer'
Up Next: ''
No more comments available: Ingen flere kommentarer tilgjengelig
Newest first: Nyeste først
There are no more comments for this video: Det finnes ingen flere kommentarer for
denne videoen
Sort by: Sorter etter
Top comments: Toppkommentarer
Up Next: 'Neste'
# 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: ''
Subscriptions have not yet been implemented: ''
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 in 5 seconds. Click to cancel: ''
Canceled next video autoplay: ''
'The playlist has ended. Enable loop to continue playing': ''
Local API Error (Click to copy): 'Lokal API-feil (Klikk for å kopiere)'
Invidious API Error (Click to copy): 'Invidious-API-feil (Klikk for å kopiere)'
Falling back to Invidious API: 'Faller tilbake til Invidious-API-et'
Falling back to the local API: 'Faller tilbake til det lokale API-et'
Subscriptions have not yet been implemented: 'Abonnement har ikke blitt implementert
enda'
Loop is now disabled: 'Gjenta er nå deaktivert'
Loop is now enabled: 'Gjenta er nå aktivert'
Shuffle is now disabled: 'Tilfeldig avspilling er nå deaktivert'
Shuffle is now enabled: 'Tilfeldig avspilling er nå aktivert'
Playing Next Video: 'Spiller av neste video'
Playing Previous Video: 'Spiller av forrige video'
Playing next video in 5 seconds. Click to cancel: 'Spiller av neste video om 5 sekunder.
Klikk for å avbryte.'
Canceled next video autoplay: 'Avbryter automatisk avspilling av neste video'
'The playlist has ended. Enable loop to continue playing': 'Spillelisten har nådd
sin ende. Klikk på «Gjenta» for å fortsette spillingen'
Yes: 'Ja'
No: 'Nei'
@ -420,3 +583,65 @@ Profile:
Delete Profile: Slett profil
Make Default Profile: Gjør til 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
noen andre profiler.
No channel(s) have been selected: Ingen kanal(er) har blitt valgt
Select All: Velg alle
$ selected: $ valgt
Other Channels: Andre kanaler
Color Picker: Fargevelger
Profile Select: Velg profil
Create Profile: Lag profil
Edit Profile: Rediger profil
Create New Profile: Lag ny profil
Profile Manager: Profilbehandler
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?
De samme kanalene vil bli slettet i enhver profil de finnes i.
Select None: Fravelg alt
Delete Selected: Slett valgte
Add Selected To Profile: Legg til valgt i profil
Subscription List: Abonnementsliste
Profile Preview: Profilforhåndsvisning
Custom Color: Egendefinert farge
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
Thumbnail Preference: Alle miniatyrbilder i FreeTube vil bli erstattet av et bilde
av videoen i stedet for standardminiatyrbildet
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
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
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.
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
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
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.

588
static/locales/nn.yaml Normal file
View File

@ -0,0 +1,588 @@
# Put the name of your locale in the same language
Locale Name: 'Norsk nynorsk'
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.': >-
Denne delen av applikasjonen er ikkje klar enda. Ver venleg og kom tilbake på eit
seinare tidspunkt.
# Webkit Menu Bar
File: 'Fil'
Quit: 'Avslutt'
Edit: 'Rediger'
Undo: 'Angre'
Redo: 'Gjenta'
Cut: 'Klipp'
Copy: 'Kopier'
Paste: 'Lim'
Delete: 'Fjern'
Select all: 'Vel alle'
Reload: 'Oppdater'
Force Reload: 'Tving oppdatering'
Toggle Developer Tools: 'Veksle utviklarverktøy'
Actual size: 'Originalstorleik'
Zoom in: 'Forstørr'
Zoom out: 'Forminsk'
Toggle fullscreen: 'Veksle fullskjerm'
Window: 'Vindauge'
Minimize: 'Minimer'
Close: 'Lukk'
Back: 'Tilbake'
Forward: 'Framover'
Version $ is now available! Click for more details: 'Versjon $ er no tilgjengeleg!
Klikk for meir informasjon'
Download From Site: 'Last ned frå nettstaden'
A new blog is now available, $. Click to view more: 'Eit nytt blogginnlegg er tilgjengeleg,
$. Klikk for å opne det'
# Search Bar
Search / Go to URL: 'Søk / Gå til nettadresse'
# In Filter Button
Search Filters:
Search Filters: 'Søkfilter'
Sort By:
Sort By: 'Sorter etter'
Most Relevant: 'Mest relevant'
Rating: 'Vurdering'
Upload Date: 'Opplastingsdato'
View Count: 'Sjåartal'
Time:
Time: 'Tid'
Any Time: 'Når som helst'
Last Hour: 'Den siste timen'
Today: 'I dag'
This Week: 'Denne veka'
This Month: 'Denne månaden'
This Year: 'Dette året'
Type:
Type: 'Type'
All Types: 'Alle typar'
Videos: 'Videoar'
Channels: 'Kanalar'
#& Playlists
Duration:
Duration: 'Varigheit'
All Durations: 'Alle varigheitene'
Short (< 4 minutes): 'Kort (< 4 minutt)'
Long (> 20 minutes): 'Lang (> 20 minutt)'
# On Search Page
Search Results: 'Søkeresultat'
Fetching results. Please wait: 'Henter resultat. Ver venleg og vent'
Fetch more results: 'Hent fleire resultat'
There are no more results for this search: 'Det er inga fleire resultat for dette
søket'
# Sidebar
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonnement'
Latest Subscriptions: 'Siste abonnement'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Denne
profilen har ei stor mengd abonnentar. Tvinger RSS til å unngå å avgrense hastigheita'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Di
abonnementliste er tom for augeblikket. Start å legge til fleire abonnement for
å sjå dei her.'
'Getting Subscriptions. Please wait.': 'Henter abonnement. Ver venleg og vent.'
Refresh Subscriptions: 'Oppdater abonnement'
Load More Videos: 'Last inn fleire videoar'
Trending: 'På veg opp'
Most Popular: 'Mest populært'
Playlists: 'Spelelister'
User Playlists:
Your Playlists: 'Dine spelelister'
Playlist Message: 'Denne sida reflekterer ikkje ei fullt fungerande speleliste.
Den viser berre videoar som du har lagra eller lagt til favorittar. Når arbeidet
er ferdig, blir alle videoane som for augeblikket er her overført til ei "favoritt"
speleliste.'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 'Du
har ingen lagra videoar for augeblikket. Klikk på lagringsknappen i hjørnet av
ein video slik at den bli oppført her'
History:
# On History Page
History: 'Historikk'
Watch History: 'Sjåarhistorikk'
Your history list is currently empty.: 'Historikken din er tom for augeblikket.'
Settings:
# On Settings Page
Settings: 'Innstillingar'
The app needs to restart for changes to take effect. Restart and apply change?: 'Applikasjonen
må restarte for at endringane skal tre i kraft. Start på nytt og ta i bruk endringane?'
General Settings:
General Settings: 'Generelle innstillingar'
Check for Updates: 'Sjå etter oppdateringar'
Check for Latest Blog Posts: 'Sjå etter siste blogginnlegg'
Fallback to Non-Preferred Backend on Failure: 'Tilbakefall til ikkje-føretrekte
backend ved feil'
Enable Search Suggestions: 'Slå på søkeforslag'
Default Landing Page: 'Forvalt landingsside'
Locale Preference: 'Språkinnstilling'
Preferred API Backend:
Preferred API Backend: 'Føretrekte API-backend'
Local API: 'Lokalt API'
Invidious API: 'Invidious-API'
Video View Type:
Video View Type: 'Videovisingstype'
Grid: 'Rutenett'
List: 'Liste'
Thumbnail Preference:
Thumbnail Preference: 'Miniatyrbiletepreferanse'
Default: 'Standard'
Beginning: 'Begynning'
Middle: 'Mellom'
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'
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: ''
Disable Smooth Scrolling: 'Deaktiver jevn rulling'
UI Scale: 'Skalering av brukargrensesnitt'
Base Theme:
Base Theme: 'Hovudtema'
Black: 'Svart'
Dark: 'Mørk'
Light: 'Lys'
Main Color Theme:
Main Color Theme: 'Hovudfargetema'
Red: 'Raud'
Pink: 'Rosa'
Purple: 'Lilla'
Deep Purple: 'Djuplilla'
Indigo: 'Indigo'
Blue: 'Blå'
Light Blue: 'Lyseblå'
Cyan: ''
Teal: 'Blågrøn'
Green: 'Grøn'
Light Green: 'Lysegrøn'
Lime: 'Lime'
Yellow: 'Gul'
Amber: 'Rav'
Orange: 'Oransje'
Deep Orange: 'Djuporansje'
Secondary Color Theme: 'Sekundærfargetema'
#* Main Color Theme
Player Settings:
Player Settings: 'Videospelarinnstillingar'
Force Local Backend for Legacy Formats: ''
Play Next Video: 'Spel av neste video'
Turn on Subtitles by Default: 'Slå på undertekst som standard'
Autoplay Videos: 'Spel av videoar automatisk'
Proxy Videos Through Invidious: ''
Autoplay Playlists: 'Spel av spelelister automatisk'
Enable Theatre Mode by Default: 'Kinomodus som standardval'
Default Volume: 'Standardvolum'
Default Playback Rate: 'Standard avspelingsfrekvens'
Default Video Format:
Default Video Format: 'Standard videoformat'
Dash Formats: 'DASH-format'
Legacy Formats: 'Eldre format'
Audio Formats: 'Lydformat'
Default Quality:
Default Quality: 'Standardkvalitet'
Auto: 'Automatisk'
144p: '144p'
240p: '240p'
360p: '360p'
480p: '480p'
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: '4k'
8k: '8k'
Privacy Settings:
Privacy Settings: 'Personvernsinnstillingar'
Remember History: 'Husk historikk'
Save Watched Progress: ''
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?'
Search cache has been cleared: 'Søkebufferen har blitt sletta'
Remove Watch History: 'Slett sjåarhistorikk'
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.: ''
Subscription Settings:
Subscription Settings: 'Abonnementinnstillingar'
Hide Videos on Watch: ''
Fetch Feeds from RSS: 'Hent feedar frå RSS'
Manage Subscriptions: 'Behandle abonnement'
Distraction Free Settings:
Distraction Free Settings: ''
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 Popular Videos: 'Gøym populære videoar'
Hide Live Chat: 'Gøym direktechat'
Hide Active Subscriptions: 'Gøym aktive abonnement'
Data Settings:
Data Settings: 'Datainnstillingar'
Select Import Type: 'Vel importtype'
Select Export Type: 'Vel eksporttype'
Import Subscriptions: 'Importer abonnement'
Import FreeTube: 'Importer FreeTube'
Import YouTube: 'Importer YouTube'
Import NewPipe: 'Importer NewPipe'
Check for Legacy Subscriptions: ''
Export Subscriptions: 'Eksporter abonnement'
Export FreeTube: 'Eksporter FreeTube'
Export YouTube: 'Eksporter YouTube'
Export NewPipe: 'Eksporter NewPipe'
Import History: 'Importer historikk'
Export History: 'Eksporter historikk'
Profile object has insufficient data, skipping item: 'Eit profilobjekt manglar
data, hoppar over objektet'
All subscriptions and profiles have been successfully imported: 'Alle abonnement
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: ''
Invalid subscriptions file: 'Ugyldig abonnementfil'
This might take a while, please wait: 'Dette kan ta ei stund, venleg vent'
Invalid history file: 'Ugyldig historiefil'
Subscriptions have been successfully exported: 'Abonnement har blitt importert'
History object has insufficient data, skipping item: 'Eit historieobjekt manglar
data, hoppar over objektet'
All watched history has been successfully imported: 'Visingshistorikken har blitt
importert'
All watched history has been successfully exported: 'Visingshistorikken har blitt
eksportert'
Unable to read file: 'Kan ikkje lese fil'
Unable to write file: 'Kan ikkje skrive til fil'
Unknown data key: 'Ukjent datanøkkel'
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
ein førespurnad til'
Test Proxy: 'Test proxy'
Your Info: 'Din informasjon'
Ip: 'IP-adresse'
Country: 'Land'
Region: 'Region'
City: 'By'
Error getting network information. Is your proxy configured properly?: 'Kunne
ikkje hente nettverksinformasjon. Er proxyen din konfigurert skikkeleg?'
About:
#On About page
About: 'Om'
Beta: 'Beta'
Source code: 'Kjeldekode'
Licensed under the AGPLv3: 'Lisensiert under AGPLv3'
View License: 'Vis lisens'
Downloads / Changelog: 'Nedlastingar / Endringslogg'
GitHub releases: 'GitHub-utgjevingar'
Help: 'Hjelp'
FreeTube Wiki: 'FreeTube-wiki'
FAQ: 'Ofte stilte spørsmål'
Report a problem: 'Rapporter eit problem'
GitHub issues: 'GitHub issues'
Please check for duplicates before posting: 'Sjå etter duplikat før du poster noko'
Website: 'Nettstad'
Blog: 'Blogg'
Email: 'E-post'
Mastodon: 'Mastodon'
Chat on Matrix: 'Snakk med oss på Matrix'
Please read the: 'Ver venleg og les'
room rules: 'Romreglar'
Translate: 'Omsetje'
Credits: 'Bidrag'
FreeTube is made possible by: 'FreeTube er mogleggjort av'
these people and projects: 'desse folka og prosjekta'
Donate: 'Doner'
Profile:
Profile Select: 'Profilval'
All Channels: 'Alle kanalar'
Profile Manager: 'Profilbehandlar'
Create New Profile: 'Lag ny profil'
Edit Profile: 'Rediger profil'
Color Picker: 'Fargeveljar'
Custom Color: ''
Profile Preview: 'Forhandsvising av profil'
Create Profile: 'Lag profil'
Update Profile: 'Oppdater profil'
Make Default Profile: 'Angi som standardprofil'
Delete Profile: 'Fjern profil'
Are you sure you want to delete this profile?: 'Er du sikker på at du vil fjerne
denne profilet?'
All subscriptions will also be deleted.: 'Alle abonnement vil òg bli sletta.'
Profile could not be found: 'Profil ikkje funne'
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
$'
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'
$ is now the active profile: '$ er no det aktive profilet'
Subscription List: 'Abonnementliste'
Other Channels: 'Andre kanalar'
$ selected: '$ valt'
Select All: 'Vel alle'
Select None: 'Vel ingen'
Delete Selected: 'Slett valte'
Add Selected To Profile: 'Legg til valt i profilen'
No channel(s) have been selected: 'Ingen kanal(ar) har blitt valt'
? 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 primærprofilet ditt. Er du sikker på at du vil fjerne dei valte kanalane?
Dei same kanalane vil bli sletta i profila dei er funne i.'
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 dei valte kanalane? Dette vil ikkje slette kanalane
frå andre profil.'
#On Channel Page
Channel:
Subscriber: 'Abonnent'
Subscribers: 'Abonnentar'
Subscribe: 'Abonner'
Unsubscribe: 'Opphev abonnement'
Channel has been removed from your subscriptions: 'Kanalen har blitt fjerna frå
dine abonnement'
Removed subscription from $ other channel(s): ''
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'
Sort By: 'Sorter etter'
Videos:
Videos: 'Videoar'
This channel does not currently have any videos: 'Kanalen har ingen videoar enda'
Sort Types:
Newest: 'Nyaste'
Oldest: 'Eldste'
Most Popular: 'Mest populære'
Playlists:
Playlists: 'Spelelister'
This channel does not currently have any playlists: 'Denne kanalen har ingen spelelister
enda'
Sort Types:
Last Video Added: 'Siste video lagt til'
Newest: 'Nyaste'
Oldest: 'Eldste'
About:
About: 'Om'
Channel Description: 'Kanalbeskriving'
Featured Channels: 'Utvalte kanalar'
Video:
Mark As Watched: 'Marker som sett'
Remove From History: 'Fjern frå historikk'
Video has been marked as watched: 'Videoen har blitt markert som sett'
Video has been removed from your history: 'Videoen har blitt fjerna frå historikken
din'
Save Video: 'Lagre video'
Video has been saved: 'Videoen har blitt lagra'
Video has been removed from your saved list: 'Videoen har blitt fjerna frå di liste
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 in Invidious: 'Opne i Invidious'
Copy Invidious Link: 'Kopier Invidious-lenke'
Open Channel in YouTube: 'Opne kanal i YouTube'
Copy YouTube Channel Link: 'Kopier YouTube-kanallenke'
Open Channel in Invidious: 'Opne kanal i Invidious'
Copy Invidious Channel Link: 'Kopier Invidious-kanallenke'
View: 'Vis'
Views: 'Visingar'
Loop Playlist: 'Gjenta speleliste'
Shuffle Playlist: 'Spel av tilfeldig frå spelelista'
Reverse Playlist: ''
Play Next Video: 'Spel av neste video'
Play Previous Video: 'Spel av førre video'
# Context is "X People Watching"
Watching: 'Ser på'
Watched: 'Såg'
Autoplay: 'Automatisk avspeling'
Starting soon, please refresh the page to check again: 'Starter snart, venleg oppdater
sida for å sjekke igjen'
# As in a Live Video
Live: 'Direkte'
Live Now: 'Direkte no'
Live Chat: 'Direktechat'
Enable Live Chat: 'Slå på direktechat'
Live Chat is currently not supported in this build.: 'Direktechat er ikkje støtta
i den noverande versjonen.'
'Chat is disabled or the Live Stream has ended.': 'Chatten er slått av eller direktesendinga
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.': ''
Download Video: 'Last ned video'
video only: 'berre video'
audio only: 'berre lyd'
Audio:
Low: 'Låg'
Medium: 'Middels'
High: 'Høg'
Best: 'Beste'
Published:
Jan: 'Jan'
Feb: 'Feb'
Mar: 'Mar'
Apr: 'Apr'
May: 'Mai'
Jun: 'Jun'
Jul: 'Jul'
Aug: 'Aug'
Sep: 'Sep'
Oct: 'Okt'
Nov: 'Nov'
Dec: 'Des'
Second: 'Sekund'
Seconds: 'Sekund'
Minute: 'Minutt'
Minutes: 'Minutt'
Hour: 'Time'
Hours: 'Timar'
Day: 'Dag'
Days: 'Dagar'
Week: 'Veke'
Weeks: 'Veke'
Month: 'Månad'
Months: 'Månadar'
Year: 'År'
Years: 'År'
Ago: 'Sidan'
Upcoming: 'Har premiere på'
Published on: 'Publisert på'
Streamed on: 'Strauma på'
Started streaming on: 'Begynte å straume på'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ % sidan'
#& Videos
Videos:
#& Sort By
Sort By:
Newest: 'Nyaste'
Oldest: 'Eldste'
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: 'Vis heile spelelista'
Videos: 'Videoar'
View: ''
Views: 'Visingar'
Last Updated On: 'Sist oppdatert'
Share Playlist:
Share Playlist: 'Del speleliste'
Copy YouTube Link: 'Kopier YouTube-lenke'
Open in YouTube: 'Opne i YouTube'
Copy Invidious Link: 'Kopier Invidious-lenke'
Open in Invidious: 'Opne i Invidious'
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'Veksle teatermodus'
Change Format:
Change Video Formats: 'Endre videoformat'
Use Dash Formats: 'Bruk DASH-format'
Use Legacy Formats: 'Bruk gamle format'
Use Audio Formats: 'Bruk lydformat'
Dash formats are not available for this video: 'DASH-format er ikkje tilgjengeleg
for denne videoen'
Audio formats are not available for this video: 'Lydformat er ikkje tilgjengeleg
for denne videoen'
Share:
Share Video: 'Del video'
Include Timestamp: 'Inkluder tidsstempel'
Copy Link: 'Kopier lenke'
Open Link: 'Opne lenke'
Copy Embed: 'Kopier innebygd versjon'
Open Embed: 'Opne innebygde versjon'
# On Click
Invidious URL copied to clipboard: 'Invidious-URL kopiert til utklippstavle'
Invidious Embed URL copied to clipboard: 'Innebygd Invidious-nettadresse kopiert
til utklippstavle'
Invidious Channel URL copied to clipboard: 'Invidious-kanalnettadresse 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'
Mini Player: 'Minispelar'
Comments:
Comments: 'Kommentarar'
Click to View Comments: 'Klikk for å sjå kommentarar'
Getting comment replies, please wait: 'Laster inn kommentarar, ver venleg og vent'
There are no more comments for this video: 'Det finst ingen fleire kommentarar for
denne videoen'
Show Comments: 'Vis kommentarar'
Hide Comments: 'Gøym kommentarar'
Sort by: 'Sorter etter'
Top comments: 'Toppkommentar'
Newest first: 'Nyaste først'
# Context: View 10 Replies, View 1 Reply
View: 'Vis'
Hide: 'Gøym'
Replies: 'Svar'
Reply: 'Svar'
There are no comments available for this video: 'Det er ingen kommentarar tilgjengeleg
for denne videoen'
Load More Comments: 'Last inn fleire kommentarar'
No more comments available: 'Ingen fleire kommentarar tilgjengeleg'
Up Next: 'Neste'
#Tooltips
Tooltips:
General Settings:
Preferred API Backend: ''
Fallback to Non-Preferred Backend on Failure: 'Når ditt føretrekte API har eit
problem, vil FreeTube prøve å automatisk bruke ditt ikkje-føretrekte API som
ein tilbakefallingsmetode dersom det er aktivert'
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
å velje mellom'
Region for Trending: ''
Player Settings:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
Subscription Settings:
Fetch Feeds from RSS: ''
# Toast Messages
Local API Error (Click to copy): 'Lokal API-feil (Klikk for å kopiere)'
Invidious API Error (Click to copy): 'Invidious-API-feil (Klikk for å kopiere)'
Falling back to Invidious API: 'Faller tilbake til Invidious-API'
Falling back to the local API: 'Faller tilbake til det lokale API-et'
This video is unavailable because of missing formats. This can happen due to country unavailability.: 'Denne
videoen er utilgjengeleg grunna manglande format. Dette kan skuldast tilgangsavgrensingar
i ditt land.'
Subscriptions have not yet been implemented: 'Abonnement har ikkje blitt implementert
enda'
Loop is now disabled: 'Gjenta er no deaktivert'
Loop is now enabled: 'Gjenta er no aktivert'
Shuffle is now disabled: 'Tilfeldig avspeling er no deaktivert'
Shuffle is now enabled: 'Tilfeldig avspeling er no aktivert'
The playlist has been reversed: 'Spelelista har blitt snudd'
Playing Next Video: 'Speler av neste video'
Playing Previous Video: 'Speler av førre video'
Playing next video in 5 seconds. Click to cancel: 'Speler av neste video om 5 sekund.
Klikk for å avbryte.'
Canceled next video autoplay: 'Avbryt automatisk avspeling av neste video'
'The playlist has ended. Enable loop to continue playing': 'Spelelista har nådd si
ende. Klikk på gjenta for å fortsette spelinga'
Yes: 'Ja'
No: 'Nei'

View File

@ -85,6 +85,9 @@ User Playlists:
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 salvar no canto de um vídeo
para que ele seja listado aqui
Playlist Message: Esta página não reflete listas de reprodução totalmente funcionais.
Ele só lista vídeos que você salvou ou favoritos. Quando o trabalho estiver concluído,
todos os vídeos atualmente aqui serão migrados para uma playlist 'Favoritos'.
History:
# On History Page
History: 'Histórico'
@ -303,6 +306,10 @@ Settings:
Proxy Protocol: Protocolo de Proxy
Enable Tor / Proxy: Ativar Tor / Proxy
Proxy Settings: Configurações de Proxy
Error getting network information. Is your proxy configured properly?: Erro ao
obter informações da rede. O seu proxy está configurado corretamente?
City: Cidade
Region: Região
About:
#On About page
About: 'Sobre'
@ -334,6 +341,31 @@ About:
Latest FreeTube News: 'Ultimas notícias sobre o FreeTube'
#On Channel Page
GitHub issues: Problemas com o GitHub
Report a problem: Reportar um problema
FAQ: FAQs
FreeTube Wiki: Wiki do FreeTube
Help: Ajuda
GitHub releases: Lançamentos do GitHub
Downloads / Changelog: Downloads / Modificações
View License: Ver Licença
Licensed under the AGPLv3: Licença AGPLv3
Source code: Código-fonte
Beta: Beta
Donate: Doar
these people and projects: estas pessoas e projetos
FreeTube is made possible by: O FreeTube é possível graças a
Credits: Créditos
Translate: Traduzir
room rules: regras da sala
Please read the: Favor ler o
Chat on Matrix: Bate-papo na Matrix
Mastodon: Mastodon
Email: E-mail
Blog: Blog
Website: Site web
Please check for duplicates before posting: Verifique se há duplicatas antes de
postar
Channel:
Subscriber: 'Inscrito'
Subscribers: 'Inscritos'
@ -450,6 +482,10 @@ Video:
Open Channel in Invidious: Abrir Canal no Invidious
Copy YouTube Channel Link: Copiar o link do canal no YouTube
Open Channel in YouTube: Abrir canal no YouTube
Video has been removed from your saved list: O vídeo foi removido da sua lista de
vídeos salvos
Video has been saved: O vídeo foi salvo
Save Video: Salvar vídeo
Videos:
#& Sort By
Sort By:
@ -627,3 +663,4 @@ Tooltips:
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.
More: Mais

View File

@ -69,6 +69,7 @@ Search Filters:
Search Results: Resultados
Fetching results. Please wait: A procurar. Por favor aguarde
Fetch more results: Procurar mais resultados
There are no more results for this search: Não existem mais resultados
# Sidebar
Subscriptions:
# On Subscriptions Page
@ -87,6 +88,11 @@ Most Popular: Mais Populares
Playlists: Listas de Reprodução
User Playlists:
Your Playlists: As suas Listas de Reprodução
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.
History:
# On History Page
History: Histórico
@ -123,6 +129,7 @@ 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
Region for Trending: Região para as tendências
#! List countries
Theme Settings:
@ -222,6 +229,7 @@ Settings:
Hide Trending Videos: Esconder Tendências
Hide Popular Videos: Esconder Mais Populares
Hide Live Chat: Esconder Chat ao Vivo
Hide Active Subscriptions: Esconder Subscrições da barra lateral
Data Settings:
Data Settings: Definições de dados
Select Import Type: Escolher tipo de importação
@ -260,67 +268,48 @@ Settings:
Unable to write file: Ficheiro não pôde ser escrito
Unknown data key: Chave dada é desconhecida
How do I import my subscriptions?: Como posso importar as minhas subscrições?
Advanced Settings:
Advanced Settings: Definições Avançadas
Enable Debug Mode (Prints data to the console): Ligar Modo de Depuração (Escreve
dados à consola)
'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': 'Endereço de intermediário
(Exemplo: SOCKS5://127.0.0.1:9050 )'
'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': >-
Ao Carregar "TESTAR INTERMEDIÁRIO" um pedido vai ser enviado a https://ipinfo.io/json
Use Tor / Proxy for API calls: Usar Tor / Intermediário para Chamadas API
TEST PROXY: TESTAR INTERMEDIÁRIO
#& Invidious Instance (Default is https://invidious.snopyta.org)
See Public Instances: Ver Instâncias Públicas
Clear History:
Clear History: Limpar Histórico
# On Click
Are you sure you want to delete your history?: Tem a certeza de que quer apagar
o seu histórico?
#& Yes
#& No
Clear Subscriptions:
Clear Subscriptions: Limpar Subscrições
# On Click
Are you sure you want to remove all subscriptions?: Tem a certeza de que quer
apagar as suas subscrições?
#& Yes
#& No
Manage Subscriptions: Gerir Subscrições
Proxy Settings:
Proxy Settings: Definições de Intermediários
Enable Tor / Proxy: Ligar Tor / Intermediário
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
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.
About:
#On About page
About: Sobre
#& About
'This software is FOSS and released under the GNU Public License v3+.': >-
This copylefted software is freely licensed GPLv3+.
'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': >-
Encontraste um bug? Queres sugerir uma funcionalidade? Queres ajudar-nos? Vai
á nossa página de GitHub. Pull requests são bem vindos.
Thank you very much to the People and Projects that make FreeTube possible!: >-
Agradeço imenso a todas as pessoas e projetos que façam com que o FreeTube seja
possivel!
'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': >-
Queres conversar? Junta-te ao nosso servidor Element / Matrix. Por favor verifica
as regras antes de te juntares.
'Looking for help? Check out our Wiki page.': Há procura de ajuda? Vê a nossa página
Wiki.
Check out our Firefox extension!: Experimenta a nossa extensão Firefox!
'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': >-
Se gostas de usar FreeTube, considera doar via Liberapay ou através do nosso endereço
Bitcoin.
#~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS'
Latest FreeTube News: Notícias recentes sobre FreeTube
This software is FOSS and released under the GNU Affero General Public License v3.0.: Este
software é licenciado livremente via AGPL-3.0.
Beta: Beta
Source code: Código fonte
Licensed under the AGPLv3: Está sobre a licensa AGPLv3
View License: Ver a Licensa
Downloads / Changelog: Descarregar / Mudanças
GitHub releases: Lançamentos no GitHub
Help: Ajuda
FreeTube Wiki: Wiki do FreeTube
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
Blog: Blogue
Email: Email
Mastodon: Mastodon
Chat on Matrix: Chat no Matrix
Please read the: Por favor leia as
room rules: regras da sala de chat
Translate: Traduzir
Credits: Créditos
FreeTube is made possible by: FreeTube existe graças a
these people and projects: estas pessoas e projectos
Donate: Doar
Profile:
All Channels: Todos os Canais
Profile Manager: Gestor de Perfis
@ -399,6 +388,9 @@ Video:
Remove From History: Apagar do histórico
Video has been marked as watched: O vídeo foi marcado como visto
Video has been removed from your history: O vídeo foi removido do seu histórico
Save Video: Guardar Vídeo
Video has been saved: Vídeo guardado
Video has been removed from your saved list: Vídeo removido da sua lista
Open in YouTube: Abrir no Youtube
Copy YouTube Link: Copiar Ligação para Youtube
Open YouTube Embedded Player: Abrir Reprodutor Youtube Embutido
@ -468,7 +460,9 @@ Video:
Years: Anos
Ago:
Upcoming: Estreia em breve
Published on: Publicado em
Published on: Publicado a
Streamed on: Transmitido a
Started streaming on: Transmissão iniciada a
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: Há $ %
#& Videos

View File

@ -85,6 +85,10 @@ User 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: 'История'
@ -359,6 +363,9 @@ About:
Licensed under the AGPLv3: Лицензия AGPLv3
Source code: Исходный код
Beta: Бета
Please check for duplicates before posting: Пожалуйста, проверьте наличие дубликатов
перед публикацией
GitHub issues: Проблемы на GitHub
Channel:
Subscriber: 'Подписчик'
Subscribers: 'Подписчиков'

View File

@ -190,6 +190,7 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Oynatma Listesi Sonraki Video Aralığı
Privacy Settings:
Privacy Settings: 'Gizlilik Ayarları'
Remember History: 'Geçmişi Hatırla'
@ -288,6 +289,7 @@ Settings:
Hide Video Views: Video Görüntülenme Sayılarını Gizle
Distraction Free Settings: Dikkat Dağıtmama Ayarları
Hide Active Subscriptions: Etkin Abonelikleri Gizle
Hide Playlists: Oynatma Listelerini Gizle
The app needs to restart for changes to take effect. Restart and apply change?: Değişikliklerin
etkili olması için uygulamanın yeniden başlatılması gerekiyor. Yeniden başlatılsın
ve değişiklikler uygulansın mı?
@ -412,6 +414,7 @@ Profile:
kanalları silmek istediğinizden emin misiniz? Bu, kanalı başka bir profilden
silmez.'
#On Channel Page
Profile Filter: Profil Filtresi
Channel:
Subscriber: 'Abone'
Subscribers: 'Aboneler'
@ -658,3 +661,8 @@ Tooltips:
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
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

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'Завантажуються результати. Будь ласка, зачекайте'
Fetch more results: 'Завантажити більше результатів'
# Sidebar
There are no more results for this search: Більше результатів для цього пошуку немає
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Підписки'
@ -87,6 +88,12 @@ 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: 'Історія'
@ -126,10 +133,12 @@ Settings:
(За замовчуванням https://invidious.snopyta.org)'
Region for Trending: 'Регіон для Популярних'
#! List countries
View all Invidious instance information: Перегляд усіх відомостей про екземпляр
Invidious
Theme Settings:
Theme Settings: 'Налаштування теми'
Match Top Bar with Main Color: ''
Expand Side Bar by Default: ''
Match Top Bar with Main Color: 'Верхня панель основного кольору'
Expand Side Bar by Default: 'Усталено розгортати бічну панель'
Disable Smooth Scrolling: 'Відключити плавну прокрутку'
UI Scale: 'Масштаб інтерфейсу'
Base Theme:
@ -159,19 +168,20 @@ Settings:
#* Main Color Theme
Player Settings:
Player Settings: 'Налаштування програвача'
Force Local Backend for Legacy Formats: ''
Force Local Backend for Legacy Formats: 'Примусово використовувати локальний сервер
для застарілих форматів'
Play Next Video: 'Грати наступне відео'
Turn on Subtitles by Default: 'Увімкнути субтитри за замовченням'
Autoplay Videos: 'Автоматичне відтворення відео'
Proxy Videos Through Invidious: ''
Proxy Videos Through Invidious: 'Проксі-відео через Invidious'
Autoplay Playlists: 'Автоматичне відтворення списків'
Enable Theatre Mode by Default: ''
Enable Theatre Mode by Default: 'Усталено увімкнений режим театру'
Default Volume: 'Гучніть за замовченням'
Default Playback Rate: ''
Default Playback Rate: 'Усталена швидкість відтворення'
Default Video Format:
Default Video Format: 'Формат відео за замовченням'
Dash Formats: ''
Legacy Formats: ''
Dash Formats: 'Формати Dash'
Legacy Formats: 'Застарілі формати'
Audio Formats: 'Аудіо формати'
Default Quality:
Default Quality: 'Якість за замовченням'
@ -185,33 +195,39 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
Playlist Next Video Interval: Інтервал відтворення наступного відео
Privacy Settings:
Privacy Settings: 'Налаштування приватності'
Remember History: ''
Remember History: 'Збрігати історію'
Save Watched Progress: 'Зберігати прогрес перегляду'
Clear Search Cache: 'Очистити пошуковий кеш'
Are you sure you want to clear out your search cache?: ''
Search cache has been cleared: ''
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?: ''
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.: ''
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: ''
Fetch Feeds from RSS: 'Отримати канали з RSS'
Manage Subscriptions: 'Керування підписками'
Distraction Free Settings:
Distraction Free Settings: ''
Distraction Free Settings: 'Налаштування зосередження'
Hide Video Views: 'Сховати перегляди відео'
Hide Video Likes And Dislikes: ''
Hide Video Likes And Dislikes: 'Приховати вподобайки до відео'
Hide Channel Subscribers: 'Не показувати підписників каналу'
Hide Comment Likes: 'Не показувати уподобання коментарів'
Hide Recommended Videos: 'Не показувати рекомендовані відео'
Hide Trending Videos: 'Не показувати тренди відео'
Hide Popular Videos: 'Не показувати популярні відео'
Hide Live Chat: 'Не показувати живий чат'
Hide Active Subscriptions: Сховати активні підписки
Hide Playlists: Сховати списки відтворення
Data Settings:
Data Settings: 'Налаштування даних'
Select Import Type: 'Оберіть тип імпорту'
@ -220,28 +236,35 @@ Settings:
Import FreeTube: 'Імпортувати FreeTube'
Import YouTube: 'Імпортувати YouTube'
Import NewPipe: 'Імпортувати NewPipe'
Check for Legacy Subscriptions: ''
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?: ''
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): ''
@ -264,9 +287,25 @@ 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 Settings: Налаштування проксі
About:
#On About page
About: ''
About: 'Про'
#& About
'This software is FOSS and released under the GNU Affero General Public License v3.0.': ''
@ -286,248 +325,323 @@ 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: Чат у Matrix
Mastodon: Mastodon
Email: Електронна пошта
Blog: Блог
Website: Вебсайт
Please check for duplicates before posting: Будь ласка, перевірте наявність повторів
перед публікацією
GitHub issues: Проблеми на GitHub
Report a problem: Повідомити про проблему
FAQ: ЧаПи
FreeTube Wiki: Вікі FreeTube
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: ''
Your search results have returned 0 results: ''
Sort By: ''
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: ''
Videos: 'Відео'
This channel does not currently have any videos: 'Наразі на цьому каналі немає
жодного відео'
Sort Types:
Newest: ''
Oldest: ''
Most Popular: ''
Newest: 'Найновіші'
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: ''
Oldest: ''
Last Video Added: 'Останнє додане відео'
Newest: 'Найновіші'
Oldest: 'Найдавніші'
About:
About: ''
Channel Description: ''
Featured Channels: ''
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: ''
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: ''
Mark As Watched: 'Позначити переглянутим'
Remove From History: 'Прибрати з історії'
Video has been marked as watched: 'Відео позначено переглянутим'
Video has been removed from your history: 'Відео вилучено з історії'
Open in YouTube: 'Відкрити в YouTube'
Copy YouTube Link: 'Копіювати посилання youTube'
Open YouTube Embedded Player: 'Відкрити вбудований програвач YouTube'
Copy YouTube Embedded Player Link: 'Копіювати посилання вбудованого програвача YouTube'
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: ''
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: ''
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.': 'Чат
в режимі реального часу наразі не підтримується API Invidious. Потрібне пряме
з''єднання з YouTube.'
Download Video: 'Завантажити відео'
video only: 'лише відео'
audio only: 'лише звук'
Audio:
Low: ''
Medium: ''
High: ''
Best: ''
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: ''
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: 'Опубліковано'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: ''
Publicationtemplate: '$ % тому'
#& Videos
Started streaming on: Почато трансляцію
Streamed on: Потокове передавання
Video has been removed from your saved list: Відео вилучено зі списку збережених
Video has been saved: Відео збережено
Save Video: Зберегти відео
Videos:
#& Sort By
Sort By:
Newest: ''
Oldest: ''
Newest: 'Найновіші'
Oldest: 'Найдавніші'
#& Most Popular
#& Playlists
Playlist:
#& About
View Full Playlist: ''
Videos: ''
View: ''
Views: ''
Last Updated On: ''
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: ''
Share Playlist: 'Поділитися списком відтворення'
Copy YouTube Link: 'Копіювати посилання youTube'
Open in YouTube: 'Відкрити в YouTube'
Copy Invidious Link: 'Копіювати посилання Invidious'
Open in Invidious: 'Відкрити в Invidious'
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: ''
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: ''
Change Video Formats: 'Зміна форматів відео'
Use Dash Formats: 'Використовувати формати Dash'
Use Legacy Formats: 'Використовувати застарілі формати'
Use Audio Formats: 'Використовувати аудіоформати'
Dash formats are not available for this video: 'Формати Dash недоступні для цього
відео'
Audio formats are not available for this video: 'Аудіоформати недоступні для цього
відео'
Share:
Share Video: ''
Include Timestamp: ''
Copy Link: ''
Open Link: ''
Copy Embed: ''
Open Embed: ''
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: ''
Invidious URL copied to clipboard: 'URL-адресу Invidious скопійовано в буфер обміну'
Invidious Embed URL copied to clipboard: 'URL-адресу вбудовування Invidious скопійовано
до буфера обміну'
Invidious Channel URL copied to clipboard: 'URL-адресу каналу Invidious скопійовано
в буфер обміну'
YouTube URL copied to clipboard: 'URL-адресу YouTube скопійовано до буфера обміну'
YouTube Embed URL copied to clipboard: 'URL-адресу вбудовування YouTube скопійовано
до буфера обміну'
YouTube Channel URL copied to clipboard: 'URL-адресу каналу YouTube скопійовано
до буфера обміну'
Mini Player: ''
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: ''
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: ''
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: ''
Preferred API Backend: 'Виберіть сервер, який FreeTube використовує для отримання
даних. Локальний 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'
Player Settings:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
Force Local Backend for Legacy Formats: 'Працює, лише якщо API Invidious використовується
типовим. Якщо увімкнено, локальний API буде запущено і використовуватиме застарілі
формати, які було повернуто Invidious. Допомагає, коли відео, повернуті Invidious,
не відтворюються через обмеження в країні'
Proxy Videos Through Invidious: 'Під’єднається до Invidious, щоб дивитися відео,
а не встановлювати пряме з’єднання з YouTube. Замінює налаштування API'
Default Video Format: 'Встановіть формати, що використовуються під час відтворення
відео. Формати Dash можуть відтворюватися в кращій якості. Старі формати мають
обмеження у 720p, але використовують меншу пропускну здатність. Формати аудіо
— це лише аудіопотоки'
Subscription Settings:
Fetch Feeds from RSS: ''
Fetch Feeds from RSS: 'Якщо ввімкнено, FreeTube використовуватиме RSS замість
стандартного способу захоплення каналу підписки. RSS швидше і запобігає блокуванню
ІР, але не надає дані, як-от тривалість відео або стан трансляції'
# 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 in 5 seconds. Click to cancel: ''
Canceled next video autoplay: ''
'The playlist has ended. Enable loop to continue playing': ''
Local API Error (Click to copy): 'Помилка локального API (натисніть, щоб скопіювати)'
Invidious API Error (Click to copy): 'Помилка Invidious API (натисніть, щоб скопіювати)'
Falling back to Invidious API: 'Повернення до API Invidious'
Falling back to the local API: 'Повернення до локального 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 in 5 seconds. Click to cancel: 'Відтворення наступного відео за
5 секунд. Клацніть, щоб скасувати операцію.'
Canceled next video autoplay: 'Скасовано автовідтворення наступного відео'
'The playlist has ended. Enable loop to continue playing': 'Список відтворення закінчився.
Увімкніть цикл, щоб продовжити відтворення'
Yes: ''
No: ''
Yes: 'Так'
No: 'Ні'
Playing Next Video Interval: Відтворення наступного відео в будь-який час. Клацніть,
щоб скасувати. | Відтворення наступного відео через {nextVideoInterval} секунду.
Клацніть, щоб скасувати. | Відтворення наступного відео через {nextVideoInterval}
секунд. Клацніть, щоб скасувати.
More: Докладніше

View File

@ -1,51 +1,51 @@
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: '復'
Redo: '復'
Cut: '剪下'
Copy: '複製'
Paste: '貼'
Paste: ''
Delete: '刪除'
Select all: '全選'
Reload: '重載'
Force Reload: '強制重載'
Reload: '重'
Force Reload: '強制重'
Toggle Developer Tools: '切換開發者工具'
Actual size: '實際大小'
Zoom in: '放大'
Zoom out: '縮小'
Toggle fullscreen: '切換全屏'
Toggle fullscreen: '切換至全螢幕'
Window: '視窗'
Minimize: '最小化'
Close: '關閉'
Back: '后退'
Back: '返回'
Forward: '前進'
# Search Bar
Search / Go to URL: '搜索 / 前往URL'
Search / Go to URL: '搜尋/ 前往網址'
# In Filter Button
Search Filters:
Search Filters: '搜索過濾'
Search Filters: '搜尋過濾器'
Sort By:
Sort By: '排序方式'
Most Relevant: '最相關'
Rating: '評分'
Upload Date: '上傳日期'
View Count: '觀看'
View Count: '觀看數'
Time:
Time: '時間'
Any Time: '任何時間'
Last Hour: '一小時'
Last Hour: '最近一小時'
Today: '今天'
This Week: '本周'
This Month: '本月'
This Year: '年'
This Year: '年'
Type:
Type: '類別'
All Types: '所有類別'
@ -53,13 +53,13 @@ Search Filters:
Channels: '頻道'
#& Playlists
Duration:
Duration: '時長'
All Durations: '所有長'
Short (< 4 minutes): '短(< 4分鐘'
Long (> 20 minutes): '長(> 20分鐘'
Duration: '影片長度'
All Durations: '所有'
Short (< 4 minutes): '短(小於4分鐘'
Long (> 20 minutes): '長(大於20分鐘'
# On Search Page
Search Results: '搜結果'
Fetching results. Please wait: '擷取結果中。請稍候'
Search Results: '搜結果'
Fetching results. Please wait: '擷取結果中,請稍候...'
Fetch more results: '擷取更多結果'
# Sidebar
There are no more results for this search: 此搜尋無更多結果
@ -69,48 +69,49 @@ Subscriptions:
Latest Subscriptions: '最新訂閱'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '您的訂閱清單目前是空的。在這裡開始添加訂閱。'
'Getting Subscriptions. Please wait.': '抓取訂閱中。請稍等。'
Refresh Subscriptions: 重新整理訂閱
Getting Subscriptions. Please wait.: 正在取得訂閱。請稍候。
Refresh Subscriptions: 重新整理訂閱內容的影片
Getting Subscriptions. Please wait.: 正在取得訂閱中,請稍候....
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 這個設定檔有大量訂閱。
強制RSS已防止速率限制
Load More Videos: 載入更多影片
Trending: '熱門'
Most Popular: '最流行'
Trending: '發燒影片'
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: 此頁面無法反映完整的播放清單。其僅列出您已儲存或加入最愛的影片。工作完成後,所有目前在此的影片都會轉移到「最愛」播放清單。
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: '歷史紀錄'
Watch History: '觀看史紀錄'
Your history list is currently empty.: 您的史紀錄清單目前是空的。
Watch History: '觀看史紀錄'
Your history list is currently empty.: 您的史紀錄清單目前是空的。
Settings:
# On Settings Page
Settings: '設定'
General Settings:
General Settings: '常規設定'
Fallback to Non-Preferred Backend on Failure: '失敗時回撤到非偏好后端'
Enable Search Suggestions: '允許搜索建議'
General Settings: '一般設定'
Fallback to Non-Preferred Backend on Failure: '連線失敗時連線到非預設伺服器'
Enable Search Suggestions: '啟用搜尋建議'
Default Landing Page: '預設加載頁面'
Locale Preference: '地偏好'
Locale Preference: '地偏好'
Preferred API Backend:
Preferred API Backend: '偏好API后端'
Preferred API Backend: '偏好API伺服器'
Local API: '區域API'
Invidious API: 'Invidious API'
Invidious API: 'Invidious API(應用程式介面)'
Video View Type:
Video View Type: '影片觀看類別'
Grid: '網格'
List: '清單'
Thumbnail Preference:
Thumbnail Preference: '圖偏好'
Thumbnail Preference: '影片縮圖偏好'
Default: '預設'
Beginning: '開始'
Beginning: '片頭'
Middle: '中間'
End: '結尾'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious實例預設https://invidious.snopyta.org'
Region for Trending: '熱門區域'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious實例(預設為
https://invidious.snopyta.org )'
Region for Trending: '發燒影片區域'
#! List countries
Check for Latest Blog Posts: 檢查最新的部落格貼文
Check for Updates: 檢查更新
@ -141,30 +142,30 @@ Settings:
Amber: '黃褐'
Orange: '橙'
Deep Orange: '深橙'
Secondary Color Theme: '次主題色'
Secondary Color Theme: '次主題色'
#* Main Color Theme
UI Scale: UI縮放
Expand Side Bar by Default: 預設展開側邊欄
Disable Smooth Scrolling: 禁用平滑捲動
Player Settings:
Player Settings: '播放器選項'
Force Local Backend for Legacy Formats: '強制區域后端給傳統格式'
Force Local Backend for Legacy Formats: '強制使用傳統格式的區域伺服器'
Remember History: '記住曆史'
Play Next Video: '播放下一影片'
Play Next Video: '播放下一影片'
Turn on Subtitles by Default: '預設開啟字幕'
Autoplay Videos: '自動播放影片'
Proxy Videos Through Invidious: '過Invidious代理影片'
Autoplay Playlists: '自動播放清單'
Enable Theatre Mode by Default: '預設允許劇場型態'
Proxy Videos Through Invidious: '過Invidious代理影片'
Autoplay Playlists: '自動播放 播放清單'
Enable Theatre Mode by Default: '預設開啟劇場模式'
Default Volume: '預設音量'
Default Playback Rate: '預設重播速率'
Default Playback Rate: '預設播放速度'
Default Video Format:
Default Video Format: '預設影片格式'
Dash Formats: 'Dash格式'
Legacy Formats: '傳統格式'
Audio Formats: '音訊格式'
Default Quality:
Default Quality: '預設質'
Default Quality: '預設質'
Auto: '自動'
144p: '144p'
240p: '240p'
@ -211,28 +212,28 @@ Settings:
#& No
Privacy Settings:
Watch history has been cleared: 觀看歷史紀錄已清除
Are you sure you want to remove your entire watch history?: 您確定您想移除您全部的觀看歷史紀錄
Watch history has been cleared: 觀看紀錄已清除
Are you sure you want to remove your entire watch history?: 您確定要移除全部的觀看歷史紀錄嗎
Remove Watch History: 移除觀看歷史紀錄
Search cache has been cleared: 搜尋快取已清除
Are you sure you want to clear out your search cache?: 您確定您想清除您的搜尋快取
Are you sure you want to clear out your search cache?: 您確定要清除搜尋快取嗎
Clear Search Cache: 清除搜尋快取
Save Watched Progress: 儲存觀看進度
Remember History: 記住歷史紀錄
Remember History: 儲存歷史紀錄
Privacy Settings: 隱私設定
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定您想移除所有訂閱與設定檔嗎?這無法復原。
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。
Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔
Data Settings:
How do I import my subscriptions?: 我要如何匯入我的訂閱?
Unknown data key: 未知的資料金鑰
Unable to write file: 無法寫入檔案
Unable to read file: 無法讀取檔案
All watched history has been successfully exported: 所有觀看的曆史紀錄已成功匯出
All watched history has been successfully imported: 所有觀看的歷史紀錄已成功匯入
All watched history has been successfully exported: 所有觀看紀錄已成功匯出
All watched history has been successfully imported: 所有觀看紀錄已成功匯入
History object has insufficient data, skipping item: 歷史紀錄物件資料不足,正在跳過項目
Subscriptions have been successfully exported: 訂閱已成功匯出
Invalid history file: 無效的歷史紀錄檔案
This might take a while, please wait: 這可能需要一段時間,請稍候
This might take a while, please wait: 這可能需要一段時間,請稍候...
Invalid subscriptions file: 無效的訂閱檔案
All subscriptions have been successfully imported: 所有訂閱已成功匯入
All subscriptions and profiles have been successfully imported: 所有訂閱與設定檔已成功匯入
@ -250,21 +251,21 @@ Settings:
Select Export Type: 選取匯出類型
Select Import Type: 選取匯入類型
Data Settings: 資料設定
One or more subscriptions were unable to be imported: 一個或者更多訂閱無法被
Check for Legacy Subscriptions: 檢查傳統訂閱
One or more subscriptions were unable to be imported: 一個或者更多訂閱無法被
Check for Legacy Subscriptions: 檢查舊版訂閱
Manage Subscriptions: 管理訂閱
Distraction Free Settings:
Hide Video Likes And Dislikes: 隱藏影片喜歡與不喜歡
Distraction Free Settings: 零打擾設定
Hide Video Views: 隱藏影片觀看
Distraction Free Settings: 擾設定
Hide Video Views: 隱藏影片觀看
Hide Popular Videos: 隱藏流行影片
Hide Trending Videos: 隱藏熱門影片
Hide Live Chat: 隱藏在線聊天
Hide Comment Likes: 隱藏評論點讚
Hide Live Chat: 隱藏直播聊天室
Hide Comment Likes: 隱藏留言的按讚數量
Hide Recommended Videos: 隱藏推薦影片
Hide Channel Subscribers: 隱藏頻道訂閱者
Hide Active Subscriptions: 隱藏作用中的訂閱
The app needs to restart for changes to take effect. Restart and apply change?: 應用需要重啟讓修改生效。重啟并且應用修改?
The app needs to restart for changes to take effect. Restart and apply change?: 此變更需要重啟讓修改生效。重啟並且套用變更?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: 取得網路資訊時發生錯誤。您的代理伺服器設定正確嗎?
City: 城市
@ -310,7 +311,7 @@ About:
Release Notes: 版本註記
Blog: 部落格
Credits: 貢獻者
FAQ: FAQ
FAQ: 常見問題
Wiki: Wiki
Report an Issue: 回報問題
Channel Rules: 頻道規則
@ -322,16 +323,16 @@ About:
Help: 說明
Contact: 聯絡
these people and projects: 這些人與專案
FreeTube is made possible by: FreeTube 被做出來是因為
FreeTube is made possible by: FreeTube 誕生都要感謝這些人
Translate: 翻譯
room rules: 聊天室規則
Please read the: 請閱讀
Chat on Matrix: 在 Matrix 上聊天
Mastodon: Mastodon
Please check for duplicates before posting: 張貼前請檢查有無重複
GitHub issues: GitHub 議題
Please check for duplicates before posting: 提交前請檢查有無重複的問題
GitHub issues: GitHub 問題追蹤器
Report a problem: 回報問題
FreeTube Wiki: FreeTube Wiki
FreeTube Wiki: FreeTube 維基百科
GitHub releases: GitHub 版本
Downloads / Changelog: 下載 / 變更紀錄
View License: 檢視授權條款
@ -342,23 +343,23 @@ Channel:
Subscribers: '訂閱者'
Subscribe: '訂閱'
Unsubscribe: '取消訂閱'
Search Channel: '搜頻道'
Your search results have returned 0 results: '您的搜索結果是0結果'
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: '最流行'
Oldest: '最'
Most Popular: '最熱門'
Playlists:
Playlists: '播放清單'
This channel does not currently have any playlists: '這個頻道目前沒有任何播放清單'
Sort Types:
Last Video Added: '最新添加的影片'
Last Video Added: '最新上傳的影片'
Newest: '最新'
Oldest: '最'
Oldest: '最'
About:
About: '關於'
Channel Description: '頻道說明'
@ -368,11 +369,11 @@ Channel:
Channel has been removed from your subscriptions: 頻道已從您的訂閱中移除
Video:
Open in YouTube: '在YouTube中開啟'
Copy YouTube Link: '複製YouTube結'
Copy YouTube Link: '複製YouTube結'
Open YouTube Embedded Player: '開啟YouTube內嵌播放器'
Copy YouTube Embedded Player Link: '複製YouTube內嵌播放器結'
Copy YouTube Embedded Player Link: '複製YouTube內嵌播放器結'
Open in Invidious: '在Invidious中開啟'
Copy Invidious Link: '複製Invidious結'
Copy Invidious Link: '複製Invidious結'
View: '觀看'
Views: '觀看'
# Context is "X People Watching"
@ -381,12 +382,12 @@ Video:
# 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.': '在線聊天目前不被Invidious
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.': '直播聊天室目前不被Invidious
API支援。 需要直接連線YouTube。'
Published:
Jan: '一月'
@ -414,24 +415,24 @@ Video:
Year: '年'
Years: '年'
Ago: '前'
Upcoming: '首於'
Upcoming: '首於'
Minutes: 分鐘
Minute: 分鐘
Published on: '發布於'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: '$ %前'
#& Videos
Video has been removed from your history: 影片已從您的史紀錄中移除
Video has been marked as watched: 影片已記號為已觀看
Remove From History: 史紀錄中移除
Mark As Watched: 為已觀看
Video has been removed from your history: 影片已從您的史紀錄中移除
Video has been marked as watched: 影片標記為已觀看
Remove From History: 史紀錄中移除
Mark As Watched: 記為已觀看
Autoplay: 自動播放
Play Previous Video: 播放前一影片
Play Next Video: 播放下一影片
Reverse Playlist: 反向播放清單
Shuffle Playlist: 隨機播放清單
Loop Playlist: 循環播放清單
Starting soon, please refresh the page to check again: 即將開始,請重新整理頁面以再次檢查
Starting soon, please refresh the page to check again: 影片即將開始,請重新整理頁面以再次檢查是否有更新
Audio:
Best: 最佳
High:
@ -444,16 +445,16 @@ Video:
Open Channel in Invidious: 在Invidious開啟頻道
Copy YouTube Channel Link: 複製YouTube頻道連結
Open Channel in YouTube: 在YouTube開啟頻道
Started streaming on: 開始在線直播於
Streamed on: 直播
Video has been removed from your saved list: 影片已從您的已儲存列表移除
Started streaming on: '開始直播時間:'
Streamed on: 直播
Video has been removed from your saved list: 影片已從您的播放清單移除
Video has been saved: 影片已儲存
Save Video: 儲存影片
Save Video: 儲存影片至播放清單
Videos:
#& Sort By
Sort By:
Newest: '最新'
Oldest: '最'
Oldest: '最'
#& Most Popular
#& Playlists
Playlist:
@ -462,20 +463,20 @@ Playlist:
Videos: '影片'
View: '觀看'
Views: '觀看'
Last Updated On: '最更新於'
Last Updated On: '最更新於'
Share Playlist:
Share Playlist: '分享播放清單'
Copy YouTube Link: '複製YouTube結'
Copy YouTube Link: '複製YouTube結'
Open in YouTube: '在YouTube中開啟'
Copy Invidious Link: '複製Invidious結'
Copy Invidious Link: '複製Invidious結'
Open in Invidious: '在Invidious中開啟'
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: '切換劇場型態'
Toggle Theatre Mode: '切換為劇院模式'
Change Format:
Change Video Formats: '影片格式'
Change Video Formats: '更影片格式'
Use Dash Formats: '使用Dash格式'
Use Legacy Formats: '使用傳統格式'
Use Audio Formats: '使用音訊格式'
@ -483,8 +484,8 @@ Change Format:
Dash formats are not available for this video: 這個影片沒有Dash格式
Share:
Share Video: '分享影片'
Copy Link: '複製結'
Open Link: '開啟結'
Copy Link: '複製結'
Open Link: '開啟結'
Copy Embed: '複製內嵌'
Open Embed: '開啟內嵌'
# On Click
@ -497,24 +498,24 @@ Share:
Invidious Channel URL copied to clipboard: Invidious頻道URL已複製到剪貼簿
Mini Player: '迷你播放器'
Comments:
Comments: '評論'
Click to View Comments: '點擊觀看評論'
Getting comment replies, please wait: '抓取評論中,請稍候'
Show Comments: '察看評論'
Hide Comments: '隱藏評論'
Comments: '留言'
Click to View Comments: '點擊查看留言'
Getting comment replies, please wait: '獲取留言中,請稍候...'
Show Comments: '查看留言'
Hide Comments: '隱藏留言'
# Context: View 10 Replies, View 1 Reply
View: '觀看'
Hide: '隱藏'
Replies: '回覆'
Reply: '回覆'
There are no comments available for this video: '這個影片沒有評論'
Load More Comments: '加載更多評論'
There are no more comments for this video: 此影片無更多評論
There are no comments available for this video: '這個影片沒有留言'
Load More Comments: '載入更多留言'
There are no more comments for this video: 此影片無更多留言
Newest first: 最新優先
Top comments: 最熱評論
Top comments: 最熱門留言
Sort by: 排序方式
No more comments available: 沒有更多評論
Up Next: 'Up Next'
No more comments available: 沒有更多留言
Up Next: '觀看其他類似影片'
# Toast Messages
Local API Error (Click to copy): '區域API錯誤點擊複製'
@ -523,18 +524,18 @@ 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 enabled: '循環播放現在被啟用'
Shuffle is now disabled: '隨機播放現在被禁用'
Shuffle is now enabled: '隨機播放現在被禁用'
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': '播放清單已結束。 允許循環播放以繼續播放'
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: '否'
Locale Name: 正體中文
Locale Name: 繁體(正體)中文
Profile:
$ is now the active profile: $現在是作用中的設定檔
Your default profile has been changed to your primary profile: 您的預設設定檔已變更為您的主要設定檔
@ -562,7 +563,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.
: 這是您的主設定檔。 您確定您想移除選取的頻道? 相同的頻道中任何找到的設定檔會被移除。
: 這是您的主要設定檔。 您確定要移除選取的頻道? 相同的頻道中任何找到的設定檔會被移除。
No channel(s) have been selected: 無頻道已選取
Add Selected To Profile: 添加選取的到設定檔
Delete Selected: 移除選取的
@ -574,7 +575,7 @@ Profile:
The playlist has been reversed: 播放清單已反轉
A new blog is now available, $. Click to view more: 已有新的部落格文章,$。點擊以檢視更多
Download From Site: 從網站下載
Version $ is now available! Click for more details: 版本$已可使用! 點擊以取得更多資訊
Version $ is now available! Click for more details: 版本更新囉! 最新版本 $ ! 點擊以取得更多資訊
This video is unavailable because of missing formats. This can happen due to country unavailability.: 沒有這個影片因為缺少格式。這個可能發生由於國家不可用。
Tooltips:
Subscription Settings:
@ -582,13 +583,13 @@ Tooltips:
Player Settings:
Default Video Format: 設定要用於影片播放的格式。Dash格式有更高的品質。傳統格式會限制在 720p但頻寬需求更低。音訊格式為僅有音訊的串流
Proxy Videos Through Invidious: 將連線到 Invidious而非直接連線到 YouTube 來提供影片。覆寫 API 偏好
Force Local Backend for Legacy Formats: 僅當 Invidious API是您預設 API 時才有效。啟用後,本地API
Force Local Backend for Legacy Formats: 僅當 Invidious API是您預設 API 時才有效。啟用後,區域 API
將會執行並使用由其回傳的的傳統格式,而非 Invidious 回傳的格式。對因為國家地區限制而無法播放 Invidious回傳的影片時有幫助
General Settings:
Invidious Instance: FreeTube將連線為 API呼叫的Invidious實例。清除目前的實例以檢視可供選擇的公用實例清單
Thumbnail Preference: FreeTube中所有缩略图都會被替換為影片畫面而非預設缩略图
Thumbnail Preference: FreeTube中所有縮圖都會被替換為影片畫面而非預設縮圖
Fallback to Non-Preferred Backend on Failure: 當您的偏好API 有問題時FreeTube將自動嘗試使用您的非偏好API
作為汰退方案
Preferred API Backend: 選擇 FreeTube 要用於取得資料的後端。本地 API 是內建擷取器。Invidious API 需要 Invidious
伺服器才能連線。
Region for Trending: 熱門區域讓您挑選您想要顯示哪個國家的熱門影片。並非所有顯示的國家都被YouTube支援
Preferred API Backend: 選擇 FreeTube 要用於取得YouTube資料的伺服器。本地 API 是內建擷取器。Invidious
API 需要 Invidious 伺服器才能連線。
Region for Trending: 發燒影片區域可以讓您選擇想要顯示哪個國家的發燒影片。 注意:並非所有國家都被YouTube支援