diff --git a/.babelrc b/.babelrc index abf4798b2..bca0e3c2c 100644 --- a/.babelrc +++ b/.babelrc @@ -4,8 +4,8 @@ "@babel/env", { "targets": { - "chrome": "106", - "node": "16.16.0" + "chrome": "122", + "node": "20.9.0" } } ] diff --git a/.eslintrc.js b/.eslintrc.js index 2729411b7..1846e7791 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,8 @@ +const path = require('path') +const { readFileSync } = require('fs') + +const activeLocales = JSON.parse(readFileSync(path.join(__dirname, './static/locales/activeLocales.json'))) + module.exports = { // https://eslint.org/docs/user-guide/configuring#using-configuration-files-1 root: true, @@ -47,11 +52,12 @@ module.exports = { 'plugin:vue/recommended', 'standard', 'plugin:jsonc/recommended-with-json', - 'plugin:vuejs-accessibility/recommended' + 'plugin:vuejs-accessibility/recommended', + 'plugin:@intlify/vue-i18n/recommended' ], // https://eslint.org/docs/user-guide/configuring#configuring-plugins - plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn'], + plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn', '@intlify/vue-i18n'], rules: { 'space-before-function-paren': 'off', @@ -77,6 +83,40 @@ module.exports = { 'unicorn/no-array-push-push': 'error', 'unicorn/prefer-keyboard-event-key': 'error', 'unicorn/prefer-regexp-test': 'error', - 'unicorn/prefer-string-replace-all': 'error' + 'unicorn/prefer-string-replace-all': 'error', + '@intlify/vue-i18n/no-dynamic-keys': 'error', + // TODO: enable at a later date. currently disabled to prevent massive conflicts for initial PR + // '@intlify/vue-i18n/no-unused-keys': [ + // 'error', + // { + // extensions: ['.js', '.vue', 'yaml'] + // } + // ], + '@intlify/vue-i18n/no-duplicate-keys-in-locale': 'error', + '@intlify/vue-i18n/no-raw-text': [ + 'error', + { + attributes: { + '/.+/': [ + 'title', + 'aria-label', + 'aria-placeholder', + 'aria-roledescription', + 'aria-valuetext', + 'tooltip', + 'message' + ], + input: ['placeholder', 'value'], + img: ['alt'] + }, + ignoreText: ['-', '•', '/', 'YouTube', 'Invidious', 'FreeTube'] + } + ], + }, + settings: { + 'vue-i18n': { + localeDir: `./static/locales/{${activeLocales.join(',')}}.yaml`, + messageSyntaxVersion: '^8.0.0' + } } } diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 3ee6b6eaf..aef914ee3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -92,7 +92,7 @@ body: - Portable - .rpm - .zip - - .apk (Android, FreeTubeCordova Unofficial) + - .apk (FreeTubeAndroid Unofficial) - AUR (Unofficial) - Chocolatey (Unofficial) - Homebrew (Unofficial) diff --git a/.github/issue-labeler.yml b/.github/issue-labeler.yml index 1d08f2788..38178571e 100644 --- a/.github/issue-labeler.yml +++ b/.github/issue-labeler.yml @@ -2,7 +2,7 @@ - '(visual bug)' 'B: Unofficial Download': - - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(Android, FreeTubeCordova Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' + - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(FreeTubeAndroid Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' 'B: keyboard control': - '(keyboard control not working)' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 569ded447..3bbef6630 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: build: strategy: matrix: - node-version: [18.x] + node-version: [20.x] runtime: - linux-x64 - linux-armv7l diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 53ea38937..a10f2f3e2 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -18,10 +18,12 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: - uses: actions/checkout@v4 - - name: Use Node.js 18.x + - name: Use Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x cache: "yarn" - run: yarn run ci - run: yarn run lint + # let's verify that webpack is able to package the project + - run: yarn run pack diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 519492e79..87237a364 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: build: strategy: matrix: - node-version: [18.x] + node-version: [20.x] runtime: - linux-x64 - linux-armv7l diff --git a/README.md b/README.md index 3f55240f1..196960948 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ FreeTube is an open source desktop YouTube player built with privacy in mind. Use YouTube without advertisements and prevent Google from tracking you with their cookies and JavaScript. -Available for Windows, Mac & Linux thanks to Electron. +Available for Windows (10 and later), Mac (macOS 10.15 and later) & Linux thanks to Electron.

Download FreeTube

@@ -78,6 +78,10 @@ FreeTube is supported by the [Privacy Redirect](https://github.com/SimonBrazell/ ## Download Links ### Official Downloads + +> [!CAUTION] +> FreeTube is only supported on Windows 10 and later, macOS 10.15 and above, and various Linux distributions. Installing it on unsupported systems may result in unexpected issues. + * [GitHub Releases](https://github.com/FreeTubeApp/FreeTube/releases) * [FreeTube Website](https://freetubeapp.io/#download) @@ -103,7 +107,7 @@ The first build with a green check mark is the latest build. * Chocolatey: [Download](https://chocolatey.org/packages/freetube/) -* FreeTubeCordova (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeCordova/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeCordova) +* FreeTubeAndroid (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeAndroid/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeAndroid) * Homebrew Formulae (Mac only): [Download](https://formulae.brew.sh/cask/freetube) diff --git a/package.json b/package.json index f1ed1c968..052bd7086 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "build-release": "node _scripts/build.js", "build-release:arm64": "node _scripts/build.js arm64", "build-release:arm32": "node _scripts/build.js arm32", - "clean": "rimraf build/ static/dashFiles/ dist/ static/storyboards/", + "clean": "rimraf build/ dist/", "debug": "run-s rebuild:electron debug-runner", "debug-runner": "node _scripts/dev-runner.js --remote-debug", "dev": "run-s rebuild:electron dev-runner", @@ -53,9 +53,9 @@ "ci": "yarn install --silent --frozen-lockfile" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.5.1", - "@fortawesome/free-brands-svg-icons": "^6.5.1", - "@fortawesome/free-solid-svg-icons": "^6.5.1", + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/vue-fontawesome": "^2.0.10", "@seald-io/nedb": "^4.0.4", "@silvermine/videojs-quality-selector": "^1.3.1", @@ -80,16 +80,17 @@ "youtubei.js": "^9.2.0" }, "devDependencies": { - "@babel/core": "^7.24.3", + "@babel/core": "^7.24.4", "@babel/eslint-parser": "^7.24.1", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.24.3", + "@babel/preset-env": "^7.24.4", "@double-great/stylelint-a11y": "^3.0.2", + "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", - "css-loader": "^6.10.0", + "css-loader": "^7.0.0", "css-minimizer-webpack-plugin": "^6.0.0", - "electron": "^29.1.6", + "electron": "^29.2.0", "electron-builder": "^24.13.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", @@ -106,14 +107,14 @@ "html-webpack-plugin": "^5.6.0", "js-yaml": "^4.1.0", "json-minimizer-webpack-plugin": "^5.0.0", - "lefthook": "^1.6.7", + "lefthook": "^1.6.8", "mini-css-extract-plugin": "^2.8.1", "npm-run-all": "^4.1.5", "postcss": "^8.4.38", "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^5.0.5", - "sass": "^1.72.0", + "sass": "^1.74.1", "sass-loader": "^14.1.1", "stylelint": "^16.3.1", "stylelint-config-sass-guidelines": "^11.1.0", diff --git a/src/constants.js b/src/constants.js index b281fb168..322472503 100644 --- a/src/constants.js +++ b/src/constants.js @@ -23,7 +23,10 @@ const IpcChannels = { SYNC_SETTINGS: 'sync-settings', SYNC_HISTORY: 'sync-history', SYNC_PROFILES: 'sync-profiles', - SYNC_PLAYLISTS: 'sync-playlists' + SYNC_PLAYLISTS: 'sync-playlists', + + GET_REPLACE_HTTP_CACHE: 'get-replace-http-cache', + TOGGLE_REPLACE_HTTP_CACHE: 'toggle-replace-http-cache' } const DBActions = { diff --git a/src/main/index.js b/src/main/index.js index 51f8b7d56..aa3b241a3 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -10,6 +10,7 @@ import { IpcChannels, DBActions, SyncEvents } from '../constants' import baseHandlers from '../datastores/handlers/base' import { extractExpiryTimestamp, ImageCache } from './ImageCache' import { existsSync } from 'fs' +import asyncFs from 'fs/promises' import packageDetails from '../../package.json' @@ -177,7 +178,8 @@ function runApp() { // command line switches need to be added before the app ready event first // that means we can't use the normal settings system as that is asynchronous, // doing it synchronously ensures that we add it before the event fires - const replaceHttpCache = existsSync(`${app.getPath('userData')}/experiment-replace-http-cache`) + const REPLACE_HTTP_CACHE_PATH = `${app.getPath('userData')}/experiment-replace-http-cache` + const replaceHttpCache = existsSync(REPLACE_HTTP_CACHE_PATH) if (replaceHttpCache) { // the http cache causes excessive disk usage during video playback // we've got a custom image cache to make up for disabling the http cache @@ -662,7 +664,7 @@ function runApp() { } }) - ipcMain.once('relaunchRequest', () => { + function relaunch() { if (process.env.NODE_ENV === 'development') { app.exit(parseInt(process.env.FREETUBE_RELAUNCH_EXIT_CODE)) return @@ -693,6 +695,10 @@ function runApp() { } app.quit() + } + + ipcMain.once('relaunchRequest', () => { + relaunch() }) nativeTheme.on('updated', () => { @@ -780,6 +786,22 @@ function runApp() { child.unref() }) + ipcMain.handle(IpcChannels.GET_REPLACE_HTTP_CACHE, () => { + return replaceHttpCache + }) + + ipcMain.once(IpcChannels.TOGGLE_REPLACE_HTTP_CACHE, async () => { + if (replaceHttpCache) { + await asyncFs.rm(REPLACE_HTTP_CACHE_PATH) + } else { + // create an empty file + const handle = await asyncFs.open(REPLACE_HTTP_CACHE_PATH, 'w') + await handle.close() + } + + relaunch() + }) + // ************************************************* // // DB related IPC calls // *********** // diff --git a/src/renderer/App.js b/src/renderer/App.js index 2076c162d..a80cebcf1 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -15,6 +15,7 @@ import { marked } from 'marked' import { IpcChannels } from '../constants' import packageDetails from '../../package.json' import { openExternalLink, openInternalPath, showToast } from './helpers/utils' +import { translateWindowTitle } from './helpers/strings' let ipcRenderer = null @@ -77,14 +78,13 @@ export default defineComponent({ return this.$store.getters.getShowCreatePlaylistPrompt }, windowTitle: function () { - const routeTitle = this.$route.meta.title - if (routeTitle !== 'Channel' && routeTitle !== 'Watch' && routeTitle !== 'Hashtag') { - let title = - this.$route.meta.path === '/home' - ? packageDetails.productName - : `${this.$t(this.$route.meta.title)} - ${packageDetails.productName}` + const routePath = this.$route.path + if (!routePath.startsWith('/channel/') && !routePath.startsWith('/watch/') && !routePath.startsWith('/hashtag/')) { + let title = translateWindowTitle(this.$route.meta.title, this.$i18n) if (!title) { title = packageDetails.productName + } else { + title = `${title} - ${packageDetails.productName}` } return title } else { @@ -477,12 +477,7 @@ export default defineComponent({ default: { // Unknown URL type - let message = 'Unknown YouTube url type, cannot be opened in app' - if (this.$te(message) && this.$t(message) !== '') { - message = this.$t(message) - } - - showToast(message) + showToast(this.$t('Unknown YouTube url type, cannot be opened in app')) } } }) diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index d7f2605f7..b0790d550 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -524,7 +524,7 @@ export default defineComponent({ ] } - await this.promptAndWriteToFile(options, subscriptionsDb, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, subscriptionsDb, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportYouTubeSubscriptions: async function () { @@ -577,7 +577,7 @@ export default defineComponent({ return object }) - await this.promptAndWriteToFile(options, JSON.stringify(subscriptionsObject), 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify(subscriptionsObject), this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportOpmlYouTubeSubscriptions: async function () { @@ -605,7 +605,7 @@ export default defineComponent({ opmlData += '' - await this.promptAndWriteToFile(options, opmlData, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, opmlData, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportCsvYouTubeSubscriptions: async function () { @@ -632,7 +632,7 @@ export default defineComponent({ }) exportText += '\n' - await this.promptAndWriteToFile(options, exportText, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, exportText, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportNewPipeSubscriptions: async function () { @@ -666,7 +666,7 @@ export default defineComponent({ newPipeObject.subscriptions.push(subscription) }) - await this.promptAndWriteToFile(options, JSON.stringify(newPipeObject), 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify(newPipeObject), this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, importHistory: async function () { @@ -860,7 +860,7 @@ export default defineComponent({ ] } - await this.promptAndWriteToFile(options, historyDb, 'All watched history has been successfully exported') + await this.promptAndWriteToFile(options, historyDb, this.$t('Settings.Data Settings.All watched history has been successfully exported')) }, importPlaylists: async function () { @@ -1039,7 +1039,7 @@ export default defineComponent({ return JSON.stringify(playlist) }).join('\n') + '\n'// a trailing line is expected - await this.promptAndWriteToFile(options, playlistsDb, 'All playlists has been successfully exported') + await this.promptAndWriteToFile(options, playlistsDb, this.$t('Settings.Data Settings.All playlists has been successfully exported')) }, exportPlaylistsForOlderVersionsSometimes: function () { @@ -1088,7 +1088,7 @@ export default defineComponent({ }) }) - await this.promptAndWriteToFile(options, JSON.stringify([favoritesPlaylistData]), 'All playlists has been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify([favoritesPlaylistData]), this.$t('Settings.Data Settings.All playlists has been successfully exported')) }, convertOldFreeTubeFormatToNew(oldData) { @@ -1098,7 +1098,7 @@ export default defineComponent({ for (const profile of channel.profile) { let index = convertedData.findIndex(p => p.name === profile.value) if (index === -1) { // profile doesn't exist yet - const randomBgColor = getRandomColor() + const randomBgColor = getRandomColor().value const contrastyTextColor = calculateColorLuminance(randomBgColor) convertedData.push({ name: profile.value, @@ -1122,7 +1122,7 @@ export default defineComponent({ return convertedData }, - promptAndWriteToFile: async function (saveOptions, content, successMessageKeySuffix) { + promptAndWriteToFile: async function (saveOptions, content, successMessage) { const response = await showSaveDialog(saveOptions) if (response.canceled || response.filePath === '') { // User canceled the save dialog @@ -1137,7 +1137,7 @@ export default defineComponent({ return } - showToast(this.$t(`Settings.Data Settings.${successMessageKeySuffix}`)) + showToast(successMessage) }, getChannelInfoInvidious: function (channelId) { @@ -1186,7 +1186,7 @@ export default defineComponent({ }) if (this.backendFallback && this.backendPreference === 'local') { - showToast(this.$t('Falling back to the Invidious API')) + showToast(this.$t('Falling back to Invidious API')) return await this.getChannelInfoInvidious(channelId) } else { return [] diff --git a/src/renderer/components/experimental-settings/experimental-settings.js b/src/renderer/components/experimental-settings/experimental-settings.js index b4d5e8923..1c313c866 100644 --- a/src/renderer/components/experimental-settings/experimental-settings.js +++ b/src/renderer/components/experimental-settings/experimental-settings.js @@ -1,11 +1,9 @@ -import fs from 'fs/promises' import { defineComponent } from 'vue' import FtSettingsSection from '../ft-settings-section/ft-settings-section.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' -import { pathExists } from '../../helpers/filesystem' -import { getUserDataPath } from '../../helpers/utils' +import { IpcChannels } from '../../../constants' export default defineComponent({ name: 'ExperimentalSettings', @@ -19,19 +17,16 @@ export default defineComponent({ return { replaceHttpCacheLoading: true, replaceHttpCache: false, - replaceHttpCachePath: '', showRestartPrompt: false } }, - mounted: function () { - getUserDataPath().then((userData) => { - this.replaceHttpCachePath = `${userData}/experiment-replace-http-cache` + mounted: async function () { + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + this.replaceHttpCache = await ipcRenderer.invoke(IpcChannels.GET_REPLACE_HTTP_CACHE) + } - pathExists(this.replaceHttpCachePath).then((exists) => { - this.replaceHttpCache = exists - this.replaceHttpCacheLoading = false - }) - }) + this.replaceHttpCacheLoading = false }, methods: { handleRestartPrompt: function (value) { @@ -39,7 +34,7 @@ export default defineComponent({ this.showRestartPrompt = true }, - handleReplaceHttpCache: async function (value) { + handleReplaceHttpCache: function (value) { this.showRestartPrompt = false if (value === null || value === 'no') { @@ -47,16 +42,10 @@ export default defineComponent({ return } - if (this.replaceHttpCache) { - // create an empty file - const handle = await fs.open(this.replaceHttpCachePath, 'w') - await handle.close() - } else { - await fs.rm(this.replaceHttpCachePath) + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + ipcRenderer.send(IpcChannels.TOGGLE_REPLACE_HTTP_CACHE) } - - const { ipcRenderer } = require('electron') - ipcRenderer.send('relaunchRequest') } } }) diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index d6662a9f1..d9e30a2b5 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -21,9 +21,15 @@ export default defineComponent({ computed: { externalPlayerNames: function () { const fallbackNames = this.$store.getters.getExternalPlayerNames - const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys + const translations = [{ + name: 'None', + translatedValue: this.$t('Settings.External Player Settings.Players.None.Name') + }] - return nameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) + return fallbackNames.map((name) => { + const translation = translations.find(e => e.name === name) + return translation ? translation.translatedValue : name + }) }, externalPlayerValues: function () { return this.$store.getters.getExternalPlayerValues diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.js b/src/renderer/components/ft-age-restricted/ft-age-restricted.js index c9cd917bc..112d963f7 100644 --- a/src/renderer/components/ft-age-restricted/ft-age-restricted.js +++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.js @@ -23,7 +23,7 @@ export default defineComponent({ return this.$t('Age Restricted.This channel is age restricted') } - return this.$t('Age Restricted.This video is age restricted:') + return this.$t('Age Restricted.This video is age restricted') } } }) diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.scss b/src/renderer/components/ft-list-channel/ft-list-channel.scss index 9ceb65342..4fa0fe962 100644 --- a/src/renderer/components/ft-list-channel/ft-list-channel.scss +++ b/src/renderer/components/ft-list-channel/ft-list-channel.scss @@ -1,5 +1,44 @@ @use '../../scss-partials/_ft-list-item'; +.ft-list-channel { + &.grid { + align-items: center; + text-align: center; + + .infoAndSubscribe { + flex-flow: column wrap; + align-items: center; + + .info { + margin-block-end: 12px; + + .infoLine { + text-align: center; + } + } + } + } + + &.list { + .infoAndSubscribe { + flex-flow: row wrap; + justify-content: center; + + .channelSubscribeButton { + margin-block: auto; + margin-inline: 7px; + } + } + } +} + +.infoAndSubscribe { + display: flex; + flex-flow: row wrap; + justify-content: center; + inline-size: 100%; +} + .handle { color: inherit; text-decoration: none; diff --git a/src/renderer/components/ft-list-video/ft-list-video.vue b/src/renderer/components/ft-list-video/ft-list-video.vue index 391ff3c1f..868f90e0c 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.vue +++ b/src/renderer/components/ft-list-video/ft-list-video.vue @@ -58,7 +58,7 @@ -

diff --git a/src/renderer/components/ft-slider/ft-slider.vue b/src/renderer/components/ft-slider/ft-slider.vue index c163f54b3..8b69539bb 100644 --- a/src/renderer/components/ft-slider/ft-slider.vue +++ b/src/renderer/components/ft-slider/ft-slider.vue @@ -13,10 +13,7 @@ @change="$emit('change', currentValue)" > - {{ label }}: - - {{ displayLabel }} - + {{ $t('Display Label', {label: label, value: displayLabel}) }} diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js index 9828be76e..479752c14 100644 --- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js +++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js @@ -1,6 +1,6 @@ import { defineComponent } from 'vue' import { mapActions } from 'vuex' -import { colors } from '../../helpers/colors' +import { colors, getColorTranslations } from '../../helpers/colors' import FtSelect from '../ft-select/ft-select.vue' import { sanitizeForHtmlId } from '../../helpers/accessibility' @@ -31,11 +31,7 @@ export default defineComponent({ }, colorNames: function () { - return this.colorValues.map(colorVal => { - // add spaces before capital letters - const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim() - return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`) - }) + return getColorTranslations() }, sponsorBlockValues: function() { @@ -80,6 +76,29 @@ export default defineComponent({ this.$t('Settings.SponsorBlock Settings.Skip Options.Show In Seek Bar'), this.$t('Settings.SponsorBlock Settings.Skip Options.Do Nothing') ] + }, + + translatedCategoryName: function() { + switch (this.categoryName.toLowerCase()) { + case 'sponsor': + return this.$t('Video.Sponsor Block category.sponsor') + case 'self-promotion': + return this.$t('Video.Sponsor Block category.self-promotion') + case 'interaction': + return this.$t('Video.Sponsor Block category.interaction') + case 'intro': + return this.$t('Video.Sponsor Block category.intro') + case 'outro': + return this.$t('Video.Sponsor Block category.outro') + case 'recap': + return this.$t('Video.Sponsor Block category.recap') + case 'music offtopic': + return this.$t('Video.Sponsor Block category.music offtopic') + case 'filler': + return this.$t('Video.Sponsor Block category.filler') + default: + return '' + } } }, diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue index 7ec5479c5..c87b79ef6 100644 --- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue +++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue @@ -4,7 +4,7 @@ :id="sanitizedId" class="sponsorTitle" > - {{ $t("Video.Sponsor Block category." + categoryName) }} + {{ translatedCategoryName }}
- {{ isProfileSubscribed(profile) ? '✓' : profileInitials[index] }} + {{ isProfileSubscribed(profile) ? $t('checkmark') : profileInitials[index] }}

{ copyToClipboard(err) diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js index 472981c7d..479cfcd52 100644 --- a/src/renderer/components/general-settings/general-settings.js +++ b/src/renderer/components/general-settings/general-settings.js @@ -8,6 +8,7 @@ import FtInstanceSelector from '../ft-instance-selector/ft-instance-selector.vue import debounce from 'lodash.debounce' import allLocales from '../../../../static/locales/activeLocales.json' import { showToast } from '../../helpers/utils' +import { translateWindowTitle } from '../../helpers/strings' export default defineComponent({ name: 'GeneralSettings', @@ -94,7 +95,7 @@ export default defineComponent({ return this.$router.getRoutes().filter((route) => includedPageNames.includes(route.name)) }, defaultPageNames: function () { - return this.defaultPages.map((route) => this.$t(route.meta.title)) + return this.defaultPages.map((route) => translateWindowTitle(route.meta.title, this.$i18n)) }, defaultPageValues: function () { // avoid Vue parsing issues by excluding '/' from path values diff --git a/src/renderer/components/player-settings/player-settings.js b/src/renderer/components/player-settings/player-settings.js index 61d9a61ea..077138d26 100644 --- a/src/renderer/components/player-settings/player-settings.js +++ b/src/renderer/components/player-settings/player-settings.js @@ -287,7 +287,7 @@ export default defineComponent({ this.screenshotFilenameExample = `${res}.${this.screenshotFormat}` return true }).catch(err => { - this.screenshotFilenameExample = `❗ ${this.$t(`Settings.Player Settings.Screenshot.Error.${err.message}`)}` + this.screenshotFilenameExample = `❗ ${err.message}` return false }) }, diff --git a/src/renderer/components/privacy-settings/privacy-settings.js b/src/renderer/components/privacy-settings/privacy-settings.js index 8658a42d9..94ec93d8f 100644 --- a/src/renderer/components/privacy-settings/privacy-settings.js +++ b/src/renderer/components/privacy-settings/privacy-settings.js @@ -39,9 +39,6 @@ export default defineComponent({ saveVideoHistoryWithLastViewedPlaylist: function () { return this.$store.getters.getSaveVideoHistoryWithLastViewedPlaylist }, - removeVideoMetaFiles: function () { - return this.$store.getters.getRemoveVideoMetaFiles - }, profileList: function () { return this.$store.getters.getProfileList @@ -74,13 +71,6 @@ export default defineComponent({ this.updateRememberHistory(value) }, - handleVideoMetaFiles: function (value) { - if (!value) { - this.updateRemoveVideoMetaFiles(false) - } - this.updateRemoveVideoMetaFiles(value) - }, - handleRemoveHistory: function (option) { this.showRemoveHistoryPrompt = false @@ -126,7 +116,6 @@ export default defineComponent({ ...mapActions([ 'updateRememberHistory', - 'updateRemoveVideoMetaFiles', 'removeAllHistory', 'updateSaveWatchedProgress', 'updateSaveVideoHistoryWithLastViewedPlaylist', diff --git a/src/renderer/components/privacy-settings/privacy-settings.vue b/src/renderer/components/privacy-settings/privacy-settings.vue index 43ca939ad..53f944777 100644 --- a/src/renderer/components/privacy-settings/privacy-settings.vue +++ b/src/renderer/components/privacy-settings/privacy-settings.vue @@ -29,15 +29,6 @@ @change="updateSaveVideoHistoryWithLastViewedPlaylist" /> -

- -

diff --git a/src/renderer/components/proxy-settings/proxy-settings.vue b/src/renderer/components/proxy-settings/proxy-settings.vue index 1e9580c27..b502dee0c 100644 --- a/src/renderer/components/proxy-settings/proxy-settings.vue +++ b/src/renderer/components/proxy-settings/proxy-settings.vue @@ -61,16 +61,16 @@ {{ $t('Settings.Proxy Settings.Your Info') }}

- {{ $t('Settings.Proxy Settings.Ip') }}: {{ proxyIp }} + {{ $t('Display Label', { label: $t('Settings.Proxy Settings.Ip'), value: proxyIp }) }}

- {{ $t('Settings.Proxy Settings.Country') }}: {{ proxyCountry }} + {{ $t('Display Label', { label: $t('Settings.Proxy Settings.Country'), value: proxyCountry }) }}

- {{ $t('Settings.Proxy Settings.Region') }}: {{ proxyRegion }} + {{ $t('Display Label', { label: $t('Settings.Proxy Settings.Region'), value: proxyRegion }) }}

- {{ $t('Settings.Proxy Settings.City') }}: {{ proxyCity }} + {{ $t('Display Label', { label: $t('Settings.Proxy Settings.City'), value: proxyCity }) }}

diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js index dce362993..d53bf2f92 100644 --- a/src/renderer/components/theme-settings/theme-settings.js +++ b/src/renderer/components/theme-settings/theme-settings.js @@ -6,7 +6,7 @@ import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue' import FtSlider from '../ft-slider/ft-slider.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' -import { colors } from '../../helpers/colors' +import { colors, getColorTranslations } from '../../helpers/colors' export default defineComponent({ name: 'ThemeSettings', @@ -114,11 +114,7 @@ export default defineComponent({ }, colorNames: function () { - return this.colorValues.map(colorVal => { - // add spaces before capital letters - const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim() - return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`) - }) + return getColorTranslations() }, areColorThemesEnabled: function() { diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js index 1ad23dd3b..f171eb002 100644 --- a/src/renderer/components/top-nav/top-nav.js +++ b/src/renderer/components/top-nav/top-nav.js @@ -7,6 +7,7 @@ import debounce from 'lodash.debounce' import { IpcChannels } from '../../../constants' import { openInternalPath } from '../../helpers/utils' +import { translateWindowTitle } from '../../helpers/strings' import { clearLocalSearchSuggestionsSession, getLocalSearchSuggestions } from '../../helpers/api/local' import { invidiousAPICall } from '../../helpers/api/invidious' @@ -47,9 +48,10 @@ export default defineComponent({ headerLogoTitle: function () { return this.$t('Go to page', { - page: this.$t(this.$router.getRoutes() + page: translateWindowTitle(this.$router.getRoutes() .find((route) => route.path === '/' + this.landingPage) - .meta.title + .meta.title, + this.$i18n ) }) }, diff --git a/src/renderer/components/watch-video-info/watch-video-info.vue b/src/renderer/components/watch-video-info/watch-video-info.vue index 680adcd21..f5d36af02 100644 --- a/src/renderer/components/watch-video-info/watch-video-info.vue +++ b/src/renderer/components/watch-video-info/watch-video-info.vue @@ -90,7 +90,7 @@ { - return { name: entry.name, nameTranslationKey: entry.nameTranslationKey, value: entry.value, cmdArguments: entry.cmdArguments } + return { name: entry.name, value: entry.value, cmdArguments: entry.cmdArguments } }) // Sort external players alphabetically & case-insensitive, keep default entry at the top const playerNone = externalPlayerMap.shift() @@ -611,7 +606,6 @@ const actions = { externalPlayerMap.unshift(playerNone) const externalPlayerNames = externalPlayerMap.map((entry) => { return entry.name }) - const externalPlayerNameTranslationKeys = externalPlayerMap.map((entry) => { return entry.nameTranslationKey }) const externalPlayerValues = externalPlayerMap.map((entry) => { return entry.value }) const externalPlayerCmdArguments = externalPlayerMap.reduce((result, item) => { result[item.value] = item.cmdArguments @@ -619,7 +613,6 @@ const actions = { }, {}) commit('setExternalPlayerNames', externalPlayerNames) - commit('setExternalPlayerNameTranslationKeys', externalPlayerNameTranslationKeys) commit('setExternalPlayerValues', externalPlayerValues) commit('setExternalPlayerCmdArguments', externalPlayerCmdArguments) }, @@ -667,7 +660,7 @@ const actions = { args.push(cmdArgs.startOffset, Math.trunc(payload.watchProgress)) } } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'starting video at offset') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.starting video at offset')) } } @@ -675,7 +668,7 @@ const actions = { if (typeof cmdArgs.playbackRate === 'string') { args.push(`${cmdArgs.playbackRate}${payload.playbackRate}`) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'setting a playback rate') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.setting a playback rate')) } } @@ -685,7 +678,7 @@ const actions = { if (typeof cmdArgs.playlistIndex === 'string') { args.push(`${cmdArgs.playlistIndex}${payload.playlistIndex}`) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'opening specific video in a playlist (falling back to opening the video)') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.opening specific video in a playlist (falling back to opening the video)')) } } @@ -693,7 +686,7 @@ const actions = { if (typeof cmdArgs.playlistReverse === 'string') { args.push(cmdArgs.playlistReverse) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'reversing playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.reversing playlists')) } } @@ -701,7 +694,7 @@ const actions = { if (typeof cmdArgs.playlistShuffle === 'string') { args.push(cmdArgs.playlistShuffle) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'shuffling playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.shuffling playlists')) } } @@ -709,7 +702,7 @@ const actions = { if (typeof cmdArgs.playlistLoop === 'string') { args.push(cmdArgs.playlistLoop) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'looping playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.looping playlists')) } } @@ -721,7 +714,7 @@ const actions = { } } else { if (payload.playlistId != null && payload.playlistId !== '' && !ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'opening playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.opening playlists')) } if (payload.videoId != null) { args.push(`${cmdArgs.videoUrl}https://www.youtube.com/watch?v=${payload.videoId}`) @@ -874,10 +867,6 @@ const mutations = { state.externalPlayerNames = value }, - setExternalPlayerNameTranslationKeys (state, value) { - state.externalPlayerNameTranslationKeys = value - }, - setExternalPlayerValues (state, value) { state.externalPlayerValues = value }, diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 6cd7be5aa..be88222c2 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -906,7 +906,16 @@ export default defineComponent({ return } - this.latestLive = parseLocalChannelVideos(liveTab.videos, this.id, this.channelName) + // work around YouTube bug where it will return a bunch of responses with only continuations in them + // e.g. https://www.youtube.com/@TWLIVES/streams + + let videos = liveTab.videos + while (videos.length === 0 && liveTab.has_continuation) { + liveTab = await liveTab.getContinuation() + videos = liveTab.videos + } + + this.latestLive = parseLocalChannelVideos(videos, this.id, this.channelName) this.liveContinuationData = liveTab.has_continuation ? liveTab : null this.isElementListLoading = false @@ -1920,6 +1929,7 @@ export default defineComponent({ } invidiousAPICall(payload).then((response) => { + setPublishedTimestampsInvidious(response.filter(item => item.type === 'video')) if (this.hideChannelPlaylists) { this.searchResults = this.searchResults.concat(response.filter(item => item.type !== 'playlist')) } else { diff --git a/src/renderer/views/History/History.js b/src/renderer/views/History/History.js index ffa871ea2..0a494d7c5 100644 --- a/src/renderer/views/History/History.js +++ b/src/renderer/views/History/History.js @@ -93,11 +93,13 @@ export default defineComponent({ } else { const lowerCaseQuery = this.query.toLowerCase() const filteredQuery = this.historyCacheSorted.filter((video) => { - if (typeof (video.title) !== 'string' || typeof (video.author) !== 'string') { - return false - } else { - return video.title.toLowerCase().includes(lowerCaseQuery) || video.author.toLowerCase().includes(lowerCaseQuery) + if (typeof (video.title) === 'string' && video.title.toLowerCase().includes(lowerCaseQuery)) { + return true + } else if (typeof (video.author) === 'string' && video.author.toLowerCase().includes(lowerCaseQuery)) { + return true } + + return false }).sort((a, b) => { return b.timeWatched - a.timeWatched }) diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 5ac5bcac9..1d00eb297 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -145,7 +145,13 @@ export default defineComponent({ if (this.processedVideoSearchQuery === '') { return this.playlistItems } return this.playlistItems.filter((v) => { - return v.title.toLowerCase().includes(this.processedVideoSearchQuery) + if (typeof (v.title) === 'string' && v.title.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } else if (typeof (v.author) === 'string' && v.author.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } + + return false }) }, visiblePlaylistItems: function () { diff --git a/src/renderer/views/ProfileSettings/ProfileSettings.js b/src/renderer/views/ProfileSettings/ProfileSettings.js index 561f31918..6650d93f6 100644 --- a/src/renderer/views/ProfileSettings/ProfileSettings.js +++ b/src/renderer/views/ProfileSettings/ProfileSettings.js @@ -52,7 +52,7 @@ export default defineComponent({ methods: { openSettingsForNewProfile: function () { this.isNewProfileOpen = true - const bgColor = getRandomColor() + const bgColor = getRandomColor().value const textColor = calculateColorLuminance(bgColor) this.openSettingsProfile = { name: '', diff --git a/src/renderer/views/UserPlaylists/UserPlaylists.js b/src/renderer/views/UserPlaylists/UserPlaylists.js index e4d7f3f28..1be2a9bdc 100644 --- a/src/renderer/views/UserPlaylists/UserPlaylists.js +++ b/src/renderer/views/UserPlaylists/UserPlaylists.js @@ -223,7 +223,7 @@ export default defineComponent({ if (typeof (playlist.playlistName) !== 'string') { return false } if (this.doSearchPlaylistsWithMatchingVideos) { - if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.lowerCaseQuery))) { + if (playlist.videos.some((v) => v.author.toLowerCase().includes(this.lowerCaseQuery) || v.title.toLowerCase().includes(this.lowerCaseQuery))) { return true } } diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index ac8986724..cbb7eccfa 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -1,6 +1,5 @@ import { defineComponent } from 'vue' import { mapActions } from 'vuex' -import fs from 'fs/promises' import FtLoader from '../../components/ft-loader/ft-loader.vue' import FtVideoPlayer from '../../components/ft-video-player/ft-video-player.vue' import WatchVideoInfo from '../../components/watch-video-info/watch-video-info.vue' @@ -12,14 +11,12 @@ import WatchVideoPlaylist from '../../components/watch-video-playlist/watch-vide import WatchVideoRecommendations from '../../components/watch-video-recommendations/watch-video-recommendations.vue' import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue' import packageDetails from '../../../../package.json' -import { pathExists } from '../../helpers/filesystem' import { buildVTTFileLocally, copyToClipboard, formatDurationAsTimestamp, formatNumber, getFormatsFromHLSManifest, - getUserDataPath, showToast } from '../../helpers/utils' import { @@ -141,9 +138,6 @@ export default defineComponent({ rememberHistory: function () { return this.$store.getters.getRememberHistory }, - removeVideoMetaFiles: function () { - return this.$store.getters.getRemoveVideoMetaFiles - }, saveWatchedProgress: function () { return this.$store.getters.getSaveWatchedProgress }, @@ -707,7 +701,7 @@ export default defineComponent({ } if (result.storyboards?.type === 'PlayerStoryboardSpec') { - await this.createLocalStoryboardUrls(result.storyboards.boards.at(-1)) + this.createLocalStoryboardUrls(result.storyboards.boards.at(-1)) } } @@ -1404,9 +1398,7 @@ export default defineComponent({ this.playNextCountDownIntervalId = setInterval(showCountDownMessage, 1000) }, - handleRouteChange: async function (videoId) { - // if the user navigates to another video, the ipc call for the userdata path - // takes long enough for the video id to have already changed to the new one + handleRouteChange: function (videoId) { // receiving it as an arg instead of accessing it ourselves means we always have the right one clearTimeout(this.playNextTimeout) @@ -1437,21 +1429,9 @@ export default defineComponent({ } } - if (process.env.IS_ELECTRON && this.removeVideoMetaFiles) { - if (process.env.NODE_ENV === 'development') { - const vttFileLocation = `static/storyboards/${videoId}.vtt` - // only delete the file it actually exists - if (await pathExists(vttFileLocation)) { - await fs.rm(vttFileLocation) - } - } else { - const userData = await getUserDataPath() - const vttFileLocation = `${userData}/storyboards/${videoId}.vtt` - - if (await pathExists(vttFileLocation)) { - await fs.rm(vttFileLocation) - } - } + if (this.videoStoryboardSrc.startsWith('blob:')) { + URL.revokeObjectURL(this.videoStoryboardSrc) + this.videoStoryboardSrc = '' } }, @@ -1616,36 +1596,14 @@ export default defineComponent({ }) }, - createLocalStoryboardUrls: async function (storyboardInfo) { + createLocalStoryboardUrls: function (storyboardInfo) { const results = buildVTTFileLocally(storyboardInfo, this.videoLengthSeconds) - const userData = await getUserDataPath() - let fileLocation - let uriSchema - // Dev mode doesn't have access to the file:// schema, so we access - // storyboards differently when run in dev - if (process.env.NODE_ENV === 'development') { - fileLocation = `static/storyboards/${this.videoId}.vtt` - uriSchema = `storyboards/${this.videoId}.vtt` - // if the location does not exist, writeFile will not create the directory, so we have to do that manually - if (!(await pathExists('static/storyboards/'))) { - fs.mkdir('static/storyboards/') - } else if (await pathExists(fileLocation)) { - await fs.rm(fileLocation) - } + // after the player migration, switch to using a data URI, as those don't need to be revoked - await fs.writeFile(fileLocation, results) - } else { - if (!(await pathExists(`${userData}/storyboards/`))) { - await fs.mkdir(`${userData}/storyboards/`) - } - fileLocation = `${userData}/storyboards/${this.videoId}.vtt` - uriSchema = `file://${fileLocation}` + const blob = new Blob([results], { type: 'text/vtt;charset=UTF-8' }) - await fs.writeFile(fileLocation, results) - } - - this.videoStoryboardSrc = uriSchema + this.videoStoryboardSrc = URL.createObjectURL(blob) }, tryAddingTranslatedLocaleCaption: function (captionTracks, locale, baseUrl) { diff --git a/static/external-player-map.json b/static/external-player-map.json index 2df522a82..81a976ece 100644 --- a/static/external-player-map.json +++ b/static/external-player-map.json @@ -1,13 +1,11 @@ [ { "name": "None", - "nameTranslationKey": "Settings.External Player Settings.Players.None.Name", "value": "", "cmdArguments": null }, { "name": "mpv", - "nameTranslationKey": "Settings.External Player Settings.Players.mpv.Name", "value": "mpv", "cmdArguments": { "defaultExecutable": "mpv", @@ -25,7 +23,6 @@ }, { "name": "VLC", - "nameTranslationKey": "Settings.External Player Settings.Players.VLC.Name", "value": "vlc", "cmdArguments": { "defaultExecutable": "vlc", @@ -43,7 +40,6 @@ }, { "name": "iina", - "nameTranslationKey": "Settings.External Player Settings.Players.iina.Name", "value": "iina", "cmdArguments": { "defaultExecutable": "iina", @@ -61,7 +57,6 @@ }, { "name": "SMPlayer", - "nameTranslationKey": "Settings.External Player Settings.Players.SMPlayer.Name", "value": "smplayer", "cmdArguments": { "defaultExecutable": "smplayer", @@ -79,7 +74,6 @@ }, { "name": "MPC-BE", - "nameTranslationKey": "Settings.External Player Settings.Players.MPC-BE.Name", "value": "mpc-be", "cmdArguments": { "defaultExecutable": "mpc-be64", @@ -97,7 +91,6 @@ }, { "name": "MPC-HC", - "nameTranslationKey": "Settings.External Player Settings.Players.MPC-HC.Name", "value": "mpc-hc", "cmdArguments": { "defaultExecutable": "mpc-hc64", @@ -115,7 +108,6 @@ }, { "name": "PotPlayer", - "nameTranslationKey": "Settings.External Player Settings.Players.PotPlayer.Name", "value": "potplayer", "cmdArguments": { "defaultExecutable": "potplayermini64", @@ -133,7 +125,6 @@ }, { "name": "Clapper", - "nameTranslationKey": "Settings.External Player Settings.Players.Clapper.Name", "value": "clapper", "cmdArguments": { "defaultExecutable": "clapper", @@ -151,7 +142,6 @@ }, { "name": "Celluloid", - "nameTranslationKey": "Settings.External Player Settings.Players.Celluloid.Name", "value": "celluloid", "cmdArguments": { "defaultExecutable": "celluloid", @@ -169,7 +159,6 @@ }, { "name": "Haruna", - "nameTranslationKey": "Settings.External Player Settings.Players.Haruna.Name", "value": "haruna", "cmdArguments": { "defaultExecutable": "haruna", diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index ba3d2397a..182f781fd 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'العربية' -FreeTube: 'فري تيوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- هذا الجزء من التطبيق ليس جاهزاً بعد. عُد لاحقاً عندما يتم إحراز تقدم. @@ -399,7 +398,6 @@ Settings: أنت متأكد أنك تريد إزالة جميع الاشتراكات والملفات الشخصية؟ لا يمكن التراجع عن هذا. Remove All Subscriptions / Profiles: إزالة جميع الاشتراكات \ الملفات الشخصية - Automatically Remove Video Meta Files: إزالة ملفات تعريف الفيديو تلقائيًا Save Watched Videos With Last Viewed Playlist: حفظ مقاطع الفيديو التي تمت مشاهدتها مع آخر قائمة تشغيل تم عرضها All playlists have been removed: تمت إزالة جميع قوائم التشغيل @@ -1068,9 +1066,6 @@ Tooltips: Allow DASH AV1 formats: قد تبدو تنسيقات DASH AV1 أفضل من تنسيقات DASH H.264. تتطلب تنسيقات DASH AV1 مزيدا من الطاقة للتشغيل! وهي غير متوفرة في جميع مقاطع الفيديو ، وفي هذه الحالات سيستخدم المشغل تنسيقات DASH H.264 بدلا من ذلك. - Privacy Settings: - Remove Video Meta Files: عندما يمكن، يحذف Freetube تلقائيًا ملفات التعريف التي - تم إنشاؤها أثناء تشغيل الفيديو ، عندما تكون صفحة المشاهدة مغلقة. Subscription Settings: Fetch Feeds from RSS: عند تفعيلها، سوف يستخدم فريتيوب طريقة RSS بدلًا من طريقته المعتادة لجلب صفحة اشتراكاتك. طريقة RSS أسرع وتتخطى حجب الآي بي IP، لكنها لا @@ -1175,3 +1170,5 @@ Age Restricted: This channel is age restricted: هذه القناة مقيدة بالعمر This video is age restricted: هذا الفيديو مقيد بالفئة العمرية Close Banner: إغلاق الشعار +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/as.yaml b/static/locales/as.yaml index 41018236f..c0d721131 100644 --- a/static/locales/as.yaml +++ b/static/locales/as.yaml @@ -1,4 +1,3 @@ -FreeTube: 'ফ্ৰীটিউব' # Currently on Subscriptions, Playlists, and History File: 'ফাইল' Quit: 'অন্ত কৰক' diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 847311372..8eb66ff62 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Беларуская' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Гэтая частка праграмы яшчэ не гатова. Прыходзьце пазней. @@ -307,7 +306,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -802,8 +800,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 8b37e929d..c05dc3b1b 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Български' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Тази част от приложението все още не е готова. Върнете се по-късно, когато може @@ -415,7 +414,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Сигурни ли сте, че искате да премахнете всички абонаменти и профили? Това не може да бъде възстановено.' - Automatically Remove Video Meta Files: Автоматично премахване на видео метафайловете Save Watched Videos With Last Viewed Playlist: Запазване на гледани видеа с последно гледан плейлист Remove All Playlists: Премахване на всички плейлисти @@ -1099,10 +1097,6 @@ Tooltips: External Link Handling: "Избор на поведението по подразбиране, когато щракнете върху връзка, която не може да бъде отворена във FreeTube.\nПо подразбиране FreeTube ще отвори връзката в браузъра по подразбиране.\n" - Privacy Settings: - Remove Video Meta Files: Когато страницата за гледане бъде затворена, FreeTube - автоматично ще изтрива метафайловете, създадени по време на възпроизвеждане - на видеото. External Player Settings: Custom External Player Arguments: Всички персонализирани аргументи от командния ред, разделени с точка и запетая (";"), които искате да бъдат предадени на външния diff --git a/static/locales/bn.yaml b/static/locales/bn.yaml index 82cb20bef..26612f6b1 100644 --- a/static/locales/bn.yaml +++ b/static/locales/bn.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'বাংলা' -FreeTube: 'ফ্রিটিউব' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- অ্যাপের এই অংশটি এখনও প্রস্তুত নয়। পরে ফিরে এসো যখন অগ্রগতি হয়েছে। diff --git a/static/locales/bs.yaml b/static/locales/bs.yaml index 5104e2b0c..f9d3f065e 100644 --- a/static/locales/bs.yaml +++ b/static/locales/bs.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Bosanski' -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.': >- Ovaj dio aplikacije još nije spreman. Vratite se kasnije kad se postigne napredak. diff --git a/static/locales/ca.yaml b/static/locales/ca.yaml index 6d0627144..4b1c91366 100644 --- a/static/locales/ca.yaml +++ b/static/locales/ca.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'català' -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.': >- Aquesta secció de l'aplicació encara no està llesta. Torna més endavant quan s'hagin @@ -266,8 +265,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Esteu segur que voleu esborrar totes les subscripcions i perfils? Aquesta acció no es pot desfer.' - Automatically Remove Video Meta Files: Suprimeix automàticament les metadades - dels vídeos Subscription Settings: Subscription Settings: 'Configuració de les subscripcions' Hide Videos on Watch: 'Oculta els vídeos visualitzats' diff --git a/static/locales/ckb.yaml b/static/locales/ckb.yaml index 10df3f5a8..a3a269e5b 100644 --- a/static/locales/ckb.yaml +++ b/static/locales/ckb.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ئیگلیزی (وڵاتە یەکگرتووەکانی ئەمریکا)' -FreeTube: 'فریتیوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- بەشێک لە نەرمەواڵەکە هێشتا ئامادە نییە. کە ڕەوتەکە درووست کرا دووبارە وەرەوە. @@ -311,7 +310,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -818,8 +816,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 9aa0f5e78..e257e56b2 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Čeština' -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.': >- Tato část aplikace ještě není hotova. Vraťte se později. @@ -411,7 +410,6 @@ Settings: Remove All Subscriptions / Profiles: 'Odstranit všechny odběry / profily' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Opravdu chcete odstranit všechny odběry a profily? Tato akce je nevratná.' - Automatically Remove Video Meta Files: Automaticky odstranit meta soubory videa Save Watched Videos With Last Viewed Playlist: Uložit zhlédnutá videa s naposledy zobrazeným playlistem All playlists have been removed: Všechny playlisty byly odstraněny @@ -1057,9 +1055,6 @@ Tooltips: # Toast Messages Fetch Automatically: Při povolení tohoto nastavení bude FreeTube automaticky načítat vaše odběry při otevření nového okna a při přepínání profilů. - Privacy Settings: - Remove Video Meta Files: Pokud je povoleno, FreeTube automaticky odstraní meta - soubory vytvořené během přehrávání videa, když se stránka sledování zavře. External Player Settings: Ignore Warnings: Potlačuje varování, kdy současný externí přehrávač nepodporuje aktuální akci (např. obrácení seznamů skladeb apod.). @@ -1173,3 +1168,5 @@ Close Banner: Zavřít panel Age Restricted: This channel is age restricted: Tento kanál je omezen věkem This video is age restricted: Toto video je omezeno věkem +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/cy.yaml b/static/locales/cy.yaml index 6f277d93c..d4b3349b4 100644 --- a/static/locales/cy.yaml +++ b/static/locales/cy.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Cymraeg' -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.': > @@ -314,7 +313,6 @@ Settings: Remember History: 'Cadw Hanes' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -820,8 +818,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/da.yaml b/static/locales/da.yaml index e9033f2dc..690b45739 100644 --- a/static/locales/da.yaml +++ b/static/locales/da.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'dansk' -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 del af app'en er ikke klar endnu. Kom tilbage senere, når der er gjort fremskridt. @@ -383,7 +382,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Er du sikker på, at du vil fjerne alle abonnementer og profiler? Dette kan ikke fortrydes.' - Automatically Remove Video Meta Files: Fjern Automatisk Video Metafiler All playlists have been removed: Alle playlister blev fjernet Are you sure you want to remove all your playlists?: Er du sikker på, at du vil fjerne alle dine playlister? @@ -1010,9 +1008,6 @@ Tooltips: Advarsel: Invidious-indstillinger har ingen effekt på eksterne afspillere.' Ignore Warnings: Undertryk advarsler for når den eksterne afspiller ikke understøtter den gældende handling (fx vende playlister om, etc.). - Privacy Settings: - Remove Video Meta Files: Når det er aktiveret, sletter FreeTube automatisk metafiler - oprettet under videoafspilning, når siden lukkes. Distraction Free Settings: Hide Channels: Indtast et kanal-ID for at skjule alle videoer, playlister og selve kanalen fra at blive vist i søgning, trending, mest populære og anbefalet. Det diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 10f816214..217c6772b 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -1,4 +1,3 @@ -FreeTube: FreeTube # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Dieser Teil der App ist noch nicht bereit. Komme später wieder, wenn Fortschritte @@ -461,7 +460,6 @@ Settings: du sicher, dass du alle Abos und Profile löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden. Remove All Subscriptions / Profiles: Alle Abos / Profile entfernen - Automatically Remove Video Meta Files: Video-Metadateien automatisch entfernen Save Watched Videos With Last Viewed Playlist: Angesehene Videos mit der zuletzt angesehenen Wiedergabeliste speichern Remove All Playlists: Alle Wiedergabelisten entfernen @@ -1140,10 +1138,6 @@ Tooltips: Die DASH AV1-Formate benötigen mehr Leistung für die Wiedergabe! Sie sind nicht bei allen Videos verfügbar. In diesen Fällen verwendet der Abspieler stattdessen die DASH H.264-Formate. - Privacy Settings: - Remove Video Meta Files: Wenn aktiviert, löscht FreeTube automatisch die während - der Videowiedergabe erstellten Metadateien, wenn die Abspielseite geschlossen - wird. External Player Settings: Custom External Player Arguments: Alle benutzerdefinierten Befehlszeilenargumente, getrennt durch Semikolon (';'), die an den externen Abspieler übergeben werden @@ -1249,3 +1243,5 @@ Close Banner: Banner schließen Age Restricted: This channel is age restricted: Dieser Kanal ist altersbeschränkt This video is age restricted: Dieses Video ist altersbeschränkt +Display Label: '{label}: {value}' +checkmark: ✓ diff --git a/static/locales/el.yaml b/static/locales/el.yaml index 31e8a2fe0..4ff90643e 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Ελληνικά (EL)' -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.': >- Αυτό το μέρος της εφαρμογής δεν είναι ακόμη έτοιμο. Επιστρέψτε αργότερα όταν έχει @@ -323,7 +322,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Είστε βέβαιοι ότι θέλετε να καταργήσετε όλες τις συνδρομές και τα προφίλ; Αυτό δεν μπορεί να αναιρεθεί.' - Automatically Remove Video Meta Files: Αυτόματη αφαίρεση μετα-αρχείων βίντεο Save Watched Videos With Last Viewed Playlist: Αποθήκευση Βίντεο που Παρακολουθήσατε Με τη Λίστα Αναπαραγωγής Τελευταίας Προβολής Subscription Settings: @@ -1019,10 +1017,6 @@ Tooltips: σε έναν σύνδεσμο, ο οποίος δεν μπορεί να ανοίξει στο FreeTube.\nΑπό προεπιλογή, το FreeTube θα ανοίξει τον σύνδεσμο που έχει πατηθεί στο προεπιλεγμένο πρόγραμμα περιήγησης.\n" - Privacy Settings: - Remove Video Meta Files: Όταν είναι ενεργοποιημένο, το FreeTube διαγράφει αυτόματα - τα μετα-αρχεία που δημιουργήθηκαν κατά την αναπαραγωγή βίντεο, όταν η σελίδα - παρακολούθησης είναι κλειστή. External Player Settings: Custom External Player Executable: Από προεπιλογή, το FreeTube θα υποθέσει ότι το επιλεγμένο εξωτερικό πρόγραμμα αναπαραγωγής μπορεί να βρεθεί μέσω της μεταβλητής diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 0db2a89b3..706907441 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: English (US) -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.': >- This part of the app is not ready yet. Come back later when progress has been made. @@ -417,7 +416,6 @@ Settings: Remember History: Remember History Save Watched Progress: Save Watched Progress Save Watched Videos With Last Viewed Playlist: Save Watched Videos With Last Viewed Playlist - Automatically Remove Video Meta Files: Automatically Remove Video Meta Files Clear Search Cache: Clear Search Cache Are you sure you want to clear out your search cache?: Are you sure you want to clear out your search cache? @@ -1010,9 +1008,6 @@ Tooltips: but doesn't provide certain information like video duration or live status Fetch Automatically: When enabled, FreeTube will automatically fetch your subscription feed when a new window is opened and when switching profile. - Privacy Settings: - Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files created during video playback, - when the watch page is closed. Experimental Settings: Replace HTTP Cache: Disables Electron's disk based HTTP cache and enables a custom in-memory image cache. Will lead to increased RAM usage. SponsorBlock Settings: @@ -1070,3 +1065,7 @@ Hashtag: Yes: Yes No: No Ok: Ok +# symbol used to indicate that an item is correct +checkmark: ✓ +# French is the only language that should change this (they have a space before the colon) +Display Label: '{label}: {value}' diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 81ff39260..1c9d112fc 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'English (UK)' -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.': >- This part of the app is not ready yet. Come back later when progress has been made. @@ -417,7 +416,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Are you sure you want to remove all subscriptions and profiles? This cannot be undone.' - Automatically Remove Video Meta Files: Automatically Remove Video Meta Files Save Watched Videos With Last Viewed Playlist: Save Watched Videos With Last Viewed Playlist Remove All Playlists: Remove all playlists @@ -1084,9 +1082,6 @@ Tooltips: Custom External Player Arguments: Any custom command line arguments, separated by semicolons (';'), you want to be passed to the external player. DefaultCustomArgumentsTemplate: '(Default: ‘{defaultCustomArguments}’)' - Privacy Settings: - Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files - created during video playback, when the watch page is closed. Experimental Settings: Replace HTTP Cache: Disables Electron's disk-based HTTP cache and enables a custom in-memory image cache. Will lead to increased RAM usage. diff --git a/static/locales/eo.yaml b/static/locales/eo.yaml index fea50e47c..461dcf747 100644 --- a/static/locales/eo.yaml +++ b/static/locales/eo.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Esperanto' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History File: 'Dosiero' Quit: 'Eliri' diff --git a/static/locales/es-MX.yaml b/static/locales/es-MX.yaml index 61ee2146e..ef30b4b58 100644 --- a/static/locales/es-MX.yaml +++ b/static/locales/es-MX.yaml @@ -1,4 +1,3 @@ -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.': >- Esta parte de la aplicación aún no está lista. Vuelva más tarde cuando se haya avanzado. @@ -290,7 +289,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: ¿Estás seguro de que deseas eliminar todos los suscripciones y perfiles? Esto no puede ser deshecho. - Automatically Remove Video Meta Files: Borrar automáticamente metadatos del video Data Settings: How do I import my subscriptions?: ¿Cómo puedo importar mis suscripciones? Export History: Exportar Historia @@ -796,9 +794,6 @@ Tooltips: presionada la tecla Ctrl (tecla Comando en Mac) y haga clic izquierdo para reestablecer la velocidad de reproducción predeterminada (que es de 1x, a menos que la haya cambiado en configuración). - Privacy Settings: - Remove Video Meta Files: Si se habilita, FreeTube borrará automáticamente los - metadatos creados al abrir el video, una vez que la ventana se cierre. Subscription Settings: Fetch Feeds from RSS: Si se habilita, FreeTube usará RSS en lugar del método predeterminado para recibir videos de sus suscripciones. RSS es más rápido y previene que bloqueen diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 68e45bc0e..37becae32 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'español (España)' -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.': >- Esta parte de la aplicación aún no está lista. Vuelve más tarde cuando se hayan @@ -413,8 +412,6 @@ Settings: Remove All Subscriptions / Profiles: 'Borrar todas las suscripciones/perfiles' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '¿Confirma que quieres borrar todas las suscripciones y perfiles? Esta operación es irreversible.' - Automatically Remove Video Meta Files: Eliminar automáticamente los metadatos - de vídeos Save Watched Videos With Last Viewed Playlist: Guardar vídeos vistos con la última lista de reproducción vista All playlists have been removed: Se han eliminado todas las listas de reproducción @@ -1113,10 +1110,6 @@ Tooltips: External Link Handling: "Elija el comportamiento por defecto cuando se hace clic en un enlace que no se pueda abrirse en FreeTube. \nPor defecto, FreeTube abrirá el enlace en el que se hizo clic en su navegador predeterminado.\n" - Privacy Settings: - Remove Video Meta Files: Cuando se active, FreeTube eliminará automáticamente - meta-archivos creados durante la reproducción del vídeo una vez se cierre la - página de visualizado. External Player Settings: Custom External Player Executable: Por defecto, FreeTube buscará el reproductor externo seleccionado mediante la variable de entorno PATH, de no encontrarlo, @@ -1219,3 +1212,5 @@ Close Banner: Cerrar el banner Age Restricted: This channel is age restricted: Este canal está restringido por edad This video is age restricted: Este vídeo está restringido por edad +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml index f3de05dc3..3a4908e12 100644 --- a/static/locales/es_AR.yaml +++ b/static/locales/es_AR.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'español (Argentina)' -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.': >- Esta parte de la aplicación no esta lista por el momento. Vuelve después cuando @@ -111,6 +110,11 @@ User Playlists: Search bar placeholder: Buscar en la Lista de Reproducción Empty Search Message: No hay videos en esta lista de reproducción que coincidan con tu búsqueda + This playlist currently has no videos.: Esta lista de reproducción no tiene videos. + Playlists with Matching Videos: Listas de reproducción con videos repetidos + Create New Playlist: Crear nueva lista de reproducción + Add to Favorites: Añadir a {playlistName} + Add to Playlist: Añadir a la lista de reproducción History: # On History Page History: 'Historial' @@ -296,7 +300,6 @@ Settings: Remove All Subscriptions / Profiles: 'Remover todas las suscripciones / perfiles' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '¿Realmente querés remover todas las suscripciones y perfiles? Esta acción no puede deshacerse.' - Automatically Remove Video Meta Files: Borrar automáticamente metadatos del video Save Watched Videos With Last Viewed Playlist: Guardar videos vistos con la última lista de reproducción vista Subscription Settings: @@ -489,3 +492,5 @@ Tooltips: Distraction Free Settings: Hide Subscriptions Live: Esta configuración se reemplaza por la configuración «{appWideSetting}» de toda la aplicación, en la sección «{subsection}» de «{settingsSection}» +Go to page: Ir a {page} +Close Banner: Cerrar banner diff --git a/static/locales/et.yaml b/static/locales/et.yaml index f7c2244b5..f0fe96b12 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'eesti keel' -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.': >- Rakenduse see osa pole veel valmis. Tule hiljem tagasi, kui arendustööd on valmis. @@ -409,7 +408,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Kas sa oled kindel, et soovid kustutada kõik tellimused/profiilid? Seda tegevust ei saa tagasi pöörata.' - Automatically Remove Video Meta Files: Kustuta videote metateave automaatselt Save Watched Videos With Last Viewed Playlist: Salvesta vaadatud videod viimati vaadatud videote esitusloendisse All playlists have been removed: Kõik esitusloendid on eemaldatud @@ -1014,9 +1012,6 @@ Tooltips: IP-aadressi blokeerimise, kuid ei sisalda video kestust ja otseesituse olekut Fetch Automatically: Kui see valik on kasutusel, siis FreeTube automaatselt laadib uue akna avamisel ja profiili vahetamisel sinu tellimuste loendi. - Privacy Settings: - Remove Video Meta Files: Selle valiku kasutamisel FreeTube automaatselt kustutab - peale video esitamist kogu metateabe. General Settings: Region for Trending: Piirkond, mille alusel kuvame hetkel menukad ehk populaarsust koguvad videod. @@ -1128,3 +1123,5 @@ Age Restricted: This channel is age restricted: Kanali vaatamisel on vanusepiirang This video is age restricted: Video vaatamisel on vanusepiirang Close Banner: Sulge rekaampilt +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index 03e2d3a88..eec7a47a5 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Euskera' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Zati hau ez dago prest oraindik. Itzuli aurrerago aurrerapenak egin direnean. @@ -400,7 +399,6 @@ Settings: Privacy Settings: 'Pribatutasunari buruzko ezarpenak' Remember History: 'Historikoa oroitu' Save Watched Progress: 'Ikusitakoaren progresioa gorde' - Automatically Remove Video Meta Files: 'Bideo metafitxategiak ezabatu automatikoki' Clear Search Cache: 'Bilaketen cachea ezabatu' Are you sure you want to clear out your search cache?: 'Ziur al zaude bilaketa-cachea garbitu nahi duzula?' @@ -1019,10 +1017,6 @@ Tooltips: bideoaren iraupenaren informaziorik ez du ematen, besteak beste' Fetch Automatically: Gaituta dagoenean, FreeTubek automatikoki eskuratuko du zure harpidetza-jarioa leiho berri bat irekitzen denean eta profila aldatzean. - Privacy Settings: - Remove Video Meta Files: 'Gaituta dagoenean, FreeTube-k automatikoki ezabatzen - ditu bideoen erreprodukzioan sortutako metafitxategiak, bistaratze orria ixten - denean.' # Toast Messages External Player Settings: diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml index 7d62641c5..b96647d65 100644 --- a/static/locales/fa.yaml +++ b/static/locales/fa.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'فارسی (ایرانی)' -FreeTube: 'یوتیوب آزاد' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- این بخش از نرم افزار هنوز آماده نیست.زمانی که پیشرفتی صورت گرفت به اینجا باز گردید. @@ -290,8 +289,6 @@ Settings: Privacy Settings: 'تنظیمات امنیتی' Remember History: 'حفظ تاریخچه' Save Watched Progress: 'ذخیره ویدیو های دیده شده' - Automatically Remove Video Meta Files: 'به صورت خودکار متا فایل های ویدیو را حذف - کردن' Clear Search Cache: 'پاک کردن کش جستجو' Are you sure you want to clear out your search cache?: 'آیا مطمئن هستید که میخواهید کش جستجویتان را پاک کنید؟' @@ -702,9 +699,6 @@ Tooltips: نمی دهد Fetch Automatically: هنگامی که فعال باشد، FreeTube به طور خودکار فید اشتراک شما را هنگام باز شدن یک پنجره جدید و هنگام تغییر نمایه دریافت می کند. - Privacy Settings: - Remove Video Meta Files: هنگامی که FreeTube فعال باشد، به طور خودکار فایل های - متا ایجاد شده در حین پخش ویدیو را حذف می کند، زمانی که صفحه تماشا بسته می شود. External Player Settings: Custom External Player Executable: به طور پیش فرض، FreeTube فرض می کند که پخش کننده خارجی انتخاب شده را می توان از طریق متغیر محیطی PATH پیدا کرد. در صورت diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml index 9fab29925..cbe0b3a78 100644 --- a/static/locales/fi.yaml +++ b/static/locales/fi.yaml @@ -1,4 +1,3 @@ -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.': >- Tämä sovelluksen osa ei ole vielä valmis. Tule takaisin myöhemmin kun olemme edistyneet. @@ -144,6 +143,8 @@ User Playlists: ja sitä ei voi poistaa. Playlist {playlistName} has been deleted.: Soittolista {playlistName} on poistettu. This playlist does not exist: Soittolistaa ei ole olemassa + There was an issue with updating this playlist.: Tätä soittolistaa päivittäessä + ilmeni ongelma. Search for Videos: Etsi videot Move Video Down: Siirrä video alas Remove from Playlist: Poista soittolistalta @@ -174,6 +175,8 @@ User Playlists: nimellä on jo olemassa soittolista. Valitse eri nimi. Playlist {playlistName} has been successfully created.: Soittolista {playlistName} on luotu. + There was an issue with creating the playlist.: Soittolistaa luotaessa ilmeni + ongelma. Add to Favorites: Lisää soittolistaan {playlistName} Remove from Favorites: Poista soittolistalta {playlistName} Remove Watched Videos: Poista katsotut videot @@ -363,6 +366,7 @@ Settings: How do I import my subscriptions?: 'Miten voin tuoda tilaukseni?' Fetch Feeds from RSS: Nouda RSS-syöte Fetch Automatically: Nouda syöte automaattisesti + Only Show Latest Video for Each Channel: Näytä vain jokaisen kanavan uusin video Advanced Settings: Advanced Settings: 'Lisäasetukset' Enable Debug Mode (Prints data to the console): 'Ota virheenkorjaustila käyttöön @@ -404,7 +408,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Haluatko cvarmasti poistaa kaikki tilaukset ja profiilit. Tätä toimintoa ei voi perua. Remove All Subscriptions / Profiles: Poista kaikki tilaukset / profiilit - Automatically Remove Video Meta Files: Poista videoiden metadata automaattisesti Save Watched Videos With Last Viewed Playlist: Tallenna katsotut videot viimeksi katsotulla soittolistalla Remove All Playlists: Poista kaikki soittolistat @@ -458,6 +461,8 @@ Settings: Playlist File: Soittolistatiedosto History File: Historia-tiedosto Subscription File: Tilaustiedosto + Export Playlists For Older FreeTube Versions: + Label: Vie soittolistat FreeTuben vanhempiin versioihin Distraction Free Settings: Hide Live Chat: Piilota Live-keskustelu Hide Popular Videos: Piilota suositut videot @@ -570,6 +575,7 @@ Settings: Password Settings: Salasana-asetukset Set Password: Aseta salasana Remove Password: Poista salasana + Expand All Settings Sections: Laajenna asetusten kaikki osiot About: #On About page About: 'Tietoja' @@ -1013,9 +1019,6 @@ Tooltips: H.264 formaatit. DASH AV1 formaatit vaativat enemmän tehoa toistamiseen! Ne eivät ole käytettävissä kaikissa videoissa ja näissä tapauksissa soitin käyttää sen sijaan DASH H.264 formaatteja. - Privacy Settings: - Remove Video Meta Files: Kun tämä on kytkettynä päälle, FreeTube poistaa automaattisesti - meta-tiedostot jotka luotiin videon toiston aikana, katselusivu suljettaessa. External Player Settings: Custom External Player Arguments: Kaikki ne omavalintaiset komentorivin määreet, puolipisteillä eroteltuina (';'), jotka haluat siirtää eteenpäin ulkoiselle diff --git a/static/locales/fil.yaml b/static/locales/fil.yaml index 294cef1be..311fb54a3 100644 --- a/static/locales/fil.yaml +++ b/static/locales/fil.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Filipino' -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.': >- Ang bahagi ito ng aplikasyon ay hindi pa handa. Bumalik po kayo mamaya kapag nag-unsad diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 7c580fa99..c7941965d 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -1,4 +1,3 @@ -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.': >- Cette partie de l'application n'est pas encore prête. Revenez plus tard lorsque @@ -471,8 +470,6 @@ Settings: sûr(e) de vouloir supprimer tous les abonnements et les profils ? Cette action est définitive. Remove All Subscriptions / Profiles: Supprimer tous les Abonnements / Profils - Automatically Remove Video Meta Files: Supprimer automatiquement les métafichiers - vidéo Save Watched Videos With Last Viewed Playlist: Sauvegarder les vidéos regardées avec la dernière liste de lecture vue All playlists have been removed: Toutes les listes de lecture ont été supprimées @@ -1159,10 +1156,6 @@ Tooltips: External Link Handling: "Choisissez le comportement par défaut quand on clique sur un lien qui ne peut être ouvert dans FreeTube.\nPar défaut, FreeTube ouvrira le lien dans votre navigateur par défaut.\n" - Privacy Settings: - Remove Video Meta Files: Lorsqu'il est activé, FreeTube supprime automatiquement - les MétaFichiers créés pendant la lecture de la vidéo, dès que la page de la - vidéo est quittée. External Player Settings: Custom External Player Arguments: Tous les arguments de ligne de commande personnalisés, séparés par des points-virgules (';'), que vous souhaitez transmettre au lecteur @@ -1269,3 +1262,6 @@ Age Restricted: This channel is age restricted: Cette chaîne est soumise à des restrictions d'âge This video is age restricted: Cette vidéo est soumise à des restrictions d'âge Close Banner: Fermer la bannière +# French is the only language that should change this (they have a space before the colon) +Display Label: '{label} : {value}' +checkmark: ✓ diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index fd4cf960d..a0c694502 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'galego' -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.': >- Esta parte da aplicación non está lista aínda. Volve máis adiante, cando se avance @@ -305,8 +304,6 @@ Settings: Remove All Subscriptions / Profiles: 'Limpar tódalas subscricións / perfís' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Estás seguro de querer limpar tódalas subscricións e perfís? Esta acción é irreversible.' - Automatically Remove Video Meta Files: Elimina automaticamente os ficheiros meta - de vídeo Save Watched Videos With Last Viewed Playlist: Gardalos vídeos vistos coa última lista de reprodución vista Subscription Settings: @@ -883,10 +880,6 @@ Tooltips: # Toast Messages Fetch Automatically: Cando estea activado, FreeTube buscará automaticamente o teu feed da subscrición, cando se abra unha nova ventá e cando cambies de perfil. - Privacy Settings: - Remove Video Meta Files: Cando está activado, FreeTube elimina automaticamente - os ficheiros meta creados durante a reprodución de vídeo cando a páxina de visualización - está pechada. External Player Settings: Custom External Player Arguments: Calquera argumento de liña de comandos personalizado, separado por puntos e coma (';'), que desexa que se pase ao reprodutor externo. diff --git a/static/locales/gsw.yaml b/static/locales/gsw.yaml index e964dc53a..182e20a50 100644 --- a/static/locales/gsw.yaml +++ b/static/locales/gsw.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Schwiizerdütsch' -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.': >- De Teil vom Programm isch nonig fertig. Bitte chum zumene spötere Ziitpunkt wider diff --git a/static/locales/he.yaml b/static/locales/he.yaml index 2f88b67fc..29fcd35a3 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'עברית' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- החלק הזה ביישומון עדיין לא מוכן. מזמינים אותך לשוב ולבדוק בהמשך כשנתקדם. @@ -307,7 +306,6 @@ Settings: Remove All Subscriptions / Profiles: 'למחק את כל המינויים / פרופילים' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'למחוק כל את המינויים והפרופילים? זופעולה בלתי הפיכה.' - Automatically Remove Video Meta Files: להסיר אוטומטית קובצי נתוני על של הסרטון Save Watched Videos With Last Viewed Playlist: לשמור את הסרטונים שנצפו עם רשימת הנגינה לאחרונים שנצפו Subscription Settings: @@ -943,9 +941,6 @@ Tooltips: נגיש דרך משתנה הסביבה PATH. במקרה הצורך, ניתן להגדיר כאן נתיב משלך. Custom External Player Arguments: הארגומנטים משלך לשורת הפקודה שיועברו לנגן החיצוני, מופרדים בפסיקים (‚;’). - Privacy Settings: - Remove Video Meta Files: כאשר אפשרות זו מופעלת, FreeTube מוחק באופן אוטומטי קובצי - על שנוצרים במהלך ניגון סרטון, לאחר סגירת עמוד הצפייה. Experimental Settings: Replace HTTP Cache: משבית את מטמון ה־HTTP מבוסס הכונן ומפעיל מטמון תמונות מותאם אישית בזיכרון. יגדיל את צריכת הזיכרון (RAM). diff --git a/static/locales/hi.yaml b/static/locales/hi.yaml index 240dbb83f..707c61dd4 100644 --- a/static/locales/hi.yaml +++ b/static/locales/hi.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'English (US)' -FreeTube: 'फ्रीट्यूब' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ऐप का यह हिस्सा अभी तैयार नहीं है। बाद में वापस आएँ जब प्रगति हुई हो diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index f2aa89c7a..1bcb4c36b 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Hrvatski' -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.': >- Ovaj dio programa još nije gotov. Navrati kasnije. @@ -401,8 +400,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Stvarno želiš ukloniti sve pretplate i profile? Ovo je nepovratna radnja. Remove All Subscriptions / Profiles: Ukloni sve pretplate/profile - Automatically Remove Video Meta Files: Automatski ukloni datoteke metapodataka - videa Save Watched Videos With Last Viewed Playlist: Spremi gledana videa sa zadnjim gledanom zbirkom Remove All Playlists: Ukloni sve zbirke @@ -1095,10 +1092,6 @@ Tooltips: ili stanja „uživo” Fetch Automatically: Kada je aktivirano, FreeTube će automatski dohvatiti feed tvoje pretplate kada se otvori novi prozor i prilikom mijenjanja profila. - Privacy Settings: - Remove Video Meta Files: Kada je aktivirano, FreeTube automatski uklanja datoteke - metapodataka koji su stvoreni tijekom reprodukcije videa, kad se zatvori stranica - gledanja. External Player Settings: External Player: Biranjem vanjskog playera prikazat će se ikona, za otvaranje videa (zbirka, ako je podržana) u vanjskom playeru, na minijaturi. Upozorenje, diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index dd8796701..78ef6b5d4 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Magyar' -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.': >- Az alkalmazás ezen része még nem áll készen. Térjen vissza később amikor előrelépés @@ -422,7 +421,6 @@ Settings: Remove All Subscriptions / Profiles: 'Összes feliratkozás és profil eltávolítása' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Biztosan törli az összes feliratkozást és profilt? A művelet nem vonható vissza.' - Automatically Remove Video Meta Files: Videó-metafájlok automatikus eltávolítása Save Watched Videos With Last Viewed Playlist: Megtekintett videók mentése az utoljára megtekintett lejátszási listával All playlists have been removed: Minden lejátszási lista eltávolításra került @@ -1109,9 +1107,6 @@ Tooltips: H.264 formátumok. A DASH AV1 formátumok több energiát igényelnek a lejátszáshoz! Nem minden videónál érhetők el, ilyenkor a lejátszó a DASH H.264 formátumot használja helyette. - Privacy Settings: - Remove Video Meta Files: Ha engedélyezve van, a FreeTube automatikusan törli a - videolejátszás során létrehozott metafájlokat, amikor a nézőlapot bezárják. External Player Settings: Custom External Player Executable: Alapértelmezés szerint a FreeTube feltételezi, hogy a kiválasztott külső lejátszó megtalálható a PATH (ÚTVONAL) környezeti @@ -1211,3 +1206,5 @@ Close Banner: Banner bezárása Age Restricted: This channel is age restricted: Ez a csatorna korhatáros This video is age restricted: Ez a videó korhatáros +Display Label: '{label}: {value}' +checkmark: ✓ diff --git a/static/locales/id.yaml b/static/locales/id.yaml index b471e1b32..9f5bca8ba 100644 --- a/static/locales/id.yaml +++ b/static/locales/id.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language 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 dari aplikasi ini belum disiapkan. Kembali lagi nanti saat kemajuan telah @@ -280,7 +279,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Apakah Anda yakin ingin menghapus semua langganan dan profil? Tindakan ini tidak bisa diurungkan.' - Automatically Remove Video Meta Files: Secara Otomatis Hapus File Meta Video Subscription Settings: Subscription Settings: 'Pengaturan Langganan' Hide Videos on Watch: 'Sembunyikan Video saat Menonton' @@ -809,9 +807,6 @@ Tooltips: External Link Handling: "Pilih perilaku default ketika tautan, yang tidak dapat dibuka di FreeTube, diklik.\nSecara default FreeTube akan membuka tautan yang diklik dengan browser default Anda.\n" - Privacy Settings: - Remove Video Meta Files: Saat diaktifkan, FreeTube secara otomatis menghapus file - meta yang dibuat selama pemutaran video, saat halaman tonton ditutup. External Player Settings: Custom External Player Arguments: Semua argumen perintah khusus, dipisahkan dengan titik koma (';'), yang Anda ingin gunakan dengan pemutar eksternal. diff --git a/static/locales/is.yaml b/static/locales/is.yaml index 5434496d6..943454280 100644 --- a/static/locales/is.yaml +++ b/static/locales/is.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Íslenska' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Þessi hluti forritsins er ekki tilbúinn. Skoðaðu þetta seinna þegar meira hefur @@ -416,7 +415,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Ertu viss um að þú viljir fjarlægja allar áskriftir og notkunarsnið? Ekki er hægt að afturkalla þetta.' - Automatically Remove Video Meta Files: Sjálfvirkt fjarlægja lýsigögn úr myndskeiðaskrám Save Watched Videos With Last Viewed Playlist: Vista myndskeið sem horft var á með síðast notaða spilunarlista Remove All Playlists: Fjarlægja alla spilunarlista @@ -1027,9 +1025,6 @@ Tooltips: # Toast Messages Fetch Automatically: Þegar þetta er virkt, mun FreeTube sækja sjálfkrafa áskriftarstreymin þín þegar nýr gluggi er opnaður og þegar skipt er um notkunarsnið. - Privacy Settings: - Remove Video Meta Files: Þegar þetta er virkt, eyðir FreeTube sjálfkrafa lýsigagnaskrám - sem útbúnar eru við afspilun, þegar skoðunarsíðunni er lokað. External Player Settings: Custom External Player Arguments: Öll sérsniðin skipanaviðföng og rofar, aðskilin með semíkommum (';'), sem beina á til utanaðkomandi spilarans. diff --git a/static/locales/it.yaml b/static/locales/it.yaml index e32e30e45..89abfd207 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Italiano' -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.': >- Questa parte dell'app non è ancora pronta. Torna più tardi quando saranno stati @@ -412,8 +411,6 @@ Settings: sicuro di volere eliminare tutte le iscrizioni e i profili? L'operazione non può essere annullata. Remove All Subscriptions / Profiles: Elimina tutte le iscrizioni e i profili - Automatically Remove Video Meta Files: Rimuovi automaticamente i metafile dai - video Save Watched Videos With Last Viewed Playlist: Salva i video guardati con l'ultima playlist vista All playlists have been removed: Tutte le playlist sono state rimosse @@ -1135,10 +1132,6 @@ Tooltips: Ignore Default Arguments: Non inviare argomenti predefiniti al lettore esterno oltre all'URL del video (ad esempio velocità di riproduzione, URL della playlist, ecc.). Gli argomenti personalizzati verranno comunque trasmessi. - Privacy Settings: - Remove Video Meta Files: Se abilitato, quando chiuderai la pagina di riproduzione - , FreeTube eliminerà automaticamente i metafile creati durante la visione del - video . Experimental Settings: Replace HTTP Cache: Disabilita la cache HTTP basata su disco Electron e abilita una cache di immagini in memoria personalizzata. Comporta un aumento dell'uso @@ -1222,3 +1215,5 @@ Age Restricted: This video is age restricted: Questo video è soggetto a limiti di età This channel is age restricted: Questo canale è soggetto a limiti di età Close Banner: Chiudi banner +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index f851625cb..943362756 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -1,4 +1,3 @@ -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.': >- アプリのこの部分は未完成です。完成後に実行してください。 @@ -110,7 +109,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: + Playlist Message: このページは、完全に動作する動画リストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」の動画リストに移動します。 Search bar placeholder: 動画リスト内の検索 Empty Search Message: この再生リストに、検索に一致する動画はありません @@ -332,7 +331,6 @@ Settings: Privacy Settings: 個人情報の設定 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。 Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除 - Automatically Remove Video Meta Files: 動画のメタファイルの自動削除 Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存 Data Settings: How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか? @@ -469,7 +467,7 @@ Settings: Experimental Settings: Replace HTTP Cache: HTTP キャッシュの置換 Experimental Settings: 実験中の設定 - Warning: + Warning: これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください! Password Settings: Password Settings: パスワード設定 @@ -882,8 +880,6 @@ Tooltips: Region for Trending: 急上昇の地域設定では、急上昇動画を表示する国を選択できます。 External Link Handling: "FreeTube で開けないリンクをクリックしたときのデフォルトの動作を選択します。\nデフォルトでは、FreeTube はクリックしたリンクをデフォルトのブラウザで開きます。\n" - Privacy Settings: - Remove Video Meta Files: 有効にすると、FreeTube は動画再生中に作成したメタファイルを、再生ページを閉じるときに自動的に削除します。 External Player Settings: Custom External Player Arguments: '";"、セミコロンで区切られたカスタム コマンド ライン引数を外部プレーヤーに渡します。' Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(動画リストの反転など)に警告を抑制します。 diff --git a/static/locales/ka.yaml b/static/locales/ka.yaml index e5c0b9f5e..3cee0eead 100644 --- a/static/locales/ka.yaml +++ b/static/locales/ka.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ქართული ენა' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- აპლიკაციის ეს ნაწილი ჯერ არ არის მზად. გთხოვთ, შეამოწმოთ მოგვიანებით, როდესაც იქნება diff --git a/static/locales/km.yaml b/static/locales/km.yaml index 8e3988d77..6c2106edc 100644 --- a/static/locales/km.yaml +++ b/static/locales/km.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ភាសាខ្មែរ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ផ្នែកនេះនៃកម្មវិធីមិនទាន់រួចរាល់នៅឡើយទេ។ ត្រលប់មកវិញនៅពេលក្រោយ ពេលដែលវឌ្ឍនភាពត្រូវបានបង្កើតឡើង។ diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml index 48ab70bc0..4fd3d4d10 100644 --- a/static/locales/ko.yaml +++ b/static/locales/ko.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: '한국어' -FreeTube: '프리튜브' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 아직 구현 되지 않은 기능입니다. 개발이 완료된 후 다시 시도해주세요. @@ -286,7 +285,6 @@ Settings: Remove All Subscriptions / Profiles: '모든 구독채널과 프로필 삭제' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '정말로 모든 구독채널과 프로필을 삭제하시겠습니까? 삭제하면 복구가되지않습니다.' - Automatically Remove Video Meta Files: 비디오 메타 파일 자동 제거 Subscription Settings: Subscription Settings: '구독 설정' Hide Videos on Watch: '시청한 동영상 숨기기' @@ -752,9 +750,6 @@ Tooltips: Ignore Warnings: '현재 외부 플레이어가 현재 작업을 지원하지 않는 경우(예: 재생 목록 반전 등) 경고를 표시하지 않습니다.' Custom External Player Arguments: 외부 플레이어로 전달되기를 원하는사용자 지정 명령줄 인수는 세미콜론(';')으로 구분됩니다. - Privacy Settings: - Remove Video Meta Files: 활성화되면 FreeTube는 보기 페이지가 닫힐 때 비디오 재생 중에 생성된 메타 파일을 자동으로 - 삭제합니다. Distraction Free Settings: Hide Channels: 채널 이름이나 채널 ID를 입력해 해당 채널의 영상이나 재생목록, 채널 자체가 검색이나 인기 영상에 나타나지 않도록 합니다. 입력되는 채널 이름은 완전히 일치해야하며, 대소문자를 구별합니다. diff --git a/static/locales/ku.yaml b/static/locales/ku.yaml index 1879548c3..a0278df86 100644 --- a/static/locales/ku.yaml +++ b/static/locales/ku.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'کوردی ناوەڕاست' -FreeTube: 'فریتیوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ئە بەشە لە ئەپلیکەیشنەکە هێشتا بەردەست نییە. لە کاتێکی دواتردا وەرەوە کە پێشکەوتنێک diff --git a/static/locales/la.yaml b/static/locales/la.yaml index ae7803694..e4b20b5a2 100644 --- a/static/locales/la.yaml +++ b/static/locales/la.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Latina' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Haec programmatis pars perfecta non est. Remea cum in hac profectum sit. diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml index 47fd7d1ba..e51e8028a 100644 --- a/static/locales/lt.yaml +++ b/static/locales/lt.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'lietuvių' -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.': >- Ši programėlės dalis dar neparengta. Grįžkite vėliau, kai bus padaryta pažanga. @@ -311,8 +310,6 @@ Settings: Privacy Settings: 'Privatumo nustatymai' Remember History: 'Įsiminti istoriją' Save Watched Progress: 'Išsaugoti peržiūros progresą' - Automatically Remove Video Meta Files: 'Automatiškai pašalinti vaizdo įrašų meta - failus' Clear Search Cache: 'Išvalyti paieškos talpyklą' Are you sure you want to clear out your search cache?: 'Ar tikrai norite išvalyti paieškos talpyklą?' @@ -832,9 +829,6 @@ Tooltips: trukmės ar tiesioginės transliacijos būsenos' Fetch Automatically: Kai ši funkcija įjungta, FreeTube automatiškai įkels naują turinį iš prenumeratų, kai atidaromas naujas langas ir perjungiamas profilis. - Privacy Settings: - Remove Video Meta Files: 'Įjungus FreeTube, uždarius žiūrėjimo puslapį, automatiškai - ištrinami meta failai, sukurti vaizdo atkūrimo metu.' # Toast Messages Experimental Settings: diff --git a/static/locales/lv.yaml b/static/locales/lv.yaml index 130bb3cbf..3bb50c420 100644 --- a/static/locales/lv.yaml +++ b/static/locales/lv.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Latviešu' -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.': > @@ -309,7 +308,6 @@ Settings: Remember History: 'Atcerēties vēsturi' Save Watched Progress: 'Saglabāt skatīto attīstību' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: 'Automātiski noņemt video metadatus' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -817,8 +815,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml index 86ec5a9de..f6dc91f41 100644 --- a/static/locales/nb_NO.yaml +++ b/static/locales/nb_NO.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Norsk bokmål' -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 programmet er ikke klart enda. Kom tilbake senere når ting er i orden. @@ -295,7 +294,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Er du sikker på at du vil fjerne alle abonnementer og profiler? Dette kan ikke angres. - Automatically Remove Video Meta Files: Fjern metadata automatisk fra videoer Save Watched Videos With Last Viewed Playlist: Lagre sette videoer med sist sette spilleliste Subscription Settings: @@ -888,9 +886,6 @@ Tooltips: Allow DASH AV1 formats: DASH AV1-formater kan ha bedre kvalitet enn DASH H.264 -formater. DASH AV1-formater krever dog mer regnekraft for avspilling. Ikke tilgjengelig for alle videoer, og i sådant fall bruker avspilleren DASH H.264-formater. - Privacy Settings: - Remove Video Meta Files: Hvis denne instillingen er på, vil FreeTube automatisk - slette metadata generert under videoavspilling når du lukker avspillingsiden. External Player Settings: Custom External Player Arguments: Alle egendefinerte kommandolinjeargumenter, semikoloninndelt («;») du ønsker å sende til den eksterne avspilleren. @@ -968,3 +963,4 @@ Hashtag: Hashtag: Emneknagg This hashtag does not currently have any videos: Denne emneknaggen har ingen videoer enda +checkmark: ✓ diff --git a/static/locales/ne.yaml b/static/locales/ne.yaml index 9a8ad74bd..88cb5e274 100644 --- a/static/locales/ne.yaml +++ b/static/locales/ne.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'नेपाली' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- एपको यो भाग अझै तयार भएको छैन। केहि प्रगति भएपछि आउनु होला। diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 5c179f0bd..fa04a58a3 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Nederlands' -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.': >- Dit gedeelte van de app is nog niet klaar. Kom later terug als er vooruitgang is @@ -409,8 +408,6 @@ Settings: u zeker dat u alle abonnementen en profielen wil verwijderen? Dit kan niet ongedaan worden gemaakt. Remove All Subscriptions / Profiles: Verwijder alle abonnementen / profielen - Automatically Remove Video Meta Files: Bestanden met metadata van video's automatisch - verwijderen Save Watched Videos With Last Viewed Playlist: Houd bekeken video's bij met de afspeellijst ‘Laatst bekeken’ Remove All Playlists: Alle afspeel­lijsten verwijderen @@ -1108,10 +1105,6 @@ Tooltips: External Link Handling: "Kies het standaard gedrag voor wanneer een link dat niet kan worden geopend in FreeTube is aangeklikt.\nStandaard zal FreeTube de aangeklikte link openen in je standaardbrowser.\n" - Privacy Settings: - Remove Video Meta Files: Wanneer ingeschakeld zal FreeTube automatisch meta bestanden - die worden gecreëerd tijdens het afspelen van video's verwijderen zodra de pagina - wordt gesloten. External Player Settings: Custom External Player Arguments: Aangepaste opdrachtregelargumenten, gescheiden door puntkomma's (';'), die je wil doorgeven aan de externe videospeler. @@ -1211,3 +1204,5 @@ Age Restricted: This video is age restricted: Deze video heeft een leeftijds­beperking Trimmed input must be at least N characters long: Bij­gesneden invoer moet minimaal 1 teken lang zijn | Bij­gesneden invoer moet minimaal {length} tekens lang zijn +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/nn.yaml b/static/locales/nn.yaml index 8e454d553..f08b5d593 100644 --- a/static/locales/nn.yaml +++ b/static/locales/nn.yaml @@ -1,6 +1,5 @@ # 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 programmet er ikkje klar enda. Ver venleg og kom tilbake på eit seinare @@ -298,7 +297,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Er du sikker på at du vil fjerne alle abonnentar og profil? Dette kan ikkje bli ugjort.' - Automatically Remove Video Meta Files: Fjern metadata automatisk frå videoar Subscription Settings: Subscription Settings: 'Abonnementinnstillingar' Hide Videos on Watch: 'Skjul sette videoar' @@ -798,9 +796,6 @@ Tooltips: # Toast Messages Fetch Automatically: Om dette alternativet er aktivert, vil FreeTube automatisk hente abonnementfeeden din når eit nytt vindauge opnast og når du bytter profil. - Privacy Settings: - Remove Video Meta Files: Viss denne innstillinga er på, vil FreeTube automatisk - slette metadata generert under videoavspeling når du lukker avspelingsida. External Player Settings: DefaultCustomArgumentsTemplate: "(Standard: '{defaultCustomArguments}')" Custom External Player Executable: Som standard vil FreeTube anta at den valte diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 691846548..355170d1d 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -1,4 +1,3 @@ -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.': >- Ta część aplikacji nie jest jeszcze gotowa. Wróć później, gdy zostaną poczynione @@ -454,7 +453,6 @@ Settings: jesteś pewny/a, że chcesz usunąć wszystkie subskrypcje i profile? Nie będzie można tego cofnąć. Remove All Subscriptions / Profiles: Usuń wszystkie subskrypcje / profile - Automatically Remove Video Meta Files: Automatycznie usuwaj pliki metadanych filmu Save Watched Videos With Last Viewed Playlist: Zapisuj do historii film wraz z ostatnią odtwarzaną playlistą, która go zawierała All playlists have been removed: Wszystkie playlisty zostały usunięte @@ -1121,9 +1119,6 @@ Tooltips: H.264 DASH. Dekodowanie formatu AV1 DASH wymaga większej mocy obliczeniowej. W filmach, dla których ten format nie jest dostępny, zostanie użyty format H.264 DASH. - Privacy Settings: - Remove Video Meta Files: Po włączeniu FreeTube automatycznie usunie pliki metadanych - utworzone podczas odtwarzania filmu, gdy strona odtwarzacza zostanie zamknięta. External Player Settings: Ignore Warnings: Nie pokazuj ostrzeżeń o nieobsługiwanych akcjach przez zewnętrzny odtwarzacz (n.p. odwracanie playlist, itp.). @@ -1225,3 +1220,5 @@ Age Restricted: This video is age restricted: Ten film ma ograniczenie wiekowe This channel is age restricted: Ten kanał ma ograniczenie wiekowe Close Banner: Zamknij Baner +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 4e1d89cc5..405a77063 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1,4 +1,3 @@ -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.': >- Esta parte do aplicativo ainda não está pronta. Volte mais tarde quando o progresso @@ -451,8 +450,6 @@ Settings: certeza de que deseja remover todas as inscrições e perfis? Isto não pode ser desfeito. Remove All Subscriptions / Profiles: Remover todas as inscrições ou perfis - Automatically Remove Video Meta Files: Remover automaticamente os metarquivos - de vídeo Save Watched Videos With Last Viewed Playlist: Salvar vídeos assistidos com a última playlist visualizada All playlists have been removed: Todas as playlists foram removidas @@ -1115,10 +1112,6 @@ Tooltips: External Link Handling: "Escolha o comportamento padrão quando um link que não pode ser aberto no FreeTube for clicado.\nPor padrão, o FreeTube abrirá o link clicado em seu navegador padrão.\n" - Privacy Settings: - Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os - metarquivos criados durante a reprodução do vídeo quando a página de exibição - é fechada. External Player Settings: Custom External Player Arguments: Quaisquer argumentos de linha de comando personalizados, separados por ponto e vírgula (';'), você deseja que seja passado para o player @@ -1216,3 +1209,5 @@ Close Banner: Fechar Banner Age Restricted: This channel is age restricted: Este canal tem restrição de idade This video is age restricted: Este vídeo tem restrição de idade +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml index 679ca1b77..1d91532b3 100644 --- a/static/locales/pt-PT.yaml +++ b/static/locales/pt-PT.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: Português (PT) -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.': >- Esta parte da aplicação ainda não está pronta. Volte mais tarde quando já houver @@ -401,8 +400,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Tem a certeza de que pretende remover todas as suas subscrições e perfis? Esta ação não pode ser revertida. - Automatically Remove Video Meta Files: Remover automaticamente os meta-ficheiros - dos vídeos Save Watched Videos With Last Viewed Playlist: Guardar os vídeos vistos com a última lista de reprodução vista Remove All Playlists: Remover todas as listas de reprodução @@ -1004,9 +1001,6 @@ Tooltips: # Toast Messages Fetch Automatically: Se ativa, FreeTube irá obter automaticamente as subscrições ao abrir uma nova janela e/ou quando mudar de perfil. - Privacy Settings: - Remove Video Meta Files: Se ativa, ao fechar uma página, FreeTube apagará automaticamente - os meta-ficheiros criados durante a reprodução de um vídeo. External Player Settings: Custom External Player Arguments: Quaisquer argumentos de linha de comando, separados por ponto e vírgula (';'), que quiser passar ao reprodutor externo. diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 67357a739..f4c961846 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Português' -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.': >- Esta parte da aplicação ainda não está pronta. Volte mais tarde quando já houver @@ -411,8 +410,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tem a certeza de que pretende remover todas as suas subscrições e perfis? Esta ação não pode ser revertida.' - Automatically Remove Video Meta Files: Remover automaticamente os meta-ficheiros - dos vídeos Save Watched Videos With Last Viewed Playlist: Guardar os vídeos vistos com a última lista de reprodução vista Remove All Playlists: Remover todas as listas de reprodução @@ -1073,9 +1070,6 @@ This video is unavailable because of missing formats. This can happen due to cou vídeo não está disponível porque faltam formatos. Isto pode acontecer devido à indisponibilidade no seu país. Tooltips: - Privacy Settings: - Remove Video Meta Files: Se ativa, ao fechar uma página, FreeTube apagará automaticamente - os meta-ficheiros criados durante a reprodução de um vídeo. Subscription Settings: Fetch Feeds from RSS: Se ativa, FreeTube irá obter as subscrições através de RSS em vez do método normal. O formato RSS é mais rápido e não é bloqueado pelo diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 652aad2d9..555e78d9b 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'română' -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.': >- Această parte a aplicației nu este gata încă. Revino mai târziu pentru modificări. @@ -51,7 +50,7 @@ A new blog is now available, {blogTitle}. Click to view more: 'Un nou blog este disponibil, {blogTitle}. Click to view more' # Search Bar -Search / Go to URL: 'Căutare / Întrodu la URL' +Search / Go to URL: 'Căutare / Accesați URL-ul' # In Filter Button Search Filters: Search Filters: 'Filtre de căutare' @@ -130,8 +129,48 @@ User Playlists: Aceasta enumeră doar videoclipurile pe care le-ați salvat sau le-ați favorizat. Când lucrările vor fi finalizate, toate videoclipurile care se află în prezent aici vor fi migrate într-o listă de redare "Favorite". - Search bar placeholder: Caută în Listă De Redare + Search bar placeholder: Căutați liste de redare Empty Search Message: Nu sunt videoclipuri pentru căutarea ta + Move Video Down: Mutați video în jos + Enable Quick Bookmark With This Playlist: Activați marcajul rapid cu această listă + de redare + Sort By: + Sort By: Sortează după + NameDescending: Z-A + LatestCreatedFirst: Creat recent + NameAscending: A-Z + LatestUpdatedFirst: Actualizat recent + EarliestCreatedFirst: Cel mai devreme creat + This playlist currently has no videos.: Această listă de redare nu are în prezent + niciun videoclip. + You have no playlists. Click on the create new playlist button to create a new one.: Nu + aveți liste de redare. Faceți clic pe butonul de creare a unei noi liste de redare + pentru a crea una nouă. + Playlists with Matching Videos: Liste de redare cu videoclipuri corespunzătoare + AddVideoPrompt: + Select a playlist to add your N videos to: Selectați o listă de redare la care + să adăugați videoclipul dvs. | Selectați o listă de redare la care să adăugați + videoclipurile {videoCount} + Cancel: Anulare + Edit Playlist Info: Editați informațiile despre lista de redare + Copy Playlist: Copiați lista de redare + Remove Watched Videos: Eliminați videoclipurile vizionate + Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Sunteți + sigur că doriți să eliminați toate videoclipurile vizionate din această listă + de redare? Acest lucru nu poate fi anulat. + Create New Playlist: Creați o nouă listă de redare + Add to Playlist: Adăugați la lista de redare + Add to Favorites: Adaugă la {playlistName} + Remove from Favorites: Eliminați din {playlistName} + Move Video Up: Mutați video în sus + Remove from Playlist: Eliminați din lista de redare + Playlist Name: Numele listei de redare + Playlist Description: Descrierea listei de redare + Save Changes: Salvați modificările + Disable Quick Bookmark: Dezactivați marcajul rapid + Delete Playlist: Ștergeți lista de redare + Are you sure you want to delete this playlist? This cannot be undone: Sunteți sigur + că doriți să ștergeți această listă de redare? Acest lucru nu poate fi anulat. History: # On History Page History: 'Istoric' @@ -317,7 +356,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Sunteți sigur că doriți să eliminați toate abonamentele și profilurile? Acest lucru nu poate fi anulat.' - Automatically Remove Video Meta Files: Îndepărtați automat fișierele meta video Save Watched Videos With Last Viewed Playlist: Salvați videoclipurile vizionate cu ultima listă de redare vizualizată Subscription Settings: @@ -407,8 +445,8 @@ Settings: Hide Live Streams: Ascunde stream-urile live Hide Sharing Actions: Ascunde butoanele de sharing Hide Chapters: Ascundeți capitolele - Display Titles Without Excessive Capitalisation: Afișați titluri fără majuscule - excesive + Display Titles Without Excessive Capitalisation: Afișați titlurile fără majuscule + și semne de punctuație excesive Sections: Subscriptions Page: Pagina de abonamente Side Bar: Bară laterală @@ -424,7 +462,7 @@ Settings: Hide Channel Community: Ascunde comunitatea canalului Hide Channel Shorts: Ascundeți canalul Shorts Hide Featured Channels: Ascundeți canalele recomandate - Hide Channels Placeholder: Numele canalului sau ID-ul + Hide Channels Placeholder: ID-ul canalului Hide Channel Playlists: Ascunde playlisturile canalului Hide Upcoming Premieres: Ascundeți premierele viitoare Blur Thumbnails: Estomparea miniaturilor @@ -893,9 +931,6 @@ Hashtags have not yet been implemented, try again later: Hashtag-urile nu au fos Unknown YouTube url type, cannot be opened in app: Tip url YouTube necunoscut, nu poate fi deschis în aplicație Tooltips: - Privacy Settings: - Remove Video Meta Files: Atunci când este activat, FreeTube șterge automat fișierele - meta create în timpul redării video, atunci când pagina de vizionare este închisă. Subscription Settings: Fetch Feeds from RSS: Atunci când este activată, FreeTube va utiliza RSS în locul metodei implicite pentru a prelua feed-ul de abonament. RSS este mai rapid și diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index f1cec0bf7..b5a31e62e 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -1,7 +1,6 @@ -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: 'Файл' @@ -120,7 +119,7 @@ User Playlists: только те видео, которые вы сохранили или добавили в избранное. После переработки этой страницы все видео, которые сейчас находятся здесь, переместятся в подборку «Избранное». - Search bar placeholder: Поиск в подборке + Search bar placeholder: Поиск подборок Empty Search Message: В этой подборке нет видео, соответствующих вашему запросу This playlist currently has no videos.: Пока в этой подборке нет видео. Add to Playlist: Добавить в подборку @@ -162,6 +161,7 @@ User Playlists: This video cannot be moved up.: Это видео нельзя передвинуть вверх. This video cannot be moved down.: Это видео нельзя передвинуть вниз. Video has been removed: Видео было удалено + Search for Videos: Поиск видео AddVideoPrompt: N playlists selected: '{playlistCount} выбрано' Search in Playlists: Поиск подборок @@ -170,8 +170,8 @@ User Playlists: You haven't selected any playlist yet.: Ещё не выбрана ни одна подборка. "{videoCount} video(s) added to 1 playlist": 1 видео добавлено в 1 подборку | {videoCount} видео добавлено в 1 подборку - Select a playlist to add your N videos to: Выбери подборку на добавление твоего - видео | Выбери подборку на добавление твоих {videoCount} видео в неё + Select a playlist to add your N videos to: Выбери подборку на добавление видео + | Выбери подборку на добавление {videoCount} видео в неё CreatePlaylistPrompt: Toast: Playlist {playlistName} has been successfully created.: Подборка {playlistName} @@ -193,6 +193,8 @@ User Playlists: You have no playlists. Click on the create new playlist button to create a new one.: У тебя нет подборок. Нажми на кнопку создания новой подборки, чтобы создать новую. Create New Playlist: Создать новую подборку + Add to Favorites: Добавить в {playlistName} + Remove from Favorites: Убрать из {playlistName} History: # On History Page History: 'История' @@ -425,7 +427,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Выполнить удаление всех подписок и учётных записей? Невозможно отменить. Remove All Subscriptions / Profiles: Удалить все подписки/профили - Automatically Remove Video Meta Files: Автоудаление метафайлов видео Save Watched Videos With Last Viewed Playlist: Сохранить просмотренные видео с последней просмотренной подборкой Are you sure you want to remove all your playlists?: Ты действительно хочешь удалить @@ -506,8 +507,8 @@ Settings: Hide Upcoming Premieres: Скрыть предстоящие премьеры Hide Channels Placeholder: Идентификатор канала Hide Channels: Скрыть видео с каналов - Display Titles Without Excessive Capitalisation: Отображать заголовки без чрезмерного - использования заглавных букв + Display Titles Without Excessive Capitalisation: Отображать заголовки без сплошных + заглавных букв и знаков препинания Hide Featured Channels: Скрыть избранные каналы Hide Channel Playlists: Скрыть подборки канала Hide Channel Community: Скрыть сообщество канала @@ -531,6 +532,10 @@ Settings: Hide Channels Already Exists: Идентификатор канала уже существует Hide Channels API Error: Ошибка при получении пользователя с предоставленным идентификатором. Пожалуйста, проверьте еще раз, правильно ли указан идентификатор. + Hide Videos and Playlists Containing Text: Скрыть видео и подборки, содержащие + текст + Hide Videos and Playlists Containing Text Placeholder: Слово, часть слова, или + выражение The app needs to restart for changes to take effect. Restart and apply change?: Чтобы изменения вступили в силу, необходимо перезапустить приложение. Перезапустить и применить изменения? @@ -564,6 +569,9 @@ Settings: Do Nothing: Ничего не делать Category Color: Цвет категории UseDeArrowTitles: Использовать заголовки видео «DeArrow» + UseDeArrowThumbnails: Использовать DeArrow для заставок + 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': Адрес + набора функций (API) генератора заставок DeArrow (По умолчанию, это https://dearrow-thumb.ajay.app) External Player Settings: Custom External Player Arguments: Аргументы внешнего проигрывателя Custom External Player Executable: Исполняемый файл внешнего проигрывателя @@ -711,6 +719,7 @@ Channel: votes: 'Голосов: {votes}' Hide Answers: Скрыть ответы Reveal Answers: Раскрыть ответы + Video hidden by FreeTube: Видео скрыто FreeTube'ом Live: Live: Трансляции This channel does not currently have any live streams: На этом канале в настоящее @@ -870,6 +879,7 @@ Video: Pause on Current Video: Остановиться на текущем видео Hide Channel: Скрыть канал Unhide Channel: Показать канал + More Options: Больше настроек Videos: #& Sort By Sort By: @@ -1073,10 +1083,6 @@ Tooltips: H.264. Форматы DASH AV1 требуют большей производительности для воспроизведения! Они доступны не для всех видео. Если они будут недоступны, тогда проигрыватель будет использовать форматы DASH H.264. - Privacy Settings: - Remove Video Meta Files: Если эта настройка включена, FreeTube автоматически удаляет - метаданные, созданные во время воспроизведения видео, когда страница просмотра - закрывается. External Player Settings: Custom External Player Arguments: Любые пользовательские аргументы командной строки, разделенные точкой с запятой (';'), которые вы хотите передать внешнему проигрывателю. @@ -1101,9 +1107,14 @@ Tooltips: Введенный идентификатор канала должен полностью совпадать и чувствителен к регистру. Hide Subscriptions Live: Эта настройка переопределена общей настройкой «{appWideSetting}», в подразделе «{subsection}» раздела «{settingsSection}» + Hide Videos and Playlists Containing Text: 'Вставь слово, часть слова, или выражение + (вне зависимости от регистра), чтобы скрыть все видео и подборки, в чьих названиях + содержится что-либо вставленное сюда; за исключением только: истории, подборок + и видео в подборках.' SponsorBlock Settings: UseDeArrowTitles: Заменить пользовательски-размещённые заголовки на заголовки, предоставляемые «DeArrow». + UseDeArrowThumbnails: Заменить заставки видео, заставками от DeArrow. More: Больше Playing Next Video Interval: Воспроизведение следующего видео без задержки. Нажмите для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите @@ -1159,3 +1170,7 @@ Playlist will pause when current video is finished: Подборка остан видео закончится Channel Unhidden: '{channel} удалён из канального фильтровщика' Channel Hidden: '{channel} добавлен в канальный фильтровщик' +Age Restricted: + This channel is age restricted: Канал с возрастным ограничением + This video is age restricted: Видео с возрастным ограничением +Tag already exists: «{tagName}» метка уже существует diff --git a/static/locales/sat.yaml b/static/locales/sat.yaml index 22219df44..a8be0f7a5 100644 --- a/static/locales/sat.yaml +++ b/static/locales/sat.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ᱥᱟᱱᱛᱟᱲᱤ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ᱮᱯᱯ ᱨᱮᱭᱟᱜ ᱱᱚᱶᱟ ᱡᱟᱭᱜᱟ ᱵᱟᱝ ᱛᱮᱭᱟᱨ ᱡᱩᱛ ᱠᱟᱱᱟ ᱾ ᱠᱟᱹᱢᱤ ᱪᱟᱵᱟ ᱠᱟᱛᱮ ᱦᱟᱹᱡᱩᱜᱽ ᱢᱮᱸ ᱾ diff --git a/static/locales/si.yaml b/static/locales/si.yaml index b2a4be309..c6edfc65b 100644 --- a/static/locales/si.yaml +++ b/static/locales/si.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'සිංහල' -FreeTube: 'ෆ්‍රීටියුබ්' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- යෙදුමේ මෙම කොටස තවම සූදානම් නැත. ප්‍රගතියක් ලබා ඇති පසු නැවත එන්න. diff --git a/static/locales/sk.yaml b/static/locales/sk.yaml index 1882ad076..3fc5c2e47 100644 --- a/static/locales/sk.yaml +++ b/static/locales/sk.yaml @@ -1,4 +1,3 @@ -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.': >- Táto časť aplikácie ešte nie je dokončená. Vráťte sa neskôr keď na nej spravíme @@ -329,7 +328,6 @@ Settings: Are you sure you want to remove your entire watch history?: Naozaj chcete odstrániť celú históriu pozerania? Search cache has been cleared: Vyrovnávacia pamäť vyhľadávania bola vymazaná - Automatically Remove Video Meta Files: Automaticky Odstrániť Metasúbory Videa The app needs to restart for changes to take effect. Restart and apply change?: Aplikácia požaduje reštart, aby sa zmeny prejavili. Reštartovať a aplikovať zmeny? Proxy Settings: @@ -701,9 +699,6 @@ Tooltips: External Link Handling: "Vyberte predvolené správanie pri kliknutí na odkaz, ktorý nemožno otvoriť vo FreeTube.\nV predvolenom nastavení FreeTube otvorí odkaz, na ktorý ste klikli, vo vašom predvolenom prehliadači.\n" - Privacy Settings: - Remove Video Meta Files: Ak je povolené, FreeTube po zatvorení stránky prezerania - automaticky odstráni metasúbory vytvorené počas prehrávania videa. External Player Settings: DefaultCustomArgumentsTemplate: "(Predvolené: '{defaultCustomArguments}')" External Player: Po výbere externého prehrávača sa na miniatúre zobrazí ikona diff --git a/static/locales/sl.yaml b/static/locales/sl.yaml index 01fbe4264..64416d0fa 100644 --- a/static/locales/sl.yaml +++ b/static/locales/sl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'slovenščina' -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.': >- Ta del programa še ni pripravljen za uporabo. Prosimo, pridite nazaj kasneje, ko @@ -297,7 +296,6 @@ Settings: mogoče razveljaviti.' Save Watched Videos With Last Viewed Playlist: Shrani gledane videoposnetke z nazadnje ogledanim seznamom predvajanja - Automatically Remove Video Meta Files: Samodejno izbriši meta datoteke videoposnetkov Subscription Settings: Subscription Settings: 'Nastavitve naročnin' Hide Videos on Watch: 'Skrij gledane videoposnetke' diff --git a/static/locales/sm.yaml b/static/locales/sm.yaml index e80aadef6..871440bfe 100644 --- a/static/locales/sm.yaml +++ b/static/locales/sm.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Gagana Samoa' -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.': >- E le saauni le vaega o le polokalama lenei. Fa'amolemole toe fo'i mai afea na fai @@ -308,7 +307,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -803,8 +801,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index 0004b8f0d..291aac79c 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Српски' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Овај део апликације још није спреман. Вратите се касније када буде постигнут напредак. @@ -419,8 +418,6 @@ Settings: Remove All Subscriptions / Profiles: 'Уклони сва праћења/профиле' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Желите ли заиста да уклоните сва праћења и профиле? Ово се не може поништити.' - Automatically Remove Video Meta Files: Аутоматски уклони мета фајлове за видео - снимак Save Watched Videos With Last Viewed Playlist: Сачувај одгледане видео снимке са последње гледане плејлисте All playlists have been removed: Све плејлисте су уклоњене @@ -940,9 +937,6 @@ Tooltips: разликује велика и мала слова) да бисте сакрили све видео снимке и плејлисте чији их оригинални наслови садрже у целом FreeTube-у, искључујући само историју, ваше плејлисте и видео снимке унутар плејлиста. - Privacy Settings: - Remove Video Meta Files: Када је омогућено, FreeTube аутоматски брише мета фајлове - направљене током репродукције видео снимка, када се страница гледања затвори. Player Settings: Allow DASH AV1 formats: DASH AV1 формати могу изгледати боље од DASH H.264 формата. DASH AV1 формати захтевају више снаге за репродукцију! Они нису доступни на @@ -1122,3 +1116,5 @@ Close Banner: Затвори банер Age Restricted: This channel is age restricted: Овај канал је ограничен према узрасту This video is age restricted: Овај видео снимак је ограничен према узрасту +Display Label: '{label}: {value}' +checkmark: ✓ diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml index 1f8c8fac0..784b28a7c 100644 --- a/static/locales/sv.yaml +++ b/static/locales/sv.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Svenska' -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.': >- Den här delen av appen är inte klar än. Kom tillbaka senare när framsteg har gjorts. @@ -331,7 +330,6 @@ Settings: Remove All Subscriptions / Profiles: 'Ta bort alla prenumerationer och profiler' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Vill du verkligen ta bort alla prenumerationer och profiler? Detta kan inte ångras.' - Automatically Remove Video Meta Files: Ta automatiskt bort videons metafiler Save Watched Videos With Last Viewed Playlist: Spara sedda vidoer till Senast tittade spellista Subscription Settings: @@ -978,9 +976,6 @@ Tooltips: External Link Handling: "Välj standardförfarande när en länk klickas, som inte kan öppnas i FreeTube är. \nStandard är att FreeTube kommer öppna länken i din standardwebbläsare.\n" - Privacy Settings: - Remove Video Meta Files: Om vald, kommer FreeTube automatiskt att kasta metadata - filer som skapades under uppspelning, när sidan stängs. External Player Settings: Custom External Player Arguments: Alla anpassade kommandoradsargument, åtskilda av semikolon (';'), ska skickas till den externa spelaren. diff --git a/static/locales/ti.yaml b/static/locales/ti.yaml index 4de64898d..d45365585 100644 --- a/static/locales/ti.yaml +++ b/static/locales/ti.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ትግርኛ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- እዚ ኽፋል .app ምሉእ ኣይኰነን ። diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 2f83cfcf7..0aea069ae 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Türkçe' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Uygulamanın bu bölümü henüz hazır değil. Tamamlanınca geri gelin. @@ -412,8 +411,6 @@ Settings: Remove All Subscriptions / Profiles: 'Tüm Abonelikler/Profilleri Temizle' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tüm abonelikler/profilleri temizlemek istediğinizden emin misiniz? Geri alınamaz.' - Automatically Remove Video Meta Files: Video Meta Dosyalarını Otomatik Olarak - Kaldır Save Watched Videos With Last Viewed Playlist: İzlenen Videoları Son Görüntülenen Oynatma Listesiyle Kaydet All playlists have been removed: Tüm oynatma listeleri kaldırıldı @@ -1107,9 +1104,6 @@ Tooltips: External Link Handling: "FreeTube'da açılamayan bir bağlantı tıklandığında öntanımlı davranışı seçin.\nÖntanımlı olarak FreeTube, tıklanan bağlantıyı öntanımlı tarayıcınızda açacaktır.\n" - Privacy Settings: - Remove Video Meta Files: Etkinleştirildiğinde, izleme sayfası kapatıldığında video - oynatma sırasında oluşturulan meta dosyaları otomatik olarak silinir. External Player Settings: Custom External Player Arguments: Harici oynatıcıya iletmek isteyeceğiniz, noktalı virgülle (';') ayrılmış özel komut satırı argümanları. @@ -1214,3 +1208,5 @@ Close Banner: Afişi Kapat Age Restricted: This video is age restricted: Bu videoda yaş sınırlaması var This channel is age restricted: Bu kanalda yaş sınırlaması var +Display Label: '{label}: {value}' +checkmark: ✓ diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index a69e6c904..7c691b993 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Українська' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ця частина застосунка ще не готова. Поверніться пізніше. @@ -341,7 +340,6 @@ Settings: Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Справді хочете вилучити всі підписки та профілі? Цю дію не можна скасувати.' - Automatically Remove Video Meta Files: Автоматично вилучати метафайли відео Save Watched Videos With Last Viewed Playlist: Зберегти переглянуті відео у список відтворення, який ви переглядали останнім часом Subscription Settings: @@ -922,9 +920,6 @@ Tooltips: # Toast Messages Fetch Automatically: Якщо увімкнено, FreeTube автоматично отримуватиме вашу стрічку підписок під час відкриття нового вікна та за перемикання профілю. - Privacy Settings: - Remove Video Meta Files: Якщо увімкнено, FreeTube автоматично видаляє метафайли, - створені під час відтворення відео, коли сторінку перегляду закрито. External Player Settings: Custom External Player Arguments: Будь-які нетипові аргументи командного рядка розділяються (';') крапкою з комою, ви бажаєте, щоб вас було перенаправлено diff --git a/static/locales/ur.yaml b/static/locales/ur.yaml index cd84b2405..0c4030bfd 100644 --- a/static/locales/ur.yaml +++ b/static/locales/ur.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'اردو' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 'ایپ کا یہ حصہ ابھی تک تیار نہیں ہے۔ جب پیش رفت ہو جائے تو بعد میں واپس آئیں۔' @@ -201,9 +200,6 @@ Tooltips: کرے گا۔ آپ کی سبسکرپشن فیڈ حاصل کرنے کا طریقہ۔ آر ایس ایس تیز ہے اور آئی پی کو بلاک کرنے سے روکتا ہے، لیکن کچھ معلومات فراہم نہیں کرتا ہے جیسے ویڈیو کا دورانیہ یا لائیو اسٹیٹس' - Privacy Settings: - Remove Video Meta Files: 'فعال ہونے پر، FreeTube ویڈیو پلے بیک کے دوران بنائی - گئی میٹا فائلوں کو خود بخود حذف کر دیتا ہے، جب دیکھنے کا صفحہ بند ہوتا ہے۔' # Toast Messages This video is unavailable because of missing formats. This can happen due to country unavailability.: 'یہ diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml index b84a3936b..1ea7a3b42 100644 --- a/static/locales/vi.yaml +++ b/static/locales/vi.yaml @@ -1,5 +1,4 @@ Locale Name: Tiếng Việt -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.': >- Phần này của app vẫn chưa sẵn sàng. Quay lại sau khi quá trình đã được thực hiện. @@ -542,7 +541,6 @@ Settings: Save Watched Progress: Lưu quá trình xem Remember History: Nhớ lịch sử Privacy Settings: Cài đặt quyền riêng tư - Automatically Remove Video Meta Files: Tự động xóa các tệp meta video Remove All Playlists: Xóa tất cả danh sách phát Are you sure you want to remove all your playlists?: Bạn có chắc muốn xóa tất cả các danh sách phát không? @@ -1112,9 +1110,6 @@ Tooltips: hoặc trạng thái phát trực tiếp Fetch Automatically: Khi được bật, FreeTube sẽ tự động tìm nạp nguồn cấp dữ liệu đăng ký của bạn khi cửa sổ mới được mở và khi chuyển đổi hồ sơ. - Privacy Settings: - Remove Video Meta Files: Khi được bật lên, FreeTube sẽ tự động xóa các tệp meta - được tạo trong quá trình phát lại video, khi trang xem bị đóng. Distraction Free Settings: Hide Channels: Nhập tên kênh hoặc ID kênh để ẩn tất cả video, danh sách phát và chính kênh đó khỏi xuất hiện trong tìm kiếm, xu hướng, phổ biến nhất và được diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 52b2291b0..2e5be9357 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -1,4 +1,3 @@ -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.': >- 应用此部分尚未完成。有了进展再来。 @@ -403,7 +402,6 @@ Settings: Clear Search Cache: 清除搜索缓存 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您确定您想移除所有订阅和配置文件吗?这无法撤销。 Remove All Subscriptions / Profiles: 移除所有订阅 / 配置文件 - Automatically Remove Video Meta Files: 自动删除硬盘元数据文件 Save Watched Videos With Last Viewed Playlist: 记住上次看过的播放列表中看过的视频 ID All playlists have been removed: 已删除所有播放列表 Remove All Playlists: 删除所有播放列表 @@ -979,8 +977,6 @@ Tooltips: DefaultCustomArgumentsTemplate: "(默认: '{defaultCustomArguments}')" Custom External Player Arguments: 任何你希望传递给外部播放器的用分号(';')分隔的自定义命令行参数。 Ignore Default Arguments: 不要向外部播放器发送除视频 URL 外的任何默认变量(如播放速度、播放列表 URL 等)。自定义变量仍将被传递。 - Privacy Settings: - Remove Video Meta Files: 启用后,当观看页面关闭时,FreeTube 会自动删除在视频播放时创建的元文件。 Experimental Settings: Replace HTTP Cache: 禁用 Electron 基于磁盘的 HTTP 缓存,启用自定义内存中图像缓存。会增加内存的使用。 Distraction Free Settings: @@ -1044,3 +1040,5 @@ Close Banner: 关闭横幅 Age Restricted: This video is age restricted: 此视频有年龄限制 This channel is age restricted: 此频道有年龄限制 +checkmark: ✓ +Display Label: '{label}: {value}' diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index daae2fb45..863a6f341 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -1,4 +1,3 @@ -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.': >- 此功能尚未製作完成。有更新再來喔。 @@ -405,7 +404,6 @@ Settings: Privacy Settings: 隱私設定 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。 Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔 - Automatically Remove Video Meta Files: 自動刪除影片元檔案 Save Watched Videos With Last Viewed Playlist: 使用上次觀看的播放清單儲存觀看的影片 Remove All Playlists: 移除所有播放清單 All playlists have been removed: 所有播放清單已被移除 @@ -983,8 +981,6 @@ Tooltips: API 需要 Invidious 伺服器才能連線。 Region for Trending: 熱門影片區域可以讓您選擇想要顯示哪個國家的熱門影片。 External Link Handling: "選擇點擊後無法在 FreeTube 中開啟連結時的預設行為。\n預設情況下 FreeTube 將會在您的預設瀏覽器中開啟點擊的連結。\n" - Privacy Settings: - Remove Video Meta Files: 如果啟用,FreeTube會在關閉觀看頁面時,自動刪除影片播放過程中建立的暫存檔案。 External Player Settings: Custom External Player Arguments: 任何您想要傳遞給外部播放程式的自訂命令列參數,以半形冒號分隔 (';')。 Ignore Warnings: 當目前的外部播放程式不支援目前動作時(例如反向播放清單等等),消除警告。 @@ -1054,3 +1050,5 @@ Close Banner: 關閉橫幅 Age Restricted: This channel is age restricted: 此頻道有年齡限制 This video is age restricted: 此影片有年齡限制 +checkmark: ✓ +Display Label: '{label}:{value}' diff --git a/yarn.lock b/yarn.lock index bfb7a7bf7..37d3da3c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,23 +28,23 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" - integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" - integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== +"@babel/core@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.1" + "@babel/generator" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.1" - "@babel/parser" "^7.24.1" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" "@babel/template" "^7.24.0" "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" @@ -63,10 +63,10 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" - integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== +"@babel/generator@^7.24.1", "@babel/generator@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== dependencies: "@babel/types" "^7.24.0" "@jridgewell/gen-mapping" "^0.3.5" @@ -133,6 +133,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" + integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" @@ -350,10 +365,10 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" - integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== +"@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== dependencies: "@babel/template" "^7.24.0" "@babel/traverse" "^7.24.1" @@ -369,10 +384,18 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" - integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== +"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" + integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": version "7.24.1" @@ -571,10 +594,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-block-scoping@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f" - integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw== +"@babel/plugin-transform-block-scoping@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" + integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== dependencies: "@babel/helper-plugin-utils" "^7.24.0" @@ -586,12 +609,12 @@ "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-class-static-block@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6" - integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA== +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.4" "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -925,15 +948,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/preset-env@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3" - integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA== +"@babel/preset-env@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" + integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== dependencies: - "@babel/compat-data" "^7.24.1" + "@babel/compat-data" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-plugin-utils" "^7.24.0" "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" @@ -960,9 +984,9 @@ "@babel/plugin-transform-async-generator-functions" "^7.24.3" "@babel/plugin-transform-async-to-generator" "^7.24.1" "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.4" "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" "@babel/plugin-transform-classes" "^7.24.1" "@babel/plugin-transform-computed-properties" "^7.24.1" "@babel/plugin-transform-destructuring" "^7.24.1" @@ -1032,6 +1056,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.14.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" + integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.6", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -1182,6 +1213,21 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint/eslintrc@^1.2.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1207,31 +1253,31 @@ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== -"@fortawesome/fontawesome-common-types@6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz#fdb1ec4952b689f5f7aa0bffe46180bb35490032" - integrity sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A== +"@fortawesome/fontawesome-common-types@6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz#eaf2f5699f73cef198454ebc0c414e3688898179" + integrity sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw== -"@fortawesome/fontawesome-svg-core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz#9d56d46bddad78a7ebb2043a97957039fcebcf0a" - integrity sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ== +"@fortawesome/fontawesome-svg-core@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz#4b42de71e196039b0d5ccf88559b8044e3296c21" + integrity sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" -"@fortawesome/free-brands-svg-icons@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.1.tgz#e948cc02404277cb8ad40fe3573ca75f2830e876" - integrity sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg== +"@fortawesome/free-brands-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz#bfca0cebd2c4713dc93244e1fa8b384f1f023587" + integrity sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" -"@fortawesome/free-solid-svg-icons@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz#737b8d787debe88b400ab7528f47be333031274a" - integrity sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ== +"@fortawesome/free-solid-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz#9b40b077b27400a5e9fcbf2d15b986c7be69e9ca" + integrity sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" "@fortawesome/vue-fontawesome@^2.0.10": version "2.0.10" @@ -1257,6 +1303,48 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== +"@intlify/core-base@^9.1.9": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.10.1.tgz#e61d507d35beb0c69f9c94566313f9520c25a84a" + integrity sha512-0+Wtjj04GIyglh5KKiNjRwgjpHrhqqGZhaKY/QVjjogWKZq5WHROrTi84pNVsRN18QynyPmjtsVUWqFKPQ45xQ== + dependencies: + "@intlify/message-compiler" "9.10.1" + "@intlify/shared" "9.10.1" + +"@intlify/eslint-plugin-vue-i18n@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-2.0.0.tgz#7308327452742c07e4aef8735f6a4b17cefd58f5" + integrity sha512-ECBD0TvQNa56XKyuM6FPIGAAl7MP6ODcgjBQJrzucNxcTb8fYTWmZ+xgBuvmvAtA0iE0D4Wp18UMild2N0bGyw== + dependencies: + "@eslint/eslintrc" "^1.2.0" + "@intlify/core-base" "^9.1.9" + "@intlify/message-compiler" "^9.1.9" + debug "^4.3.1" + glob "^8.0.0" + ignore "^5.0.5" + is-language-code "^3.1.0" + js-yaml "^4.0.0" + json5 "^2.1.3" + jsonc-eslint-parser "^2.0.0" + lodash "^4.17.11" + parse5 "^7.0.0" + semver "^7.3.4" + vue-eslint-parser "^9.0.0" + yaml-eslint-parser "^1.0.0" + +"@intlify/message-compiler@9.10.1", "@intlify/message-compiler@^9.1.9": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.10.1.tgz#d70c9ec211dab67d50a42ad1fb782c0e02f89c42" + integrity sha512-b68UTmRhgZfswJZI7VAgW6BXZK5JOpoi5swMLGr4j6ss2XbFY13kiw+Hu+xYAfulMPSapcHzdWHnq21VGnMCnA== + dependencies: + "@intlify/shared" "9.10.1" + source-map-js "^1.0.2" + +"@intlify/shared@9.10.1": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.10.1.tgz#024ad6dd4ee9581962437570b3dc25516c82f4e9" + integrity sha512-liyH3UMoglHBUn70iCYcy9CQlInx/lp50W2aeSxqqrvmG+LDj/Jj7tBJhBoQL4fECkldGhbmW0g2ommHfL6Wmw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2978,16 +3066,16 @@ css-functions-list@^3.2.1: resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.1.tgz#2eb205d8ce9f9ce74c5c1d7490b66b77c45ce3ea" integrity sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ== -css-loader@^6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== +css-loader@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.0.0.tgz#3456a621ce51f9dfd12b9674bfc7527c5e1821db" + integrity sha512-WrO4FVoamxt5zY9CauZjoJgXRi/LZKIk+Ta7YvpSGr5r/eMYPNp5/T9ODlMe4/1rF5DYlycG1avhV4g3A/tiAw== dependencies: icss-utils "^5.1.0" postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" semver "^7.5.4" @@ -3492,10 +3580,10 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46" integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg== -electron@^29.1.6: - version "29.1.6" - resolved "https://registry.yarnpkg.com/electron/-/electron-29.1.6.tgz#3804545a7570e88717f01e02ec871c667c55e596" - integrity sha512-UIYfpHR9gRBFKHyejHuXUVQ7nNzZRnoPVOHlijkvqR+DSLwgJ2ZcVVt0LNduNeO8PhPkY1+6kHonL52OTC1cOw== +electron@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-29.2.0.tgz#98e9d45dcebda124fb0bd1ff20fc509ec692101c" + integrity sha512-ALKrCN52RG4g9prx4DriXSPnY5WoiyRUCNp7zEVQuoiNOpHTNqMMpRidQAHzntV4hajF1LMWHVoBkwqIs1jHhg== dependencies: "@electron/get" "^2.0.0" "@types/node" "^20.9.0" @@ -3551,6 +3639,11 @@ entities@^4.2.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -3976,7 +4069,7 @@ eslint@^8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.0.0, espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: +espree@^9.0.0, espree@^9.3.1, espree@^9.4.0, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -4551,6 +4644,17 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-agent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -4948,7 +5052,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: +ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== @@ -5187,6 +5291,13 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" +is-language-code@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-language-code/-/is-language-code-3.1.0.tgz#b2386b49227e7010636f16d0c2c681ca40136ab5" + integrity sha512-zJdQ3QTeLye+iphMeK3wks+vXSRFKh68/Pnlw7aOfApFSEIOhYa8P9vwwa6QrImNNBMJTiL1PpYF0f4BxDuEgA== + dependencies: + "@babel/runtime" "^7.14.0" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -5427,7 +5538,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^4.1.0: +js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -5508,11 +5619,21 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.0, json5@^2.2.3: +json5@^2.1.3, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-eslint-parser@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" + integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + jsonc-eslint-parser@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.1.0.tgz#4c126b530aa583d85308d0b3041ff81ce402bbb2" @@ -5596,59 +5717,59 @@ lazy-val@^1.0.4, lazy-val@^1.0.5: resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lefthook-darwin-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.7.tgz#24fd8600a483e6d88ff504ad6097ac9146b74552" - integrity sha512-/Li1ssZd8WYpBMq2Aqs7AZGWtKpJQJkWkfrEzT6ke7gjNngBurRkVJcEpoiRJpzhk6J+HZTk3Pimh8XaYI0KHw== +lefthook-darwin-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.8.tgz#ce7225a8589fb17f1ec130cb7097b26e2cd2b40a" + integrity sha512-L7iZVANp92MsYHRlpOlItXWGS6QL0w1E6T5GO00SGVoVPClA+Tkt26BFPhLZKa3pMbSHEhGTHeBMWJZ2Un/TnQ== -lefthook-darwin-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.7.tgz#a4a7cf916e1e251026dcb8644155d1e65d5fb8cb" - integrity sha512-ZKRUFea0j/pco3NoypOHlzmSaYx5UYq47qywiqMUDmXz/38sjRlt8apKSNS3rlsPyPw+9g1c+pWwi+mQiHOnDg== +lefthook-darwin-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.8.tgz#534cc97c0eaa1febca9fb5be6e6793da5d10a20f" + integrity sha512-BhYwl1CBi0eKKfsD9Bd6a6wmmaLHaZEBS5PlGc0h8hRWxC+CmBZyR0VDqXli9yxmgraI6psehM+w1v7RkP5pSg== -lefthook-freebsd-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.7.tgz#89417428f50ff6eaa5114356758b6a9605442b35" - integrity sha512-kY1/+SqxGg4xyKCXOZG9tSmBSHr1m7IoGy4G4FlbmLcZeq4n1JUlhPz/05rbIemR7HXOwA5CAGyjooxT4hNfyw== +lefthook-freebsd-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.8.tgz#bd32db03d72fb4df197c93e2759d4ef9a902255a" + integrity sha512-pr86NVKUOiK0MwW2UZRLiDlYLV8XaqxKWRltVut4W78Ywb0PNTb3k4LVeMwfXiNqEgD8gug9vE8aZY1U3D2HMA== -lefthook-freebsd-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.7.tgz#9fd69a1d7b4b9622c01f6ccbb9e2db9a510c07c6" - integrity sha512-rC9/G6WPKWyxNB68HsUxngOdcTAHTux04LgDgC0j6OOFgpo8cEYHSNTHv4ERz79FxCPBmNe4Cg+mIXHYg8b8RQ== +lefthook-freebsd-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.8.tgz#171c1c829cde0f7f27943cb483254b078b50b632" + integrity sha512-pyzYRCHf6jSWoZJG22kE7KFbHQ1B6sHcxXP9o/Y5H8T/sHUxO03GEtdrGwyijMP0EJYb1vMfVWYY5WbWfg6SPg== -lefthook-linux-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.7.tgz#2c7663ed6363751fa264d1e54322b1dd05dc1970" - integrity sha512-3MAfA/cAgA7716C04XkSoyfMDXkOZDx9k2BkZdOwt35TBjxz6fkinYeeOvszGBSfeOFNQHIYYFgHazEaFVzrjQ== +lefthook-linux-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.8.tgz#91441885e12d8da096bffa14ef3eaccc5dde0c36" + integrity sha512-1VsEnfxWhs8YLMUnlYdbLBLldJrqJi/G2Isrvx0KBBu/nILxMmNa5GIQo8uqeeufmi/WVc8g3xgJtPxSp3NXnw== -lefthook-linux-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.7.tgz#a3a24f465487f9cbf1df5ca2a2ce59e93f0e7329" - integrity sha512-VzgNM0bJyzakrhjFZbTYrwli0L6bY1bk6SKhyFAYToH8/rI6pjlinSgu1VTAamXhxmA7YaRB8/5OJEjhvb0aKg== +lefthook-linux-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.8.tgz#aa3baa4581251dc508a109ebe470888f3a3e0b32" + integrity sha512-0e4GSPBhJkngO4qAX5bqJLYTftrBfulLiwbsWX6hx4SWFY3kFpCLtAYD8zfvfQaAfwb9Ieut2XnqcE9mNfI9+Q== -lefthook-windows-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.7.tgz#018479d901b00d2f5c4374bc2d137d972ab185de" - integrity sha512-naV4612JbrOCRZSWVS0Y1BzREHDLyCWC9eHqDG8XTGC1NJ/vM3ip2j9hHHF/GPSceazs82Tog2rSpJ9q8JZ0IQ== +lefthook-windows-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.8.tgz#6d3b98570bb93c3742d5fa42fc5ba04417eddb99" + integrity sha512-bVYRF4mBcT2T5/uN5pJpk9jqvik8JLtgRL+BxTKPshuVFO2nJczgdX1lWRnveGyz84DHwYgu+GwYl7PLjGU28A== -lefthook-windows-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.7.tgz#240c55e3aac9425a55b1b9fd7f162bcc0a231e45" - integrity sha512-U0jwO5CTya9yo1G+946ULBhH3Nl6j+WOqYz7rWJQIIFNe0mvethmAv+aLKMNrAWgOZ+gX0A7++cqdUOl9LoVwQ== +lefthook-windows-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.8.tgz#7f484559becb43237d8be8d83ea87f53cbaaebfa" + integrity sha512-cT3ZopXAFyEsfkRf+wRwINBPWUMYi2Wba59BqN8JU/Tfuuv7Of2e51u+VTsHMR+8+JdEt3A8Kl20xw24E8ccAg== -lefthook@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.7.tgz#e6cbb0b2e7bc0110df64ea78eb354993c0990147" - integrity sha512-glQisTn0oMXfWv58MBE54wOPez8T06dqcEGrfz73RlvOi/kvbu59oockEvMYs4RfvowQirF0ncp+JHWJbDMRgQ== +lefthook@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.8.tgz#d0f3a76c626d8945179dcb201c0756ec66be5e69" + integrity sha512-h+5S3FLhErIrVTz+uLaysS0kATlzCW8Wa1DUqpu0rYsimsEk/TrP9cMnTVd0UKq3Ks2ooq5pCUmnipJy5zl1VQ== optionalDependencies: - lefthook-darwin-arm64 "1.6.7" - lefthook-darwin-x64 "1.6.7" - lefthook-freebsd-arm64 "1.6.7" - lefthook-freebsd-x64 "1.6.7" - lefthook-linux-arm64 "1.6.7" - lefthook-linux-x64 "1.6.7" - lefthook-windows-arm64 "1.6.7" - lefthook-windows-x64 "1.6.7" + lefthook-darwin-arm64 "1.6.8" + lefthook-darwin-x64 "1.6.8" + lefthook-freebsd-arm64 "1.6.8" + lefthook-freebsd-x64 "1.6.8" + lefthook-linux-arm64 "1.6.8" + lefthook-linux-x64 "1.6.8" + lefthook-windows-arm64 "1.6.8" + lefthook-windows-x64 "1.6.8" levn@^0.4.1: version "0.4.1" @@ -5752,7 +5873,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6399,6 +6520,13 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -6669,24 +6797,24 @@ postcss-minify-selectors@^6.0.2: dependencies: postcss-selector-parser "^6.0.15" -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" - integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" - integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: postcss-selector-parser "^6.0.4" @@ -7072,6 +7200,11 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" @@ -7374,10 +7507,10 @@ sass-loader@^14.1.1: dependencies: neo-async "^2.6.2" -sass@^1.72.0: - version "1.72.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" - integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== +sass@^1.74.1: + version "1.74.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.74.1.tgz#686fc227d3707dd25cb2925e1db8e4562be29319" + integrity sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -7435,7 +7568,7 @@ semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.2, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -7650,7 +7783,7 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -8071,9 +8204,9 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^6.1.12: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -8565,7 +8698,7 @@ vue-devtools@^5.1.4: resolved "https://registry.yarnpkg.com/vue-devtools/-/vue-devtools-5.1.4.tgz#265a7458ade2affb291739176964256b597fa302" integrity sha512-EBAEXvAHUinsPzoSiElps0JgtLXUnJXKIJbP6nfdz/R63VdKBMfJ34/rFip+4iT7iMbVS5lA4W6N1jq4Hj4LCg== -vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2: +vue-eslint-parser@^9.0.0, vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2: version "9.4.2" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz#02ffcce82042b082292f2d1672514615f0d95b6d" integrity sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ== @@ -8906,7 +9039,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2: +yaml-eslint-parser@^1.0.0, yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz#1a9673ebe254328cfc2fa99f297f6d8c9364ccd8" integrity sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==