From fd25f61a5261d2831a03998f7e00e93c2cf9b90d Mon Sep 17 00:00:00 2001
From: efb4f5ff-1298-471a-8973-3d47447115dc
<73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>
Date: Fri, 12 Jul 2024 04:18:06 +0000
Subject: [PATCH 001/489] Delete .github/workflows/report.yml (#5395)
---
.github/workflows/report.yml | 70 ------------------------------------
1 file changed, 70 deletions(-)
delete mode 100644 .github/workflows/report.yml
diff --git a/.github/workflows/report.yml b/.github/workflows/report.yml
deleted file mode 100644
index 834da028dd957..0000000000000
--- a/.github/workflows/report.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-# This is a basic workflow to help you get started with Actions
-
-name: Project Board Automation
-
-on:
- issues:
- types: [closed, deleted, reopened, opened]
-
-jobs:
- assign-issues-to-projects:
- runs-on: ubuntu-latest
- steps:
-
- # For bug reports
- - name: New bug issue
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: contains(github.event.issue.labels.*.name, 'bug') && github.event.action == 'opened'
- with:
- project: Bug Reports
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
- action: update
-
- - name: Bug issue closed
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: github.event.action == 'closed' || github.event.action == 'deleted'
- with:
- action: delete
- project: Bug Reports
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
-
- - name: Bug issue reopened
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: contains(github.event.issue.labels.*.name, 'bug') && github.event.action == 'reopened'
- with:
- project: Bug Reports
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
- action: update
-
- # For feature requests
- - name: New feature issue
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: contains(github.event.issue.labels.*.name, 'enhancement') && github.event.action == 'opened'
- with:
- project: Feature Requests
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
- action: update
-
- - name: Feature request issue closed
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: github.event.action == 'closed' || github.event.action == 'deleted'
- with:
- action: delete
- project: Feature Requests
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
-
- - name: Feature request issue reopened
- uses: alex-page/github-project-automation-plus@v0.9.0
- if: contains(github.event.issue.labels.*.name, 'enhancement') && github.event.action == 'reopened'
- with:
- project: Feature Requests
- column: To assign
- repo-token: ${{ secrets.PUSH_TOKEN }}
- action: update
-
-
From e3f9d674bcce28acc1861bdc4f6e818d660650ca Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Fri, 12 Jul 2024 10:47:26 +0200
Subject: [PATCH 002/489] Fix about page not reacting to locale changes (#5393)
---
src/renderer/views/About/About.js | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/renderer/views/About/About.js b/src/renderer/views/About/About.js
index 8a9e772b1e1e0..54b1c34fc8833 100644
--- a/src/renderer/views/About/About.js
+++ b/src/renderer/views/About/About.js
@@ -12,8 +12,12 @@ export default defineComponent({
},
data: function () {
return {
- versionNumber: `v${packageDetails.version}`,
- chunks: [
+ versionNumber: `v${packageDetails.version}`
+ }
+ },
+ computed: {
+ chunks: function () {
+ return [
{
icon: ['fab', 'github'],
title: this.$t('About.Source code'),
@@ -74,7 +78,7 @@ export default defineComponent({
title: `${this.$t('About.Donate')} - BTC`,
content: `${ABOUT_BITCOIN_ADDRESS}`
}
- ],
+ ]
}
}
})
From ad67d04c2fa3683285615e44706907df7ddff69d Mon Sep 17 00:00:00 2001
From: Emma
Date: Fri, 12 Jul 2024 05:30:29 -0400
Subject: [PATCH 003/489] Add checking for new nightly versions within nightly
(can still be disabled the same way as normal)
---
src/renderer/App.js | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/renderer/App.js b/src/renderer/App.js
index 628d37209a074..19a3bb993aacb 100644
--- a/src/renderer/App.js
+++ b/src/renderer/App.js
@@ -54,7 +54,8 @@ export default defineComponent({
externalLinkOpeningPromptValues: [
'yes',
'no'
- ]
+ ],
+ nightlyLink: ''
}
},
computed: {
@@ -279,6 +280,23 @@ export default defineComponent({
.catch((error) => {
console.error('errored while checking for updates', requestUrl, error)
})
+ } else {
+ // nightly check
+ fetch('https://api.github.com/repos/MarmadileManteater/FreetubeAndroid/actions/runs')
+ .then((response) => response.json())
+ .then((json) => {
+ const currentAppWorkflowRun = packageDetails.version.split('-nightly-')[1]
+ const buildRuns = json.workflow_runs.filter(run => run.name === 'Build Android')
+ if (buildRuns.length > 0) {
+ if (currentAppWorkflowRun < buildRuns[0].run_number) {
+ this.updateChangelog = marked.parse(`latest commit:\r\n\`\`\`\r\n${buildRuns[0].head_commit.message}\r\n\`\`\``)
+ this.changeLogTitle = `Nightly ${buildRuns[0].run_number}`
+ this.updateBannerMessage = this.$t('Version $ is now available! Click for more details').replace('$', buildRuns[0].run_number)
+ this.nightlyLink = buildRuns[0].html_url
+ this.showUpdatesBanner = true
+ }
+ }
+ })
}
}
},
@@ -337,7 +355,9 @@ export default defineComponent({
},
openDownloadsPage: function () {
- const url = 'https://github.com/MarmadileManteater/FreeTubeCordova/releases'
+ const url = packageDetails.version.indexOf('-nightly-') === -1
+ ? 'https://github.com/MarmadileManteater/FreeTubeCordova/releases'
+ : this.nightlyLink
openExternalLink(url)
this.showReleaseNotes = false
this.showUpdatesBanner = false
From 08c4e8f040a0df4d6f8d1c4f92f1dc77953d0d65 Mon Sep 17 00:00:00 2001
From: Emma
Date: Sat, 13 Jul 2024 11:24:06 -0400
Subject: [PATCH 004/489] Add in-app viewer for console log
(only visible in non-release builds)
---
.../freetube/FreeTubeJavaScriptInterface.kt | 12 ++
.../io/freetubeapp/freetube/MainActivity.kt | 18 +++
src/renderer/App.js | 4 +-
src/renderer/App.vue | 1 +
.../fta-log-viewer/fta-log-viewer.css | 93 +++++++++++++
.../fta-log-viewer/fta-log-viewer.js | 131 ++++++++++++++++++
.../fta-log-viewer/fta-log-viewer.vue | 53 +++++++
.../side-nav-more-options.js | 10 ++
.../side-nav-more-options.vue | 26 ++++
src/renderer/components/side-nav/side-nav.js | 14 ++
src/renderer/components/side-nav/side-nav.vue | 26 ++++
src/renderer/helpers/android.js | 4 +
src/renderer/main.js | 6 +
src/renderer/store/modules/utils.js | 17 +++
static/locales-android/en-US.yaml | 2 +
15 files changed, 416 insertions(+), 1 deletion(-)
create mode 100644 src/renderer/components/fta-log-viewer/fta-log-viewer.css
create mode 100644 src/renderer/components/fta-log-viewer/fta-log-viewer.js
create mode 100644 src/renderer/components/fta-log-viewer/fta-log-viewer.vue
diff --git a/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt b/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
index 32b39a42808c0..efa6bd85b619c 100644
--- a/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
+++ b/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
@@ -52,6 +52,18 @@ class FreeTubeJavaScriptInterface {
lastState = PlaybackState.STATE_PLAYING
}
+ @JavascriptInterface
+ fun getLogs(): String {
+ var logs = "["
+ for (message in context.consoleMessages) {
+ logs += "${message},"
+ }
+ // get rid of trailing comma
+ logs = logs.substring(0, logs.length - 1)
+ logs += "]"
+ return logs
+ }
+
/**
* @param directory a shortened directory uri
* @return a full directory uri
diff --git a/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt b/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
index 8c164b7728985..5994ef2340a1e 100644
--- a/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
+++ b/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
@@ -9,6 +9,7 @@ import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver
+import android.webkit.ConsoleMessage
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebView
@@ -24,8 +25,10 @@ import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import io.freetubeapp.freetube.databinding.ActivityMainBinding
+import org.json.JSONObject
import java.net.URLEncoder
import java.util.Base64
+import java.util.UUID
import java.util.concurrent.BlockingQueue
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.ThreadPoolExecutor
@@ -44,6 +47,7 @@ class MainActivity : AppCompatActivity(), OnRequestPermissionsResultCallback {
lateinit var jsInterface: FreeTubeJavaScriptInterface
lateinit var activityResultLauncher: ActivityResultLauncher
lateinit var content: View
+ var consoleMessages: MutableList = mutableListOf()
var showSplashScreen: Boolean = true
var darkMode: Boolean = false
var paused: Boolean = false
@@ -164,6 +168,20 @@ class MainActivity : AppCompatActivity(), OnRequestPermissionsResultCallback {
webView.addJavascriptInterface(jsInterface, "Android")
webView.webChromeClient = object: WebChromeClient() {
+ override fun onConsoleMessage(consoleMessage: ConsoleMessage): Boolean {
+ val messageData = JSONObject()
+ messageData.put("content", consoleMessage.message())
+ messageData.put("level", consoleMessage.messageLevel())
+ messageData.put("timestamp", System.currentTimeMillis())
+ messageData.put("id", UUID.randomUUID())
+ messageData.put("key", "${messageData["id"]}-${messageData["timestamp"]}")
+ messageData.put("sourceId", consoleMessage.sourceId())
+ messageData.put("lineNumber", consoleMessage.lineNumber())
+ consoleMessages.add(messageData)
+ webView.loadUrl("javascript: var event = new Event(\"console-message\"); event.data = JSON.parse(${btoa(messageData.toString())}); window.dispatchEvent(event)")
+ return super.onConsoleMessage(consoleMessage);
+ }
+
override fun onShowCustomView(view: View?, callback: CustomViewCallback?) {
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
fullscreenView = view!!
diff --git a/src/renderer/App.js b/src/renderer/App.js
index 19a3bb993aacb..40864ea1fd1ae 100644
--- a/src/renderer/App.js
+++ b/src/renderer/App.js
@@ -11,6 +11,7 @@ import FtProgressBar from './components/ft-progress-bar/ft-progress-bar.vue'
import FtPlaylistAddVideoPrompt from './components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue'
import FtCreatePlaylistPrompt from './components/ft-create-playlist-prompt/ft-create-playlist-prompt.vue'
import FtSearchFilters from './components/ft-search-filters/ft-search-filters.vue'
+import FtaLogViewer from './components/fta-log-viewer/fta-log-viewer.vue'
import { marked } from 'marked'
import { IpcChannels } from '../constants'
import packageDetails from '../../package.json'
@@ -35,7 +36,8 @@ export default defineComponent({
FtProgressBar,
FtPlaylistAddVideoPrompt,
FtCreatePlaylistPrompt,
- FtSearchFilters
+ FtSearchFilters,
+ FtaLogViewer
},
data: function () {
return {
diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 77392ea9defac..6d8880aa1a55a 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -56,6 +56,7 @@
+
.log,
+.logs > .warning,
+.logs > .error {
+ padding: 10px;
+}
+
+.logs > .log {
+ background-color: var(--card-bg-color);
+ border-block-end: 2px solid var(--secondary-card-bg-color);
+}
+
+.logs > .warning {
+ background-color: #332b00;
+ color: #ee9836;
+ border-block-end: 1px solid #ee9836;
+}
+
+.logs > .error {
+ background-color: #290000;
+ color: #e46962;
+ border-block-end: 1px solid #e46962;
+}
+
+[data-theme="light"] .logs > .warning {
+ background-color: #fef6d5;
+ color: #3e2f00;
+ border-block-end: 2px solid var(--card-bg-color);
+}
+
+.content {
+ overflow-wrap: break-word;
+}
+
+.source {
+ display: block;
+ direction: rtl;
+ overflow: hidden;
+ text-wrap: nowrap;
+ text-overflow: ellipsis;
+}
+
+.log .source {
+ font-weight: bold;
+}
+
+.timestamp {
+ text-align: end;
+ display: block;
+}
+
+.error .source, .warning .source {
+ color: #fff;
+}
+
+[data-theme="light"] .source,
+[data-theme="light"] .error {
+ color: #000;
+}
+
+[data-theme="light"] .logs > .error {
+ background-color: #fcebeb;
+ color: #410e0b;
+ border-block-end: 2px solid var(--card-bg-color);
+}
+
+
+@media (width <= 420px) {
+ .logs-wrapper .actions-container {
+ padding: 23px;
+ flex-grow: 1;
+ }
+}
diff --git a/src/renderer/components/fta-log-viewer/fta-log-viewer.js b/src/renderer/components/fta-log-viewer/fta-log-viewer.js
new file mode 100644
index 0000000000000..180f69057e40a
--- /dev/null
+++ b/src/renderer/components/fta-log-viewer/fta-log-viewer.js
@@ -0,0 +1,131 @@
+import { defineComponent } from 'vue'
+import { mapActions } from 'vuex'
+import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
+import FtPrompt from '../ft-prompt/ft-prompt.vue'
+import FtButton from '../ft-button/ft-button.vue'
+import { getConsoleLogs, isColourDark } from '../../helpers/android'
+import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
+import packageDetails from '../../../../package.json'
+
+export default defineComponent({
+ name: 'FtaLogViewer',
+ components: {
+ 'ft-flex-box': FtFlexBox,
+ 'ft-prompt': FtPrompt,
+ 'ft-button': FtButton,
+ 'font-awesome-icon': FontAwesomeIcon
+ },
+ props: {
+ logLimit: {
+ type: Number,
+ default: 50
+ }
+ },
+ data() {
+ return {
+ usingAndroid: process.env.IS_ANDROID,
+ // release builds are the only ones with 3 periods in version numbers
+ usingRelease: packageDetails.version.split('.').length - 1 === 3,
+ theme: this.getThemeFromBody(),
+ logs: []
+ }
+ },
+ computed: {
+ baseTheme() {
+ return this.$store.getters.getBaseTheme
+ },
+ shown() {
+ return this.$store.getters.getShowLogViewer
+ },
+ hidden() {
+ return !this.$store.getters.getShowLogViewer
+ },
+ logsReversed() {
+ const result = []
+ for (let i = this.logs.length - 1; i >= 0; i--) {
+ result.push(this.logs[i])
+ }
+ return result
+ }
+ },
+ watch: {
+ baseTheme() {
+ this.theme = this.getThemeFromBody()
+ }
+ },
+ mounted() {
+ window.addEventListener('enabled-light-mode', this.onLightModeEnabled)
+ window.addEventListener('enabled-dark-mode', this.onDarkModeEnabled)
+ // when mounted, backfill the logs so far
+ this.logs.push(...getConsoleLogs())
+ window.addEventListener('console-message', this.onConsoleMessage)
+ },
+ beforeDestroy() {
+ window.removeEventListener('enabled-light-mode', this.onLightModeEnabled)
+ window.removeEventListener('enabled-dark-mode', this.onDarkModeEnabled)
+ this.logs = []
+ window.removeEventListener('console-message', this.onConsoleMessage)
+ },
+ methods: {
+ getFaIconFromLevel(level) {
+ switch (level) {
+ case 'WARNING':
+ return 'triangle-exclamation'
+ case 'ERROR':
+ return 'circle-xmark'
+ default:
+ return null
+ }
+ },
+ removeQueryString(path) {
+ if (path.indexOf('?') !== -1) {
+ return path.split('?')[0]
+ } else {
+ return path
+ }
+ },
+ onLightModeEnabled() {
+ if (this.$store.getters.getBaseTheme === 'system') {
+ this.theme = 'light'
+ }
+ },
+ onDarkModeEnabled() {
+ if (this.$store.getters.getBaseTheme === 'system') {
+ this.theme = 'dark'
+ }
+ },
+ getThemeFromBody() {
+ const bodyStyle = getComputedStyle(document.body)
+ const text = bodyStyle.getPropertyValue('--primary-text-color')
+ const isDark = isColourDark(text)
+ return isDark ? 'dark' : 'light'
+ },
+ onConsoleMessage({ data }) {
+ if ('content' in data && data.content !== null) {
+ if (data.content.indexOf('found in') === -1 && data.content.indexOf('---> ') === -1) {
+ // don't show errors related to the log viewer (creates infinite loop)
+ if (!this.logs.some(log => log.key === data.key)) {
+ if (this.logs.length > this.logLimit) {
+ this.logs = this.logs.slice(this.logs.length - this.logLimit)
+ }
+ data.content = data.content
+ // sanitise html
+ .replaceAll('&', '&')
+ .replaceAll('/', '/')
+ .replaceAll('<', '<')
+ .replaceAll('>', '>')
+ // format text line breaks and tabs into html (for youtube.js errors)
+ .replaceAll('\n', '
')
+ .replaceAll('\t', ' ')
+ .replaceAll(' ', ' ')
+ this.logs.push(data)
+ }
+ }
+ }
+ },
+ ...mapActions([
+ 'hideLogViewer',
+ 'showLogViewer',
+ ])
+ }
+})
diff --git a/src/renderer/components/fta-log-viewer/fta-log-viewer.vue b/src/renderer/components/fta-log-viewer/fta-log-viewer.vue
new file mode 100644
index 0000000000000..9e682adf30b10
--- /dev/null
+++ b/src/renderer/components/fta-log-viewer/fta-log-viewer.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+ {{ $t('Log Viewer.Console Log') }}
+
+
+
+
+
+ {{ `${removeQueryString(log.sourceId)}:${log.lineNumber}` }}
+ {{ new Date(log.timestamp).toISOString() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.js b/src/renderer/components/side-nav-more-options/side-nav-more-options.js
index 83bae2a4de7ff..4c37d2843d53c 100644
--- a/src/renderer/components/side-nav-more-options/side-nav-more-options.js
+++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.js
@@ -1,9 +1,14 @@
import { defineComponent } from 'vue'
+import { mapActions } from 'vuex'
+import packageDetails from '../../../../package.json'
export default defineComponent({
name: 'SideNav',
data: function () {
return {
+ usingAndroid: process.env.IS_ANDROID,
+ // release builds are the only ones with 3 periods in version numbers
+ usingRelease: packageDetails.version.split('.').length - 1 === 3,
openMoreOptions: false
}
},
@@ -28,5 +33,10 @@ export default defineComponent({
navIconExpand: this.hideLabelsSideBar
}
}
+ },
+ methods: {
+ ...mapActions([
+ 'showLogViewer'
+ ])
}
})
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.vue b/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
index 07f17810e3a1a..3429f6a20cef2 100644
--- a/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
+++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
@@ -110,6 +110,32 @@
{{ $t("About.About") }}
+
+
+
+
+
+ {{ $t("Log Viewer.Console Log") }}
+
+
+
+
+
+
+
+ {{ $t("Log Viewer.Console Log") }}
+
+
Date: Sat, 6 Jul 2024 02:53:02 +0200
Subject: [PATCH 005/489] =?UTF-8?q?Added=20translation=20using=20Weblate?=
=?UTF-8?q?=20(Norwegian=20Bokm=C3=A5l)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
static/locales-android/nb_NO.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 static/locales-android/nb_NO.yaml
diff --git a/static/locales-android/nb_NO.yaml b/static/locales-android/nb_NO.yaml
new file mode 100644
index 0000000000000..e08d00fa260d1
--- /dev/null
+++ b/static/locales-android/nb_NO.yaml
@@ -0,0 +1,16 @@
+Keep Alive Notification:
+ Running In Background Message: ''
+Player Settings:
+ Use Old Layout For Info: ''
+Distraction Free Settings:
+ Hide Thumbnail In Media Controls: ''
+Data Settings:
+ Data Directory: ''
+ Select Data Directory: ''
+ Reset Data Directory: ''
+ Your data directory has been moved successfully: ''
+ Error moving data directory: ''
+ Nothing to change: ''
+ Copy Data Files When Moving: ''
+ Copy Data Files When Moving Tooltip: ''
+ Data Is Currently Stored In: ''
From 414e6c835a0bf2db9df34e8e692570a9767d7499 Mon Sep 17 00:00:00 2001
From: Jose Delvani
Date: Mon, 15 Jul 2024 14:39:37 +0200
Subject: [PATCH 006/489] Added translation using Weblate (Portuguese (Brazil))
---
static/locales-android/pt_BR.yaml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 static/locales-android/pt_BR.yaml
diff --git a/static/locales-android/pt_BR.yaml b/static/locales-android/pt_BR.yaml
new file mode 100644
index 0000000000000..bd6216e2524c9
--- /dev/null
+++ b/static/locales-android/pt_BR.yaml
@@ -0,0 +1,18 @@
+Keep Alive Notification:
+ Running In Background Message: ''
+Player Settings:
+ Use Old Layout For Info: ''
+Distraction Free Settings:
+ Hide Thumbnail In Media Controls: ''
+Data Settings:
+ Data Directory: ''
+ Select Data Directory: ''
+ Reset Data Directory: ''
+ Your data directory has been moved successfully: ''
+ Error moving data directory: ''
+ Nothing to change: ''
+ Copy Data Files When Moving: ''
+ Copy Data Files When Moving Tooltip: ''
+ Data Is Currently Stored In: ''
+Log Viewer:
+ Console Log: ''
From 1046e23cb9f78ad9dac953c792b1aea3426e2da0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 20:48:32 +0800
Subject: [PATCH 007/489] Bump electron from 31.1.0 to 31.2.0 (#5416)
Bumps [electron](https://github.com/electron/electron) from 31.1.0 to 31.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v31.1.0...v31.2.0)
---
updated-dependencies:
- dependency-name: electron
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index df0e6cc002ec1..7ef4f475c083b 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
- "electron": "^31.1.0",
+ "electron": "^31.2.0",
"electron-builder": "^24.13.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/yarn.lock b/yarn.lock
index 5c3078d653318..edcf93c609329 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3527,10 +3527,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@^31.1.0:
- version "31.1.0"
- resolved "https://registry.yarnpkg.com/electron/-/electron-31.1.0.tgz#2836dbeb8f80c9b278aa4563c8fc3a6e6afbe723"
- integrity sha512-TBOwqLxSxnx6+pH6GMri7R3JPH2AkuGJHfWZS0p1HsmN+Qr1T9b0IRJnnehSd/3NZAmAre4ft9Ljec7zjyKFJA==
+electron@^31.2.0:
+ version "31.2.0"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.2.0.tgz#f6dc4c42f9118fd0f57b3c04676503df2bf16ece"
+ integrity sha512-5w+kjOsGiTXytPSErBPNp/3znnuEMKc42RD41MqRoQkiYaR8x/Le2+qWk1cL60UwE/67oeKnOHnnol8xEuldGg==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
From a846226f3a32ba4d252d867b6a8bca096b7b70c0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 20:48:38 +0800
Subject: [PATCH 008/489] Bump lefthook from 1.7.1 to 1.7.2 (#5415)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.7.1...v1.7.2)
---
updated-dependencies:
- dependency-name: lefthook
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 104 +++++++++++++++++++++++++--------------------------
2 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/package.json b/package.json
index 7ef4f475c083b..ec7ff7825f617 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.0",
- "lefthook": "^1.7.1",
+ "lefthook": "^1.7.2",
"mini-css-extract-plugin": "^2.9.0",
"npm-run-all2": "^6.2.2",
"postcss": "^8.4.39",
diff --git a/yarn.lock b/yarn.lock
index edcf93c609329..a1ca645ebb3af 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5678,59 +5678,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.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.1.tgz#d6cbbfe6988a995ea32e4c92d6f99d54c2bbd440"
- integrity sha512-WNM92Ix2rKmDKXzjlkVGCdzSkzzj3Z9D7yKi22KeOZ1iCXG1EtXEWmXO5M2g28FNb4cZI0r2DACNH5hz8JsfgA==
-
-lefthook-darwin-x64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.1.tgz#b2683a73da0a1ea86c6bc16be188743a955f12a7"
- integrity sha512-SDPEciuP+eNzuKN8kx1x0dRzFElpO65on5q0raKgTbTvSOyVd3c7sMLGluz6OSM5qqEWEdEeA8QYKpdA56uXEw==
-
-lefthook-freebsd-arm64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.1.tgz#0cc51b81236bc0465fd8c1842a7cf63840d24d90"
- integrity sha512-Ym2hhv6w7RWva3jfjtBOYck+GiaCx1JpnsOCf9tDYKFiV6ve/DoLrGQ+uI0UOqtiHN/bJzt5BrNXygfAubXaEg==
-
-lefthook-freebsd-x64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.1.tgz#47b2584a578dc9a28d185c94e3bd620b30a79c70"
- integrity sha512-u9WYd+LDJr1A+VQV6lTe1a0yG0Ew9Wgeb9Ym9IKr9eLblrt6JNvW1x9u0e9OFteLwnqBCCT8omBY+NARcvqVvg==
-
-lefthook-linux-arm64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.1.tgz#4ce35be13553a78c0800ddc5771fb29848e39dee"
- integrity sha512-Sgc+vHNnAbiJ5b1yMJsFn/rQ6eVQ0KLzuL0x0KJqFZvmffFenVmqABrFHKNDzhj8//KUbHdgCgLzqQAkAbCNcg==
-
-lefthook-linux-x64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.1.tgz#b757ff298724083c1fa06cee5fa05480e1f96e24"
- integrity sha512-UDIM6Cf0aHrfvIxeVz05M7g+omLdyTQpmB2BqkeANpd/5+1LqRMOBOdtW+y3X47NKYL++iFh2EtIhlIqVBj6Kw==
-
-lefthook-windows-arm64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.1.tgz#45c5f9b2b0ab2d7260602037b98e156eacb43d1f"
- integrity sha512-cz3vhIdmORA25YF4ZnPjDQwi/KQd8cB89q7jHEQ9sv+bpSOTXiauMOM9jvXbnvGrmFaR1qbLRTYpKQs6oyGdsA==
-
-lefthook-windows-x64@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.1.tgz#9575fe23af4f6d7ef0c958431f20dd6ca5fe7162"
- integrity sha512-Fa9HEkJczbD1zu6wBKP2rR738uRei5sb76d/DzgqW09ZBTwQl+6Oiyg3kicVU1N1X8bhZ/g1h49tcHrVtjU5ww==
-
-lefthook@^1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.1.tgz#c31f57dd42a28fed22376db519fb40c4c3064398"
- integrity sha512-WNgjrPH4bYZyAYsiK7y7roQCQFIgqdCFxVCVe7ylAFD+QvW8tMceG19mR3GS2if1fGHC/cs+Z0r6PI52b/G1eA==
+lefthook-darwin-arm64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.2.tgz#43a451b3ed640bb3dcf478d4255d5434577fe246"
+ integrity sha512-E3Ouk04/yeD8IBLGJkyzL0NMYIrjADQvaDbf4yNSq6HWGnUC0R2KpYxrZno2yahZnvQ0vYTDta7Egw6cqcYGlQ==
+
+lefthook-darwin-x64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.2.tgz#d4c737580b45fc791c8e1f1a87715a2425d02d3c"
+ integrity sha512-Am6ZNmjItQSqKbK8/spFIj5GDWNHJ47PM0vpT1PnBHrgWanjz0iLw6adwpMu8u7+CkZlHjp08lbvjBPGHIu3dg==
+
+lefthook-freebsd-arm64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.2.tgz#9d5285e798afd4f4ad56c37f97bc382e2b09c74b"
+ integrity sha512-o1LBgHhwnUOLs9iVbi1GhvXMQlzYSKnyFcc061iADxHMJk1xWMD6RUyyohmLbfEU0gTWxkRfkdAFvbvwNqQiww==
+
+lefthook-freebsd-x64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.2.tgz#8ff750baf1e2262353e0ad12bc40ee81ed736a97"
+ integrity sha512-vxB3FeeFYDfk4vAahaZdGJ7gbViGOkOyL5JRBDWlFjUfZJLGwVauf6GhtysdO1dgxs9K3ECdEtXgW+uOB872rQ==
+
+lefthook-linux-arm64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.2.tgz#3022d9d1095643437098fab82748d965beff221e"
+ integrity sha512-4dbVj5Jjy12flAyOcVWvWQ6gJoQ6X7HJ3qfsrM8/GIfLQBlkw+YRcLuWHUI3H9qsQFpkpYZsLcmUXoVM77z5mw==
+
+lefthook-linux-x64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.2.tgz#7589e7ed9b968e16189a0c9e4a074fd92aea19e7"
+ integrity sha512-lT0IRp1pGtbua8IWVeIVCSAxKex9fOyAexHaEmBZytfqr/94lpjzWWEQdLFQAlpZthuyCkuaJp5kLgMj6/IySQ==
+
+lefthook-windows-arm64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.2.tgz#afd7054130461ad69c53c6ff40bd069b48e49fde"
+ integrity sha512-DxWLmcNI3NICd4rFqTPgXf+G/97ztl+ONvYuNE/ELAxVp338xAUFvzZCQvDZDzeTLrT1C4hZZ4zDvEhnOOECXg==
+
+lefthook-windows-x64@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.2.tgz#3e516daf6c98d911e76ae8ed97364772e137145e"
+ integrity sha512-fL4F8/XXoYUJJ6GSYCwFL+bRufzbkeMSGYZKUDr6ZKOI4KafIEcgFNwlnQF03gY6vkUrYKksXQofOVlOfv3vPA==
+
+lefthook@^1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.2.tgz#1c2c7c9d2a76f7efcd31346ee4c1f45a1a2a3a19"
+ integrity sha512-QCCq6KyVAVYBuxWf338TjMAjjGesyNRtfxJhjYV+kpUkd5ST2yr8ZUJrcEKe+0cUfziPOQ9Hz+1JZniXJx+JqA==
optionalDependencies:
- lefthook-darwin-arm64 "1.7.1"
- lefthook-darwin-x64 "1.7.1"
- lefthook-freebsd-arm64 "1.7.1"
- lefthook-freebsd-x64 "1.7.1"
- lefthook-linux-arm64 "1.7.1"
- lefthook-linux-x64 "1.7.1"
- lefthook-windows-arm64 "1.7.1"
- lefthook-windows-x64 "1.7.1"
+ lefthook-darwin-arm64 "1.7.2"
+ lefthook-darwin-x64 "1.7.2"
+ lefthook-freebsd-arm64 "1.7.2"
+ lefthook-freebsd-x64 "1.7.2"
+ lefthook-linux-arm64 "1.7.2"
+ lefthook-linux-x64 "1.7.2"
+ lefthook-windows-arm64 "1.7.2"
+ lefthook-windows-x64 "1.7.2"
levn@^0.4.1:
version "0.4.1"
From 17fdb454cdd7d7ba2fe87caa53fc3d2fdab8781d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 20:48:45 +0800
Subject: [PATCH 009/489] Bump webpack from 5.92.1 to 5.93.0 (#5414)
Bumps [webpack](https://github.com/webpack/webpack) from 5.92.1 to 5.93.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.92.1...v5.93.0)
---
updated-dependencies:
- dependency-name: webpack
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index ec7ff7825f617..ead881c08e369 100644
--- a/package.json
+++ b/package.json
@@ -127,7 +127,7 @@
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^9.4.3",
"vue-loader": "^15.10.0",
- "webpack": "^5.92.1",
+ "webpack": "^5.93.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.0.4",
"yaml-eslint-parser": "^1.2.3"
diff --git a/yarn.lock b/yarn.lock
index a1ca645ebb3af..d48e5d96fbda8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8789,10 +8789,10 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@^5.92.1:
- version "5.92.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.1.tgz#eca5c1725b9e189cffbd86e8b6c3c7400efc5788"
- integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==
+webpack@^5.93.0:
+ version "5.93.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5"
+ integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^1.0.5"
From 84756d4abc00e3089a8f2b301315590ba65d482c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 20:49:05 +0800
Subject: [PATCH 010/489] Bump sass from 1.77.6 to 1.77.8 (#5413)
Bumps [sass](https://github.com/sass/dart-sass) from 1.77.6 to 1.77.8.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.77.6...1.77.8)
---
updated-dependencies:
- dependency-name: sass
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index ead881c08e369..a6076d1524290 100644
--- a/package.json
+++ b/package.json
@@ -116,7 +116,7 @@
"postcss-scss": "^4.0.9",
"prettier": "^2.8.8",
"rimraf": "^5.0.8",
- "sass": "^1.77.6",
+ "sass": "^1.77.8",
"sass-loader": "^14.2.1",
"stylelint": "^16.6.1",
"stylelint-config-sass-guidelines": "^11.1.0",
diff --git a/yarn.lock b/yarn.lock
index d48e5d96fbda8..f0e271a1152c2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7427,10 +7427,10 @@ sass-loader@^14.2.1:
dependencies:
neo-async "^2.6.2"
-sass@^1.77.6:
- version "1.77.6"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.6.tgz#898845c1348078c2e6d1b64f9ee06b3f8bd489e4"
- integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==
+sass@^1.77.8:
+ version "1.77.8"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd"
+ integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
From 37e82fcbec7e137acc47aec246e3072a0140968b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 09:10:50 -0400
Subject: [PATCH 011/489] Bump the babel group across 1 directory with 3
updates (#5419)
Bumps the babel group with 3 updates in the / directory: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core), [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).
Updates `@babel/core` from 7.24.7 to 7.24.9
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.9/packages/babel-core)
Updates `@babel/eslint-parser` from 7.24.7 to 7.24.8
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.8/eslint/babel-eslint-parser)
Updates `@babel/preset-env` from 7.24.7 to 7.24.8
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.8/packages/babel-preset-env)
---
updated-dependencies:
- dependency-name: "@babel/core"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: babel
- dependency-name: "@babel/eslint-parser"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: babel
- dependency-name: "@babel/preset-env"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: babel
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +-
yarn.lock | 261 +++++++++++++++++++++++++++++----------------------
2 files changed, 150 insertions(+), 117 deletions(-)
diff --git a/package.json b/package.json
index a6076d1524290..437f3ed4c5187 100644
--- a/package.json
+++ b/package.json
@@ -82,10 +82,10 @@
"youtubei.js": "^10.1.0"
},
"devDependencies": {
- "@babel/core": "^7.24.7",
- "@babel/eslint-parser": "^7.24.7",
+ "@babel/core": "^7.24.9",
+ "@babel/eslint-parser": "^7.24.8",
"@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/preset-env": "^7.24.7",
+ "@babel/preset-env": "^7.24.8",
"@double-great/stylelint-a11y": "^3.0.2",
"@intlify/eslint-plugin-vue-i18n": "^3.0.0",
"babel-loader": "^9.1.3",
diff --git a/yarn.lock b/yarn.lock
index f0e271a1152c2..42650b04a15b4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -28,47 +28,47 @@
"@babel/highlight" "^7.24.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed"
- integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8":
+ version "7.24.9"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0"
+ integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==
-"@babel/core@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4"
- integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
+"@babel/core@^7.24.9":
+ version "7.24.9"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82"
+ integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.7"
- "@babel/helper-compilation-targets" "^7.24.7"
- "@babel/helper-module-transforms" "^7.24.7"
- "@babel/helpers" "^7.24.7"
- "@babel/parser" "^7.24.7"
+ "@babel/generator" "^7.24.9"
+ "@babel/helper-compilation-targets" "^7.24.8"
+ "@babel/helper-module-transforms" "^7.24.9"
+ "@babel/helpers" "^7.24.8"
+ "@babel/parser" "^7.24.8"
"@babel/template" "^7.24.7"
- "@babel/traverse" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/traverse" "^7.24.8"
+ "@babel/types" "^7.24.9"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/eslint-parser@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz#27ebab1a1ec21f48ae191a8aaac5b82baf80d9c7"
- integrity sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==
+"@babel/eslint-parser@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.8.tgz#bc655255fa4ded3694cc10ef3dbea6d69639c831"
+ integrity sha512-nYAikI4XTGokU2QX7Jx+v4rxZKhKivaQaREZjuW3mrJrbdWJ5yUfohnoUULge+zEEaKjPYNxhoRgUKktjXtbwA==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d"
- integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==
+"@babel/generator@^7.24.8", "@babel/generator@^7.24.9":
+ version "7.24.9"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.9.tgz#5c2575a1070e661bbbc9df82a853989c9a656f12"
+ integrity sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A==
dependencies:
- "@babel/types" "^7.24.7"
+ "@babel/types" "^7.24.9"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
@@ -95,14 +95,14 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9"
- integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==
+"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271"
+ integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
dependencies:
- "@babel/compat-data" "^7.24.7"
- "@babel/helper-validator-option" "^7.24.7"
- browserslist "^4.22.2"
+ "@babel/compat-data" "^7.24.8"
+ "@babel/helper-validator-option" "^7.24.8"
+ browserslist "^4.23.1"
lru-cache "^5.1.1"
semver "^6.3.1"
@@ -220,10 +220,10 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-module-transforms@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8"
- integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==
+"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9":
+ version "7.24.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29"
+ integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==
dependencies:
"@babel/helper-environment-visitor" "^7.24.7"
"@babel/helper-module-imports" "^7.24.7"
@@ -245,10 +245,10 @@
dependencies:
"@babel/types" "^7.24.7"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0"
- integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878"
+ integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
"@babel/helper-remap-async-to-generator@^7.24.7":
version "7.24.7"
@@ -309,20 +309,20 @@
dependencies:
"@babel/types" "^7.24.7"
-"@babel/helper-string-parser@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2"
- integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==
+"@babel/helper-string-parser@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
+ integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
"@babel/helper-validator-identifier@^7.24.5", "@babel/helper-validator-identifier@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
-"@babel/helper-validator-option@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6"
- integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==
+"@babel/helper-validator-option@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d"
+ integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
"@babel/helper-wrap-function@^7.24.7":
version "7.24.7"
@@ -334,13 +334,13 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helpers@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416"
- integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==
+"@babel/helpers@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873"
+ integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==
dependencies:
"@babel/template" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/types" "^7.24.8"
"@babel/highlight@^7.24.7":
version "7.24.7"
@@ -352,10 +352,10 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.23.5", "@babel/parser@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85"
- integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==
+"@babel/parser@^7.23.5", "@babel/parser@^7.24.7", "@babel/parser@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f"
+ integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7":
version "7.24.7"
@@ -586,16 +586,16 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
-"@babel/plugin-transform-classes@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf"
- integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==
+"@babel/plugin-transform-classes@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz#ad23301fe5bc153ca4cf7fb572a9bc8b0b711cf7"
+ integrity sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-compilation-targets" "^7.24.7"
+ "@babel/helper-compilation-targets" "^7.24.8"
"@babel/helper-environment-visitor" "^7.24.7"
"@babel/helper-function-name" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-replace-supers" "^7.24.7"
"@babel/helper-split-export-declaration" "^7.24.7"
globals "^11.1.0"
@@ -608,12 +608,12 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/template" "^7.24.7"
-"@babel/plugin-transform-destructuring@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e"
- integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==
+"@babel/plugin-transform-destructuring@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550"
+ integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-dotall-regex@^7.24.7":
version "7.24.7"
@@ -709,13 +709,13 @@
"@babel/helper-module-transforms" "^7.24.7"
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-modules-commonjs@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab"
- integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==
+"@babel/plugin-transform-modules-commonjs@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c"
+ integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==
dependencies:
- "@babel/helper-module-transforms" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-module-transforms" "^7.24.8"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-simple-access" "^7.24.7"
"@babel/plugin-transform-modules-systemjs@^7.24.7":
@@ -793,12 +793,12 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-transform-optional-chaining@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454"
- integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==
+"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d"
+ integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
@@ -878,12 +878,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-typeof-symbol@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0"
- integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==
+"@babel/plugin-transform-typeof-symbol@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c"
+ integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-unicode-escapes@^7.24.7":
version "7.24.7"
@@ -916,15 +916,15 @@
"@babel/helper-create-regexp-features-plugin" "^7.24.7"
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/preset-env@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37"
- integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==
+"@babel/preset-env@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.8.tgz#e0db94d7f17d6f0e2564e8d29190bc8cdacec2d1"
+ integrity sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==
dependencies:
- "@babel/compat-data" "^7.24.7"
- "@babel/helper-compilation-targets" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
- "@babel/helper-validator-option" "^7.24.7"
+ "@babel/compat-data" "^7.24.8"
+ "@babel/helper-compilation-targets" "^7.24.8"
+ "@babel/helper-plugin-utils" "^7.24.8"
+ "@babel/helper-validator-option" "^7.24.8"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7"
@@ -955,9 +955,9 @@
"@babel/plugin-transform-block-scoping" "^7.24.7"
"@babel/plugin-transform-class-properties" "^7.24.7"
"@babel/plugin-transform-class-static-block" "^7.24.7"
- "@babel/plugin-transform-classes" "^7.24.7"
+ "@babel/plugin-transform-classes" "^7.24.8"
"@babel/plugin-transform-computed-properties" "^7.24.7"
- "@babel/plugin-transform-destructuring" "^7.24.7"
+ "@babel/plugin-transform-destructuring" "^7.24.8"
"@babel/plugin-transform-dotall-regex" "^7.24.7"
"@babel/plugin-transform-duplicate-keys" "^7.24.7"
"@babel/plugin-transform-dynamic-import" "^7.24.7"
@@ -970,7 +970,7 @@
"@babel/plugin-transform-logical-assignment-operators" "^7.24.7"
"@babel/plugin-transform-member-expression-literals" "^7.24.7"
"@babel/plugin-transform-modules-amd" "^7.24.7"
- "@babel/plugin-transform-modules-commonjs" "^7.24.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.24.8"
"@babel/plugin-transform-modules-systemjs" "^7.24.7"
"@babel/plugin-transform-modules-umd" "^7.24.7"
"@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7"
@@ -980,7 +980,7 @@
"@babel/plugin-transform-object-rest-spread" "^7.24.7"
"@babel/plugin-transform-object-super" "^7.24.7"
"@babel/plugin-transform-optional-catch-binding" "^7.24.7"
- "@babel/plugin-transform-optional-chaining" "^7.24.7"
+ "@babel/plugin-transform-optional-chaining" "^7.24.8"
"@babel/plugin-transform-parameters" "^7.24.7"
"@babel/plugin-transform-private-methods" "^7.24.7"
"@babel/plugin-transform-private-property-in-object" "^7.24.7"
@@ -991,7 +991,7 @@
"@babel/plugin-transform-spread" "^7.24.7"
"@babel/plugin-transform-sticky-regex" "^7.24.7"
"@babel/plugin-transform-template-literals" "^7.24.7"
- "@babel/plugin-transform-typeof-symbol" "^7.24.7"
+ "@babel/plugin-transform-typeof-symbol" "^7.24.8"
"@babel/plugin-transform-unicode-escapes" "^7.24.7"
"@babel/plugin-transform-unicode-property-regex" "^7.24.7"
"@babel/plugin-transform-unicode-regex" "^7.24.7"
@@ -1000,7 +1000,7 @@
babel-plugin-polyfill-corejs2 "^0.4.10"
babel-plugin-polyfill-corejs3 "^0.10.4"
babel-plugin-polyfill-regenerator "^0.6.1"
- core-js-compat "^3.31.0"
+ core-js-compat "^3.37.1"
semver "^6.3.1"
"@babel/preset-modules@0.1.6-no-external-plugins":
@@ -1040,28 +1040,28 @@
"@babel/parser" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5"
- integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8":
+ version "7.24.8"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7"
+ integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==
dependencies:
"@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.7"
+ "@babel/generator" "^7.24.8"
"@babel/helper-environment-visitor" "^7.24.7"
"@babel/helper-function-name" "^7.24.7"
"@babel/helper-hoist-variables" "^7.24.7"
"@babel/helper-split-export-declaration" "^7.24.7"
- "@babel/parser" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/parser" "^7.24.8"
+ "@babel/types" "^7.24.8"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.4.4":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2"
- integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==
+"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.4.4":
+ version "7.24.9"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73"
+ integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==
dependencies:
- "@babel/helper-string-parser" "^7.24.7"
+ "@babel/helper-string-parser" "^7.24.8"
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
@@ -2522,7 +2522,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0:
+browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.23.0:
version "4.23.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
@@ -2532,6 +2532,16 @@ browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^
node-releases "^2.0.14"
update-browserslist-db "^1.0.13"
+browserslist@^4.23.1:
+ version "4.23.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
+ integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
+ dependencies:
+ caniuse-lite "^1.0.30001640"
+ electron-to-chromium "^1.4.820"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.1.0"
+
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@@ -2682,6 +2692,11 @@ caniuse-lite@^1.0.30001587:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079"
integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
+caniuse-lite@^1.0.30001640:
+ version "1.0.30001642"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f"
+ integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -2964,10 +2979,10 @@ copy-webpack-plugin@^12.0.2:
schema-utils "^4.2.0"
serialize-javascript "^6.0.2"
-core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.37.0:
- version "3.37.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73"
- integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==
+core-js-compat@^3.36.1, core-js-compat@^3.37.0, core-js-compat@^3.37.1:
+ version "3.37.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee"
+ integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==
dependencies:
browserslist "^4.23.0"
@@ -3527,6 +3542,11 @@ 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-to-chromium@^1.4.820:
+ version "1.4.827"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
+ integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
+
electron@^31.2.0:
version "31.2.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-31.2.0.tgz#f6dc4c42f9118fd0f57b3c04676503df2bf16ece"
@@ -3757,6 +3777,11 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+escalade@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+ integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+
escape-goat@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081"
@@ -8455,6 +8480,14 @@ update-browserslist-db@^1.0.13:
escalade "^3.1.1"
picocolors "^1.0.0"
+update-browserslist-db@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
+ integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
+ dependencies:
+ escalade "^3.1.2"
+ picocolors "^1.0.1"
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
From 079b116d09dd4b29fe75a73435b7768abdf59181 Mon Sep 17 00:00:00 2001
From: unsigned char
Date: Mon, 15 Jul 2024 14:35:03 +0000
Subject: [PATCH 012/489] Translated using Weblate (Indonesian)
Currently translated at 83.6% (726 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/id/
---
static/locales/id.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/static/locales/id.yaml b/static/locales/id.yaml
index 0e0799efbaedd..09a8dfdf3b0a2 100644
--- a/static/locales/id.yaml
+++ b/static/locales/id.yaml
@@ -42,6 +42,7 @@ Global:
Watching Count: 1 sedang menonton | {count} sedang menonton
Community: Komunitas
Live: Siaran Langsung
+ Shorts: Shorts
Version {versionNumber} is now available! Click for more details: 'Versi {versionNumber}
sekarang tersedia! Klik untuk detail lebih lanjut'
Download From Site: 'Unduh dari Situs'
@@ -1052,4 +1053,4 @@ Go to page: Pergi ke {page}
Ok: Oke
Yes, Open Link: Ya, Buka Tautan
checkmark: ✓
-Close Banner: Tutup
+Close Banner: Tutup Banner
From c1a714944afe349b260cdc52857c0fe87310200f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 15 Jul 2024 20:43:34 +0200
Subject: [PATCH 013/489] Bump rimraf from 5.0.8 to 6.0.1 (#5412)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.8 to 6.0.1.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v5.0.8...v6.0.1)
---
updated-dependencies:
- dependency-name: rimraf
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 437f3ed4c5187..8a305fd68a186 100644
--- a/package.json
+++ b/package.json
@@ -115,7 +115,7 @@
"postcss": "^8.4.39",
"postcss-scss": "^4.0.9",
"prettier": "^2.8.8",
- "rimraf": "^5.0.8",
+ "rimraf": "^6.0.1",
"sass": "^1.77.8",
"sass-loader": "^14.2.1",
"stylelint": "^16.6.1",
diff --git a/yarn.lock b/yarn.lock
index 42650b04a15b4..4e748e33d6ba5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4624,6 +4624,18 @@ glob@^10.3.3, glob@^10.3.7:
minipass "^7.1.2"
path-scurry "^1.11.1"
+glob@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e"
+ integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^4.0.1"
+ minimatch "^10.0.0"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^2.0.0"
+
glob@^7.1.3, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -5481,6 +5493,15 @@ jackspeak@^3.1.2:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
+jackspeak@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.1.tgz#9fca4ce961af6083e259c376e9e3541431f5287b"
+ integrity sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
jake@^10.8.5:
version "10.8.5"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
@@ -5871,6 +5892,11 @@ lru-cache@^10.2.0:
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
+lru-cache@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21"
+ integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==
+
lru-cache@^4.1.2:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -6053,6 +6079,13 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+minimatch@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
+ integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==
+ dependencies:
+ brace-expansion "^2.0.1"
+
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -6461,6 +6494,11 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+package-json-from-dist@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
+ integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
+
param-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
@@ -6549,6 +6587,14 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+path-scurry@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580"
+ integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
+ dependencies:
+ lru-cache "^11.0.0"
+ minipass "^7.1.2"
+
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
@@ -7352,13 +7398,21 @@ rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-rimraf@^5.0.5, rimraf@^5.0.8:
+rimraf@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.8.tgz#9d4d0ef5106817102b14fdbbf01cf29545e99a6c"
integrity sha512-XSh0V2/yNhDEi8HwdIefD8MLgs4LQXPag/nEJWs3YUc3Upn+UHa1GyIkEg9xSSNt7HnkO5FjTvmcRzgf+8UZuw==
dependencies:
glob "^10.3.7"
+rimraf@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e"
+ integrity sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==
+ dependencies:
+ glob "^11.0.0"
+ package-json-from-dist "^1.0.0"
+
roarr@^2.15.3:
version "2.15.4"
resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
From 10c7aae7bab9d67186422af35c551a4b737ed10b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 18 Jul 2024 12:28:46 -0400
Subject: [PATCH 014/489] Bump the stylelint group with 2 updates (#5411)
* Bump the stylelint group with 2 updates
Bumps the stylelint group with 2 updates: [stylelint](https://github.com/stylelint/stylelint) and [stylelint-config-sass-guidelines](https://github.com/bjankord/stylelint-config-sass-guidelines).
Updates `stylelint` from 16.6.1 to 16.7.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.6.1...16.7.0)
Updates `stylelint-config-sass-guidelines` from 11.1.0 to 12.0.0
- [Release notes](https://github.com/bjankord/stylelint-config-sass-guidelines/releases)
- [Changelog](https://github.com/bjankord/stylelint-config-sass-guidelines/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bjankord/stylelint-config-sass-guidelines/compare/v11.1.0...v12.0.0)
---
updated-dependencies:
- dependency-name: stylelint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: stylelint
- dependency-name: stylelint-config-sass-guidelines
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: stylelint
...
Signed-off-by: dependabot[bot]
* * Run yarn run lint-style-fix twice
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE
---
package.json | 4 +-
src/renderer/App.css | 10 +-
.../experimental-settings.css | 2 +-
.../ft-age-restricted/ft-age-restricted.css | 3 +-
.../components/ft-button/ft-button.css | 6 +-
.../ft-channel-bubble/ft-channel-bubble.css | 2 +-
.../ft-checkbox-list/ft-checkbox-list.css | 32 +-
.../ft-community-poll/ft-community-poll.css | 5 +-
.../ft-icon-button/ft-icon-button.scss | 4 +-
src/renderer/components/ft-input/ft-input.css | 21 +-
.../components/ft-loader/ft-loader.css | 44 +-
.../ft-notification-banner.css | 2 +-
.../ft-profile-channel-list.css | 3 +-
.../ft-profile-edit/ft-profile-edit.css | 3 +-
.../ft-profile-selector.css | 4 +-
.../components/ft-prompt/ft-prompt.css | 6 +-
.../ft-radio-button/ft-radio-button.css | 38 +-
.../components/ft-select/ft-select.css | 14 +-
.../ft-share-button/ft-share-button.scss | 3 +-
.../components/ft-slider/ft-slider.css | 2 +-
.../ft-subscribe-button.scss | 9 +-
src/renderer/components/ft-toast/ft-toast.css | 2 +-
.../ft-video-player/ft-video-player.css | 3 +-
.../general-settings/general-settings.css | 2 +-
.../playlist-info/playlist-info.scss | 12 +-
.../proxy-settings/proxy-settings.css | 2 +-
.../side-nav-more-options.css | 10 +-
src/renderer/components/side-nav/side-nav.css | 30 +-
.../watch-video-info/watch-video-info.scss | 5 +-
.../watch-video-live-chat.css | 8 +-
.../watch-video-playlist.css | 3 +-
.../watch-video-recommendations.css | 18 +-
src/renderer/themes.css | 736 +++++++++---------
src/renderer/views/Channel/Channel.css | 11 +-
src/renderer/views/Hashtag/Hashtag.css | 3 +-
src/renderer/views/Playlist/Playlist.scss | 3 +-
.../views/ProfileSettings/ProfileSettings.css | 3 +-
src/renderer/views/Search/Search.css | 3 +-
.../SubscribedChannels/SubscribedChannels.css | 2 +-
yarn.lock | 88 ++-
40 files changed, 621 insertions(+), 540 deletions(-)
diff --git a/package.json b/package.json
index 8a305fd68a186..60fed0161ddf4 100644
--- a/package.json
+++ b/package.json
@@ -118,8 +118,8 @@
"rimraf": "^6.0.1",
"sass": "^1.77.8",
"sass-loader": "^14.2.1",
- "stylelint": "^16.6.1",
- "stylelint-config-sass-guidelines": "^11.1.0",
+ "stylelint": "^16.7.0",
+ "stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
"stylelint-high-performance-animation": "^1.10.0",
"stylelint-use-logical-spec": "^5.0.1",
diff --git a/src/renderer/App.css b/src/renderer/App.css
index 28607f039e3ff..866c01197bf6f 100644
--- a/src/renderer/App.css
+++ b/src/renderer/App.css
@@ -1,6 +1,6 @@
@font-face {
font-family: Roboto;
- src: url("assets/font/Roboto-Regular.ttf");
+ src: url('assets/font/Roboto-Regular.ttf');
}
.app {
@@ -45,11 +45,13 @@
overflow-wrap: break-word;
}
-.fade-enter-active, .fade-leave-active {
- transition: opacity .15s;
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.15s;
}
-.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
+.fade-enter,
+.fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
diff --git a/src/renderer/components/experimental-settings/experimental-settings.css b/src/renderer/components/experimental-settings/experimental-settings.css
index 2b20e6e674d38..5cf37ec635900 100644
--- a/src/renderer/components/experimental-settings/experimental-settings.css
+++ b/src/renderer/components/experimental-settings/experimental-settings.css
@@ -1,5 +1,5 @@
.experimental-warning {
text-align: center;
font-weight: bold;
- padding-inline: 4% 4%
+ padding-inline: 4%;
}
diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.css b/src/renderer/components/ft-age-restricted/ft-age-restricted.css
index 33a98376fa1b4..21800c5d4e9b0 100644
--- a/src/renderer/components/ft-age-restricted/ft-age-restricted.css
+++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.css
@@ -8,7 +8,8 @@
padding-block: 20px;
}
-.message, .frown {
+.message,
+.frown {
color: var(--primary-text-color);
background-color: var(--card-bg-color);
padding-inline: 0;
diff --git a/src/renderer/components/ft-button/ft-button.css b/src/renderer/components/ft-button/ft-button.css
index a2a9a5f4474b6..1fce48714e469 100644
--- a/src/renderer/components/ft-button/ft-button.css
+++ b/src/renderer/components/ft-button/ft-button.css
@@ -34,7 +34,7 @@
}
.ripple::after {
- content: "";
+ content: '';
display: block;
position: absolute;
inline-size: 100%;
@@ -47,11 +47,11 @@
background-position: 50%;
transform: scale(10, 10);
opacity: 0;
- transition: transform .5s, opacity 1s;
+ transition: transform 0.5s, opacity 1s;
}
.ripple:active::after {
transform: scale(0, 0);
- opacity: .3;
+ opacity: 0.3;
transition: 0s;
}
diff --git a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.css b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.css
index 0dfb0c1148177..858a7dd416670 100644
--- a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.css
+++ b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.css
@@ -34,7 +34,7 @@
}
.icon {
- color: #EEE;
+ color: #eee;
font-size: 25px;
position: absolute;
inset-block-start: 12px;
diff --git a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.css b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.css
index 429b13059995d..30085ee39f775 100644
--- a/src/renderer/components/ft-checkbox-list/ft-checkbox-list.css
+++ b/src/renderer/components/ft-checkbox-list/ft-checkbox-list.css
@@ -1,5 +1,5 @@
/* stylelint-disable no-descending-specificity */
-.pure-checkbox input[type="checkbox"] {
+.pure-checkbox input[type='checkbox'] {
border: 0;
clip: rect(0 0 0 0);
block-size: 1px;
@@ -10,13 +10,14 @@
inline-size: 1px;
}
-.pure-checkbox input[type="checkbox"]:focus + label::before, .pure-checkbox input[type="checkbox"]:hover + label::before {
+.pure-checkbox input[type='checkbox']:focus + label::before,
+.pure-checkbox input[type='checkbox']:hover + label::before {
border: 2px solid var(--primary-color);
}
-.pure-checkbox input[type="checkbox"]:active + label::before { transition-duration: 0s; }
+.pure-checkbox input[type='checkbox']:active + label::before { transition-duration: 0s; }
-.pure-checkbox input[type="checkbox"] + label {
+.pure-checkbox input[type='checkbox'] + label {
position: relative;
padding-inline-start: 2em;
user-select: none;
@@ -25,7 +26,7 @@
margin-block-start: 10px;
}
-.pure-checkbox input[type="checkbox"] + label::before {
+.pure-checkbox input[type='checkbox'] + label::before {
box-sizing: content-box;
content: '';
color: var(--primary-text-color);
@@ -40,7 +41,7 @@
transition: all 0.4s ease;
}
-.pure-checkbox input[type="checkbox"] + label::after {
+.pure-checkbox input[type='checkbox'] + label::after {
box-sizing: content-box;
border-style: solid;
border-image: none;
@@ -58,26 +59,27 @@
transition: transform 200ms ease-out;
}
-.pure-checkbox input[type="checkbox"]:disabled + label::before { border-color: #ccc; }
+.pure-checkbox input[type='checkbox']:disabled + label::before { border-color: #ccc; }
-.pure-checkbox input[type="checkbox"]:disabled:focus + label::before, .pure-checkbox input[type="checkbox"]:disabled:hover + label::before { background-color: inherit; }
+.pure-checkbox input[type='checkbox']:disabled:focus + label::before,
+.pure-checkbox input[type='checkbox']:disabled:hover + label::before { background-color: inherit; }
-.pure-checkbox input[type="checkbox"]:disabled:checked + label::before { background-color: #ccc; }
+.pure-checkbox input[type='checkbox']:disabled:checked + label::before { background-color: #ccc; }
-.pure-checkbox input[type="checkbox"]:checked + label::after {
+.pure-checkbox input[type='checkbox']:checked + label::after {
content: '';
transform: rotate(-45deg) scale(1);
transition: transform 200ms ease-out;
}
-.pure-checkbox input[type="checkbox"]:checked + label::before {
+.pure-checkbox input[type='checkbox']:checked + label::before {
animation: borderscale 200ms ease-in;
}
@keyframes
-borderscale { 50% {
- box-shadow: 0 0 0 2px var(--primary-text-color);
-}
+ borderscale { 50% {
+ box-shadow: 0 0 0 2px var(--primary-text-color);
+ }
}
.checkboxTitle {
@@ -85,7 +87,7 @@ borderscale { 50% {
}
@media only screen and (width <= 680px) {
- .pure-checkbox input[type="checkbox"] + label {
+ .pure-checkbox input[type='checkbox'] + label {
margin-block-start: 3px;
}
}
diff --git a/src/renderer/components/ft-community-poll/ft-community-poll.css b/src/renderer/components/ft-community-poll/ft-community-poll.css
index 3f954536a43c7..0d3c0ec06cde3 100644
--- a/src/renderer/components/ft-community-poll/ft-community-poll.css
+++ b/src/renderer/components/ft-community-poll/ft-community-poll.css
@@ -65,6 +65,7 @@
cursor: pointer;
}
-.reveal-answer:hover, .reveal-answer:focus {
- background-color: var(--side-nav-hover-color)
+.reveal-answer:hover,
+.reveal-answer:focus {
+ background-color: var(--side-nav-hover-color);
}
diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.scss b/src/renderer/components/ft-icon-button/ft-icon-button.scss
index 41dd14b2d0a35..6a0b220e2bd6a 100644
--- a/src/renderer/components/ft-icon-button/ft-icon-button.scss
+++ b/src/renderer/components/ft-icon-button/ft-icon-button.scss
@@ -98,7 +98,9 @@
}
}
- &.favorite, &.favorite:hover, &.favorite:focus-visible {
+ &.favorite,
+ &.favorite:hover,
+ &.favorite:focus-visible {
&:not(.disabled) {
color: var(--favorite-icon-color);
}
diff --git a/src/renderer/components/ft-input/ft-input.css b/src/renderer/components/ft-input/ft-input.css
index e5f9a17041073..89b7450e588f6 100644
--- a/src/renderer/components/ft-input/ft-input.css
+++ b/src/renderer/components/ft-input/ft-input.css
@@ -3,14 +3,14 @@
position: relative;
}
- body[dir='rtl'] .ft-input-component.search.showClearTextButton .inputAction {
+body[dir='rtl'] .ft-input-component.search.showClearTextButton .inputAction {
inset-inline-end: -30px;
- }
+}
- body[dir='rtl'] .ft-input-component.search.clearTextButtonVisible .inputAction,
- body[dir='rtl'] .ft-input-component.search.showClearTextButton:focus-within .inputAction {
+body[dir='rtl'] .ft-input-component.search.clearTextButtonVisible .inputAction,
+body[dir='rtl'] .ft-input-component.search.showClearTextButton:focus-within .inputAction {
inset-inline-end: 0;
- }
+}
.ft-input-component.search.showClearTextButton {
padding-inline-start: 30px;
@@ -41,7 +41,8 @@
opacity: 1;
}
-.disabled label, .disabled .ft-input{
+.disabled label,
+.disabled .ft-input {
opacity: 0.4;
cursor: not-allowed;
}
@@ -82,7 +83,7 @@
}
.forceTextColor .clearInputTextButton {
- color: #EEE;
+ color: #eee;
}
.forceTextColor .clearInputTextButton:active {
@@ -109,7 +110,7 @@
}
.forceTextColor .ft-input {
- color: #EEE;
+ color: #eee;
background-color: var(--primary-input-color);
}
@@ -119,7 +120,7 @@
}
.forceTextColor ::placeholder {
- color: #EEE;
+ color: #eee;
}
.inputWrapper {
@@ -153,7 +154,7 @@
}
.forceTextColor .inputAction {
- color: #EEE;
+ color: #eee;
}
.ft-input-component.showActionButton .ft-input {
diff --git a/src/renderer/components/ft-loader/ft-loader.css b/src/renderer/components/ft-loader/ft-loader.css
index b27213cf68512..17c0047d66a62 100644
--- a/src/renderer/components/ft-loader/ft-loader.css
+++ b/src/renderer/components/ft-loader/ft-loader.css
@@ -36,37 +36,37 @@
*/
.spinner {
- inline-size: 40px;
- block-size: 40px;
- position: relative;
- margin-block: 100px;
- margin-inline: auto;
+ inline-size: 40px;
+ block-size: 40px;
+ position: relative;
+ margin-block: 100px;
+ margin-inline: auto;
}
.double-bounce1,
.double-bounce2 {
- inline-size: 100%;
- block-size: 100%;
- border-radius: 50%;
- opacity: 0.6;
- position: absolute;
- inset-block-start: 0;
- inset-inline-start: 0;
- background-color: var(--primary-color);
- animation: sk-bounce 2.0s infinite ease-in-out;
+ inline-size: 100%;
+ block-size: 100%;
+ border-radius: 50%;
+ opacity: 0.6;
+ position: absolute;
+ inset-block-start: 0;
+ inset-inline-start: 0;
+ background-color: var(--primary-color);
+ animation: sk-bounce 2s infinite ease-in-out;
}
.double-bounce2 {
- animation-delay: -1.0s;
+ animation-delay: -1s;
}
@keyframes sk-bounce {
- 0%,
- 100% {
- transform: scale(0.0);
- }
+ 0%,
+ 100% {
+ transform: scale(0);
+ }
- 50% {
- transform: scale(1.0);
- }
+ 50% {
+ transform: scale(1);
+ }
}
diff --git a/src/renderer/components/ft-notification-banner/ft-notification-banner.css b/src/renderer/components/ft-notification-banner/ft-notification-banner.css
index 6efe9d4f95bba..ec96a51cf3ff2 100644
--- a/src/renderer/components/ft-notification-banner/ft-notification-banner.css
+++ b/src/renderer/components/ft-notification-banner/ft-notification-banner.css
@@ -7,7 +7,7 @@
color: var(--text-with-accent-color);
*/
margin: 4px;
- padding: 16px;
+ padding: 16px;
padding-block: 3px 5px;
padding-inline: 16px;
box-shadow: 0 1px 2px rgb(0 0 0 / 10%);
diff --git a/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.css b/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.css
index 52b828b61ad56..3d7ff2ca33542 100644
--- a/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.css
+++ b/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.css
@@ -1,4 +1,5 @@
-h2, .selectedCount {
+h2,
+.selectedCount {
text-align: center;
}
diff --git a/src/renderer/components/ft-profile-edit/ft-profile-edit.css b/src/renderer/components/ft-profile-edit/ft-profile-edit.css
index 31d54c310ff0f..6290036dda212 100644
--- a/src/renderer/components/ft-profile-edit/ft-profile-edit.css
+++ b/src/renderer/components/ft-profile-edit/ft-profile-edit.css
@@ -11,7 +11,8 @@ h3 {
color: var(--tertiary-text-color);
}
-.profileName, .colorSelection {
+.profileName,
+.colorSelection {
margin: auto;
inline-size: 350px;
}
diff --git a/src/renderer/components/ft-profile-selector/ft-profile-selector.css b/src/renderer/components/ft-profile-selector/ft-profile-selector.css
index 53c3d41bf491b..f59707834dc3a 100644
--- a/src/renderer/components/ft-profile-selector/ft-profile-selector.css
+++ b/src/renderer/components/ft-profile-selector/ft-profile-selector.css
@@ -40,13 +40,13 @@
profile list max height: 90% of window size - 100 px. It's scaled to be 340px on 800x600 resolution.
Offset of 100px is to compensate for the fixed size of elements above the list, which takes more screen space on lower resolutions
*/
- max-block-size: calc(90vh - 100px);
+ max-block-size: calc(90vh - 100px);
min-block-size: 340px;
}
/* Navbar changes position to horizontal with this media rule.
Height adjust for profile list so it won't cover navbar. */
-@media only screen and (width <= 680px){
+@media only screen and (width <= 680px) {
.profileWrapper {
max-block-size: calc(95vh - 180px);
}
diff --git a/src/renderer/components/ft-prompt/ft-prompt.css b/src/renderer/components/ft-prompt/ft-prompt.css
index 2b7d604596270..74f36a1a41efb 100644
--- a/src/renderer/components/ft-prompt/ft-prompt.css
+++ b/src/renderer/components/ft-prompt/ft-prompt.css
@@ -36,9 +36,9 @@
}
.promptCard.flex-column {
- /* Some child(ren) will grow vertically */
- display: flex;
- flex-direction: column;
+ /* Some child(ren) will grow vertically */
+ display: flex;
+ flex-direction: column;
}
.promptCard.slim {
diff --git a/src/renderer/components/ft-radio-button/ft-radio-button.css b/src/renderer/components/ft-radio-button/ft-radio-button.css
index 92dbf9f7e7bb1..ca7b968925a35 100644
--- a/src/renderer/components/ft-radio-button/ft-radio-button.css
+++ b/src/renderer/components/ft-radio-button/ft-radio-button.css
@@ -1,5 +1,5 @@
/* stylelint-disable no-descending-specificity */
-.pure-radiobutton input[type="radio"] {
+.pure-radiobutton input[type='radio'] {
border: 0;
clip: rect(0 0 0 0);
block-size: 1px;
@@ -10,13 +10,14 @@
inline-size: 1px;
}
-.pure-radiobutton input[type="radio"]:focus + label::before, .pure-radiobutton input[type="radio"]:hover + label::before {
+.pure-radiobutton input[type='radio']:focus + label::before,
+.pure-radiobutton input[type='radio']:hover + label::before {
border: 2px solid var(--primary-color);
}
-.pure-radiobutton input[type="radio"]:active + label::before { transition-duration: 0s; }
+.pure-radiobutton input[type='radio']:active + label::before { transition-duration: 0s; }
-.pure-radiobutton input[type="radio"] + label {
+.pure-radiobutton input[type='radio'] + label {
position: relative;
padding-inline-start: 2em;
user-select: none;
@@ -25,7 +26,7 @@
margin-block-start: 10px;
}
-.pure-radiobutton input[type="radio"] + label::before {
+.pure-radiobutton input[type='radio'] + label::before {
box-sizing: content-box;
content: '';
color: var(--primary-text-color);
@@ -40,7 +41,7 @@
transition: all 0.4s ease;
}
-.pure-radiobutton input[type="radio"] + label::after {
+.pure-radiobutton input[type='radio'] + label::after {
box-sizing: content-box;
content: '';
background-color: var(--primary-text-color);
@@ -55,29 +56,32 @@
transition: transform 200ms ease-out;
}
-.pure-radiobutton input[type="radio"]:disabled + label::before { border-color: #ccc; }
+.pure-radiobutton input[type='radio']:disabled + label::before { border-color: #ccc; }
-.pure-radiobutton input[type="radio"]:disabled:focus + label::before, .pure-radiobutton input[type="radio"]:disabled:hover + label::before { background-color: inherit; }
+.pure-radiobutton input[type='radio']:disabled:focus + label::before,
+.pure-radiobutton input[type='radio']:disabled:hover + label::before { background-color: inherit; }
-.pure-radiobutton input[type="radio"]:disabled:checked + label::before { background-color: #ccc; }
+.pure-radiobutton input[type='radio']:disabled:checked + label::before { background-color: #ccc; }
-.pure-checkbox input[type="radio"]:checked + label::before, .pure-radiobutton input[type="radio"]:checked + label::before {
+.pure-checkbox input[type='radio']:checked + label::before,
+.pure-radiobutton input[type='radio']:checked + label::before {
animation: borderscale 300ms ease-in;
}
-.pure-radiobutton input[type="radio"]:focus + label::after{
+.pure-radiobutton input[type='radio']:focus + label::after {
background-color: var(--primary-color);
}
-.pure-radiobutton input[type="radio"]:checked + label::after { transform: scale(1); }
+.pure-radiobutton input[type='radio']:checked + label::after { transform: scale(1); }
-.pure-radiobutton input[type="radio"] + label::before, .pure-radiobutton input[type="radio"] + label::after { border-radius: 50%; }
+.pure-radiobutton input[type='radio'] + label::before,
+.pure-radiobutton input[type='radio'] + label::after { border-radius: 50%; }
@keyframes
-borderscale { 50% {
- box-shadow: 0 0 0 2px var(--primary-text-color);
-}
+ borderscale { 50% {
+ box-shadow: 0 0 0 2px var(--primary-text-color);
+ }
}
.radioTitle {
@@ -85,7 +89,7 @@ borderscale { 50% {
}
@media only screen and (width <= 680px) {
- .pure-radiobutton input[type="radio"] + label {
+ .pure-radiobutton input[type='radio'] + label {
margin-block-start: 3px;
}
}
diff --git a/src/renderer/components/ft-select/ft-select.css b/src/renderer/components/ft-select/ft-select.css
index 58ae9bf374f4d..c129834ae263c 100644
--- a/src/renderer/components/ft-select/ft-select.css
+++ b/src/renderer/components/ft-select/ft-select.css
@@ -50,7 +50,7 @@
outline: none;
}
- /* Use custom arrow */
+/* Use custom arrow */
.select .select-text {
appearance: none;
text-overflow: ellipsis;
@@ -71,7 +71,8 @@
color: var(--tertiary-text-color);
}
-.disabled, .disabled + .iconSelect {
+.disabled,
+.disabled + .iconSelect {
opacity: 0.4;
cursor: not-allowed;
}
@@ -102,7 +103,8 @@
}
/* active state */
-.select-text:focus ~ .select-label, .select-text:valid ~ .select-label {
+.select-text:focus ~ .select-label,
+.select-text:valid ~ .select-label {
color: var(--accent-color);
inset-block-start: -20px;
transition: 0.2s ease all;
@@ -115,7 +117,8 @@
display: block;
}
-.select-bar::before, .select-bar::after {
+.select-bar::before,
+.select-bar::after {
content: '';
block-size: 2px;
inline-size: 0;
@@ -134,7 +137,8 @@
}
/* active state */
-.select-text:focus ~ .select-bar::before, .select-text:focus ~ .select-bar::after {
+.select-text:focus ~ .select-bar::before,
+.select-text:focus ~ .select-bar::after {
inline-size: 50%;
}
diff --git a/src/renderer/components/ft-share-button/ft-share-button.scss b/src/renderer/components/ft-share-button/ft-share-button.scss
index d20e535353bf5..dc3515db90ba6 100644
--- a/src/renderer/components/ft-share-button/ft-share-button.scss
+++ b/src/renderer/components/ft-share-button/ft-share-button.scss
@@ -47,8 +47,7 @@
}
.black &,
- .solarizedDark &
- {
+ .solarizedDark & {
filter: brightness(0.933);
}
diff --git a/src/renderer/components/ft-slider/ft-slider.css b/src/renderer/components/ft-slider/ft-slider.css
index c6463d7c25650..34ff70dc15a28 100644
--- a/src/renderer/components/ft-slider/ft-slider.css
+++ b/src/renderer/components/ft-slider/ft-slider.css
@@ -8,7 +8,7 @@
display: inline-block;
inline-size: 380px;
color: rgb(var(--primary-text-color) 0.87);
- font-family: var(--pure-material-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);
+ font-family: var(--pure-material-font, 'Roboto', 'Segoe UI', BlinkMacSystemFont, system-ui, -apple-system);
font-size: 16px;
line-height: 1.5;
padding: 5px;
diff --git a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.scss b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.scss
index 249281b8a6db6..f0a506fbc1616 100644
--- a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.scss
+++ b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.scss
@@ -23,14 +23,16 @@
white-space: initial;
}
-.subscribeButton.btn, .profileDropdownToggle.btn {
+.subscribeButton.btn,
+.profileDropdownToggle.btn {
align-self: center;
margin-block: 0;
margin-inline: 0;
}
.dropdownOpened {
- .subscribeButton, .profileDropdownToggle {
+ .subscribeButton,
+ .profileDropdownToggle {
border-end-start-radius: 0;
border-end-end-radius: 0;
}
@@ -57,7 +59,8 @@
}
}
-.hasProfileDropdownToggle > .subscribeButton.btn, .profileDropdownToggle.btn {
+.hasProfileDropdownToggle > .subscribeButton.btn,
+.profileDropdownToggle.btn {
padding-block: 5px;
padding-inline: 6px;
box-shadow: none;
diff --git a/src/renderer/components/ft-toast/ft-toast.css b/src/renderer/components/ft-toast/ft-toast.css
index 1a5ef01a53ff5..c7c37555aaa07 100644
--- a/src/renderer/components/ft-toast/ft-toast.css
+++ b/src/renderer/components/ft-toast/ft-toast.css
@@ -18,7 +18,7 @@
text-align: center;
overflow-y: auto;
background-color: rgb(0 0 0 / 70%);
- color: #FFF;
+ color: #fff;
opacity: 0;
border-radius: 20px;
cursor: pointer;
diff --git a/src/renderer/components/ft-video-player/ft-video-player.css b/src/renderer/components/ft-video-player/ft-video-player.css
index b098db5badf6d..62b01b1450e69 100644
--- a/src/renderer/components/ft-video-player/ft-video-player.css
+++ b/src/renderer/components/ft-video-player/ft-video-player.css
@@ -11,7 +11,8 @@
cursor: none;
}
-:deep(.sponsorBlockMarker), :deep(.chapterMarker) {
+:deep(.sponsorBlockMarker),
+:deep(.chapterMarker) {
position: absolute;
opacity: 0.6;
}
diff --git a/src/renderer/components/general-settings/general-settings.css b/src/renderer/components/general-settings/general-settings.css
index c4ad1999e9cc6..07e4205544631 100644
--- a/src/renderer/components/general-settings/general-settings.css
+++ b/src/renderer/components/general-settings/general-settings.css
@@ -6,4 +6,4 @@
.switchGrid {
gap: 10px;
margin-block-end: 12px;
-}
\ No newline at end of file
+}
diff --git a/src/renderer/components/playlist-info/playlist-info.scss b/src/renderer/components/playlist-info/playlist-info.scss
index a429360c0c355..cdec36bd25c9c 100644
--- a/src/renderer/components/playlist-info/playlist-info.scss
+++ b/src/renderer/components/playlist-info/playlist-info.scss
@@ -80,7 +80,8 @@
}
.top-bar {
- .playlistThumbnail, .playlistInfoSeparator {
+ .playlistThumbnail,
+ .playlistInfoSeparator {
display: none;
}
@@ -95,7 +96,8 @@
margin-block-start: 0.2em;
}
- .playlistTitle, .playlistDescription {
+ .playlistTitle,
+ .playlistDescription {
overflow-x: hidden;
text-align: center;
white-space: nowrap;
@@ -116,7 +118,9 @@
align-items: center;
}
- .channelShareWrapper, .searchInputsRow, .playlistStats {
+ .channelShareWrapper,
+ .searchInputsRow,
+ .playlistStats {
column-gap: 0;
inline-size: 100%;
}
@@ -128,6 +132,6 @@
@media only screen and (width <= 1250px) {
:deep(.sharePlaylistIcon .iconDropdown) {
- inset-inline: auto auto;
+ inset-inline: auto;
}
}
diff --git a/src/renderer/components/proxy-settings/proxy-settings.css b/src/renderer/components/proxy-settings/proxy-settings.css
index 582365c9120fd..4798186b5b717 100644
--- a/src/renderer/components/proxy-settings/proxy-settings.css
+++ b/src/renderer/components/proxy-settings/proxy-settings.css
@@ -1,3 +1,3 @@
.protocol-dropdown {
margin-block-end: 1rem;
-}
\ No newline at end of file
+}
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.css b/src/renderer/components/side-nav-more-options/side-nav-more-options.css
index 1126225866802..adc4de66ec329 100644
--- a/src/renderer/components/side-nav-more-options/side-nav-more-options.css
+++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.css
@@ -37,7 +37,8 @@
display: block;
}
- .sideNav, .closed {
+ .sideNav,
+ .closed {
margin-block-start: 0;
block-size: 60px;
inline-size: 100%;
@@ -45,7 +46,8 @@
overflow-y: inherit;
}
- .navOption, .closed .navOption {
+ .navOption,
+ .closed .navOption {
inline-size: 70px;
block-size: 40px;
padding-block: 10px;
@@ -71,7 +73,7 @@
display: block;
}
- .closed .navIconExpand{
- block-size:1.3em;
+ .closed .navIconExpand {
+ block-size: 1.3em;
}
}
diff --git a/src/renderer/components/side-nav/side-nav.css b/src/renderer/components/side-nav/side-nav.css
index 282d41c7a1d90..e13f4c4666b9c 100644
--- a/src/renderer/components/side-nav/side-nav.css
+++ b/src/renderer/components/side-nav/side-nav.css
@@ -37,7 +37,8 @@
margin-block-start: 10px;
}
-.navOption, .navChannel {
+.navOption,
+.navChannel {
position: relative;
padding: 5px;
min-block-size: 35px;
@@ -48,7 +49,8 @@
display: none;
}
-.navOption, .channelLink {
+.navOption,
+.channelLink {
display: block;
color: inherit;
text-decoration: inherit;
@@ -61,13 +63,15 @@
word-break: break-word;
}
-.navOption:hover, .navChannel:hover {
+.navOption:hover,
+.navChannel:hover {
background-color: var(--side-nav-hover-color);
color: var(--side-nav-hover-text-color);
transition: background 0.2s ease-in;
}
-.navOption:active, .navChannel:active {
+.navOption:active,
+.navChannel:active {
background-color: var(--side-nav-active-color);
color: var(--side-nav-active-text-color);
transition: background 0.2s ease-in;
@@ -131,8 +135,8 @@
margin-block-end: 0;
}
-.closed .navIconExpand{
- block-size:1.3em;
+.closed .navIconExpand {
+ block-size: 1.3em;
}
.closed .navLabel {
@@ -173,7 +177,9 @@
display: contents; /* sunglasses emoji */
}
- hr, .mobileHidden, .refreshIcon {
+ hr,
+ .mobileHidden,
+ .refreshIcon {
display: none;
}
@@ -189,7 +195,8 @@
padding-inline: 10px;
}
- .sideNav, .closed {
+ .sideNav,
+ .closed {
margin-block-start: 0;
block-size: 60px;
inline-size: 100%;
@@ -197,11 +204,12 @@
overflow-y: hidden;
}
- .navOption, .closed .navOption {
+ .navOption,
+ .closed .navOption {
inline-size: 70px;
block-size: 40px;
padding: 0;
- padding-block: 10px 10px;
+ padding-block: 10px;
}
.navLabel {
@@ -216,7 +224,7 @@
display: block;
}
- .closed.hiddenLabels{
+ .closed.hiddenLabels {
inline-size: 100%;
}
}
diff --git a/src/renderer/components/watch-video-info/watch-video-info.scss b/src/renderer/components/watch-video-info/watch-video-info.scss
index a6e3252aa2bcf..00a79fba8d7b7 100644
--- a/src/renderer/components/watch-video-info/watch-video-info.scss
+++ b/src/renderer/components/watch-video-info/watch-video-info.scss
@@ -14,7 +14,8 @@
word-break: break-word;
}
-.videoMetrics, .videoButtons {
+.videoMetrics,
+.videoButtons {
display: flex;
justify-content: space-between;
align-items: center;
@@ -68,7 +69,7 @@
flex-wrap: nowrap;
:deep(.iconDropdown) {
- inset-inline: auto auto;
+ inset-inline: auto;
}
}
}
diff --git a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.css b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.css
index 722c746329a10..307ed79a68bee 100644
--- a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.css
+++ b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.css
@@ -66,7 +66,7 @@
display: inline-block;
padding: 1px;
padding-inline-end: 10px;
- margin-inline: 2px 2px;
+ margin-inline: 2px;
block-size: 30px;
cursor: pointer;
background-color: var(--primary-color);
@@ -115,7 +115,7 @@
.superChatMessage {
inline-size: 90%;
grid-template-columns: auto;
- margin-inline: 5% 5%;
+ margin-inline: 5%;
margin-block: 25px 10px;
background-color: var(--primary-color);
border-radius: 5px;
@@ -189,11 +189,11 @@
}
.member {
- color: #4CAF50;
+ color: #4caf50;
}
.moderator {
- color: #2196F3;
+ color: #2196f3;
}
.owner {
diff --git a/src/renderer/components/watch-video-playlist/watch-video-playlist.css b/src/renderer/components/watch-video-playlist/watch-video-playlist.css
index 0a632bf00c851..8300d6c3bb956 100644
--- a/src/renderer/components/watch-video-playlist/watch-video-playlist.css
+++ b/src/renderer/components/watch-video-playlist/watch-video-playlist.css
@@ -4,7 +4,8 @@
white-space: nowrap;
}
-.playlistTitleLink, .channelName {
+.playlistTitleLink,
+.channelName {
text-decoration: none;
color: inherit;
}
diff --git a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.css b/src/renderer/components/watch-video-recommendations/watch-video-recommendations.css
index b0744683c5167..cc99e998ff906 100644
--- a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.css
+++ b/src/renderer/components/watch-video-recommendations/watch-video-recommendations.css
@@ -1,19 +1,19 @@
.relative {
- position: relative;
+ position: relative;
}
.watchVideoRecommendations {
- display: grid;
- grid-gap: 8px;
+ display: grid;
+ grid-gap: 8px;
}
.autoPlayToggle {
- display: flex;
- justify-content: flex-end;
- align-items: center;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
}
-.VideoRecommendationsTopBar{
- display:flex;
- justify-content:space-between;
+.VideoRecommendationsTopBar {
+ display: flex;
+ justify-content: space-between;
}
diff --git a/src/renderer/themes.css b/src/renderer/themes.css
index f4883c38f7ba5..b21cad820139e 100644
--- a/src/renderer/themes.css
+++ b/src/renderer/themes.css
@@ -1,5 +1,7 @@
-.system[data-system-theme*='light'], .light,
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='light'],
+.light,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.gray,
.dracula,
@@ -24,8 +26,10 @@
--destructive-active-color: #c62828;
}
-.system[data-system-theme*='light'], .light,
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='light'],
+.light,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.dracula,
.catppuccinMocha,
@@ -39,8 +43,10 @@
--instance-menu-color: var(--search-bar-color);
}
-.system[data-system-theme*='light'], .light,
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='light'],
+.light,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.gray,
.dracula,
@@ -53,8 +59,10 @@
--side-nav-hover-text-color: var(--primary-text-color);
}
-.system[data-system-theme*='light'], .light,
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='light'],
+.light,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.gray,
.dracula,
@@ -79,18 +87,21 @@
--logo-tertiary-color: var(--primary-text-color);
}
-.system[data-system-theme*='light'], .light,
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='light'],
+.light,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.gray {
- --logo-icon: url("../../_icons/iconColorSmall.svg");
- --logo-text: url("../../_icons/textColorSmall.svg");
+ --logo-icon: url('../../_icons/iconColorSmall.svg');
+ --logo-text: url('../../_icons/textColorSmall.svg');
--logo-primary-color: #f33;
--logo-secondary-color: #29abe1;
--logo-tertiary-color: #000;
}
-.system[data-system-theme*='dark'], .dark,
+.system[data-system-theme*='dark'],
+.dark,
.black,
.gray,
.dracula,
@@ -102,31 +113,33 @@
--primary-shadow-color: rgb(0 0 0 / 75%);
}
-.system[data-system-theme*='light'], .light {
+.system[data-system-theme*='light'],
+.light {
--primary-text-color: #212121;
--secondary-text-color: #424242;
--tertiary-text-color: #757575;
--primary-shadow-color: rgb(232 232 232 / 100%);
--title-color: #3f7ac6;
--bg-color: #f1f1f1;
- --favorite-icon-color: #0C0;
- --card-bg-color: #FFF;
+ --favorite-icon-color: #0c0;
+ --card-bg-color: #fff;
--secondary-card-bg-color: #eee;
- --scrollbar-color: #CCC;
- --scrollbar-color-hover: #BDBDBD;
- --side-nav-color: #FFF;
+ --scrollbar-color: #ccc;
+ --scrollbar-color-hover: #bdbdbd;
+ --side-nav-color: #fff;
--side-nav-hover-color: #e0e0e0;
--side-nav-active-color: #757575;
--search-bar-color: #f5f5f5;
}
-.system[data-system-theme*='dark'], .dark {
- --primary-text-color: #EEE;
+.system[data-system-theme*='dark'],
+.dark {
+ --primary-text-color: #eee;
--secondary-text-color: #ddd;
--tertiary-text-color: #999;
- --title-color: #EEE;
+ --title-color: #eee;
--bg-color: #212121;
- --favorite-icon-color: #0F0;
+ --favorite-icon-color: #0f0;
--card-bg-color: #303030;
--secondary-card-bg-color: rgb(0 0 0 / 75%);
--scrollbar-color: #414141;
@@ -138,27 +151,27 @@
}
.black {
- --primary-text-color: #EEE;
- --secondary-text-color: #ddd;
- --tertiary-text-color: #EEE;
- --title-color: #EEE;
- --bg-color: #000;
- --favorite-icon-color: #0F0;
- --card-bg-color: #000;
- --secondary-card-bg-color: rgb(0 0 0 / 75%);
- --scrollbar-color: #515151;
- --scrollbar-color-hover: #424242;
- --side-nav-color: #0f0f0f;
- --side-nav-hover-color: #212121;
- --side-nav-active-color: #303030;
- --search-bar-color: #262626;
+ --primary-text-color: #eee;
+ --secondary-text-color: #ddd;
+ --tertiary-text-color: #eee;
+ --title-color: #eee;
+ --bg-color: #000;
+ --favorite-icon-color: #0f0;
+ --card-bg-color: #000;
+ --secondary-card-bg-color: rgb(0 0 0 / 75%);
+ --scrollbar-color: #515151;
+ --scrollbar-color-hover: #424242;
+ --side-nav-color: #0f0f0f;
+ --side-nav-hover-color: #212121;
+ --side-nav-active-color: #303030;
+ --search-bar-color: #262626;
}
.gray {
- --primary-text-color: #EEE;
- --secondary-text-color: #E0E0E0;
- --tertiary-text-color: #F5F5F5;
- --title-color: #EEE;
+ --primary-text-color: #eee;
+ --secondary-text-color: #e0e0e0;
+ --tertiary-text-color: #f5f5f5;
+ --title-color: #eee;
--bg-color: #212121;
--card-bg-color: #303030;
--secondary-card-bg-color: rgb(0 0 0 / 75%);
@@ -169,22 +182,22 @@
}
.dracula {
- --primary-text-color: #F8F8F2;
+ --primary-text-color: #f8f8f2;
--secondary-text-color: #c6cee6;
--tertiary-text-color: #e5e8f3;
- --title-color: #BD93F9;
- --bg-color: #282A36;
- --favorite-icon-color: #0F0;
- --card-bg-color: #33353F;
- --secondary-card-bg-color: #282A36;
- --scrollbar-color: #44475A;
- --scrollbar-color-hover: #3D4051;
- --side-nav-color: #44475A;
- --side-nav-hover-color: #57596B;
- --side-nav-active-color: #3D4051;
- --search-bar-color: #3E3F4A;
- --logo-icon: url("../../_icons/iconDraculaLightSmall.svg");
- --logo-text: url("../../_icons/textDraculaLightSmall.svg");
+ --title-color: #bd93f9;
+ --bg-color: #282a36;
+ --favorite-icon-color: #0f0;
+ --card-bg-color: #33353f;
+ --secondary-card-bg-color: #282a36;
+ --scrollbar-color: #44475a;
+ --scrollbar-color-hover: #3d4051;
+ --side-nav-color: #44475a;
+ --side-nav-hover-color: #57596b;
+ --side-nav-active-color: #3d4051;
+ --search-bar-color: #3e3f4a;
+ --logo-icon: url('../../_icons/iconDraculaLightSmall.svg');
+ --logo-text: url('../../_icons/textDraculaLightSmall.svg');
}
.catppuccinMocha {
@@ -193,48 +206,48 @@
--tertiary-text-color: #a6adc8;
--title-color: var(--accent-color);
--bg-color: #1e1e2e;
- --favorite-icon-color: #0F0;
+ --favorite-icon-color: #0f0;
--card-bg-color: #181825;
--secondary-card-bg-color: #1e1e2e;
--scrollbar-color: #313244;
- --scrollbar-color-hover: #3D4051;
+ --scrollbar-color-hover: #3d4051;
--side-nav-color: #181825;
--side-nav-hover-color: #11111b;
--side-nav-active-color: #11111b;
--search-bar-color: #313244;
- --logo-icon: url("../../_icons/iconCatppuccinMochaLightSmall.svg");
- --logo-text: url("../../_icons/textCatppuccinMochaLightSmall.svg");
+ --logo-icon: url('../../_icons/iconCatppuccinMochaLightSmall.svg');
+ --logo-text: url('../../_icons/textCatppuccinMochaLightSmall.svg');
}
.pastelPink {
- --primary-text-color: #1F002B;
+ --primary-text-color: #1f002b;
--secondary-text-color: #361836;
- --tertiary-text-color: #5A285A;
+ --tertiary-text-color: #5a285a;
--primary-shadow-color: rgb(255 240 240 / 50%);
- --title-color: #185EB4;
+ --title-color: #185eb4;
--bg-color: #ffeadd;
--favorite-icon-color: #760278;
--card-bg-color: #ffd1dc;
- --secondary-card-bg-color: #FFF;
+ --secondary-card-bg-color: #fff;
--scrollbar-color: #f5c8d3;
--scrollbar-color-hover: #760278;
--scrollbar-text-color-hover: var(--scrollbar-color);
--side-nav-color: #ffd1dc;
--side-nav-hover-color: #cef4f1;
- --side-nav-active-color: #3124E7;
- --side-nav-active-text-color: #FFFF;
- --search-bar-color: #FFF0DD;
- --logo-icon: url("../../_icons/iconBlackSmall.svg");
- --logo-text: url("../../_icons/textBlackSmall.svg");
+ --side-nav-active-color: #3124e7;
+ --side-nav-active-text-color: #ffff;
+ --search-bar-color: #fff0dd;
+ --logo-icon: url('../../_icons/iconBlackSmall.svg');
+ --logo-text: url('../../_icons/textBlackSmall.svg');
}
.nordic {
- --primary-text-color: #EEE;
+ --primary-text-color: #eee;
--secondary-text-color: #ddd;
- --tertiary-text-color: #EEE;
- --title-color: #EEE;
+ --tertiary-text-color: #eee;
+ --title-color: #eee;
--bg-color: #2b2f3a;
- --favorite-icon-color: #0F0;
+ --favorite-icon-color: #0f0;
--card-bg-color: #2e3440;
--secondary-card-bg-color: rgb(59 66 82 / 75%);
--scrollbar-color: #4b566a;
@@ -243,30 +256,30 @@
--side-nav-hover-color: #3b4252;
--side-nav-active-color: #3b4252;
--search-bar-color: #4b566a;
- --logo-icon: url("../../_icons/iconNordicLightSmall.svg");
- --logo-text: url("../../_icons/textNordicLightSmall.svg");
+ --logo-icon: url('../../_icons/iconNordicLightSmall.svg');
+ --logo-text: url('../../_icons/textNordicLightSmall.svg');
}
.hotPink {
- --primary-text-color: #FFFF;
- --secondary-text-color: #FFFF;
- --tertiary-text-color: #FFFF;
+ --primary-text-color: #ffff;
+ --secondary-text-color: #ffff;
+ --tertiary-text-color: #ffff;
--title-color: #000;
--bg-color: #ff008a;
- --favorite-icon-color: #0F0;
- --card-bg-color: #DE1C85;
+ --favorite-icon-color: #0f0;
+ --card-bg-color: #de1c85;
--secondary-card-bg-color: rgb(0 0 0 / 75%);
- --scrollbar-color: #FFF;
- --scrollbar-color-hover: #C0F6FF;
+ --scrollbar-color: #fff;
+ --scrollbar-color-hover: #c0f6ff;
--scrollbar-text-color-hover: #000;
- --side-nav-color: #EE1E90;
- --side-nav-hover-color: #FFF;
+ --side-nav-color: #ee1e90;
+ --side-nav-hover-color: #fff;
--side-nav-hover-text-color: #000;
--side-nav-active-color: #959595;
--side-nav-active-text-color: #000;
- --search-bar-color: #9C2D5D;
- --logo-icon: url("../../_icons/iconWhiteSmall.svg");
- --logo-text: url("../../_icons/textWhiteSmall.svg");
+ --search-bar-color: #9c2d5d;
+ --logo-icon: url('../../_icons/iconWhiteSmall.svg');
+ --logo-text: url('../../_icons/textWhiteSmall.svg');
/* The hot pink theme does not have a great color contrast with
many other colors than black and white. This means that the primary and
@@ -275,11 +288,11 @@
--primary-color: #000 !important;
--primary-color-hover: #000 !important;
--primary-color-active: #000 !important;
- --text-with-main-color: #FFF !important;
- --text-with-accent-color: #FFF !important;
+ --text-with-main-color: #fff !important;
+ --text-with-accent-color: #fff !important;
--accent-color: #000 !important;
--accent-color-hover: #808080 !important;
- --accent-color-active: #6A739A !important;
+ --accent-color-active: #6a739a !important;
--accent-color-light: #000 !important;
--accent-color-visited: #000 !important;
--accent-color-opacity1: rgb(0 0 0 / 4%) !important;
@@ -291,31 +304,35 @@
/* Given that the Hot Pink theme does not need link underlining due to meeting
WCAG 2 Level AA (https://webaim.org/resources/linkcontrastchecker/?fcolor=FFFFFF&bcolor=DE1C85&lcolor=000000),
it can be safely elided. This looks quite pleasant on this theme. */
-.hotPink a:not(:hover, :focus), .hotPink .navOption:hover, .hotPink .navOption:focus, .hotPink *:not(:hover, :focus) {
+.hotPink a:not(:hover, :focus),
+.hotPink .navOption:hover,
+.hotPink .navOption:focus,
+.hotPink *:not(:hover, :focus) {
text-decoration: none;
}
-.hotPink a:hover, .hotPink a:focus {
+.hotPink a:hover,
+.hotPink a:focus {
text-decoration: underline;
}
.solarizedDark {
- --primary-text-color: #FDF6E3;
- --secondary-text-color: #DDD6C3;
- --tertiary-text-color: #DDD6C3;
- --title-color: #FDF6E3;
- --bg-color: #002B36;
+ --primary-text-color: #fdf6e3;
+ --secondary-text-color: #ddd6c3;
+ --tertiary-text-color: #ddd6c3;
+ --title-color: #fdf6e3;
+ --bg-color: #002b36;
--favorite-icon-color: #0f0;
- --card-bg-color: #204B56;
+ --card-bg-color: #204b56;
--secondary-card-bg-color: #102b36;
- --scrollbar-color: #608B96;
- --scrollbar-color-hover: #406B76;
- --side-nav-color: #204B56;
- --side-nav-hover-color: #608B96;
- --side-nav-active-color: #406B76;
+ --scrollbar-color: #608b96;
+ --scrollbar-color-hover: #406b76;
+ --side-nav-color: #204b56;
+ --side-nav-hover-color: #608b96;
+ --side-nav-active-color: #406b76;
--search-bar-color: #073642;
- --logo-icon: url("../../_icons/iconSolarizedLightSmall.svg");
- --logo-text: url("../../_icons/textSolarizedLightSmall.svg");
+ --logo-icon: url('../../_icons/iconSolarizedLightSmall.svg');
+ --logo-text: url('../../_icons/textSolarizedLightSmall.svg');
}
.solarizedLight {
@@ -333,8 +350,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--side-nav-hover-color: #fdf6e3;
--side-nav-active-color: #839496;
--search-bar-color: #c9c8b5;
- --logo-icon: url("../../_icons/iconSolarizedDarkSmall.svg");
- --logo-text: url("../../_icons/textSolarizedDarkSmall.svg");
+ --logo-icon: url('../../_icons/iconSolarizedDarkSmall.svg');
+ --logo-text: url('../../_icons/textSolarizedDarkSmall.svg');
}
.mainRed,
@@ -347,9 +364,9 @@ it can be safely elided. This looks quite pleasant on this theme. */
.mainCyan,
.mainTeal,
.mainGreen {
- --text-with-main-color: #FFF;
- --logo-icon-bar-color: url("../../_icons/iconWhiteSmall.svg");
- --logo-text-bar-color: url("../../_icons/textWhiteSmall.svg");
+ --text-with-main-color: #fff;
+ --logo-icon-bar-color: url('../../_icons/iconWhiteSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textWhiteSmall.svg');
}
.mainLightGreen,
@@ -359,8 +376,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
.mainOrange,
.mainDeepOrange {
--text-with-main-color: #000;
- --logo-icon-bar-color: url("../../_icons/iconBlackSmall.svg");
- --logo-text-bar-color: url("../../_icons/textBlackSmall.svg");
+ --logo-icon-bar-color: url('../../_icons/iconBlackSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textBlackSmall.svg');
}
.mainRed {
@@ -370,93 +387,93 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.mainPink {
- --primary-color: #E91E63;
- --primary-color-hover: #D81B60;
- --primary-color-active: #AD1457;
+ --primary-color: #e91e63;
+ --primary-color-hover: #d81b60;
+ --primary-color-active: #ad1457;
}
.mainPurple {
- --primary-color: #9C27B0;
- --primary-color-hover: #8E24AA;
- --primary-color-active: #6A1B9A;
+ --primary-color: #9c27b0;
+ --primary-color-hover: #8e24aa;
+ --primary-color-active: #6a1b9a;
}
.mainDeepPurple {
- --primary-color: #673AB7;
- --primary-color-hover: #5E35B1;
- --primary-color-active: #4527A0;
+ --primary-color: #673ab7;
+ --primary-color-hover: #5e35b1;
+ --primary-color-active: #4527a0;
}
.mainIndigo {
- --primary-color: #3F51B5;
- --primary-color-hover: #3949AB;
+ --primary-color: #3f51b5;
+ --primary-color-hover: #3949ab;
--primary-color-active: #283593;
}
.mainBlue {
- --primary-color: #2196F3;
- --primary-color-hover: #1E88E5;
- --primary-color-active: #1565C0;
+ --primary-color: #2196f3;
+ --primary-color-hover: #1e88e5;
+ --primary-color-active: #1565c0;
}
.mainLightBlue {
- --primary-color: #03A9F4;
- --primary-color-hover: #039BE5;
- --primary-color-active: #0277BD;
+ --primary-color: #03a9f4;
+ --primary-color-hover: #039be5;
+ --primary-color-active: #0277bd;
}
.mainCyan {
- --primary-color: #00BCD4;
- --primary-color-hover: #00ACC1;
- --primary-color-active: #00838F;
+ --primary-color: #00bcd4;
+ --primary-color-hover: #00acc1;
+ --primary-color-active: #00838f;
}
.mainTeal {
--primary-color: #009688;
- --primary-color-hover: #00897B;
- --primary-color-active: #00695C;
+ --primary-color-hover: #00897b;
+ --primary-color-active: #00695c;
}
.mainGreen {
- --primary-color: #4CAF50;
- --primary-color-hover: #43A047;
- --primary-color-active: #2E7D32;
+ --primary-color: #4caf50;
+ --primary-color-hover: #43a047;
+ --primary-color-active: #2e7d32;
}
.mainLightGreen {
- --primary-color: #8BC34A;
- --primary-color-hover: #7CB342;
- --primary-color-active: #558B2F;
+ --primary-color: #8bc34a;
+ --primary-color-hover: #7cb342;
+ --primary-color-active: #558b2f;
}
.mainLime {
- --primary-color: #CDDC39;
- --primary-color-hover: #C0CA33;
- --primary-color-active: #9E9D24;
+ --primary-color: #cddc39;
+ --primary-color-hover: #c0ca33;
+ --primary-color-active: #9e9d24;
}
.mainYellow {
- --primary-color: #FFEB3B;
- --primary-color-hover: #FDD835;
- --primary-color-active: #F9A825;
+ --primary-color: #ffeb3b;
+ --primary-color-hover: #fdd835;
+ --primary-color-active: #f9a825;
}
.mainAmber {
- --primary-color: #FFC107;
- --primary-color-hover: #FFB300;
- --primary-color-active: #FF8F00;
+ --primary-color: #ffc107;
+ --primary-color-hover: #ffb300;
+ --primary-color-active: #ff8f00;
}
.mainOrange {
- --primary-color: #FF9800;
- --primary-color-hover: #FB8C00;
- --primary-color-active: #EF6C00;
+ --primary-color: #ff9800;
+ --primary-color-hover: #fb8c00;
+ --primary-color-active: #ef6c00;
}
.mainDeepOrange {
- --primary-color: #FF5722;
- --primary-color-hover: #F4511E;
- --primary-color-active: #D84315;
+ --primary-color: #ff5722;
+ --primary-color-hover: #f4511e;
+ --primary-color-active: #d84315;
}
.mainDraculaCyan,
@@ -464,58 +481,58 @@ it can be safely elided. This looks quite pleasant on this theme. */
.mainDraculaOrange,
.mainDraculaRed,
.mainDraculaYellow {
- --text-with-main-color: #282A36;
- --logo-icon-bar-color: url("../../_icons/iconDraculaDarkSmall.svg");
- --logo-text-bar-color: url("../../_icons/textDraculaDarkSmall.svg");
+ --text-with-main-color: #282a36;
+ --logo-icon-bar-color: url('../../_icons/iconDraculaDarkSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textDraculaDarkSmall.svg');
}
.mainDraculaPink,
.mainDraculaPurple {
- --text-with-main-color: #F8F8F2;
- --logo-icon-bar-color: url("../../_icons/iconDraculaLightSmall.svg");
- --logo-text-bar-color: url("../../_icons/textDraculaLightSmall.svg");
+ --text-with-main-color: #f8f8f2;
+ --logo-icon-bar-color: url('../../_icons/iconDraculaLightSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textDraculaLightSmall.svg');
}
.mainDraculaCyan {
- --primary-color: #8BE9FD;
- --primary-color-hover: #97EBFD;
- --primary-color-active: #7DD2E4;
+ --primary-color: #8be9fd;
+ --primary-color-hover: #97ebfd;
+ --primary-color-active: #7dd2e4;
}
.mainDraculaGreen {
- --primary-color: #50FA7B;
- --primary-color-hover: #62FB88;
- --primary-color-active: #48E16F;
+ --primary-color: #50fa7b;
+ --primary-color-hover: #62fb88;
+ --primary-color-active: #48e16f;
}
.mainDraculaOrange {
- --primary-color: #FFB86C;
- --primary-color-hover: #FFBF7B;
- --primary-color-active: #E6A661;
+ --primary-color: #ffb86c;
+ --primary-color-hover: #ffbf7b;
+ --primary-color-active: #e6a661;
}
.mainDraculaPink {
- --primary-color: #FF79C6;
- --primary-color-hover: #FF86CC;
- --primary-color-active: #E66DB2;
+ --primary-color: #ff79c6;
+ --primary-color-hover: #ff86cc;
+ --primary-color-active: #e66db2;
}
.mainDraculaPurple {
- --primary-color: #BD93F9;
- --primary-color-hover: #C49EFA;
- --primary-color-active: #AA84E0;
+ --primary-color: #bd93f9;
+ --primary-color-hover: #c49efa;
+ --primary-color-active: #aa84e0;
}
.mainDraculaRed {
- --primary-color: #F55;
- --primary-color-hover: #F66;
- --primary-color-active: #E64D4D;
+ --primary-color: #f55;
+ --primary-color-hover: #f66;
+ --primary-color-active: #e64d4d;
}
.mainDraculaYellow {
- --primary-color: #F1FA8C;
- --primary-color-hover: #F2FB98;
- --primary-color-active: #D9E17E;
+ --primary-color: #f1fa8c;
+ --primary-color-hover: #f2fb98;
+ --primary-color-active: #d9e17e;
}
.mainCatppuccinMochaRosewater,
@@ -533,8 +550,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
.mainCatppuccinMochaBlue,
.mainCatppuccinMochaLavender {
--text-with-main-color: #1e1e2e;
- --logo-icon-bar-color: url("../../_icons/iconCatppuccinMochaDarkSmall.svg");
- --logo-text-bar-color: url("../../_icons/textCatppuccinMochaDarkSmall.svg");
+ --logo-icon-bar-color: url('../../_icons/iconCatppuccinMochaDarkSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textCatppuccinMochaDarkSmall.svg');
}
.mainCatppuccinMochaRosewater {
@@ -628,15 +645,15 @@ it can be safely elided. This looks quite pleasant on this theme. */
.mainSolarizedViolet,
.mainSolarizedGreen {
--text-with-main-color: #fdf6e3;
- --logo-icon-bar-color: url("../../_icons/iconDraculaLightSmall.svg");
- --logo-text-bar-color: url("../../_icons/textDraculaLightSmall.svg");
+ --logo-icon-bar-color: url('../../_icons/iconDraculaLightSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textDraculaLightSmall.svg');
}
.mainSolarizedBlue,
.mainSolarizedCyan {
--text-with-main-color: #000;
- --logo-icon-bar-color: url("../../_icons/iconDraculaDarkSmall.svg");
- --logo-text-bar-color: url("../../_icons/textDraculaDarkSmall.svg");
+ --logo-icon-bar-color: url('../../_icons/iconDraculaDarkSmall.svg');
+ --logo-text-bar-color: url('../../_icons/textDraculaDarkSmall.svg');
}
.mainSolarizedYellow {
@@ -697,7 +714,7 @@ it can be safely elided. This looks quite pleasant on this theme. */
.secCyan,
.secTeal,
.secGreen {
- --text-with-accent-color: #FFF;
+ --text-with-accent-color: #fff;
}
.secLightGreen,
@@ -722,11 +739,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secPink {
- --accent-color: #E91E63;
- --accent-color-hover: #D81B60;
- --accent-color-active: #AD1457;
- --accent-color-light: #F48FB1;
- --accent-color-visited: #880E4F;
+ --accent-color: #e91e63;
+ --accent-color-hover: #d81b60;
+ --accent-color-active: #ad1457;
+ --accent-color-light: #f48fb1;
+ --accent-color-visited: #880e4f;
--accent-color-opacity1: rgb(233 30 99 / 4%);
--accent-color-opacity2: rgb(233 30 99 / 12%);
--accent-color-opacity3: rgb(233 30 99 / 16%);
@@ -734,11 +751,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secPurple {
- --accent-color: #9C27B0;
- --accent-color-hover: #8E24AA;
- --accent-color-active: #6A1B9A;
- --accent-color-light: #CE93D8;
- --accent-color-visited: #4A148C;
+ --accent-color: #9c27b0;
+ --accent-color-hover: #8e24aa;
+ --accent-color-active: #6a1b9a;
+ --accent-color-light: #ce93d8;
+ --accent-color-visited: #4a148c;
--accent-color-opacity1: rgb(156 39 176 / 4%);
--accent-color-opacity2: rgb(156 39 176 / 12%);
--accent-color-opacity3: rgb(156 39 176 / 16%);
@@ -746,11 +763,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secDeepPurple {
- --accent-color: #673AB7;
- --accent-color-hover: #5E35B1;
- --accent-color-active: #4527A0;
- --accent-color-light: #B39DDB;
- --accent-color-visited: #311B92;
+ --accent-color: #673ab7;
+ --accent-color-hover: #5e35b1;
+ --accent-color-active: #4527a0;
+ --accent-color-light: #b39ddb;
+ --accent-color-visited: #311b92;
--accent-color-opacity1: rgb(103 58 183 / 4%);
--accent-color-opacity2: rgb(103 58 183 / 12%);
--accent-color-opacity3: rgb(103 58 183 / 16%);
@@ -758,11 +775,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secIndigo {
- --accent-color: #3F51B5;
- --accent-color-hover: #3949AB;
+ --accent-color: #3f51b5;
+ --accent-color-hover: #3949ab;
--accent-color-active: #283593;
- --accent-color-light: #9FA8DA;
- --accent-color-visited: #1A237E;
+ --accent-color-light: #9fa8da;
+ --accent-color-visited: #1a237e;
--accent-color-opacity1: rgb(63 81 181 / 4%);
--accent-color-opacity2: rgb(63 81 181 / 12%);
--accent-color-opacity3: rgb(63 81 181 / 16%);
@@ -770,11 +787,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secBlue {
- --accent-color: #2196F3;
- --accent-color-hover: #1E88E5;
- --accent-color-active: #1565C0;
- --accent-color-light: #90CAF9;
- --accent-color-visited: #0D47A1;
+ --accent-color: #2196f3;
+ --accent-color-hover: #1e88e5;
+ --accent-color-active: #1565c0;
+ --accent-color-light: #90caf9;
+ --accent-color-visited: #0d47a1;
--accent-color-opacity1: rgb(33 150 243 / 4%);
--accent-color-opacity2: rgb(33 150 243 / 12%);
--accent-color-opacity3: rgb(33 150 243 / 16%);
@@ -782,11 +799,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secLightBlue {
- --accent-color: #03A9F4;
- --accent-color-hover: #039BE5;
- --accent-color-active: #0277BD;
- --accent-color-light: #81D4FA;
- --accent-color-visited: #01579B;
+ --accent-color: #03a9f4;
+ --accent-color-hover: #039be5;
+ --accent-color-active: #0277bd;
+ --accent-color-light: #81d4fa;
+ --accent-color-visited: #01579b;
--accent-color-opacity1: rgb(3 169 244 / 4%);
--accent-color-opacity2: rgb(3 169 244 / 12%);
--accent-color-opacity3: rgb(3 169 244 / 16%);
@@ -794,10 +811,10 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secCyan {
- --accent-color: #00BCD4;
- --accent-color-hover: #00ACC1;
- --accent-color-active: #00838F;
- --accent-color-light: #80DEEA;
+ --accent-color: #00bcd4;
+ --accent-color-hover: #00acc1;
+ --accent-color-active: #00838f;
+ --accent-color-light: #80deea;
--accent-color-visited: #006064;
--accent-color-opacity1: rgb(0 188 212 / 4%);
--accent-color-opacity2: rgb(0 188 212 / 12%);
@@ -807,10 +824,10 @@ it can be safely elided. This looks quite pleasant on this theme. */
.secTeal {
--accent-color: #009688;
- --accent-color-hover: #00897B;
- --accent-color-active: #00695C;
- --accent-color-light: #80CBC4;
- --accent-color-visited: #004D40;
+ --accent-color-hover: #00897b;
+ --accent-color-active: #00695c;
+ --accent-color-light: #80cbc4;
+ --accent-color-visited: #004d40;
--accent-color-opacity1: rgb(0 150 136 / 4%);
--accent-color-opacity2: rgb(0 150 136 / 12%);
--accent-color-opacity3: rgb(0 150 136 / 16%);
@@ -818,11 +835,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secGreen {
- --accent-color: #4CAF50;
- --accent-color-hover: #43A047;
- --accent-color-active: #2E7D32;
- --accent-color-light: #A5D6A7;
- --accent-color-visited: #1B5E20;
+ --accent-color: #4caf50;
+ --accent-color-hover: #43a047;
+ --accent-color-active: #2e7d32;
+ --accent-color-light: #a5d6a7;
+ --accent-color-visited: #1b5e20;
--accent-color-opacity1: rgb(76 175 80 / 4%);
--accent-color-opacity2: rgb(76 175 80 / 12%);
--accent-color-opacity3: rgb(76 175 80 / 16%);
@@ -830,11 +847,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secLightGreen {
- --accent-color: #8BC34A;
- --accent-color-hover: #7CB342;
- --accent-color-active: #558B2F;
- --accent-color-light: #C5E1A5;
- --accent-color-visited: #33691E;
+ --accent-color: #8bc34a;
+ --accent-color-hover: #7cb342;
+ --accent-color-active: #558b2f;
+ --accent-color-light: #c5e1a5;
+ --accent-color-visited: #33691e;
--accent-color-opacity1: rgb(139 195 74 / 4%);
--accent-color-opacity2: rgb(139 195 74 / 12%);
--accent-color-opacity3: rgb(139 195 74 / 16%);
@@ -842,10 +859,10 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secLime {
- --accent-color: #CDDC39;
- --accent-color-hover: #C0CA33;
- --accent-color-active: #9E9D24;
- --accent-color-light: #E6EE9C;
+ --accent-color: #cddc39;
+ --accent-color-hover: #c0ca33;
+ --accent-color-active: #9e9d24;
+ --accent-color-light: #e6ee9c;
--accent-color-visited: #827717;
--accent-color-opacity1: rgb(205 220 57 / 4%);
--accent-color-opacity2: rgb(205 220 57 / 12%);
@@ -854,11 +871,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secYellow {
- --accent-color: #FFEB3B;
- --accent-color-hover: #FDD835;
- --accent-color-active: #F9A825;
- --accent-color-light: #FFF59D;
- --accent-color-visited: #F57F17;
+ --accent-color: #ffeb3b;
+ --accent-color-hover: #fdd835;
+ --accent-color-active: #f9a825;
+ --accent-color-light: #fff59d;
+ --accent-color-visited: #f57f17;
--accent-color-opacity1: rgb(255 235 59 / 4%);
--accent-color-opacity2: rgb(255 235 59 / 12%);
--accent-color-opacity3: rgb(255 235 59 / 16%);
@@ -866,11 +883,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secAmber {
- --accent-color: #FFC107;
- --accent-color-hover: #FFB300;
- --accent-color-active: #FF8F00;
- --accent-color-light: #FFE082;
- --accent-color-visited: #FF6F00;
+ --accent-color: #ffc107;
+ --accent-color-hover: #ffb300;
+ --accent-color-active: #ff8f00;
+ --accent-color-light: #ffe082;
+ --accent-color-visited: #ff6f00;
--accent-color-opacity1: rgb(255 193 7 / 4%);
--accent-color-opacity2: rgb(255 193 7 / 12%);
--accent-color-opacity3: rgb(255 193 7 / 16%);
@@ -878,11 +895,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secOrange {
- --accent-color: #FF9800;
- --accent-color-hover: #FB8C00;
- --accent-color-active: #EF6C00;
- --accent-color-light: #FFCC80;
- --accent-color-visited: #E65100;
+ --accent-color: #ff9800;
+ --accent-color-hover: #fb8c00;
+ --accent-color-active: #ef6c00;
+ --accent-color-light: #ffcc80;
+ --accent-color-visited: #e65100;
--accent-color-opacity1: rgb(255 152 0 / 4%);
--accent-color-opacity2: rgb(255 152 0 / 12%);
--accent-color-opacity3: rgb(255 152 0 / 16%);
@@ -890,11 +907,11 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secDeepOrange {
- --accent-color: #FF5722;
- --accent-color-hover: #F4511E;
- --accent-color-active: #D84315;
- --accent-color-light: #FFAB91;
- --accent-color-visited: #BF360C;
+ --accent-color: #ff5722;
+ --accent-color-hover: #f4511e;
+ --accent-color-active: #d84315;
+ --accent-color-light: #ffab91;
+ --accent-color-visited: #bf360c;
--accent-color-opacity1: rgb(255 87 34 / 4%);
--accent-color-opacity2: rgb(255 87 34 / 12%);
--accent-color-opacity3: rgb(255 87 34 / 16%);
@@ -911,7 +928,7 @@ it can be safely elided. This looks quite pleasant on this theme. */
.secDraculaPink,
.secDraculaPurple {
- --text-with-accent-color: #F8F8F2;
+ --text-with-accent-color: #f8f8f2;
}
.secDraculaCyan,
@@ -928,60 +945,60 @@ it can be safely elided. This looks quite pleasant on this theme. */
}
.secDraculaCyan {
- --accent-color: #8BE9FD;
- --accent-color-hover: #97EBFD;
- --accent-color-active: #7DD2E4;
- --accent-color-light: #A2EDFD;
- --accent-color-visited: #6FBACA;
+ --accent-color: #8be9fd;
+ --accent-color-hover: #97ebfd;
+ --accent-color-active: #7dd2e4;
+ --accent-color-light: #a2edfd;
+ --accent-color-visited: #6fbaca;
}
.secDraculaGreen {
- --accent-color: #50FA7B;
- --accent-color-hover: #62FB88;
- --accent-color-active: #48E16F;
- --accent-color-light: #73FB95;
- --accent-color-visited: #40C862;
+ --accent-color: #50fa7b;
+ --accent-color-hover: #62fb88;
+ --accent-color-active: #48e16f;
+ --accent-color-light: #73fb95;
+ --accent-color-visited: #40c862;
}
.secDraculaOrange {
- --accent-color: #FFB86C;
- --accent-color-hover: #FFBF7B;
- --accent-color-active: #E6A661;
- --accent-color-light: #FFC689;
- --accent-color-visited: #CC9356;
+ --accent-color: #ffb86c;
+ --accent-color-hover: #ffbf7b;
+ --accent-color-active: #e6a661;
+ --accent-color-light: #ffc689;
+ --accent-color-visited: #cc9356;
}
.secDraculaPink {
- --accent-color: #FF79C6;
- --accent-color-hover: #FF86CC;
- --accent-color-active: #E66DB2;
- --accent-color-light: #FF94D1;
- --accent-color-visited: #CC619E;
+ --accent-color: #ff79c6;
+ --accent-color-hover: #ff86cc;
+ --accent-color-active: #e66db2;
+ --accent-color-light: #ff94d1;
+ --accent-color-visited: #cc619e;
}
.secDraculaPurple {
- --accent-color: #BD93F9;
- --accent-color-hover: #C49EFA;
- --accent-color-active: #AA84E0;
- --accent-color-light: #CAA9FA;
- --accent-color-visited: #9776C7;
+ --accent-color: #bd93f9;
+ --accent-color-hover: #c49efa;
+ --accent-color-active: #aa84e0;
+ --accent-color-light: #caa9fa;
+ --accent-color-visited: #9776c7;
}
.secDraculaRed {
- --accent-color: #F55;
- --accent-color-hover: #F66;
- --accent-color-active: #E64D4D;
- --accent-color-light: #F77;
- --accent-color-visited: #C44;
+ --accent-color: #f55;
+ --accent-color-hover: #f66;
+ --accent-color-active: #e64d4d;
+ --accent-color-light: #f77;
+ --accent-color-visited: #c44;
}
.secDraculaYellow {
- --accent-color: #F1FA8C;
- --accent-color-hover: #F2FB98;
- --accent-color-active: #D9E17E;
- --accent-color-light: #F4FBA3;
- --accent-color-visited: #C1C870;
+ --accent-color: #f1fa8c;
+ --accent-color-hover: #f2fb98;
+ --accent-color-active: #d9e17e;
+ --accent-color-light: #f4fba3;
+ --accent-color-visited: #c1c870;
}
.secCatppuccinMochaRosewater,
@@ -1005,8 +1022,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #f5e0dc;
--accent-color-hover: #fceeec;
--accent-color-active: #e1c8c3;
- --accent-color-light: #F8EAE7;
- --accent-color-visited: #D3A197;
+ --accent-color-light: #f8eae7;
+ --accent-color-visited: #d3a197;
--accent-color-opacity1: rgb(245 224 220 / 4%);
--accent-color-opacity2: rgb(245 224 220 / 12%);
--accent-color-opacity3: rgb(245 224 220 / 16%);
@@ -1017,7 +1034,7 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #f2cdcd;
--accent-color-hover: #f3d7d7;
--accent-color-active: #ddb7b7;
- --accent-color-light: #F7DFDF;
+ --accent-color-light: #f7dfdf;
--accent-color-visited: #cf9898;
--accent-color-opacity1: rgb(242 205 205 / 4%);
--accent-color-opacity2: rgb(242 205 205 / 12%);
@@ -1041,8 +1058,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #cba6f7;
--accent-color-hover: #d4b7f8;
--accent-color-active: #b38fdf;
- --accent-color-light: #D6B9F9;
- --accent-color-visited: #A171DA;
+ --accent-color-light: #d6b9f9;
+ --accent-color-visited: #a171da;
--accent-color-opacity1: rgb(203 166 247 / 4%);
--accent-color-opacity2: rgb(203 166 247 / 12%);
--accent-color-opacity3: rgb(203 166 247 / 16%);
@@ -1053,8 +1070,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #f38ba8;
--accent-color-hover: #f399b2;
--accent-color-active: #de7693;
- --accent-color-light: #F5A3BA;
- --accent-color-visited: #D56C89;
+ --accent-color-light: #f5a3ba;
+ --accent-color-visited: #d56c89;
--accent-color-opacity1: rgb(243 139 168 / 4%);
--accent-color-opacity2: rgb(243 139 168 / 12%);
--accent-color-opacity3: rgb(243 139 168 / 16%);
@@ -1065,8 +1082,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #eba0ac;
--accent-color-hover: #ebb4bd;
--accent-color-active: #d68895;
- --accent-color-light: #F0B7C0;
- --accent-color-visited: #C86A79;
+ --accent-color-light: #f0b7c0;
+ --accent-color-visited: #c86a79;
--accent-color-opacity1: rgb(235 160 172 / 4%);
--accent-color-opacity2: rgb(235 160 172 / 12%);
--accent-color-opacity3: rgb(235 160 172 / 16%);
@@ -1077,8 +1094,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #fab387;
--accent-color-hover: #f7bd99;
--accent-color-active: #e1996d;
- --accent-color-light: #FBC4A2;
- --accent-color-visited: #D78A5B;
+ --accent-color-light: #fbc4a2;
+ --accent-color-visited: #d78a5b;
--accent-color-opacity1: rgb(250 179 135 / 4%);
--accent-color-opacity2: rgb(250 179 135 / 12%);
--accent-color-opacity3: rgb(250 179 135 / 16%);
@@ -1089,8 +1106,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #f9e2af;
--accent-color-hover: #f9e7bf;
--accent-color-active: #dec48d;
- --accent-color-light: #FBECCB;
- --accent-color-visited: #D5B05D;
+ --accent-color-light: #fbeccb;
+ --accent-color-visited: #d5b05d;
--accent-color-opacity1: rgb(249 226 175 / 4%);
--accent-color-opacity2: rgb(249 226 175 / 12%);
--accent-color-opacity3: rgb(249 226 175 / 16%);
@@ -1101,8 +1118,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #a6e3a1;
--accent-color-hover: #b6e3b2;
--accent-color-active: #86c780;
- --accent-color-light: #BCEAB8;
- --accent-color-visited: #6ED166;
+ --accent-color-light: #bceab8;
+ --accent-color-visited: #6ed166;
--accent-color-opacity1: rgb(166 227 161 / 4%);
--accent-color-opacity2: rgb(166 227 161 / 12%);
--accent-color-opacity3: rgb(166 227 161 / 16%);
@@ -1113,8 +1130,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #94e2d5;
--accent-color-hover: #a1dfd5;
--accent-color-active: #6fc5b7;
- --accent-color-light: #AFE9DF;
- --accent-color-visited: #5CCCB9;
+ --accent-color-light: #afe9df;
+ --accent-color-visited: #5cccb9;
--accent-color-opacity1: rgb(148 226 213 / 4%);
--accent-color-opacity2: rgb(148 226 213 / 12%);
--accent-color-opacity3: rgb(148 226 213 / 16%);
@@ -1125,8 +1142,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #89dceb;
--accent-color-hover: #99dfeb;
--accent-color-active: #68bcca;
- --accent-color-light: #9FE3EF;
- --accent-color-visited: #64C2D3;
+ --accent-color-light: #9fe3ef;
+ --accent-color-visited: #64c2d3;
--accent-color-opacity1: rgb(137 220 235 / 4%);
--accent-color-opacity2: rgb(137 220 235 / 12%);
--accent-color-opacity3: rgb(137 220 235 / 16%);
@@ -1137,8 +1154,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #74c7ec;
--accent-color-hover: #84c7e6;
--accent-color-active: #59a9cf;
- --accent-color-light: #93D4F0;
- --accent-color-visited: #6AB6D7;
+ --accent-color-light: #93d4f0;
+ --accent-color-visited: #6ab6d7;
--accent-color-opacity1: rgb(116 199 236 / 4%);
--accent-color-opacity2: rgb(116 199 236 / 12%);
--accent-color-opacity3: rgb(116 199 236 / 16%);
@@ -1149,8 +1166,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #89b4fa;
--accent-color-hover: #9bbef6;
--accent-color-active: #6593df;
- --accent-color-light: #A7C7FB;
- --accent-color-visited: #739CDD;
+ --accent-color-light: #a7c7fb;
+ --accent-color-visited: #739cdd;
--accent-color-opacity1: rgb(137 220 235 / 4%);
--accent-color-opacity2: rgb(137 220 235 / 12%);
--accent-color-opacity3: rgb(137 220 235 / 16%);
@@ -1161,8 +1178,8 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color: #b4befe;
--accent-color-hover: #c9d0ff;
--accent-color-active: #8d98e4;
- --accent-color-light: #D2D8FE;
- --accent-color-visited: #96A1E9;
+ --accent-color-light: #d2d8fe;
+ --accent-color-visited: #96a1e9;
--accent-color-opacity1: rgb(180 190 254 / 4%);
--accent-color-opacity2: rgb(180 190 254 / 12%);
--accent-color-opacity3: rgb(180 190 254 / 16%);
@@ -1287,7 +1304,7 @@ it can be safely elided. This looks quite pleasant on this theme. */
--accent-color-opacity4: rgb(101 119 0 / 24%);
}
- /* region destructive color for red color themes
+/* region destructive color for red color themes
using :has(.app) to increase specificity */
.mainRed:has(.app),
.secRed:has(.app),
@@ -1295,33 +1312,33 @@ it can be safely elided. This looks quite pleasant on this theme. */
.secDraculaRed:has(.app),
.mainSolarizedRed:has(.app),
.secSolarizedRed:has(.app) {
- --destructive-color: #9C27B0;
- --destructive-text-color: #FFF;
- --destructive-hover-color: #8E24AA;
- --destructive-active-color: #6A1B9A;
- }
-
- /* Deal with theme conflict on destructive colors */
- .mainRed.secPurple,
- .mainRed.secDeepPurple,
- .mainRed.secDraculaPurple,
- .mainDraculaRed.secPurple,
- .mainDraculaRed.secDeepPurple,
- .mainDraculaRed.secDraculaPurple,
- .mainSolarizedRed.secPurple,
- .mainSolarizedRed.secDeepPurple,
- .mainSolarizedRed.secDraculaPurple,
- .mainPurple.secRed,
- .mainPurple.secDraculaRed,
- .mainDeepPurple.secRed,
- .mainDeepPurple.secDraculaRed,
- .mainDraculaPurple.secRed,
- .mainDraculaPurple.secDraculaRed {
- --destructive-color: #FF9800;
- --destructive-text-color: #FFF;
- --destructive-hover-color: #FB8C00;
- --destructive-active-color: #EF6C00;
- }
+ --destructive-color: #9c27b0;
+ --destructive-text-color: #fff;
+ --destructive-hover-color: #8e24aa;
+ --destructive-active-color: #6a1b9a;
+}
+
+/* Deal with theme conflict on destructive colors */
+.mainRed.secPurple,
+.mainRed.secDeepPurple,
+.mainRed.secDraculaPurple,
+.mainDraculaRed.secPurple,
+.mainDraculaRed.secDeepPurple,
+.mainDraculaRed.secDraculaPurple,
+.mainSolarizedRed.secPurple,
+.mainSolarizedRed.secDeepPurple,
+.mainSolarizedRed.secDraculaPurple,
+.mainPurple.secRed,
+.mainPurple.secDraculaRed,
+.mainDeepPurple.secRed,
+.mainDeepPurple.secDraculaRed,
+.mainDraculaPurple.secRed,
+.mainDraculaPurple.secDraculaRed {
+ --destructive-color: #ff9800;
+ --destructive-text-color: #fff;
+ --destructive-hover-color: #fb8c00;
+ --destructive-active-color: #ef6c00;
+}
body[dir='ltr'] {
--ltr-or-rtl: ltr;
@@ -1337,16 +1354,16 @@ body[dir='rtl'] {
--horizontal-directionality-coefficient: -1;
}
-body[dir='rtl'] [data-prefix="fas"]:not([data-icon="magnifying-glass"], [data-icon="circle-question"], [data-icon="check"]) {
- transform: scale(-1,1);
+body[dir='rtl'] [data-prefix='fas']:not([data-icon='magnifying-glass'], [data-icon='circle-question'], [data-icon='check']) {
+ transform: scale(-1, 1);
}
/* Arabic, Kurdish, Persian and Urdu have a reversed question mark, but not Hebrew and Yiddish */
-html[lang='ar'] [data-prefix="fas"][data-icon="circle-question"],
-html[lang='fa'] [data-prefix="fas"][data-icon="circle-question"],
-html[lang='ku'] [data-prefix="fas"][data-icon="circle-question"],
-html[lang='ur'] [data-prefix="fas"][data-icon="circle-question"] {
- transform: scale(-1, 1)
+html[lang='ar'] [data-prefix='fas'][data-icon='circle-question'],
+html[lang='fa'] [data-prefix='fas'][data-icon='circle-question'],
+html[lang='ku'] [data-prefix='fas'][data-icon='circle-question'],
+html[lang='ur'] [data-prefix='fas'][data-icon='circle-question'] {
+ transform: scale(-1, 1);
}
body {
@@ -1370,12 +1387,12 @@ body {
/* stylelint-disable-next-line no-descending-specificity */
a:link {
- color: var(--link-color);
+ color: var(--link-color);
}
/* stylelint-disable-next-line no-descending-specificity */
a:visited {
- color: var(--link-visited-color);
+ color: var(--link-visited-color);
}
@media (prefers-reduced-motion) {
@@ -1386,7 +1403,7 @@ a:visited {
}
::-webkit-scrollbar {
- inline-size: auto;
+ inline-size: auto;
block-size: auto;
}
@@ -1401,6 +1418,7 @@ a:visited {
border: 0;
}
-::-webkit-scrollbar-thumb:hover, ::-webkit-scrollbar-thumb:focus {
+::-webkit-scrollbar-thumb:hover,
+::-webkit-scrollbar-thumb:focus {
background: var(--scrollbar-color-hover);
}
diff --git a/src/renderer/views/Channel/Channel.css b/src/renderer/views/Channel/Channel.css
index 8fb4900f78a7b..66aa3cc0294b8 100644
--- a/src/renderer/views/Channel/Channel.css
+++ b/src/renderer/views/Channel/Channel.css
@@ -21,7 +21,7 @@
.channelBannerContainer.default {
background-color: #000;
- background-image: url("../../assets/img/defaultBanner.png");
+ background-image: url('../../assets/img/defaultBanner.png');
background-repeat: repeat;
background-size: contain;
}
@@ -101,7 +101,7 @@
block-size: auto;
justify-content: unset;
gap: 32px;
- padding-block: .3em;
+ padding-block: 0.3em;
padding-inline: 0;
flex-wrap: nowrap;
}
@@ -154,7 +154,7 @@
}
.thumbnailContainer {
- display: flex
+ display: flex;
}
.channelLineContainer {
@@ -246,7 +246,8 @@
flex-direction: column;
}
- .thumbnailContainer, .channelInfoActionsContainer {
+ .thumbnailContainer,
+ .channelInfoActionsContainer {
flex-wrap: wrap;
align-items: center;
text-align: center;
@@ -255,7 +256,7 @@
}
@media only screen and (width <= 260px) {
- .channelDetails {
+ .channelDetails {
max-inline-size: none;
}
}
diff --git a/src/renderer/views/Hashtag/Hashtag.css b/src/renderer/views/Hashtag/Hashtag.css
index a2d9314e834cc..372cb70483a83 100644
--- a/src/renderer/views/Hashtag/Hashtag.css
+++ b/src/renderer/views/Hashtag/Hashtag.css
@@ -8,7 +8,8 @@
margin-block-start: 16px;
}
-.getNextPage:hover, .getNextPage:focus {
+.getNextPage:hover,
+.getNextPage:focus {
background-color: var(--side-nav-hover-color);
color: var(--side-nav-hover-text-color);
}
diff --git a/src/renderer/views/Playlist/Playlist.scss b/src/renderer/views/Playlist/Playlist.scss
index 1e0ce41dc574c..d1ab1f4dd939a 100644
--- a/src/renderer/views/Playlist/Playlist.scss
+++ b/src/renderer/views/Playlist/Playlist.scss
@@ -114,7 +114,8 @@
}
}
-.playlistItem-enter, .playlistItem-leave-to {
+.playlistItem-enter,
+.playlistItem-leave-to {
opacity: 0;
transform: translate(calc(10% * var(--horizontal-directionality-coefficient)));
}
diff --git a/src/renderer/views/ProfileSettings/ProfileSettings.css b/src/renderer/views/ProfileSettings/ProfileSettings.css
index f7d8a4ebc9a47..4ec9e91f2297e 100644
--- a/src/renderer/views/ProfileSettings/ProfileSettings.css
+++ b/src/renderer/views/ProfileSettings/ProfileSettings.css
@@ -18,7 +18,8 @@ h2 {
color: var(--card-bg-color);
}
-.profileList > .openedProfile:hover, .profileList > .openedProfile:focus-visible {
+.profileList > .openedProfile:hover,
+.profileList > .openedProfile:focus-visible {
background-color: var(--tertiary-text-color);
transition: background 0.2s ease-in;
}
diff --git a/src/renderer/views/Search/Search.css b/src/renderer/views/Search/Search.css
index 1ef3d4d136f53..ec9031f0d9dcf 100644
--- a/src/renderer/views/Search/Search.css
+++ b/src/renderer/views/Search/Search.css
@@ -8,7 +8,8 @@
margin-block-start: 16px;
}
-.getNextPage:hover, .getNextPage:focus {
+.getNextPage:hover,
+.getNextPage:focus {
background-color: var(--side-nav-hover-color);
color: var(--side-nav-hover-text-color);
}
diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.css b/src/renderer/views/SubscribedChannels/SubscribedChannels.css
index 0c8c0f51ae041..bc34f613c3bcb 100644
--- a/src/renderer/views/SubscribedChannels/SubscribedChannels.css
+++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.css
@@ -15,7 +15,7 @@
.channels {
inline-size: 100%;
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr) );
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 2.5rem;
margin-block-start: 2rem;
}
diff --git a/yarn.lock b/yarn.lock
index 4e748e33d6ba5..22112c7b2766b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1065,20 +1065,20 @@
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
-"@csstools/css-parser-algorithms@^2.6.3":
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#b5e7eb2bd2a42e968ef61484f1490a8a4148a8eb"
- integrity sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==
+"@csstools/css-parser-algorithms@^2.6.1", "@csstools/css-parser-algorithms@^2.7.1":
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
+ integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==
-"@csstools/css-tokenizer@^2.3.1":
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#3d47e101ad48d815a4bdce8159fb5764f087f17a"
- integrity sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==
+"@csstools/css-tokenizer@^2.2.4", "@csstools/css-tokenizer@^2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8"
+ integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==
-"@csstools/media-query-list-parser@^2.1.11":
- version "2.1.11"
- resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz#465aa42f268599729350e305e1ae14a30c1daf51"
- integrity sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==
+"@csstools/media-query-list-parser@^2.1.13", "@csstools/media-query-list-parser@^2.1.9":
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5"
+ integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==
"@csstools/selector-specificity@^3.1.1":
version "3.1.1"
@@ -1543,6 +1543,20 @@
resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90"
integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==
+"@stylistic/stylelint-plugin@^2.1.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@stylistic/stylelint-plugin/-/stylelint-plugin-2.1.2.tgz#d53556d1e9a62d9707028d394cf272f0bd2f0833"
+ integrity sha512-JsSqu0Y3vsX+PBl+DwULxC0cIv9C1yIcq1MXkx7pBOGtTqU26a75I8MPYMiEYvrsXgsKLi65xVgy1iLVSZquJA==
+ dependencies:
+ "@csstools/css-parser-algorithms" "^2.6.1"
+ "@csstools/css-tokenizer" "^2.2.4"
+ "@csstools/media-query-list-parser" "^2.1.9"
+ is-plain-object "^5.0.0"
+ postcss-selector-parser "^6.0.16"
+ postcss-value-parser "^4.2.0"
+ style-search "^0.1.0"
+ stylelint "^16.4.0"
+
"@szmarczak/http-timer@^4.0.5":
version "4.0.6"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
@@ -3181,10 +3195,10 @@ debug@2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
+ integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
dependencies:
ms "2.1.2"
@@ -5706,10 +5720,10 @@ known-css-properties@^0.29.0:
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.29.0.tgz#e8ba024fb03886f23cb882e806929f32d814158f"
integrity sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==
-known-css-properties@^0.31.0:
- version "0.31.0"
- resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.31.0.tgz#5c8d9d8777b3ca09482b2397f6a241e5d69a1023"
- integrity sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==
+known-css-properties@^0.34.0:
+ version "0.34.0"
+ resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea"
+ integrity sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==
launch-editor@^2.6.1:
version "2.6.1"
@@ -8016,6 +8030,11 @@ strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+style-search@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
+ integrity sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==
+
stylehacks@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.0.tgz#68e8ee54724671c0c698be82e1299c6548c31921"
@@ -8029,11 +8048,12 @@ stylelint-config-recommended@^14.0.1:
resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#d25e86409aaf79ee6c6085c2c14b33c7e23c90c6"
integrity sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==
-stylelint-config-sass-guidelines@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-11.1.0.tgz#0106f3ec4991a598823b55841bf45fce63268c8c"
- integrity sha512-mVE3UmN8MlshK4Gb3eYk6f8tw9DkQ9yjMF4W9krlmpaNZpSXOdh13AL0sU7l/9l4Pnpt4KMobNNIRI0tJl56Cw==
+stylelint-config-sass-guidelines@^12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-12.0.0.tgz#aff9ddc0b24e48eac4c44088cdbdad7166d76af3"
+ integrity sha512-lGJml+QEVlU/nqI+awiQieyxXHkmuwhz4XsfUNkQVcNaPXBpLgefOHjZ7ZSmUm4y4YG8JhrvYNjYzUcTfe8cdg==
dependencies:
+ "@stylistic/stylelint-plugin" "^2.1.0"
postcss-scss "^4.0.9"
stylelint-scss "^6.2.1"
@@ -8067,14 +8087,14 @@ stylelint-use-logical-spec@^5.0.1:
resolved "https://registry.yarnpkg.com/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#d5aa254d615d373f18214297c0b49a03a6ca5980"
integrity sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==
-stylelint@^16.6.1:
- version "16.6.1"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.6.1.tgz#84735aca2bb5cde535572b7a9b878d2ec983a570"
- integrity sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==
+stylelint@^16.4.0, stylelint@^16.7.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.7.0.tgz#5f6acf516aedecba7a6472ba0cc1ffc20e2be86b"
+ integrity sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==
dependencies:
- "@csstools/css-parser-algorithms" "^2.6.3"
- "@csstools/css-tokenizer" "^2.3.1"
- "@csstools/media-query-list-parser" "^2.1.11"
+ "@csstools/css-parser-algorithms" "^2.7.1"
+ "@csstools/css-tokenizer" "^2.4.1"
+ "@csstools/media-query-list-parser" "^2.1.13"
"@csstools/selector-specificity" "^3.1.1"
"@dual-bundle/import-meta-resolve" "^4.1.0"
balanced-match "^2.0.0"
@@ -8082,7 +8102,7 @@ stylelint@^16.6.1:
cosmiconfig "^9.0.0"
css-functions-list "^3.2.2"
css-tree "^2.3.1"
- debug "^4.3.4"
+ debug "^4.3.5"
fast-glob "^3.3.2"
fastest-levenshtein "^1.0.16"
file-entry-cache "^9.0.0"
@@ -8093,13 +8113,13 @@ stylelint@^16.6.1:
ignore "^5.3.1"
imurmurhash "^0.1.4"
is-plain-object "^5.0.0"
- known-css-properties "^0.31.0"
+ known-css-properties "^0.34.0"
mathml-tag-names "^2.1.3"
meow "^13.2.0"
micromatch "^4.0.7"
normalize-path "^3.0.0"
picocolors "^1.0.1"
- postcss "^8.4.38"
+ postcss "^8.4.39"
postcss-resolve-nested-selector "^0.1.1"
postcss-safe-parser "^7.0.0"
postcss-selector-parser "^6.1.0"
From e4d458961c045041f1f4acdbe110750d092de713 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Fri, 19 Jul 2024 23:07:11 +0200
Subject: [PATCH 015/489] Fix scss deprecation warnings (#5429)
---
.../ft-icon-button/ft-icon-button.scss | 4 ++--
.../ft-refresh-widget/ft-refresh-widget.scss | 4 ++--
src/renderer/scss-partials/_ft-list-item.scss | 16 ++++++++--------
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/renderer/components/ft-icon-button/ft-icon-button.scss b/src/renderer/components/ft-icon-button/ft-icon-button.scss
index 6a0b220e2bd6a..c01f70573b490 100644
--- a/src/renderer/components/ft-icon-button/ft-icon-button.scss
+++ b/src/renderer/components/ft-icon-button/ft-icon-button.scss
@@ -101,11 +101,11 @@
&.favorite,
&.favorite:hover,
&.favorite:focus-visible {
+ color: var(--favorite-icon-color);
+
&:not(.disabled) {
color: var(--favorite-icon-color);
}
-
- color: var(--favorite-icon-color);
}
}
diff --git a/src/renderer/components/ft-refresh-widget/ft-refresh-widget.scss b/src/renderer/components/ft-refresh-widget/ft-refresh-widget.scss
index c77a2b5155ac9..6a84a3331f7b9 100644
--- a/src/renderer/components/ft-refresh-widget/ft-refresh-widget.scss
+++ b/src/renderer/components/ft-refresh-widget/ft-refresh-widget.scss
@@ -1,8 +1,6 @@
@use '../../scss-partials/utils';
.floatingRefreshSection {
- @include utils.fixed-top-bar;
-
box-sizing: border-box;
padding-block: 5px;
padding-inline: 10px;
@@ -13,6 +11,8 @@
align-items: center;
gap: 5px;
justify-content: flex-end;
+
+ @include utils.fixed-top-bar;
}
.floatingRefreshSection:has(.lastRefreshTimestamp + .refreshButton) {
diff --git a/src/renderer/scss-partials/_ft-list-item.scss b/src/renderer/scss-partials/_ft-list-item.scss
index c6f6a5d7af513..7cecbb502784b 100644
--- a/src/renderer/scss-partials/_ft-list-item.scss
+++ b/src/renderer/scss-partials/_ft-list-item.scss
@@ -56,10 +56,10 @@ $watched-transition-duration: 0.5s;
padding: 6px;
&.watched {
- @include low-contrast-when-watched(var(--primary-text-color));
-
background-color: var(--bg-color);
+ @include low-contrast-when-watched(var(--primary-text-color));
+
.thumbnailImage {
opacity: 0.3;
transition: opacity $watched-transition-duration;
@@ -227,14 +227,14 @@ $watched-transition-duration: 0.5s;
}
.title {
- @include low-contrast-when-watched(var(--primary-text-color));
-
font-size: 20px;
grid-area: title;
text-decoration: none;
word-break: break-word;
word-wrap: break-word;
+ @include low-contrast-when-watched(var(--primary-text-color));
+
@include is-sidebar-item {
font-size: 15px;
}
@@ -247,24 +247,24 @@ $watched-transition-duration: 0.5s;
overflow-wrap: anywhere;
text-align: start;
+ @include low-contrast-when-watched(var(--secondary-text-color));
+
@include is-sidebar-item {
font-size: 12px;
}
- @include low-contrast-when-watched(var(--secondary-text-color));
-
.channelName {
@include low-contrast-when-watched(var(--secondary-text-color));
}
}
.description {
- @include low-contrast-when-watched(var(--secondary-text-color));
-
font-size: 14px;
grid-area: description;
max-block-size: 50px;
overflow-y: hidden;
+
+ @include low-contrast-when-watched(var(--secondary-text-color));
}
}
From 26654d656361c49014816cc0dee7b85b9eac0b8d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Jul 2024 11:22:40 +0200
Subject: [PATCH 016/489] Bump electron from 31.2.0 to 31.2.1 (#5444)
Bumps [electron](https://github.com/electron/electron) from 31.2.0 to 31.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v31.2.0...v31.2.1)
---
updated-dependencies:
- dependency-name: electron
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 60fed0161ddf4..45bde3375d43f 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
- "electron": "^31.2.0",
+ "electron": "^31.2.1",
"electron-builder": "^24.13.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/yarn.lock b/yarn.lock
index 22112c7b2766b..d405cc09aa71a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3561,10 +3561,10 @@ electron-to-chromium@^1.4.820:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
-electron@^31.2.0:
- version "31.2.0"
- resolved "https://registry.yarnpkg.com/electron/-/electron-31.2.0.tgz#f6dc4c42f9118fd0f57b3c04676503df2bf16ece"
- integrity sha512-5w+kjOsGiTXytPSErBPNp/3znnuEMKc42RD41MqRoQkiYaR8x/Le2+qWk1cL60UwE/67oeKnOHnnol8xEuldGg==
+electron@^31.2.1:
+ version "31.2.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.2.1.tgz#cfd7de576520d5c02d7c1f979bac85ad6b26d78d"
+ integrity sha512-g3CLKjl4yuXt6VWm/KpgEjYYhFiCl19RgUn8lOC8zV/56ZXAS3+mqV4wWzicE/7vSYXs6GRO7vkYRwrwhX3Gaw==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
From aaf121d50f72337597f6332ec61f612b2c174869 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Jul 2024 11:22:58 +0200
Subject: [PATCH 017/489] Bump swiper from 11.1.4 to 11.1.5 (#5443)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.1.4 to 11.1.5.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v11.1.4...v11.1.5)
---
updated-dependencies:
- dependency-name: swiper
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 45bde3375d43f..20fa6c1d2e706 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"path-browserify": "^1.0.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
- "swiper": "^11.1.4",
+ "swiper": "^11.1.5",
"video.js": "7.21.5",
"videojs-contrib-quality-levels": "^3.0.0",
"videojs-http-source-selector": "^1.1.6",
diff --git a/yarn.lock b/yarn.lock
index d405cc09aa71a..35606af0f952b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8191,10 +8191,10 @@ svgo@^3.2.0:
csso "^5.0.5"
picocolors "^1.0.0"
-swiper@^11.1.4:
- version "11.1.4"
- resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.4.tgz#2f8e303e8bf9e5bc40a3885fc637ae60ff27996c"
- integrity sha512-1n7kbYJB2dFEpUHRFszq7gys/ofIBrMNibwTiMvPHwneKND/t9kImnHt6CfGPScMHgI+dWMbGTycCKGMoOO1KA==
+swiper@^11.1.5:
+ version "11.1.5"
+ resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.5.tgz#fac11a45e34f571e73e89cb232165a146e716943"
+ integrity sha512-JJQWFXdxiMGC2j6ZGTYat5Z7NN9JORJBgHp0/joX9uPod+cRj0wr5H5VnWSNIz9JeAamQvYKaG7aFrGHIF9OEg==
synckit@^0.6.0:
version "0.6.2"
From 6b5e157de2de26bf2d1cab5997422a29d6df0992 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Jul 2024 11:23:27 +0200
Subject: [PATCH 018/489] Bump the fortawesome group with 4 updates (#5442)
Bumps the fortawesome group with 4 updates: [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome), [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome), [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) and [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome).
Updates `@fortawesome/fontawesome-svg-core` from 6.5.2 to 6.6.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.2...6.6.0)
Updates `@fortawesome/free-brands-svg-icons` from 6.5.2 to 6.6.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.2...6.6.0)
Updates `@fortawesome/free-regular-svg-icons` from 6.5.2 to 6.6.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.2...6.6.0)
Updates `@fortawesome/free-solid-svg-icons` from 6.5.2 to 6.6.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.2...6.6.0)
---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: fortawesome
- dependency-name: "@fortawesome/free-brands-svg-icons"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: fortawesome
- dependency-name: "@fortawesome/free-regular-svg-icons"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: fortawesome
- dependency-name: "@fortawesome/free-solid-svg-icons"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: fortawesome
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 8 ++++----
yarn.lock | 48 ++++++++++++++++++++++++------------------------
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/package.json b/package.json
index 20fa6c1d2e706..474066a5fbe25 100644
--- a/package.json
+++ b/package.json
@@ -53,10 +53,10 @@
"ci": "yarn install --silent --frozen-lockfile"
},
"dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.5.2",
- "@fortawesome/free-brands-svg-icons": "^6.5.2",
- "@fortawesome/free-regular-svg-icons": "^6.5.2",
- "@fortawesome/free-solid-svg-icons": "^6.5.2",
+ "@fortawesome/fontawesome-svg-core": "^6.6.0",
+ "@fortawesome/free-brands-svg-icons": "^6.6.0",
+ "@fortawesome/free-regular-svg-icons": "^6.6.0",
+ "@fortawesome/free-solid-svg-icons": "^6.6.0",
"@fortawesome/vue-fontawesome": "^2.0.10",
"@seald-io/nedb": "^4.0.4",
"@silvermine/videojs-quality-selector": "^1.3.1",
diff --git a/yarn.lock b/yarn.lock
index 35606af0f952b..612d9599647d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1221,38 +1221,38 @@
resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8"
integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==
-"@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-common-types@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f"
+ integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==
-"@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==
+"@fortawesome/fontawesome-svg-core@^6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz#2a24c32ef92136e98eae2ff334a27145188295ff"
+ integrity sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
-"@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==
+"@fortawesome/free-brands-svg-icons@^6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz#2797f2cc66d21e7e47fa64e680b8835e8d30e825"
+ integrity sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
-"@fortawesome/free-regular-svg-icons@^6.5.2":
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz#e8e04b4368d49920abdf1bacc63c67c870635222"
- integrity sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==
+"@fortawesome/free-regular-svg-icons@^6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz#fc49a947ac8dfd20403c9ea5f37f0919425bdf04"
+ integrity sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
-"@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==
+"@fortawesome/free-solid-svg-icons@^6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b"
+ integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
"@fortawesome/vue-fontawesome@^2.0.10":
version "2.0.10"
From b456e6e24c18025b8d47432c0c740afc7aab4a27 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Jul 2024 11:37:14 +0200
Subject: [PATCH 019/489] Bump lefthook from 1.7.2 to 1.7.5 (#5445)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.7.2 to 1.7.5.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.7.2...v1.7.5)
---
updated-dependencies:
- dependency-name: lefthook
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 104 +++++++++++++++++++++++++--------------------------
2 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/package.json b/package.json
index 474066a5fbe25..f1cff1263c63b 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.0",
- "lefthook": "^1.7.2",
+ "lefthook": "^1.7.5",
"mini-css-extract-plugin": "^2.9.0",
"npm-run-all2": "^6.2.2",
"postcss": "^8.4.39",
diff --git a/yarn.lock b/yarn.lock
index 612d9599647d6..7522713921907 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5738,59 +5738,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.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.2.tgz#43a451b3ed640bb3dcf478d4255d5434577fe246"
- integrity sha512-E3Ouk04/yeD8IBLGJkyzL0NMYIrjADQvaDbf4yNSq6HWGnUC0R2KpYxrZno2yahZnvQ0vYTDta7Egw6cqcYGlQ==
-
-lefthook-darwin-x64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.2.tgz#d4c737580b45fc791c8e1f1a87715a2425d02d3c"
- integrity sha512-Am6ZNmjItQSqKbK8/spFIj5GDWNHJ47PM0vpT1PnBHrgWanjz0iLw6adwpMu8u7+CkZlHjp08lbvjBPGHIu3dg==
-
-lefthook-freebsd-arm64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.2.tgz#9d5285e798afd4f4ad56c37f97bc382e2b09c74b"
- integrity sha512-o1LBgHhwnUOLs9iVbi1GhvXMQlzYSKnyFcc061iADxHMJk1xWMD6RUyyohmLbfEU0gTWxkRfkdAFvbvwNqQiww==
-
-lefthook-freebsd-x64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.2.tgz#8ff750baf1e2262353e0ad12bc40ee81ed736a97"
- integrity sha512-vxB3FeeFYDfk4vAahaZdGJ7gbViGOkOyL5JRBDWlFjUfZJLGwVauf6GhtysdO1dgxs9K3ECdEtXgW+uOB872rQ==
-
-lefthook-linux-arm64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.2.tgz#3022d9d1095643437098fab82748d965beff221e"
- integrity sha512-4dbVj5Jjy12flAyOcVWvWQ6gJoQ6X7HJ3qfsrM8/GIfLQBlkw+YRcLuWHUI3H9qsQFpkpYZsLcmUXoVM77z5mw==
-
-lefthook-linux-x64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.2.tgz#7589e7ed9b968e16189a0c9e4a074fd92aea19e7"
- integrity sha512-lT0IRp1pGtbua8IWVeIVCSAxKex9fOyAexHaEmBZytfqr/94lpjzWWEQdLFQAlpZthuyCkuaJp5kLgMj6/IySQ==
-
-lefthook-windows-arm64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.2.tgz#afd7054130461ad69c53c6ff40bd069b48e49fde"
- integrity sha512-DxWLmcNI3NICd4rFqTPgXf+G/97ztl+ONvYuNE/ELAxVp338xAUFvzZCQvDZDzeTLrT1C4hZZ4zDvEhnOOECXg==
-
-lefthook-windows-x64@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.2.tgz#3e516daf6c98d911e76ae8ed97364772e137145e"
- integrity sha512-fL4F8/XXoYUJJ6GSYCwFL+bRufzbkeMSGYZKUDr6ZKOI4KafIEcgFNwlnQF03gY6vkUrYKksXQofOVlOfv3vPA==
-
-lefthook@^1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.2.tgz#1c2c7c9d2a76f7efcd31346ee4c1f45a1a2a3a19"
- integrity sha512-QCCq6KyVAVYBuxWf338TjMAjjGesyNRtfxJhjYV+kpUkd5ST2yr8ZUJrcEKe+0cUfziPOQ9Hz+1JZniXJx+JqA==
+lefthook-darwin-arm64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.5.tgz#89b1142beeaec45f7f6443854e62f35170d4f26e"
+ integrity sha512-RGLMPmcTBisxT3q0VEsFkEIUyzDa47Yd7M8RJbSeAg1mFyc8LNANV7WK2GHoc9+5OTqu2OAl5tJBkfijBIFJTA==
+
+lefthook-darwin-x64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.5.tgz#565b926f5a43742ec709fcab56bcb91d49d92cf4"
+ integrity sha512-btSMGOx3/+dOezHU60OOgpBavSkw9Ixy4QPiYyBaE1cor/OxKS/xeeM+WaDzk9+gIKF/NGsv7om1mR4HexmuBA==
+
+lefthook-freebsd-arm64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.5.tgz#898f4a62e2f8908c7b000a6de47d65982cceecd7"
+ integrity sha512-A0AonnDnllfOYXqXDhBWRSZRqayQd2rvKSW1w6ABfYfbQTLokdVO7Og8RYjuE72h38yaCf0SR7UA5PlO+IxS3g==
+
+lefthook-freebsd-x64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.5.tgz#82f4ec24ea46b5cb69c74bae69119aa1bb3ab318"
+ integrity sha512-oUWuTE1Q40dHetRZS9e8kPDb9tr0WnXpDPzml9h5n12UmaOFqdBawyw7YIto/dCLgnX/9pFsIumAJnvG8/yvDg==
+
+lefthook-linux-arm64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.5.tgz#e94375bebda579d20f7e4fc4f891daad63572ba9"
+ integrity sha512-EBNepIJnm07BTWtZd1f8xUetaFivDyf2eXUAedVUAxpW4db4RXnqE76/kHYhKxr+6f8fRdqXA/qqbKhSre+yWg==
+
+lefthook-linux-x64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.5.tgz#ef36ad65a678aeea219e20ff67fb0634e9456a77"
+ integrity sha512-a1hBVmzJgqYp8CmvCanjGt2rVLnFH3KBAA4V+CiA/IZwwHxVPqMZVjHzcIu1cYE+82PUFaxcKo46xFA/L0VzpA==
+
+lefthook-windows-arm64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.5.tgz#05235bc5bffefb825fadc051936549acc4e7183c"
+ integrity sha512-Haxf+R/NTag6ou7jpuEmht/X9pkpCiBt7GNFNqmCOQZiXdtv4hphzrt+deQPRdvIUCxY1ymHzxN07wdiF0ivhw==
+
+lefthook-windows-x64@1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.5.tgz#61670ef8721144d9ba2a174003efce3a1128d73b"
+ integrity sha512-Jg1QD0We3uXZBhD66tgeo3WL/hZ3ATGMGrLiBIWAB2lU+/D29YVvVVouv2xOoqLOBE/B/NWNShH9ldx71UvljQ==
+
+lefthook@^1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.5.tgz#229a8f53ed8b97460a2391108b891608de99f096"
+ integrity sha512-pQ4fZaflyUS0Wn+ZH9Nk43n4ShErqh48K04+GXU8IKCu4jU3kUTZkQeYeAtaMzTR5bMHR3epEGxdnLt1z2edNQ==
optionalDependencies:
- lefthook-darwin-arm64 "1.7.2"
- lefthook-darwin-x64 "1.7.2"
- lefthook-freebsd-arm64 "1.7.2"
- lefthook-freebsd-x64 "1.7.2"
- lefthook-linux-arm64 "1.7.2"
- lefthook-linux-x64 "1.7.2"
- lefthook-windows-arm64 "1.7.2"
- lefthook-windows-x64 "1.7.2"
+ lefthook-darwin-arm64 "1.7.5"
+ lefthook-darwin-x64 "1.7.5"
+ lefthook-freebsd-arm64 "1.7.5"
+ lefthook-freebsd-x64 "1.7.5"
+ lefthook-linux-arm64 "1.7.5"
+ lefthook-linux-x64 "1.7.5"
+ lefthook-windows-arm64 "1.7.5"
+ lefthook-windows-x64 "1.7.5"
levn@^0.4.1:
version "0.4.1"
From 34472668875411ee00d2913fea827843835cc32c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 22 Jul 2024 11:38:19 +0200
Subject: [PATCH 020/489] Bump the eslint group with 3 updates (#5441)
Bumps the eslint group with 3 updates: [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier), [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) and [eslint-plugin-vuejs-accessibility](https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility).
Updates `eslint-plugin-prettier` from 5.1.3 to 5.2.1
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.1.3...v5.2.1)
Updates `eslint-plugin-promise` from 6.4.0 to 6.6.0
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.4.0...v6.6.0)
Updates `eslint-plugin-vuejs-accessibility` from 2.3.1 to 2.4.0
- [Release notes](https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility/releases)
- [Changelog](https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility/compare/v2.3.1...v2.4.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
- dependency-name: eslint-plugin-promise
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
- dependency-name: eslint-plugin-vuejs-accessibility
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +-
yarn.lock | 192 ++++++---------------------------------------------
2 files changed, 24 insertions(+), 174 deletions(-)
diff --git a/package.json b/package.json
index f1cff1263c63b..c97deea910c80 100644
--- a/package.json
+++ b/package.json
@@ -100,11 +100,11 @@
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsonc": "^2.16.0",
"eslint-plugin-n": "^17.9.0",
- "eslint-plugin-prettier": "^5.1.3",
- "eslint-plugin-promise": "^6.4.0",
+ "eslint-plugin-prettier": "^5.2.1",
+ "eslint-plugin-promise": "^6.6.0",
"eslint-plugin-unicorn": "^54.0.0",
"eslint-plugin-vue": "^9.27.0",
- "eslint-plugin-vuejs-accessibility": "^2.3.1",
+ "eslint-plugin-vuejs-accessibility": "^2.4.0",
"eslint-plugin-yml": "^1.14.0",
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
diff --git a/yarn.lock b/yarn.lock
index 7522713921907..0b634ac932d0b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1495,18 +1495,6 @@
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
-"@pkgr/utils@^2.4.2":
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc"
- integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==
- dependencies:
- cross-spawn "^7.0.3"
- fast-glob "^3.3.0"
- is-glob "^4.0.3"
- open "^9.1.0"
- picocolors "^1.0.0"
- tslib "^2.6.0"
-
"@seald-io/binary-search-tree@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz#165a9a456eaa30d15885b25db83861bcce2c6a74"
@@ -2444,11 +2432,6 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
-big-integer@^1.6.44:
- version "1.6.51"
- resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
- integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -2507,13 +2490,6 @@ boolean@^3.0.1:
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
-bplist-parser@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
- integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==
- dependencies:
- big-integer "^1.6.44"
-
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2614,13 +2590,6 @@ builtin-modules@^3.3.0:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
-bundle-name@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a"
- integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==
- dependencies:
- run-applescript "^5.0.0"
-
bundle-name@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889"
@@ -3221,29 +3190,11 @@ deep-is@^0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-default-browser-id@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c"
- integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==
- dependencies:
- bplist-parser "^0.2.0"
- untildify "^4.0.0"
-
default-browser-id@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26"
integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==
-default-browser@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da"
- integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==
- dependencies:
- bundle-name "^3.0.0"
- default-browser-id "^3.0.0"
- execa "^7.1.1"
- titleize "^3.0.0"
-
default-browser@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf"
@@ -3918,18 +3869,18 @@ eslint-plugin-n@^17.9.0:
minimatch "^9.0.0"
semver "^7.5.3"
-eslint-plugin-prettier@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1"
- integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==
+eslint-plugin-prettier@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95"
+ integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==
dependencies:
prettier-linter-helpers "^1.0.0"
- synckit "^0.8.6"
+ synckit "^0.9.1"
-eslint-plugin-promise@^6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz#54926d53c79541efe9cea6ac1d823a58bbed1106"
- integrity sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==
+eslint-plugin-promise@^6.6.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a"
+ integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==
eslint-plugin-unicorn@^54.0.0:
version "54.0.0"
@@ -3967,10 +3918,10 @@ eslint-plugin-vue@^9.27.0:
vue-eslint-parser "^9.4.3"
xml-name-validator "^4.0.0"
-eslint-plugin-vuejs-accessibility@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vuejs-accessibility/-/eslint-plugin-vuejs-accessibility-2.3.1.tgz#f63e7507a2f5b4c3800e3e990f7e2fafd902364e"
- integrity sha512-tXwjHTl2lpn2Rec0ieeIlXBiJirtKYB1galOf/EpyuLhs3ajl9eYS01vY5BKaoZRC+GJj2DWcu/ZjNqTtUqoMw==
+eslint-plugin-vuejs-accessibility@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vuejs-accessibility/-/eslint-plugin-vuejs-accessibility-2.4.0.tgz#897ac35f8e27861530272715e5bdb994d8a4159f"
+ integrity sha512-c0X0DPLjb74Y4tB9Mpwytq1hYI1NVf7ZMVliFL/CxLr9xxU5zoYTt/x4rFRyDpMCDxEIdVm48SaVTMsOINCMxg==
dependencies:
aria-query "^5.3.0"
emoji-regex "^10.0.0"
@@ -4139,21 +4090,6 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-execa@^7.1.1:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9"
- integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==
- dependencies:
- cross-spawn "^7.0.3"
- get-stream "^6.0.1"
- human-signals "^4.3.0"
- is-stream "^3.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^5.1.0"
- onetime "^6.0.0"
- signal-exit "^3.0.7"
- strip-final-newline "^3.0.0"
-
express@^4.17.3:
version "4.19.2"
resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
@@ -4242,7 +4178,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
-fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2:
+fast-glob@^3.2.9, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -4581,7 +4517,7 @@ get-stream@^5.1.0:
dependencies:
pump "^3.0.0"
-get-stream@^6.0.0, get-stream@^6.0.1:
+get-stream@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
@@ -5032,11 +4968,6 @@ human-signals@^2.1.0:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-human-signals@^4.3.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
- integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
-
iconv-corefoundation@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a"
@@ -5262,11 +5193,6 @@ is-date-object@^1.0.1:
dependencies:
has-tostringtag "^1.0.0"
-is-docker@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
- integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
-
is-docker@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
@@ -5389,11 +5315,6 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-is-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
- integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
-
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
@@ -5449,13 +5370,6 @@ is-weakref@^1.0.2:
dependencies:
call-bind "^1.0.2"
-is-wsl@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
- dependencies:
- is-docker "^2.0.0"
-
is-wsl@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2"
@@ -6053,11 +5967,6 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-mimic-fn@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
- integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
-
mimic-response@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
@@ -6290,13 +6199,6 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
-npm-run-path@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
- integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
- dependencies:
- path-key "^4.0.0"
-
nth-check@^2.0.1, nth-check@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
@@ -6408,13 +6310,6 @@ onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
-onetime@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
- integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
- dependencies:
- mimic-fn "^4.0.0"
-
open@^10.0.3:
version "10.0.3"
resolved "https://registry.yarnpkg.com/open/-/open-10.0.3.tgz#f60d8db49fa126c50aec751957fb5d7de3308d4f"
@@ -6425,16 +6320,6 @@ open@^10.0.3:
is-inside-container "^1.0.0"
is-wsl "^3.1.0"
-open@^9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6"
- integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==
- dependencies:
- default-browser "^4.0.0"
- define-lazy-prop "^3.0.0"
- is-inside-container "^1.0.0"
- is-wsl "^2.2.0"
-
optionator@^0.9.3:
version "0.9.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
@@ -6583,11 +6468,6 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-path-key@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
- integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
-
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
@@ -7439,13 +7319,6 @@ roarr@^2.15.3:
semver-compare "^1.0.0"
sprintf-js "^1.1.2"
-run-applescript@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c"
- integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==
- dependencies:
- execa "^5.0.0"
-
run-applescript@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb"
@@ -7704,7 +7577,7 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
-signal-exit@^3.0.3, signal-exit@^3.0.7:
+signal-exit@^3.0.3:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -8013,11 +7886,6 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-strip-final-newline@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
- integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
-
strip-indent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
@@ -8203,18 +8071,10 @@ synckit@^0.6.0:
dependencies:
tslib "^2.3.1"
-synckit@^0.8.6:
- version "0.8.6"
- resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.6.tgz#b69b7fbce3917c2673cbdc0d87fb324db4a5b409"
- integrity sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==
- dependencies:
- "@pkgr/utils" "^2.4.2"
- tslib "^2.6.2"
-
-synckit@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449"
- integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==
+synckit@^0.9.0, synckit@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88"
+ integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==
dependencies:
"@pkgr/core" "^0.1.0"
tslib "^2.6.2"
@@ -8296,11 +8156,6 @@ thunky@^1.0.2:
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
-titleize@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53"
- integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==
-
tmp-promise@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
@@ -8362,7 +8217,7 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6.0, tslib@^2.6.2:
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
@@ -8533,11 +8388,6 @@ unpipe@1.0.0, unpipe@~1.0.0:
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-untildify@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
- integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
-
unused-filename@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/unused-filename/-/unused-filename-4.0.1.tgz#3e7285db0f3ec94fb2b089dd220a3b269b226914"
From 8bb88a1e1800b3cc8b9848d7dfe629f3fe2bb45a Mon Sep 17 00:00:00 2001
From: xsmile
Date: Mon, 22 Jul 2024 11:50:29 +0200
Subject: [PATCH 021/489] More flexible hardware acceleration for Linux (#5438)
Video hardware acceleration is only enabled if no other Electron feature flags are found. The OpenGL mode is used by default.
---
src/main/index.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/main/index.js b/src/main/index.js
index 07ed29a0ae565..c6eb719ee9986 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -199,9 +199,11 @@ function runApp() {
let startupUrl
if (process.platform === 'linux') {
- // Enable hardware acceleration via VA-API
+ // Enable hardware acceleration via VA-API with OpenGL if no other feature flags are found
// https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/gpu/vaapi.md
- app.commandLine.appendSwitch('enable-features', 'VaapiVideoDecodeLinuxGL')
+ if (!app.commandLine.hasSwitch('enable-features')) {
+ app.commandLine.appendSwitch('enable-features', 'VaapiVideoDecodeLinuxGL')
+ }
}
const userDataPath = app.getPath('userData')
From cc61f5a96d15539122821a1a3d768f5759383a54 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Wed, 24 Jul 2024 09:57:32 +0200
Subject: [PATCH 022/489] Fix getRegions script and update the regions (#5450)
* Fix getRegions script and update the regions
* Add mappings for es_AR, es-MX and pt-BR
---
_scripts/getRegions.mjs | 28 ++++++++++++++++++++++++++--
static/geolocations/ar.json | 2 +-
static/geolocations/bg.json | 2 +-
static/geolocations/ca.json | 2 +-
static/geolocations/cs.json | 2 +-
static/geolocations/da.json | 2 +-
static/geolocations/de-DE.json | 2 +-
static/geolocations/el.json | 2 +-
static/geolocations/en-US.json | 2 +-
static/geolocations/en_GB.json | 2 +-
static/geolocations/es-MX.json | 1 +
static/geolocations/es.json | 2 +-
static/geolocations/es_AR.json | 1 +
static/geolocations/et.json | 2 +-
static/geolocations/eu.json | 2 +-
static/geolocations/fa.json | 1 +
static/geolocations/fi.json | 2 +-
static/geolocations/fr-FR.json | 2 +-
static/geolocations/gl.json | 2 +-
static/geolocations/he.json | 1 +
static/geolocations/hr.json | 2 +-
static/geolocations/hu.json | 2 +-
static/geolocations/id.json | 2 +-
static/geolocations/is.json | 2 +-
static/geolocations/it.json | 2 +-
static/geolocations/ja.json | 2 +-
static/geolocations/ko.json | 2 +-
static/geolocations/lt.json | 2 +-
static/geolocations/nb_NO.json | 2 +-
static/geolocations/nl.json | 2 +-
static/geolocations/nn.json | 2 +-
static/geolocations/pl.json | 2 +-
static/geolocations/pt-BR.json | 1 +
static/geolocations/pt-PT.json | 2 +-
static/geolocations/pt.json | 2 +-
static/geolocations/ro.json | 2 +-
static/geolocations/ru.json | 2 +-
static/geolocations/sk.json | 2 +-
static/geolocations/sl.json | 2 +-
static/geolocations/sr.json | 2 +-
static/geolocations/sv.json | 2 +-
static/geolocations/tr.json | 2 +-
static/geolocations/uk.json | 2 +-
static/geolocations/vi.json | 2 +-
static/geolocations/zh-CN.json | 2 +-
static/geolocations/zh-TW.json | 2 +-
46 files changed, 71 insertions(+), 42 deletions(-)
create mode 100644 static/geolocations/es-MX.json
create mode 100644 static/geolocations/es_AR.json
create mode 100644 static/geolocations/fa.json
create mode 100644 static/geolocations/he.json
create mode 100644 static/geolocations/pt-BR.json
diff --git a/_scripts/getRegions.mjs b/_scripts/getRegions.mjs
index 90adce4d0dfd0..482b204701d69 100644
--- a/_scripts/getRegions.mjs
+++ b/_scripts/getRegions.mjs
@@ -28,7 +28,7 @@ const initialResponse = await scrapeLanguage('en')
// Scrape language menu in en-US
/** @type {string[]} */
-const youTubeLanguages = initialResponse.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[1].multiPageMenuSectionRenderer.items[1].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
+const youTubeLanguages = initialResponse.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items[2].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
.map(({ compactLinkRenderer }) => {
return compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].selectLanguageCommand.hl
})
@@ -79,11 +79,35 @@ for (const language of youTubeLanguages) {
youTube: 'no',
freeTube: 'nn'
})
+ } else if (language === 'iw') {
+ // according to https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
+ // "iw" is the old/original code for Hebrew, these days it's "he"
+ foundLanguageNames.push('he')
+ languagesToScrape.push({
+ youTube: 'iw',
+ freeTube: 'he'
+ })
+ } else if (language === 'es-419') {
+ foundLanguageNames.push('es_AR', 'es-MX')
+ languagesToScrape.push({
+ youTube: 'es-419',
+ freeTube: 'es_AR'
+ })
+ languagesToScrape.push({
+ youTube: 'es-419',
+ freeTube: 'es-MX'
+ })
} else if (language !== 'en') {
unusedYouTubeLanguageNames.push(language)
}
}
+foundLanguageNames.push('pt-BR')
+languagesToScrape.push({
+ youTube: 'pt',
+ freeTube: 'pt-BR'
+})
+
console.log("Active FreeTube languages that aren't available on YouTube:")
console.log(activeLanguages.filter(lang => !foundLanguageNames.includes(lang)).sort())
@@ -116,7 +140,7 @@ async function scrapeLanguage(youTubeLanguageCode) {
}
function processGeolocations(freeTubeLanguage, youTubeLanguage, response) {
- const geolocations = response.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[1].multiPageMenuSectionRenderer.items[3].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
+ const geolocations = response.data.actions[0].openPopupAction.popup.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items[4].compactLinkRenderer.serviceEndpoint.signalServiceEndpoint.actions[0].getMultiPageMenuAction.menu.multiPageMenuRenderer.sections[0].multiPageMenuSectionRenderer.items
.map(({ compactLinkRenderer }) => {
return {
name: new Misc.Text(compactLinkRenderer.title).toString().trim(),
diff --git a/static/geolocations/ar.json b/static/geolocations/ar.json
index a21314937c471..8b3551d05141b 100644
--- a/static/geolocations/ar.json
+++ b/static/geolocations/ar.json
@@ -1 +1 @@
-[{"name":"أذربيجان","code":"AZ"},{"name":"أسبانيا","code":"ES"},{"name":"أستراليا","code":"AU"},{"name":"إستونيا","code":"EE"},{"name":"إسرائيل","code":"IL"},{"name":"الأرجنتين","code":"AR"},{"name":"الأردن","code":"JO"},{"name":"الإكوادور","code":"EC"},{"name":"الإمارات العربية المتحدة","code":"AE"},{"name":"البحرين","code":"BH"},{"name":"البرازيل","code":"BR"},{"name":"البرتغال","code":"PT"},{"name":"البوسنة والهرسك","code":"BA"},{"name":"الجبل الأسود","code":"ME"},{"name":"الجزائر","code":"DZ"},{"name":"الدنمارك","code":"DK"},{"name":"السلفادور","code":"SV"},{"name":"السنغال","code":"SN"},{"name":"السويد","code":"SE"},{"name":"العراق","code":"IQ"},{"name":"الفيليبين","code":"PH"},{"name":"الكويت","code":"KW"},{"name":"ألمانيا","code":"DE"},{"name":"المجر","code":"HU"},{"name":"المغرب","code":"MA"},{"name":"المكسيك","code":"MX"},{"name":"المملكة العربية السعودية","code":"SA"},{"name":"المملكة المتحدة","code":"GB"},{"name":"النرويج","code":"NO"},{"name":"النمسا","code":"AT"},{"name":"الهند","code":"IN"},{"name":"الولايات المتحدة","code":"US"},{"name":"اليابان","code":"JP"},{"name":"اليمن","code":"YE"},{"name":"اليونان","code":"GR"},{"name":"إندونيسيا","code":"ID"},{"name":"أورغواي","code":"UY"},{"name":"أوغندا","code":"UG"},{"name":"أوكرانيا","code":"UA"},{"name":"أيرلندا","code":"IE"},{"name":"أيسلندا","code":"IS"},{"name":"إيطاليا","code":"IT"},{"name":"بابوا غينيا الجديدة","code":"PG"},{"name":"باراغواي","code":"PY"},{"name":"باكستان","code":"PK"},{"name":"بلجيكا","code":"BE"},{"name":"بلغاريا","code":"BG"},{"name":"بنغلاديش","code":"BD"},{"name":"بنما","code":"PA"},{"name":"بورتوريكو","code":"PR"},{"name":"بولندا","code":"PL"},{"name":"بوليفيا","code":"BO"},{"name":"بيرو","code":"PE"},{"name":"بيلاروسيا","code":"BY"},{"name":"تايلاند","code":"TH"},{"name":"تايوان","code":"TW"},{"name":"تركيا","code":"TR"},{"name":"تشيكيا","code":"CZ"},{"name":"تشيلي","code":"CL"},{"name":"تنزانيا","code":"TZ"},{"name":"تونس","code":"TN"},{"name":"جامايكا","code":"JM"},{"name":"جمهورية الدومينكان","code":"DO"},{"name":"جنوب إفريقيا","code":"ZA"},{"name":"جورجيا","code":"GE"},{"name":"روسيا","code":"RU"},{"name":"رومانيا","code":"RO"},{"name":"زيمبابوي","code":"ZW"},{"name":"سريلانكا","code":"LK"},{"name":"سلوفاكيا","code":"SK"},{"name":"سلوفينيا","code":"SI"},{"name":"سنغافورة","code":"SG"},{"name":"سويسرا","code":"CH"},{"name":"شمال مقدونيا","code":"MK"},{"name":"صربيا","code":"RS"},{"name":"عُمان","code":"OM"},{"name":"غانا","code":"GH"},{"name":"غواتيمالا","code":"GT"},{"name":"فرنسا","code":"FR"},{"name":"فنزويلا","code":"VE"},{"name":"فنلندا","code":"FI"},{"name":"فيتنام","code":"VN"},{"name":"قبرص","code":"CY"},{"name":"قطر","code":"QA"},{"name":"كازاخستان","code":"KZ"},{"name":"كرواتيا","code":"HR"},{"name":"كمبوديا","code":"KH"},{"name":"كندا","code":"CA"},{"name":"كوريا الجنوبية","code":"KR"},{"name":"كوستاريكا","code":"CR"},{"name":"كولومبيا","code":"CO"},{"name":"كينيا","code":"KE"},{"name":"لاتفيا","code":"LV"},{"name":"لاوس","code":"LA"},{"name":"لبنان","code":"LB"},{"name":"لوكسمبورغ","code":"LU"},{"name":"ليبيا","code":"LY"},{"name":"ليتوانيا","code":"LT"},{"name":"ليشتنشتاين","code":"LI"},{"name":"مالطة","code":"MT"},{"name":"ماليزيا","code":"MY"},{"name":"مصر","code":"EG"},{"name":"نيبال","code":"NP"},{"name":"نيجيريا","code":"NG"},{"name":"نيكاراغوا","code":"NI"},{"name":"نيوزيلندا","code":"NZ"},{"name":"هندوراس","code":"HN"},{"name":"هولندا","code":"NL"},{"name":"هونغ كونغ","code":"HK"}]
\ No newline at end of file
+[{"name":"أذربيجان","code":"AZ"},{"name":"أسبانيا","code":"ES"},{"name":"أستراليا","code":"AU"},{"name":"إستونيا","code":"EE"},{"name":"إسرائيل","code":"IL"},{"name":"الأرجنتين","code":"AR"},{"name":"الأردن","code":"JO"},{"name":"الإكوادور","code":"EC"},{"name":"الإمارات العربية المتحدة","code":"AE"},{"name":"البحرين","code":"BH"},{"name":"البرازيل","code":"BR"},{"name":"البرتغال","code":"PT"},{"name":"البوسنة والهرسك","code":"BA"},{"name":"الجبل الأسود","code":"ME"},{"name":"الجزائر","code":"DZ"},{"name":"الدنمارك","code":"DK"},{"name":"السلفادور","code":"SV"},{"name":"السنغال","code":"SN"},{"name":"السويد","code":"SE"},{"name":"العراق","code":"IQ"},{"name":"الفيليبين","code":"PH"},{"name":"الكويت","code":"KW"},{"name":"ألمانيا","code":"DE"},{"name":"المجر","code":"HU"},{"name":"المغرب","code":"MA"},{"name":"المكسيك","code":"MX"},{"name":"المملكة العربية السعودية","code":"SA"},{"name":"المملكة المتحدة","code":"GB"},{"name":"النرويج","code":"NO"},{"name":"النمسا","code":"AT"},{"name":"الهند","code":"IN"},{"name":"الولايات المتحدة","code":"US"},{"name":"اليابان","code":"JP"},{"name":"اليمن","code":"YE"},{"name":"اليونان","code":"GR"},{"name":"إندونيسيا","code":"ID"},{"name":"أورغواي","code":"UY"},{"name":"أوغندا","code":"UG"},{"name":"أوكرانيا","code":"UA"},{"name":"أيرلندا","code":"IE"},{"name":"أيسلندا","code":"IS"},{"name":"إيطاليا","code":"IT"},{"name":"بابوا غينيا الجديدة","code":"PG"},{"name":"باراغواي","code":"PY"},{"name":"باكستان","code":"PK"},{"name":"بلجيكا","code":"BE"},{"name":"بلغاريا","code":"BG"},{"name":"بنغلاديش","code":"BD"},{"name":"بنما","code":"PA"},{"name":"بورتوريكو","code":"PR"},{"name":"بولندا","code":"PL"},{"name":"بوليفيا","code":"BO"},{"name":"بيرو","code":"PE"},{"name":"بيلاروسيا","code":"BY"},{"name":"تايلاند","code":"TH"},{"name":"تايوان","code":"TW"},{"name":"تركيا","code":"TR"},{"name":"تشيكيا","code":"CZ"},{"name":"تشيلي","code":"CL"},{"name":"تنزانيا","code":"TZ"},{"name":"تونس","code":"TN"},{"name":"جامايكا","code":"JM"},{"name":"جمهورية الدومينكان","code":"DO"},{"name":"جنوب إفريقيا","code":"ZA"},{"name":"جورجيا","code":"GE"},{"name":"روسيا","code":"RU"},{"name":"رومانيا","code":"RO"},{"name":"زيمبابوي","code":"ZW"},{"name":"سريلانكا","code":"LK"},{"name":"سلوفاكيا","code":"SK"},{"name":"سلوفينيا","code":"SI"},{"name":"سنغافورة","code":"SG"},{"name":"سويسرا","code":"CH"},{"name":"شمال مقدونيا","code":"MK"},{"name":"صربيا","code":"RS"},{"name":"عُمان","code":"OM"},{"name":"غانا","code":"GH"},{"name":"غواتيمالا","code":"GT"},{"name":"فرنسا","code":"FR"},{"name":"فنزويلا","code":"VE"},{"name":"فنلندا","code":"FI"},{"name":"فيتنام","code":"VN"},{"name":"قبرص","code":"CY"},{"name":"قطر","code":"QA"},{"name":"كازاخستان","code":"KZ"},{"name":"كرواتيا","code":"HR"},{"name":"كمبوديا","code":"KH"},{"name":"كندا","code":"CA"},{"name":"كوريا الجنوبية","code":"KR"},{"name":"كوستاريكا","code":"CR"},{"name":"كولومبيا","code":"CO"},{"name":"كينيا","code":"KE"},{"name":"لاتفيا","code":"LV"},{"name":"لاوس","code":"LA"},{"name":"لبنان","code":"LB"},{"name":"لوكسمبورغ","code":"LU"},{"name":"ليبيا","code":"LY"},{"name":"ليتوانيا","code":"LT"},{"name":"ليشتنشتاين","code":"LI"},{"name":"مالطة","code":"MT"},{"name":"ماليزيا","code":"MY"},{"name":"مصر","code":"EG"},{"name":"مولدوفا","code":"MD"},{"name":"نيبال","code":"NP"},{"name":"نيجيريا","code":"NG"},{"name":"نيكاراغوا","code":"NI"},{"name":"نيوزيلندا","code":"NZ"},{"name":"هندوراس","code":"HN"},{"name":"هولندا","code":"NL"},{"name":"هونغ كونغ","code":"HK"}]
\ No newline at end of file
diff --git a/static/geolocations/bg.json b/static/geolocations/bg.json
index a4b06891ae324..50f6df990475c 100644
--- a/static/geolocations/bg.json
+++ b/static/geolocations/bg.json
@@ -1 +1 @@
-[{"name":"Австралия","code":"AU"},{"name":"Австрия","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аржентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Беларус","code":"BY"},{"name":"Белгия","code":"BE"},{"name":"Боливия","code":"BO"},{"name":"Босна и Херцеговина","code":"BA"},{"name":"Бразилия","code":"BR"},{"name":"България","code":"BG"},{"name":"Великобритания","code":"GB"},{"name":"Венесуела","code":"VE"},{"name":"Виетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Германия","code":"DE"},{"name":"Грузия","code":"GE"},{"name":"Гърция","code":"GR"},{"name":"Дания","code":"DK"},{"name":"Доминиканска република","code":"DO"},{"name":"Египет","code":"EG"},{"name":"Еквадор","code":"EC"},{"name":"Естония","code":"EE"},{"name":"Зимбабве","code":"ZW"},{"name":"Израел","code":"IL"},{"name":"Индия","code":"IN"},{"name":"Индонезия","code":"ID"},{"name":"Ирак","code":"IQ"},{"name":"Ирландия","code":"IE"},{"name":"Исландия","code":"IS"},{"name":"Испания","code":"ES"},{"name":"Италия","code":"IT"},{"name":"Йемен","code":"YE"},{"name":"Йордания","code":"JO"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кения","code":"KE"},{"name":"Кипър","code":"CY"},{"name":"Колумбия","code":"CO"},{"name":"Коста Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвия","code":"LV"},{"name":"Либия","code":"LY"},{"name":"Ливан","code":"LB"},{"name":"Литва","code":"LT"},{"name":"Лихтенщайн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзия","code":"MY"},{"name":"Малта","code":"MT"},{"name":"Мароко","code":"MA"},{"name":"Мексико","code":"MX"},{"name":"Непал","code":"NP"},{"name":"Нигерия","code":"NG"},{"name":"Нидерландия","code":"NL"},{"name":"Никарагуа","code":"NI"},{"name":"Нова Зеландия","code":"NZ"},{"name":"Норвегия","code":"NO"},{"name":"Обединени арабски емирства","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа Нова Гвинея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Полша","code":"PL"},{"name":"Португалия","code":"PT"},{"name":"Пуерто Рико","code":"PR"},{"name":"Румъния","code":"RO"},{"name":"Русия","code":"RU"},{"name":"Салвадор","code":"SV"},{"name":"Саудитска Арабия","code":"SA"},{"name":"Северна Македония","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сингапур","code":"SG"},{"name":"Словакия","code":"SK"},{"name":"Словения","code":"SI"},{"name":"Съединени щати","code":"US"},{"name":"Сърбия","code":"RS"},{"name":"Тайван","code":"TW"},{"name":"Тайланд","code":"TH"},{"name":"Танзания","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турция","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Украйна","code":"UA"},{"name":"Унгария","code":"HU"},{"name":"Уругвай","code":"UY"},{"name":"Филипини","code":"PH"},{"name":"Финландия","code":"FI"},{"name":"Франция","code":"FR"},{"name":"Хондурас","code":"HN"},{"name":"Хонконг","code":"HK"},{"name":"Хърватска","code":"HR"},{"name":"Черна гора","code":"ME"},{"name":"Чехия","code":"CZ"},{"name":"Чили","code":"CL"},{"name":"Швейцария","code":"CH"},{"name":"Швеция","code":"SE"},{"name":"Шри Ланка","code":"LK"},{"name":"Южна Африка","code":"ZA"},{"name":"Южна Корея","code":"KR"},{"name":"Ямайка","code":"JM"},{"name":"Япония","code":"JP"}]
\ No newline at end of file
+[{"name":"Австралия","code":"AU"},{"name":"Австрия","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аржентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Беларус","code":"BY"},{"name":"Белгия","code":"BE"},{"name":"Боливия","code":"BO"},{"name":"Босна и Херцеговина","code":"BA"},{"name":"Бразилия","code":"BR"},{"name":"България","code":"BG"},{"name":"Великобритания","code":"GB"},{"name":"Венесуела","code":"VE"},{"name":"Виетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Германия","code":"DE"},{"name":"Грузия","code":"GE"},{"name":"Гърция","code":"GR"},{"name":"Дания","code":"DK"},{"name":"Доминиканска република","code":"DO"},{"name":"Египет","code":"EG"},{"name":"Еквадор","code":"EC"},{"name":"Естония","code":"EE"},{"name":"Зимбабве","code":"ZW"},{"name":"Израел","code":"IL"},{"name":"Индия","code":"IN"},{"name":"Индонезия","code":"ID"},{"name":"Ирак","code":"IQ"},{"name":"Ирландия","code":"IE"},{"name":"Исландия","code":"IS"},{"name":"Испания","code":"ES"},{"name":"Италия","code":"IT"},{"name":"Йемен","code":"YE"},{"name":"Йордания","code":"JO"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кения","code":"KE"},{"name":"Кипър","code":"CY"},{"name":"Колумбия","code":"CO"},{"name":"Коста Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвия","code":"LV"},{"name":"Либия","code":"LY"},{"name":"Ливан","code":"LB"},{"name":"Литва","code":"LT"},{"name":"Лихтенщайн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзия","code":"MY"},{"name":"Малта","code":"MT"},{"name":"Мароко","code":"MA"},{"name":"Мексико","code":"MX"},{"name":"Молдова","code":"MD"},{"name":"Непал","code":"NP"},{"name":"Нигерия","code":"NG"},{"name":"Нидерландия","code":"NL"},{"name":"Никарагуа","code":"NI"},{"name":"Нова Зеландия","code":"NZ"},{"name":"Норвегия","code":"NO"},{"name":"Обединени арабски емирства","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа Нова Гвинея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Полша","code":"PL"},{"name":"Португалия","code":"PT"},{"name":"Пуерто Рико","code":"PR"},{"name":"Румъния","code":"RO"},{"name":"Русия","code":"RU"},{"name":"Салвадор","code":"SV"},{"name":"Саудитска Арабия","code":"SA"},{"name":"Северна Македония","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сингапур","code":"SG"},{"name":"Словакия","code":"SK"},{"name":"Словения","code":"SI"},{"name":"Съединени щати","code":"US"},{"name":"Сърбия","code":"RS"},{"name":"Тайван","code":"TW"},{"name":"Тайланд","code":"TH"},{"name":"Танзания","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турция","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Украйна","code":"UA"},{"name":"Унгария","code":"HU"},{"name":"Уругвай","code":"UY"},{"name":"Филипини","code":"PH"},{"name":"Финландия","code":"FI"},{"name":"Франция","code":"FR"},{"name":"Хондурас","code":"HN"},{"name":"Хонконг","code":"HK"},{"name":"Хърватска","code":"HR"},{"name":"Черна гора","code":"ME"},{"name":"Чехия","code":"CZ"},{"name":"Чили","code":"CL"},{"name":"Швейцария","code":"CH"},{"name":"Швеция","code":"SE"},{"name":"Шри Ланка","code":"LK"},{"name":"Южна Африка","code":"ZA"},{"name":"Южна Корея","code":"KR"},{"name":"Ямайка","code":"JM"},{"name":"Япония","code":"JP"}]
\ No newline at end of file
diff --git a/static/geolocations/ca.json b/static/geolocations/ca.json
index feb98802ee083..d399c63b89458 100644
--- a/static/geolocations/ca.json
+++ b/static/geolocations/ca.json
@@ -1 +1 @@
-[{"name":"Alemanya","code":"DE"},{"name":"Algèria","code":"DZ"},{"name":"Aràbia Saudita","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Austràlia","code":"AU"},{"name":"Àustria","code":"AT"},{"name":"Azerbaidjan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarús","code":"BY"},{"name":"Bèlgica","code":"BE"},{"name":"Bolívia","code":"BO"},{"name":"Bòsnia i Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgària","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canadà","code":"CA"},{"name":"Colòmbia","code":"CO"},{"name":"Corea del Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croàcia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egipte","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirats Àrabs Units","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslovàquia","code":"SK"},{"name":"Eslovènia","code":"SI"},{"name":"Espanya","code":"ES"},{"name":"Estats Units","code":"US"},{"name":"Estònia","code":"EE"},{"name":"Filipines","code":"PH"},{"name":"Finlàndia","code":"FI"},{"name":"França","code":"FR"},{"name":"Geòrgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grècia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Hondures","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongria","code":"HU"},{"name":"Iemen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonèsia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islàndia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itàlia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japó","code":"JP"},{"name":"Jordània","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letònia","code":"LV"},{"name":"Líban","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituània","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Macedònia del Nord","code":"MK"},{"name":"Malàisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marroc","code":"MA"},{"name":"Mèxic","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigèria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelanda","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Països Baixos","code":"NL"},{"name":"Pakistan","code":"PK"},{"name":"Panamà","code":"PA"},{"name":"Papua Nova Guinea","code":"PG"},{"name":"Paraguai","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polònia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regne Unit","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Romania","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sèrbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sud-àfrica","code":"ZA"},{"name":"Suècia","code":"SE"},{"name":"Suïssa","code":"CH"},{"name":"Tailàndia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzània","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Txèquia","code":"CZ"},{"name":"Ucraïna","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Veneçuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Xile","code":"CL"},{"name":"Xipre","code":"CY"},{"name":"Zimbàbue","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alemanya","code":"DE"},{"name":"Algèria","code":"DZ"},{"name":"Aràbia Saudita","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Austràlia","code":"AU"},{"name":"Àustria","code":"AT"},{"name":"Azerbaidjan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarús","code":"BY"},{"name":"Bèlgica","code":"BE"},{"name":"Bolívia","code":"BO"},{"name":"Bòsnia i Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgària","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canadà","code":"CA"},{"name":"Colòmbia","code":"CO"},{"name":"Corea del Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croàcia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egipte","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirats Àrabs Units","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslovàquia","code":"SK"},{"name":"Eslovènia","code":"SI"},{"name":"Espanya","code":"ES"},{"name":"Estats Units","code":"US"},{"name":"Estònia","code":"EE"},{"name":"Filipines","code":"PH"},{"name":"Finlàndia","code":"FI"},{"name":"França","code":"FR"},{"name":"Geòrgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grècia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Hondures","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongria","code":"HU"},{"name":"Iemen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonèsia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islàndia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itàlia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japó","code":"JP"},{"name":"Jordània","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Lao","code":"LA"},{"name":"Letònia","code":"LV"},{"name":"Líban","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituània","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Macedònia del Nord","code":"MK"},{"name":"Malàisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marroc","code":"MA"},{"name":"Mèxic","code":"MX"},{"name":"Moldàvia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigèria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelanda","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Països Baixos","code":"NL"},{"name":"Pakistan","code":"PK"},{"name":"Panamà","code":"PA"},{"name":"Papua Nova Guinea","code":"PG"},{"name":"Paraguai","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polònia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regne Unit","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Romania","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sèrbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sud-àfrica","code":"ZA"},{"name":"Suècia","code":"SE"},{"name":"Suïssa","code":"CH"},{"name":"Tailàndia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzània","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Txèquia","code":"CZ"},{"name":"Ucraïna","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Veneçuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Xile","code":"CL"},{"name":"Xipre","code":"CY"},{"name":"Zimbàbue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/cs.json b/static/geolocations/cs.json
index dd3a1e6967a4a..563ff35781ae2 100644
--- a/static/geolocations/cs.json
+++ b/static/geolocations/cs.json
@@ -1 +1 @@
-[{"name":"Alžírsko","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrálie","code":"AU"},{"name":"Ázerbájdžán","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladéš","code":"BD"},{"name":"Belgie","code":"BE"},{"name":"Bělorusko","code":"BY"},{"name":"Bolívie","code":"BO"},{"name":"Bosna a Hercegovina","code":"BA"},{"name":"Brazílie","code":"BR"},{"name":"Bulharsko","code":"BG"},{"name":"Černá Hora","code":"ME"},{"name":"Česko","code":"CZ"},{"name":"Dánsko","code":"DK"},{"name":"Dominikánská republika","code":"DO"},{"name":"Egypt","code":"EG"},{"name":"Ekvádor","code":"EC"},{"name":"Estonsko","code":"EE"},{"name":"Filipíny","code":"PH"},{"name":"Finsko","code":"FI"},{"name":"Francie","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Gruzie","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Chile","code":"CL"},{"name":"Chorvatsko","code":"HR"},{"name":"Indie","code":"IN"},{"name":"Indonésie","code":"ID"},{"name":"Irák","code":"IQ"},{"name":"Irsko","code":"IE"},{"name":"Island","code":"IS"},{"name":"Itálie","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonsko","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jihoafrická republika","code":"ZA"},{"name":"Jižní Korea","code":"KR"},{"name":"Jordánsko","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstán","code":"KZ"},{"name":"Keňa","code":"KE"},{"name":"Kolumbie","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Kypr","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Libanon","code":"LB"},{"name":"Libye","code":"LY"},{"name":"Lichtenštejnsko","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Lotyšsko","code":"LV"},{"name":"Lucembursko","code":"LU"},{"name":"Maďarsko","code":"HU"},{"name":"Malajsie","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Německo","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nigérie","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Nizozemsko","code":"NL"},{"name":"Norsko","code":"NO"},{"name":"Nový Zéland","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pákistán","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nová Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polsko","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalsko","code":"PT"},{"name":"Rakousko","code":"AT"},{"name":"Rumunsko","code":"RO"},{"name":"Rusko","code":"RU"},{"name":"Řecko","code":"GR"},{"name":"Salvador","code":"SV"},{"name":"Saúdská Arábie","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severní Makedonie","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovensko","code":"SK"},{"name":"Slovinsko","code":"SI"},{"name":"Spojené arabské emiráty","code":"AE"},{"name":"Spojené království","code":"GB"},{"name":"Spojené státy","code":"US"},{"name":"Srbsko","code":"RS"},{"name":"Srí Lanka","code":"LK"},{"name":"Španělsko","code":"ES"},{"name":"Švédsko","code":"SE"},{"name":"Švýcarsko","code":"CH"},{"name":"Tanzánie","code":"TZ"},{"name":"Thajsko","code":"TH"},{"name":"Tchaj-wan","code":"TW"},{"name":"Tunisko","code":"TN"},{"name":"Turecko","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alžírsko","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrálie","code":"AU"},{"name":"Ázerbájdžán","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladéš","code":"BD"},{"name":"Belgie","code":"BE"},{"name":"Bělorusko","code":"BY"},{"name":"Bolívie","code":"BO"},{"name":"Bosna a Hercegovina","code":"BA"},{"name":"Brazílie","code":"BR"},{"name":"Bulharsko","code":"BG"},{"name":"Černá Hora","code":"ME"},{"name":"Česko","code":"CZ"},{"name":"Dánsko","code":"DK"},{"name":"Dominikánská republika","code":"DO"},{"name":"Egypt","code":"EG"},{"name":"Ekvádor","code":"EC"},{"name":"Estonsko","code":"EE"},{"name":"Filipíny","code":"PH"},{"name":"Finsko","code":"FI"},{"name":"Francie","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Gruzie","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Chile","code":"CL"},{"name":"Chorvatsko","code":"HR"},{"name":"Indie","code":"IN"},{"name":"Indonésie","code":"ID"},{"name":"Irák","code":"IQ"},{"name":"Irsko","code":"IE"},{"name":"Island","code":"IS"},{"name":"Itálie","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonsko","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jihoafrická republika","code":"ZA"},{"name":"Jižní Korea","code":"KR"},{"name":"Jordánsko","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstán","code":"KZ"},{"name":"Keňa","code":"KE"},{"name":"Kolumbie","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Kypr","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Libanon","code":"LB"},{"name":"Libye","code":"LY"},{"name":"Lichtenštejnsko","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Lotyšsko","code":"LV"},{"name":"Lucembursko","code":"LU"},{"name":"Maďarsko","code":"HU"},{"name":"Malajsie","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Moldavsko","code":"MD"},{"name":"Německo","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nigérie","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Nizozemsko","code":"NL"},{"name":"Norsko","code":"NO"},{"name":"Nový Zéland","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pákistán","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nová Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polsko","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalsko","code":"PT"},{"name":"Rakousko","code":"AT"},{"name":"Rumunsko","code":"RO"},{"name":"Rusko","code":"RU"},{"name":"Řecko","code":"GR"},{"name":"Salvador","code":"SV"},{"name":"Saúdská Arábie","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severní Makedonie","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovensko","code":"SK"},{"name":"Slovinsko","code":"SI"},{"name":"Spojené arabské emiráty","code":"AE"},{"name":"Spojené království","code":"GB"},{"name":"Spojené státy","code":"US"},{"name":"Srbsko","code":"RS"},{"name":"Srí Lanka","code":"LK"},{"name":"Španělsko","code":"ES"},{"name":"Švédsko","code":"SE"},{"name":"Švýcarsko","code":"CH"},{"name":"Tanzánie","code":"TZ"},{"name":"Thajsko","code":"TH"},{"name":"Tchaj-wan","code":"TW"},{"name":"Tunisko","code":"TN"},{"name":"Turecko","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/da.json b/static/geolocations/da.json
index c7f2db02013a3..42fb5a70d6e4f 100644
--- a/static/geolocations/da.json
+++ b/static/geolocations/da.json
@@ -1 +1 @@
-[{"name":"Algeriet","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australien","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgien","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnien-Hercegovina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cypern","code":"CY"},{"name":"Danmark","code":"DK"},{"name":"Den Dominikanske Republik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypten","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinerne","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Forenede Arabiske Emirater","code":"AE"},{"name":"Frankrig","code":"FR"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grækenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nederlandene","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Republikken Nordmakedonien","code":"MK"},{"name":"Rumænien","code":"RO"},{"name":"Rusland","code":"RU"},{"name":"Saudi-Arabien","code":"SA"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakiet","code":"SK"},{"name":"Slovenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannien og Nordirland","code":"GB"},{"name":"Sverige","code":"SE"},{"name":"Sydafrika","code":"ZA"},{"name":"Sydkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tjekkiet","code":"CZ"},{"name":"Tunesien","code":"TN"},{"name":"Tyrkiet","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østrig","code":"AT"}]
\ No newline at end of file
+[{"name":"Algeriet","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australien","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgien","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnien-Hercegovina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cypern","code":"CY"},{"name":"Danmark","code":"DK"},{"name":"Den Dominikanske Republik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypten","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinerne","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Forenede Arabiske Emirater","code":"AE"},{"name":"Frankrig","code":"FR"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grækenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nederlandene","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Republikken Nordmakedonien","code":"MK"},{"name":"Rumænien","code":"RO"},{"name":"Rusland","code":"RU"},{"name":"Saudi-Arabien","code":"SA"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakiet","code":"SK"},{"name":"Slovenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannien og Nordirland","code":"GB"},{"name":"Sverige","code":"SE"},{"name":"Sydafrika","code":"ZA"},{"name":"Sydkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tjekkiet","code":"CZ"},{"name":"Tunesien","code":"TN"},{"name":"Tyrkiet","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østrig","code":"AT"}]
\ No newline at end of file
diff --git a/static/geolocations/de-DE.json b/static/geolocations/de-DE.json
index 291eaddaf5ee0..67a3ec41c9b21 100644
--- a/static/geolocations/de-DE.json
+++ b/static/geolocations/de-DE.json
@@ -1 +1 @@
-[{"name":"Ägypten","code":"EG"},{"name":"Algerien","code":"DZ"},{"name":"Argentinien","code":"AR"},{"name":"Aserbaidschan","code":"AZ"},{"name":"Australien","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesch","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgien","code":"BE"},{"name":"Bolivien","code":"BO"},{"name":"Bosnien und Herzegowina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Dänemark","code":"DK"},{"name":"Deutschland","code":"DE"},{"name":"Dominikanische Republik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Finnland","code":"FI"},{"name":"Frankreich","code":"FR"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Griechenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanien","code":"JO"},{"name":"Kambodscha","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasachstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Kenia","code":"KE"},{"name":"Kolumbien","code":"CO"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Neuseeland","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Niederlande","code":"NL"},{"name":"Nigeria","code":"NG"},{"name":"Nordmazedonien","code":"MK"},{"name":"Norwegen","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Österreich","code":"AT"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Neuguinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippinen","code":"PH"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Rumänien","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabien","code":"SA"},{"name":"Schweden","code":"SE"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Simbabwe","code":"ZW"},{"name":"Singapur","code":"SG"},{"name":"Slowakei","code":"SK"},{"name":"Slowenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Südafrika","code":"ZA"},{"name":"Südkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tansania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tschechien","code":"CZ"},{"name":"Tunesien","code":"TN"},{"name":"Türkei","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vereinigte Arabische Emirate","code":"AE"},{"name":"Vereinigtes Königreich","code":"GB"},{"name":"Vietnam","code":"VN"},{"name":"Zypern","code":"CY"}]
\ No newline at end of file
+[{"name":"Ägypten","code":"EG"},{"name":"Algerien","code":"DZ"},{"name":"Argentinien","code":"AR"},{"name":"Aserbaidschan","code":"AZ"},{"name":"Australien","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesch","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgien","code":"BE"},{"name":"Bolivien","code":"BO"},{"name":"Bosnien und Herzegowina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Dänemark","code":"DK"},{"name":"Deutschland","code":"DE"},{"name":"Dominikanische Republik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Finnland","code":"FI"},{"name":"Frankreich","code":"FR"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Griechenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanien","code":"JO"},{"name":"Kambodscha","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasachstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Kenia","code":"KE"},{"name":"Kolumbien","code":"CO"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Neuseeland","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Niederlande","code":"NL"},{"name":"Nigeria","code":"NG"},{"name":"Nordmazedonien","code":"MK"},{"name":"Norwegen","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Österreich","code":"AT"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Neuguinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippinen","code":"PH"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Republik Moldau","code":"MD"},{"name":"Rumänien","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabien","code":"SA"},{"name":"Schweden","code":"SE"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Simbabwe","code":"ZW"},{"name":"Singapur","code":"SG"},{"name":"Slowakei","code":"SK"},{"name":"Slowenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Südafrika","code":"ZA"},{"name":"Südkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tansania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tschechien","code":"CZ"},{"name":"Tunesien","code":"TN"},{"name":"Türkei","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vereinigte Arabische Emirate","code":"AE"},{"name":"Vereinigtes Königreich","code":"GB"},{"name":"Vietnam","code":"VN"},{"name":"Zypern","code":"CY"}]
\ No newline at end of file
diff --git a/static/geolocations/el.json b/static/geolocations/el.json
index 9b46a7e1cdca6..d228bd008ea99 100644
--- a/static/geolocations/el.json
+++ b/static/geolocations/el.json
@@ -1 +1 @@
-[{"name":"Αζερμπαϊτζάν","code":"AZ"},{"name":"Αίγυπτος","code":"EG"},{"name":"Αλγερία","code":"DZ"},{"name":"Αργεντινή","code":"AR"},{"name":"Αυστραλία","code":"AU"},{"name":"Αυστρία","code":"AT"},{"name":"Βέλγιο","code":"BE"},{"name":"Βενεζουέλα","code":"VE"},{"name":"Βιετνάμ","code":"VN"},{"name":"Βολιβία","code":"BO"},{"name":"Βόρεια Μακεδονία","code":"MK"},{"name":"Βοσνία και Ερζεγοβίνη","code":"BA"},{"name":"Βουλγαρία","code":"BG"},{"name":"Βραζιλία","code":"BR"},{"name":"Γαλλία","code":"FR"},{"name":"Γερμανία","code":"DE"},{"name":"Γεωργία","code":"GE"},{"name":"Γκάνα","code":"GH"},{"name":"Γουατεμάλα","code":"GT"},{"name":"Δανία","code":"DK"},{"name":"Δομινικανή Δημοκρατία","code":"DO"},{"name":"Ελ Σαλβαδόρ","code":"SV"},{"name":"Ελβετία","code":"CH"},{"name":"Ελλάδα","code":"GR"},{"name":"Εσθονία","code":"EE"},{"name":"Ζιμπάμπουε","code":"ZW"},{"name":"Ηνωμένα Αραβικά Εμιράτα","code":"AE"},{"name":"Ηνωμένες Πολιτείες","code":"US"},{"name":"Ηνωμένο Βασίλειο","code":"GB"},{"name":"Ιαπωνία","code":"JP"},{"name":"Ινδία","code":"IN"},{"name":"Ινδονησία","code":"ID"},{"name":"Ιορδανία","code":"JO"},{"name":"Ιράκ","code":"IQ"},{"name":"Ιρλανδία","code":"IE"},{"name":"Ισημερινός","code":"EC"},{"name":"Ισλανδία","code":"IS"},{"name":"Ισπανία","code":"ES"},{"name":"Ισραήλ","code":"IL"},{"name":"Ιταλία","code":"IT"},{"name":"Καζακστάν","code":"KZ"},{"name":"Καμπότζη","code":"KH"},{"name":"Καναδάς","code":"CA"},{"name":"Κατάρ","code":"QA"},{"name":"Κένυα","code":"KE"},{"name":"Κολομβία","code":"CO"},{"name":"Κόστα Ρίκα","code":"CR"},{"name":"Κουβέιτ","code":"KW"},{"name":"Κροατία","code":"HR"},{"name":"Κύπρος","code":"CY"},{"name":"Λάος","code":"LA"},{"name":"Λετονία","code":"LV"},{"name":"Λευκορωσία","code":"BY"},{"name":"Λίβανος","code":"LB"},{"name":"Λιβύη","code":"LY"},{"name":"Λιθουανία","code":"LT"},{"name":"Λιχτενστάιν","code":"LI"},{"name":"Λουξεμβούργο","code":"LU"},{"name":"Μαλαισία","code":"MY"},{"name":"Μάλτα","code":"MT"},{"name":"Μαρόκο","code":"MA"},{"name":"Μαυροβούνιο","code":"ME"},{"name":"Μεξικό","code":"MX"},{"name":"Μπαγκλαντές","code":"BD"},{"name":"Μπαχρέιν","code":"BH"},{"name":"Νέα Ζηλανδία","code":"NZ"},{"name":"Νεπάλ","code":"NP"},{"name":"Νιγηρία","code":"NG"},{"name":"Νικαράγουα","code":"NI"},{"name":"Νορβηγία","code":"NO"},{"name":"Νότια Αφρική","code":"ZA"},{"name":"Νότια Κορέα","code":"KR"},{"name":"Ολλανδία","code":"NL"},{"name":"Ομάν","code":"OM"},{"name":"Ονδούρα","code":"HN"},{"name":"Ουγγαρία","code":"HU"},{"name":"Ουγκάντα","code":"UG"},{"name":"Ουκρανία","code":"UA"},{"name":"Ουρουγουάη","code":"UY"},{"name":"Πακιστάν","code":"PK"},{"name":"Παναμάς","code":"PA"},{"name":"Παπούα Νέα Γουινέα","code":"PG"},{"name":"Παραγουάη","code":"PY"},{"name":"Περού","code":"PE"},{"name":"Πολωνία","code":"PL"},{"name":"Πορτογαλία","code":"PT"},{"name":"Πουέρτο Ρίκο","code":"PR"},{"name":"Ρουμανία","code":"RO"},{"name":"Ρωσία","code":"RU"},{"name":"Σαουδική Αραβία","code":"SA"},{"name":"Σενεγάλη","code":"SN"},{"name":"Σερβία","code":"RS"},{"name":"Σιγκαπούρη","code":"SG"},{"name":"Σλοβακία","code":"SK"},{"name":"Σλοβενία","code":"SI"},{"name":"Σουηδία","code":"SE"},{"name":"Σρι Λάνκα","code":"LK"},{"name":"Ταϊβάν","code":"TW"},{"name":"Ταϊλάνδη","code":"TH"},{"name":"Τανζανία","code":"TZ"},{"name":"Τζαμάικα","code":"JM"},{"name":"Τουρκία","code":"TR"},{"name":"Τσεχία","code":"CZ"},{"name":"Τυνησία","code":"TN"},{"name":"Υεμένη","code":"YE"},{"name":"Φιλιππίνες","code":"PH"},{"name":"Φινλανδία","code":"FI"},{"name":"Χιλή","code":"CL"},{"name":"Χονγκ Κονγκ","code":"HK"}]
\ No newline at end of file
+[{"name":"Αζερμπαϊτζάν","code":"AZ"},{"name":"Αίγυπτος","code":"EG"},{"name":"Αλγερία","code":"DZ"},{"name":"Αργεντινή","code":"AR"},{"name":"Αυστραλία","code":"AU"},{"name":"Αυστρία","code":"AT"},{"name":"Βέλγιο","code":"BE"},{"name":"Βενεζουέλα","code":"VE"},{"name":"Βιετνάμ","code":"VN"},{"name":"Βολιβία","code":"BO"},{"name":"Βόρεια Μακεδονία","code":"MK"},{"name":"Βοσνία και Ερζεγοβίνη","code":"BA"},{"name":"Βουλγαρία","code":"BG"},{"name":"Βραζιλία","code":"BR"},{"name":"Γαλλία","code":"FR"},{"name":"Γερμανία","code":"DE"},{"name":"Γεωργία","code":"GE"},{"name":"Γκάνα","code":"GH"},{"name":"Γουατεμάλα","code":"GT"},{"name":"Δανία","code":"DK"},{"name":"Δομινικανή Δημοκρατία","code":"DO"},{"name":"Ελ Σαλβαδόρ","code":"SV"},{"name":"Ελβετία","code":"CH"},{"name":"Ελλάδα","code":"GR"},{"name":"Εσθονία","code":"EE"},{"name":"Ζιμπάμπουε","code":"ZW"},{"name":"Ηνωμένα Αραβικά Εμιράτα","code":"AE"},{"name":"Ηνωμένες Πολιτείες","code":"US"},{"name":"Ηνωμένο Βασίλειο","code":"GB"},{"name":"Ιαπωνία","code":"JP"},{"name":"Ινδία","code":"IN"},{"name":"Ινδονησία","code":"ID"},{"name":"Ιορδανία","code":"JO"},{"name":"Ιράκ","code":"IQ"},{"name":"Ιρλανδία","code":"IE"},{"name":"Ισημερινός","code":"EC"},{"name":"Ισλανδία","code":"IS"},{"name":"Ισπανία","code":"ES"},{"name":"Ισραήλ","code":"IL"},{"name":"Ιταλία","code":"IT"},{"name":"Καζακστάν","code":"KZ"},{"name":"Καμπότζη","code":"KH"},{"name":"Καναδάς","code":"CA"},{"name":"Κατάρ","code":"QA"},{"name":"Κένυα","code":"KE"},{"name":"Κολομβία","code":"CO"},{"name":"Κόστα Ρίκα","code":"CR"},{"name":"Κουβέιτ","code":"KW"},{"name":"Κροατία","code":"HR"},{"name":"Κύπρος","code":"CY"},{"name":"Λάος","code":"LA"},{"name":"Λετονία","code":"LV"},{"name":"Λευκορωσία","code":"BY"},{"name":"Λίβανος","code":"LB"},{"name":"Λιβύη","code":"LY"},{"name":"Λιθουανία","code":"LT"},{"name":"Λιχτενστάιν","code":"LI"},{"name":"Λουξεμβούργο","code":"LU"},{"name":"Μαλαισία","code":"MY"},{"name":"Μάλτα","code":"MT"},{"name":"Μαρόκο","code":"MA"},{"name":"Μαυροβούνιο","code":"ME"},{"name":"Μεξικό","code":"MX"},{"name":"Μολδαβία","code":"MD"},{"name":"Μπαγκλαντές","code":"BD"},{"name":"Μπαχρέιν","code":"BH"},{"name":"Νέα Ζηλανδία","code":"NZ"},{"name":"Νεπάλ","code":"NP"},{"name":"Νιγηρία","code":"NG"},{"name":"Νικαράγουα","code":"NI"},{"name":"Νορβηγία","code":"NO"},{"name":"Νότια Αφρική","code":"ZA"},{"name":"Νότια Κορέα","code":"KR"},{"name":"Ολλανδία","code":"NL"},{"name":"Ομάν","code":"OM"},{"name":"Ονδούρα","code":"HN"},{"name":"Ουγγαρία","code":"HU"},{"name":"Ουγκάντα","code":"UG"},{"name":"Ουκρανία","code":"UA"},{"name":"Ουρουγουάη","code":"UY"},{"name":"Πακιστάν","code":"PK"},{"name":"Παναμάς","code":"PA"},{"name":"Παπούα Νέα Γουινέα","code":"PG"},{"name":"Παραγουάη","code":"PY"},{"name":"Περού","code":"PE"},{"name":"Πολωνία","code":"PL"},{"name":"Πορτογαλία","code":"PT"},{"name":"Πουέρτο Ρίκο","code":"PR"},{"name":"Ρουμανία","code":"RO"},{"name":"Ρωσία","code":"RU"},{"name":"Σαουδική Αραβία","code":"SA"},{"name":"Σενεγάλη","code":"SN"},{"name":"Σερβία","code":"RS"},{"name":"Σιγκαπούρη","code":"SG"},{"name":"Σλοβακία","code":"SK"},{"name":"Σλοβενία","code":"SI"},{"name":"Σουηδία","code":"SE"},{"name":"Σρι Λάνκα","code":"LK"},{"name":"Ταϊβάν","code":"TW"},{"name":"Ταϊλάνδη","code":"TH"},{"name":"Τανζανία","code":"TZ"},{"name":"Τζαμάικα","code":"JM"},{"name":"Τουρκία","code":"TR"},{"name":"Τσεχία","code":"CZ"},{"name":"Τυνησία","code":"TN"},{"name":"Υεμένη","code":"YE"},{"name":"Φιλιππίνες","code":"PH"},{"name":"Φινλανδία","code":"FI"},{"name":"Χιλή","code":"CL"},{"name":"Χονγκ Κονγκ","code":"HK"}]
\ No newline at end of file
diff --git a/static/geolocations/en-US.json b/static/geolocations/en-US.json
index 38f58fc91187d..1768c93547857 100644
--- a/static/geolocations/en-US.json
+++ b/static/geolocations/en-US.json
@@ -1 +1 @@
-[{"name":"Algeria","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia and Herzegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Croatia","code":"HR"},{"name":"Cyprus","code":"CY"},{"name":"Czechia","code":"CZ"},{"name":"Denmark","code":"DK"},{"name":"Dominican Republic","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Finland","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germany","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Greece","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Iceland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Italy","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Morocco","code":"MA"},{"name":"Nepal","code":"NP"},{"name":"Netherlands","code":"NL"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"North Macedonia","code":"MK"},{"name":"Norway","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Poland","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"South Africa","code":"ZA"},{"name":"South Korea","code":"KR"},{"name":"Spain","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sweden","code":"SE"},{"name":"Switzerland","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkey","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"United Arab Emirates","code":"AE"},{"name":"United Kingdom","code":"GB"},{"name":"United States","code":"US"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Algeria","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia and Herzegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Croatia","code":"HR"},{"name":"Cyprus","code":"CY"},{"name":"Czechia","code":"CZ"},{"name":"Denmark","code":"DK"},{"name":"Dominican Republic","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Finland","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germany","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Greece","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Iceland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Italy","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Morocco","code":"MA"},{"name":"Nepal","code":"NP"},{"name":"Netherlands","code":"NL"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"North Macedonia","code":"MK"},{"name":"Norway","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Poland","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"South Africa","code":"ZA"},{"name":"South Korea","code":"KR"},{"name":"Spain","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sweden","code":"SE"},{"name":"Switzerland","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkey","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"United Arab Emirates","code":"AE"},{"name":"United Kingdom","code":"GB"},{"name":"United States","code":"US"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/en_GB.json b/static/geolocations/en_GB.json
index 38f58fc91187d..1768c93547857 100644
--- a/static/geolocations/en_GB.json
+++ b/static/geolocations/en_GB.json
@@ -1 +1 @@
-[{"name":"Algeria","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia and Herzegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Croatia","code":"HR"},{"name":"Cyprus","code":"CY"},{"name":"Czechia","code":"CZ"},{"name":"Denmark","code":"DK"},{"name":"Dominican Republic","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Finland","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germany","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Greece","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Iceland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Italy","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Morocco","code":"MA"},{"name":"Nepal","code":"NP"},{"name":"Netherlands","code":"NL"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"North Macedonia","code":"MK"},{"name":"Norway","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Poland","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"South Africa","code":"ZA"},{"name":"South Korea","code":"KR"},{"name":"Spain","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sweden","code":"SE"},{"name":"Switzerland","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkey","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"United Arab Emirates","code":"AE"},{"name":"United Kingdom","code":"GB"},{"name":"United States","code":"US"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Algeria","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia and Herzegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Croatia","code":"HR"},{"name":"Cyprus","code":"CY"},{"name":"Czechia","code":"CZ"},{"name":"Denmark","code":"DK"},{"name":"Dominican Republic","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Finland","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germany","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Greece","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Iceland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Italy","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Morocco","code":"MA"},{"name":"Nepal","code":"NP"},{"name":"Netherlands","code":"NL"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"North Macedonia","code":"MK"},{"name":"Norway","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Poland","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"South Africa","code":"ZA"},{"name":"South Korea","code":"KR"},{"name":"Spain","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sweden","code":"SE"},{"name":"Switzerland","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkey","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"United Arab Emirates","code":"AE"},{"name":"United Kingdom","code":"GB"},{"name":"United States","code":"US"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/es-MX.json b/static/geolocations/es-MX.json
new file mode 100644
index 0000000000000..b1c2fd54f5685
--- /dev/null
+++ b/static/geolocations/es-MX.json
@@ -0,0 +1 @@
+[{"name":"Alemania","code":"DE"},{"name":"Arabia Saudita","code":"SA"},{"name":"Argelia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaiyán","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladés","code":"BD"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia y Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboya","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipto","code":"EG"},{"name":"El Líbano","code":"LB"},{"name":"El Salvador","code":"SV"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Holanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japón","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kazajstán","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"La India","code":"IN"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia del Norte","code":"MK"},{"name":"Malasia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marruecos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldavia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nueva Zelanda","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pakistán","code":"PK"},{"name":"Panamá","code":"PA"},{"name":"Papúa-Nueva Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Checa","code":"CZ"},{"name":"República Dominicana","code":"DO"},{"name":"Rumania","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suiza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Túnez","code":"TN"},{"name":"Türkiye","code":"TR"},{"name":"Ucrania","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/es.json b/static/geolocations/es.json
index ab3285af59542..87489a00edeef 100644
--- a/static/geolocations/es.json
+++ b/static/geolocations/es.json
@@ -1 +1 @@
-[{"name":"Alemania","code":"DE"},{"name":"Arabia Saudí","code":"SA"},{"name":"Argelia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaiyán","code":"AZ"},{"name":"Bangladesh","code":"BD"},{"name":"Baréin","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia y Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboya","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Chequia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipto","code":"EG"},{"name":"El Líbano","code":"LB"},{"name":"El Salvador","code":"SV"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japón","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kazajistán","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"La India","code":"IN"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia del Norte","code":"MK"},{"name":"Malasia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marruecos","code":"MA"},{"name":"México","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nueva Zelanda","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Países Bajos","code":"NL"},{"name":"Pakistán","code":"PK"},{"name":"Panamá","code":"PA"},{"name":"Papúa-Nueva Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Rumanía","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suiza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Túnez","code":"TN"},{"name":"Turquía","code":"TR"},{"name":"Ucrania","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabue","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alemania","code":"DE"},{"name":"Arabia Saudí","code":"SA"},{"name":"Argelia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaiyán","code":"AZ"},{"name":"Bangladesh","code":"BD"},{"name":"Baréin","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia y Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboya","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Chequia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipto","code":"EG"},{"name":"El Líbano","code":"LB"},{"name":"El Salvador","code":"SV"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japón","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kazajistán","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"La India","code":"IN"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia del Norte","code":"MK"},{"name":"Malasia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marruecos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldavia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nueva Zelanda","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Países Bajos","code":"NL"},{"name":"Pakistán","code":"PK"},{"name":"Panamá","code":"PA"},{"name":"Papúa-Nueva Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Rumanía","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suiza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Túnez","code":"TN"},{"name":"Turquía","code":"TR"},{"name":"Ucrania","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/es_AR.json b/static/geolocations/es_AR.json
new file mode 100644
index 0000000000000..b1c2fd54f5685
--- /dev/null
+++ b/static/geolocations/es_AR.json
@@ -0,0 +1 @@
+[{"name":"Alemania","code":"DE"},{"name":"Arabia Saudita","code":"SA"},{"name":"Argelia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaiyán","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladés","code":"BD"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia y Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboya","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipto","code":"EG"},{"name":"El Líbano","code":"LB"},{"name":"El Salvador","code":"SV"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Holanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japón","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kazajstán","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"La India","code":"IN"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia del Norte","code":"MK"},{"name":"Malasia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marruecos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldavia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nueva Zelanda","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pakistán","code":"PK"},{"name":"Panamá","code":"PA"},{"name":"Papúa-Nueva Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Checa","code":"CZ"},{"name":"República Dominicana","code":"DO"},{"name":"Rumania","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suiza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Túnez","code":"TN"},{"name":"Türkiye","code":"TR"},{"name":"Ucrania","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/et.json b/static/geolocations/et.json
index 82609ef7960c0..3b72c8b93c62c 100644
--- a/static/geolocations/et.json
+++ b/static/geolocations/et.json
@@ -1 +1 @@
-[{"name":"Alžeeria","code":"DZ"},{"name":"Ameerika Ühendriigid","code":"US"},{"name":"Araabia Ühendemiraadid","code":"AE"},{"name":"Argentiina","code":"AR"},{"name":"Aserbaidžaan","code":"AZ"},{"name":"Austraalia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Boliivia","code":"BO"},{"name":"Bosnia ja Hertsegoviina","code":"BA"},{"name":"Brasiilia","code":"BR"},{"name":"Bulgaaria","code":"BG"},{"name":"Costa Rica","code":"CR"},{"name":"Dominikaani Vabariik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Eesti","code":"EE"},{"name":"Egiptus","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Filipiinid","code":"PH"},{"name":"Ghana","code":"GH"},{"name":"Gruusia","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Hispaania","code":"ES"},{"name":"Holland","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Horvaatia","code":"HR"},{"name":"Iirimaa","code":"IE"},{"name":"Iisrael","code":"IL"},{"name":"India","code":"IN"},{"name":"Indoneesia","code":"ID"},{"name":"Iraak","code":"IQ"},{"name":"Island","code":"IS"},{"name":"Itaalia","code":"IT"},{"name":"Jaapan","code":"JP"},{"name":"Jamaica","code":"JM"},{"name":"Jeemen","code":"YE"},{"name":"Jordaania","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasahstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Keenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kreeka","code":"GR"},{"name":"Kuveit","code":"KW"},{"name":"Küpros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Leedu","code":"LT"},{"name":"Liechtenstein","code":"LI"},{"name":"Liibanon","code":"LB"},{"name":"Liibüa","code":"LY"},{"name":"Luksemburg","code":"LU"},{"name":"Lõuna-Aafrika","code":"ZA"},{"name":"Lõuna-Korea","code":"KR"},{"name":"Läti","code":"LV"},{"name":"Malaisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mehhiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeeria","code":"NG"},{"name":"Norra","code":"NO"},{"name":"Omaan","code":"OM"},{"name":"Paapua Uus-Guinea","code":"PG"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Paraguay","code":"PY"},{"name":"Peruu","code":"PE"},{"name":"Poola","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Prantsusmaa","code":"FR"},{"name":"Puerto Rico","code":"PR"},{"name":"Põhja-Makedoonia","code":"MK"},{"name":"Rootsi","code":"SE"},{"name":"Rumeenia","code":"RO"},{"name":"Saksamaa","code":"DE"},{"name":"Saudi Araabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Slovakkia","code":"SK"},{"name":"Sloveenia","code":"SI"},{"name":"Soome","code":"FI"},{"name":"Sri Lanka","code":"LK"},{"name":"Šveits","code":"CH"},{"name":"Zimbabwe","code":"ZW"},{"name":"Taani","code":"DK"},{"name":"Tai","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tansaania","code":"TZ"},{"name":"Tšehhi","code":"CZ"},{"name":"Tšiili","code":"CL"},{"name":"Tuneesia","code":"TN"},{"name":"Türgi","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungari","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Uus-Meremaa","code":"NZ"},{"name":"Valgevene","code":"BY"},{"name":"Venemaa","code":"RU"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Ühendkuningriik","code":"GB"}]
\ No newline at end of file
+[{"name":"Alžeeria","code":"DZ"},{"name":"Ameerika Ühendriigid","code":"US"},{"name":"Araabia Ühendemiraadid","code":"AE"},{"name":"Argentiina","code":"AR"},{"name":"Aserbaidžaan","code":"AZ"},{"name":"Austraalia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Boliivia","code":"BO"},{"name":"Bosnia ja Hertsegoviina","code":"BA"},{"name":"Brasiilia","code":"BR"},{"name":"Bulgaaria","code":"BG"},{"name":"Costa Rica","code":"CR"},{"name":"Dominikaani Vabariik","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Eesti","code":"EE"},{"name":"Egiptus","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Filipiinid","code":"PH"},{"name":"Ghana","code":"GH"},{"name":"Gruusia","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Hispaania","code":"ES"},{"name":"Holland","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Horvaatia","code":"HR"},{"name":"Iirimaa","code":"IE"},{"name":"Iisrael","code":"IL"},{"name":"India","code":"IN"},{"name":"Indoneesia","code":"ID"},{"name":"Iraak","code":"IQ"},{"name":"Island","code":"IS"},{"name":"Itaalia","code":"IT"},{"name":"Jaapan","code":"JP"},{"name":"Jamaica","code":"JM"},{"name":"Jeemen","code":"YE"},{"name":"Jordaania","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasahstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Keenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kreeka","code":"GR"},{"name":"Kuveit","code":"KW"},{"name":"Küpros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Leedu","code":"LT"},{"name":"Liechtenstein","code":"LI"},{"name":"Liibanon","code":"LB"},{"name":"Liibüa","code":"LY"},{"name":"Luksemburg","code":"LU"},{"name":"Lõuna-Aafrika","code":"ZA"},{"name":"Lõuna-Korea","code":"KR"},{"name":"Läti","code":"LV"},{"name":"Malaisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mehhiko","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeeria","code":"NG"},{"name":"Norra","code":"NO"},{"name":"Omaan","code":"OM"},{"name":"Paapua Uus-Guinea","code":"PG"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Paraguay","code":"PY"},{"name":"Peruu","code":"PE"},{"name":"Poola","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Prantsusmaa","code":"FR"},{"name":"Puerto Rico","code":"PR"},{"name":"Põhja-Makedoonia","code":"MK"},{"name":"Rootsi","code":"SE"},{"name":"Rumeenia","code":"RO"},{"name":"Saksamaa","code":"DE"},{"name":"Saudi Araabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Slovakkia","code":"SK"},{"name":"Sloveenia","code":"SI"},{"name":"Soome","code":"FI"},{"name":"Sri Lanka","code":"LK"},{"name":"Šveits","code":"CH"},{"name":"Zimbabwe","code":"ZW"},{"name":"Taani","code":"DK"},{"name":"Tai","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tansaania","code":"TZ"},{"name":"Tšehhi","code":"CZ"},{"name":"Tšiili","code":"CL"},{"name":"Tuneesia","code":"TN"},{"name":"Türgi","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungari","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Uus-Meremaa","code":"NZ"},{"name":"Valgevene","code":"BY"},{"name":"Venemaa","code":"RU"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Ühendkuningriik","code":"GB"}]
\ No newline at end of file
diff --git a/static/geolocations/eu.json b/static/geolocations/eu.json
index 9593e369c531f..cd029e757de9a 100644
--- a/static/geolocations/eu.json
+++ b/static/geolocations/eu.json
@@ -1 +1 @@
-[{"name":"Alemania","code":"DE"},{"name":"Aljeria","code":"DZ"},{"name":"Ameriketako Estatu Batuak","code":"US"},{"name":"Arabiar Emirerri Batuak","code":"AE"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgika","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Costa Rica","code":"CR"},{"name":"Danimarka","code":"DK"},{"name":"Dominikar Errepublika","code":"DO"},{"name":"Egipto","code":"EG"},{"name":"Ekuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Erresuma Batua","code":"GB"},{"name":"Errumania","code":"RO"},{"name":"Errusia","code":"RU"},{"name":"Eslovakia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"Espainia","code":"ES"},{"name":"Estonia","code":"EE"},{"name":"Filipinak","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Frantzia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grezia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Hego Afrika","code":"ZA"},{"name":"Hego Korea","code":"KR"},{"name":"Herbehereak","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungaria","code":"HU"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Ipar Mazedonia","code":"MK"},{"name":"Irak","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kanada","code":"CA"},{"name":"Kanbodia","code":"KH"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolonbia","code":"CO"},{"name":"Kroazia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxenburgo","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norvegia","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ginea Berria","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suedia","code":"SE"},{"name":"Suitza","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailandia","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkia","code":"TR"},{"name":"Txekia","code":"CZ"},{"name":"Txile","code":"CL"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zeelanda Berria","code":"NZ"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zipre","code":"CY"}]
\ No newline at end of file
+[{"name":"Alemania","code":"DE"},{"name":"Aljeria","code":"DZ"},{"name":"Ameriketako Estatu Batuak","code":"US"},{"name":"Arabiar Emirerri Batuak","code":"AE"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgika","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Costa Rica","code":"CR"},{"name":"Danimarka","code":"DK"},{"name":"Dominikar Errepublika","code":"DO"},{"name":"Egipto","code":"EG"},{"name":"Ekuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Erresuma Batua","code":"GB"},{"name":"Errumania","code":"RO"},{"name":"Errusia","code":"RU"},{"name":"Eslovakia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"Espainia","code":"ES"},{"name":"Estonia","code":"EE"},{"name":"Filipinak","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Frantzia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grezia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Hego Afrika","code":"ZA"},{"name":"Hego Korea","code":"KR"},{"name":"Herbehereak","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungaria","code":"HU"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Ipar Mazedonia","code":"MK"},{"name":"Irak","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Jordania","code":"JO"},{"name":"Kanada","code":"CA"},{"name":"Kanbodia","code":"KH"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolonbia","code":"CO"},{"name":"Kroazia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Libano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxenburgo","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Moldavia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norvegia","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ginea Berria","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suedia","code":"SE"},{"name":"Suitza","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailandia","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turkia","code":"TR"},{"name":"Txekia","code":"CZ"},{"name":"Txile","code":"CL"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zeelanda Berria","code":"NZ"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zipre","code":"CY"}]
\ No newline at end of file
diff --git a/static/geolocations/fa.json b/static/geolocations/fa.json
new file mode 100644
index 0000000000000..bdf1994d95680
--- /dev/null
+++ b/static/geolocations/fa.json
@@ -0,0 +1 @@
+[{"name":"آذربایجان","code":"AZ"},{"name":"آرژانتین","code":"AR"},{"name":"آفریقای جنوبی","code":"ZA"},{"name":"آلمان","code":"DE"},{"name":"اتریش","code":"AT"},{"name":"اردن","code":"JO"},{"name":"اسپانیا","code":"ES"},{"name":"استرالیا","code":"AU"},{"name":"استونی","code":"EE"},{"name":"اسرائیل","code":"IL"},{"name":"اسلواکی","code":"SK"},{"name":"اسلوونی","code":"SI"},{"name":"اکراین","code":"UA"},{"name":"اکوادور","code":"EC"},{"name":"الجزایر","code":"DZ"},{"name":"السالوادور","code":"SV"},{"name":"امارات متحدهٔ عربی","code":"AE"},{"name":"اندونزی","code":"ID"},{"name":"انگلستان","code":"GB"},{"name":"اوروگوئه","code":"UY"},{"name":"اوگاندا","code":"UG"},{"name":"ایالات متحده","code":"US"},{"name":"ایتالیا","code":"IT"},{"name":"ایرلند","code":"IE"},{"name":"ایسلند","code":"IS"},{"name":"بحرین","code":"BH"},{"name":"برزیل","code":"BR"},{"name":"بلاروس","code":"BY"},{"name":"بلژیک","code":"BE"},{"name":"بلغارستان","code":"BG"},{"name":"بنگلادش","code":"BD"},{"name":"بوسنی و هرزگوین","code":"BA"},{"name":"بولیوی","code":"BO"},{"name":"پاپوآ گینه نو","code":"PG"},{"name":"پاراگوئه","code":"PY"},{"name":"پاکستان","code":"PK"},{"name":"پاناما","code":"PA"},{"name":"پرتغالی","code":"PT"},{"name":"پرو","code":"PE"},{"name":"پورتوریکو","code":"PR"},{"name":"تانزانیا","code":"TZ"},{"name":"تایلند","code":"TH"},{"name":"تایوان","code":"TW"},{"name":"ترکیه","code":"TR"},{"name":"تونس","code":"TN"},{"name":"جامائیکا","code":"JM"},{"name":"جمهوری چک","code":"CZ"},{"name":"جمهوری دومینیکن","code":"DO"},{"name":"دانمارک","code":"DK"},{"name":"روسیه","code":"RU"},{"name":"رومانی","code":"RO"},{"name":"زیمبابوه","code":"ZW"},{"name":"ژاپن","code":"JP"},{"name":"سری لانکا","code":"LK"},{"name":"سنگاپور","code":"SG"},{"name":"سنگال","code":"SN"},{"name":"سوئد","code":"SE"},{"name":"سوئیس","code":"CH"},{"name":"شیلی","code":"CL"},{"name":"صربستان","code":"RS"},{"name":"عراق","code":"IQ"},{"name":"عربستان سعودی","code":"SA"},{"name":"عمان","code":"OM"},{"name":"غنا","code":"GH"},{"name":"فرانسه","code":"FR"},{"name":"فنلاند","code":"FI"},{"name":"فیلیپین","code":"PH"},{"name":"قبرس","code":"CY"},{"name":"قزاقستان","code":"KZ"},{"name":"قطر","code":"QA"},{"name":"کاستاریکا","code":"CR"},{"name":"کانادا","code":"CA"},{"name":"کرواسی","code":"HR"},{"name":"کرهٔ جنوبی","code":"KR"},{"name":"کلمبیا","code":"CO"},{"name":"کمبوجیه","code":"KH"},{"name":"کنیا","code":"KE"},{"name":"کویت","code":"KW"},{"name":"گرجستان","code":"GE"},{"name":"گواتمالا","code":"GT"},{"name":"لائوس","code":"LA"},{"name":"لبنان","code":"LB"},{"name":"لتونی","code":"LV"},{"name":"لوکزامبورگ","code":"LU"},{"name":"لهستان","code":"PL"},{"name":"لیبی","code":"LY"},{"name":"لیتوانی","code":"LT"},{"name":"لیختن اشتاین","code":"LI"},{"name":"مالت","code":"MT"},{"name":"مالزی","code":"MY"},{"name":"مجارستان","code":"HU"},{"name":"مراکش","code":"MA"},{"name":"مصر","code":"EG"},{"name":"مقدونیه شمالی","code":"MK"},{"name":"مکزیک","code":"MX"},{"name":"مولداوی","code":"MD"},{"name":"مونتهنگرو","code":"ME"},{"name":"نپال","code":"NP"},{"name":"نروژ","code":"NO"},{"name":"نیجریه","code":"NG"},{"name":"نیکاراگوئه","code":"NI"},{"name":"نیوزلند","code":"NZ"},{"name":"ونزوئلا","code":"VE"},{"name":"ویتنام","code":"VN"},{"name":"هلند","code":"NL"},{"name":"هند","code":"IN"},{"name":"هندوراس","code":"HN"},{"name":"هنگ کنگ","code":"HK"},{"name":"یمن","code":"YE"},{"name":"یونان","code":"GR"}]
\ No newline at end of file
diff --git a/static/geolocations/fi.json b/static/geolocations/fi.json
index 9a1436b8a25e3..8ee6fa4ce28a1 100644
--- a/static/geolocations/fi.json
+++ b/static/geolocations/fi.json
@@ -1 +1 @@
-[{"name":"Alankomaat","code":"NL"},{"name":"Algeria","code":"DZ"},{"name":"Arabiemiirikunnat","code":"AE"},{"name":"Argentiina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Azerbaidžan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia ja Hertsegovina","code":"BA"},{"name":"Brasilia","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Dominikaaninen tasavalta","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypti","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Espanja","code":"ES"},{"name":"Etelä-Afrikka","code":"ZA"},{"name":"Etelä-Korea","code":"KR"},{"name":"Filippiinit","code":"PH"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indonesia","code":"ID"},{"name":"Intia","code":"IN"},{"name":"Irak","code":"IQ"},{"name":"Irlanti","code":"IE"},{"name":"Islanti","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Itävalta","code":"AT"},{"name":"Jamaika","code":"JM"},{"name":"Japani","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordania","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kreikka","code":"GR"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Liettua","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malesia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norja","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Uusi-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pohjois-Makedonia","code":"MK"},{"name":"Portugali","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Puola","code":"PL"},{"name":"Qatar","code":"QA"},{"name":"Ranska","code":"FR"},{"name":"Romania","code":"RO"},{"name":"Ruotsi","code":"SE"},{"name":"Saksa","code":"DE"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suomi","code":"FI"},{"name":"Sveitsi","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tansania","code":"TZ"},{"name":"Tanska","code":"DK"},{"name":"Thaimaa","code":"TH"},{"name":"Tšekki","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Turkki","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Unkari","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Uusi-Seelanti","code":"NZ"},{"name":"Valko-Venäjä","code":"BY"},{"name":"Venezuela","code":"VE"},{"name":"Venäjä","code":"RU"},{"name":"Vietnam","code":"VN"},{"name":"Viro","code":"EE"},{"name":"Yhdistynyt kuningaskunta","code":"GB"},{"name":"Yhdysvallat","code":"US"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alankomaat","code":"NL"},{"name":"Algeria","code":"DZ"},{"name":"Arabiemiirikunnat","code":"AE"},{"name":"Argentiina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Azerbaidžan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia ja Hertsegovina","code":"BA"},{"name":"Brasilia","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Dominikaaninen tasavalta","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypti","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Espanja","code":"ES"},{"name":"Etelä-Afrikka","code":"ZA"},{"name":"Etelä-Korea","code":"KR"},{"name":"Filippiinit","code":"PH"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indonesia","code":"ID"},{"name":"Intia","code":"IN"},{"name":"Irak","code":"IQ"},{"name":"Irlanti","code":"IE"},{"name":"Islanti","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Itävalta","code":"AT"},{"name":"Jamaika","code":"JM"},{"name":"Japani","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordania","code":"JO"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kreikka","code":"GR"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Liettua","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malesia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norja","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Uusi-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pohjois-Makedonia","code":"MK"},{"name":"Portugali","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Puola","code":"PL"},{"name":"Qatar","code":"QA"},{"name":"Ranska","code":"FR"},{"name":"Romania","code":"RO"},{"name":"Ruotsi","code":"SE"},{"name":"Saksa","code":"DE"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suomi","code":"FI"},{"name":"Sveitsi","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tansania","code":"TZ"},{"name":"Tanska","code":"DK"},{"name":"Thaimaa","code":"TH"},{"name":"Tšekki","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Turkki","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Unkari","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Uusi-Seelanti","code":"NZ"},{"name":"Valko-Venäjä","code":"BY"},{"name":"Venezuela","code":"VE"},{"name":"Venäjä","code":"RU"},{"name":"Vietnam","code":"VN"},{"name":"Viro","code":"EE"},{"name":"Yhdistynyt kuningaskunta","code":"GB"},{"name":"Yhdysvallat","code":"US"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/fr-FR.json b/static/geolocations/fr-FR.json
index 5f3505abe7411..9d130cd1cb059 100644
--- a/static/geolocations/fr-FR.json
+++ b/static/geolocations/fr-FR.json
@@ -1 +1 @@
-[{"name":"Afrique du Sud","code":"ZA"},{"name":"Algérie","code":"DZ"},{"name":"Allemagne","code":"DE"},{"name":"Arabie saoudite","code":"SA"},{"name":"Argentine","code":"AR"},{"name":"Australie","code":"AU"},{"name":"Autriche","code":"AT"},{"name":"Azerbaïdjan","code":"AZ"},{"name":"Bahreïn","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgique","code":"BE"},{"name":"Biélorussie","code":"BY"},{"name":"Bolivie","code":"BO"},{"name":"Bosnie-Herzégovine","code":"BA"},{"name":"Brésil","code":"BR"},{"name":"Bulgarie","code":"BG"},{"name":"Cambodge","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chili","code":"CL"},{"name":"Chypre","code":"CY"},{"name":"Colombie","code":"CO"},{"name":"Corée du Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croatie","code":"HR"},{"name":"Danemark","code":"DK"},{"name":"Égypte","code":"EG"},{"name":"Émirats Arabes Unis","code":"AE"},{"name":"Équateur","code":"EC"},{"name":"Espagne","code":"ES"},{"name":"Estonie","code":"EE"},{"name":"États-Unis","code":"US"},{"name":"Finlande","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grèce","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongrie","code":"HU"},{"name":"Inde","code":"IN"},{"name":"Indonésie","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irlande","code":"IE"},{"name":"Islande","code":"IS"},{"name":"Israël","code":"IL"},{"name":"Italie","code":"IT"},{"name":"Jamaïque","code":"JM"},{"name":"Japon","code":"JP"},{"name":"Jordanie","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Koweït","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettonie","code":"LV"},{"name":"Liban","code":"LB"},{"name":"Libye","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituanie","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Macédoine du Nord","code":"MK"},{"name":"Malaisie","code":"MY"},{"name":"Malte","code":"MT"},{"name":"Maroc","code":"MA"},{"name":"Mexique","code":"MX"},{"name":"Monténégro","code":"ME"},{"name":"Népal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvège","code":"NO"},{"name":"Nouvelle-Zélande","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Ouganda","code":"UG"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papouasie-Nouvelle Guinée","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Pays-Bas","code":"NL"},{"name":"Pérou","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Pologne","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Qatar","code":"QA"},{"name":"République Dominicaine","code":"DO"},{"name":"Roumanie","code":"RO"},{"name":"Royaume-Uni","code":"GB"},{"name":"Russie","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Sénégal","code":"SN"},{"name":"Serbie","code":"RS"},{"name":"Singapour","code":"SG"},{"name":"Slovaquie","code":"SK"},{"name":"Slovénie","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suède","code":"SE"},{"name":"Suisse","code":"CH"},{"name":"Taïwan","code":"TW"},{"name":"Tanzanie","code":"TZ"},{"name":"Tchéquie","code":"CZ"},{"name":"Thaïlande","code":"TH"},{"name":"Tunisie","code":"TN"},{"name":"Turquie","code":"TR"},{"name":"Ukraine","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yémen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Afrique du Sud","code":"ZA"},{"name":"Algérie","code":"DZ"},{"name":"Allemagne","code":"DE"},{"name":"Arabie saoudite","code":"SA"},{"name":"Argentine","code":"AR"},{"name":"Australie","code":"AU"},{"name":"Autriche","code":"AT"},{"name":"Azerbaïdjan","code":"AZ"},{"name":"Bahreïn","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgique","code":"BE"},{"name":"Biélorussie","code":"BY"},{"name":"Bolivie","code":"BO"},{"name":"Bosnie-Herzégovine","code":"BA"},{"name":"Brésil","code":"BR"},{"name":"Bulgarie","code":"BG"},{"name":"Cambodge","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chili","code":"CL"},{"name":"Chypre","code":"CY"},{"name":"Colombie","code":"CO"},{"name":"Corée du Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croatie","code":"HR"},{"name":"Danemark","code":"DK"},{"name":"Égypte","code":"EG"},{"name":"Émirats Arabes Unis","code":"AE"},{"name":"Équateur","code":"EC"},{"name":"Espagne","code":"ES"},{"name":"Estonie","code":"EE"},{"name":"États-Unis","code":"US"},{"name":"Finlande","code":"FI"},{"name":"France","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grèce","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongrie","code":"HU"},{"name":"Inde","code":"IN"},{"name":"Indonésie","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irlande","code":"IE"},{"name":"Islande","code":"IS"},{"name":"Israël","code":"IL"},{"name":"Italie","code":"IT"},{"name":"Jamaïque","code":"JM"},{"name":"Japon","code":"JP"},{"name":"Jordanie","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Koweït","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettonie","code":"LV"},{"name":"Liban","code":"LB"},{"name":"Libye","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituanie","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Macédoine du Nord","code":"MK"},{"name":"Malaisie","code":"MY"},{"name":"Malte","code":"MT"},{"name":"Maroc","code":"MA"},{"name":"Mexique","code":"MX"},{"name":"Moldavie","code":"MD"},{"name":"Monténégro","code":"ME"},{"name":"Népal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvège","code":"NO"},{"name":"Nouvelle-Zélande","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Ouganda","code":"UG"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papouasie-Nouvelle Guinée","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Pays-Bas","code":"NL"},{"name":"Pérou","code":"PE"},{"name":"Philippines","code":"PH"},{"name":"Pologne","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Qatar","code":"QA"},{"name":"République Dominicaine","code":"DO"},{"name":"Roumanie","code":"RO"},{"name":"Royaume-Uni","code":"GB"},{"name":"Russie","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Sénégal","code":"SN"},{"name":"Serbie","code":"RS"},{"name":"Singapour","code":"SG"},{"name":"Slovaquie","code":"SK"},{"name":"Slovénie","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suède","code":"SE"},{"name":"Suisse","code":"CH"},{"name":"Taïwan","code":"TW"},{"name":"Tanzanie","code":"TZ"},{"name":"Tchéquie","code":"CZ"},{"name":"Thaïlande","code":"TH"},{"name":"Tunisie","code":"TN"},{"name":"Turquie","code":"TR"},{"name":"Ukraine","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yémen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/gl.json b/static/geolocations/gl.json
index b9e95f13a9efe..a1296bc1f22d6 100644
--- a/static/geolocations/gl.json
+++ b/static/geolocations/gl.json
@@ -1 +1 @@
-[{"name":"Acerbaixán","code":"AZ"},{"name":"Alemaña","code":"DE"},{"name":"Alxeria","code":"DZ"},{"name":"Arabia Saudita","code":"SA"},{"name":"Arxentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Bélxica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia e Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboxa","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Casaquistán","code":"KZ"},{"name":"Chequia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Cimbabue","code":"ZW"},{"name":"Colombia","code":"CO"},{"name":"Corea do Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Exipto","code":"EG"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Iemen","code":"YE"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia do Norte","code":"MK"},{"name":"Malaisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nixeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelandia","code":"NZ"},{"name":"O Salvador","code":"SV"},{"name":"Omán","code":"OM"},{"name":"Países Baixos","code":"NL"},{"name":"Panamá","code":"PA"},{"name":"Papúa Nova Guinea","code":"PG"},{"name":"Paquistán","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Romanía","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suíza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Tunisia","code":"TN"},{"name":"Turquía","code":"TR"},{"name":"Ucraína","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Xamaica","code":"JM"},{"name":"Xapón","code":"JP"},{"name":"Xeorxia","code":"GE"},{"name":"Xordania","code":"JO"}]
\ No newline at end of file
+[{"name":"Acerbaixán","code":"AZ"},{"name":"Alemaña","code":"DE"},{"name":"Alxeria","code":"DZ"},{"name":"Arabia Saudita","code":"SA"},{"name":"Arxentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Bélxica","code":"BE"},{"name":"Bielorrusia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia e Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Camboxa","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Casaquistán","code":"KZ"},{"name":"Chequia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Cimbabue","code":"ZW"},{"name":"Colombia","code":"CO"},{"name":"Corea do Sur","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croacia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Emiratos Árabes Unidos","code":"AE"},{"name":"Eslovaquia","code":"SK"},{"name":"Eslovenia","code":"SI"},{"name":"España","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estonia","code":"EE"},{"name":"Exipto","code":"EG"},{"name":"Filipinas","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungría","code":"HU"},{"name":"Iemen","code":"YE"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedonia do Norte","code":"MK"},{"name":"Malaisia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nixeria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelandia","code":"NZ"},{"name":"O Salvador","code":"SV"},{"name":"Omán","code":"OM"},{"name":"Países Baixos","code":"NL"},{"name":"Panamá","code":"PA"},{"name":"Papúa Nova Guinea","code":"PG"},{"name":"Paquistán","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Qatar","code":"QA"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Romanía","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Sudáfrica","code":"ZA"},{"name":"Suecia","code":"SE"},{"name":"Suíza","code":"CH"},{"name":"Tailandia","code":"TH"},{"name":"Taiwán","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Tunisia","code":"TN"},{"name":"Turquía","code":"TR"},{"name":"Ucraína","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Xamaica","code":"JM"},{"name":"Xapón","code":"JP"},{"name":"Xeorxia","code":"GE"},{"name":"Xordania","code":"JO"}]
\ No newline at end of file
diff --git a/static/geolocations/he.json b/static/geolocations/he.json
new file mode 100644
index 0000000000000..caa484bb980f9
--- /dev/null
+++ b/static/geolocations/he.json
@@ -0,0 +1 @@
+[{"name":"אוגנדה","code":"UG"},{"name":"אוסטריה","code":"AT"},{"name":"אוסטרליה","code":"AU"},{"name":"אוקראינה","code":"UA"},{"name":"אורוגוואי","code":"UY"},{"name":"אזרביג'ן","code":"AZ"},{"name":"איחוד האמירויות הערביות","code":"AE"},{"name":"איטליה","code":"IT"},{"name":"אינדונזיה","code":"ID"},{"name":"איסלנד","code":"IS"},{"name":"אירלנד","code":"IE"},{"name":"אל סלבדור","code":"SV"},{"name":"אלג'יריה","code":"DZ"},{"name":"אסטוניה","code":"EE"},{"name":"אקוודור","code":"EC"},{"name":"ארגנטינה","code":"AR"},{"name":"ארצות הברית","code":"US"},{"name":"בולגריה","code":"BG"},{"name":"בוליביה","code":"BO"},{"name":"בוסניה והרצוגובינה","code":"BA"},{"name":"בחריין","code":"BH"},{"name":"בלגיה","code":"BE"},{"name":"בלרוס","code":"BY"},{"name":"בנגלדש","code":"BD"},{"name":"ברזיל","code":"BR"},{"name":"בריטניה","code":"GB"},{"name":"ג'מייקה","code":"JM"},{"name":"גאנה","code":"GH"},{"name":"גווטמלה","code":"GT"},{"name":"גיאורגיה","code":"GE"},{"name":"גרמניה","code":"DE"},{"name":"דנמרק","code":"DK"},{"name":"דרום אפריקה","code":"ZA"},{"name":"דרום קוריאה","code":"KR"},{"name":"הודו","code":"IN"},{"name":"הולנד","code":"NL"},{"name":"הונג קונג","code":"HK"},{"name":"הונגריה","code":"HU"},{"name":"הונדורס","code":"HN"},{"name":"הפיליפינים","code":"PH"},{"name":"הרפובליקה הדומיניקנית","code":"DO"},{"name":"וייטנאם","code":"VN"},{"name":"ונצואלה","code":"VE"},{"name":"זימבבואה","code":"ZW"},{"name":"טורקיה","code":"TR"},{"name":"טייוואן","code":"TW"},{"name":"טנזניה","code":"TZ"},{"name":"יוון","code":"GR"},{"name":"יפן","code":"JP"},{"name":"ירדן","code":"JO"},{"name":"ישראל","code":"IL"},{"name":"כוויית","code":"KW"},{"name":"לאוס","code":"LA"},{"name":"לבנון","code":"LB"},{"name":"לוב","code":"LY"},{"name":"לוקסמבורג","code":"LU"},{"name":"לטביה","code":"LV"},{"name":"ליטא","code":"LT"},{"name":"ליכטנשטיין","code":"LI"},{"name":"מולדובה","code":"MD"},{"name":"מונטנגרו","code":"ME"},{"name":"מלזיה","code":"MY"},{"name":"מלטה","code":"MT"},{"name":"מצרים","code":"EG"},{"name":"מקדוניה הצפונית","code":"MK"},{"name":"מקסיקו","code":"MX"},{"name":"מרוקו","code":"MA"},{"name":"נורווגיה","code":"NO"},{"name":"ניגריה","code":"NG"},{"name":"ניו זילנד","code":"NZ"},{"name":"ניקרגואה","code":"NI"},{"name":"נפאל","code":"NP"},{"name":"סינגפור","code":"SG"},{"name":"סלובניה","code":"SI"},{"name":"סלובקיה","code":"SK"},{"name":"סנגל","code":"SN"},{"name":"ספרד","code":"ES"},{"name":"סרביה","code":"RS"},{"name":"סרי לנקה","code":"LK"},{"name":"עומאן","code":"OM"},{"name":"עירק","code":"IQ"},{"name":"ערב הסעודית","code":"SA"},{"name":"פוארטו ריקו","code":"PR"},{"name":"פולין","code":"PL"},{"name":"פורטוגל","code":"PT"},{"name":"פינלנד","code":"FI"},{"name":"פנמה","code":"PA"},{"name":"פפואה גיניאה החדשה","code":"PG"},{"name":"פקיסטן","code":"PK"},{"name":"פרגוואי","code":"PY"},{"name":"פרו","code":"PE"},{"name":"צ'ילה","code":"CL"},{"name":"צ'כיה","code":"CZ"},{"name":"צרפת","code":"FR"},{"name":"קולומביה","code":"CO"},{"name":"קוסטה ריקה","code":"CR"},{"name":"קזחסטן","code":"KZ"},{"name":"קטאר","code":"QA"},{"name":"קמבודיה","code":"KH"},{"name":"קנדה","code":"CA"},{"name":"קניה","code":"KE"},{"name":"קפריסין","code":"CY"},{"name":"קרואטיה","code":"HR"},{"name":"רומניה","code":"RO"},{"name":"רוסיה","code":"RU"},{"name":"שוודיה","code":"SE"},{"name":"שווייץ","code":"CH"},{"name":"תאילנד","code":"TH"},{"name":"תוניסיה","code":"TN"},{"name":"תימן","code":"YE"}]
\ No newline at end of file
diff --git a/static/geolocations/hr.json b/static/geolocations/hr.json
index f6c3ef5a19793..8c25d48b3cae1 100644
--- a/static/geolocations/hr.json
+++ b/static/geolocations/hr.json
@@ -1 +1 @@
-[{"name":"Alžir","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australija","code":"AU"},{"name":"Austrija","code":"AT"},{"name":"Azerbejdžan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladeš","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Bjelorusija","code":"BY"},{"name":"Bolivija","code":"BO"},{"name":"Bosna i Hercegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bugarska","code":"BG"},{"name":"Cipar","code":"CY"},{"name":"Crna Gora","code":"ME"},{"name":"Češka","code":"CZ"},{"name":"Čile","code":"CL"},{"name":"Danska","code":"DK"},{"name":"Dominikanska Republika","code":"DO"},{"name":"Egipat","code":"EG"},{"name":"Ekvador","code":"EC"},{"name":"Estonija","code":"EE"},{"name":"Filipini","code":"PH"},{"name":"Finska","code":"FI"},{"name":"Francuska","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Grčka","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hrvatska","code":"HR"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irska","code":"IE"},{"name":"Island","code":"IS"},{"name":"Italija","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Južna Afrika","code":"ZA"},{"name":"Južna Koreja","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kolumbija","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lihtenštajn","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Mađarska","code":"HU"},{"name":"Malezija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Nepal","code":"NP"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Nizozemska","code":"NL"},{"name":"Norveška","code":"NO"},{"name":"Novi Zeland","code":"NZ"},{"name":"Njemačka","code":"DE"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nova Gvineja","code":"PG"},{"name":"Paragvaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poljska","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Rumunjska","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Saudijska Arabija","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Singapur","code":"SG"},{"name":"Sjedinjene Američke Države","code":"US"},{"name":"Sjeverna Makedonija","code":"MK"},{"name":"Slovačka","code":"SK"},{"name":"Slovenija","code":"SI"},{"name":"Srbija","code":"RS"},{"name":"Španjolska","code":"ES"},{"name":"Šri Lanka","code":"LK"},{"name":"Švedska","code":"SE"},{"name":"Švicarska","code":"CH"},{"name":"Tajland","code":"TH"},{"name":"Tajvan","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunis","code":"TN"},{"name":"Turska","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ujedinjeni Arapski Emirati","code":"AE"},{"name":"Ukrajina","code":"UA"},{"name":"Urugvaj","code":"UY"},{"name":"Velika Britanija","code":"GB"},{"name":"Venezuela","code":"VE"},{"name":"Vijetnam","code":"VN"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alžir","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australija","code":"AU"},{"name":"Austrija","code":"AT"},{"name":"Azerbajdžan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladeš","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Bjelorusija","code":"BY"},{"name":"Bolivija","code":"BO"},{"name":"Bosna i Hercegovina","code":"BA"},{"name":"Brazil","code":"BR"},{"name":"Bugarska","code":"BG"},{"name":"Cipar","code":"CY"},{"name":"Crna Gora","code":"ME"},{"name":"Češka","code":"CZ"},{"name":"Čile","code":"CL"},{"name":"Danska","code":"DK"},{"name":"Dominikanska Republika","code":"DO"},{"name":"Egipat","code":"EG"},{"name":"Ekvador","code":"EC"},{"name":"Estonija","code":"EE"},{"name":"Filipini","code":"PH"},{"name":"Finska","code":"FI"},{"name":"Francuska","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Grčka","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hrvatska","code":"HR"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irska","code":"IE"},{"name":"Island","code":"IS"},{"name":"Italija","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Južna Afrika","code":"ZA"},{"name":"Južna Koreja","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kolumbija","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lihtenštajn","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Mađarska","code":"HU"},{"name":"Malezija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Moldavija","code":"MD"},{"name":"Nepal","code":"NP"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Nizozemska","code":"NL"},{"name":"Norveška","code":"NO"},{"name":"Novi Zeland","code":"NZ"},{"name":"Njemačka","code":"DE"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nova Gvineja","code":"PG"},{"name":"Paragvaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poljska","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Rumunjska","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Saudijska Arabija","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Singapur","code":"SG"},{"name":"Sjedinjene Američke Države","code":"US"},{"name":"Sjeverna Makedonija","code":"MK"},{"name":"Slovačka","code":"SK"},{"name":"Slovenija","code":"SI"},{"name":"Srbija","code":"RS"},{"name":"Španjolska","code":"ES"},{"name":"Šri Lanka","code":"LK"},{"name":"Švedska","code":"SE"},{"name":"Švicarska","code":"CH"},{"name":"Tajland","code":"TH"},{"name":"Tajvan","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunis","code":"TN"},{"name":"Turska","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ujedinjeni Arapski Emirati","code":"AE"},{"name":"Ujedinjeno Kraljevstvo","code":"GB"},{"name":"Ukrajina","code":"UA"},{"name":"Urugvaj","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vijetnam","code":"VN"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/hu.json b/static/geolocations/hu.json
index 7d69df6e7acb4..938da0eeaa89a 100644
--- a/static/geolocations/hu.json
+++ b/static/geolocations/hu.json
@@ -1 +1 @@
-[{"name":"Algéria","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Ausztrália","code":"AU"},{"name":"Ausztria","code":"AT"},{"name":"Azerbajdzsán","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Banglades","code":"BD"},{"name":"Belarusz","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolívia","code":"BO"},{"name":"Bosznia és Hercegovina","code":"BA"},{"name":"Brazília","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Ciprus","code":"CY"},{"name":"Costa Rica","code":"CR"},{"name":"Csehország","code":"CZ"},{"name":"Dánia","code":"DK"},{"name":"Dél-Afrika","code":"ZA"},{"name":"Dél-Korea","code":"KR"},{"name":"Dominikai Köztársaság","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egyesült Államok","code":"US"},{"name":"Egyesült Arab Emírségek","code":"AE"},{"name":"Egyesült Királyság","code":"GB"},{"name":"Egyiptom","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Észak-Macedónia","code":"MK"},{"name":"Észtország","code":"EE"},{"name":"Finnország","code":"FI"},{"name":"Franciaország","code":"FR"},{"name":"Fülöp-szigetek","code":"PH"},{"name":"Ghána","code":"GH"},{"name":"Görögország","code":"GR"},{"name":"Grúzia","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Hollandia","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Horvátország","code":"HR"},{"name":"India","code":"IN"},{"name":"Indonézia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Írország","code":"IE"},{"name":"Izland","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamaica","code":"JM"},{"name":"Japán","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordánia","code":"JO"},{"name":"Kambodzsa","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahsztán","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kuvait","code":"KW"},{"name":"Laosz","code":"LA"},{"name":"Lengyelország","code":"PL"},{"name":"Lettország","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litvánia","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Magyarország","code":"HU"},{"name":"Malajzia","code":"MY"},{"name":"Málta","code":"MT"},{"name":"Marokkó","code":"MA"},{"name":"Mexikó","code":"MX"},{"name":"Montenegró","code":"ME"},{"name":"Németország","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Norvégia","code":"NO"},{"name":"Olaszország","code":"IT"},{"name":"Omán","code":"OM"},{"name":"Oroszország","code":"RU"},{"name":"Pakisztán","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Pápua Új-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Portugália","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Románia","code":"RO"},{"name":"Spanyolország","code":"ES"},{"name":"Srí Lanka","code":"LK"},{"name":"Svájc","code":"CH"},{"name":"Svédország","code":"SE"},{"name":"Szaúd-Arábia","code":"SA"},{"name":"Szenegál","code":"SN"},{"name":"Szerbia","code":"RS"},{"name":"Szingapúr","code":"SG"},{"name":"Szlovákia","code":"SK"},{"name":"Szlovénia","code":"SI"},{"name":"Tajvan","code":"TW"},{"name":"Tanzánia","code":"TZ"},{"name":"Thaiföld","code":"TH"},{"name":"Törökország","code":"TR"},{"name":"Tunézia","code":"TN"},{"name":"Uganda","code":"UG"},{"name":"Új-Zéland","code":"NZ"},{"name":"Ukrajna","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Algéria","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Ausztrália","code":"AU"},{"name":"Ausztria","code":"AT"},{"name":"Azerbajdzsán","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Banglades","code":"BD"},{"name":"Belarusz","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Bolívia","code":"BO"},{"name":"Bosznia és Hercegovina","code":"BA"},{"name":"Brazília","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Ciprus","code":"CY"},{"name":"Costa Rica","code":"CR"},{"name":"Csehország","code":"CZ"},{"name":"Dánia","code":"DK"},{"name":"Dél-Afrika","code":"ZA"},{"name":"Dél-Korea","code":"KR"},{"name":"Dominikai Köztársaság","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egyesült Államok","code":"US"},{"name":"Egyesült Arab Emírségek","code":"AE"},{"name":"Egyesült Királyság","code":"GB"},{"name":"Egyiptom","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Észak-Macedónia","code":"MK"},{"name":"Észtország","code":"EE"},{"name":"Finnország","code":"FI"},{"name":"Franciaország","code":"FR"},{"name":"Fülöp-szigetek","code":"PH"},{"name":"Ghána","code":"GH"},{"name":"Görögország","code":"GR"},{"name":"Grúzia","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Hollandia","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Horvátország","code":"HR"},{"name":"India","code":"IN"},{"name":"Indonézia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Írország","code":"IE"},{"name":"Izland","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamaica","code":"JM"},{"name":"Japán","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordánia","code":"JO"},{"name":"Kambodzsa","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahsztán","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kuvait","code":"KW"},{"name":"Laosz","code":"LA"},{"name":"Lengyelország","code":"PL"},{"name":"Lettország","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litvánia","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Magyarország","code":"HU"},{"name":"Malajzia","code":"MY"},{"name":"Málta","code":"MT"},{"name":"Marokkó","code":"MA"},{"name":"Mexikó","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegró","code":"ME"},{"name":"Németország","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Norvégia","code":"NO"},{"name":"Olaszország","code":"IT"},{"name":"Omán","code":"OM"},{"name":"Oroszország","code":"RU"},{"name":"Pakisztán","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Pápua Új-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Portugália","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Románia","code":"RO"},{"name":"Spanyolország","code":"ES"},{"name":"Srí Lanka","code":"LK"},{"name":"Svájc","code":"CH"},{"name":"Svédország","code":"SE"},{"name":"Szaúd-Arábia","code":"SA"},{"name":"Szenegál","code":"SN"},{"name":"Szerbia","code":"RS"},{"name":"Szingapúr","code":"SG"},{"name":"Szlovákia","code":"SK"},{"name":"Szlovénia","code":"SI"},{"name":"Tajvan","code":"TW"},{"name":"Tanzánia","code":"TZ"},{"name":"Thaiföld","code":"TH"},{"name":"Törökország","code":"TR"},{"name":"Tunézia","code":"TN"},{"name":"Uganda","code":"UG"},{"name":"Új-Zéland","code":"NZ"},{"name":"Ukrajna","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/id.json b/static/geolocations/id.json
index 10486f0dae519..7c5174d010a76 100644
--- a/static/geolocations/id.json
+++ b/static/geolocations/id.json
@@ -1 +1 @@
-[{"name":"Afrika Selatan","code":"ZA"},{"name":"Aljazair","code":"DZ"},{"name":"Amerika Serikat","code":"US"},{"name":"Arab Saudi","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belanda","code":"NL"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia dan Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Ceko","code":"CZ"},{"name":"Cile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Denmark","code":"DK"},{"name":"Ekuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Filipina","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungaria","code":"HU"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Inggris","code":"GB"},{"name":"Irak","code":"IQ"},{"name":"Irlandia","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Jepang","code":"JP"},{"name":"Jerman","code":"DE"},{"name":"Kamboja","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolombia","code":"CO"},{"name":"Korea Selatan","code":"KR"},{"name":"Kroasia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Makedonia Utara","code":"MK"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Mesir","code":"EG"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norwegia","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nugini","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polandia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Prancis","code":"FR"},{"name":"Puerto Riko","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Republik Dominika","code":"DO"},{"name":"Rumania","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Selandia Baru","code":"NZ"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Siprus","code":"CY"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spanyol","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Swedia","code":"SE"},{"name":"Swiss","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turki","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uni Emirat Arab","code":"AE"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yaman","code":"YE"},{"name":"Yordania","code":"JO"},{"name":"Yunani","code":"GR"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Afrika Selatan","code":"ZA"},{"name":"Aljazair","code":"DZ"},{"name":"Amerika Serikat","code":"US"},{"name":"Arab Saudi","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belanda","code":"NL"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia dan Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Ceko","code":"CZ"},{"name":"Cile","code":"CL"},{"name":"Costa Rica","code":"CR"},{"name":"Denmark","code":"DK"},{"name":"Ekuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Filipina","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungaria","code":"HU"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Inggris","code":"GB"},{"name":"Irak","code":"IQ"},{"name":"Irlandia","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaika","code":"JM"},{"name":"Jepang","code":"JP"},{"name":"Jerman","code":"DE"},{"name":"Kamboja","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolombia","code":"CO"},{"name":"Korea Selatan","code":"KR"},{"name":"Kroasia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Makedonia Utara","code":"MK"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksiko","code":"MX"},{"name":"Mesir","code":"EG"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norwegia","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nugini","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polandia","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Prancis","code":"FR"},{"name":"Puerto Riko","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Republik Dominika","code":"DO"},{"name":"Rumania","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Selandia Baru","code":"NZ"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Siprus","code":"CY"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spanyol","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Swedia","code":"SE"},{"name":"Swiss","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turki","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uni Emirat Arab","code":"AE"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yaman","code":"YE"},{"name":"Yordania","code":"JO"},{"name":"Yunani","code":"GR"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/is.json b/static/geolocations/is.json
index af6190e987a43..f46e7f12793f6 100644
--- a/static/geolocations/is.json
+++ b/static/geolocations/is.json
@@ -1 +1 @@
-[{"name":"Alsír","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Aserbaídsjan","code":"AZ"},{"name":"Austurríki","code":"AT"},{"name":"Ástralía","code":"AU"},{"name":"Bandaríkin","code":"US"},{"name":"Bangladess","code":"BD"},{"name":"Barein","code":"BH"},{"name":"Belgía","code":"BE"},{"name":"Bosnía og Hersegóvína","code":"BA"},{"name":"Bólivía","code":"BO"},{"name":"Brasilía","code":"BR"},{"name":"Bretland","code":"GB"},{"name":"Búlgaría","code":"BG"},{"name":"Danmörk","code":"DK"},{"name":"Dóminíska lýðveldið","code":"DO"},{"name":"Egyptaland","code":"EG"},{"name":"Eistland","code":"EE"},{"name":"Ekvador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Filippseyjar","code":"PH"},{"name":"Finnland","code":"FI"},{"name":"Frakkland","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Georgía","code":"GE"},{"name":"Grikkland","code":"GR"},{"name":"Gvatemala","code":"GT"},{"name":"Holland","code":"NL"},{"name":"Hondúras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hvíta-Rússland","code":"BY"},{"name":"Indland","code":"IN"},{"name":"Indónesía","code":"ID"},{"name":"Írak","code":"IQ"},{"name":"Írland","code":"IE"},{"name":"Ísland","code":"IS"},{"name":"Ísrael","code":"IL"},{"name":"Ítalía","code":"IT"},{"name":"Jamaíka","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jórdanía","code":"JO"},{"name":"Kambódía","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasakstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Kenía","code":"KE"},{"name":"Kosta Ríka","code":"CR"},{"name":"Kólumbía","code":"CO"},{"name":"Króatía","code":"HR"},{"name":"Kúveit","code":"KW"},{"name":"Kýpur","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Liechtenstein","code":"LI"},{"name":"Litháen","code":"LT"},{"name":"Líbanon","code":"LB"},{"name":"Líbía","code":"LY"},{"name":"Lúxemborg","code":"LU"},{"name":"Malasía","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokkó","code":"MA"},{"name":"Mexíkó","code":"MX"},{"name":"Nepal","code":"NP"},{"name":"Nígería","code":"NG"},{"name":"Níkaragva","code":"NI"},{"name":"Norður-Makedónía","code":"MK"},{"name":"Noregur","code":"NO"},{"name":"Nýja-Sjáland","code":"NZ"},{"name":"Óman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papúa Nýja-Gínea","code":"PG"},{"name":"Paragvæ","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Portúgal","code":"PT"},{"name":"Pólland","code":"PL"},{"name":"Púertó Ríkó","code":"PR"},{"name":"Rúmenía","code":"RO"},{"name":"Rússland","code":"RU"},{"name":"Sameinuðu arabísku furstadæmin","code":"AE"},{"name":"Sádi-Arabía","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbía","code":"RS"},{"name":"Simbabve","code":"ZW"},{"name":"Singapúr","code":"SG"},{"name":"Síle","code":"CL"},{"name":"Slóvakía","code":"SK"},{"name":"Slóvenía","code":"SI"},{"name":"Spánn","code":"ES"},{"name":"Srí Lanka","code":"LK"},{"name":"Suður-Afríka","code":"ZA"},{"name":"Suður-Kórea","code":"KR"},{"name":"Svartfjallaland","code":"ME"},{"name":"Sviss","code":"CH"},{"name":"Svíþjóð","code":"SE"},{"name":"Taívan","code":"TW"},{"name":"Tansanía","code":"TZ"},{"name":"Tékkland","code":"CZ"},{"name":"Túnis","code":"TN"},{"name":"Tyrkland","code":"TR"},{"name":"Tæland","code":"TH"},{"name":"Ungverjaland","code":"HU"},{"name":"Úganda","code":"UG"},{"name":"Úkraína","code":"UA"},{"name":"Úrúgvæ","code":"UY"},{"name":"Venesúela","code":"VE"},{"name":"Víetnam","code":"VN"},{"name":"Þýskaland","code":"DE"}]
\ No newline at end of file
+[{"name":"Alsír","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Aserbaídsjan","code":"AZ"},{"name":"Austurríki","code":"AT"},{"name":"Ástralía","code":"AU"},{"name":"Bandaríkin","code":"US"},{"name":"Bangladess","code":"BD"},{"name":"Barein","code":"BH"},{"name":"Belgía","code":"BE"},{"name":"Bosnía og Hersegóvína","code":"BA"},{"name":"Bólivía","code":"BO"},{"name":"Brasilía","code":"BR"},{"name":"Bretland","code":"GB"},{"name":"Búlgaría","code":"BG"},{"name":"Danmörk","code":"DK"},{"name":"Dóminíska lýðveldið","code":"DO"},{"name":"Egyptaland","code":"EG"},{"name":"Eistland","code":"EE"},{"name":"Ekvador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Filippseyjar","code":"PH"},{"name":"Finnland","code":"FI"},{"name":"Frakkland","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Georgía","code":"GE"},{"name":"Grikkland","code":"GR"},{"name":"Gvatemala","code":"GT"},{"name":"Holland","code":"NL"},{"name":"Hondúras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hvíta-Rússland","code":"BY"},{"name":"Indland","code":"IN"},{"name":"Indónesía","code":"ID"},{"name":"Írak","code":"IQ"},{"name":"Írland","code":"IE"},{"name":"Ísland","code":"IS"},{"name":"Ísrael","code":"IL"},{"name":"Ítalía","code":"IT"},{"name":"Jamaíka","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jórdanía","code":"JO"},{"name":"Kambódía","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kasakstan","code":"KZ"},{"name":"Katar","code":"QA"},{"name":"Kenía","code":"KE"},{"name":"Kosta Ríka","code":"CR"},{"name":"Kólumbía","code":"CO"},{"name":"Króatía","code":"HR"},{"name":"Kúveit","code":"KW"},{"name":"Kýpur","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Liechtenstein","code":"LI"},{"name":"Litháen","code":"LT"},{"name":"Líbanon","code":"LB"},{"name":"Líbía","code":"LY"},{"name":"Lúxemborg","code":"LU"},{"name":"Malasía","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokkó","code":"MA"},{"name":"Mexíkó","code":"MX"},{"name":"Moldóva","code":"MD"},{"name":"Nepal","code":"NP"},{"name":"Nígería","code":"NG"},{"name":"Níkaragva","code":"NI"},{"name":"Norður-Makedónía","code":"MK"},{"name":"Noregur","code":"NO"},{"name":"Nýja-Sjáland","code":"NZ"},{"name":"Óman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papúa Nýja-Gínea","code":"PG"},{"name":"Paragvæ","code":"PY"},{"name":"Perú","code":"PE"},{"name":"Portúgal","code":"PT"},{"name":"Pólland","code":"PL"},{"name":"Púertó Ríkó","code":"PR"},{"name":"Rúmenía","code":"RO"},{"name":"Rússland","code":"RU"},{"name":"Sameinuðu arabísku furstadæmin","code":"AE"},{"name":"Sádi-Arabía","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbía","code":"RS"},{"name":"Simbabve","code":"ZW"},{"name":"Singapúr","code":"SG"},{"name":"Síle","code":"CL"},{"name":"Slóvakía","code":"SK"},{"name":"Slóvenía","code":"SI"},{"name":"Spánn","code":"ES"},{"name":"Srí Lanka","code":"LK"},{"name":"Suður-Afríka","code":"ZA"},{"name":"Suður-Kórea","code":"KR"},{"name":"Svartfjallaland","code":"ME"},{"name":"Sviss","code":"CH"},{"name":"Svíþjóð","code":"SE"},{"name":"Taívan","code":"TW"},{"name":"Tansanía","code":"TZ"},{"name":"Tékkland","code":"CZ"},{"name":"Túnis","code":"TN"},{"name":"Tyrkland","code":"TR"},{"name":"Tæland","code":"TH"},{"name":"Ungverjaland","code":"HU"},{"name":"Úganda","code":"UG"},{"name":"Úkraína","code":"UA"},{"name":"Úrúgvæ","code":"UY"},{"name":"Venesúela","code":"VE"},{"name":"Víetnam","code":"VN"},{"name":"Þýskaland","code":"DE"}]
\ No newline at end of file
diff --git a/static/geolocations/it.json b/static/geolocations/it.json
index c6db6127d8392..7fd9c09cf42fd 100644
--- a/static/geolocations/it.json
+++ b/static/geolocations/it.json
@@ -1 +1 @@
-[{"name":"Algeria","code":"DZ"},{"name":"Arabia Saudita","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaigian","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgio","code":"BE"},{"name":"Bielorussia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Erzegovina","code":"BA"},{"name":"Brasile","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambogia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Cile","code":"CL"},{"name":"Cipro","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croazia","code":"HR"},{"name":"Danimarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egitto","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirati Arabi Uniti","code":"AE"},{"name":"Estonia","code":"EE"},{"name":"Filippine","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germania","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Giamaica","code":"JM"},{"name":"Giappone","code":"JP"},{"name":"Giordania","code":"JO"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islanda","code":"IS"},{"name":"Israele","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Kazakistan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettonia","code":"LV"},{"name":"Libano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Lussemburgo","code":"LU"},{"name":"Macedonia del Nord","code":"MK"},{"name":"Malesia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marocco","code":"MA"},{"name":"Messico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvegia","code":"NO"},{"name":"Nuova Zelanda","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Paesi Bassi","code":"NL"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nuova Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perù","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portogallo","code":"PT"},{"name":"Portorico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regno Unito","code":"GB"},{"name":"Repubblica Ceca","code":"CZ"},{"name":"Repubblica Dominicana","code":"DO"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovacchia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spagna","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Stati Uniti","code":"US"},{"name":"Sudafrica","code":"ZA"},{"name":"Svezia","code":"SE"},{"name":"Svizzera","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailandia","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turchia","code":"TR"},{"name":"Ucraina","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Ungheria","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Algeria","code":"DZ"},{"name":"Arabia Saudita","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaigian","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgio","code":"BE"},{"name":"Bielorussia","code":"BY"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Erzegovina","code":"BA"},{"name":"Brasile","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambogia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Cile","code":"CL"},{"name":"Cipro","code":"CY"},{"name":"Colombia","code":"CO"},{"name":"Corea del Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croazia","code":"HR"},{"name":"Danimarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egitto","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirati Arabi Uniti","code":"AE"},{"name":"Estonia","code":"EE"},{"name":"Filippine","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francia","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germania","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Giamaica","code":"JM"},{"name":"Giappone","code":"JP"},{"name":"Giordania","code":"JO"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islanda","code":"IS"},{"name":"Israele","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Kazakistan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettonia","code":"LV"},{"name":"Libano","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Lussemburgo","code":"LU"},{"name":"Macedonia del Nord","code":"MK"},{"name":"Malesia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marocco","code":"MA"},{"name":"Messico","code":"MX"},{"name":"Moldavia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvegia","code":"NO"},{"name":"Nuova Zelanda","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Paesi Bassi","code":"NL"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nuova Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Perù","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portogallo","code":"PT"},{"name":"Portorico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regno Unito","code":"GB"},{"name":"Repubblica Ceca","code":"CZ"},{"name":"Repubblica Dominicana","code":"DO"},{"name":"Romania","code":"RO"},{"name":"Russia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovacchia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spagna","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Stati Uniti","code":"US"},{"name":"Sudafrica","code":"ZA"},{"name":"Svezia","code":"SE"},{"name":"Svizzera","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailandia","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turchia","code":"TR"},{"name":"Ucraina","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Ungheria","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/ja.json b/static/geolocations/ja.json
index f47ca82e6d36b..87aacb23422a3 100644
--- a/static/geolocations/ja.json
+++ b/static/geolocations/ja.json
@@ -1 +1 @@
-[{"name":"アイスランド","code":"IS"},{"name":"アイルランド","code":"IE"},{"name":"アゼルバイジャン","code":"AZ"},{"name":"アメリカ","code":"US"},{"name":"アラブ首長国連邦","code":"AE"},{"name":"アルジェリア","code":"DZ"},{"name":"アルゼンチン","code":"AR"},{"name":"イエメン","code":"YE"},{"name":"イギリス","code":"GB"},{"name":"イスラエル","code":"IL"},{"name":"イタリア","code":"IT"},{"name":"イラク","code":"IQ"},{"name":"インド","code":"IN"},{"name":"インドネシア","code":"ID"},{"name":"ウガンダ","code":"UG"},{"name":"ウクライナ","code":"UA"},{"name":"ウルグアイ共和国","code":"UY"},{"name":"エクアドル共和国","code":"EC"},{"name":"エジプト","code":"EG"},{"name":"エストニア","code":"EE"},{"name":"エルサルバドル共和国","code":"SV"},{"name":"オーストラリア","code":"AU"},{"name":"オーストリア","code":"AT"},{"name":"オマーン","code":"OM"},{"name":"オランダ","code":"NL"},{"name":"ガーナ","code":"GH"},{"name":"カザフスタン","code":"KZ"},{"name":"カタール","code":"QA"},{"name":"カナダ","code":"CA"},{"name":"カンボジア国","code":"KH"},{"name":"キプロス共和国","code":"CY"},{"name":"ギリシャ","code":"GR"},{"name":"グァテマラ共和国","code":"GT"},{"name":"クウェート","code":"KW"},{"name":"クロアチア","code":"HR"},{"name":"ケニア","code":"KE"},{"name":"コスタリカ共和国","code":"CR"},{"name":"コロンビア","code":"CO"},{"name":"サウジアラビア","code":"SA"},{"name":"ジャマイカ","code":"JM"},{"name":"ジョージア","code":"GE"},{"name":"シンガポール","code":"SG"},{"name":"ジンバブエ","code":"ZW"},{"name":"スイス","code":"CH"},{"name":"スウェーデン","code":"SE"},{"name":"スペイン","code":"ES"},{"name":"スリランカ","code":"LK"},{"name":"スロバキア","code":"SK"},{"name":"スロベニア","code":"SI"},{"name":"セネガル","code":"SN"},{"name":"セルビア","code":"RS"},{"name":"タイ","code":"TH"},{"name":"タンザニア","code":"TZ"},{"name":"チェコ","code":"CZ"},{"name":"チュニジア","code":"TN"},{"name":"チリ","code":"CL"},{"name":"デンマーク","code":"DK"},{"name":"ドイツ","code":"DE"},{"name":"ドミニカ共和国","code":"DO"},{"name":"トルコ","code":"TR"},{"name":"ナイジェリア","code":"NG"},{"name":"ニカラグア共和国","code":"NI"},{"name":"ニュージーランド","code":"NZ"},{"name":"ネパール","code":"NP"},{"name":"ノルウェー","code":"NO"},{"name":"バーレーン","code":"BH"},{"name":"パキスタン","code":"PK"},{"name":"パナマ共和国","code":"PA"},{"name":"パプア ニューギニア","code":"PG"},{"name":"パラグアイ共和国","code":"PY"},{"name":"ハンガリー","code":"HU"},{"name":"バングラディッシュ人民共和国","code":"BD"},{"name":"フィリピン","code":"PH"},{"name":"フィンランド","code":"FI"},{"name":"プエルトリコ","code":"PR"},{"name":"ブラジル","code":"BR"},{"name":"フランス","code":"FR"},{"name":"ブルガリア","code":"BG"},{"name":"ベトナム","code":"VN"},{"name":"ベネズエラ共和国","code":"VE"},{"name":"ベラルーシ","code":"BY"},{"name":"ペルー","code":"PE"},{"name":"ベルギー","code":"BE"},{"name":"ポーランド","code":"PL"},{"name":"ボスニア ヘルツェゴビナ","code":"BA"},{"name":"ボリビア共和国","code":"BO"},{"name":"ポルトガル","code":"PT"},{"name":"ホンジュラス共和国","code":"HN"},{"name":"マルタ","code":"MT"},{"name":"マレーシア","code":"MY"},{"name":"メキシコ","code":"MX"},{"name":"モロッコ","code":"MA"},{"name":"モンテネグロ","code":"ME"},{"name":"ヨルダン","code":"JO"},{"name":"ラオス","code":"LA"},{"name":"ラトビア","code":"LV"},{"name":"リトアニア","code":"LT"},{"name":"リビア","code":"LY"},{"name":"リヒテンシュタイン公国","code":"LI"},{"name":"ルーマニア","code":"RO"},{"name":"ルクセンブルグ","code":"LU"},{"name":"レバノン","code":"LB"},{"name":"ロシア","code":"RU"},{"name":"韓国","code":"KR"},{"name":"香港","code":"HK"},{"name":"台湾","code":"TW"},{"name":"南アフリカ","code":"ZA"},{"name":"日本","code":"JP"},{"name":"北マケドニア","code":"MK"}]
\ No newline at end of file
+[{"name":"アイスランド","code":"IS"},{"name":"アイルランド","code":"IE"},{"name":"アゼルバイジャン","code":"AZ"},{"name":"アメリカ","code":"US"},{"name":"アラブ首長国連邦","code":"AE"},{"name":"アルジェリア","code":"DZ"},{"name":"アルゼンチン","code":"AR"},{"name":"イエメン","code":"YE"},{"name":"イギリス","code":"GB"},{"name":"イスラエル","code":"IL"},{"name":"イタリア","code":"IT"},{"name":"イラク","code":"IQ"},{"name":"インド","code":"IN"},{"name":"インドネシア","code":"ID"},{"name":"ウガンダ","code":"UG"},{"name":"ウクライナ","code":"UA"},{"name":"ウルグアイ共和国","code":"UY"},{"name":"エクアドル共和国","code":"EC"},{"name":"エジプト","code":"EG"},{"name":"エストニア","code":"EE"},{"name":"エルサルバドル共和国","code":"SV"},{"name":"オーストラリア","code":"AU"},{"name":"オーストリア","code":"AT"},{"name":"オマーン","code":"OM"},{"name":"オランダ","code":"NL"},{"name":"ガーナ","code":"GH"},{"name":"カザフスタン","code":"KZ"},{"name":"カタール","code":"QA"},{"name":"カナダ","code":"CA"},{"name":"カンボジア国","code":"KH"},{"name":"キプロス共和国","code":"CY"},{"name":"ギリシャ","code":"GR"},{"name":"グァテマラ共和国","code":"GT"},{"name":"クウェート","code":"KW"},{"name":"クロアチア","code":"HR"},{"name":"ケニア","code":"KE"},{"name":"コスタリカ共和国","code":"CR"},{"name":"コロンビア","code":"CO"},{"name":"サウジアラビア","code":"SA"},{"name":"ジャマイカ","code":"JM"},{"name":"ジョージア","code":"GE"},{"name":"シンガポール","code":"SG"},{"name":"ジンバブエ","code":"ZW"},{"name":"スイス","code":"CH"},{"name":"スウェーデン","code":"SE"},{"name":"スペイン","code":"ES"},{"name":"スリランカ","code":"LK"},{"name":"スロバキア","code":"SK"},{"name":"スロベニア","code":"SI"},{"name":"セネガル","code":"SN"},{"name":"セルビア","code":"RS"},{"name":"タイ","code":"TH"},{"name":"タンザニア","code":"TZ"},{"name":"チェコ","code":"CZ"},{"name":"チュニジア","code":"TN"},{"name":"チリ","code":"CL"},{"name":"デンマーク","code":"DK"},{"name":"ドイツ","code":"DE"},{"name":"ドミニカ共和国","code":"DO"},{"name":"トルコ","code":"TR"},{"name":"ナイジェリア","code":"NG"},{"name":"ニカラグア共和国","code":"NI"},{"name":"ニュージーランド","code":"NZ"},{"name":"ネパール","code":"NP"},{"name":"ノルウェー","code":"NO"},{"name":"バーレーン","code":"BH"},{"name":"パキスタン","code":"PK"},{"name":"パナマ共和国","code":"PA"},{"name":"パプア ニューギニア","code":"PG"},{"name":"パラグアイ共和国","code":"PY"},{"name":"ハンガリー","code":"HU"},{"name":"バングラディッシュ人民共和国","code":"BD"},{"name":"フィリピン","code":"PH"},{"name":"フィンランド","code":"FI"},{"name":"プエルトリコ","code":"PR"},{"name":"ブラジル","code":"BR"},{"name":"フランス","code":"FR"},{"name":"ブルガリア","code":"BG"},{"name":"ベトナム","code":"VN"},{"name":"ベネズエラ共和国","code":"VE"},{"name":"ベラルーシ","code":"BY"},{"name":"ペルー","code":"PE"},{"name":"ベルギー","code":"BE"},{"name":"ポーランド","code":"PL"},{"name":"ボスニア ヘルツェゴビナ","code":"BA"},{"name":"ボリビア共和国","code":"BO"},{"name":"ポルトガル","code":"PT"},{"name":"ホンジュラス共和国","code":"HN"},{"name":"マルタ","code":"MT"},{"name":"マレーシア","code":"MY"},{"name":"メキシコ","code":"MX"},{"name":"モルドバ共和国","code":"MD"},{"name":"モロッコ","code":"MA"},{"name":"モンテネグロ","code":"ME"},{"name":"ヨルダン","code":"JO"},{"name":"ラオス","code":"LA"},{"name":"ラトビア","code":"LV"},{"name":"リトアニア","code":"LT"},{"name":"リビア","code":"LY"},{"name":"リヒテンシュタイン公国","code":"LI"},{"name":"ルーマニア","code":"RO"},{"name":"ルクセンブルグ","code":"LU"},{"name":"レバノン","code":"LB"},{"name":"ロシア","code":"RU"},{"name":"韓国","code":"KR"},{"name":"香港","code":"HK"},{"name":"台湾","code":"TW"},{"name":"南アフリカ","code":"ZA"},{"name":"日本","code":"JP"},{"name":"北マケドニア","code":"MK"}]
\ No newline at end of file
diff --git a/static/geolocations/ko.json b/static/geolocations/ko.json
index 51b9dc362874a..e5fcb68c6fed7 100644
--- a/static/geolocations/ko.json
+++ b/static/geolocations/ko.json
@@ -1 +1 @@
-[{"name":"가나","code":"GH"},{"name":"과테말라","code":"GT"},{"name":"그루지아","code":"GE"},{"name":"그리스","code":"GR"},{"name":"나이지리아","code":"NG"},{"name":"남아프리카","code":"ZA"},{"name":"네덜란드","code":"NL"},{"name":"네팔","code":"NP"},{"name":"노르웨이","code":"NO"},{"name":"뉴질랜드","code":"NZ"},{"name":"니카라과","code":"NI"},{"name":"대만","code":"TW"},{"name":"덴마크","code":"DK"},{"name":"도미니카 공화국","code":"DO"},{"name":"독일","code":"DE"},{"name":"라오스","code":"LA"},{"name":"라트비아","code":"LV"},{"name":"러시아","code":"RU"},{"name":"레바논","code":"LB"},{"name":"루마니아","code":"RO"},{"name":"룩셈부르크","code":"LU"},{"name":"리비아","code":"LY"},{"name":"리투아니아","code":"LT"},{"name":"리히텐슈타인","code":"LI"},{"name":"말레이시아","code":"MY"},{"name":"멕시코","code":"MX"},{"name":"모로코","code":"MA"},{"name":"몬테네그로","code":"ME"},{"name":"몰타","code":"MT"},{"name":"미국","code":"US"},{"name":"바레인","code":"BH"},{"name":"방글라데시","code":"BD"},{"name":"베네수엘라","code":"VE"},{"name":"베트남","code":"VN"},{"name":"벨기에","code":"BE"},{"name":"벨로루시","code":"BY"},{"name":"보스니아-헤르체코비나","code":"BA"},{"name":"볼리비아","code":"BO"},{"name":"북마케도니아","code":"MK"},{"name":"불가리아","code":"BG"},{"name":"브라질","code":"BR"},{"name":"사우디아라비아","code":"SA"},{"name":"사이프러스","code":"CY"},{"name":"세네갈","code":"SN"},{"name":"세르비아","code":"RS"},{"name":"스리랑카","code":"LK"},{"name":"스웨덴","code":"SE"},{"name":"스위스","code":"CH"},{"name":"스페인","code":"ES"},{"name":"슬로바키아","code":"SK"},{"name":"슬로베니아","code":"SI"},{"name":"싱가포르","code":"SG"},{"name":"아랍 에미레이트","code":"AE"},{"name":"아르헨티나","code":"AR"},{"name":"아이슬란드","code":"IS"},{"name":"아일랜드","code":"IE"},{"name":"아제르바이잔","code":"AZ"},{"name":"알제리","code":"DZ"},{"name":"에스토니아","code":"EE"},{"name":"에콰도르","code":"EC"},{"name":"엘살바도르","code":"SV"},{"name":"영국","code":"GB"},{"name":"예멘","code":"YE"},{"name":"오만","code":"OM"},{"name":"오스트리아","code":"AT"},{"name":"온두라스","code":"HN"},{"name":"요르단","code":"JO"},{"name":"우간다","code":"UG"},{"name":"우루과이","code":"UY"},{"name":"우크라이나","code":"UA"},{"name":"이라크","code":"IQ"},{"name":"이스라엘","code":"IL"},{"name":"이집트","code":"EG"},{"name":"이탈리아","code":"IT"},{"name":"인도","code":"IN"},{"name":"인도네시아","code":"ID"},{"name":"일본","code":"JP"},{"name":"자메이카","code":"JM"},{"name":"짐바브웨","code":"ZW"},{"name":"체코","code":"CZ"},{"name":"칠레","code":"CL"},{"name":"카자흐스탄","code":"KZ"},{"name":"카타르","code":"QA"},{"name":"캄보디아","code":"KH"},{"name":"캐나다","code":"CA"},{"name":"케냐","code":"KE"},{"name":"코스타리카","code":"CR"},{"name":"콜롬비아","code":"CO"},{"name":"쿠웨이트","code":"KW"},{"name":"크로아티아","code":"HR"},{"name":"탄자니아","code":"TZ"},{"name":"태국","code":"TH"},{"name":"터키","code":"TR"},{"name":"튀니지","code":"TN"},{"name":"파나마","code":"PA"},{"name":"파라과이","code":"PY"},{"name":"파키스탄","code":"PK"},{"name":"파푸아 뉴기니","code":"PG"},{"name":"페루","code":"PE"},{"name":"포르투갈","code":"PT"},{"name":"폴란드","code":"PL"},{"name":"푸에르토리코","code":"PR"},{"name":"프랑스","code":"FR"},{"name":"핀란드","code":"FI"},{"name":"필리핀","code":"PH"},{"name":"한국","code":"KR"},{"name":"헝가리","code":"HU"},{"name":"호주","code":"AU"},{"name":"홍콩","code":"HK"}]
\ No newline at end of file
+[{"name":"가나","code":"GH"},{"name":"과테말라","code":"GT"},{"name":"그루지아","code":"GE"},{"name":"그리스","code":"GR"},{"name":"나이지리아","code":"NG"},{"name":"남아프리카","code":"ZA"},{"name":"네덜란드","code":"NL"},{"name":"네팔","code":"NP"},{"name":"노르웨이","code":"NO"},{"name":"뉴질랜드","code":"NZ"},{"name":"니카라과","code":"NI"},{"name":"대만","code":"TW"},{"name":"덴마크","code":"DK"},{"name":"도미니카 공화국","code":"DO"},{"name":"독일","code":"DE"},{"name":"라오스","code":"LA"},{"name":"라트비아","code":"LV"},{"name":"러시아","code":"RU"},{"name":"레바논","code":"LB"},{"name":"루마니아","code":"RO"},{"name":"룩셈부르크","code":"LU"},{"name":"리비아","code":"LY"},{"name":"리투아니아","code":"LT"},{"name":"리히텐슈타인","code":"LI"},{"name":"말레이시아","code":"MY"},{"name":"멕시코","code":"MX"},{"name":"모로코","code":"MA"},{"name":"몬테네그로","code":"ME"},{"name":"몰도바","code":"MD"},{"name":"몰타","code":"MT"},{"name":"미국","code":"US"},{"name":"바레인","code":"BH"},{"name":"방글라데시","code":"BD"},{"name":"베네수엘라","code":"VE"},{"name":"베트남","code":"VN"},{"name":"벨기에","code":"BE"},{"name":"벨로루시","code":"BY"},{"name":"보스니아-헤르체코비나","code":"BA"},{"name":"볼리비아","code":"BO"},{"name":"북마케도니아","code":"MK"},{"name":"불가리아","code":"BG"},{"name":"브라질","code":"BR"},{"name":"사우디아라비아","code":"SA"},{"name":"사이프러스","code":"CY"},{"name":"세네갈","code":"SN"},{"name":"세르비아","code":"RS"},{"name":"스리랑카","code":"LK"},{"name":"스웨덴","code":"SE"},{"name":"스위스","code":"CH"},{"name":"스페인","code":"ES"},{"name":"슬로바키아","code":"SK"},{"name":"슬로베니아","code":"SI"},{"name":"싱가포르","code":"SG"},{"name":"아랍 에미레이트","code":"AE"},{"name":"아르헨티나","code":"AR"},{"name":"아이슬란드","code":"IS"},{"name":"아일랜드","code":"IE"},{"name":"아제르바이잔","code":"AZ"},{"name":"알제리","code":"DZ"},{"name":"에스토니아","code":"EE"},{"name":"에콰도르","code":"EC"},{"name":"엘살바도르","code":"SV"},{"name":"영국","code":"GB"},{"name":"예멘","code":"YE"},{"name":"오만","code":"OM"},{"name":"오스트리아","code":"AT"},{"name":"온두라스","code":"HN"},{"name":"요르단","code":"JO"},{"name":"우간다","code":"UG"},{"name":"우루과이","code":"UY"},{"name":"우크라이나","code":"UA"},{"name":"이라크","code":"IQ"},{"name":"이스라엘","code":"IL"},{"name":"이집트","code":"EG"},{"name":"이탈리아","code":"IT"},{"name":"인도","code":"IN"},{"name":"인도네시아","code":"ID"},{"name":"일본","code":"JP"},{"name":"자메이카","code":"JM"},{"name":"짐바브웨","code":"ZW"},{"name":"체코","code":"CZ"},{"name":"칠레","code":"CL"},{"name":"카자흐스탄","code":"KZ"},{"name":"카타르","code":"QA"},{"name":"캄보디아","code":"KH"},{"name":"캐나다","code":"CA"},{"name":"케냐","code":"KE"},{"name":"코스타리카","code":"CR"},{"name":"콜롬비아","code":"CO"},{"name":"쿠웨이트","code":"KW"},{"name":"크로아티아","code":"HR"},{"name":"탄자니아","code":"TZ"},{"name":"태국","code":"TH"},{"name":"터키","code":"TR"},{"name":"튀니지","code":"TN"},{"name":"파나마","code":"PA"},{"name":"파라과이","code":"PY"},{"name":"파키스탄","code":"PK"},{"name":"파푸아 뉴기니","code":"PG"},{"name":"페루","code":"PE"},{"name":"포르투갈","code":"PT"},{"name":"폴란드","code":"PL"},{"name":"푸에르토리코","code":"PR"},{"name":"프랑스","code":"FR"},{"name":"핀란드","code":"FI"},{"name":"필리핀","code":"PH"},{"name":"한국","code":"KR"},{"name":"헝가리","code":"HU"},{"name":"호주","code":"AU"},{"name":"홍콩","code":"HK"}]
\ No newline at end of file
diff --git a/static/geolocations/lt.json b/static/geolocations/lt.json
index 6f3dc8062e8a6..12c50e02365a5 100644
--- a/static/geolocations/lt.json
+++ b/static/geolocations/lt.json
@@ -1 +1 @@
-[{"name":"Airija","code":"IE"},{"name":"Alžyras","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australija","code":"AU"},{"name":"Austrija","code":"AT"},{"name":"Azerbaidžanas","code":"AZ"},{"name":"Bahreinas","code":"BH"},{"name":"Baltarusija","code":"BY"},{"name":"Bangladešas","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Bolivija","code":"BO"},{"name":"Bosnija ir Hercegovina","code":"BA"},{"name":"Brazilija","code":"BR"},{"name":"Bulgarija","code":"BG"},{"name":"Čekija","code":"CZ"},{"name":"Čilė","code":"CL"},{"name":"Danija","code":"DK"},{"name":"Dominikos Respublika","code":"DO"},{"name":"Egiptas","code":"EG"},{"name":"Ekvadoras","code":"EC"},{"name":"Estija","code":"EE"},{"name":"Filipinai","code":"PH"},{"name":"Gana","code":"GH"},{"name":"Graikija","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Hondūras","code":"HN"},{"name":"Honkongas","code":"HK"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irakas","code":"IQ"},{"name":"Islandija","code":"IS"},{"name":"Ispanija","code":"ES"},{"name":"Italija","code":"IT"},{"name":"Izraelis","code":"IL"},{"name":"Jamaika","code":"JM"},{"name":"Japonija","code":"JP"},{"name":"Jemenas","code":"YE"},{"name":"Jordanija","code":"JO"},{"name":"Jungtinė Karalystė","code":"GB"},{"name":"Jungtinės Amerikos Valstijos","code":"US"},{"name":"Jungtiniai Arabų Emyratai","code":"AE"},{"name":"Juodkalnija","code":"ME"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kataras","code":"QA"},{"name":"Kazachstanas","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kipras","code":"CY"},{"name":"Kolumbija","code":"CO"},{"name":"Kosta Rika","code":"CR"},{"name":"Kroatija","code":"HR"},{"name":"Kuveitas","code":"KW"},{"name":"Laosas","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Lenkija","code":"PL"},{"name":"Libanas","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lichtenšteinas","code":"LI"},{"name":"Lietuva","code":"LT"},{"name":"Liuksemburgas","code":"LU"},{"name":"Malaizija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokas","code":"MA"},{"name":"Meksika","code":"MX"},{"name":"Naujoji Zelandija","code":"NZ"},{"name":"Nepalas","code":"NP"},{"name":"Nyderlandai","code":"NL"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Norvegija","code":"NO"},{"name":"Omanas","code":"OM"},{"name":"Pakistanas","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Naujoji Gvinėja","code":"PG"},{"name":"Paragvajus","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pietų Afrika","code":"ZA"},{"name":"Pietų Korėja","code":"KR"},{"name":"Portugalija","code":"PT"},{"name":"Prancūzija","code":"FR"},{"name":"Puerto Rikas","code":"PR"},{"name":"Rumunija","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvadoras","code":"SV"},{"name":"Saudo Arabija","code":"SA"},{"name":"Senegalas","code":"SN"},{"name":"Serbija","code":"RS"},{"name":"Singapūras","code":"SG"},{"name":"Slovakija","code":"SK"},{"name":"Slovėnija","code":"SI"},{"name":"Suomija","code":"FI"},{"name":"Šiaurės Makedonija","code":"MK"},{"name":"Šri Lanka","code":"LK"},{"name":"Švedija","code":"SE"},{"name":"Šveicarija","code":"CH"},{"name":"Tailandas","code":"TH"},{"name":"Taivanis","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunisas","code":"TN"},{"name":"Turkija","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Urugvajus","code":"UY"},{"name":"Venesuela","code":"VE"},{"name":"Vengrija","code":"HU"},{"name":"Vietnamas","code":"VN"},{"name":"Vokietija","code":"DE"},{"name":"Zimbabvė","code":"ZW"}]
\ No newline at end of file
+[{"name":"Airija","code":"IE"},{"name":"Alžyras","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australija","code":"AU"},{"name":"Austrija","code":"AT"},{"name":"Azerbaidžanas","code":"AZ"},{"name":"Bahreinas","code":"BH"},{"name":"Baltarusija","code":"BY"},{"name":"Bangladešas","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Bolivija","code":"BO"},{"name":"Bosnija ir Hercegovina","code":"BA"},{"name":"Brazilija","code":"BR"},{"name":"Bulgarija","code":"BG"},{"name":"Čekija","code":"CZ"},{"name":"Čilė","code":"CL"},{"name":"Danija","code":"DK"},{"name":"Dominikos Respublika","code":"DO"},{"name":"Egiptas","code":"EG"},{"name":"Ekvadoras","code":"EC"},{"name":"Estija","code":"EE"},{"name":"Filipinai","code":"PH"},{"name":"Gana","code":"GH"},{"name":"Graikija","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Hondūras","code":"HN"},{"name":"Honkongas","code":"HK"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irakas","code":"IQ"},{"name":"Islandija","code":"IS"},{"name":"Ispanija","code":"ES"},{"name":"Italija","code":"IT"},{"name":"Izraelis","code":"IL"},{"name":"Jamaika","code":"JM"},{"name":"Japonija","code":"JP"},{"name":"Jemenas","code":"YE"},{"name":"Jordanija","code":"JO"},{"name":"Jungtinė Karalystė","code":"GB"},{"name":"Jungtinės Amerikos Valstijos","code":"US"},{"name":"Jungtiniai Arabų Emyratai","code":"AE"},{"name":"Juodkalnija","code":"ME"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kataras","code":"QA"},{"name":"Kazachstanas","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kipras","code":"CY"},{"name":"Kolumbija","code":"CO"},{"name":"Kosta Rika","code":"CR"},{"name":"Kroatija","code":"HR"},{"name":"Kuveitas","code":"KW"},{"name":"Laosas","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Lenkija","code":"PL"},{"name":"Libanas","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lichtenšteinas","code":"LI"},{"name":"Lietuva","code":"LT"},{"name":"Liuksemburgas","code":"LU"},{"name":"Malaizija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokas","code":"MA"},{"name":"Meksika","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Naujoji Zelandija","code":"NZ"},{"name":"Nepalas","code":"NP"},{"name":"Nyderlandai","code":"NL"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Norvegija","code":"NO"},{"name":"Omanas","code":"OM"},{"name":"Pakistanas","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Naujoji Gvinėja","code":"PG"},{"name":"Paragvajus","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pietų Afrika","code":"ZA"},{"name":"Pietų Korėja","code":"KR"},{"name":"Portugalija","code":"PT"},{"name":"Prancūzija","code":"FR"},{"name":"Puerto Rikas","code":"PR"},{"name":"Rumunija","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvadoras","code":"SV"},{"name":"Saudo Arabija","code":"SA"},{"name":"Senegalas","code":"SN"},{"name":"Serbija","code":"RS"},{"name":"Singapūras","code":"SG"},{"name":"Slovakija","code":"SK"},{"name":"Slovėnija","code":"SI"},{"name":"Suomija","code":"FI"},{"name":"Šiaurės Makedonija","code":"MK"},{"name":"Šri Lanka","code":"LK"},{"name":"Švedija","code":"SE"},{"name":"Šveicarija","code":"CH"},{"name":"Tailandas","code":"TH"},{"name":"Taivanis","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunisas","code":"TN"},{"name":"Turkija","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Urugvajus","code":"UY"},{"name":"Venesuela","code":"VE"},{"name":"Vengrija","code":"HU"},{"name":"Vietnamas","code":"VN"},{"name":"Vokietija","code":"DE"},{"name":"Zimbabvė","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/nb_NO.json b/static/geolocations/nb_NO.json
index 53310c17e59bb..a7c452cc7f0d9 100644
--- a/static/geolocations/nb_NO.json
+++ b/static/geolocations/nb_NO.json
@@ -1 +1 @@
-[{"name":"Algerie","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australia","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Danmark","code":"DK"},{"name":"De forente arabiske emirater","code":"AE"},{"name":"Den dominikanske republikk","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinene","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hellas","code":"GR"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Hviterussland","code":"BY"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Kambodsja","code":"KH"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nord-Makedonia","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannia","code":"GB"},{"name":"Sveits","code":"CH"},{"name":"Sverige","code":"SE"},{"name":"Sør-Afrika","code":"ZA"},{"name":"Sør-Korea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjekkia","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Tyrkia","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østerrike","code":"AT"}]
\ No newline at end of file
+[{"name":"Algerie","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australia","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Danmark","code":"DK"},{"name":"De forente arabiske emirater","code":"AE"},{"name":"Den dominikanske republikk","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinene","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hellas","code":"GR"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Kambodsja","code":"KH"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nord-Makedonia","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannia","code":"GB"},{"name":"Sveits","code":"CH"},{"name":"Sverige","code":"SE"},{"name":"Sør-Afrika","code":"ZA"},{"name":"Sør-Korea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjekkia","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Tyrkia","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østerrike","code":"AT"}]
\ No newline at end of file
diff --git a/static/geolocations/nl.json b/static/geolocations/nl.json
index d9c3dacef8971..5c7597fe756b2 100644
--- a/static/geolocations/nl.json
+++ b/static/geolocations/nl.json
@@ -1 +1 @@
-[{"name":"Algerije","code":"DZ"},{"name":"Argentinië","code":"AR"},{"name":"Australië","code":"AU"},{"name":"Azerbeidzjan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"België","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnië-Herzegovina","code":"BA"},{"name":"Brazilië","code":"BR"},{"name":"Bulgarije","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chili","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cyprus","code":"CY"},{"name":"Denemarken","code":"DK"},{"name":"Dominicaanse Republiek","code":"DO"},{"name":"Duitsland","code":"DE"},{"name":"Ecuador","code":"EC"},{"name":"Egypte","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filipijnen","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrijk","code":"FR"},{"name":"Georgië","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Griekenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongarije","code":"HU"},{"name":"Ierland","code":"IE"},{"name":"IJsland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesië","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Israël","code":"IL"},{"name":"Italië","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanië","code":"JO"},{"name":"Kazachstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Koeweit","code":"KW"},{"name":"Kroatië","code":"HR"},{"name":"Laos","code":"LA"},{"name":"Letland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libië","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litouwen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Maleisië","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nieuw-Zeeland","code":"NZ"},{"name":"Nigeria","code":"NG"},{"name":"Noord-Macedonië","code":"MK"},{"name":"Noorwegen","code":"NO"},{"name":"Oeganda","code":"UG"},{"name":"Oekraïne","code":"UA"},{"name":"Oman","code":"OM"},{"name":"Oostenrijk","code":"AT"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papoea-Nieuw-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Roemenië","code":"RO"},{"name":"Rusland","code":"RU"},{"name":"Saudi-Arabië","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Servië","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovenië","code":"SI"},{"name":"Slowakije","code":"SK"},{"name":"Spanje","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjechië","code":"CZ"},{"name":"Tunesië","code":"TN"},{"name":"Turkije","code":"TR"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Verenigd Koninkrijk","code":"GB"},{"name":"Verenigde Arabische Emiraten","code":"AE"},{"name":"Verenigde Staten","code":"US"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zuid-Afrika","code":"ZA"},{"name":"Zuid-Korea","code":"KR"},{"name":"Zweden","code":"SE"},{"name":"Zwitserland","code":"CH"}]
\ No newline at end of file
+[{"name":"Algerije","code":"DZ"},{"name":"Argentinië","code":"AR"},{"name":"Australië","code":"AU"},{"name":"Azerbeidzjan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"België","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnië-Herzegovina","code":"BA"},{"name":"Brazilië","code":"BR"},{"name":"Bulgarije","code":"BG"},{"name":"Cambodja","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chili","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cyprus","code":"CY"},{"name":"Denemarken","code":"DK"},{"name":"Dominicaanse Republiek","code":"DO"},{"name":"Duitsland","code":"DE"},{"name":"Ecuador","code":"EC"},{"name":"Egypte","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filipijnen","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrijk","code":"FR"},{"name":"Georgië","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Griekenland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hongarije","code":"HU"},{"name":"Ierland","code":"IE"},{"name":"IJsland","code":"IS"},{"name":"India","code":"IN"},{"name":"Indonesië","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Israël","code":"IL"},{"name":"Italië","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanië","code":"JO"},{"name":"Kazachstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Koeweit","code":"KW"},{"name":"Kroatië","code":"HR"},{"name":"Laos","code":"LA"},{"name":"Letland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libië","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litouwen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Maleisië","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Moldavië","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nieuw-Zeeland","code":"NZ"},{"name":"Nigeria","code":"NG"},{"name":"Noord-Macedonië","code":"MK"},{"name":"Noorwegen","code":"NO"},{"name":"Oeganda","code":"UG"},{"name":"Oekraïne","code":"UA"},{"name":"Oman","code":"OM"},{"name":"Oostenrijk","code":"AT"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papoea-Nieuw-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Roemenië","code":"RO"},{"name":"Rusland","code":"RU"},{"name":"Saudi-Arabië","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Servië","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovenië","code":"SI"},{"name":"Slowakije","code":"SK"},{"name":"Spanje","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjechië","code":"CZ"},{"name":"Tunesië","code":"TN"},{"name":"Turkije","code":"TR"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Verenigd Koninkrijk","code":"GB"},{"name":"Verenigde Arabische Emiraten","code":"AE"},{"name":"Verenigde Staten","code":"US"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zuid-Afrika","code":"ZA"},{"name":"Zuid-Korea","code":"KR"},{"name":"Zweden","code":"SE"},{"name":"Zwitserland","code":"CH"}]
\ No newline at end of file
diff --git a/static/geolocations/nn.json b/static/geolocations/nn.json
index 53310c17e59bb..a7c452cc7f0d9 100644
--- a/static/geolocations/nn.json
+++ b/static/geolocations/nn.json
@@ -1 +1 @@
-[{"name":"Algerie","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australia","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Danmark","code":"DK"},{"name":"De forente arabiske emirater","code":"AE"},{"name":"Den dominikanske republikk","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinene","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hellas","code":"GR"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Hviterussland","code":"BY"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Kambodsja","code":"KH"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nord-Makedonia","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannia","code":"GB"},{"name":"Sveits","code":"CH"},{"name":"Sverige","code":"SE"},{"name":"Sør-Afrika","code":"ZA"},{"name":"Sør-Korea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjekkia","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Tyrkia","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østerrike","code":"AT"}]
\ No newline at end of file
+[{"name":"Algerie","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Aserbajdsjan","code":"AZ"},{"name":"Australia","code":"AU"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia-Hercegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Danmark","code":"DK"},{"name":"De forente arabiske emirater","code":"AE"},{"name":"Den dominikanske republikk","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinene","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hellas","code":"GR"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonesia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordan","code":"JO"},{"name":"Kambodsja","code":"KH"},{"name":"Kasakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatia","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Kypros","code":"CY"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marokko","code":"MA"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nederland","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nord-Makedonia","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Ny-Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Romania","code":"RO"},{"name":"Russland","code":"RU"},{"name":"Saudi-Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Storbritannia","code":"GB"},{"name":"Sveits","code":"CH"},{"name":"Sverige","code":"SE"},{"name":"Sør-Afrika","code":"ZA"},{"name":"Sør-Korea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tsjekkia","code":"CZ"},{"name":"Tunisia","code":"TN"},{"name":"Tyrkia","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungarn","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Østerrike","code":"AT"}]
\ No newline at end of file
diff --git a/static/geolocations/pl.json b/static/geolocations/pl.json
index bf1ba79cf01bc..0f478812269ed 100644
--- a/static/geolocations/pl.json
+++ b/static/geolocations/pl.json
@@ -1 +1 @@
-[{"name":"Algieria","code":"DZ"},{"name":"Arabia Saudyjska","code":"SA"},{"name":"Argentyna","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbejdżan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladesz","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Białoruś","code":"BY"},{"name":"Boliwia","code":"BO"},{"name":"Bośnia i Hercegowina","code":"BA"},{"name":"Brazylia","code":"BR"},{"name":"Bułgaria","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Chorwacja","code":"HR"},{"name":"Cypr","code":"CY"},{"name":"Czarnogóra","code":"ME"},{"name":"Czechy","code":"CZ"},{"name":"Dania","code":"DK"},{"name":"Dominikana","code":"DO"},{"name":"Egipt","code":"EG"},{"name":"Ekwador","code":"EC"},{"name":"Estonia","code":"EE"},{"name":"Filipiny","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francja","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecja","code":"GR"},{"name":"Gwatemala","code":"GT"},{"name":"Hiszpania","code":"ES"},{"name":"Holandia","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indie","code":"IN"},{"name":"Indonezja","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irlandia","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordania","code":"JO"},{"name":"Kambodża","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Korea Południowa","code":"KR"},{"name":"Kostaryka","code":"CR"},{"name":"Kuwejt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Liban","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Lichtenstein","code":"LI"},{"name":"Litwa","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Łotwa","code":"LV"},{"name":"Macedonia Północna","code":"MK"},{"name":"Malezja","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksyk","code":"MX"},{"name":"Nepal","code":"NP"},{"name":"Niemcy","code":"DE"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norwegia","code":"NO"},{"name":"Nowa Zelandia","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Nowa Gwinea","code":"PG"},{"name":"Paragwaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polska","code":"PL"},{"name":"Portoryko","code":"PR"},{"name":"Portugalia","code":"PT"},{"name":"Republika Południowej Afryki","code":"ZA"},{"name":"Rosja","code":"RU"},{"name":"Rumunia","code":"RO"},{"name":"Salwador","code":"SV"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Słowacja","code":"SK"},{"name":"Słowenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Stany Zjednoczone","code":"US"},{"name":"Szwajcaria","code":"CH"},{"name":"Szwecja","code":"SE"},{"name":"Tajlandia","code":"TH"},{"name":"Tajwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Tunezja","code":"TN"},{"name":"Turcja","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Urugwaj","code":"UY"},{"name":"Wenezuela","code":"VE"},{"name":"Węgry","code":"HU"},{"name":"Wielka Brytania","code":"GB"},{"name":"Wietnam","code":"VN"},{"name":"Włochy","code":"IT"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zjednoczone Emiraty Arabskie","code":"AE"}]
\ No newline at end of file
+[{"name":"Algieria","code":"DZ"},{"name":"Arabia Saudyjska","code":"SA"},{"name":"Argentyna","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbejdżan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladesz","code":"BD"},{"name":"Belgia","code":"BE"},{"name":"Białoruś","code":"BY"},{"name":"Boliwia","code":"BO"},{"name":"Bośnia i Hercegowina","code":"BA"},{"name":"Brazylia","code":"BR"},{"name":"Bułgaria","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Chorwacja","code":"HR"},{"name":"Cypr","code":"CY"},{"name":"Czarnogóra","code":"ME"},{"name":"Czechy","code":"CZ"},{"name":"Dania","code":"DK"},{"name":"Dominikana","code":"DO"},{"name":"Egipt","code":"EG"},{"name":"Ekwador","code":"EC"},{"name":"Estonia","code":"EE"},{"name":"Filipiny","code":"PH"},{"name":"Finlandia","code":"FI"},{"name":"Francja","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grecja","code":"GR"},{"name":"Gwatemala","code":"GT"},{"name":"Hiszpania","code":"ES"},{"name":"Holandia","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indie","code":"IN"},{"name":"Indonezja","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irlandia","code":"IE"},{"name":"Islandia","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordania","code":"JO"},{"name":"Kambodża","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstan","code":"KZ"},{"name":"Kenia","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Korea Południowa","code":"KR"},{"name":"Kostaryka","code":"CR"},{"name":"Kuwejt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Liban","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Lichtenstein","code":"LI"},{"name":"Litwa","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Łotwa","code":"LV"},{"name":"Macedonia Północna","code":"MK"},{"name":"Malezja","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Meksyk","code":"MX"},{"name":"Mołdawia","code":"MD"},{"name":"Nepal","code":"NP"},{"name":"Niemcy","code":"DE"},{"name":"Nigeria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norwegia","code":"NO"},{"name":"Nowa Zelandia","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua-Nowa Gwinea","code":"PG"},{"name":"Paragwaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polska","code":"PL"},{"name":"Portoryko","code":"PR"},{"name":"Portugalia","code":"PT"},{"name":"Republika Południowej Afryki","code":"ZA"},{"name":"Rosja","code":"RU"},{"name":"Rumunia","code":"RO"},{"name":"Salwador","code":"SV"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Słowacja","code":"SK"},{"name":"Słowenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Stany Zjednoczone","code":"US"},{"name":"Szwajcaria","code":"CH"},{"name":"Szwecja","code":"SE"},{"name":"Tajlandia","code":"TH"},{"name":"Tajwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Tunezja","code":"TN"},{"name":"Turcja","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Urugwaj","code":"UY"},{"name":"Wenezuela","code":"VE"},{"name":"Węgry","code":"HU"},{"name":"Wielka Brytania","code":"GB"},{"name":"Wietnam","code":"VN"},{"name":"Włochy","code":"IT"},{"name":"Zimbabwe","code":"ZW"},{"name":"Zjednoczone Emiraty Arabskie","code":"AE"}]
\ No newline at end of file
diff --git a/static/geolocations/pt-BR.json b/static/geolocations/pt-BR.json
new file mode 100644
index 0000000000000..5fe9e2bc95213
--- /dev/null
+++ b/static/geolocations/pt-BR.json
@@ -0,0 +1 @@
+[{"name":"África do Sul","code":"ZA"},{"name":"Alemanha","code":"DE"},{"name":"Arábia Saudita","code":"SA"},{"name":"Argélia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Áustria","code":"AT"},{"name":"Azerbaijão","code":"AZ"},{"name":"Bangladesh","code":"BD"},{"name":"Barein","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrússia","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bósnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Camboja","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Catar","code":"QA"},{"name":"Cazaquistão","code":"KZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colômbia","code":"CO"},{"name":"Coréia do Sul","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croácia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egito","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirados Árabes Unidos","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslováquia","code":"SK"},{"name":"Eslovênia","code":"SI"},{"name":"Espanha","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estônia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlândia","code":"FI"},{"name":"França","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Georgia","code":"GE"},{"name":"Grécia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungria","code":"HU"},{"name":"Iêmen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonésia","code":"ID"},{"name":"Iraque","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islândia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itália","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japão","code":"JP"},{"name":"Jordânia","code":"JO"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letônia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituânia","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedônia do Norte","code":"MK"},{"name":"Malásia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldávia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicarágua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelândia","code":"NZ"},{"name":"Omã","code":"OM"},{"name":"Países Baixos","code":"NL"},{"name":"Panamá","code":"PA"},{"name":"Papua-Nova Guiné","code":"PG"},{"name":"Paquistão","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polônia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Quênia","code":"KE"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"República Tcheca","code":"CZ"},{"name":"Romênia","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sérvia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suécia","code":"SE"},{"name":"Suíça","code":"CH"},{"name":"Tailândia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzânia","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Ucrânia","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnã","code":"VN"},{"name":"Zimbábue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/pt-PT.json b/static/geolocations/pt-PT.json
index 790f04eb7d536..bbf84f1af9695 100644
--- a/static/geolocations/pt-PT.json
+++ b/static/geolocations/pt-PT.json
@@ -1 +1 @@
-[{"name":"África do Sul","code":"ZA"},{"name":"Alemanha","code":"DE"},{"name":"Arábia Saudita","code":"SA"},{"name":"Argélia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Áustria","code":"AT"},{"name":"Azerbaijão","code":"AZ"},{"name":"Bangladeche","code":"BD"},{"name":"Barém","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrússia","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bósnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Camboja","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Catar","code":"QA"},{"name":"Cazaquistão","code":"KZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colômbia","code":"CO"},{"name":"Coreia do Sul","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croácia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egito","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirados Árabes Unidos","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslováquia","code":"SK"},{"name":"Eslovénia","code":"SI"},{"name":"Espanha","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estónia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlândia","code":"FI"},{"name":"França","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Geórgia","code":"GE"},{"name":"Grécia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Holanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungria","code":"HU"},{"name":"Iémen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonésia","code":"ID"},{"name":"Iraque","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islândia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itália","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japão","code":"JP"},{"name":"Jordânia","code":"JO"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letónia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Lienchtenstein","code":"LI"},{"name":"Lituânia","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedónia do Norte","code":"MK"},{"name":"Malásia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicarágua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelândia","code":"NZ"},{"name":"Omã","code":"OM"},{"name":"Panamá","code":"PA"},{"name":"Papuásia-Nova Guiné","code":"PG"},{"name":"Paquistão","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polónia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Quénia","code":"KE"},{"name":"Reino Unido","code":"GB"},{"name":"República Checa","code":"CZ"},{"name":"República Dominicana","code":"DO"},{"name":"Roménia","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sérvia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suécia","code":"SE"},{"name":"Suíça","code":"CH"},{"name":"Tailândia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzânia","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Ucrânia","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietname","code":"VN"},{"name":"Zimbabué","code":"ZW"}]
\ No newline at end of file
+[{"name":"África do Sul","code":"ZA"},{"name":"Alemanha","code":"DE"},{"name":"Arábia Saudita","code":"SA"},{"name":"Argélia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Áustria","code":"AT"},{"name":"Azerbaijão","code":"AZ"},{"name":"Bangladeche","code":"BD"},{"name":"Barém","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrússia","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bósnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Camboja","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Catar","code":"QA"},{"name":"Cazaquistão","code":"KZ"},{"name":"Chéquia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colômbia","code":"CO"},{"name":"Coreia do Sul","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croácia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egito","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirados Árabes Unidos","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslováquia","code":"SK"},{"name":"Eslovénia","code":"SI"},{"name":"Espanha","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estónia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlândia","code":"FI"},{"name":"França","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Geórgia","code":"GE"},{"name":"Grécia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Holanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungria","code":"HU"},{"name":"Iémen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonésia","code":"ID"},{"name":"Iraque","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islândia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itália","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japão","code":"JP"},{"name":"Jordânia","code":"JO"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letónia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Lienchtenstein","code":"LI"},{"name":"Lituânia","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedónia do Norte","code":"MK"},{"name":"Malásia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldávia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicarágua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelândia","code":"NZ"},{"name":"Omã","code":"OM"},{"name":"Panamá","code":"PA"},{"name":"Papuásia-Nova Guiné","code":"PG"},{"name":"Paquistão","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polónia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Quénia","code":"KE"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"Roménia","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sérvia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suécia","code":"SE"},{"name":"Suíça","code":"CH"},{"name":"Tailândia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzânia","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Ucrânia","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietname","code":"VN"},{"name":"Zimbabué","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/pt.json b/static/geolocations/pt.json
index c0510648a9c59..5fe9e2bc95213 100644
--- a/static/geolocations/pt.json
+++ b/static/geolocations/pt.json
@@ -1 +1 @@
-[{"name":"África do Sul","code":"ZA"},{"name":"Alemanha","code":"DE"},{"name":"Arábia Saudita","code":"SA"},{"name":"Argélia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Áustria","code":"AT"},{"name":"Azerbaijão","code":"AZ"},{"name":"Bangladesh","code":"BD"},{"name":"Barein","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrússia","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bósnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Camboja","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Catar","code":"QA"},{"name":"Cazaquistão","code":"KZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colômbia","code":"CO"},{"name":"Coréia do Sul","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croácia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egito","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirados Árabes Unidos","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslováquia","code":"SK"},{"name":"Eslovênia","code":"SI"},{"name":"Espanha","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estônia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlândia","code":"FI"},{"name":"França","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Georgia","code":"GE"},{"name":"Grécia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungria","code":"HU"},{"name":"Iêmen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonésia","code":"ID"},{"name":"Iraque","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islândia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itália","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japão","code":"JP"},{"name":"Jordânia","code":"JO"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letônia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituânia","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedônia do Norte","code":"MK"},{"name":"Malásia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicarágua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelândia","code":"NZ"},{"name":"Omã","code":"OM"},{"name":"Países Baixos","code":"NL"},{"name":"Panamá","code":"PA"},{"name":"Papua-Nova Guiné","code":"PG"},{"name":"Paquistão","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polônia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Quênia","code":"KE"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"República Tcheca","code":"CZ"},{"name":"Romênia","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sérvia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suécia","code":"SE"},{"name":"Suíça","code":"CH"},{"name":"Tailândia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzânia","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Ucrânia","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnã","code":"VN"},{"name":"Zimbábue","code":"ZW"}]
\ No newline at end of file
+[{"name":"África do Sul","code":"ZA"},{"name":"Alemanha","code":"DE"},{"name":"Arábia Saudita","code":"SA"},{"name":"Argélia","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Áustria","code":"AT"},{"name":"Azerbaijão","code":"AZ"},{"name":"Bangladesh","code":"BD"},{"name":"Barein","code":"BH"},{"name":"Bélgica","code":"BE"},{"name":"Bielorrússia","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bósnia-Herzegovina","code":"BA"},{"name":"Brasil","code":"BR"},{"name":"Bulgária","code":"BG"},{"name":"Camboja","code":"KH"},{"name":"Canadá","code":"CA"},{"name":"Catar","code":"QA"},{"name":"Cazaquistão","code":"KZ"},{"name":"Chile","code":"CL"},{"name":"Chipre","code":"CY"},{"name":"Colômbia","code":"CO"},{"name":"Coréia do Sul","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croácia","code":"HR"},{"name":"Dinamarca","code":"DK"},{"name":"Egito","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Emirados Árabes Unidos","code":"AE"},{"name":"Equador","code":"EC"},{"name":"Eslováquia","code":"SK"},{"name":"Eslovênia","code":"SI"},{"name":"Espanha","code":"ES"},{"name":"Estados Unidos","code":"US"},{"name":"Estônia","code":"EE"},{"name":"Filipinas","code":"PH"},{"name":"Finlândia","code":"FI"},{"name":"França","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Georgia","code":"GE"},{"name":"Grécia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Hungria","code":"HU"},{"name":"Iêmen","code":"YE"},{"name":"Índia","code":"IN"},{"name":"Indonésia","code":"ID"},{"name":"Iraque","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islândia","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Itália","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japão","code":"JP"},{"name":"Jordânia","code":"JO"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letônia","code":"LV"},{"name":"Líbano","code":"LB"},{"name":"Líbia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituânia","code":"LT"},{"name":"Luxemburgo","code":"LU"},{"name":"Macedônia do Norte","code":"MK"},{"name":"Malásia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marrocos","code":"MA"},{"name":"México","code":"MX"},{"name":"Moldávia","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicarágua","code":"NI"},{"name":"Nigéria","code":"NG"},{"name":"Noruega","code":"NO"},{"name":"Nova Zelândia","code":"NZ"},{"name":"Omã","code":"OM"},{"name":"Países Baixos","code":"NL"},{"name":"Panamá","code":"PA"},{"name":"Papua-Nova Guiné","code":"PG"},{"name":"Paquistão","code":"PK"},{"name":"Paraguai","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polônia","code":"PL"},{"name":"Porto Rico","code":"PR"},{"name":"Portugal","code":"PT"},{"name":"Quênia","code":"KE"},{"name":"Reino Unido","code":"GB"},{"name":"República Dominicana","code":"DO"},{"name":"República Tcheca","code":"CZ"},{"name":"Romênia","code":"RO"},{"name":"Rússia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sérvia","code":"RS"},{"name":"Singapura","code":"SG"},{"name":"Sri Lanka","code":"LK"},{"name":"Suécia","code":"SE"},{"name":"Suíça","code":"CH"},{"name":"Tailândia","code":"TH"},{"name":"Taiwan","code":"TW"},{"name":"Tanzânia","code":"TZ"},{"name":"Tunísia","code":"TN"},{"name":"Turquia","code":"TR"},{"name":"Ucrânia","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Uruguai","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnã","code":"VN"},{"name":"Zimbábue","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/ro.json b/static/geolocations/ro.json
index e45c3a5e90e7e..8da7234889dd7 100644
--- a/static/geolocations/ro.json
+++ b/static/geolocations/ro.json
@@ -1 +1 @@
-[{"name":"Africa de Sud","code":"ZA"},{"name":"Algeria","code":"DZ"},{"name":"Arabia Saudită","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaidjan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia și Herțegovina","code":"BA"},{"name":"Brazilia","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodgia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Cehia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Cipru","code":"CY"},{"name":"Columbia","code":"CO"},{"name":"Coreea de Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croația","code":"HR"},{"name":"Danemarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Elveția","code":"CH"},{"name":"Emiratele Arabe Unite","code":"AE"},{"name":"Estonia","code":"EE"},{"name":"Filipine","code":"PH"},{"name":"Finlanda","code":"FI"},{"name":"Franța","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germania","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonezia","code":"ID"},{"name":"Iordania","code":"JO"},{"name":"Irak","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islanda","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuweit","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Liban","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Macedonia de Nord","code":"MK"},{"name":"Malaezia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroc","code":"MA"},{"name":"Mexic","code":"MX"},{"name":"Muntenegru","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvegia","code":"NO"},{"name":"Noua Zeelandă","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Noua Guinee","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugalia","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regatul Unit","code":"GB"},{"name":"Republica Dominicană","code":"DO"},{"name":"România","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovacia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Statele Unite ale Americii","code":"US"},{"name":"Suedia","code":"SE"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailanda","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turcia","code":"TR"},{"name":"Țările de Jos","code":"NL"},{"name":"Ucraina","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Ungaria","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Africa de Sud","code":"ZA"},{"name":"Algeria","code":"DZ"},{"name":"Arabia Saudită","code":"SA"},{"name":"Argentina","code":"AR"},{"name":"Australia","code":"AU"},{"name":"Austria","code":"AT"},{"name":"Azerbaidjan","code":"AZ"},{"name":"Bahrein","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgia","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia și Herțegovina","code":"BA"},{"name":"Brazilia","code":"BR"},{"name":"Bulgaria","code":"BG"},{"name":"Cambodgia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Cehia","code":"CZ"},{"name":"Chile","code":"CL"},{"name":"Cipru","code":"CY"},{"name":"Columbia","code":"CO"},{"name":"Coreea de Sud","code":"KR"},{"name":"Costa Rica","code":"CR"},{"name":"Croația","code":"HR"},{"name":"Danemarca","code":"DK"},{"name":"Ecuador","code":"EC"},{"name":"Egipt","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Elveția","code":"CH"},{"name":"Emiratele Arabe Unite","code":"AE"},{"name":"Estonia","code":"EE"},{"name":"Filipine","code":"PH"},{"name":"Finlanda","code":"FI"},{"name":"Franța","code":"FR"},{"name":"Georgia","code":"GE"},{"name":"Germania","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Grecia","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"India","code":"IN"},{"name":"Indonezia","code":"ID"},{"name":"Iordania","code":"JO"},{"name":"Irak","code":"IQ"},{"name":"Irlanda","code":"IE"},{"name":"Islanda","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italia","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japonia","code":"JP"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuweit","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Letonia","code":"LV"},{"name":"Liban","code":"LB"},{"name":"Libia","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lituania","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Macedonia de Nord","code":"MK"},{"name":"Malaezia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroc","code":"MA"},{"name":"Mexic","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Muntenegru","code":"ME"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Norvegia","code":"NO"},{"name":"Noua Zeelandă","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Noua Guinee","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonia","code":"PL"},{"name":"Portugalia","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Regatul Unit","code":"GB"},{"name":"Republica Dominicană","code":"DO"},{"name":"România","code":"RO"},{"name":"Rusia","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovacia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Spania","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Statele Unite ale Americii","code":"US"},{"name":"Suedia","code":"SE"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailanda","code":"TH"},{"name":"Tunisia","code":"TN"},{"name":"Turcia","code":"TR"},{"name":"Țările de Jos","code":"NL"},{"name":"Ucraina","code":"UA"},{"name":"Uganda","code":"UG"},{"name":"Ungaria","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/ru.json b/static/geolocations/ru.json
index 49d252d15d72f..e5f4821e3fcea 100644
--- a/static/geolocations/ru.json
+++ b/static/geolocations/ru.json
@@ -1 +1 @@
-[{"name":"Австралия","code":"AU"},{"name":"Австрия","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Беларусь","code":"BY"},{"name":"Бельгия","code":"BE"},{"name":"Болгария","code":"BG"},{"name":"Боливия","code":"BO"},{"name":"Босния и Герцеговина","code":"BA"},{"name":"Бразилия","code":"BR"},{"name":"Великобритания","code":"GB"},{"name":"Венгрия","code":"HU"},{"name":"Венесуэла","code":"VE"},{"name":"Вьетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Германия","code":"DE"},{"name":"Гондурас","code":"HN"},{"name":"Гонконг","code":"HK"},{"name":"Греция","code":"GR"},{"name":"Грузия","code":"GE"},{"name":"Дания","code":"DK"},{"name":"Доминиканская Республика","code":"DO"},{"name":"Египет","code":"EG"},{"name":"Зимбабве","code":"ZW"},{"name":"Израиль","code":"IL"},{"name":"Индия","code":"IN"},{"name":"Индонезия","code":"ID"},{"name":"Иордания","code":"JO"},{"name":"Ирак","code":"IQ"},{"name":"Ирландия","code":"IE"},{"name":"Исландия","code":"IS"},{"name":"Испания","code":"ES"},{"name":"Италия","code":"IT"},{"name":"Йемен","code":"YE"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кения","code":"KE"},{"name":"Кипр","code":"CY"},{"name":"Колумбия","code":"CO"},{"name":"Коста-Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвия","code":"LV"},{"name":"Ливан","code":"LB"},{"name":"Ливия","code":"LY"},{"name":"Литва","code":"LT"},{"name":"Лихтенштейн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзия","code":"MY"},{"name":"Мальта","code":"MT"},{"name":"Марокко","code":"MA"},{"name":"Мексика","code":"MX"},{"name":"Непал","code":"NP"},{"name":"Нигерия","code":"NG"},{"name":"Нидерланды","code":"NL"},{"name":"Никарагуа","code":"NI"},{"name":"Новая Зеландия","code":"NZ"},{"name":"Норвегия","code":"NO"},{"name":"Объединенные Арабские Эмираты","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа-Новая Гвинея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Польша","code":"PL"},{"name":"Португалия","code":"PT"},{"name":"Пуэрто-Рико","code":"PR"},{"name":"Россия","code":"RU"},{"name":"Румыния","code":"RO"},{"name":"Сальвадор","code":"SV"},{"name":"Саудовская Аравия","code":"SA"},{"name":"Северная Македония","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сербия","code":"RS"},{"name":"Сингапур","code":"SG"},{"name":"Словакия","code":"SK"},{"name":"Словения","code":"SI"},{"name":"США","code":"US"},{"name":"Таиланд","code":"TH"},{"name":"Тайвань","code":"TW"},{"name":"Танзания","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турция","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Украина","code":"UA"},{"name":"Уругвай","code":"UY"},{"name":"Филиппины","code":"PH"},{"name":"Финляндия","code":"FI"},{"name":"Франция","code":"FR"},{"name":"Хорватия","code":"HR"},{"name":"Черногория","code":"ME"},{"name":"Чехия","code":"CZ"},{"name":"Чили","code":"CL"},{"name":"Швейцария","code":"CH"},{"name":"Швеция","code":"SE"},{"name":"Шри-Ланка","code":"LK"},{"name":"Эквадор","code":"EC"},{"name":"Эстония","code":"EE"},{"name":"Южная Корея","code":"KR"},{"name":"Южно-Африканская Республика","code":"ZA"},{"name":"Ямайка","code":"JM"},{"name":"Япония","code":"JP"}]
\ No newline at end of file
+[{"name":"Австралия","code":"AU"},{"name":"Австрия","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Беларусь","code":"BY"},{"name":"Бельгия","code":"BE"},{"name":"Болгария","code":"BG"},{"name":"Боливия","code":"BO"},{"name":"Босния и Герцеговина","code":"BA"},{"name":"Бразилия","code":"BR"},{"name":"Великобритания","code":"GB"},{"name":"Венгрия","code":"HU"},{"name":"Венесуэла","code":"VE"},{"name":"Вьетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Германия","code":"DE"},{"name":"Гондурас","code":"HN"},{"name":"Гонконг","code":"HK"},{"name":"Греция","code":"GR"},{"name":"Грузия","code":"GE"},{"name":"Дания","code":"DK"},{"name":"Доминиканская Республика","code":"DO"},{"name":"Египет","code":"EG"},{"name":"Зимбабве","code":"ZW"},{"name":"Израиль","code":"IL"},{"name":"Индия","code":"IN"},{"name":"Индонезия","code":"ID"},{"name":"Иордания","code":"JO"},{"name":"Ирак","code":"IQ"},{"name":"Ирландия","code":"IE"},{"name":"Исландия","code":"IS"},{"name":"Испания","code":"ES"},{"name":"Италия","code":"IT"},{"name":"Йемен","code":"YE"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кения","code":"KE"},{"name":"Кипр","code":"CY"},{"name":"Колумбия","code":"CO"},{"name":"Коста-Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвия","code":"LV"},{"name":"Ливан","code":"LB"},{"name":"Ливия","code":"LY"},{"name":"Литва","code":"LT"},{"name":"Лихтенштейн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзия","code":"MY"},{"name":"Мальта","code":"MT"},{"name":"Марокко","code":"MA"},{"name":"Мексика","code":"MX"},{"name":"Молдова","code":"MD"},{"name":"Непал","code":"NP"},{"name":"Нигерия","code":"NG"},{"name":"Нидерланды","code":"NL"},{"name":"Никарагуа","code":"NI"},{"name":"Новая Зеландия","code":"NZ"},{"name":"Норвегия","code":"NO"},{"name":"Объединенные Арабские Эмираты","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа-Новая Гвинея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Польша","code":"PL"},{"name":"Португалия","code":"PT"},{"name":"Пуэрто-Рико","code":"PR"},{"name":"Россия","code":"RU"},{"name":"Румыния","code":"RO"},{"name":"Сальвадор","code":"SV"},{"name":"Саудовская Аравия","code":"SA"},{"name":"Северная Македония","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сербия","code":"RS"},{"name":"Сингапур","code":"SG"},{"name":"Словакия","code":"SK"},{"name":"Словения","code":"SI"},{"name":"США","code":"US"},{"name":"Таиланд","code":"TH"},{"name":"Тайвань","code":"TW"},{"name":"Танзания","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турция","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Украина","code":"UA"},{"name":"Уругвай","code":"UY"},{"name":"Филиппины","code":"PH"},{"name":"Финляндия","code":"FI"},{"name":"Франция","code":"FR"},{"name":"Хорватия","code":"HR"},{"name":"Черногория","code":"ME"},{"name":"Чехия","code":"CZ"},{"name":"Чили","code":"CL"},{"name":"Швейцария","code":"CH"},{"name":"Швеция","code":"SE"},{"name":"Шри-Ланка","code":"LK"},{"name":"Эквадор","code":"EC"},{"name":"Эстония","code":"EE"},{"name":"Южная Корея","code":"KR"},{"name":"Южно-Африканская Республика","code":"ZA"},{"name":"Ямайка","code":"JM"},{"name":"Япония","code":"JP"}]
\ No newline at end of file
diff --git a/static/geolocations/sk.json b/static/geolocations/sk.json
index 8be5a38634447..81f869df90288 100644
--- a/static/geolocations/sk.json
+++ b/static/geolocations/sk.json
@@ -1 +1 @@
-[{"name":"Alžírsko","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Azerbajdžan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladéš","code":"BD"},{"name":"Belgicko","code":"BE"},{"name":"Bielorusko","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bosna a Hercegovina","code":"BA"},{"name":"Brazília","code":"BR"},{"name":"Bulharsko","code":"BG"},{"name":"Cyprus","code":"CY"},{"name":"Česko","code":"CZ"},{"name":"Čierna Hora","code":"ME"},{"name":"Čile","code":"CL"},{"name":"Dánsko","code":"DK"},{"name":"Dominikánska republika","code":"DO"},{"name":"Egypt","code":"EG"},{"name":"Ekvádor","code":"EC"},{"name":"Estónsko","code":"EE"},{"name":"Filipíny","code":"PH"},{"name":"Fínsko","code":"FI"},{"name":"Francúzsko","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Grécko","code":"GR"},{"name":"Gruzínsko","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Holandsko","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Chorvátsko","code":"HR"},{"name":"India","code":"IN"},{"name":"Indonézia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Írsko","code":"IE"},{"name":"Island","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonsko","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordánsko","code":"JO"},{"name":"Juhoafrická republika","code":"ZA"},{"name":"Južná Kórea","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstan","code":"KZ"},{"name":"Keňa","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Libanon","code":"LB"},{"name":"Líbya","code":"LY"},{"name":"Lichtenštajnsko","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Lotyšsko","code":"LV"},{"name":"Luxembursko","code":"LU"},{"name":"Maďarsko","code":"HU"},{"name":"Malajzia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Nemecko","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nigéria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Nórsko","code":"NO"},{"name":"Nový Zéland","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua – Nová Guinea","code":"PG"},{"name":"Paraguaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poľsko","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalsko","code":"PT"},{"name":"Rakúsko","code":"AT"},{"name":"Rumunsko","code":"RO"},{"name":"Rusko","code":"RU"},{"name":"Salvádor","code":"SV"},{"name":"Saudská Arábia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severné Macedónsko","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovensko","code":"SK"},{"name":"Slovinsko","code":"SI"},{"name":"Spojené arabské emiráty","code":"AE"},{"name":"Spojené kráľovstvo","code":"GB"},{"name":"Spojené štáty","code":"US"},{"name":"Srbsko","code":"RS"},{"name":"Srí Lanka","code":"LK"},{"name":"Španielsko","code":"ES"},{"name":"Švajčiarsko","code":"CH"},{"name":"Švédsko","code":"SE"},{"name":"Taiwan","code":"TW"},{"name":"Taliansko","code":"IT"},{"name":"Tanzánia","code":"TZ"},{"name":"Thajsko","code":"TH"},{"name":"Tunisko","code":"TN"},{"name":"Turecko","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Uruguaj","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alžírsko","code":"DZ"},{"name":"Argentína","code":"AR"},{"name":"Austrália","code":"AU"},{"name":"Azerbajdžan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladéš","code":"BD"},{"name":"Belgicko","code":"BE"},{"name":"Bielorusko","code":"BY"},{"name":"Bolívia","code":"BO"},{"name":"Bosna a Hercegovina","code":"BA"},{"name":"Brazília","code":"BR"},{"name":"Bulharsko","code":"BG"},{"name":"Cyprus","code":"CY"},{"name":"Česko","code":"CZ"},{"name":"Čierna Hora","code":"ME"},{"name":"Čile","code":"CL"},{"name":"Dánsko","code":"DK"},{"name":"Dominikánska republika","code":"DO"},{"name":"Egypt","code":"EG"},{"name":"Ekvádor","code":"EC"},{"name":"Estónsko","code":"EE"},{"name":"Filipíny","code":"PH"},{"name":"Fínsko","code":"FI"},{"name":"Francúzsko","code":"FR"},{"name":"Ghana","code":"GH"},{"name":"Grécko","code":"GR"},{"name":"Gruzínsko","code":"GE"},{"name":"Guatemala","code":"GT"},{"name":"Holandsko","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Chorvátsko","code":"HR"},{"name":"India","code":"IN"},{"name":"Indonézia","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Írsko","code":"IE"},{"name":"Island","code":"IS"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonsko","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordánsko","code":"JO"},{"name":"Juhoafrická republika","code":"ZA"},{"name":"Južná Kórea","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazachstan","code":"KZ"},{"name":"Keňa","code":"KE"},{"name":"Kolumbia","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Libanon","code":"LB"},{"name":"Líbya","code":"LY"},{"name":"Lichtenštajnsko","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Lotyšsko","code":"LV"},{"name":"Luxembursko","code":"LU"},{"name":"Maďarsko","code":"HU"},{"name":"Malajzia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Moldavsko","code":"MD"},{"name":"Nemecko","code":"DE"},{"name":"Nepál","code":"NP"},{"name":"Nigéria","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Nórsko","code":"NO"},{"name":"Nový Zéland","code":"NZ"},{"name":"Omán","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua – Nová Guinea","code":"PG"},{"name":"Paraguaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poľsko","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalsko","code":"PT"},{"name":"Rakúsko","code":"AT"},{"name":"Rumunsko","code":"RO"},{"name":"Rusko","code":"RU"},{"name":"Salvádor","code":"SV"},{"name":"Saudská Arábia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severné Macedónsko","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovensko","code":"SK"},{"name":"Slovinsko","code":"SI"},{"name":"Spojené arabské emiráty","code":"AE"},{"name":"Spojené kráľovstvo","code":"GB"},{"name":"Spojené štáty","code":"US"},{"name":"Srbsko","code":"RS"},{"name":"Srí Lanka","code":"LK"},{"name":"Španielsko","code":"ES"},{"name":"Švajčiarsko","code":"CH"},{"name":"Švédsko","code":"SE"},{"name":"Taiwan","code":"TW"},{"name":"Taliansko","code":"IT"},{"name":"Tanzánia","code":"TZ"},{"name":"Thajsko","code":"TH"},{"name":"Tunisko","code":"TN"},{"name":"Turecko","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Uruguaj","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/sl.json b/static/geolocations/sl.json
index 3a8749027f534..efe19c2db12b4 100644
--- a/static/geolocations/sl.json
+++ b/static/geolocations/sl.json
@@ -1 +1 @@
-[{"name":"Alžirija","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Avstralija","code":"AU"},{"name":"Avstrija","code":"AT"},{"name":"Azerbajdžan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladeš","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Belorusija","code":"BY"},{"name":"Bolgarija","code":"BG"},{"name":"Bolivija","code":"BO"},{"name":"Bosna in Hercegovina","code":"BA"},{"name":"Brazilija","code":"BR"},{"name":"Ciper","code":"CY"},{"name":"Češka","code":"CZ"},{"name":"Čile","code":"CL"},{"name":"Črna gora","code":"ME"},{"name":"Danska","code":"DK"},{"name":"Dominikanska republika","code":"DO"},{"name":"Egipt","code":"EG"},{"name":"Ekvador","code":"EC"},{"name":"Estonija","code":"EE"},{"name":"Filipini","code":"PH"},{"name":"Finska","code":"FI"},{"name":"Francija","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Grčija","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Hrvaška","code":"HR"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irska","code":"IE"},{"name":"Islandija","code":"IS"},{"name":"Italija","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonska","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanija","code":"JO"},{"name":"Južna Afrika","code":"ZA"},{"name":"Južna Koreja","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kolumbija","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lihtenštajn","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Madžarska","code":"HU"},{"name":"Malezija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mehika","code":"MX"},{"name":"Nemčija","code":"DE"},{"name":"Nepal","code":"NP"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Nizozemska","code":"NL"},{"name":"Norveška","code":"NO"},{"name":"Nova Zelandija","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nova Gvineja","code":"PG"},{"name":"Paragvaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poljska","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalska","code":"PT"},{"name":"Romunija","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Saudova Arabija","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severna Makedonija","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovaška","code":"SK"},{"name":"Slovenija","code":"SI"},{"name":"Srbija","code":"RS"},{"name":"Španija","code":"ES"},{"name":"Šrilanka","code":"LK"},{"name":"Švedska","code":"SE"},{"name":"Švica","code":"CH"},{"name":"Tajska","code":"TH"},{"name":"Tajvan","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunizija","code":"TN"},{"name":"Turčija","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Urugvaj","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Združene države","code":"US"},{"name":"Združeni arabski emirati","code":"AE"},{"name":"Združeno kraljestvo","code":"GB"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
+[{"name":"Alžirija","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Avstralija","code":"AU"},{"name":"Avstrija","code":"AT"},{"name":"Azerbajdžan","code":"AZ"},{"name":"Bahrajn","code":"BH"},{"name":"Bangladeš","code":"BD"},{"name":"Belgija","code":"BE"},{"name":"Belorusija","code":"BY"},{"name":"Bolgarija","code":"BG"},{"name":"Bolivija","code":"BO"},{"name":"Bosna in Hercegovina","code":"BA"},{"name":"Brazilija","code":"BR"},{"name":"Ciper","code":"CY"},{"name":"Češka","code":"CZ"},{"name":"Čile","code":"CL"},{"name":"Črna gora","code":"ME"},{"name":"Danska","code":"DK"},{"name":"Dominikanska republika","code":"DO"},{"name":"Egipt","code":"EG"},{"name":"Ekvador","code":"EC"},{"name":"Estonija","code":"EE"},{"name":"Filipini","code":"PH"},{"name":"Finska","code":"FI"},{"name":"Francija","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Grčija","code":"GR"},{"name":"Gruzija","code":"GE"},{"name":"Gvatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Hrvaška","code":"HR"},{"name":"Indija","code":"IN"},{"name":"Indonezija","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irska","code":"IE"},{"name":"Islandija","code":"IS"},{"name":"Italija","code":"IT"},{"name":"Izrael","code":"IL"},{"name":"Jamajka","code":"JM"},{"name":"Japonska","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanija","code":"JO"},{"name":"Južna Afrika","code":"ZA"},{"name":"Južna Koreja","code":"KR"},{"name":"Kambodža","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Katar","code":"QA"},{"name":"Kazahstan","code":"KZ"},{"name":"Kenija","code":"KE"},{"name":"Kolumbija","code":"CO"},{"name":"Kostarika","code":"CR"},{"name":"Kuvajt","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Latvija","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libija","code":"LY"},{"name":"Lihtenštajn","code":"LI"},{"name":"Litva","code":"LT"},{"name":"Luksemburg","code":"LU"},{"name":"Madžarska","code":"HU"},{"name":"Malezija","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Maroko","code":"MA"},{"name":"Mehika","code":"MX"},{"name":"Moldavija","code":"MD"},{"name":"Nemčija","code":"DE"},{"name":"Nepal","code":"NP"},{"name":"Nigerija","code":"NG"},{"name":"Nikaragva","code":"NI"},{"name":"Nizozemska","code":"NL"},{"name":"Norveška","code":"NO"},{"name":"Nova Zelandija","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nova Gvineja","code":"PG"},{"name":"Paragvaj","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Poljska","code":"PL"},{"name":"Portoriko","code":"PR"},{"name":"Portugalska","code":"PT"},{"name":"Romunija","code":"RO"},{"name":"Rusija","code":"RU"},{"name":"Salvador","code":"SV"},{"name":"Saudova Arabija","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Severna Makedonija","code":"MK"},{"name":"Singapur","code":"SG"},{"name":"Slovaška","code":"SK"},{"name":"Slovenija","code":"SI"},{"name":"Srbija","code":"RS"},{"name":"Španija","code":"ES"},{"name":"Šrilanka","code":"LK"},{"name":"Švedska","code":"SE"},{"name":"Švica","code":"CH"},{"name":"Tajska","code":"TH"},{"name":"Tajvan","code":"TW"},{"name":"Tanzanija","code":"TZ"},{"name":"Tunizija","code":"TN"},{"name":"Turčija","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrajina","code":"UA"},{"name":"Urugvaj","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Združene države","code":"US"},{"name":"Združeni arabski emirati","code":"AE"},{"name":"Združeno kraljestvo","code":"GB"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/sr.json b/static/geolocations/sr.json
index 879a289641b34..a0da9bb55b236 100644
--- a/static/geolocations/sr.json
+++ b/static/geolocations/sr.json
@@ -1 +1 @@
-[{"name":"Азербејџан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Аустралија","code":"AU"},{"name":"Аустрија","code":"AT"},{"name":"Бангладеш","code":"BD"},{"name":"Бахреин","code":"BH"},{"name":"Белгија","code":"BE"},{"name":"Белорусија","code":"BY"},{"name":"Боливија","code":"BO"},{"name":"Босна и Херцеговина","code":"BA"},{"name":"Бразил","code":"BR"},{"name":"Бугарска","code":"BG"},{"name":"Венецуела","code":"VE"},{"name":"Вијетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Грузија","code":"GE"},{"name":"Грчка","code":"GR"},{"name":"Данска","code":"DK"},{"name":"Доминиканска Република","code":"DO"},{"name":"Египат","code":"EG"},{"name":"Еквадор","code":"EC"},{"name":"Естонија","code":"EE"},{"name":"Зимбабве","code":"ZW"},{"name":"Израел","code":"IL"},{"name":"Индија","code":"IN"},{"name":"Индонезија","code":"ID"},{"name":"Ирак","code":"IQ"},{"name":"Ирска","code":"IE"},{"name":"Исланд","code":"IS"},{"name":"Италија","code":"IT"},{"name":"Јамајка","code":"JM"},{"name":"Јапан","code":"JP"},{"name":"Јемен","code":"YE"},{"name":"Јордан","code":"JO"},{"name":"Јужна Кореја","code":"KR"},{"name":"Јужноафричка Република","code":"ZA"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоџа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кенија","code":"KE"},{"name":"Кипар","code":"CY"},{"name":"Колумбија","code":"CO"},{"name":"Костарика","code":"CR"},{"name":"Кувајт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Летонија","code":"LV"},{"name":"Либан","code":"LB"},{"name":"Либија","code":"LY"},{"name":"Литванија","code":"LT"},{"name":"Лихтенштајн","code":"LI"},{"name":"Луксембург","code":"LU"},{"name":"Мађарска","code":"HU"},{"name":"Малезија","code":"MY"},{"name":"Малта","code":"MT"},{"name":"Мароко","code":"MA"},{"name":"Мексико","code":"MX"},{"name":"Немачка","code":"DE"},{"name":"Непал","code":"NP"},{"name":"Нигерија","code":"NG"},{"name":"Никарагва","code":"NI"},{"name":"Нови Зеланд","code":"NZ"},{"name":"Норвешка","code":"NO"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа Нова Гвинеја","code":"PG"},{"name":"Парагвај","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Пољска","code":"PL"},{"name":"Порторико","code":"PR"},{"name":"Португалија","code":"PT"},{"name":"Румунија","code":"RO"},{"name":"Русија","code":"RU"},{"name":"САД","code":"US"},{"name":"Салвадор","code":"SV"},{"name":"Саудијска Арабија","code":"SA"},{"name":"Северна Македонија","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сингапур","code":"SG"},{"name":"Словачка","code":"SK"},{"name":"Словенија","code":"SI"},{"name":"Србија","code":"RS"},{"name":"Тајван","code":"TW"},{"name":"Тајланд","code":"TH"},{"name":"Танзанија","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турска","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Уједињени Арапски Емирати","code":"AE"},{"name":"Уједињено Краљевство","code":"GB"},{"name":"Украјина","code":"UA"},{"name":"Уругвај","code":"UY"},{"name":"Филипини","code":"PH"},{"name":"Финска","code":"FI"},{"name":"Француска","code":"FR"},{"name":"Холандија","code":"NL"},{"name":"Хонгконг","code":"HK"},{"name":"Хондурас","code":"HN"},{"name":"Хрватска","code":"HR"},{"name":"Црна Гора","code":"ME"},{"name":"Чешка","code":"CZ"},{"name":"Чиле","code":"CL"},{"name":"Швајцарска","code":"CH"},{"name":"Шведска","code":"SE"},{"name":"Шпанија","code":"ES"},{"name":"Шри Ланка","code":"LK"}]
\ No newline at end of file
+[{"name":"Азербејџан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Аустралија","code":"AU"},{"name":"Аустрија","code":"AT"},{"name":"Бангладеш","code":"BD"},{"name":"Бахреин","code":"BH"},{"name":"Белгија","code":"BE"},{"name":"Белорусија","code":"BY"},{"name":"Боливија","code":"BO"},{"name":"Босна и Херцеговина","code":"BA"},{"name":"Бразил","code":"BR"},{"name":"Бугарска","code":"BG"},{"name":"Венецуела","code":"VE"},{"name":"Вијетнам","code":"VN"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Грузија","code":"GE"},{"name":"Грчка","code":"GR"},{"name":"Данска","code":"DK"},{"name":"Доминиканска Република","code":"DO"},{"name":"Египат","code":"EG"},{"name":"Еквадор","code":"EC"},{"name":"Естонија","code":"EE"},{"name":"Зимбабве","code":"ZW"},{"name":"Израел","code":"IL"},{"name":"Индија","code":"IN"},{"name":"Индонезија","code":"ID"},{"name":"Ирак","code":"IQ"},{"name":"Ирска","code":"IE"},{"name":"Исланд","code":"IS"},{"name":"Италија","code":"IT"},{"name":"Јамајка","code":"JM"},{"name":"Јапан","code":"JP"},{"name":"Јемен","code":"YE"},{"name":"Јордан","code":"JO"},{"name":"Јужна Кореја","code":"KR"},{"name":"Јужноафричка Република","code":"ZA"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоџа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кенија","code":"KE"},{"name":"Кипар","code":"CY"},{"name":"Колумбија","code":"CO"},{"name":"Костарика","code":"CR"},{"name":"Кувајт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Летонија","code":"LV"},{"name":"Либан","code":"LB"},{"name":"Либија","code":"LY"},{"name":"Литванија","code":"LT"},{"name":"Лихтенштајн","code":"LI"},{"name":"Луксембург","code":"LU"},{"name":"Мађарска","code":"HU"},{"name":"Малезија","code":"MY"},{"name":"Малта","code":"MT"},{"name":"Мароко","code":"MA"},{"name":"Мексико","code":"MX"},{"name":"Молдавија","code":"MD"},{"name":"Немачка","code":"DE"},{"name":"Непал","code":"NP"},{"name":"Нигерија","code":"NG"},{"name":"Никарагва","code":"NI"},{"name":"Нови Зеланд","code":"NZ"},{"name":"Норвешка","code":"NO"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа Нова Гвинеја","code":"PG"},{"name":"Парагвај","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Пољска","code":"PL"},{"name":"Порторико","code":"PR"},{"name":"Португалија","code":"PT"},{"name":"Румунија","code":"RO"},{"name":"Русија","code":"RU"},{"name":"САД","code":"US"},{"name":"Салвадор","code":"SV"},{"name":"Саудијска Арабија","code":"SA"},{"name":"Северна Македонија","code":"MK"},{"name":"Сенегал","code":"SN"},{"name":"Сингапур","code":"SG"},{"name":"Словачка","code":"SK"},{"name":"Словенија","code":"SI"},{"name":"Србија","code":"RS"},{"name":"Тајван","code":"TW"},{"name":"Тајланд","code":"TH"},{"name":"Танзанија","code":"TZ"},{"name":"Тунис","code":"TN"},{"name":"Турска","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Уједињени Арапски Емирати","code":"AE"},{"name":"Уједињено Краљевство","code":"GB"},{"name":"Украјина","code":"UA"},{"name":"Уругвај","code":"UY"},{"name":"Филипини","code":"PH"},{"name":"Финска","code":"FI"},{"name":"Француска","code":"FR"},{"name":"Холандија","code":"NL"},{"name":"Хонгконг","code":"HK"},{"name":"Хондурас","code":"HN"},{"name":"Хрватска","code":"HR"},{"name":"Црна Гора","code":"ME"},{"name":"Чешка","code":"CZ"},{"name":"Чиле","code":"CL"},{"name":"Швајцарска","code":"CH"},{"name":"Шведска","code":"SE"},{"name":"Шпанија","code":"ES"},{"name":"Шри Ланка","code":"LK"}]
\ No newline at end of file
diff --git a/static/geolocations/sv.json b/static/geolocations/sv.json
index 6befbb46af8ae..dc6063911db3c 100644
--- a/static/geolocations/sv.json
+++ b/static/geolocations/sv.json
@@ -1 +1 @@
-[{"name":"Algeriet","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australien","code":"AU"},{"name":"Azerbadjan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belgien","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnien-Hercegovina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cypern","code":"CY"},{"name":"Danmark","code":"DK"},{"name":"Dominikanska republiken","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypten","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinerna","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Förenade Arabemiraten","code":"AE"},{"name":"Förenade kungariket","code":"GB"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grekland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanien","code":"JO"},{"name":"Kambodja","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marocko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Nederländerna","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nordmakedonien","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Nya Zeeland","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nya Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Rumänien","code":"RO"},{"name":"Ryssland","code":"RU"},{"name":"Saudiarabien","code":"SA"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakien","code":"SK"},{"name":"Slovenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sverige","code":"SE"},{"name":"Sydafrika","code":"ZA"},{"name":"Sydkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tjeckien","code":"CZ"},{"name":"Tunisien","code":"TN"},{"name":"Turkiet","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungern","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Vitryssland","code":"BY"},{"name":"Zimbabwe","code":"ZW"},{"name":"Österrike","code":"AT"}]
\ No newline at end of file
+[{"name":"Algeriet","code":"DZ"},{"name":"Argentina","code":"AR"},{"name":"Australien","code":"AU"},{"name":"Azerbadjan","code":"AZ"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belgien","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnien-Hercegovina","code":"BA"},{"name":"Brasilien","code":"BR"},{"name":"Bulgarien","code":"BG"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cypern","code":"CY"},{"name":"Danmark","code":"DK"},{"name":"Dominikanska republiken","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypten","code":"EG"},{"name":"El Salvador","code":"SV"},{"name":"Estland","code":"EE"},{"name":"Filippinerna","code":"PH"},{"name":"Finland","code":"FI"},{"name":"Frankrike","code":"FR"},{"name":"Förenade arabemiraten","code":"AE"},{"name":"Förenade kungariket","code":"GB"},{"name":"Georgien","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Grekland","code":"GR"},{"name":"Guatemala","code":"GT"},{"name":"Honduras","code":"HN"},{"name":"Hongkong","code":"HK"},{"name":"Indien","code":"IN"},{"name":"Indonesien","code":"ID"},{"name":"Irak","code":"IQ"},{"name":"Irland","code":"IE"},{"name":"Island","code":"IS"},{"name":"Israel","code":"IL"},{"name":"Italien","code":"IT"},{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP"},{"name":"Jemen","code":"YE"},{"name":"Jordanien","code":"JO"},{"name":"Kambodja","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Kazakstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kroatien","code":"HR"},{"name":"Kuwait","code":"KW"},{"name":"Laos","code":"LA"},{"name":"Lettland","code":"LV"},{"name":"Libanon","code":"LB"},{"name":"Libyen","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litauen","code":"LT"},{"name":"Luxemburg","code":"LU"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Marocko","code":"MA"},{"name":"Mexiko","code":"MX"},{"name":"Moldavien","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Nederländerna","code":"NL"},{"name":"Nepal","code":"NP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Nordmakedonien","code":"MK"},{"name":"Norge","code":"NO"},{"name":"Nya Zeeland","code":"NZ"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Nya Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polen","code":"PL"},{"name":"Portugal","code":"PT"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Rumänien","code":"RO"},{"name":"Ryssland","code":"RU"},{"name":"Saudiarabien","code":"SA"},{"name":"Schweiz","code":"CH"},{"name":"Senegal","code":"SN"},{"name":"Serbien","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakien","code":"SK"},{"name":"Slovenien","code":"SI"},{"name":"Spanien","code":"ES"},{"name":"Sri Lanka","code":"LK"},{"name":"Sverige","code":"SE"},{"name":"Sydafrika","code":"ZA"},{"name":"Sydkorea","code":"KR"},{"name":"Taiwan","code":"TW"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH"},{"name":"Tjeckien","code":"CZ"},{"name":"Tunisien","code":"TN"},{"name":"Turkiet","code":"TR"},{"name":"Tyskland","code":"DE"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Ungern","code":"HU"},{"name":"Uruguay","code":"UY"},{"name":"USA","code":"US"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Zimbabwe","code":"ZW"},{"name":"Österrike","code":"AT"}]
\ No newline at end of file
diff --git a/static/geolocations/tr.json b/static/geolocations/tr.json
index a2dbb50f5b639..e01a8dcb9eec2 100644
--- a/static/geolocations/tr.json
+++ b/static/geolocations/tr.json
@@ -1 +1 @@
-[{"name":"Almanya","code":"DE"},{"name":"Amerika Birleşik Devletleri","code":"US"},{"name":"Arjantin","code":"AR"},{"name":"Avustralya","code":"AU"},{"name":"Avusturya","code":"AT"},{"name":"Azerbaycan","code":"AZ"},{"name":"Bahreyn","code":"BH"},{"name":"Bangladeş","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belçika","code":"BE"},{"name":"Birleşik Arap Emirlikleri","code":"AE"},{"name":"Bolivya","code":"BO"},{"name":"Bosna ve Hersek","code":"BA"},{"name":"Brezilya","code":"BR"},{"name":"Bulgaristan","code":"BG"},{"name":"Cezayir","code":"DZ"},{"name":"Çekya","code":"CZ"},{"name":"Danimarka","code":"DK"},{"name":"Dominik Cumhuriyeti","code":"DO"},{"name":"Ekvador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Endonezya","code":"ID"},{"name":"Estonya","code":"EE"},{"name":"Fas","code":"MA"},{"name":"Filipinler","code":"PH"},{"name":"Finlandiya","code":"FI"},{"name":"Fransa","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Güney Afrika","code":"ZA"},{"name":"Güney Kıbrıs Rum Yönetimi","code":"CY"},{"name":"Güney Kore","code":"KR"},{"name":"Gürcistan","code":"GE"},{"name":"Hırvatistan","code":"HR"},{"name":"Hindistan","code":"IN"},{"name":"Hollanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Irak","code":"IQ"},{"name":"İngiltere","code":"GB"},{"name":"İrlanda","code":"IE"},{"name":"İspanya","code":"ES"},{"name":"İsrail","code":"IL"},{"name":"İsveç","code":"SE"},{"name":"İsviçre","code":"CH"},{"name":"İtalya","code":"IT"},{"name":"İzlanda","code":"IS"},{"name":"Jamaika","code":"JM"},{"name":"Japonya","code":"JP"},{"name":"Kamboçya","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Karadağ","code":"ME"},{"name":"Katar","code":"QA"},{"name":"Kazakistan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolombiya","code":"CO"},{"name":"Kosta Rika","code":"CR"},{"name":"Kuveyt","code":"KW"},{"name":"Kuzey Makedonya","code":"MK"},{"name":"Laos","code":"LA"},{"name":"Letonya","code":"LV"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litvanya","code":"LT"},{"name":"Lübnan","code":"LB"},{"name":"Lüksemburg","code":"LU"},{"name":"Macaristan","code":"HU"},{"name":"Malezya","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Meksika","code":"MX"},{"name":"Mısır","code":"EG"},{"name":"Nepal","code":"NP"},{"name":"Nijerya","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norveç","code":"NO"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Yeni Gine","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonya","code":"PL"},{"name":"Portekiz","code":"PT"},{"name":"Porto Riko","code":"PR"},{"name":"Romanya","code":"RO"},{"name":"Rusya","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sırbistan","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Slovakya","code":"SK"},{"name":"Slovenya","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suudi Arabistan","code":"SA"},{"name":"Şili","code":"CL"},{"name":"Tanzanya","code":"TZ"},{"name":"Tayland","code":"TH"},{"name":"Tayvan","code":"TW"},{"name":"Tunus","code":"TN"},{"name":"Türkiye","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrayna","code":"UA"},{"name":"Umman","code":"OM"},{"name":"Uruguay","code":"UY"},{"name":"Ürdün","code":"JO"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Yeni Zelanda","code":"NZ"},{"name":"Yunanistan","code":"GR"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
+[{"name":"Almanya","code":"DE"},{"name":"Amerika Birleşik Devletleri","code":"US"},{"name":"Arjantin","code":"AR"},{"name":"Avustralya","code":"AU"},{"name":"Avusturya","code":"AT"},{"name":"Azerbaycan","code":"AZ"},{"name":"Bahreyn","code":"BH"},{"name":"Bangladeş","code":"BD"},{"name":"Belarus","code":"BY"},{"name":"Belçika","code":"BE"},{"name":"Birleşik Arap Emirlikleri","code":"AE"},{"name":"Bolivya","code":"BO"},{"name":"Bosna ve Hersek","code":"BA"},{"name":"Brezilya","code":"BR"},{"name":"Bulgaristan","code":"BG"},{"name":"Cezayir","code":"DZ"},{"name":"Çekya","code":"CZ"},{"name":"Danimarka","code":"DK"},{"name":"Dominik Cumhuriyeti","code":"DO"},{"name":"Ekvador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Endonezya","code":"ID"},{"name":"Estonya","code":"EE"},{"name":"Fas","code":"MA"},{"name":"Filipinler","code":"PH"},{"name":"Finlandiya","code":"FI"},{"name":"Fransa","code":"FR"},{"name":"Gana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Güney Afrika","code":"ZA"},{"name":"Güney Kıbrıs Rum Yönetimi","code":"CY"},{"name":"Güney Kore","code":"KR"},{"name":"Gürcistan","code":"GE"},{"name":"Hırvatistan","code":"HR"},{"name":"Hindistan","code":"IN"},{"name":"Hollanda","code":"NL"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong","code":"HK"},{"name":"Irak","code":"IQ"},{"name":"İngiltere","code":"GB"},{"name":"İrlanda","code":"IE"},{"name":"İspanya","code":"ES"},{"name":"İsrail","code":"IL"},{"name":"İsveç","code":"SE"},{"name":"İsviçre","code":"CH"},{"name":"İtalya","code":"IT"},{"name":"İzlanda","code":"IS"},{"name":"Jamaika","code":"JM"},{"name":"Japonya","code":"JP"},{"name":"Kamboçya","code":"KH"},{"name":"Kanada","code":"CA"},{"name":"Karadağ","code":"ME"},{"name":"Katar","code":"QA"},{"name":"Kazakistan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kolombiya","code":"CO"},{"name":"Kosta Rika","code":"CR"},{"name":"Kuveyt","code":"KW"},{"name":"Kuzey Makedonya","code":"MK"},{"name":"Laos","code":"LA"},{"name":"Letonya","code":"LV"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Litvanya","code":"LT"},{"name":"Lübnan","code":"LB"},{"name":"Lüksemburg","code":"LU"},{"name":"Macaristan","code":"HU"},{"name":"Malezya","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Meksika","code":"MX"},{"name":"Mısır","code":"EG"},{"name":"Moldova","code":"MD"},{"name":"Nepal","code":"NP"},{"name":"Nijerya","code":"NG"},{"name":"Nikaragua","code":"NI"},{"name":"Norveç","code":"NO"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua Yeni Gine","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Polonya","code":"PL"},{"name":"Portekiz","code":"PT"},{"name":"Porto Riko","code":"PR"},{"name":"Romanya","code":"RO"},{"name":"Rusya","code":"RU"},{"name":"Senegal","code":"SN"},{"name":"Sırbistan","code":"RS"},{"name":"Singapur","code":"SG"},{"name":"Slovakya","code":"SK"},{"name":"Slovenya","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Suudi Arabistan","code":"SA"},{"name":"Şili","code":"CL"},{"name":"Tanzanya","code":"TZ"},{"name":"Tayland","code":"TH"},{"name":"Tayvan","code":"TW"},{"name":"Tunus","code":"TN"},{"name":"Türkiye","code":"TR"},{"name":"Uganda","code":"UG"},{"name":"Ukrayna","code":"UA"},{"name":"Umman","code":"OM"},{"name":"Uruguay","code":"UY"},{"name":"Ürdün","code":"JO"},{"name":"Venezuela","code":"VE"},{"name":"Vietnam","code":"VN"},{"name":"Yemen","code":"YE"},{"name":"Yeni Zelanda","code":"NZ"},{"name":"Yunanistan","code":"GR"},{"name":"Zimbabve","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/uk.json b/static/geolocations/uk.json
index ea6048e87a339..1934f6f24a9c0 100644
--- a/static/geolocations/uk.json
+++ b/static/geolocations/uk.json
@@ -1 +1 @@
-[{"name":"Австралія","code":"AU"},{"name":"Австрія","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Бельгія","code":"BE"},{"name":"Білорусь","code":"BY"},{"name":"Болгарія","code":"BG"},{"name":"Болівія","code":"BO"},{"name":"Боснія та Герцеговина","code":"BA"},{"name":"Бразилія","code":"BR"},{"name":"В'єтнам","code":"VN"},{"name":"Велика Британія","code":"GB"},{"name":"Венесуела","code":"VE"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Гондурас","code":"HN"},{"name":"Гонконг","code":"HK"},{"name":"Греція","code":"GR"},{"name":"Грузія","code":"GE"},{"name":"Данія","code":"DK"},{"name":"Домініканська Республіка","code":"DO"},{"name":"Еквадор","code":"EC"},{"name":"Естонія","code":"EE"},{"name":"Єгипет","code":"EG"},{"name":"Ємен","code":"YE"},{"name":"Зімбабве","code":"ZW"},{"name":"Ізраїль","code":"IL"},{"name":"Індія","code":"IN"},{"name":"Індонезія","code":"ID"},{"name":"Ірак","code":"IQ"},{"name":"Ірландія","code":"IE"},{"name":"Ісландія","code":"IS"},{"name":"Іспанія","code":"ES"},{"name":"Італія","code":"IT"},{"name":"Йорданія","code":"JO"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кенія","code":"KE"},{"name":"Кіпр","code":"CY"},{"name":"Колумбія","code":"CO"},{"name":"Коста-Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвія","code":"LV"},{"name":"Литва","code":"LT"},{"name":"Ліван","code":"LB"},{"name":"Лівія","code":"LY"},{"name":"Ліхтенштейн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзія","code":"MY"},{"name":"Мальта","code":"MT"},{"name":"Марокко","code":"MA"},{"name":"Мексика","code":"MX"},{"name":"Непал","code":"NP"},{"name":"Нігерія","code":"NG"},{"name":"Нідерланди","code":"NL"},{"name":"Нікарагуа","code":"NI"},{"name":"Німеччина","code":"DE"},{"name":"Нова Зеландія","code":"NZ"},{"name":"Норвегія","code":"NO"},{"name":"Об'єднані Арабські Емірати","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа – Нова Гвінея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Південна Корея","code":"KR"},{"name":"Південно-Африканська Республіка","code":"ZA"},{"name":"Північна Македонія","code":"MK"},{"name":"Польща","code":"PL"},{"name":"Португалія","code":"PT"},{"name":"Пуерто-Рико","code":"PR"},{"name":"Росія","code":"RU"},{"name":"Румунія","code":"RO"},{"name":"Сальвадор","code":"SV"},{"name":"Саудівська Аравія","code":"SA"},{"name":"Сенегал","code":"SN"},{"name":"Сербія","code":"RS"},{"name":"Сінгапур","code":"SG"},{"name":"Словаччина","code":"SK"},{"name":"Словенія","code":"SI"},{"name":"Сполучені Штати Америки","code":"US"},{"name":"Таїланд","code":"TH"},{"name":"Тайвань","code":"TW"},{"name":"Танзанія","code":"TZ"},{"name":"Туніс","code":"TN"},{"name":"Туреччина","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Угорщина","code":"HU"},{"name":"Україна","code":"UA"},{"name":"Уругвай","code":"UY"},{"name":"Філіппіни","code":"PH"},{"name":"Фінляндія","code":"FI"},{"name":"Франція","code":"FR"},{"name":"Хорватія","code":"HR"},{"name":"Чехія","code":"CZ"},{"name":"Чилі","code":"CL"},{"name":"Чорногорія","code":"ME"},{"name":"Швейцарія","code":"CH"},{"name":"Швеція","code":"SE"},{"name":"Шрі-Ланка","code":"LK"},{"name":"Ямайка","code":"JM"},{"name":"Японія","code":"JP"}]
\ No newline at end of file
+[{"name":"Австралія","code":"AU"},{"name":"Австрія","code":"AT"},{"name":"Азербайджан","code":"AZ"},{"name":"Алжир","code":"DZ"},{"name":"Аргентина","code":"AR"},{"name":"Бангладеш","code":"BD"},{"name":"Бахрейн","code":"BH"},{"name":"Бельгія","code":"BE"},{"name":"Білорусь","code":"BY"},{"name":"Болгарія","code":"BG"},{"name":"Болівія","code":"BO"},{"name":"Боснія та Герцеговина","code":"BA"},{"name":"Бразилія","code":"BR"},{"name":"В'єтнам","code":"VN"},{"name":"Велика Британія","code":"GB"},{"name":"Венесуела","code":"VE"},{"name":"Гана","code":"GH"},{"name":"Гватемала","code":"GT"},{"name":"Гондурас","code":"HN"},{"name":"Гонконг","code":"HK"},{"name":"Греція","code":"GR"},{"name":"Грузія","code":"GE"},{"name":"Данія","code":"DK"},{"name":"Домініканська Республіка","code":"DO"},{"name":"Еквадор","code":"EC"},{"name":"Естонія","code":"EE"},{"name":"Єгипет","code":"EG"},{"name":"Ємен","code":"YE"},{"name":"Зімбабве","code":"ZW"},{"name":"Ізраїль","code":"IL"},{"name":"Індія","code":"IN"},{"name":"Індонезія","code":"ID"},{"name":"Ірак","code":"IQ"},{"name":"Ірландія","code":"IE"},{"name":"Ісландія","code":"IS"},{"name":"Іспанія","code":"ES"},{"name":"Італія","code":"IT"},{"name":"Йорданія","code":"JO"},{"name":"Казахстан","code":"KZ"},{"name":"Камбоджа","code":"KH"},{"name":"Канада","code":"CA"},{"name":"Катар","code":"QA"},{"name":"Кенія","code":"KE"},{"name":"Кіпр","code":"CY"},{"name":"Колумбія","code":"CO"},{"name":"Коста-Рика","code":"CR"},{"name":"Кувейт","code":"KW"},{"name":"Лаос","code":"LA"},{"name":"Латвія","code":"LV"},{"name":"Литва","code":"LT"},{"name":"Ліван","code":"LB"},{"name":"Лівія","code":"LY"},{"name":"Ліхтенштейн","code":"LI"},{"name":"Люксембург","code":"LU"},{"name":"Малайзія","code":"MY"},{"name":"Мальта","code":"MT"},{"name":"Марокко","code":"MA"},{"name":"Мексика","code":"MX"},{"name":"Молдова","code":"MD"},{"name":"Непал","code":"NP"},{"name":"Нігерія","code":"NG"},{"name":"Нідерланди","code":"NL"},{"name":"Нікарагуа","code":"NI"},{"name":"Німеччина","code":"DE"},{"name":"Нова Зеландія","code":"NZ"},{"name":"Норвегія","code":"NO"},{"name":"Об'єднані Арабські Емірати","code":"AE"},{"name":"Оман","code":"OM"},{"name":"Пакистан","code":"PK"},{"name":"Панама","code":"PA"},{"name":"Папуа – Нова Гвінея","code":"PG"},{"name":"Парагвай","code":"PY"},{"name":"Перу","code":"PE"},{"name":"Південна Корея","code":"KR"},{"name":"Південно-Африканська Республіка","code":"ZA"},{"name":"Північна Македонія","code":"MK"},{"name":"Польща","code":"PL"},{"name":"Португалія","code":"PT"},{"name":"Пуерто-Рико","code":"PR"},{"name":"Росія","code":"RU"},{"name":"Румунія","code":"RO"},{"name":"Сальвадор","code":"SV"},{"name":"Саудівська Аравія","code":"SA"},{"name":"Сенегал","code":"SN"},{"name":"Сербія","code":"RS"},{"name":"Сінгапур","code":"SG"},{"name":"Словаччина","code":"SK"},{"name":"Словенія","code":"SI"},{"name":"Сполучені Штати Америки","code":"US"},{"name":"Таїланд","code":"TH"},{"name":"Тайвань","code":"TW"},{"name":"Танзанія","code":"TZ"},{"name":"Туніс","code":"TN"},{"name":"Туреччина","code":"TR"},{"name":"Уганда","code":"UG"},{"name":"Угорщина","code":"HU"},{"name":"Україна","code":"UA"},{"name":"Уругвай","code":"UY"},{"name":"Філіппіни","code":"PH"},{"name":"Фінляндія","code":"FI"},{"name":"Франція","code":"FR"},{"name":"Хорватія","code":"HR"},{"name":"Чехія","code":"CZ"},{"name":"Чилі","code":"CL"},{"name":"Чорногорія","code":"ME"},{"name":"Швейцарія","code":"CH"},{"name":"Швеція","code":"SE"},{"name":"Шрі-Ланка","code":"LK"},{"name":"Ямайка","code":"JM"},{"name":"Японія","code":"JP"}]
\ No newline at end of file
diff --git a/static/geolocations/vi.json b/static/geolocations/vi.json
index 56d5d38679d7b..f258fd274fe61 100644
--- a/static/geolocations/vi.json
+++ b/static/geolocations/vi.json
@@ -1 +1 @@
-[{"name":"Ả-Rập Xê-út","code":"SA"},{"name":"Ai Cập","code":"EG"},{"name":"Algeria","code":"DZ"},{"name":"Áo","code":"AT"},{"name":"Argentina","code":"AR"},{"name":"Azerbaijan","code":"AZ"},{"name":"Ấn Độ","code":"IN"},{"name":"Ba Lan","code":"PL"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Bắc Macedonia","code":"MK"},{"name":"Belarus","code":"BY"},{"name":"Bỉ","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia và Herzegovina","code":"BA"},{"name":"Bồ Đào Nha","code":"PT"},{"name":"Brazil","code":"BR"},{"name":"Bungary","code":"BG"},{"name":"Các Tiểu Vương quốc Ả Rập Thống nhất","code":"AE"},{"name":"Campuchia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cộng hoà Dominica","code":"DO"},{"name":"Croatia","code":"HR"},{"name":"Đài Loan","code":"TW"},{"name":"Đan Mạch","code":"DK"},{"name":"Đảo Síp","code":"CY"},{"name":"Đức","code":"DE"},{"name":"Ecuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hà Lan","code":"NL"},{"name":"Hàn Quốc","code":"KR"},{"name":"Hoa Kỳ","code":"US"},{"name":"Honduras","code":"HN"},{"name":"Hồng Kông","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Hy Lạp","code":"GR"},{"name":"Iceland","code":"IS"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Jamaica","code":"JM"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Lào","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Ma-rốc","code":"MA"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Montenegro","code":"ME"},{"name":"Na Uy","code":"NO"},{"name":"Nam Phi","code":"ZA"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nga","code":"RU"},{"name":"Nhật Bản","code":"JP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pháp","code":"FR"},{"name":"Phần Lan","code":"FI"},{"name":"Philipin","code":"PH"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Rumani","code":"RO"},{"name":"Séc","code":"CZ"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Tanzania","code":"TZ"},{"name":"Tây Ban Nha","code":"ES"},{"name":"Thái Lan","code":"TH"},{"name":"Thổ Nhĩ Kỳ","code":"TR"},{"name":"Thuỵ Điển","code":"SE"},{"name":"Thuỵ Sĩ","code":"CH"},{"name":"Tunisia","code":"TN"},{"name":"Úc","code":"AU"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Việt Nam","code":"VN"},{"name":"Vương quốc Anh","code":"GB"},{"name":"Ý","code":"IT"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
+[{"name":"Ả-Rập Xê-út","code":"SA"},{"name":"Ai Cập","code":"EG"},{"name":"Algeria","code":"DZ"},{"name":"Áo","code":"AT"},{"name":"Argentina","code":"AR"},{"name":"Azerbaijan","code":"AZ"},{"name":"Ấn Độ","code":"IN"},{"name":"Ba Lan","code":"PL"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Bắc Macedonia","code":"MK"},{"name":"Belarus","code":"BY"},{"name":"Bỉ","code":"BE"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia và Herzegovina","code":"BA"},{"name":"Bồ Đào Nha","code":"PT"},{"name":"Brazil","code":"BR"},{"name":"Bungary","code":"BG"},{"name":"Các Tiểu Vương quốc Ả Rập Thống nhất","code":"AE"},{"name":"Campuchia","code":"KH"},{"name":"Canada","code":"CA"},{"name":"Chile","code":"CL"},{"name":"Colombia","code":"CO"},{"name":"Costa Rica","code":"CR"},{"name":"Cộng hoà Dominica","code":"DO"},{"name":"Croatia","code":"HR"},{"name":"Đài Loan","code":"TW"},{"name":"Đan Mạch","code":"DK"},{"name":"Đảo Síp","code":"CY"},{"name":"Đức","code":"DE"},{"name":"Ecuador","code":"EC"},{"name":"El Salvador","code":"SV"},{"name":"Estonia","code":"EE"},{"name":"Georgia","code":"GE"},{"name":"Ghana","code":"GH"},{"name":"Guatemala","code":"GT"},{"name":"Hà Lan","code":"NL"},{"name":"Hàn Quốc","code":"KR"},{"name":"Hoa Kỳ","code":"US"},{"name":"Honduras","code":"HN"},{"name":"Hồng Kông","code":"HK"},{"name":"Hungary","code":"HU"},{"name":"Hy Lạp","code":"GR"},{"name":"Iceland","code":"IS"},{"name":"Indonesia","code":"ID"},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE"},{"name":"Israel","code":"IL"},{"name":"Jamaica","code":"JM"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kuwait","code":"KW"},{"name":"Lào","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Ma-rốc","code":"MA"},{"name":"Malaysia","code":"MY"},{"name":"Malta","code":"MT"},{"name":"Mexico","code":"MX"},{"name":"Moldova","code":"MD"},{"name":"Montenegro","code":"ME"},{"name":"Na Uy","code":"NO"},{"name":"Nam Phi","code":"ZA"},{"name":"Nepal","code":"NP"},{"name":"New Zealand","code":"NZ"},{"name":"Nga","code":"RU"},{"name":"Nhật Bản","code":"JP"},{"name":"Nicaragua","code":"NI"},{"name":"Nigeria","code":"NG"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Panama","code":"PA"},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE"},{"name":"Pháp","code":"FR"},{"name":"Phần Lan","code":"FI"},{"name":"Philipin","code":"PH"},{"name":"Puerto Rico","code":"PR"},{"name":"Qatar","code":"QA"},{"name":"Rumani","code":"RO"},{"name":"Séc","code":"CZ"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Singapore","code":"SG"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Sri Lanka","code":"LK"},{"name":"Tanzania","code":"TZ"},{"name":"Tây Ban Nha","code":"ES"},{"name":"Thái Lan","code":"TH"},{"name":"Thổ Nhĩ Kỳ","code":"TR"},{"name":"Thuỵ Điển","code":"SE"},{"name":"Thuỵ Sĩ","code":"CH"},{"name":"Tunisia","code":"TN"},{"name":"Úc","code":"AU"},{"name":"Uganda","code":"UG"},{"name":"Ukraina","code":"UA"},{"name":"Uruguay","code":"UY"},{"name":"Venezuela","code":"VE"},{"name":"Việt Nam","code":"VN"},{"name":"Vương quốc Anh","code":"GB"},{"name":"Ý","code":"IT"},{"name":"Yemen","code":"YE"},{"name":"Zimbabwe","code":"ZW"}]
\ No newline at end of file
diff --git a/static/geolocations/zh-CN.json b/static/geolocations/zh-CN.json
index b94504f1b621b..75418e2d1ba1b 100644
--- a/static/geolocations/zh-CN.json
+++ b/static/geolocations/zh-CN.json
@@ -1 +1 @@
-[{"name":"阿尔及利亚","code":"DZ"},{"name":"阿根廷","code":"AR"},{"name":"阿拉伯联合酋长国","code":"AE"},{"name":"阿曼","code":"OM"},{"name":"阿塞拜疆","code":"AZ"},{"name":"埃及","code":"EG"},{"name":"爱尔兰","code":"IE"},{"name":"爱沙尼亚","code":"EE"},{"name":"奥地利","code":"AT"},{"name":"澳大利亚","code":"AU"},{"name":"巴布亚新几内亚","code":"PG"},{"name":"巴基斯坦","code":"PK"},{"name":"巴拉圭","code":"PY"},{"name":"巴林","code":"BH"},{"name":"巴拿马","code":"PA"},{"name":"巴西","code":"BR"},{"name":"白俄罗斯","code":"BY"},{"name":"保加利亚","code":"BG"},{"name":"北马其顿","code":"MK"},{"name":"比利时","code":"BE"},{"name":"冰岛","code":"IS"},{"name":"波多黎各","code":"PR"},{"name":"波兰","code":"PL"},{"name":"波斯尼亚和黑塞哥维那","code":"BA"},{"name":"玻利维亚","code":"BO"},{"name":"丹麦","code":"DK"},{"name":"德国","code":"DE"},{"name":"多米尼加共和国","code":"DO"},{"name":"俄罗斯","code":"RU"},{"name":"厄瓜多尔","code":"EC"},{"name":"法国","code":"FR"},{"name":"菲律宾","code":"PH"},{"name":"芬兰","code":"FI"},{"name":"哥伦比亚","code":"CO"},{"name":"哥斯达黎加","code":"CR"},{"name":"格鲁吉亚共和国","code":"GE"},{"name":"哈萨克斯坦","code":"KZ"},{"name":"韩国","code":"KR"},{"name":"荷兰","code":"NL"},{"name":"黑山共和国","code":"ME"},{"name":"洪都拉斯","code":"HN"},{"name":"加拿大","code":"CA"},{"name":"加纳","code":"GH"},{"name":"柬埔寨","code":"KH"},{"name":"捷克","code":"CZ"},{"name":"津巴布韦","code":"ZW"},{"name":"卡塔尔","code":"QA"},{"name":"科威特","code":"KW"},{"name":"克罗地亚","code":"HR"},{"name":"肯尼亚","code":"KE"},{"name":"拉脱维亚","code":"LV"},{"name":"老挝","code":"LA"},{"name":"黎巴嫩","code":"LB"},{"name":"立陶宛","code":"LT"},{"name":"利比亚","code":"LY"},{"name":"列支敦士登","code":"LI"},{"name":"卢森堡公国","code":"LU"},{"name":"罗马尼亚","code":"RO"},{"name":"马耳他","code":"MT"},{"name":"马来西亚","code":"MY"},{"name":"美国","code":"US"},{"name":"孟加拉国","code":"BD"},{"name":"秘鲁","code":"PE"},{"name":"摩洛哥","code":"MA"},{"name":"墨西哥","code":"MX"},{"name":"南非","code":"ZA"},{"name":"尼加拉瓜","code":"NI"},{"name":"尼泊尔","code":"NP"},{"name":"尼日利亚","code":"NG"},{"name":"挪威","code":"NO"},{"name":"葡萄牙","code":"PT"},{"name":"日本","code":"JP"},{"name":"瑞典","code":"SE"},{"name":"瑞士","code":"CH"},{"name":"萨尔瓦多","code":"SV"},{"name":"塞尔维亚","code":"RS"},{"name":"塞内加尔","code":"SN"},{"name":"塞浦路斯","code":"CY"},{"name":"沙特阿拉伯","code":"SA"},{"name":"斯里兰卡","code":"LK"},{"name":"斯洛伐克","code":"SK"},{"name":"斯洛文尼亚","code":"SI"},{"name":"台湾","code":"TW"},{"name":"泰国","code":"TH"},{"name":"坦桑尼亚","code":"TZ"},{"name":"突尼斯","code":"TN"},{"name":"土耳其","code":"TR"},{"name":"危地马拉","code":"GT"},{"name":"委内瑞拉","code":"VE"},{"name":"乌干达","code":"UG"},{"name":"乌克兰","code":"UA"},{"name":"乌拉圭","code":"UY"},{"name":"西班牙","code":"ES"},{"name":"希腊","code":"GR"},{"name":"香港","code":"HK"},{"name":"新加坡","code":"SG"},{"name":"新西兰","code":"NZ"},{"name":"匈牙利","code":"HU"},{"name":"牙买加","code":"JM"},{"name":"也门","code":"YE"},{"name":"伊拉克","code":"IQ"},{"name":"以色列","code":"IL"},{"name":"意大利","code":"IT"},{"name":"印度","code":"IN"},{"name":"印尼","code":"ID"},{"name":"英国","code":"GB"},{"name":"约旦","code":"JO"},{"name":"越南","code":"VN"},{"name":"智利","code":"CL"}]
\ No newline at end of file
+[{"name":"阿尔及利亚","code":"DZ"},{"name":"阿根廷","code":"AR"},{"name":"阿拉伯联合酋长国","code":"AE"},{"name":"阿曼","code":"OM"},{"name":"阿塞拜疆","code":"AZ"},{"name":"埃及","code":"EG"},{"name":"爱尔兰","code":"IE"},{"name":"爱沙尼亚","code":"EE"},{"name":"奥地利","code":"AT"},{"name":"澳大利亚","code":"AU"},{"name":"巴布亚新几内亚","code":"PG"},{"name":"巴基斯坦","code":"PK"},{"name":"巴拉圭","code":"PY"},{"name":"巴林","code":"BH"},{"name":"巴拿马","code":"PA"},{"name":"巴西","code":"BR"},{"name":"白俄罗斯","code":"BY"},{"name":"保加利亚","code":"BG"},{"name":"北马其顿","code":"MK"},{"name":"比利时","code":"BE"},{"name":"冰岛","code":"IS"},{"name":"波多黎各","code":"PR"},{"name":"波兰","code":"PL"},{"name":"波斯尼亚和黑塞哥维那","code":"BA"},{"name":"玻利维亚","code":"BO"},{"name":"丹麦","code":"DK"},{"name":"德国","code":"DE"},{"name":"多米尼加共和国","code":"DO"},{"name":"俄罗斯","code":"RU"},{"name":"厄瓜多尔","code":"EC"},{"name":"法国","code":"FR"},{"name":"菲律宾","code":"PH"},{"name":"芬兰","code":"FI"},{"name":"哥伦比亚","code":"CO"},{"name":"哥斯达黎加","code":"CR"},{"name":"格鲁吉亚共和国","code":"GE"},{"name":"哈萨克斯坦","code":"KZ"},{"name":"韩国","code":"KR"},{"name":"荷兰","code":"NL"},{"name":"黑山共和国","code":"ME"},{"name":"洪都拉斯","code":"HN"},{"name":"加拿大","code":"CA"},{"name":"加纳","code":"GH"},{"name":"柬埔寨","code":"KH"},{"name":"捷克","code":"CZ"},{"name":"津巴布韦","code":"ZW"},{"name":"卡塔尔","code":"QA"},{"name":"科威特","code":"KW"},{"name":"克罗地亚","code":"HR"},{"name":"肯尼亚","code":"KE"},{"name":"拉脱维亚","code":"LV"},{"name":"老挝","code":"LA"},{"name":"黎巴嫩","code":"LB"},{"name":"立陶宛","code":"LT"},{"name":"利比亚","code":"LY"},{"name":"列支敦士登","code":"LI"},{"name":"卢森堡公国","code":"LU"},{"name":"罗马尼亚","code":"RO"},{"name":"马耳他","code":"MT"},{"name":"马来西亚","code":"MY"},{"name":"美国","code":"US"},{"name":"孟加拉国","code":"BD"},{"name":"秘鲁","code":"PE"},{"name":"摩尔多瓦","code":"MD"},{"name":"摩洛哥","code":"MA"},{"name":"墨西哥","code":"MX"},{"name":"南非","code":"ZA"},{"name":"尼加拉瓜","code":"NI"},{"name":"尼泊尔","code":"NP"},{"name":"尼日利亚","code":"NG"},{"name":"挪威","code":"NO"},{"name":"葡萄牙","code":"PT"},{"name":"日本","code":"JP"},{"name":"瑞典","code":"SE"},{"name":"瑞士","code":"CH"},{"name":"萨尔瓦多","code":"SV"},{"name":"塞尔维亚","code":"RS"},{"name":"塞内加尔","code":"SN"},{"name":"塞浦路斯","code":"CY"},{"name":"沙特阿拉伯","code":"SA"},{"name":"斯里兰卡","code":"LK"},{"name":"斯洛伐克","code":"SK"},{"name":"斯洛文尼亚","code":"SI"},{"name":"台湾","code":"TW"},{"name":"泰国","code":"TH"},{"name":"坦桑尼亚","code":"TZ"},{"name":"突尼斯","code":"TN"},{"name":"土耳其","code":"TR"},{"name":"危地马拉","code":"GT"},{"name":"委内瑞拉","code":"VE"},{"name":"乌干达","code":"UG"},{"name":"乌克兰","code":"UA"},{"name":"乌拉圭","code":"UY"},{"name":"西班牙","code":"ES"},{"name":"希腊","code":"GR"},{"name":"香港","code":"HK"},{"name":"新加坡","code":"SG"},{"name":"新西兰","code":"NZ"},{"name":"匈牙利","code":"HU"},{"name":"牙买加","code":"JM"},{"name":"也门","code":"YE"},{"name":"伊拉克","code":"IQ"},{"name":"以色列","code":"IL"},{"name":"意大利","code":"IT"},{"name":"印度","code":"IN"},{"name":"印尼","code":"ID"},{"name":"英国","code":"GB"},{"name":"约旦","code":"JO"},{"name":"越南","code":"VN"},{"name":"智利","code":"CL"}]
\ No newline at end of file
diff --git a/static/geolocations/zh-TW.json b/static/geolocations/zh-TW.json
index 13708bae1d7ff..72c4510db36c5 100644
--- a/static/geolocations/zh-TW.json
+++ b/static/geolocations/zh-TW.json
@@ -1 +1 @@
-[{"name":"土耳其","code":"TR"},{"name":"丹麥","code":"DK"},{"name":"厄瓜多","code":"EC"},{"name":"巴布亞紐幾內亞","code":"PG"},{"name":"巴西","code":"BR"},{"name":"巴拉圭","code":"PY"},{"name":"巴林","code":"BH"},{"name":"巴拿馬","code":"PA"},{"name":"巴基斯坦","code":"PK"},{"name":"日本","code":"JP"},{"name":"比利時","code":"BE"},{"name":"牙買加","code":"JM"},{"name":"以色列","code":"IL"},{"name":"加拿大","code":"CA"},{"name":"北馬其頓","code":"MK"},{"name":"卡達","code":"QA"},{"name":"台灣","code":"TW"},{"name":"尼加拉瓜","code":"NI"},{"name":"尼泊爾","code":"NP"},{"name":"瓜地馬拉","code":"GT"},{"name":"白俄羅斯","code":"BY"},{"name":"立陶宛","code":"LT"},{"name":"伊拉克","code":"IQ"},{"name":"冰島","code":"IS"},{"name":"列支敦士登","code":"LI"},{"name":"匈牙利","code":"HU"},{"name":"印尼","code":"ID"},{"name":"印度","code":"IN"},{"name":"多明尼加共和國","code":"DO"},{"name":"西班牙","code":"ES"},{"name":"克羅埃西亞","code":"HR"},{"name":"利比亞","code":"LY"},{"name":"宏都拉斯","code":"HN"},{"name":"希臘","code":"GR"},{"name":"沙烏地阿拉伯","code":"SA"},{"name":"辛巴威","code":"ZW"},{"name":"亞賽拜然","code":"AZ"},{"name":"坦尚尼亞","code":"TZ"},{"name":"奈及利亞","code":"NG"},{"name":"委內瑞拉","code":"VE"},{"name":"孟加拉","code":"BD"},{"name":"拉脫維亞","code":"LV"},{"name":"法國","code":"FR"},{"name":"波士尼亞-赫塞哥維納","code":"BA"},{"name":"波多黎克","code":"PR"},{"name":"波蘭","code":"PL"},{"name":"肯亞","code":"KE"},{"name":"芬蘭","code":"FI"},{"name":"阿拉伯聯合大公國","code":"AE"},{"name":"阿根廷","code":"AR"},{"name":"阿曼","code":"OM"},{"name":"阿爾及利亞","code":"DZ"},{"name":"俄羅斯","code":"RU"},{"name":"保加利亞","code":"BG"},{"name":"南非","code":"ZA"},{"name":"南韓","code":"KR"},{"name":"哈薩克","code":"KZ"},{"name":"柬埔寨","code":"KH"},{"name":"玻利維亞","code":"BO"},{"name":"科威特","code":"KW"},{"name":"突尼西亞","code":"TN"},{"name":"約旦","code":"JO"},{"name":"美國","code":"US"},{"name":"英國","code":"GB"},{"name":"迦納","code":"GH"},{"name":"香港","code":"HK"},{"name":"哥倫比亞","code":"CO"},{"name":"哥斯大黎加","code":"CR"},{"name":"埃及","code":"EG"},{"name":"挪威","code":"NO"},{"name":"泰國","code":"TH"},{"name":"烏干達","code":"UG"},{"name":"烏克蘭","code":"UA"},{"name":"烏拉圭","code":"UY"},{"name":"祕魯","code":"PE"},{"name":"紐西蘭","code":"NZ"},{"name":"馬來西亞","code":"MY"},{"name":"馬爾他","code":"MT"},{"name":"捷克","code":"CZ"},{"name":"荷蘭","code":"NL"},{"name":"喬治亞","code":"GE"},{"name":"斯里蘭卡","code":"LK"},{"name":"斯洛伐克","code":"SK"},{"name":"斯洛維尼亞","code":"SI"},{"name":"智利","code":"CL"},{"name":"菲律賓","code":"PH"},{"name":"越南","code":"VN"},{"name":"塞內加爾","code":"SN"},{"name":"塞爾維亞","code":"RS"},{"name":"奧地利","code":"AT"},{"name":"愛沙尼亞","code":"EE"},{"name":"愛爾蘭","code":"IE"},{"name":"新加坡","code":"SG"},{"name":"瑞士","code":"CH"},{"name":"瑞典","code":"SE"},{"name":"義大利","code":"IT"},{"name":"葉門","code":"YE"},{"name":"葡萄牙","code":"PT"},{"name":"蒙特內哥羅","code":"ME"},{"name":"寮國","code":"LA"},{"name":"德國","code":"DE"},{"name":"摩洛哥","code":"MA"},{"name":"黎巴嫩","code":"LB"},{"name":"墨西哥","code":"MX"},{"name":"澳洲","code":"AU"},{"name":"盧森堡","code":"LU"},{"name":"賽普勒斯","code":"CY"},{"name":"薩爾瓦多","code":"SV"},{"name":"羅馬尼亞","code":"RO"}]
\ No newline at end of file
+[{"name":"土耳其","code":"TR"},{"name":"丹麥","code":"DK"},{"name":"厄瓜多","code":"EC"},{"name":"巴布亞紐幾內亞","code":"PG"},{"name":"巴西","code":"BR"},{"name":"巴拉圭","code":"PY"},{"name":"巴林","code":"BH"},{"name":"巴拿馬","code":"PA"},{"name":"巴基斯坦","code":"PK"},{"name":"日本","code":"JP"},{"name":"比利時","code":"BE"},{"name":"牙買加","code":"JM"},{"name":"以色列","code":"IL"},{"name":"加拿大","code":"CA"},{"name":"北馬其頓","code":"MK"},{"name":"卡達","code":"QA"},{"name":"台灣","code":"TW"},{"name":"尼加拉瓜","code":"NI"},{"name":"尼泊爾","code":"NP"},{"name":"瓜地馬拉","code":"GT"},{"name":"白俄羅斯","code":"BY"},{"name":"立陶宛","code":"LT"},{"name":"伊拉克","code":"IQ"},{"name":"冰島","code":"IS"},{"name":"列支敦士登","code":"LI"},{"name":"匈牙利","code":"HU"},{"name":"印尼","code":"ID"},{"name":"印度","code":"IN"},{"name":"多明尼加共和國","code":"DO"},{"name":"西班牙","code":"ES"},{"name":"克羅埃西亞","code":"HR"},{"name":"利比亞","code":"LY"},{"name":"宏都拉斯","code":"HN"},{"name":"希臘","code":"GR"},{"name":"沙烏地阿拉伯","code":"SA"},{"name":"辛巴威","code":"ZW"},{"name":"亞賽拜然","code":"AZ"},{"name":"坦尚尼亞","code":"TZ"},{"name":"奈及利亞","code":"NG"},{"name":"委內瑞拉","code":"VE"},{"name":"孟加拉","code":"BD"},{"name":"拉脫維亞","code":"LV"},{"name":"法國","code":"FR"},{"name":"波士尼亞-赫塞哥維納","code":"BA"},{"name":"波多黎克","code":"PR"},{"name":"波蘭","code":"PL"},{"name":"肯亞","code":"KE"},{"name":"芬蘭","code":"FI"},{"name":"阿拉伯聯合大公國","code":"AE"},{"name":"阿根廷","code":"AR"},{"name":"阿曼","code":"OM"},{"name":"阿爾及利亞","code":"DZ"},{"name":"俄羅斯","code":"RU"},{"name":"保加利亞","code":"BG"},{"name":"南非","code":"ZA"},{"name":"南韓","code":"KR"},{"name":"哈薩克","code":"KZ"},{"name":"柬埔寨","code":"KH"},{"name":"玻利維亞","code":"BO"},{"name":"科威特","code":"KW"},{"name":"突尼西亞","code":"TN"},{"name":"約旦","code":"JO"},{"name":"美國","code":"US"},{"name":"英國","code":"GB"},{"name":"迦納","code":"GH"},{"name":"香港","code":"HK"},{"name":"哥倫比亞","code":"CO"},{"name":"哥斯大黎加","code":"CR"},{"name":"埃及","code":"EG"},{"name":"挪威","code":"NO"},{"name":"泰國","code":"TH"},{"name":"烏干達","code":"UG"},{"name":"烏克蘭","code":"UA"},{"name":"烏拉圭","code":"UY"},{"name":"祕魯","code":"PE"},{"name":"紐西蘭","code":"NZ"},{"name":"馬來西亞","code":"MY"},{"name":"馬爾他","code":"MT"},{"name":"捷克","code":"CZ"},{"name":"荷蘭","code":"NL"},{"name":"喬治亞","code":"GE"},{"name":"斯里蘭卡","code":"LK"},{"name":"斯洛伐克","code":"SK"},{"name":"斯洛維尼亞","code":"SI"},{"name":"智利","code":"CL"},{"name":"菲律賓","code":"PH"},{"name":"越南","code":"VN"},{"name":"塞內加爾","code":"SN"},{"name":"塞爾維亞","code":"RS"},{"name":"奧地利","code":"AT"},{"name":"愛沙尼亞","code":"EE"},{"name":"愛爾蘭","code":"IE"},{"name":"新加坡","code":"SG"},{"name":"瑞士","code":"CH"},{"name":"瑞典","code":"SE"},{"name":"義大利","code":"IT"},{"name":"葉門","code":"YE"},{"name":"葡萄牙","code":"PT"},{"name":"蒙特內哥羅","code":"ME"},{"name":"寮國","code":"LA"},{"name":"德國","code":"DE"},{"name":"摩洛哥","code":"MA"},{"name":"摩爾多瓦","code":"MD"},{"name":"黎巴嫩","code":"LB"},{"name":"墨西哥","code":"MX"},{"name":"澳洲","code":"AU"},{"name":"盧森堡","code":"LU"},{"name":"賽普勒斯","code":"CY"},{"name":"薩爾瓦多","code":"SV"},{"name":"羅馬尼亞","code":"RO"}]
\ No newline at end of file
From 0e72be464e76d5a0c64fbde98f133d2e7e8bb2fb Mon Sep 17 00:00:00 2001
From: Femini
Date: Wed, 24 Jul 2024 06:59:59 +0000
Subject: [PATCH 023/489] Translated using Weblate (Azerbaijani)
Currently translated at 12.6% (110 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/az/
---
static/locales/az.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/static/locales/az.yaml b/static/locales/az.yaml
index 82262d2d2d1f1..038ed649aac85 100644
--- a/static/locales/az.yaml
+++ b/static/locales/az.yaml
@@ -9,10 +9,10 @@ FreeTube: 'FreeTube'
File: 'Fayl'
Quit: 'Çıxış'
Edit: 'Redaktə Edin'
-Undo: 'Geri alın'
+Undo: 'Geri al'
Redo: 'Təkrarla'
Cut: 'Kəsin'
-Copy: 'Kopyalayın'
+Copy: 'Köçür'
Paste: 'Yapışdır'
Delete: 'Silin'
Select all: 'Hamısını seçin'
From 0ac277ac8436c525e32d1ee725f3dfad1ec3766a Mon Sep 17 00:00:00 2001
From: PikachuEXE
Date: Thu, 25 Jul 2024 10:24:23 +0800
Subject: [PATCH 024/489] Update icon for channels button on side nav (#5273)
* * Update icon for channels button on side nav
* * Reduce size of new icon
* * Align new icon manually
* * Update mobile menu item icon
---
.../side-nav-more-options.css | 5 +++++
.../side-nav-more-options.vue | 2 +-
src/renderer/components/side-nav/side-nav.css | 16 ++++++++++++++++
src/renderer/components/side-nav/side-nav.vue | 2 +-
src/renderer/main.js | 2 ++
5 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.css b/src/renderer/components/side-nav-more-options/side-nav-more-options.css
index adc4de66ec329..46a71073bf5f1 100644
--- a/src/renderer/components/side-nav-more-options/side-nav-more-options.css
+++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.css
@@ -69,6 +69,11 @@
margin-block-start: 0.5em;
}
+ .navIcon.fa-user-check {
+ /* Align icon according to torso */
+ transform: translateX(0.2em);
+ }
+
.moreOption {
display: block;
}
diff --git a/src/renderer/components/side-nav-more-options/side-nav-more-options.vue b/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
index 07f17810e3a1a..127082d686fe4 100644
--- a/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
+++ b/src/renderer/components/side-nav-more-options/side-nav-more-options.vue
@@ -37,7 +37,7 @@
class="thumbnailContainer"
>
Date: Thu, 25 Jul 2024 17:05:42 +0200
Subject: [PATCH 025/489] Update YouTube.js to 10.2.0 (#5465)
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index c97deea910c80..b51a794cc7266 100644
--- a/package.json
+++ b/package.json
@@ -79,7 +79,7 @@
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.6.5",
"vuex": "^3.6.2",
- "youtubei.js": "^10.1.0"
+ "youtubei.js": "^10.2.0"
},
"devDependencies": {
"@babel/core": "^7.24.9",
diff --git a/yarn.lock b/yarn.lock
index 0b634ac932d0b..8ad2bfb64e0c5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8973,10 +8973,10 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
-youtubei.js@^10.1.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-10.1.0.tgz#38b3d95907441040df1e8031e04e0e6200ed52cf"
- integrity sha512-MokZMAnpWH11VYvWuW6qjPiiPmgRl5rfDgPQOpif9qXcVHoVw1hi8ePuRSD0AZSZ+uvWGe8rvas2dzp+Jv5JKQ==
+youtubei.js@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-10.2.0.tgz#0f5fbacf3e64c965d6e7378c870a7329ceca7228"
+ integrity sha512-JLKW9AHQ1qrTwBbre1aDkH8UJFmNcc4+kOSaVou5jSY7AzfFPFJK0yvX6afnLst0UVC9wfXHrLiNx93sutVErA==
dependencies:
jintr "^2.0.0"
tslib "^2.5.0"
From cd5d293843f5bdc9b26cb51db8ef22b6e2fd4b83 Mon Sep 17 00:00:00 2001
From: PrestonN
Date: Thu, 25 Jul 2024 11:15:31 -0400
Subject: [PATCH 026/489] Bump version number to v0.21.2
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index b51a794cc7266..caba7d8732be6 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "freetube",
"productName": "FreeTube",
"description": "A private YouTube client",
- "version": "0.21.1",
+ "version": "0.21.2",
"license": "AGPL-3.0-or-later",
"main": "./dist/main.js",
"private": true,
From 4829a53d26069b7b48b6db470c51b76aec8bc939 Mon Sep 17 00:00:00 2001
From: Emma
Date: Thu, 25 Jul 2024 11:25:35 -0400
Subject: [PATCH 027/489] Update node version for dependencies
---
.github/workflows/buildCordova.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/buildCordova.yml b/.github/workflows/buildCordova.yml
index eabf9560d8c92..94637d653a7cc 100644
--- a/.github/workflows/buildCordova.yml
+++ b/.github/workflows/buildCordova.yml
@@ -17,7 +17,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v3
with:
- node-version: 18.x
+ node-version: 20.x
cache: "yarn"
- name: 🧶 Yarn install
run: yarn ci
From b07ce3339222526a90e9a9ea5aa0581536a2600e Mon Sep 17 00:00:00 2001
From: Emma
Date: Fri, 26 Jul 2024 11:14:03 -0400
Subject: [PATCH 028/489] Add logic for spoofing user agents in android webview
- Any request which has the `x-user-agent` header will be fetched on the kotlin side
- This logic could be expanded to allow for local api streaming without deprecated settings
---
.../freetube/FreeTubeJavaScriptInterface.kt | 7 ++
.../io/freetubeapp/freetube/MainActivity.kt | 72 +++++++++++++++++++
src/index.ejs | 14 ++++
3 files changed, 93 insertions(+)
diff --git a/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt b/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
index efa6bd85b619c..13b6bc57f674d 100644
--- a/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
+++ b/android/app/src/main/java/io/freetubeapp/freetube/FreeTubeJavaScriptInterface.kt
@@ -676,6 +676,13 @@ class FreeTubeJavaScriptInterface {
context.isInAPrompt = false
}
+ @JavascriptInterface
+ fun queueFetchBody(id: String, body: String) {
+ if (body != "undefined") {
+ context.pendingRequestBodies[id] = body
+ }
+ }
+
private fun addNamedCallbackToPromise(promise: String, name: String) {
context.runOnUiThread {
context.webView.loadUrl("javascript: window['${promise}'].callbacks = window['${promise}'].callbacks || {}; window['${promise}'].callbacks.notify = (key, message) => window['${promise}'].callbacks[key].forEach(callback => callback(message)); window['${promise}'].callbacks['${name}'] = window['${promise}'].callbacks['${name}'] || []")
diff --git a/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt b/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
index 5994ef2340a1e..c85738e40ca73 100644
--- a/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
+++ b/android/app/src/main/java/io/freetubeapp/freetube/MainActivity.kt
@@ -12,6 +12,7 @@ import android.view.ViewTreeObserver
import android.webkit.ConsoleMessage
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
+import android.webkit.WebResourceResponse
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.FrameLayout
@@ -26,10 +27,14 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import io.freetubeapp.freetube.databinding.ActivityMainBinding
import org.json.JSONObject
+import java.io.Serializable
+import java.net.HttpURLConnection
+import java.net.URL
import java.net.URLEncoder
import java.util.Base64
import java.util.UUID
import java.util.concurrent.BlockingQueue
+import java.util.concurrent.ConcurrentHashMap.KeySetView
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
@@ -52,6 +57,7 @@ class MainActivity : AppCompatActivity(), OnRequestPermissionsResultCallback {
var darkMode: Boolean = false
var paused: Boolean = false
var isInAPrompt: Boolean = false
+ var pendingRequestBodies: MutableMap = mutableMapOf()
/*
* Gets the number of available cores
* (not always the same as the maximum number of cores)
@@ -204,6 +210,72 @@ class MainActivity : AppCompatActivity(), OnRequestPermissionsResultCallback {
}
}
webView.webViewClient = object: WebViewClient() {
+ override fun shouldInterceptRequest(
+ view: WebView?,
+ request: WebResourceRequest?
+ ): WebResourceResponse? {
+ if (request!!.requestHeaders.containsKey("x-user-agent")) {
+ with (URL(request!!.url.toString()).openConnection() as HttpURLConnection) {
+ requestMethod = request.method
+ val isClient5 = request.requestHeaders.containsKey("x-youtube-client-name")
+ // map headers
+ for (header in request!!.requestHeaders) {
+ fun getReal(key: String, value: String): Array? {
+ if (key == "x-user-agent") {
+ return arrayOf("User-Agent", value)
+ }
+ if (key == "User-Agent") {
+ return null
+ }
+ if (key == "x-fta-request-id") {
+ return null
+ }
+ if (isClient5) {
+ if (key == "referrer") {
+ return null
+ }
+ if (key == "origin") {
+ return null
+ }
+ if (key == "Sec-Fetch-Site") {
+ return null
+ }
+ if (key == "Sec-Fetch-Mode") {
+ return null
+ }
+ if (key == "Sec-Fetch-Dest") {
+ return null
+ }
+ if (key == "sec-ch-ua") {
+ return null
+ }
+ if (key == "sec-ch-ua-mobile") {
+ return null
+ }
+ if (key == "sec-ch-ua-platform") {
+ return null
+ }
+ }
+ return arrayOf(key, value)
+ }
+ val real = getReal(header.key, header.value)
+ if (real !== null) {
+ setRequestProperty(real[0], real[1])
+ }
+ }
+ if (request.requestHeaders.containsKey("x-fta-request-id")) {
+ if (pendingRequestBodies.containsKey(request.requestHeaders["x-fta-request-id"])) {
+ val body = pendingRequestBodies[request.requestHeaders["x-fta-request-id"]]
+ pendingRequestBodies.remove(request.requestHeaders["x-fta-request-id"])
+ outputStream.write(body!!.toByteArray())
+ }
+ }
+ // 🧝♀️ magic
+ return WebResourceResponse(this.contentType, this.contentEncoding, inputStream!!)
+ }
+ }
+ return super.shouldInterceptRequest(view, request)
+ }
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
if (request!!.url!!.scheme == "file") {
// don't send file url requests to a web browser (it will crash the app)
diff --git a/src/index.ejs b/src/index.ejs
index 8770c7b4424ec..b93cfb215a945 100644
--- a/src/index.ejs
+++ b/src/index.ejs
@@ -7,6 +7,20 @@
+
+
diff --git a/src/renderer/views/Channel/Channel.css b/src/renderer/views/Channel/Channel.css
index 66aa3cc0294b8..c2a6815f8b202 100644
--- a/src/renderer/views/Channel/Channel.css
+++ b/src/renderer/views/Channel/Channel.css
@@ -11,83 +11,6 @@
max-inline-size: 92vw;
}
-.channelBannerContainer {
- background: center / cover no-repeat var(--banner-url, transparent);
- block-size: 13vw;
- min-block-size: 110px;
- max-block-size: 32vh;
- inline-size: 100%;
-}
-
-.channelBannerContainer.default {
- background-color: #000;
- background-image: url('../../assets/img/defaultBanner.png');
- background-repeat: repeat;
- background-size: contain;
-}
-
-.channelInfoContainer {
- position: relative;
- background-color: var(--card-bg-color);
- margin-block-start: 10px;
- padding-block: 0;
- padding-inline: 16px;
-}
-
-.channelInfo {
- display: flex;
- flex-flow: row wrap;
- inline-size: 100%;
- justify-content: space-between;
-}
-
-.channelInfoHasError {
- padding-block-end: 10px;
-}
-
-.channelThumbnail {
- inline-size: 100px;
- block-size: 100px;
- border-radius: 200px;
- object-fit: cover;
-}
-
-.channelName {
- font-weight: bold;
- inline-size: 100%;
- font-size: 25px;
-}
-
-.channelSubCount {
- color: var(--tertiary-text-color);
- inset-block-start: 50px;
- inset-inline-start: 120px;
-}
-
-.channelInfoActionsContainer {
- display: flex;
- gap: 30px;
- justify-content: space-between;
- align-items: center;
-}
-
-.subscribeButton {
- block-size: fit-content;
-}
-
-.shareIcon {
- align-self: center;
-}
-
-.channelSearch {
- margin-block-start: 10px;
- max-inline-size: 250px;
- inline-size: 220px;
- margin-inline-start: auto;
- align-self: flex-end;
- flex: 1 1 0%;
-}
-
.select-container {
display: flex;
flex-direction: row;
@@ -95,46 +18,6 @@
margin-block-end: 10px;
}
-.channelInfoTabs {
- position: relative;
- inline-size: 100%;
- block-size: auto;
- justify-content: unset;
- gap: 32px;
- padding-block: 0.3em;
- padding-inline: 0;
- flex-wrap: nowrap;
-}
-
-.tabs {
- display: flex;
- flex: 0 1 66%;
- flex-wrap: wrap;
-}
-
-.tab {
- padding: 15px;
- font-size: 15px;
- cursor: pointer;
- align-self: flex-end;
- text-align: center;
- color: var(--tertiary-text-color);
- border-block-end: 3px solid transparent;
-}
-
-.tab:hover,
-.tab:focus {
- font-weight: bold;
- border-block-end: 3px solid var(--tertiary-text-color);
-}
-
-.selectedTab {
- color: var(--primary-text-color);
- border-block-end: 3px solid var(--primary-color);
- font-weight: bold;
- box-sizing: border-box;
-}
-
.elementListLoading {
margin-block-start: 200px;
}
@@ -153,106 +36,17 @@
margin-block-start: 16px;
}
-.thumbnailContainer {
- display: flex;
-}
-
-.channelLineContainer {
- display: flex;
- justify-content: center;
- flex-direction: column;
- padding-inline-start: 1em;
-}
-
-.channelLineContainer h1,
-.channelLineContainer p {
- margin: 0;
-}
-
-.communityThumbnail {
- border-radius: 200px;
- block-size: 12%;
- inline-size: 12%;
-}
-
-.ft-community-image {
- display: block;
- margin-inline: auto;
-}
-
-.community-post-container {
- padding-inline: 30%;
-}
-
@media only screen and (width <= 800px) {
- .channelInfoTabs {
- block-size: auto;
- flex-flow: column-reverse;
- gap: 0;
- }
-
- .channelSearch {
- inline-size: 100%;
- max-inline-size: none;
- }
-
- .tabs {
- flex: 1 1 0;
- }
-
- .tab {
- flex: 1 1 0%;
- }
-
.communityPanel {
margin-block-start: 1rem;
}
}
@media only screen and (width <= 680px) {
- .channelInfo {
- flex-direction: column;
- margin-block: 20px 10px;
- }
-
.card {
max-inline-size: none;
inline-size: 100%;
}
-
- .channelInfoActionsContainer {
- flex-direction: row-reverse;
- justify-content: left;
- gap: 10px;
- margin-block-start: 5px;
- }
-}
-
-@media only screen and (width <= 400px) {
- .channelInfo {
- justify-content: center;
- gap: 10px;
- }
-
- .channelInfoActionsContainer {
- justify-content: center;
- }
-
- .channelLineContainer {
- padding-inline-start: 0;
- }
-
- .thumbnailContainer {
- flex-direction: column;
- }
-
- .thumbnailContainer,
- .channelInfoActionsContainer {
- flex-wrap: wrap;
- align-items: center;
- text-align: center;
- gap: 10px;
- }
}
@media only screen and (width <= 260px) {
diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js
index 21f1189f91c9e..9f5f881554f9f 100644
--- a/src/renderer/views/Channel/Channel.js
+++ b/src/renderer/views/Channel/Channel.js
@@ -1,24 +1,20 @@
import { defineComponent } from 'vue'
import { mapActions } from 'vuex'
import FtCard from '../../components/ft-card/ft-card.vue'
-import FtInput from '../../components/ft-input/ft-input.vue'
import FtSelect from '../../components/ft-select/ft-select.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue'
-import FtShareButton from '../../components/ft-share-button/ft-share-button.vue'
-import FtSubscribeButton from '../../components/ft-subscribe-button/ft-subscribe-button.vue'
import ChannelAbout from '../../components/channel-about/channel-about.vue'
+import ChannelDetails from '../../components/ChannelDetails/ChannelDetails.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
import autolinker from 'autolinker'
import {
setPublishedTimestampsInvidious,
copyToClipboard,
- ctrlFHandler,
extractNumberFromString,
- formatNumber,
showToast,
getIconForSortPreference
} from '../../helpers/utils'
@@ -50,20 +46,18 @@ export default defineComponent({
name: 'Channel',
components: {
'ft-card': FtCard,
- 'ft-input': FtInput,
'ft-select': FtSelect,
'ft-flex-box': FtFlexBox,
'ft-loader': FtLoader,
'ft-element-list': FtElementList,
'ft-age-restricted': FtAgeRestricted,
- 'ft-share-button': FtShareButton,
- 'ft-subscribe-button': FtSubscribeButton,
'channel-about': ChannelAbout,
'ft-auto-load-next-page-wrapper': FtAutoLoadNextPageWrapper,
+ ChannelDetails
},
data: function () {
return {
- isLoading: false,
+ isLoading: true,
isElementListLoading: false,
currentTab: 'videos',
id: '',
@@ -155,10 +149,6 @@ export default defineComponent({
return this.$store.getters.getBackendFallback
},
- hideUnsubscribeButton: function() {
- return this.$store.getters.getHideUnsubscribeButton
- },
-
showFamilyFriendlyOnly: function() {
return this.$store.getters.getShowFamilyFriendlyOnly
},
@@ -203,13 +193,6 @@ export default defineComponent({
]
},
- formattedSubCount: function () {
- if (this.hideChannelSubscriptions) {
- return null
- }
- return formatNumber(this.subCount)
- },
-
showFetchMoreButton: function () {
switch (this.currentTab) {
case 'videos':
@@ -232,13 +215,6 @@ export default defineComponent({
return false
},
- hideChannelSubscriptions: function () {
- return this.$store.getters.getHideChannelSubscriptions
- },
-
- hideSharingActions: function () {
- return this.$store.getters.getHideSharingActions
- },
hideChannelShorts: function () {
return this.$store.getters.getHideChannelShorts
@@ -440,9 +416,6 @@ export default defineComponent({
}
},
mounted: function () {
- this.isLoading = true
- document.addEventListener('keydown', this.keyboardShortcutHandler)
-
if (this.$route.query.url) {
this.resolveChannelUrl(this.$route.query.url, this.$route.params.currentTab)
return
@@ -468,9 +441,6 @@ export default defineComponent({
})
}
},
- beforeDestroy() {
- document.removeEventListener('keydown', this.keyboardShortcutHandler)
- },
methods: {
resolveChannelUrl: async function (url, tab = undefined) {
let id
@@ -1856,29 +1826,7 @@ export default defineComponent({
}
},
- changeTab: function (tab, event) {
- if (event instanceof KeyboardEvent) {
- if (event.altKey) {
- return
- }
-
- // use arrowkeys to navigate
- event.preventDefault()
- if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
- const index = this.tabInfoValues.indexOf(tab)
-
- // focus left or right tab with wrap around
- tab = (event.key === 'ArrowLeft')
- ? this.tabInfoValues[(index > 0 ? index : this.tabInfoValues.length) - 1]
- : this.tabInfoValues[(index + 1) % this.tabInfoValues.length]
-
- const tabNode = document.getElementById(`${tab}Tab`)
- tabNode.focus()
- this.showOutlines()
- return
- }
- }
-
+ changeTab: function (tab) {
// `newTabNode` can be `null` when `tab` === "search"
const newTabNode = document.getElementById(`${tab}Tab`)
this.currentTab = tab
@@ -1993,10 +1941,6 @@ export default defineComponent({
})
},
- keyboardShortcutHandler: function (event) {
- ctrlFHandler(event, this.$refs.channelSearchBar)
- },
-
getIconForSortPreference: (s) => getIconForSortPreference(s),
...mapActions([
diff --git a/src/renderer/views/Channel/Channel.vue b/src/renderer/views/Channel/Channel.vue
index 04221411832d0..c173205a6d50d 100644
--- a/src/renderer/views/Channel/Channel.vue
+++ b/src/renderer/views/Channel/Channel.vue
@@ -4,216 +4,23 @@
v-if="isLoading && !errorMessage"
:fullscreen="true"
/>
-
-
-
-
-
-
-
-
-
-
- {{ channelName }}
-
-
-
- {{ $tc('Global.Counts.Subscriber Count', subCount, { count: formattedSubCount }) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t("Channel.Videos.Videos").toUpperCase() }}
-
-
-
- {{ $t("Global.Shorts").toUpperCase() }}
-
-
-
- {{ $t("Channel.Live.Live").toUpperCase() }}
-
-
-
- {{ $t("Channel.Releases.Releases").toUpperCase() }}
-
-
-
- {{ $t("Channel.Podcasts.Podcasts").toUpperCase() }}
-
-
-
- {{ $t("Channel.Playlists.Playlists").toUpperCase() }}
-
-
-
-
-
- {{ $t("Channel.About.About").toUpperCase() }}
-
-
-
-
-
-
-
+ @change-tab="changeTab"
+ @search="newSearch"
+ />
Date: Tue, 30 Jul 2024 22:27:36 +0200
Subject: [PATCH 044/489] Fix distraction settings and subscribe button CSS not
being scoped (#5486)
---
.../components/distraction-settings/distraction-settings.vue | 2 +-
.../components/ft-subscribe-button/ft-subscribe-button.vue | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/renderer/components/distraction-settings/distraction-settings.vue b/src/renderer/components/distraction-settings/distraction-settings.vue
index 6420d447c8916..40fc7a6e7e494 100644
--- a/src/renderer/components/distraction-settings/distraction-settings.vue
+++ b/src/renderer/components/distraction-settings/distraction-settings.vue
@@ -261,4 +261,4 @@
-
+
diff --git a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue
index 26bfd4c18be36..c7e412392ab36 100644
--- a/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue
+++ b/src/renderer/components/ft-subscribe-button/ft-subscribe-button.vue
@@ -88,4 +88,4 @@
-
+
From 57fd178aac894c5176556c2dc3236c5722e56ed8 Mon Sep 17 00:00:00 2001
From: Milo Ivir
Date: Wed, 31 Jul 2024 14:46:53 +0000
Subject: [PATCH 045/489] Translated using Weblate (Croatian)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/
---
static/locales/hr.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml
index 80b1b63d2d72f..8caa0352a32b3 100644
--- a/static/locales/hr.yaml
+++ b/static/locales/hr.yaml
@@ -236,6 +236,14 @@ User Playlists:
Cannot delete the quick bookmark target playlist.: Nije moguće izbrisati zbirku
cilja za brze zabilješke.
Remove Duplicate Videos: Ukloni dupla videa
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Stvarno
+ želiš ukloniti 1 duplikat videa iz ove zbirke? To se ne može poništiti. | Stvarno
+ želiš ukloniti {playlistItemCount} duplakata videa iz ove zbirke? To se ne može
+ poništiti.
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Stvarno
+ želiš ukloniti 1 gledani video iz ove zbirke? To se ne može poništiti. | Stvarno
+ želiš ukloniti {playlistItemCount} gledana/ih videa iz ove zbirke? To se ne može
+ poništiti.
History:
# On History Page
History: 'Povijest'
From c6ec561d2b6bdd3a65711e6925377f383816b882 Mon Sep 17 00:00:00 2001
From: Igor
Date: Thu, 1 Aug 2024 00:58:49 +0000
Subject: [PATCH 046/489] Translated using Weblate (Russian)
Currently translated at 98.8% (858 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/
---
static/locales/ru.yaml | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml
index cecd05346a921..0a28229339f14 100644
--- a/static/locales/ru.yaml
+++ b/static/locales/ru.yaml
@@ -80,6 +80,18 @@ Search Filters:
Fetch more results: 'Получить больше результатов'
# Sidebar
There are no more results for this search: Больше выдачи по этому запросу нет
+ Features:
+ Features: Особенности
+ HD: HD
+ Subtitles: Субтитры
+ Creative Commons: Creative Commons
+ 3D: 3D
+ Live: Прямой эфир
+ 4K: 4K
+ 360 Video: 360 видео
+ Location: Местоположение
+ VR180: VR180
+ HDR: HDR
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Подписки'
@@ -189,6 +201,11 @@ User Playlists:
Select a playlist to add your N videos to: Выбери подборку на добавление видео
| Выбери подборку на добавление {videoCount} видео в неё
Added {count} Times: Добавлено {количество} Время | Добавлено {количество} Времени
+ Allow Adding Duplicate Video(s): Разрешить добавление дубликатов видео
+ "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount}
+ Видео будут добавлены'
+ "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
+ Видео уже добавлено'
CreatePlaylistPrompt:
Toast:
Playlist {playlistName} has been successfully created.: Подборка {playlistName}
@@ -218,6 +235,15 @@ User Playlists:
Quick Bookmark Enabled: Быстрая закладка включена
Cannot delete the quick bookmark target playlist.: Невозможно удалить целевой список
воспроизведения быстрых закладок.
+ Remove Duplicate Videos: Удалить дубликаты видео
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Вы
+ уверены, что хотите удалить 1 дублирующее видео из этого плейлиста? Это нельзя
+ отменить. | Вы уверены, что хотите удалить {playlistItemCount} дубликатов видео
+ из этого плейлиста? Это нельзя отменить.
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Вы
+ уверены, что хотите удалить 1 просмотренное видео из этого плейлиста? Это нельзя
+ отменить. | Вы уверены, что хотите удалить {playlistItemCount} просмотренных видео
+ из этого плейлиста? Это нельзя отменить.
History:
# On History Page
History: 'История'
@@ -420,6 +446,7 @@ Settings:
Fetch Automatically: Автоматически получать ленту
Only Show Latest Video for Each Channel: Показывать только последние видео для
каждого канала
+ Confirm Before Unsubscribing: Подтвердите, прежде чем отписаться
Advanced Settings:
Advanced Settings: 'Расширенные настройки'
Enable Debug Mode (Prints data to the console): 'Включить режим отладки (выводит
@@ -1239,3 +1266,10 @@ Feed:
Refresh Feed: Обновить {имя подписки}
Trimmed input must be at least N characters long: Обрезанный ввод должен быть длиной
не менее 1 символа | Обрезанный ввод должен быть длиной не менее {длина} символов
+Search Listing:
+ Label:
+ 4K: 4K
+ Subtitles: Субтитры
+ Closed Captions: Скрытые субтитры
+'Blocked opening potentially unsafe URL': 'Заблокировано открытие потенциально небезопасного
+ URL: "{url}".'
From 94833f1cae4d3cf5408a4fea02f1a7244565257e Mon Sep 17 00:00:00 2001
From: Emma
Date: Thu, 1 Aug 2024 07:46:38 -0400
Subject: [PATCH 047/489] Don't call `headers.append` if it doesn't have that
method
---
src/index.ejs | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/index.ejs b/src/index.ejs
index b93cfb215a945..c8173aa4a199b 100644
--- a/src/index.ejs
+++ b/src/index.ejs
@@ -15,7 +15,11 @@
body = arg.body
}
if ('headers' in arg) {
- arg.headers.append('x-fta-request-id', requestId)
+ if ('append' in arg.headers) {
+ arg.headers.append('x-fta-request-id', requestId)
+ } else {
+ arg.headers['x-fta-request-id'] = requestId
+ }
}
}
}
From 3a245ec178bcd637ad1a6fa6cffa0e63a4324cfa Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Thu, 1 Aug 2024 14:49:01 +0200
Subject: [PATCH 048/489] Use streams from the iOS client to workaround
playback issues (#5472)
* Use streams from the iOS client to workaround playback issues
* Fix for unplayable videos
* Hoist version arrays and introduce a randomArrayItem helper
---
src/main/index.js | 21 ++++-
src/renderer/helpers/api/local.js | 125 ++++++++++++++++++++++++++----
src/renderer/helpers/colors.js | 4 +-
src/renderer/helpers/utils.js | 9 +++
src/renderer/views/Watch/Watch.js | 35 +--------
5 files changed, 139 insertions(+), 55 deletions(-)
diff --git a/src/main/index.js b/src/main/index.js
index c6eb719ee9986..942cdb5827a1e 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -410,9 +410,24 @@ function runApp() {
requestHeaders.Origin = 'https://www.youtube.com'
if (url.startsWith('https://www.youtube.com/youtubei/')) {
- requestHeaders['Sec-Fetch-Site'] = 'same-origin'
- requestHeaders['Sec-Fetch-Mode'] = 'same-origin'
- requestHeaders['X-Youtube-Bootstrap-Logged-In'] = 'false'
+ // Make iOS requests work and look more realistic
+ if (requestHeaders['x-youtube-client-name'] === '5') {
+ delete requestHeaders.Referer
+ delete requestHeaders.Origin
+ delete requestHeaders['Sec-Fetch-Site']
+ delete requestHeaders['Sec-Fetch-Mode']
+ delete requestHeaders['Sec-Fetch-Dest']
+ delete requestHeaders['sec-ch-ua']
+ delete requestHeaders['sec-ch-ua-mobile']
+ delete requestHeaders['sec-ch-ua-platform']
+
+ requestHeaders['User-Agent'] = requestHeaders['x-user-agent']
+ delete requestHeaders['x-user-agent']
+ } else {
+ requestHeaders['Sec-Fetch-Site'] = 'same-origin'
+ requestHeaders['Sec-Fetch-Mode'] = 'same-origin'
+ requestHeaders['X-Youtube-Bootstrap-Logged-In'] = 'false'
+ }
} else {
// YouTube doesn't send the Content-Type header for the media requests, so we shouldn't either
delete requestHeaders['Content-Type']
diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js
index 77b8f9a481a7f..e7fce2be2b5dc 100644
--- a/src/renderer/helpers/api/local.js
+++ b/src/renderer/helpers/api/local.js
@@ -8,6 +8,7 @@ import {
calculatePublishedDate,
escapeHTML,
extractNumberFromString,
+ randomArrayItem,
toLocalePublicationString
} from '../utils'
@@ -19,6 +20,25 @@ const TRACKING_PARAM_NAMES = [
'utm_content',
]
+const IOS_VERSIONS = [
+ '17.5.1',
+ '17.5',
+ '17.4.1',
+ '17.4',
+ '17.3.1',
+ '17.3',
+]
+
+const YOUTUBE_IOS_CLIENT_VERSIONS = [
+ '19.29.1',
+ '19.28.1',
+ '19.26.5',
+ '19.25.4',
+ '19.25.3',
+ '19.24.3',
+ '19.24.2',
+]
+
/**
* Creates a lightweight Innertube instance, which is faster to create or
* an instance that can decode the streaming URLs, which is slower to create
@@ -56,7 +76,36 @@ async function createInnertube({ withPlayer = false, location = undefined, safet
client_type: clientType,
// use browser fetch
- fetch: (input, init) => fetch(input, init),
+ fetch: (input, init) => {
+ // Make iOS requests work and look more realistic
+ if (init?.headers instanceof Headers && init.headers.get('x-youtube-client-name') === '5') {
+ // Use a random iOS version and YouTube iOS client version to make the requests look less suspicious
+ const clientVersion = randomArrayItem(YOUTUBE_IOS_CLIENT_VERSIONS)
+ const iosVersion = randomArrayItem(IOS_VERSIONS)
+
+ init.headers.set('x-youtube-client-version', clientVersion)
+
+ // We can't set the user-agent here, but in the main process we take the x-user-agent and set it as the user-agent
+ init.headers.delete('user-agent')
+ init.headers.set('x-user-agent', `com.google.ios.youtube/${clientVersion} (iPhone16,2; CPU iOS ${iosVersion.replaceAll('.', '_')} like Mac OS X; en_US)`)
+
+ const bodyJson = JSON.parse(init.body)
+
+ const client = bodyJson.context.client
+
+ client.clientVersion = clientVersion
+ client.deviceMake = 'Apple'
+ client.deviceModel = 'iPhone16,2' // iPhone 15 Pro Max
+ client.osName = 'iOS'
+ client.osVersion = iosVersion
+ delete client.browserName
+ delete client.browserVersion
+
+ init.body = JSON.stringify(bodyJson)
+ }
+
+ return fetch(input, init)
+ },
cache,
generate_session_locally: !!generateSessionLocally
})
@@ -190,27 +239,69 @@ export async function getLocalSearchContinuation(continuationData) {
return handleSearchResponse(response)
}
-export async function getLocalVideoInfo(id, attemptBypass = false) {
- let info
- let player
+/**
+ * @param {string} id
+ */
+export async function getLocalVideoInfo(id) {
+ const webInnertube = await createInnertube({ withPlayer: true, generateSessionLocally: false })
- if (attemptBypass) {
- const innertube = await createInnertube({ withPlayer: true, clientType: ClientType.TV_EMBEDDED, generateSessionLocally: false })
- player = innertube.actions.session.player
+ const info = await webInnertube.getInfo(id)
- // the second request that getInfo makes 404s with the bypass, so we use getBasicInfo instead
- // that's fine as we have most of the information from the original getInfo request
- info = await innertube.getBasicInfo(id, 'TV_EMBEDDED')
- } else {
- const innertube = await createInnertube({ withPlayer: true, generateSessionLocally: false })
- player = innertube.actions.session.player
+ const hasTrailer = info.has_trailer
+ const trailerIsAgeRestricted = info.getTrailerInfo() === null
- info = await innertube.getInfo(id)
+ if (hasTrailer) {
+ /** @type {import('youtubei.js').YTNodes.PlayerLegacyDesktopYpcTrailer} */
+ const trailerScreen = info.playability_status.error_screen
+ id = trailerScreen.video_id
}
- if (info.streaming_data) {
- decipherFormats(info.streaming_data.adaptive_formats, player)
- decipherFormats(info.streaming_data.formats, player)
+ // try to bypass the age restriction
+ if (info.playability_status.status === 'LOGIN_REQUIRED' || (hasTrailer && trailerIsAgeRestricted)) {
+ const tvInnertube = await createInnertube({ withPlayer: true, clientType: ClientType.TV_EMBEDDED, generateSessionLocally: false })
+
+ const tvInfo = await tvInnertube.getBasicInfo(id, 'TV_EMBEDDED')
+
+ if (tvInfo.streaming_data) {
+ decipherFormats(tvInfo.streaming_data.adaptive_formats, tvInnertube.actions.session.player)
+ decipherFormats(tvInfo.streaming_data.formats, tvInnertube.actions.session.player)
+ }
+
+ info.playability_status = tvInfo.playability_status
+ info.streaming_data = tvInfo.streaming_data
+ info.basic_info.start_timestamp = tvInfo.basic_info.start_timestamp
+ info.basic_info.duration = tvInfo.basic_info.duration
+ info.captions = tvInfo.captions
+ info.storyboards = tvInfo.storyboards
+ } else {
+ const iosInnertube = await createInnertube({ clientType: ClientType.IOS })
+
+ const iosInfo = await iosInnertube.getBasicInfo(id, 'iOS')
+
+ if (hasTrailer) {
+ info.playability_status = iosInfo.playability_status
+ info.streaming_data = iosInfo.streaming_data
+ info.basic_info.start_timestamp = iosInfo.basic_info.start_timestamp
+ info.basic_info.duration = iosInfo.basic_info.duration
+ info.captions = iosInfo.captions
+ info.storyboards = iosInfo.storyboards
+ } else if (iosInfo.streaming_data) {
+ info.streaming_data.adaptive_formats = iosInfo.streaming_data.adaptive_formats
+ // Use the legacy formats from the original web response as the iOS client doesn't have any legacy formats
+
+ for (const format of info.streaming_data.adaptive_formats) {
+ format.freeTubeUrl = format.url
+ }
+
+ // don't overwrite for live streams
+ if (!info.streaming_data.hls_manifest_url) {
+ info.streaming_data.hls_manifest_url = iosInfo.streaming_data.hls_manifest_url
+ }
+ }
+
+ if (info.streaming_data) {
+ decipherFormats(info.streaming_data.formats, webInnertube.actions.session.player)
+ }
}
return info
diff --git a/src/renderer/helpers/colors.js b/src/renderer/helpers/colors.js
index fbd0f7a874d6a..cd1e1d4aebc1f 100644
--- a/src/renderer/helpers/colors.js
+++ b/src/renderer/helpers/colors.js
@@ -1,4 +1,5 @@
import i18n from '../i18n/index'
+import { randomArrayItem } from './utils'
export const colors = [
{ name: 'Red', value: '#d50000' },
@@ -103,8 +104,7 @@ export function getRandomColorClass() {
}
export function getRandomColor() {
- const randomInt = Math.floor(Math.random() * colors.length)
- return colors[randomInt]
+ return randomArrayItem(colors)
}
export function calculateColorLuminance(colorValue) {
diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js
index 3f645343d3a6e..f65161b4a60f4 100644
--- a/src/renderer/helpers/utils.js
+++ b/src/renderer/helpers/utils.js
@@ -868,3 +868,12 @@ export function ctrlFHandler(event, inputElement) {
}
}
}
+
+/**
+ * @template T
+ * @param {T[]} array
+ * @returns {T}
+ */
+export function randomArrayItem(array) {
+ return array[Math.floor(Math.random() * array.length)]
+}
diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js
index 37799bf07a751..ff8d4ec69e79f 100644
--- a/src/renderer/views/Watch/Watch.js
+++ b/src/renderer/views/Watch/Watch.js
@@ -308,7 +308,7 @@ export default defineComponent({
}
try {
- let result = await getLocalVideoInfo(this.videoId)
+ const result = await getLocalVideoInfo(this.videoId)
this.isFamilyFriendly = result.basic_info.is_family_safe
@@ -328,31 +328,7 @@ export default defineComponent({
return
}
- let playabilityStatus = result.playability_status
- let bypassedResult = null
- let streamingVideoId = this.videoId
- let trailerIsNull = false
-
- // if widevine support is added then we should check if playabilityStatus.status is UNPLAYABLE too
- if (result.has_trailer) {
- bypassedResult = result.getTrailerInfo()
- /**
- * @type {import ('youtubei.js').YTNodes.PlayerLegacyDesktopYpcTrailer}
- */
- const trailerScreen = result.playability_status.error_screen
- streamingVideoId = trailerScreen.video_id
- // if the trailer is null then it is likely age restricted.
- trailerIsNull = bypassedResult == null
- if (!trailerIsNull) {
- playabilityStatus = bypassedResult.playability_status
- }
- }
-
- if (playabilityStatus.status === 'LOGIN_REQUIRED' || trailerIsNull) {
- // try to bypass the age restriction
- bypassedResult = await getLocalVideoInfo(streamingVideoId, true)
- playabilityStatus = bypassedResult.playability_status
- }
+ const playabilityStatus = result.playability_status
if (playabilityStatus.status === 'UNPLAYABLE') {
/**
@@ -482,13 +458,6 @@ export default defineComponent({
this.commentsEnabled = result.comments_entry_point_header != null
// endregion No comment detection
- // the bypassed result is missing some of the info that we extract in the code above
- // so we only overwrite the result here
- // we need the bypassed result for the streaming data and the subtitles
- if (bypassedResult) {
- result = bypassedResult
- }
-
if ((this.isLive || this.isPostLiveDvr) && !this.isUpcoming) {
try {
const formats = await getFormatsFromHLSManifest(result.streaming_data.hls_manifest_url)
From 42837c841b690a0956717ef8fb3c5c8c1f743b00 Mon Sep 17 00:00:00 2001
From: PikachuEXE
Date: Thu, 1 Aug 2024 20:49:19 +0800
Subject: [PATCH 049/489] ^ Update youtubei.js (#5507)
---
package.json | 2 +-
yarn.lock | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index d55e85304bad4..dfeb6b97c54d9 100644
--- a/package.json
+++ b/package.json
@@ -79,7 +79,7 @@
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.6.5",
"vuex": "^3.6.2",
- "youtubei.js": "^10.2.0"
+ "youtubei.js": "^10.3.0"
},
"devDependencies": {
"@babel/core": "^7.24.9",
diff --git a/yarn.lock b/yarn.lock
index f13a2e552b514..115cfc5bf0a5c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5586,10 +5586,10 @@ jest-worker@^29.7.0:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jintr@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/jintr/-/jintr-2.0.0.tgz#bc8e78efc04743f5c67c625587ce4d1c94afad9a"
- integrity sha512-RiVlevxttZ4eHEYB2dXKXDXluzHfRuw0DJQGsYuKCc5IvZj5/GbOakeqVX+Bar/G9kTty9xDJREcxukurkmYLA==
+jintr@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/jintr/-/jintr-2.1.1.tgz#84d555df06d26128c2a1d0e1eebd6fecdf8eb280"
+ integrity sha512-89cwX4ouogeDGOBsEVsVYsnWWvWjchmwXBB4kiBhmjOKw19FiOKhNhMhpxhTlK2ctl7DS+d/ethfmuBpzoNNgA==
dependencies:
acorn "^8.8.0"
@@ -9088,11 +9088,11 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
-youtubei.js@^10.2.0:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-10.2.0.tgz#0f5fbacf3e64c965d6e7378c870a7329ceca7228"
- integrity sha512-JLKW9AHQ1qrTwBbre1aDkH8UJFmNcc4+kOSaVou5jSY7AzfFPFJK0yvX6afnLst0UVC9wfXHrLiNx93sutVErA==
+youtubei.js@^10.3.0:
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-10.3.0.tgz#30a942e6b92ac8039a3d830563e383fdc9fd4772"
+ integrity sha512-tLmeJCECK2xF2hZZtF2nEqirdKVNLFSDpa0LhTaXY3tngtL7doQXyy7M2CLueramDTlmCnFaW+rctHirTPFaRQ==
dependencies:
- jintr "^2.0.0"
+ jintr "^2.1.1"
tslib "^2.5.0"
undici "^5.19.1"
From 5738dd14f3bebbadd4e79d7674c497cce77441eb Mon Sep 17 00:00:00 2001
From: Emma
Date: Thu, 1 Aug 2024 10:03:35 -0400
Subject: [PATCH 050/489] Only store body messages which will be used
- should prevent that hashmap from exploding in length
---
src/index.ejs | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/index.ejs b/src/index.ejs
index c8173aa4a199b..3b0065d2e21c1 100644
--- a/src/index.ejs
+++ b/src/index.ejs
@@ -16,14 +16,21 @@
}
if ('headers' in arg) {
if ('append' in arg.headers) {
- arg.headers.append('x-fta-request-id', requestId)
+ if (arg.headers.get('x-youtube-client-name') == 5) {
+ arg.headers.append('x-fta-request-id', requestId)
+ Android.queueFetchBody(requestId, body)
+ }
} else {
- arg.headers['x-fta-request-id'] = requestId
+ if ('x-youtube-client-name' in arg.headers) {
+ if (arg.headers['x-youtube-client-name'] == 5) {
+ arg.headers['x-fta-request-id'] = requestId
+ Android.queueFetchBody(requestId, body)
+ }
+ }
}
}
}
}
- Android.queueFetchBody(requestId, body)
if (typeof args[0] === 'string' && args[0].startsWith('file://')) {
// forward to xml http request
From af97f8a62a09c49361f611378e7da5324dcc7bb0 Mon Sep 17 00:00:00 2001
From: Emma
Date: Thu, 1 Aug 2024 10:22:04 -0400
Subject: [PATCH 051/489] Add more splash themes
It helps me tell multiple versions of the app apart when I have 5 different things installed.
---
_scripts/_setAppSplashTheme.mjs | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/_scripts/_setAppSplashTheme.mjs b/_scripts/_setAppSplashTheme.mjs
index 559f1e8cf7fde..95e455b6d24c6 100644
--- a/_scripts/_setAppSplashTheme.mjs
+++ b/_scripts/_setAppSplashTheme.mjs
@@ -30,11 +30,25 @@ const COLOURS = {
secondary: '#E4E4E4',
back: '#f04242',
backDark: '#f04242'
+ },
+ // blue from the logo as the background colour
+ RC: {
+ primary: '#E4E4E4',
+ secondary: '#E4E4E4',
+ back: '#14a4df',
+ backDark: '#14a4df'
+ },
+ // solarised dark
+ FEATURE_BRANCH: {
+ primary: '#E4E4E4',
+ secondary: '#E4E4E4',
+ back: '#204b56',
+ backDark: '#204b56'
}
}
let colour = 'RELEASE'
for (const key in COLOURS) {
- if (process.argv.indexOf(`--${key.toLowerCase()}`) !== -1) {
+ if (process.argv.indexOf(`--${key.toLowerCase().replaceAll('_', '-')}`) !== -1) {
colour = key
}
}
From b9ee5958dab2622ae7846b9a10f2639821018f92 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 2 Aug 2024 17:09:49 +0200
Subject: [PATCH 052/489] Bump sass-loader from 14.2.1 to 16.0.0 (#5495)
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 14.2.1 to 16.0.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/v16.0.0/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v14.2.1...v16.0.0)
---
updated-dependencies:
- dependency-name: sass-loader
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index dfeb6b97c54d9..40911dc745337 100644
--- a/package.json
+++ b/package.json
@@ -117,7 +117,7 @@
"prettier": "^2.8.8",
"rimraf": "^6.0.1",
"sass": "^1.77.8",
- "sass-loader": "^14.2.1",
+ "sass-loader": "^16.0.0",
"stylelint": "^16.7.0",
"stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
diff --git a/yarn.lock b/yarn.lock
index 115cfc5bf0a5c..daa8ad999eb26 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7501,10 +7501,10 @@ sanitize-filename@^1.6.3:
dependencies:
truncate-utf8-bytes "^1.0.0"
-sass-loader@^14.2.1:
- version "14.2.1"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-14.2.1.tgz#db9ad96b56dc1c1ea546101e76375d5b008fec70"
- integrity sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==
+sass-loader@^16.0.0:
+ version "16.0.0"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.0.tgz#9b8d497e24bc176dc368df2b5b9e90b4ad24bf4e"
+ integrity sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==
dependencies:
neo-async "^2.6.2"
From 79ca2a798740042a9eba4d8263a782989e8cffba Mon Sep 17 00:00:00 2001
From: PrestonN
Date: Fri, 2 Aug 2024 11:13:36 -0400
Subject: [PATCH 053/489] Bump version number to v0.21.3
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 40911dc745337..a0b37ad031404 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "freetube",
"productName": "FreeTube",
"description": "A private YouTube client",
- "version": "0.21.2",
+ "version": "0.21.3",
"license": "AGPL-3.0-or-later",
"main": "./dist/main.js",
"private": true,
From c12ef9683850d63b649195eb82a6a70e566d7983 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jiri=20Gr=C3=B6nroos?=
Date: Sun, 4 Aug 2024 08:37:05 +0000
Subject: [PATCH 054/489] Translated using Weblate (Finnish)
Currently translated at 91.5% (795 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fi/
---
static/locales/fi.yaml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml
index 78d2f8d5425d1..3214b97bf01fc 100644
--- a/static/locales/fi.yaml
+++ b/static/locales/fi.yaml
@@ -125,7 +125,7 @@ User Playlists:
ole tallentanut videoita. Paina "Tallenna"-painiketta videon kulmassa tallentaaksesi
sen tänne
Search bar placeholder: Etsi soittolistoja
- Empty Search Message: Tällä soittolistalla ei ole videoita, jotka vastaavat hakuasi
+ Empty Search Message: Tällä soittolistalla ei ole hakuasi vastaavia videoita
Sort By:
NameAscending: A-Ö
NameDescending: Ö-A
@@ -586,6 +586,7 @@ Settings:
Set Password: Aseta salasana
Remove Password: Poista salasana
Expand All Settings Sections: Laajenna asetusten kaikki osiot
+ Sort Settings Sections (A-Z): Järjestä asetusosio (A-Ö)
About:
#On About page
About: 'Tietoja'
@@ -640,6 +641,8 @@ About:
Donate: Lahjoita
Source code: Lähdekoodi
Discussions: Keskustelut
+ Licensed under the: Lisenssi
+ AGPLv3: AGPLv3
Channel:
Subscribe: 'Tilaa'
Unsubscribe: 'Peruuta tilaus'
@@ -1127,6 +1130,7 @@ Search Listing:
Subtitles: Teksitykset
Feed:
Refresh Feed: Päivitä {subscriptionName}
+ Feed Last Updated: 'Syöte {feedName} päivitetty viimeksi: {date}'
Yes, Delete: Kyllä, poista
checkmark: ✓
Cancel: Peruuta
From a261a0e440fe71723f0063e193100f4f9df38619 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Sun, 4 Aug 2024 15:28:02 +0200
Subject: [PATCH 055/489] Small cleanup after the YouTube.js update (#5520)
---
src/main/index.js | 6 ------
src/renderer/helpers/api/local.js | 4 ----
2 files changed, 10 deletions(-)
diff --git a/src/main/index.js b/src/main/index.js
index 942cdb5827a1e..3d3cf427d5d01 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -994,12 +994,6 @@ function runApp() {
try {
const contents = await asyncFs.readFile(filePath)
- // Probably a corrupted/broken cache entry, pretend it's absent
- // A valid entry should be a few KB large
- if (contents.byteLength < 500) {
- return undefined
- }
-
return contents.buffer
} catch (e) {
console.error(e)
diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js
index e7fce2be2b5dc..fbdbab2894ac4 100644
--- a/src/renderer/helpers/api/local.js
+++ b/src/renderer/helpers/api/local.js
@@ -94,12 +94,8 @@ async function createInnertube({ withPlayer = false, location = undefined, safet
const client = bodyJson.context.client
client.clientVersion = clientVersion
- client.deviceMake = 'Apple'
client.deviceModel = 'iPhone16,2' // iPhone 15 Pro Max
- client.osName = 'iOS'
client.osVersion = iosVersion
- delete client.browserName
- delete client.browserVersion
init.body = JSON.stringify(bodyJson)
}
From ef0d69f353720e3297244ed43cc831e08f3936d1 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Sun, 4 Aug 2024 15:29:39 +0200
Subject: [PATCH 056/489] Various performance improvements to the store (#5522)
---
src/renderer/store/modules/profiles.js | 8 ++---
src/renderer/store/modules/settings.js | 44 +++++++-------------------
src/renderer/store/modules/utils.js | 2 +-
3 files changed, 17 insertions(+), 37 deletions(-)
diff --git a/src/renderer/store/modules/profiles.js b/src/renderer/store/modules/profiles.js
index 7345c1fa04d4f..70ca26b8aaa18 100644
--- a/src/renderer/store/modules/profiles.js
+++ b/src/renderer/store/modules/profiles.js
@@ -91,10 +91,10 @@ const actions = {
commit('setProfileList', profiles)
},
- async batchUpdateSubscriptionDetails({ getters, dispatch }, channels) {
+ async batchUpdateSubscriptionDetails({ dispatch, state }, channels) {
if (channels.length === 0) { return }
- const profileList = getters.getProfileList
+ const profileList = state.profileList
for (const profile of profileList) {
const currentProfileCopy = deepCopy(profile)
@@ -128,9 +128,9 @@ const actions = {
}
},
- async updateSubscriptionDetails({ getters, dispatch }, { channelThumbnailUrl, channelName, channelId }) {
+ async updateSubscriptionDetails({ dispatch, state }, { channelThumbnailUrl, channelName, channelId }) {
const thumbnail = channelThumbnailUrl?.replace(/=s\d*/, '=s176') ?? null // change thumbnail size if different
- const profileList = getters.getProfileList
+ const profileList = state.profileList
for (const profile of profileList) {
const currentProfileCopy = deepCopy(profile)
const channel = currentProfileCopy.subscriptions.find((channel) => {
diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js
index e080dd225e67e..bf54469f16f11 100644
--- a/src/renderer/store/modules/settings.js
+++ b/src/renderer/store/modules/settings.js
@@ -385,16 +385,14 @@ const stateWithSideEffects = {
await Promise.allSettled(loadPromises)
i18n.locale = targetLocale
- await dispatch('getRegionData', {
- locale: targetLocale
- })
+ await dispatch('getRegionData', targetLocale)
}
},
defaultInvidiousInstance: {
defaultValue: '',
- sideEffectsHandler: ({ commit, getters }, value) => {
- if (value !== '' && getters.getCurrentInvidiousInstance !== value) {
+ sideEffectsHandler: ({ commit, rootState }, value) => {
+ if (value !== '' && rootState.invidious.currentInvidiousInstance !== value) {
commit('setCurrentInvidiousInstance', value)
}
}
@@ -420,6 +418,8 @@ const stateWithSideEffects = {
}
}
+const settingsWithSideEffects = Object.keys(stateWithSideEffects)
+
const customState = {
}
@@ -428,28 +428,8 @@ const customGetters = {
const customMutations = {}
-/**********/
-/*
- * DO NOT TOUCH THIS SECTION
- * If you wanna add to custom data or logic to the module,
- * do so in the aproppriate `custom_` variable
- *
- * Some of the custom actions below use these properties, so I'll be
- * adding them here instead of further down for clarity's sake
- */
-Object.assign(customState, {
- settingsWithSideEffects: Object.keys(stateWithSideEffects)
-})
-
-Object.assign(customGetters, {
- settingHasSideEffects: (state) => {
- return (id) => state.settingsWithSideEffects.includes(id)
- }
-})
-/**********/
-
const customActions = {
- grabUserSettings: async ({ commit, dispatch, getters }) => {
+ grabUserSettings: async ({ commit, dispatch }) => {
try {
// Assigning default settings for settings that have side effects
const userSettings = Object.entries(Object.assign({},
@@ -459,7 +439,7 @@ const customActions = {
for (const setting of userSettings) {
const [_id, value] = setting
- if (getters.settingHasSideEffects(_id)) {
+ if (settingsWithSideEffects.includes(_id)) {
dispatch(defaultSideEffectsTriggerId(_id), value)
}
@@ -473,14 +453,14 @@ const customActions = {
},
// Should be a root action, but we'll tolerate
- setupListenersToSyncWindows: ({ commit, dispatch, getters }) => {
+ setupListenersToSyncWindows: ({ commit, dispatch }) => {
if (process.env.IS_ELECTRON) {
const { ipcRenderer } = require('electron')
ipcRenderer.on(IpcChannels.SYNC_SETTINGS, (_, { event, data }) => {
switch (event) {
case SyncEvents.GENERAL.UPSERT:
- if (getters.settingHasSideEffects(data._id)) {
+ if (settingsWithSideEffects.includes(data._id)) {
dispatch(defaultSideEffectsTriggerId(data._id), data.value)
}
@@ -615,15 +595,15 @@ for (const settingId of Object.keys(state)) {
mutations[mutationId] = (state, value) => { state[settingId] = value }
// If setting has side effects, generate action to handle them
- if (Object.keys(stateWithSideEffects).includes(settingId)) {
+ if (settingsWithSideEffects.includes(settingId)) {
actions[triggerId] = stateWithSideEffects[settingId].sideEffectsHandler
}
- actions[updaterId] = async ({ commit, dispatch, getters }, value) => {
+ actions[updaterId] = async ({ commit, dispatch }, value) => {
try {
await DBSettingHandlers.upsert(settingId, value)
- if (getters.settingHasSideEffects(settingId)) {
+ if (settingsWithSideEffects.includes(settingId)) {
dispatch(triggerId, value)
}
diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js
index e3c858d13607c..ce9e710e4863d 100644
--- a/src/renderer/store/modules/utils.js
+++ b/src/renderer/store/modules/utils.js
@@ -401,7 +401,7 @@ const actions = {
commit('setShowProgressBar', value)
},
- async getRegionData ({ commit }, { locale }) {
+ async getRegionData ({ commit }, locale) {
const localePathExists = process.env.GEOLOCATION_NAMES.includes(locale)
const url = createWebURL(`/static/geolocations/${localePathExists ? locale : 'en-US'}.json`)
From eeb7a54cecf86451d615bd7deec260c007442e63 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:41:58 +0200
Subject: [PATCH 057/489] Bump swiper from 11.1.8 to 11.1.9 (#5530)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.1.8 to 11.1.9.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v11.1.8...v11.1.9)
---
updated-dependencies:
- dependency-name: swiper
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index a0b37ad031404..fc320da0f2eaa 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"path-browserify": "^1.0.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
- "swiper": "^11.1.8",
+ "swiper": "^11.1.9",
"video.js": "7.21.5",
"videojs-contrib-quality-levels": "^3.0.0",
"videojs-http-source-selector": "^1.1.6",
diff --git a/yarn.lock b/yarn.lock
index daa8ad999eb26..3f103277eebc2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8174,10 +8174,10 @@ svgo@^3.2.0:
csso "^5.0.5"
picocolors "^1.0.0"
-swiper@^11.1.8:
- version "11.1.8"
- resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.8.tgz#16a9ce0441a45cc8d754280361a100e530364583"
- integrity sha512-sBFp7fA+IfZ/7BMcg8/JSEqDD1qZXBUyliT76yk3zIYVu2fMwFVAghhAJ9vBM5tJUtHW5qcD0pmeEGQs1EK14w==
+swiper@^11.1.9:
+ version "11.1.9"
+ resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.9.tgz#55505c7cf4723b678df8220fc06152b793585dbc"
+ integrity sha512-rflu8zvfGa3x1v/aeSufk4zRJffhOQowyvtJlp46sUBnOqAuk1Rdv5Ldj0AWWBV595iZ+ZMk7VB35ZRtRUomtA==
synckit@^0.6.0:
version "0.6.2"
From e452814f7557f5c6a7c2ae59e3c2e17f0a95827b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:42:20 +0200
Subject: [PATCH 058/489] Bump stylelint from 16.7.0 to 16.8.1 in the stylelint
group (#5528)
Bumps the stylelint group with 1 update: [stylelint](https://github.com/stylelint/stylelint).
Updates `stylelint` from 16.7.0 to 16.8.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.7.0...16.8.1)
---
updated-dependencies:
- dependency-name: stylelint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: stylelint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 42 +++++++++++++++++++++---------------------
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/package.json b/package.json
index fc320da0f2eaa..39f75c9184899 100644
--- a/package.json
+++ b/package.json
@@ -118,7 +118,7 @@
"rimraf": "^6.0.1",
"sass": "^1.77.8",
"sass-loader": "^16.0.0",
- "stylelint": "^16.7.0",
+ "stylelint": "^16.8.1",
"stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
"stylelint-high-performance-animation": "^1.10.0",
diff --git a/yarn.lock b/yarn.lock
index 3f103277eebc2..af936a947bc71 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3279,10 +3279,10 @@ debug@2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
- version "4.3.5"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
- integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.6:
+ version "4.3.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
+ integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
dependencies:
ms "2.1.2"
@@ -6911,10 +6911,10 @@ postcss-reduce-transforms@^7.0.0:
dependencies:
postcss-value-parser "^4.2.0"
-postcss-resolve-nested-selector@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
- integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==
+postcss-resolve-nested-selector@^0.1.1, postcss-resolve-nested-selector@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz#0068767902fb40f0e6cd7b24faee4fa4bc14a5da"
+ integrity sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==
postcss-safe-parser@^7.0.0:
version "7.0.0"
@@ -6926,10 +6926,10 @@ postcss-scss@^4.0.9:
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685"
integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==
-postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53"
- integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==
+postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
+ integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -6962,7 +6962,7 @@ postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.40:
+postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.40:
version "8.4.40"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8"
integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==
@@ -8070,10 +8070,10 @@ stylelint-use-logical-spec@^5.0.1:
resolved "https://registry.yarnpkg.com/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#d5aa254d615d373f18214297c0b49a03a6ca5980"
integrity sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==
-stylelint@^16.4.0, stylelint@^16.7.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.7.0.tgz#5f6acf516aedecba7a6472ba0cc1ffc20e2be86b"
- integrity sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==
+stylelint@^16.4.0, stylelint@^16.8.1:
+ version "16.8.1"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.8.1.tgz#7d4b2d7922771dd0514446a66f04e954f1dfa444"
+ integrity sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==
dependencies:
"@csstools/css-parser-algorithms" "^2.7.1"
"@csstools/css-tokenizer" "^2.4.1"
@@ -8085,7 +8085,7 @@ stylelint@^16.4.0, stylelint@^16.7.0:
cosmiconfig "^9.0.0"
css-functions-list "^3.2.2"
css-tree "^2.3.1"
- debug "^4.3.5"
+ debug "^4.3.6"
fast-glob "^3.3.2"
fastest-levenshtein "^1.0.16"
file-entry-cache "^9.0.0"
@@ -8102,10 +8102,10 @@ stylelint@^16.4.0, stylelint@^16.7.0:
micromatch "^4.0.7"
normalize-path "^3.0.0"
picocolors "^1.0.1"
- postcss "^8.4.39"
- postcss-resolve-nested-selector "^0.1.1"
+ postcss "^8.4.40"
+ postcss-resolve-nested-selector "^0.1.4"
postcss-safe-parser "^7.0.0"
- postcss-selector-parser "^6.1.0"
+ postcss-selector-parser "^6.1.1"
postcss-value-parser "^4.2.0"
resolve-from "^5.0.0"
string-width "^4.2.3"
From 3a4c725654524823d2037c1a65786eb156ef2704 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:42:37 +0200
Subject: [PATCH 059/489] Bump mikefarah/yq from 4.44.2 to 4.44.3 (#5525)
Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.44.2 to 4.44.3.
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](https://github.com/mikefarah/yq/compare/v4.44.2...v4.44.3)
---
updated-dependencies:
- dependency-name: mikefarah/yq
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/flatpak.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml
index dcb395c41cd27..abee92197ac42 100644
--- a/.github/workflows/flatpak.yml
+++ b/.github/workflows/flatpak.yml
@@ -77,22 +77,22 @@ jobs:
date +"%Y-%m-%d" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Update x64 File Location in yml File
- uses: mikefarah/yq@v4.44.2
+ uses: mikefarah/yq@v4.44.3
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[0].url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-linux-portable-x64.zip"' io.freetubeapp.FreeTube.yml
- name: Update x64 Hash in yml File
- uses: mikefarah/yq@v4.44.2
+ uses: mikefarah/yq@v4.44.3
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[0].sha256 = "${{ env.HASH_X64 }}"' io.freetubeapp.FreeTube.yml
- name: Update ARM File Location in yml File
- uses: mikefarah/yq@v4.44.2
+ uses: mikefarah/yq@v4.44.3
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[1].url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-linux-portable-arm64.zip"' io.freetubeapp.FreeTube.yml
- name: Update ARM Hash in yml File
- uses: mikefarah/yq@v4.44.2
+ uses: mikefarah/yq@v4.44.3
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[1].sha256 = "${{ env.HASH_ARM64 }}"' io.freetubeapp.FreeTube.yml
From 4417554856367f5882c128e39ab1fcede4ee54f5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:43:16 +0200
Subject: [PATCH 060/489] Bump the babel group with 2 updates (#5526)
Bumps the babel group with 2 updates: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).
Updates `@babel/core` from 7.24.9 to 7.25.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.2/packages/babel-core)
Updates `@babel/preset-env` from 7.25.0 to 7.25.3
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.3/packages/babel-preset-env)
---
updated-dependencies:
- dependency-name: "@babel/core"
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: babel
- dependency-name: "@babel/preset-env"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: babel
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
yarn.lock | 203 +++++++++++++++++----------------------------------
2 files changed, 71 insertions(+), 136 deletions(-)
diff --git a/package.json b/package.json
index 39f75c9184899..bad0280e38faa 100644
--- a/package.json
+++ b/package.json
@@ -82,10 +82,10 @@
"youtubei.js": "^10.3.0"
},
"devDependencies": {
- "@babel/core": "^7.24.9",
+ "@babel/core": "^7.25.2",
"@babel/eslint-parser": "^7.25.1",
"@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/preset-env": "^7.25.0",
+ "@babel/preset-env": "^7.25.3",
"@double-great/stylelint-a11y": "^3.0.2",
"@intlify/eslint-plugin-vue-i18n": "^3.0.0",
"babel-loader": "^9.1.3",
diff --git a/yarn.lock b/yarn.lock
index af936a947bc71..be2c3274f2098 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -28,26 +28,26 @@
"@babel/highlight" "^7.24.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8", "@babel/compat-data@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.0.tgz#6b226a5da3a686db3c30519750e071dce292ad95"
- integrity sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5"
+ integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
-"@babel/core@^7.24.9":
- version "7.24.9"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82"
- integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==
+"@babel/core@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77"
+ integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.9"
- "@babel/helper-compilation-targets" "^7.24.8"
- "@babel/helper-module-transforms" "^7.24.9"
- "@babel/helpers" "^7.24.8"
- "@babel/parser" "^7.24.8"
- "@babel/template" "^7.24.7"
- "@babel/traverse" "^7.24.8"
- "@babel/types" "^7.24.9"
+ "@babel/generator" "^7.25.0"
+ "@babel/helper-compilation-targets" "^7.25.2"
+ "@babel/helper-module-transforms" "^7.25.2"
+ "@babel/helpers" "^7.25.0"
+ "@babel/parser" "^7.25.0"
+ "@babel/template" "^7.25.0"
+ "@babel/traverse" "^7.25.2"
+ "@babel/types" "^7.25.2"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@@ -63,16 +63,6 @@
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.24.8", "@babel/generator@^7.24.9":
- version "7.24.9"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.9.tgz#5c2575a1070e661bbbc9df82a853989c9a656f12"
- integrity sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A==
- dependencies:
- "@babel/types" "^7.24.9"
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.25"
- jsesc "^2.5.1"
-
"@babel/generator@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e"
@@ -105,12 +95,12 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8":
- version "7.24.8"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271"
- integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
+"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c"
+ integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
dependencies:
- "@babel/compat-data" "^7.24.8"
+ "@babel/compat-data" "^7.25.2"
"@babel/helper-validator-option" "^7.24.8"
browserslist "^4.23.1"
lru-cache "^5.1.1"
@@ -209,13 +199,6 @@
"@babel/template" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-hoist-variables@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee"
- integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==
- dependencies:
- "@babel/types" "^7.24.7"
-
"@babel/helper-member-expression-to-functions@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815"
@@ -247,26 +230,15 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9":
- version "7.24.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29"
- integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==
+"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6"
+ integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==
dependencies:
- "@babel/helper-environment-visitor" "^7.24.7"
"@babel/helper-module-imports" "^7.24.7"
"@babel/helper-simple-access" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
"@babel/helper-validator-identifier" "^7.24.7"
-
-"@babel/helper-module-transforms@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz#3ffc23c473a2769a7e40d3274495bd559fdd2ecc"
- integrity sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==
- dependencies:
- "@babel/helper-module-imports" "^7.24.7"
- "@babel/helper-simple-access" "^7.24.7"
- "@babel/helper-validator-identifier" "^7.24.7"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.2"
"@babel/helper-optimise-call-expression@^7.18.6":
version "7.18.6"
@@ -398,13 +370,13 @@
"@babel/traverse" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/helpers@^7.24.8":
- version "7.24.8"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873"
- integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==
+"@babel/helpers@^7.25.0":
+ version "7.25.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a"
+ integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==
dependencies:
- "@babel/template" "^7.24.7"
- "@babel/types" "^7.24.8"
+ "@babel/template" "^7.25.0"
+ "@babel/types" "^7.25.0"
"@babel/highlight@^7.24.7":
version "7.24.7"
@@ -416,23 +388,20 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.23.5", "@babel/parser@^7.24.7", "@babel/parser@^7.24.8":
- version "7.24.8"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f"
- integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==
-
-"@babel/parser@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.0.tgz#9fdc9237504d797b6e7b8f66e78ea7f570d256ad"
- integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==
+"@babel/parser@^7.23.5", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065"
+ integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==
+ dependencies:
+ "@babel/types" "^7.25.2"
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz#328275f22d809b962978d998c6eba22a233ac8aa"
- integrity sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f"
+ integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==
dependencies:
"@babel/helper-plugin-utils" "^7.24.8"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.3"
"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0":
version "7.25.0"
@@ -744,7 +713,7 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-"@babel/plugin-transform-function-name@^7.25.0":
+"@babel/plugin-transform-function-name@^7.25.1":
version "7.25.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37"
integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==
@@ -761,12 +730,12 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-json-strings" "^7.8.3"
-"@babel/plugin-transform-literals@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c"
- integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==
+"@babel/plugin-transform-literals@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3"
+ integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-logical-assignment-operators@^7.24.7":
version "7.24.7"
@@ -998,16 +967,16 @@
"@babel/helper-create-regexp-features-plugin" "^7.24.7"
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/preset-env@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.0.tgz#3fe92e470311e91478129efda101816c680f0479"
- integrity sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==
+"@babel/preset-env@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c"
+ integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==
dependencies:
- "@babel/compat-data" "^7.25.0"
- "@babel/helper-compilation-targets" "^7.24.8"
+ "@babel/compat-data" "^7.25.2"
+ "@babel/helper-compilation-targets" "^7.25.2"
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-validator-option" "^7.24.8"
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.0"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3"
"@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7"
@@ -1048,9 +1017,9 @@
"@babel/plugin-transform-exponentiation-operator" "^7.24.7"
"@babel/plugin-transform-export-namespace-from" "^7.24.7"
"@babel/plugin-transform-for-of" "^7.24.7"
- "@babel/plugin-transform-function-name" "^7.25.0"
+ "@babel/plugin-transform-function-name" "^7.25.1"
"@babel/plugin-transform-json-strings" "^7.24.7"
- "@babel/plugin-transform-literals" "^7.24.7"
+ "@babel/plugin-transform-literals" "^7.25.2"
"@babel/plugin-transform-logical-assignment-operators" "^7.24.7"
"@babel/plugin-transform-member-expression-literals" "^7.24.7"
"@babel/plugin-transform-modules-amd" "^7.24.7"
@@ -1115,16 +1084,7 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/template@^7.18.6", "@babel/template@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315"
- integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==
- dependencies:
- "@babel/code-frame" "^7.24.7"
- "@babel/parser" "^7.24.7"
- "@babel/types" "^7.24.7"
-
-"@babel/template@^7.25.0":
+"@babel/template@^7.18.6", "@babel/template@^7.24.7", "@babel/template@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==
@@ -1133,48 +1093,23 @@
"@babel/parser" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8":
- version "7.24.8"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7"
- integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==
- dependencies:
- "@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.8"
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-function-name" "^7.24.7"
- "@babel/helper-hoist-variables" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
- "@babel/parser" "^7.24.8"
- "@babel/types" "^7.24.8"
- debug "^4.3.1"
- globals "^11.1.0"
-
-"@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1":
- version "7.25.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.1.tgz#64dbc31effc5f3fa3cf10d19df0e6310214743f5"
- integrity sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490"
+ integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
dependencies:
"@babel/code-frame" "^7.24.7"
"@babel/generator" "^7.25.0"
- "@babel/parser" "^7.25.0"
+ "@babel/parser" "^7.25.3"
"@babel/template" "^7.25.0"
- "@babel/types" "^7.25.0"
+ "@babel/types" "^7.25.2"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.4.4":
- version "7.24.9"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73"
- integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==
- dependencies:
- "@babel/helper-string-parser" "^7.24.8"
- "@babel/helper-validator-identifier" "^7.24.7"
- to-fast-properties "^2.0.0"
-
-"@babel/types@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.0.tgz#e6e3656c581f28da8452ed4f69e38008ec0ba41b"
- integrity sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==
+"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125"
+ integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
dependencies:
"@babel/helper-string-parser" "^7.24.8"
"@babel/helper-validator-identifier" "^7.24.7"
From a13ddd626878721e0e2a29cd686ba059685295f0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:43:38 +0200
Subject: [PATCH 061/489] Bump eslint-plugin-n from 17.10.1 to 17.10.2 in the
eslint group (#5527)
Bumps the eslint group with 1 update: [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n).
Updates `eslint-plugin-n` from 17.10.1 to 17.10.2
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.10.1...v17.10.2)
---
updated-dependencies:
- dependency-name: eslint-plugin-n
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index bad0280e38faa..af144bc5fbfbd 100644
--- a/package.json
+++ b/package.json
@@ -99,7 +99,7 @@
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsonc": "^2.16.0",
- "eslint-plugin-n": "^17.10.1",
+ "eslint-plugin-n": "^17.10.2",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-promise": "^7.0.0",
"eslint-plugin-unicorn": "^55.0.0",
diff --git a/yarn.lock b/yarn.lock
index be2c3274f2098..de94f3701db02 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3905,10 +3905,10 @@ eslint-plugin-jsonc@^2.16.0:
natural-compare "^1.4.0"
synckit "^0.6.0"
-eslint-plugin-n@^17.10.1:
- version "17.10.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz#da2a3fd1a41c9d901bbc06b8c4d4d5916e012913"
- integrity sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==
+eslint-plugin-n@^17.10.2:
+ version "17.10.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz#16d8d7d0b1dc076c03513bfea096f8ce1b0bcca8"
+ integrity sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
enhanced-resolve "^5.17.0"
From d8f731e6fd5e76d20c3a270ac002c46b75d1ac35 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 22:45:36 +0200
Subject: [PATCH 062/489] Bump electron from 31.3.0 to 31.3.1 (#5529)
Bumps [electron](https://github.com/electron/electron) from 31.3.0 to 31.3.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v31.3.0...v31.3.1)
---
updated-dependencies:
- dependency-name: electron
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index af144bc5fbfbd..2150c8cd323b2 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
- "electron": "^31.3.0",
+ "electron": "^31.3.1",
"electron-builder": "^24.13.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/yarn.lock b/yarn.lock
index de94f3701db02..cbb26f63eaa5c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3562,10 +3562,10 @@ electron-to-chromium@^1.4.820:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
-electron@^31.3.0:
- version "31.3.0"
- resolved "https://registry.yarnpkg.com/electron/-/electron-31.3.0.tgz#4a084a8229d5bd829c33b8b65073381d0e925093"
- integrity sha512-3LMRMmK4UK0A+jYSLGLYdfhc20TgY2v5jD3iGmhRZlDYj0gn7xBj/waRjlNalysZ0D2rgPvoes0wHuf5e/Bguw==
+electron@^31.3.1:
+ version "31.3.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.3.1.tgz#de5f21f10db1ba0568e0cdd7ae76ec40a4b800c3"
+ integrity sha512-9fiuWlRhBfygtcT+auRd/WdBK/f8LZZcrpx0RjpXhH2DPTP/PfnkC4JB1PW55qCbGbh4wAgkYbf4ExIag8oGCA==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
From cddc22e8a61062e65d8d6d1cc97543ab26e925e0 Mon Sep 17 00:00:00 2001
From: PikachuEXE
Date: Thu, 8 Aug 2024 05:14:22 +0800
Subject: [PATCH 063/489] * Replace deprecated babel package
@babel/plugin-proposal-class-properties w/
@babel/plugin-transform-class-properties (#5535)
---
.babelrc | 2 +-
package.json | 2 +-
yarn.lock | 72 +++-------------------------------------------------
3 files changed, 5 insertions(+), 71 deletions(-)
diff --git a/.babelrc b/.babelrc
index bca0e3c2c303e..c13cff889347b 100644
--- a/.babelrc
+++ b/.babelrc
@@ -11,6 +11,6 @@
]
],
"plugins": [
- "@babel/proposal-class-properties"
+ "@babel/plugin-transform-class-properties"
]
}
diff --git a/package.json b/package.json
index 2150c8cd323b2..b104a072da56b 100644
--- a/package.json
+++ b/package.json
@@ -84,7 +84,7 @@
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/eslint-parser": "^7.25.1",
- "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-transform-class-properties": "^7.24.7",
"@babel/preset-env": "^7.25.3",
"@double-great/stylelint-a11y": "^3.0.2",
"@intlify/eslint-plugin-vue-i18n": "^3.0.0",
diff --git a/yarn.lock b/yarn.lock
index cbb26f63eaa5c..afe65cbe792a2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -106,19 +106,6 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.18.6":
- version "7.18.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298"
- integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.18.9"
- "@babel/helper-member-expression-to-functions" "^7.18.9"
- "@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/helper-replace-supers" "^7.18.9"
- "@babel/helper-split-export-declaration" "^7.18.6"
-
"@babel/helper-create-class-features-plugin@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b"
@@ -171,11 +158,6 @@
lodash.debounce "^4.0.8"
resolve "^1.14.2"
-"@babel/helper-environment-visitor@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
- integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
-
"@babel/helper-environment-visitor@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
@@ -183,14 +165,6 @@
dependencies:
"@babel/types" "^7.24.7"
-"@babel/helper-function-name@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0"
- integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==
- dependencies:
- "@babel/template" "^7.18.6"
- "@babel/types" "^7.18.9"
-
"@babel/helper-function-name@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2"
@@ -199,13 +173,6 @@
"@babel/template" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-member-expression-to-functions@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815"
- integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==
- dependencies:
- "@babel/types" "^7.18.9"
-
"@babel/helper-member-expression-to-functions@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f"
@@ -240,13 +207,6 @@
"@babel/helper-validator-identifier" "^7.24.7"
"@babel/traverse" "^7.25.2"
-"@babel/helper-optimise-call-expression@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
- integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==
- dependencies:
- "@babel/types" "^7.18.6"
-
"@babel/helper-optimise-call-expression@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f"
@@ -277,17 +237,6 @@
"@babel/helper-wrap-function" "^7.25.0"
"@babel/traverse" "^7.25.0"
-"@babel/helper-replace-supers@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6"
- integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==
- dependencies:
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-member-expression-to-functions" "^7.18.9"
- "@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/traverse" "^7.18.9"
- "@babel/types" "^7.18.9"
-
"@babel/helper-replace-supers@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765"
@@ -322,13 +271,6 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-split-export-declaration@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
- integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
- dependencies:
- "@babel/types" "^7.18.6"
-
"@babel/helper-split-export-declaration@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856"
@@ -434,14 +376,6 @@
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/traverse" "^7.25.0"
-"@babel/plugin-proposal-class-properties@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3"
- integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
-
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
version "7.21.0-placeholder-for-preset-env.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
@@ -1084,7 +1018,7 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/template@^7.18.6", "@babel/template@^7.24.7", "@babel/template@^7.25.0":
+"@babel/template@^7.24.7", "@babel/template@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==
@@ -1093,7 +1027,7 @@
"@babel/parser" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3":
+"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3":
version "7.25.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490"
integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
@@ -1106,7 +1040,7 @@
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4":
+"@babel/types@^7.18.6", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4":
version "7.25.2"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125"
integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
From 98a0bf38901646870bd301dd2088d8f459fdfc98 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Thu, 8 Aug 2024 11:40:20 +0000
Subject: [PATCH 064/489] Translated using Weblate (Japanese)
Currently translated at 90.3% (784 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 2d726642785e5..82ac87b9a68a5 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -382,6 +382,7 @@ Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。
Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除
Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存
+ Remove All Playlists: 再生リストをすべて削除
Data Settings:
How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか?
Unknown data key: 不明なデータ キー
@@ -493,6 +494,9 @@ Settings:
Do Nothing: 何もしない
Category Color: カテゴリの色
UseDeArrowTitles: 動画タイトルに DeArrow を使用する
+ UseDeArrowThumbnails: DeArrow のサムネイルを使用する
+ 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': DeArrow
+ Thumbnail Generator API Url (デフォルトは https://dearrow-thumb.ajay.app)
External Player Settings:
Custom External Player Arguments: カスタム外部プレーヤー引数
Custom External Player Executable: カスタム外部プレーヤーの実行可能ファイル
@@ -743,7 +747,7 @@ Video:
playlist: 再生リスト
video: 動画
OpenInTemplate: '{externalPlayer} で開く'
- Premieres on: プレミア公開
+ Premieres on: プレミア公開中
Stats:
player resolution: 表示領域
fps: FPS
@@ -764,12 +768,15 @@ Video:
Bandwidth: 帯域幅
Dropped / Total Frames: ドロップ率 / 総フレーム数
Premieres in: 配信開始まで
- Premieres: プレミア
+ Premieres: プレミア公開
Show Super Chat Comment: Super Chat のコメント表示
Scroll to Bottom: 下までスクロール
Upcoming: 今後の配信予定
'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': この配信ではライブチャットは使用できません。配信者によって無効に設定されているようです。
Pause on Current Video: 現在の動画の一時停止
+ Hide Channel: チャンネルを非表示
+ Unhide Channel: チャンネルを表示
+ More Options: その他の設定
Videos:
#& Sort By
Sort By:
@@ -843,8 +850,8 @@ Comments:
Up Next: '次の動画'
# Toast Messages
-Local API Error (Click to copy): '内部 API エラー(クリックするとコピー)'
-Invidious API Error (Click to copy): 'Invidious API エラー(クリックするとコピー)'
+Local API Error (Click to copy): '内部 API エラー(クリックしてコピー)'
+Invidious API Error (Click to copy): 'Invidious API エラー(クリックしてコピー)'
Falling back to Invidious API: '代替の Invidious API に切替'
Falling back to Local API: '代替の内部 API に切替'
Subscriptions have not yet been implemented: '登録チャンネルは未実装です'
@@ -938,6 +945,7 @@ Tooltips:
External Player: 外部プレーヤーを選択すると、動画(対応している場合は再生リスト)を開くためのアイコンがサムネイルに表示されます。警告:Invidious
の設定は、外部プレーヤーには影響しません。
DefaultCustomArgumentsTemplate: "(デフォルト: '{defaultCustomArguments}')"
+ Ignore Default Arguments: 動画のURL以外のデフォルトの引数(再生速度、再生リストのURLなど)を外部プレーヤーに送信しないでください。カスタム引数はそのまま引き継がれます。
Experimental Settings:
Replace HTTP Cache: Electron のディスクに基づく HTTP キャッシュを無効化し、メモリ内で独自の画像キャッシュを使用します。このことにより
RAM の使用率は増加します。
@@ -946,8 +954,11 @@ Tooltips:
ID は、大文字と小文字を区別するので完全に一致させてください。
Hide Subscriptions Live: この設定は、アプリ全体の "{appWideSetting}" 設定により上書きされます。"{settingsSection}"
項目の "{subsection}" にあります
+ Hide Videos and Playlists Containing Text: FreeTube
+ 全体での履歴やあなたの再生リストと再生リスト内の動画を除き、元のタイトルにその単語を含む動画や単語の一部または、フレーズ(大文字と小文字を区別しない)が含まれているすべての動画と再生リストを非表示にします。
SponsorBlock Settings:
UseDeArrowTitles: 動画のタイトルを DeArrow からユーザーが投稿したタイトルに置き換えます。
+ UseDeArrowThumbnails: 動画のサムネイルを DeArrow からのサムネイルに置き換えます。
Playing Next Video Interval: すぐに次の動画を再生します。クリックするとキャンセル。|次の動画を {nextVideoInterval}
秒で再生します。クリックするとキャンセル。|次の動画を {nextVideoInterval} 秒で再生します。クリックするとキャンセル。
More: もっと見る
@@ -997,3 +1008,15 @@ Search character limit: 検索クエリは {searchCharacterLimit} 文字制限
Feed:
Feed Last Updated: '{feedName} フィードの最終更新日時: {date}'
Refresh Feed: '{subscriptionName} の更新'
+Channel Hidden: '{channel} をチャンネルフィルターに追加しました'
+Channel Unhidden: '{channel} をチャンネルフィルターから削除しました'
+Tag already exists: '"{tagName}" のタグはすでに存在します'
+Search Listing:
+ Label:
+ 4K: 4K
+ Subtitles: 字幕
+Yes, Delete: はい、削除します
+Yes, Restart: はい、再起動します
+Yes, Open Link: はい、リンクを開きます
+Cancel: キャンセル
+checkmark: ✓
From 363315c6cfcba4247a367902002027f137e35ad7 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Thu, 8 Aug 2024 15:02:17 +0000
Subject: [PATCH 065/489] Translated using Weblate (Japanese)
Currently translated at 95.3% (828 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 82 +++++++++++++++++++++++++++++++++++-------
1 file changed, 70 insertions(+), 12 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 82ac87b9a68a5..0afaddbcec857 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -80,6 +80,18 @@ Search Filters:
Fetch more results: 'もっと見る'
# Sidebar
There are no more results for this search: 検索結果は、これ以上ありません
+ Features:
+ Features: 特徴
+ 3D: 3D
+ VR180: VR180
+ 4K: 4K
+ HD: HD
+ Live: ライブ
+ Subtitles: 字幕
+ HDR: HDR
+ Creative Commons: クリエイティブ・コモンズ
+ Location: 場所
+ 360 Video: 360° 動画
Subscriptions:
# On Subscriptions Page
Subscriptions: '登録チャンネル'
@@ -153,10 +165,13 @@ User Playlists:
Playlist name cannot be empty. Please input a name.: 再生リストの名前は空白にできません。名前を入力してください.
Reverted to use {oldPlaylistName} for quick bookmark: クイックブックマーク用に {oldPlaylistName}
を元に戻しました
- "{videoCount} video(s) have been removed": 1 つの動画を削除しました | {video Count} 動画を削除しました
+ "{videoCount} video(s) have been removed": 1 つの動画を削除しました | {video Count} つの動画を削除しました
Playlist {playlistName} has been deleted.: 再生リスト {playlistName} が削除されました。
There were no videos to remove.: 削除する動画はありません。
This playlist does not exist: この再生リストは存在しません
+ This playlist is already being used for quick bookmark.: この再生リストはすでにクイックブックマークとして使用されています。
+ Playlist {playlistName} is the new quick bookmark playlist.: 再生リスト {playlistName}
+ が新しいクイックブックマーク再生リストです。
Search for Videos: 動画検索
Save Changes: 変更の保存
Move Video Up: 動画を上へ移動
@@ -169,13 +184,38 @@ User Playlists:
Are you sure you want to delete this playlist? This cannot be undone: 再生リストを削除してもいいですか?復元は不可能です。
Are you sure you want to remove all watched videos from this playlist? This cannot be undone: 再生リストから再生済みの動画を削除してもいいですか?復元は不可能です。
You have no playlists. Click on the create new playlist button to create a new one.: 再生リストがありません。新しい再生リストを作成するには、「新しい再生リストの作成」ボタンをクリックしてください。
+ AddVideoPrompt:
+ "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount}
+ つの動画が追加されます'
+ Select a playlist to add your N videos to: 動画を追加する再生リストを選択してください | {videoCount}
+ つの動画を追加する再生リストを選択してください
+ Allow Adding Duplicate Video(s): 重複した動画の追加を許可する
+ Toast:
+ You haven't selected any playlist yet.: まだ再生リストを選択していません。
+ "{videoCount} video(s) added to 1 playlist": 1つの動画が1個の再生リストに追加されました | {videoCount}
+ つの動画が1個の再生リストに追加されました
+ "{videoCount} video(s) added to {playlistCount} playlists": 1つの動画が {playlistCount}
+ 個の再生リストに追加されました | {videoCount} つの動画が {playlistCount} 個の再生リストに追加されました
+ Search in Playlists: 再生リストで検索
+ N playlists selected: '{playlistCount} 選択中'
+ Save: 保存
+ "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
+ つの動画はすでに追加されています'
+ CreatePlaylistPrompt:
+ Toast:
+ There was an issue with creating the playlist.: 再生リストの作成中に問題が発生しました。
+ There is already a playlist with this name. Please pick a different name.: この名前の再生リストはすでに存在します。別の名前を選んでください。
+ Playlist {playlistName} has been successfully created.: 再生リスト {playlistName}
+ が正常に作成されました。
+ New Playlist Name: 新しい再生リスト名
+ Create: 作成
History:
# On History Page
History: '履歴'
Watch History: '視聴履歴'
- Your history list is currently empty.: 履歴はありません。
+ Your history list is currently empty.: 現在、履歴リストは空です。
Search bar placeholder: 履歴の検索
- Empty Search Message: 履歴に、検索に一致する動画はありません
+ Empty Search Message: 検索条件に一致する動画は履歴にありません
Settings:
# On Settings Page
Settings: '設定'
@@ -206,7 +246,7 @@ Settings:
Region for Trending: '急上昇の地域設定'
#! List countries
Check for Latest Blog Posts: 新着ブログの確認
- Check for Updates: 最新版の確認
+ Check for Updates: 更新の確認
View all Invidious instance information: すべての Invidious インスタンス情報の表示
System Default: 初期設定
Clear Default Instance: デフォルトの設定をクリアする
@@ -220,6 +260,9 @@ Settings:
Ask Before Opening Link: リンクを開く前に確認
Open Link: リンクの表示
External Link Handling: 外部リンク処理
+ Auto Load Next Page:
+ Label: 次のページを自動で読み込む
+ Tooltip: 追加のページやコメントを自動的に読み込む。
Theme Settings:
Theme Settings: 'テーマの設定'
Match Top Bar with Main Color: '上部バーをメイン カラーと同じにする'
@@ -230,11 +273,14 @@ Settings:
Light: 'ライト'
Dracula: 'ドラキュラ'
System Default: 初期設定
- Catppuccin Mocha: Catppuccin Mocha
+ Catppuccin Mocha: キャプチーノ・モカ
Pastel Pink: パステルピンク
Hot Pink: ホットピンク
+ Nordic: ノルディック
+ Solarized Dark: ソラライズド・ダーク
+ Solarized Light: ソラライズド・ライト
Main Color Theme:
- Main Color Theme: 'テーマのメイン カラー'
+ Main Color Theme: 'メインカラー'
Red: '赤'
Pink: '桃'
Purple: '紫'
@@ -258,10 +304,10 @@ Settings:
Dracula Purple: 'ドラキュラ 紫'
Dracula Red: 'ドラキュラ 赤'
Dracula Yellow: 'ドラキュラ 黄'
- Catppuccin Mocha Rosewater: Catppuccin Mocha Rosewater
- Catppuccin Mocha Flamingo: Catppuccin Mocha Flamingo
- Catppuccin Mocha Pink: Catppuccin Mocha Pink
- Catppuccin Mocha Mauve: Catppuccin Mocha Mauve
+ Catppuccin Mocha Rosewater: キャプチーノ・モカ ローズウォーター
+ Catppuccin Mocha Flamingo: キャプチーノ・モカ 鮮やかなピンク
+ Catppuccin Mocha Pink: キャプチーノ・モカ 淡いピンク
+ Catppuccin Mocha Mauve: キャプチーノ・モカ 淡い紫
Catppuccin Mocha Red: Catppuccin Mocha Red
Catppuccin Mocha Maroon: Catppuccin Mocha Maroon
Catppuccin Mocha Peach: Catppuccin Mocha Peach
@@ -465,6 +511,8 @@ Settings:
Hide Channels Disabled Message: 一部のチャンネルが ID を使用してブロックされ、処理されませんでした。これらの ID が更新されている間、機能はブロックされます
Hide Channels Already Exists: 既に存在するチャンネル ID
Hide Channels API Error: 提供された ID のユーザーを取得できませんでした。ID が正しいかどうかをもう一度確認してください。
+ Hide Videos and Playlists Containing Text Placeholder: 単語、単語の一部、またはフレーズ
+ Hide Videos and Playlists Containing Text: 特定のテキストを含む動画と再生リストを非表示にする
The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: ネットワーク情報の取得中にエラーが発生しました。プロキシーを正しく設定してますか?
@@ -506,6 +554,7 @@ Settings:
Players:
None:
Name: なし
+ Ignore Default Arguments: デフォルト引数を無視する
Download Settings:
Download Settings: ダウンロードの設定
Ask Download Path: ダウンロードパスの設定
@@ -533,6 +582,8 @@ Settings:
Password Incorrect: パスワードが正しくありません
Password: パスワード
Unlock: ロック解除
+ Sort Settings Sections (A-Z): 設定項目の並べ替え(A-Z)
+ Expand All Settings Sections: 全ての設定項目を展開する
About:
#On About page
About: '概要'
@@ -983,7 +1034,7 @@ Channels:
Unsubscribe Prompt: 「{channelName}」のチャンネル登録を解除しますか?
Count: '{number} 件のチャンネルが見つかりました。'
Empty: 現在、チャンネル一覧は空です。
-Screenshot Success: スクリーンショットを「{filePath}」として保存しました
+Screenshot Success: スクリーンショットを「{filePath}」に保存しました
Screenshot Error: スクリーンショットに失敗しました。{error}
New Window: 新しいウィンドウ
Clipboard:
@@ -996,7 +1047,7 @@ Chapters:
'Chapters list hidden, current chapter: {chapterName}': 'チャプター リストを非表示、現在のチャプター:
{chapterName}'
Preferences: 環境設定
-Ok: OK
+Ok: オーケー
Hashtag:
Hashtag: ハッシュタグ
This hashtag does not currently have any videos: このハッシュタグには現在動画がありません
@@ -1020,3 +1071,10 @@ Yes, Restart: はい、再起動します
Yes, Open Link: はい、リンクを開きます
Cancel: キャンセル
checkmark: ✓
+Moments Ago: たった今
+Age Restricted:
+ This video is age restricted: この動画には年齢制限があります
+ This channel is age restricted: このチャンネルは年齢制限があります
+Trimmed input must be at least N characters long: トリミングされた入力は少なくとも1文字以上でなければなりません
+ | トリミングされた入力は少なくとも {length} 文字以上でなければなりません
+'Blocked opening potentially unsafe URL': '安全でない可能性のあるURLをブロックしました: "{url}"。'
From e0a1d5259551e954d7cdbf5ecd8bdc4da6f0a096 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Thu, 8 Aug 2024 16:10:00 +0000
Subject: [PATCH 066/489] Translated using Weblate (Japanese)
Currently translated at 95.3% (828 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 0afaddbcec857..1b2b4b7012401 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -304,9 +304,9 @@ Settings:
Dracula Purple: 'ドラキュラ 紫'
Dracula Red: 'ドラキュラ 赤'
Dracula Yellow: 'ドラキュラ 黄'
- Catppuccin Mocha Rosewater: キャプチーノ・モカ ローズウォーター
+ Catppuccin Mocha Rosewater: キャプチーノ・モカ 淡いピンク
Catppuccin Mocha Flamingo: キャプチーノ・モカ 鮮やかなピンク
- Catppuccin Mocha Pink: キャプチーノ・モカ 淡いピンク
+ Catppuccin Mocha Pink: キャプチーノ・モカ ピンク
Catppuccin Mocha Mauve: キャプチーノ・モカ 淡い紫
Catppuccin Mocha Red: Catppuccin Mocha Red
Catppuccin Mocha Maroon: Catppuccin Mocha Maroon
From 6c4ebb77c5884508ce7fd04160fbc706bb3042d7 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 00:49:43 +0000
Subject: [PATCH 067/489] Translated using Weblate (Japanese)
Currently translated at 97.1% (843 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 1b2b4b7012401..b595f9a5ebc87 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -146,7 +146,7 @@ User Playlists:
Playlist Description: 再生リストの説明
Copy Playlist: 再生リストのコピー
Edit Playlist Info: 再生リスト情報の編集
- Remove Watched Videos: 再生済み動画の削除
+ Remove Watched Videos: 視聴済み動画の削除
Enable Quick Bookmark With This Playlist: 再生リストでクイック ブックマークを有効にする
SinglePlaylistView:
Toast:
@@ -209,6 +209,13 @@ User Playlists:
が正常に作成されました。
New Playlist Name: 新しい再生リスト名
Create: 作成
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: このプレイリストから重複する1つの動画を削除してもよろしいですか?この操作は元に戻せません。
+ | この再生リストから重複する {playlistItemCount} つの動画を削除してもよろしいですか?この操作は元に戻せません。
+ Cannot delete the quick bookmark target playlist.: クイックブックマーク対象の再生リストは削除できません。
+ Quick Bookmark Enabled: クイックブックマーク有効
+ Remove Duplicate Videos: 重複した動画を削除
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: この再生リストから視聴済みの動画を1つ削除してもよろしいですか?この操作は元に戻せません。
+ | この再生リストから視聴済みの {playlistItemCount} つの動画を削除してもよろしいですか?この操作は元に戻せません。
History:
# On History Page
History: '履歴'
@@ -675,6 +682,7 @@ Channel:
votes: '{votes} 投票'
Reveal Answers: 回答を表示
Hide Answers: 回答の非表示
+ Video hidden by FreeTube: FreeTube によって非表示にされた動画
This channel does not exist: このチャンネルは存在しません
This channel does not allow searching: このチャンネルでは検索できません
This channel is age-restricted and currently cannot be viewed in FreeTube.: このチャンネルは年齢制限があり、現在
@@ -847,6 +855,15 @@ Playlist:
#* Published
#& Views
Playlist: 動画リスト
+ Sort By:
+ Custom: カスタム
+ VideoTitleDescending: タイトル(Z-A)
+ DateAddedOldest: 最初に追加された順
+ DateAddedNewest: 最近の追加された順
+ AuthorAscending: 著者名(A-Z)
+ AuthorDescending: 著者名(Z-A)
+ VideoTitleAscending: 著者名(A-Z)
+ Sort By: 並び替え
Toggle Theatre Mode: 'サイズ変更'
Change Format:
Change Media Formats: '動画形式の変更'
@@ -1078,3 +1095,4 @@ Age Restricted:
Trimmed input must be at least N characters long: トリミングされた入力は少なくとも1文字以上でなければなりません
| トリミングされた入力は少なくとも {length} 文字以上でなければなりません
'Blocked opening potentially unsafe URL': '安全でない可能性のあるURLをブロックしました: "{url}"。'
+Display Label: '{label}: {value}'
From 6b65853ddbd915dd2368fa777ab821e58e87764d Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 03:29:45 +0000
Subject: [PATCH 068/489] Translated using Weblate (Japanese)
Currently translated at 98.9% (859 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 81 ++++++++++++++++++++++++++----------------
1 file changed, 50 insertions(+), 31 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index b595f9a5ebc87..4c23876a4438f 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -201,6 +201,7 @@ User Playlists:
Save: 保存
"{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
つの動画はすでに追加されています'
+ Added {count} Times: すでに追加済み | {count} 回追加済み
CreatePlaylistPrompt:
Toast:
There was an issue with creating the playlist.: 再生リストの作成中に問題が発生しました。
@@ -287,7 +288,7 @@ Settings:
Solarized Dark: ソラライズド・ダーク
Solarized Light: ソラライズド・ライト
Main Color Theme:
- Main Color Theme: 'メインカラー'
+ Main Color Theme: 'テーマのメインカラー'
Red: '赤'
Pink: '桃'
Purple: '紫'
@@ -315,17 +316,25 @@ Settings:
Catppuccin Mocha Flamingo: キャプチーノ・モカ 鮮やかなピンク
Catppuccin Mocha Pink: キャプチーノ・モカ ピンク
Catppuccin Mocha Mauve: キャプチーノ・モカ 淡い紫
- Catppuccin Mocha Red: Catppuccin Mocha Red
- Catppuccin Mocha Maroon: Catppuccin Mocha Maroon
- Catppuccin Mocha Peach: Catppuccin Mocha Peach
- Catppuccin Mocha Yellow: Catppuccin Mocha Yellow
- Catppuccin Mocha Green: Catppuccin Mocha Green
- Catppuccin Mocha Teal: Catppuccin Mocha Teal
- Catppuccin Mocha Sky: Catppuccin Mocha Sky
- Catppuccin Mocha Sapphire: Catppuccin Mocha Sapphire
- Catppuccin Mocha Blue: Catppuccin Mocha Blue
- Catppuccin Mocha Lavender: Catppuccin Mocha Lavender
- Secondary Color Theme: 'テーマのアクセント カラー'
+ Catppuccin Mocha Red: キャプチーノ・モカ 赤色
+ Catppuccin Mocha Maroon: キャプチーノ・モカ 暗い赤茶色
+ Catppuccin Mocha Peach: キャプチーノ・モカ 桃色
+ Catppuccin Mocha Yellow: キャプチーノ・モカ 黄色
+ Catppuccin Mocha Green: キャプチーノ・モカ 緑色
+ Catppuccin Mocha Teal: キャプチーノ・モカ 青緑
+ Catppuccin Mocha Sky: キャプチーノ・モカ 空色
+ Catppuccin Mocha Sapphire: キャプチーノ・モカ 深い青
+ Catppuccin Mocha Blue: キャプチーノ・モカ 青色
+ Catppuccin Mocha Lavender: キャプチーノ・モカ 淡い紫
+ Solarized Yellow: ソラライズド・イエロー
+ Solarized Orange: ソラライズド・オレンジ
+ Solarized Red: ソラライズド・レッド
+ Solarized Magenta: ソラライズド・マジェンタ
+ Solarized Violet: ソラライズド・バイオレット
+ Solarized Cyan: ソラライズド・シアン
+ Solarized Green: ソラライズド・グリーン
+ Solarized Blue: ソラライズド・ブルー
+ Secondary Color Theme: 'テーマのセカンダリーカラー'
#* Main Color Theme
UI Scale: UI 縮尺率
Expand Side Bar by Default: 幅広のサイド バーで起動
@@ -333,13 +342,13 @@ Settings:
Hide Side Bar Labels: サイドバー ラベルの非表示
Hide FreeTube Header Logo: FreeTube ヘッダー ロゴの非表示
Player Settings:
- Player Settings: 'プレイヤーの設定'
+ Player Settings: 'プレーヤーの設定'
Force Local Backend for Legacy Formats: '旧形式であれば内部 API の適用'
Remember History: '履歴を記憶'
Play Next Video: '次の動画の自動再生'
- Turn on Subtitles by Default: '最初から字幕を有効化'
+ Turn on Subtitles by Default: '字幕をデフォルトでオンにする'
Autoplay Videos: '動画の自動再生'
- Proxy Videos Through Invidious: '動画を Invidious プロキシーを経由して取得'
+ Proxy Videos Through Invidious: '動画を Invidious プロキシを経由して取得'
Autoplay Playlists: '再生リストの自動再生'
Enable Theatre Mode by Default: 'シアターモードで起動'
Default Volume: '音量の設定'
@@ -365,8 +374,8 @@ Settings:
Next Video Interval: 次の動画までの間隔
Fast-Forward / Rewind Interval: 早送り/巻き戻し間隔
Display Play Button In Video Player: 動画プレーヤーに再生ボタンを表示する
- Scroll Volume Over Video Player: 動画プレーヤーに音量調整を表示する
- Scroll Playback Rate Over Video Player: 動画プレーヤーに再生速度調整を表示する
+ Scroll Volume Over Video Player: スクロールで動画の音量調整
+ Scroll Playback Rate Over Video Player: スクロールで動画の再生速度調整
Max Video Playback Rate: 最大動画再生速度
Video Playback Rate Interval: 動画再生速度間隔
Screenshot:
@@ -382,8 +391,8 @@ Settings:
Format Label: スクリーンショットのファイル形式
Ask Path: 保存フォルダを尋ねる
Folder Button: フォルダーの選択
- Enter Fullscreen on Display Rotate: 横画面時にフルスクリーンにする
- Skip by Scrolling Over Video Player: 動画プレーヤーでスクロールしてスキップ可能にする
+ Enter Fullscreen on Display Rotate: 画面の回転時に全画面表示にする
+ Skip by Scrolling Over Video Player: スクロールで動画をスキップ
Allow DASH AV1 formats: DASH AV1形式を許可
Subscription Settings:
Subscription Settings: '登録チャンネルの設定'
@@ -399,6 +408,8 @@ Settings:
How do I import my subscriptions?: 'どうやってインポートするのですか?'
Fetch Feeds from RSS: RSS から情報取得
Fetch Automatically: フィードの自動取得
+ Confirm Before Unsubscribing: 登録解除前に確認する
+ Only Show Latest Video for Each Channel: 各チャンネルの最新の動画のみを表示する
Advanced Settings:
Advanced Settings: '詳細設定'
Enable Debug Mode (Prints data to the console): 'デバッグ モードの有効化(コンソールにデータ出力)'
@@ -431,11 +442,13 @@ Settings:
Search cache has been cleared: 検索キャッシュを削除しました
Are you sure you want to clear out your search cache?: 検索キャッシュを削除しますか?
Clear Search Cache: 検索キャッシュの削除
- Privacy Settings: 個人情報の設定
+ Privacy Settings: プライバシーの設定
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。
Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除
Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存
Remove All Playlists: 再生リストをすべて削除
+ All playlists have been removed: すべての再生リストが削除されました
+ Are you sure you want to remove all your playlists?: すべてのプレイリストを削除してもよろしいですか?
Data Settings:
How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか?
Unknown data key: 不明なデータ キー
@@ -460,7 +473,7 @@ Settings:
Import NewPipe: NewPipe インポート
Import FreeTube: FreeTube インポート
Export Subscriptions: 登録のエクスポート
- Import Subscriptions: 登録のインポート
+ Import Subscriptions: 登録者のインポート
Select Export Type: エクスポート形式の選択
Select Import Type: インポート形式の選択
Data Settings: データ設定
@@ -475,6 +488,11 @@ Settings:
Subscription File: サブスクリプション ファイル
History File: 履歴ファイル
Playlist File: 再生リスト
+ Export Playlists For Older FreeTube Versions:
+ Label: 古いバージョンの FreeTube 用に再生リストをエクスポートする
+ Tooltip: "このオプションは、すべての再生リストから動画をエクスポートし、1つの再生リスト「Favorites」にまとめます。\n古いバージョンのFreeTube用に再生リストの動画をエクスポートおよびインポートする方法は以下の通りです:\n
+ 1. このオプションを有効にして再生リストをエクスポートします。\n2. プライバシー設定の「すべての再生リストを削除」オプションを使用して、既存のすべての再生リストを削除します。\n
+ 3. 古いバージョンのFreeTubeを起動し、エクスポートした再生リストをインポートします。"
Distraction Free Settings:
Hide Live Chat: ライブチャットの非表示
Hide Popular Videos: 人気動画の非表示
@@ -526,15 +544,15 @@ Settings:
City: 都市名
Region: 地域
Country: 国名
- Ip: Ip
+ Ip: IP
Your Info: あなたの情報
- Test Proxy: テスト プロキシー
- Clicking on Test Proxy will send a request to: テスト プロキシーをクリックして、送信するリクエスト先は
- Proxy Port Number: プロキシーのポート番号
- Proxy Host: プロキシーのホスト
- Proxy Protocol: プロキシーのプロトコル
- Enable Tor / Proxy: Tor / プロキシーの有効化
- Proxy Settings: プロキシーの設定
+ Test Proxy: テスト プロキシ
+ Clicking on Test Proxy will send a request to: テスト プロキシをクリックして、送信するリクエスト先は
+ Proxy Port Number: プロキシのポート番号
+ Proxy Host: プロキシのホスト
+ Proxy Protocol: プロキシのプロトコル
+ Enable Tor / Proxy: Tor / プロキシの有効化
+ Proxy Settings: プロキシの設定
SponsorBlock Settings:
Notify when sponsor segment is skipped: スポンサーセグメントがスキップされたときに通知する
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': スポンサーブロック APIのURL(デフォルト
@@ -551,7 +569,7 @@ Settings:
UseDeArrowTitles: 動画タイトルに DeArrow を使用する
UseDeArrowThumbnails: DeArrow のサムネイルを使用する
'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': DeArrow
- Thumbnail Generator API Url (デフォルトは https://dearrow-thumb.ajay.app)
+ Thumbnail Generator API Url (デフォルト https://dearrow-thumb.ajay.app)
External Player Settings:
Custom External Player Arguments: カスタム外部プレーヤー引数
Custom External Player Executable: カスタム外部プレーヤーの実行可能ファイル
@@ -1040,7 +1058,7 @@ Search Bar:
Clear Input: 入力の消去
Are you sure you want to open this link?: このリンクを開きますか?
Starting download: '"{videoTitle}" のダウンロードを開始します'
-Downloading has completed: '"{videoTitle}" のダウンロードが終了しました'
+Downloading has completed: '"{videoTitle}" のダウンロードが完了しました'
Downloading failed: '"{videoTitle}" のダウンロード中に問題が発生しました'
Channels:
Channels: チャンネル
@@ -1083,6 +1101,7 @@ Search Listing:
Label:
4K: 4K
Subtitles: 字幕
+ Closed Captions: クローズドキャプション
Yes, Delete: はい、削除します
Yes, Restart: はい、再起動します
Yes, Open Link: はい、リンクを開きます
From 21901c166933857b6a46fecdc1ade70c2f12e138 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 12:21:15 +0000
Subject: [PATCH 069/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 4c23876a4438f..c44b1b0fb9e7a 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -1,6 +1,6 @@
# 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: 'ファイル'
@@ -513,7 +513,7 @@ Settings:
Hide Upcoming Premieres: 今後のプレミア公開を非表示
Hide Channels: チャンネルから動画を非表示
Hide Channels Placeholder: チャンネル ID
- Display Titles Without Excessive Capitalisation: 英語の大文字化を控えたタイトル表示
+ Display Titles Without Excessive Capitalisation: 過剰な大文字や句読点のないタイトルの表示
Hide Channel Playlists: チャンネル再生リストの非表示
Hide Channel Community: チャンネル コミュニティの非表示
Sections:
@@ -662,6 +662,8 @@ About:
Source code: ソースコード
Beta: ベータ
Discussions: 議論
+ Licensed under the: ライセンス
+ AGPLv3: AGPLv3
Channel:
Subscribe: 'チャンネル登録'
Unsubscribe: '登録解除'
@@ -991,6 +993,11 @@ Profile:
Profile Filter: プロファイルのフィルター
Profile Settings: プロファイル設定
Toggle Profile List: プロファイル一覧の切り替え
+ Create Profile Name: プロファイル名を作成
+ Profile Name: プロファイル名
+ Edit Profile Name: プロファイル名を編集
+ Close Profile Dropdown: プロフィールドロップダウンを閉じる
+ Open Profile Dropdown: プロフィールドロップダウンを開く
The playlist has been reversed: 再生リストを逆順にしました
A new blog is now available, {blogTitle}. Click to view more: '新着ブログ公開、{blogTitle}。クリックしてブログを読む'
Download From Site: サイトからダウンロード
@@ -1005,8 +1012,9 @@ Tooltips:
フィードを自動的に取得します。
Player Settings:
Default Video Format: 動画再生で使用する形式の設定です。DASH 形式であれば高品質で再生できます。旧形式だと、最大 720p に制限されますが、使用する帯域幅を減らせます。音声形式は音声のみです。
- Force Local Backend for Legacy Formats: Invidious API の選択時にのみ実行します。有効にすると、Invidious
- サーバーから取得した動画形式ではなく、内部 API で取得した旧形式を使用します。Invidious サーバーから取得する動画が、youtube の視聴制限国に該当して再生できないことがあるので回避します。
+ Force Local Backend for Legacy Formats: これは、Invidious API
+ が有効の場合にのみ機能します。有効にすると内部APIが実行され、Invidiousが返す形式ではなく、その内部APIが返すレガシーフォーマットを使用します。Invidious
+ から返された動画が国の制限で再生できない場合に役立ちます。
Proxy Videos Through Invidious: 動画を取得するため、YouTube ではなく Invidious に接続します。API 設定を書き換えます。
Scroll Playback Rate Over Video Player: カーソルが動画上にあるとき、Ctrl キー(Mac では Command キー)を押したまま、マウスホイールを前後にスクロールして再生速度を調整します。Control
キー(Mac では Command キー)を押したままマウスを左クリックすると、すぐにデフォルトの再生速度(設定を変更していない場合は 1 x)に戻ります。
From f1a17b7bc8f1159ffdf5a77f061cc7c2e2fcf99c Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 14:40:32 +0000
Subject: [PATCH 070/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 106 ++++++++++++++++++++---------------------
1 file changed, 53 insertions(+), 53 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index c44b1b0fb9e7a..3343fb47a0294 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -79,7 +79,7 @@ Search Filters:
Fetching results. Please wait: '結果の取得中。お待ちください'
Fetch more results: 'もっと見る'
# Sidebar
- There are no more results for this search: 検索結果は、これ以上ありません
+ There are no more results for this search: 検索結果はこれ以上ありません
Features:
Features: 特徴
3D: 3D
@@ -131,13 +131,13 @@ User Playlists:
Create New Playlist: 新しい再生リストの作成
Sort By:
NameAscending: A-Z
- EarliestCreatedFirst: 初期に作成
- LatestUpdatedFirst: 最近の更新
- EarliestUpdatedFirst: 初期に更新
- EarliestPlayedFirst: 初期に再生
- LatestPlayedFirst: 最近の再生
+ EarliestCreatedFirst: 最も古い作成日
+ LatestUpdatedFirst: 最も新しい更新
+ EarliestUpdatedFirst: 最も古い更新
+ EarliestPlayedFirst: 最も古い再生
+ LatestPlayedFirst: 最も新しい再生
Sort By: 並び替え順
- LatestCreatedFirst: 最近に作成
+ LatestCreatedFirst: 最も新しい作成日
NameDescending: Z-A
Remove from Favorites: '{playlistName} から削除'
Move Video Down: 動画を下へ移動
@@ -160,12 +160,12 @@ User Playlists:
の代わりにクイックブックマークとして使用されるようになりました。元に戻すにはここをクリック
Video has been removed: 動画は削除されました
There was a problem with removing this video: この動画の削除に問題が発生しました
- This playlist is now used for quick bookmark: この再生リストは、今からクイックブックマークとして使用されます
+ This playlist is now used for quick bookmark: このプレイリストは現在、クイックブックマークとして使用されています
Playlist has been updated.: 再生リストを更新しました。
Playlist name cannot be empty. Please input a name.: 再生リストの名前は空白にできません。名前を入力してください.
- Reverted to use {oldPlaylistName} for quick bookmark: クイックブックマーク用に {oldPlaylistName}
- を元に戻しました
- "{videoCount} video(s) have been removed": 1 つの動画を削除しました | {video Count} つの動画を削除しました
+ Reverted to use {oldPlaylistName} for quick bookmark: クイックブックマークを {oldPlaylistName}
+ に戻しました
+ "{videoCount} video(s) have been removed": 1 本の動画を削除しました | {video Count} 本の動画を削除しました
Playlist {playlistName} has been deleted.: 再生リスト {playlistName} が削除されました。
There were no videos to remove.: 削除する動画はありません。
This playlist does not exist: この再生リストは存在しません
@@ -181,26 +181,26 @@ User Playlists:
Delete Playlist: 再生リストの削除
Cancel: キャンセル
Disable Quick Bookmark: クイック ブックマークを無効にする
- Are you sure you want to delete this playlist? This cannot be undone: 再生リストを削除してもいいですか?復元は不可能です。
+ Are you sure you want to delete this playlist? This cannot be undone: この再生リストを削除してもいいですか?復元は不可能です。
Are you sure you want to remove all watched videos from this playlist? This cannot be undone: 再生リストから再生済みの動画を削除してもいいですか?復元は不可能です。
You have no playlists. Click on the create new playlist button to create a new one.: 再生リストがありません。新しい再生リストを作成するには、「新しい再生リストの作成」ボタンをクリックしてください。
AddVideoPrompt:
"{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount}
- つの動画が追加されます'
+ 本の動画が追加されます'
Select a playlist to add your N videos to: 動画を追加する再生リストを選択してください | {videoCount}
- つの動画を追加する再生リストを選択してください
+ 本の動画を追加する再生リストを選択してください
Allow Adding Duplicate Video(s): 重複した動画の追加を許可する
Toast:
You haven't selected any playlist yet.: まだ再生リストを選択していません。
- "{videoCount} video(s) added to 1 playlist": 1つの動画が1個の再生リストに追加されました | {videoCount}
- つの動画が1個の再生リストに追加されました
- "{videoCount} video(s) added to {playlistCount} playlists": 1つの動画が {playlistCount}
- 個の再生リストに追加されました | {videoCount} つの動画が {playlistCount} 個の再生リストに追加されました
+ "{videoCount} video(s) added to 1 playlist": 1本の動画が1個の再生リストに追加されました | {videoCount}
+ 本の動画が1個の再生リストに追加されました
+ "{videoCount} video(s) added to {playlistCount} playlists": 1本の動画が {playlistCount}
+ 個の再生リストに追加されました | {videoCount} 本の動画が {playlistCount} 個の再生リストに追加されました
Search in Playlists: 再生リストで検索
N playlists selected: '{playlistCount} 選択中'
Save: 保存
"{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
- つの動画はすでに追加されています'
+ 本の動画はすでに追加されています'
Added {count} Times: すでに追加済み | {count} 回追加済み
CreatePlaylistPrompt:
Toast:
@@ -210,13 +210,13 @@ User Playlists:
が正常に作成されました。
New Playlist Name: 新しい再生リスト名
Create: 作成
- Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: このプレイリストから重複する1つの動画を削除してもよろしいですか?この操作は元に戻せません。
- | この再生リストから重複する {playlistItemCount} つの動画を削除してもよろしいですか?この操作は元に戻せません。
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: この再生リストから重複する1本の動画を削除してもよろしいですか?この操作は元に戻せません。
+ | この再生リストから重複する {playlistItemCount} 本の動画を削除してもよろしいですか?この操作は元に戻せません。
Cannot delete the quick bookmark target playlist.: クイックブックマーク対象の再生リストは削除できません。
Quick Bookmark Enabled: クイックブックマーク有効
Remove Duplicate Videos: 重複した動画を削除
- Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: この再生リストから視聴済みの動画を1つ削除してもよろしいですか?この操作は元に戻せません。
- | この再生リストから視聴済みの {playlistItemCount} つの動画を削除してもよろしいですか?この操作は元に戻せません。
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: この再生リストから視聴済みの動画を1本削除してもよろしいですか?この操作は元に戻せません。
+ | この再生リストから視聴済みの {playlistItemCount} 本の動画を削除してもよろしいですか?この操作は元に戻せません。
History:
# On History Page
History: '履歴'
@@ -231,7 +231,7 @@ Settings:
General Settings: '一般設定'
Fallback to Non-Preferred Backend on Failure: 'データ取得の問題発生時には取得方法を自動変更'
Enable Search Suggestions: '検索候補の有効化'
- Default Landing Page: '起動時の表示'
+ Default Landing Page: 'デフォルトのランディングページ'
Locale Preference: '言語設定'
Preferred API Backend:
Preferred API Backend: 'データ取得方法の選択'
@@ -243,7 +243,7 @@ Settings:
List: '一覧'
Thumbnail Preference:
Thumbnail Preference: 'サムネイルの設定'
- Default: '初期設定'
+ Default: 'デフォルト'
Beginning: '開始'
Middle: '中間'
End: '終了'
@@ -256,7 +256,7 @@ Settings:
Check for Latest Blog Posts: 新着ブログの確認
Check for Updates: 更新の確認
View all Invidious instance information: すべての Invidious インスタンス情報の表示
- System Default: 初期設定
+ System Default: システム初期設定
Clear Default Instance: デフォルトの設定をクリアする
Set Current Instance as Default: 現在のインスタンスを既定として設定する
Current instance will be randomized on startup: 現在のインスタンスは起動時にランダム化されます
@@ -273,14 +273,14 @@ Settings:
Tooltip: 追加のページやコメントを自動的に読み込む。
Theme Settings:
Theme Settings: 'テーマの設定'
- Match Top Bar with Main Color: '上部バーをメイン カラーと同じにする'
+ Match Top Bar with Main Color: 'トップバーをメインカラーに合わせる'
Base Theme:
Base Theme: 'テーマの選択'
Black: '黒'
Dark: 'ダーク'
Light: 'ライト'
Dracula: 'ドラキュラ'
- System Default: 初期設定
+ System Default: システム初期設定
Catppuccin Mocha: キャプチーノ・モカ
Pastel Pink: パステルピンク
Hot Pink: ホットピンク
@@ -350,9 +350,9 @@ Settings:
Autoplay Videos: '動画の自動再生'
Proxy Videos Through Invidious: '動画を Invidious プロキシを経由して取得'
Autoplay Playlists: '再生リストの自動再生'
- Enable Theatre Mode by Default: 'シアターモードで起動'
- Default Volume: '音量の設定'
- Default Playback Rate: '再生速度の設定'
+ Enable Theatre Mode by Default: 'デフォルトでシアターモードを有効にする'
+ Default Volume: 'デフォルトの音量'
+ Default Playback Rate: 'デフォルトの再生速度'
Default Video Format:
Default Video Format: '動画形式の設定'
Dash Formats: 'DASH 形式'
@@ -384,11 +384,11 @@ Settings:
2 桁の秒。%T 3 桁のミリ秒。%s 2 桁の動画の秒数。%t 3 桁の動画のミリ秒。%i 動画 ID。「\」または「/」を使用してサブフォルダを作成できます。
Error:
Forbidden Characters: 使用禁止文字
- Empty File Name: ファイル名が空
+ Empty File Name: 空のファイル名
Folder Label: スクリーンショットのフォルダ
- Quality Label: スクリーンショット画像の品質
+ Quality Label: スクリーンショットの品質
Enable: スクリーンショットの有効化
- Format Label: スクリーンショットのファイル形式
+ Format Label: スクリーンショット形式
Ask Path: 保存フォルダを尋ねる
Folder Button: フォルダーの選択
Enter Fullscreen on Display Rotate: 画面の回転時に全画面表示にする
@@ -448,9 +448,9 @@ Settings:
Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存
Remove All Playlists: 再生リストをすべて削除
All playlists have been removed: すべての再生リストが削除されました
- Are you sure you want to remove all your playlists?: すべてのプレイリストを削除してもよろしいですか?
+ Are you sure you want to remove all your playlists?: すべての再生リストを削除してもよろしいですか?
Data Settings:
- How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか?
+ How do I import my subscriptions?: 登録チャンネルをインポートするには?
Unknown data key: 不明なデータ キー
Unable to write file: ファイルに書き込めません
Unable to read file: ファイルを読み込めません
@@ -472,7 +472,7 @@ Settings:
Import YouTube: YouTube インポート
Import NewPipe: NewPipe インポート
Import FreeTube: FreeTube インポート
- Export Subscriptions: 登録のエクスポート
+ Export Subscriptions: 登録チャンネルのエクスポート
Import Subscriptions: 登録者のインポート
Select Export Type: エクスポート形式の選択
Select Import Type: インポート形式の選択
@@ -519,7 +519,7 @@ Settings:
Sections:
Side Bar: サイドバー
Channel Page: チャンネル ページ
- Watch Page: ウォッチリスト
+ Watch Page: ウォッチページ
General: 一般
Subscriptions Page: 登録チャンネル ページ
Hide Featured Channels: おすすめチャンネルの非表示
@@ -531,11 +531,11 @@ Settings:
Hide Channel Releases: チャンネルの新着情報の非表示
Hide Profile Pictures in Comments: コメントでプロフィール写真を隠す
Blur Thumbnails: サムネイルをぼかす
- Hide Subscriptions Community: チャンネルの購読者リストの非公開
+ Hide Subscriptions Community: 登録チャンネルのコミュニティの非表示
Hide Channels Invalid: 提供チャンネル ID 無効
Hide Channels Disabled Message: 一部のチャンネルが ID を使用してブロックされ、処理されませんでした。これらの ID が更新されている間、機能はブロックされます
Hide Channels Already Exists: 既に存在するチャンネル ID
- Hide Channels API Error: 提供された ID のユーザーを取得できませんでした。ID が正しいかどうかをもう一度確認してください。
+ Hide Channels API Error: 指定されたIDのユーザーを検索する際にエラーが発生しました。IDが正しいかもう一度確認してください。
Hide Videos and Playlists Containing Text Placeholder: 単語、単語の一部、またはフレーズ
Hide Videos and Playlists Containing Text: 特定のテキストを含む動画と再生リストを非表示にする
The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか?
@@ -701,7 +701,7 @@ Channel:
This channel currently does not have any posts: このチャンネルには現在投稿がありません
votes: '{votes} 投票'
Reveal Answers: 回答を表示
- Hide Answers: 回答の非表示
+ Hide Answers: 回答を非表示
Video hidden by FreeTube: FreeTube によって非表示にされた動画
This channel does not exist: このチャンネルは存在しません
This channel does not allow searching: このチャンネルでは検索できません
@@ -726,7 +726,7 @@ Video:
Copy YouTube Embedded Player Link: 'YouTube 埋め込みプレーヤーへのリンクのコピー'
Open in Invidious: 'Invidious で表示'
Copy Invidious Link: 'Invidious リンクのコピー'
- Views: '回再生'
+ Views: '総視聴回数'
Watched: '視聴済み'
# As in a Live Video
Live: 'ライブ配信'
@@ -759,8 +759,8 @@ Video:
Days: '日'
Week: '週間'
Weeks: '週間'
- Month: 'か月'
- Months: 'か月'
+ Month: 'ヶ月'
+ Months: 'ヶ月'
Year: '年'
Years: '年'
Ago: '前'
@@ -874,7 +874,7 @@ Playlist:
# On Video Watch Page
#* Published
#& Views
- Playlist: 動画リスト
+ Playlist: 再生リスト
Sort By:
Custom: カスタム
VideoTitleDescending: タイトル(Z-A)
@@ -882,9 +882,9 @@ Playlist:
DateAddedNewest: 最近の追加された順
AuthorAscending: 著者名(A-Z)
AuthorDescending: 著者名(Z-A)
- VideoTitleAscending: 著者名(A-Z)
+ VideoTitleAscending: タイトル(A-Z)
Sort By: 並び替え
-Toggle Theatre Mode: 'サイズ変更'
+Toggle Theatre Mode: 'シアターモードの切替'
Change Format:
Change Media Formats: '動画形式の変更'
Use Dash Formats: 'DASH 形式の使用'
@@ -912,7 +912,7 @@ Mini Player: 'ミニプレーヤー'
Comments:
Comments: 'コメント'
Click to View Comments: 'コメント表示'
- Getting comment replies, please wait: 'コメント返信の取得中。しばらくお待ちください'
+ Getting comment replies, please wait: 'コメントの返信を取得しています。しばらくお待ちください'
Show Comments: 'コメント表示'
Hide Comments: 'コメント非表示'
# Context: View 10 Replies, View 1 Reply
@@ -932,7 +932,7 @@ Comments:
Pinned by: ピン留め
From {channelName}: '{channelName} から'
Member: メンバー
- Hearted: ハート付
+ Hearted: ハート
View {replyCount} replies: '{replyCount} 件の返信を表示'
Subscribed: チャンネル登録済み
Up Next: '次の動画'
@@ -949,7 +949,7 @@ Shuffle is now disabled: 'シャッフル再生を無効にしました'
Shuffle is now enabled: 'シャッフル再生を有効にしました'
Playing Next Video: '次の動画の再生'
Playing Previous Video: '前の動画を再生'
-Canceled next video autoplay: '次の動画の自動再生をキャンセルしました'
+Canceled next video autoplay: '次の動画の自動再生をキャンセル'
'The playlist has ended. Enable loop to continue playing': '再生リストの最後に到達しました。再生を続けるにはループを有効にします'
Yes: 'はい'
@@ -992,7 +992,7 @@ Profile:
: これはメインのプロファイルです。選択したチャンネルを削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
Profile Filter: プロファイルのフィルター
Profile Settings: プロファイル設定
- Toggle Profile List: プロファイル一覧の切り替え
+ Toggle Profile List: プロファイル一覧の切替
Create Profile Name: プロファイル名を作成
Profile Name: プロファイル名
Edit Profile Name: プロファイル名を編集
@@ -1034,7 +1034,7 @@ Tooltips:
External Player Settings:
Custom External Player Arguments: '";"、セミコロンで区切られたカスタム コマンド ライン引数を外部プレーヤーに渡します。'
Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(動画リストの反転など)に警告を抑制します。
- Custom External Player Executable: デフォルトでは、FreeTube は選択した外部プレーヤーが PATH 環境変数を介して見つかると想定します。必要に応じて、カスタム
+ Custom External Player Executable: デフォルトでは、FreeTube は選択した外部プレーヤーが PATH 環境変数を介して見つかると想定します。必要に応じて、カスタム
パスをここで設定できます。
External Player: 外部プレーヤーを選択すると、動画(対応している場合は再生リスト)を開くためのアイコンがサムネイルに表示されます。警告:Invidious
の設定は、外部プレーヤーには影響しません。
@@ -1071,7 +1071,7 @@ Downloading failed: '"{videoTitle}" のダウンロード中に問題が発生
Channels:
Channels: チャンネル
Unsubscribe: 登録解除
- Unsubscribed: '{channelName} のチャンネル登録を解除しました'
+ Unsubscribed: '「{channelName} 」のチャンネル登録を解除しました'
Title: チャンネル一覧
Search bar placeholder: チャンネル検索
Unsubscribe Prompt: 「{channelName}」のチャンネル登録を解除しますか?
From 06849725b0ab3013c7e7c07bffee6ce111bf8d45 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 16:10:11 +0000
Subject: [PATCH 071/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 51 +++++++++++++++++++++---------------------
1 file changed, 25 insertions(+), 26 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 3343fb47a0294..6509dbc17d38d 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -43,7 +43,7 @@ Global:
Channel Count: 1 チャンネル | {count} チャンネル
Input Tags:
Length Requirement: タグは最低でも {number} 文字以上である必要があります
-Search / Go to URL: '検索 / URL の表示'
+Search / Go to URL: '検索 / URL に移動'
# In Filter Button
Search Filters:
Search Filters: '検索の絞り込み'
@@ -231,7 +231,7 @@ Settings:
General Settings: '一般設定'
Fallback to Non-Preferred Backend on Failure: 'データ取得の問題発生時には取得方法を自動変更'
Enable Search Suggestions: '検索候補の有効化'
- Default Landing Page: 'デフォルトのランディングページ'
+ Default Landing Page: '起動時の表示'
Locale Preference: '言語設定'
Preferred API Backend:
Preferred API Backend: 'データ取得方法の選択'
@@ -288,7 +288,7 @@ Settings:
Solarized Dark: ソラライズド・ダーク
Solarized Light: ソラライズド・ライト
Main Color Theme:
- Main Color Theme: 'テーマのメインカラー'
+ Main Color Theme: 'テーマのメイン カラー'
Red: '赤'
Pink: '桃'
Purple: '紫'
@@ -334,7 +334,7 @@ Settings:
Solarized Cyan: ソラライズド・シアン
Solarized Green: ソラライズド・グリーン
Solarized Blue: ソラライズド・ブルー
- Secondary Color Theme: 'テーマのセカンダリーカラー'
+ Secondary Color Theme: 'テーマのセカンダリー カラー'
#* Main Color Theme
UI Scale: UI 縮尺率
Expand Side Bar by Default: 幅広のサイド バーで起動
@@ -408,7 +408,7 @@ Settings:
How do I import my subscriptions?: 'どうやってインポートするのですか?'
Fetch Feeds from RSS: RSS から情報取得
Fetch Automatically: フィードの自動取得
- Confirm Before Unsubscribing: 登録解除前に確認する
+ Confirm Before Unsubscribing: 登録解除する前に確認する
Only Show Latest Video for Each Channel: 各チャンネルの最新の動画のみを表示する
Advanced Settings:
Advanced Settings: '詳細設定'
@@ -482,7 +482,7 @@ Settings:
Manage Subscriptions: 登録チャンネルの管理
Playlist insufficient data: 再生リスト"{playlist}"のデータが不完全なため、このアイテムは飛ばされます
All playlists has been successfully imported: 全ての再生リストは成功にインポートされました
- All playlists has been successfully exported: 全ての再生リストは成功にエキスポートされました
+ All playlists has been successfully exported: すべての再生リストが正常にエクスポートされました
Import Playlists: 再生リストのインポート
Export Playlists: 再生リストのエキスポート
Subscription File: サブスクリプション ファイル
@@ -508,7 +508,7 @@ Settings:
Hide Video Description: 動画説明の非表示
Hide Comments: コメントの非表示
Hide Live Streams: ライブ配信の非表示
- Hide Sharing Actions: 共有の非表示
+ Hide Sharing Actions: 共有ボタンの非表示
Hide Chapters: チャプターの非表示
Hide Upcoming Premieres: 今後のプレミア公開を非表示
Hide Channels: チャンネルから動画を非表示
@@ -532,7 +532,7 @@ Settings:
Hide Profile Pictures in Comments: コメントでプロフィール写真を隠す
Blur Thumbnails: サムネイルをぼかす
Hide Subscriptions Community: 登録チャンネルのコミュニティの非表示
- Hide Channels Invalid: 提供チャンネル ID 無効
+ Hide Channels Invalid: 提供されたチャンネル ID が無効です
Hide Channels Disabled Message: 一部のチャンネルが ID を使用してブロックされ、処理されませんでした。これらの ID が更新されている間、機能はブロックされます
Hide Channels Already Exists: 既に存在するチャンネル ID
Hide Channels API Error: 指定されたIDのユーザーを検索する際にエラーが発生しました。IDが正しいかもう一度確認してください。
@@ -642,8 +642,8 @@ About:
these people and projects: これらの人々とプロジェクト
Credits: 著作権
Translate: 翻訳
- room rules: ルームの規則
- Please read the: 確認してください
+ room rules: ルームの規則について
+ Please read the: 次をお読みください
Chat on Matrix: Matrix でチャット
Mastodon: マストドン
Email: メールアドレス
@@ -667,8 +667,8 @@ About:
Channel:
Subscribe: 'チャンネル登録'
Unsubscribe: '登録解除'
- Search Channel: 'チャンネル検索'
- Your search results have returned 0 results: '検索結果はありません'
+ Search Channel: 'チャンネル内検索'
+ Your search results have returned 0 results: '検索結果が0件です'
Sort By: '並べ替え'
Videos:
Videos: '動画'
@@ -692,10 +692,10 @@ Channel:
Tags: タグ
Search for: 「{tag}」を検索
Details: 詳細
- Joined: 登録済み
+ Joined: 参加日
Location: 場所
Added channel to your subscriptions: 登録にチャンネルを追加しました
- Channel has been removed from your subscriptions: 登録からチャンネルを削除しました
+ Channel has been removed from your subscriptions: チャンネルがあなたの登録チャンネルから削除されました
Removed subscription from {count} other channel(s): ほかの {count} チャンネルから登録を削除しました
Community:
This channel currently does not have any posts: このチャンネルには現在投稿がありません
@@ -726,7 +726,7 @@ Video:
Copy YouTube Embedded Player Link: 'YouTube 埋め込みプレーヤーへのリンクのコピー'
Open in Invidious: 'Invidious で表示'
Copy Invidious Link: 'Invidious リンクのコピー'
- Views: '総視聴回数'
+ Views: '総再生回数'
Watched: '視聴済み'
# As in a Live Video
Live: 'ライブ配信'
@@ -764,7 +764,7 @@ Video:
Year: '年'
Years: '年'
Ago: '前'
- Upcoming: '公開予定日'
+ Upcoming: 'プレミア公開'
Minutes: 分
Minute: 分
Less than a minute: 1分以内
@@ -826,7 +826,7 @@ Video:
playlist: 再生リスト
video: 動画
OpenInTemplate: '{externalPlayer} で開く'
- Premieres on: プレミア公開中
+ Premieres on: プレミア公開
Stats:
player resolution: 表示領域
fps: FPS
@@ -912,7 +912,7 @@ Mini Player: 'ミニプレーヤー'
Comments:
Comments: 'コメント'
Click to View Comments: 'コメント表示'
- Getting comment replies, please wait: 'コメントの返信を取得しています。しばらくお待ちください'
+ Getting comment replies, please wait: 'コメント返信を取得中。お待ちください'
Show Comments: 'コメント表示'
Hide Comments: 'コメント非表示'
# Context: View 10 Replies, View 1 Reply
@@ -949,7 +949,7 @@ Shuffle is now disabled: 'シャッフル再生を無効にしました'
Shuffle is now enabled: 'シャッフル再生を有効にしました'
Playing Next Video: '次の動画の再生'
Playing Previous Video: '前の動画を再生'
-Canceled next video autoplay: '次の動画の自動再生をキャンセル'
+Canceled next video autoplay: '次の動画の自動再生をキャンセルしました'
'The playlist has ended. Enable loop to continue playing': '再生リストの最後に到達しました。再生を続けるにはループを有効にします'
Yes: 'はい'
@@ -1002,18 +1002,17 @@ The playlist has been reversed: 再生リストを逆順にしました
A new blog is now available, {blogTitle}. Click to view more: '新着ブログ公開、{blogTitle}。クリックしてブログを読む'
Download From Site: サイトからダウンロード
Version {versionNumber} is now available! Click for more details: 最新バージョン {versionNumber}
- 配信中! 詳細はクリックして確認してください
+ が利用可能! 詳細はこちらをクリック
This video is unavailable because of missing formats. This can happen due to country unavailability.: この動画は、動画形式の情報が利用できないため再生できません。再生が許可されていない国で発生します。
Tooltips:
Subscription Settings:
- Fetch Feeds from RSS: 有効にすると,、FreeTube は、登録チャンネルの情報を、通常の方法の代わりに RSS から取得します。RSS
+ Fetch Feeds from RSS: 有効にすると、FreeTube は、登録チャンネルの情報を、通常の方法の代わりに RSS から取得します。RSS
は高速であり IP 制限も回避できますが、動画の長さやライブ配信の状態などの詳細情報は提供されていません
Fetch Automatically: 有効にすると、FreeTube は新しいウィンドウを開くとき、およびプロファイルを切り替えるときに、サブスクリプション
フィードを自動的に取得します。
Player Settings:
Default Video Format: 動画再生で使用する形式の設定です。DASH 形式であれば高品質で再生できます。旧形式だと、最大 720p に制限されますが、使用する帯域幅を減らせます。音声形式は音声のみです。
- Force Local Backend for Legacy Formats: これは、Invidious API
- が有効の場合にのみ機能します。有効にすると内部APIが実行され、Invidiousが返す形式ではなく、その内部APIが返すレガシーフォーマットを使用します。Invidious
+ Force Local Backend for Legacy Formats: これは、Invidious API が有効の場合にのみ機能します。有効にすると内部APIが実行され、Invidiousが返す形式ではなく、その内部APIが返す旧形式を使用します。Invidious
から返された動画が国の制限で再生できない場合に役立ちます。
Proxy Videos Through Invidious: 動画を取得するため、YouTube ではなく Invidious に接続します。API 設定を書き換えます。
Scroll Playback Rate Over Video Player: カーソルが動画上にあるとき、Ctrl キー(Mac では Command キー)を押したまま、マウスホイールを前後にスクロールして再生速度を調整します。Control
@@ -1023,8 +1022,8 @@ Tooltips:
AV1形式を使用できない場合、プレイヤーはDASH H.264形式を自動で使用します。
General Settings:
Invidious Instance: FreeTube が使用する Invidious API の接続先サーバーです。
- Preferred API Backend: FreeTube が youtube からデータを取得する方法を選択します。「内部 API」とはアプリから取得する方法です。「Invidious
- API」とは、Invidious を用いたサーバーに接続して取得する方法です。
+ Preferred API Backend: FreeTube がデータを取得するために使用する方法を選択してください。内部 API はアプリ内蔵の取得機能です。
+ Invidious API は、 Invidious サーバーへの接続が必要です。
Thumbnail Preference: FreeTube のすべてのサムネイルを、元のサムネイルの代わりに動画の 1 コマに置き換えます。
Fallback to Non-Preferred Backend on Failure: 有効にすると、選択した API で取得できなければ、FreeTube
は自動的に他の API での取得を試みます。
@@ -1094,7 +1093,7 @@ Ok: オーケー
Hashtag:
Hashtag: ハッシュタグ
This hashtag does not currently have any videos: このハッシュタグには現在動画がありません
-Playlist will pause when current video is finished: 現在のビデオが終了すると、再生リストは一旦停止します
+Playlist will pause when current video is finished: 現在の動画が終了すると、再生リストが一時停止します
Playlist will not pause when current video is finished: 現在のビデオが終了しても、再生リストは一旦停止しません
Close Banner: バナーを閉じる
Go to page: '{page} を表示'
From a8c3a47824b1aba71cff2c35f277cd0f5497050e Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Fri, 9 Aug 2024 18:34:17 +0000
Subject: [PATCH 072/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 6509dbc17d38d..ba67a0863d5dc 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -599,7 +599,7 @@ Settings:
これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください!
Password Settings:
Password Settings: パスワード設定
- Set Password To Prevent Access: 設定の変更にはパスワードを設定とする
+ Set Password To Prevent Access: 設定にアクセスするためのパスワードを設定する
Set Password: パスワードの設定
Remove Password: パスワードの削除
Password Dialog:
From dc8de2e51f165050ae6478dca0451ce5f3044870 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Sat, 10 Aug 2024 14:20:54 +0000
Subject: [PATCH 073/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index ba67a0863d5dc..a8d11b862ad62 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -124,7 +124,7 @@ 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:
- このページは、完全に動作する動画リストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」の動画リストに移動します。
+ このページは完全に機能する再生リストを反映していません。保存した動画やお気に入りの動画のみが表示されます。作業が完了すると、現在ここにあるすべての動画は「Favorites」の再生リストに移行されます。
Search bar placeholder: 再生リストの検索
Empty Search Message: この再生リストに、検索に一致する動画はありません
This playlist currently has no videos.: 現在、この再生リストには動画がありません。
@@ -147,7 +147,7 @@ User Playlists:
Copy Playlist: 再生リストのコピー
Edit Playlist Info: 再生リスト情報の編集
Remove Watched Videos: 視聴済み動画の削除
- Enable Quick Bookmark With This Playlist: 再生リストでクイック ブックマークを有効にする
+ Enable Quick Bookmark With This Playlist: この再生リストでクイックブックマークを有効にする
SinglePlaylistView:
Toast:
This playlist is protected and cannot be removed.: この再生リストは保護されており、削除できません。
@@ -779,7 +779,7 @@ Video:
Autoplay: 自動再生
Play Previous Video: 前の動画を再生
Play Next Video: 次の動画の再生
- Reverse Playlist: 再生リストを逆順に
+ Reverse Playlist: 再生リストを逆順にする
Shuffle Playlist: 再生リストのシャッフル
Loop Playlist: 再生リストのループ
Starting soon, please refresh the page to check again: すぐに再生されます、ページを再読み込みしてお待ちください
@@ -815,11 +815,11 @@ Video:
OpeningTemplate: '{externalPlayer} で {videoOrPlaylist} を開く...'
Unsupported Actions:
looping playlists: 再生リストのループ
- shuffling playlists: シャッフル動画リスト
- reversing playlists: 動画リストを反転させる
+ shuffling playlists: シャッフル再生リスト
+ reversing playlists: 再生リストを反転させる
opening specific video in a playlist (falling back to opening the video): 再生リストで特定のビデオを開く
(ビデオを開く前にフォールバック)
- opening playlists: 動画リストを開く
+ opening playlists: 再生リストを開く
setting a playback rate: 再生レートの設定
starting video at offset: オフセットで動画の再生
UnsupportedActionTemplate: '{externalPlayer} はサポートしていません: {action}'
@@ -1032,7 +1032,7 @@ Tooltips:
はクリックしたリンクをデフォルトのブラウザで開きます。\n"
External Player Settings:
Custom External Player Arguments: '";"、セミコロンで区切られたカスタム コマンド ライン引数を外部プレーヤーに渡します。'
- Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(動画リストの反転など)に警告を抑制します。
+ Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(再生リストの反転など)に警告を抑制します。
Custom External Player Executable: デフォルトでは、FreeTube は選択した外部プレーヤーが PATH 環境変数を介して見つかると想定します。必要に応じて、カスタム
パスをここで設定できます。
External Player: 外部プレーヤーを選択すると、動画(対応している場合は再生リスト)を開くためのアイコンがサムネイルに表示されます。警告:Invidious
From f55c1117fa160092adedb9474c71564d1ff7c000 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Mon, 12 Aug 2024 03:57:52 +0000
Subject: [PATCH 074/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (868 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index a8d11b862ad62..bf45b914c18d8 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -313,7 +313,7 @@ Settings:
Dracula Red: 'ドラキュラ 赤'
Dracula Yellow: 'ドラキュラ 黄'
Catppuccin Mocha Rosewater: キャプチーノ・モカ 淡いピンク
- Catppuccin Mocha Flamingo: キャプチーノ・モカ 鮮やかなピンク
+ Catppuccin Mocha Flamingo: キャプチーノ・モカ 明るいピンク
Catppuccin Mocha Pink: キャプチーノ・モカ ピンク
Catppuccin Mocha Mauve: キャプチーノ・モカ 淡い紫
Catppuccin Mocha Red: キャプチーノ・モカ 赤色
From 1c0e4a3d0f840f9f759fa59fe2d968fe4adfcc5c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 12 Aug 2024 21:46:49 +0200
Subject: [PATCH 075/489] Bump marked from 13.0.3 to 14.0.0 (#5560)
Bumps [marked](https://github.com/markedjs/marked) from 13.0.3 to 14.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v13.0.3...v14.0.0)
---
updated-dependencies:
- dependency-name: marked
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index b104a072da56b..eafe5e0e0dcca 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"autolinker": "^4.0.0",
"electron-context-menu": "^4.0.1",
"lodash.debounce": "^4.0.8",
- "marked": "^13.0.3",
+ "marked": "^14.0.0",
"path-browserify": "^1.0.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
diff --git a/yarn.lock b/yarn.lock
index afe65cbe792a2..d9afb86092c8d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5840,10 +5840,10 @@ m3u8-parser@4.8.0:
"@videojs/vhs-utils" "^3.0.5"
global "^4.4.0"
-marked@^13.0.3:
- version "13.0.3"
- resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.3.tgz#5c5b4a5d0198060c7c9bc6ef9420a7fed30f822d"
- integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==
+marked@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-14.0.0.tgz#79a1477358a59e0660276f8fec76de2c33f35d83"
+ integrity sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==
matcher@^3.0.0:
version "3.0.0"
From 9686ff4ac63604e753e5d6f919a4ed357e9d8e90 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 12 Aug 2024 21:49:04 +0200
Subject: [PATCH 076/489] Bump lefthook from 1.7.11 to 1.7.12 (#5559)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.7.11 to 1.7.12.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.7.11...v1.7.12)
---
updated-dependencies:
- dependency-name: lefthook
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 104 +++++++++++++++++++++++++--------------------------
2 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/package.json b/package.json
index eafe5e0e0dcca..9748d7d20fe48 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.0",
- "lefthook": "^1.7.11",
+ "lefthook": "^1.7.12",
"mini-css-extract-plugin": "^2.9.0",
"npm-run-all2": "^6.2.2",
"postcss": "^8.4.40",
diff --git a/yarn.lock b/yarn.lock
index d9afb86092c8d..478de596be2c8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5636,59 +5636,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.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.11.tgz#bf2fb8855545cf55556b584d84dd2eb0eb2548a6"
- integrity sha512-JQtGTM2uZF/3MGKmqb3jg8KG0B/V+2IU+H2jLvRtJULjHQxgiAQGsCJZKCYr8Uvq2/sbjaa+YdiKHROlqt7O6w==
-
-lefthook-darwin-x64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.11.tgz#3ef3006012203b3936774bec0be116298ea752c7"
- integrity sha512-sfHzHklBh/xEiRGbCkIWZfkyf6gxg4nSryKuA7M6VgwooauXYN+0aXxNbK4CjXBPSMhSCSHh6uHXsqXWaVrTCQ==
-
-lefthook-freebsd-arm64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.11.tgz#11ee26b63f58b8bb31948d813e263e72a9683ef7"
- integrity sha512-UsEHI2xB0c+k3DfTNhl9STBuxZMkgMCUdOS2r6OkVoUY5Uf1PVUH+OTq7dvSAnsueSl6r+3xyCBz2tn48uVwbA==
-
-lefthook-freebsd-x64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.11.tgz#2dee29472cd4952764a621a99607bdeebc88cda8"
- integrity sha512-WJznUCrP8kb0nlxWvlvfWJm/SAW0TOJOv2VFeFLInYM1ylFVUVeV2fEvEHOjGIKyt96+uAnbiHOkqIYbhfc03g==
-
-lefthook-linux-arm64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.11.tgz#08d9ec12d0015e8aafab06cbbf2d957eaa7e1a48"
- integrity sha512-4S+Gdr5jWmwrfHGokcuRQm/A92KLRwYotBgOMwf0etQa4n9B6FGXEi59IOuFNHeZXY4DpxA9A8AvplVdN5KSOA==
-
-lefthook-linux-x64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.11.tgz#721c6fbe3a1647ba8f6d54fc7f253232af5df01b"
- integrity sha512-3CwNNpRa1fHlymgtxjHQ0BqYMvvj3WXvX4eq1BT+w5NF7h5ZjVaK+nilpgEWUUTQyF66FLai+CGx6wfKvcPOag==
-
-lefthook-windows-arm64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.11.tgz#2c340e4c25fefba3ae0a9c6a5cb7125f1575723d"
- integrity sha512-DfLVQ4F1iQcudTDnX/Ru1WNSN2OBPrHwwcWVVdQ/KDYWSru6dd4f18M7g98TZ2X9nYHA5IWrX8w2DaBR6P0/bw==
-
-lefthook-windows-x64@1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.11.tgz#99e2f77762f544f8c9a87ae90324ad83122d280b"
- integrity sha512-xAZP4tQr/6YKbKKvp0qMf6UnToXxo9RulzpKq+v5SiGWE5rz3G12XpyaNVslfrb1N30Yp8wUdZdlXBqhUvltYw==
-
-lefthook@^1.7.11:
- version "1.7.11"
- resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.11.tgz#4bb9c2e28d6f8c966f5a6d7ff88708490e20a14f"
- integrity sha512-IJ9KSk3+dkjTmKEsH2XJC4elocdgXzIznAHfbgr+5N/dJoB3fj8xNWfNx5fDhjT6so4eCJgdOrF9NJ7cS4wRvw==
+lefthook-darwin-arm64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.12.tgz#8bb3a6a5816ccbfb46b3060c1dfa0f2eeb39f817"
+ integrity sha512-CjbV968FMFJWBe/5UA4H3DiKH5TFCh0449pfr9NTt14r05FIg6YzLf5h97CYlDz3b0Bx8Iz8ZqoguE1dFrYpsg==
+
+lefthook-darwin-x64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.12.tgz#ad8274f794275f931469e19c2735335e6ca1626c"
+ integrity sha512-EEwh5zU65MwfwkGOpBW7rd0Ldg7Ef17VoFUQ/pr408acLq7BvNOrrFga/RNUvB5Hsaa7eNjBbv0AG02qE3X/ZA==
+
+lefthook-freebsd-arm64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.12.tgz#0109267593f94a6b6598dc9b947cf6e11e38934e"
+ integrity sha512-BznKfuFw9lWhqJFrI+ci2EyS5vvfEWTcsISTq0o4a/kR058stK/6B+i+XnTHrHsiOjQbLJ42wcFgvUEFmio6yw==
+
+lefthook-freebsd-x64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.12.tgz#7d4952922026fdb76f3dbf98b8af13cbb88c62e5"
+ integrity sha512-9+I0xakvqpAIxhPb5ON6a5v/Iyl+gahJi+ogoEDNqlg3zj4otZspOvdiAsLWBAaXI+yFQftOHBM8940Ki5RB0A==
+
+lefthook-linux-arm64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.12.tgz#aea6714e3820a6ef73a21b85bcea0d2dff64b8be"
+ integrity sha512-FC+4cyz2CUBVL4BnDwnAzQPdBHM80O2TM53qoT1R3sn9LbWwcpnwdXi86NhVD0I7+vKg6rGUKgOQMTZfSe+sDg==
+
+lefthook-linux-x64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.12.tgz#207cb3c1d6182fec4cf457e7ffdcae99d25fcc8e"
+ integrity sha512-BH9peuKjx2ikOxjnohdAH4ocRfC2NZQTXrJXsAdPOFja1iNHzBwpZe+/x+g8fO8a3WVrmBWad3814Hb/oGCICA==
+
+lefthook-windows-arm64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.12.tgz#8e7434ff30d15bae5e4bae57d01f8e37f01ec452"
+ integrity sha512-GlCNSpXAiBcCQ8jtcFGxkxGzqnsPzGWbx9HTYO7Xz1QjW56de311rdntyVIRl48nQ+Q76fVyEKAtsyQczvRN6w==
+
+lefthook-windows-x64@1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.12.tgz#fa9880a4fbb526095043066aa7adeeee1b153030"
+ integrity sha512-9GeeQVUX7R8irJ5mf0Zzxn74ZTpy1LHqIGPRAmn9ELtkVdne/DGpCcGyKGVoJFbMInEaeDHGOnVjeQ9kgWB8Fw==
+
+lefthook@^1.7.12:
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.12.tgz#031be9222c23d1a12bd835ed2ae0415149b69994"
+ integrity sha512-kZQQAeL4JZbsADqzK5YMP7M0aadGVDha7oo+4exA5FeQbgpmnDq+ejbkdfLOdo9uy7FSY82akmbxAiXq+V4fbg==
optionalDependencies:
- lefthook-darwin-arm64 "1.7.11"
- lefthook-darwin-x64 "1.7.11"
- lefthook-freebsd-arm64 "1.7.11"
- lefthook-freebsd-x64 "1.7.11"
- lefthook-linux-arm64 "1.7.11"
- lefthook-linux-x64 "1.7.11"
- lefthook-windows-arm64 "1.7.11"
- lefthook-windows-x64 "1.7.11"
+ lefthook-darwin-arm64 "1.7.12"
+ lefthook-darwin-x64 "1.7.12"
+ lefthook-freebsd-arm64 "1.7.12"
+ lefthook-freebsd-x64 "1.7.12"
+ lefthook-linux-arm64 "1.7.12"
+ lefthook-linux-x64 "1.7.12"
+ lefthook-windows-arm64 "1.7.12"
+ lefthook-windows-x64 "1.7.12"
levn@^0.4.1:
version "0.4.1"
From 610eba369d924318858d04741cf5d67cfb8fdf6c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 12 Aug 2024 21:50:37 +0200
Subject: [PATCH 077/489] Bump eslint-plugin-promise from 7.0.0 to 7.1.0 in the
eslint group (#5557)
Bumps the eslint group with 1 update: [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise).
Updates `eslint-plugin-promise` from 7.0.0 to 7.1.0
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v7.0.0...v7.1.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-promise
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 9748d7d20fe48..c77d2820bbc6d 100644
--- a/package.json
+++ b/package.json
@@ -101,7 +101,7 @@
"eslint-plugin-jsonc": "^2.16.0",
"eslint-plugin-n": "^17.10.2",
"eslint-plugin-prettier": "^5.2.1",
- "eslint-plugin-promise": "^7.0.0",
+ "eslint-plugin-promise": "^7.1.0",
"eslint-plugin-unicorn": "^55.0.0",
"eslint-plugin-vue": "^9.27.0",
"eslint-plugin-vuejs-accessibility": "^2.4.1",
diff --git a/yarn.lock b/yarn.lock
index 478de596be2c8..e48245c639a7b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3861,10 +3861,10 @@ eslint-plugin-prettier@^5.2.1:
prettier-linter-helpers "^1.0.0"
synckit "^0.9.1"
-eslint-plugin-promise@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz#2d54cf6e92213cb2915be62abf338b64c089431d"
- integrity sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==
+eslint-plugin-promise@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz#06b3ad6d36b3c3ef3ec201c8a8d97049cf5dbb20"
+ integrity sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==
eslint-plugin-unicorn@^55.0.0:
version "55.0.0"
From 0a524ad7230f1b0afcfe6ac156301f083064c1e3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 12 Aug 2024 19:55:34 +0000
Subject: [PATCH 078/489] Bump postcss from 8.4.40 to 8.4.41 in the stylelint
group (#5558)
Bumps the stylelint group with 1 update: [postcss](https://github.com/postcss/postcss).
Updates `postcss` from 8.4.40 to 8.4.41
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.40...8.4.41)
---
updated-dependencies:
- dependency-name: postcss
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: stylelint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index c77d2820bbc6d..c0484018ed485 100644
--- a/package.json
+++ b/package.json
@@ -112,7 +112,7 @@
"lefthook": "^1.7.12",
"mini-css-extract-plugin": "^2.9.0",
"npm-run-all2": "^6.2.2",
- "postcss": "^8.4.40",
+ "postcss": "^8.4.41",
"postcss-scss": "^4.0.9",
"prettier": "^2.8.8",
"rimraf": "^6.0.1",
diff --git a/yarn.lock b/yarn.lock
index e48245c639a7b..736028bc80b49 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6831,10 +6831,10 @@ postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.40:
- version "8.4.40"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8"
- integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==
+postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.40, postcss@^8.4.41:
+ version "8.4.41"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
+ integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.1"
From 69b1011a50c9d3d1bd4ec6a860d2bca75bae1274 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 12 Aug 2024 22:42:02 +0200
Subject: [PATCH 079/489] Add support for copying hashtag links (#5538)
---
src/main/index.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/index.js b/src/main/index.js
index 3d3cf427d5d01..778be1bdbf69a 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -94,7 +94,7 @@ function runApp() {
const path = urlParts[1]
if (path) {
- visible = ['/channel', '/watch'].some(p => path.startsWith(p)) ||
+ visible = ['/channel', '/watch', '/hashtag'].some(p => path.startsWith(p)) ||
// Only show copy link entry for non user playlists
(path.startsWith('/playlist') && !/playlistType=user/.test(path))
}
@@ -131,6 +131,8 @@ function runApp() {
return `${origin}/playlist?list=${id}`
case 'channel':
return `${origin}/channel/${id}`
+ case 'hashtag':
+ return `${origin}/hashtag/${id}`
case 'watch': {
let url
From 5d1a9ec2a1fdaa22d52ce255f91959673665a9af Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 12 Aug 2024 23:00:50 +0200
Subject: [PATCH 080/489] Properly handle Arabic hashtags (#5545)
---
src/renderer/views/Hashtag/Hashtag.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/renderer/views/Hashtag/Hashtag.js b/src/renderer/views/Hashtag/Hashtag.js
index 01453f8cf2611..6de3cd9b7ca2e 100644
--- a/src/renderer/views/Hashtag/Hashtag.js
+++ b/src/renderer/views/Hashtag/Hashtag.js
@@ -63,7 +63,7 @@ export default defineComponent({
},
getHashtag: async function() {
- const hashtag = this.$route.params.hashtag
+ const hashtag = decodeURIComponent(this.$route.params.hashtag)
if (this.backendFallback || this.backendPreference === 'local') {
await this.getLocalHashtag(hashtag)
} else {
From 3dbee863d9531a909cf12197932e5f19e5b65a43 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 12 Aug 2024 23:02:36 +0200
Subject: [PATCH 081/489] Add a GPU Internals entry to the View menu (#5550)
* Add a GPU Internals entry to the View menu
* Disable devtools in the GPU internals window
---
src/main/index.js | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/main/index.js b/src/main/index.js
index 778be1bdbf69a..a2bdaeb8237f8 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -1515,6 +1515,19 @@ function runApp() {
}
}
},
+ {
+ label: 'GPU Internals (chrome://gpu)',
+ click() {
+ const gpuWindow = new BrowserWindow({
+ show: true,
+ autoHideMenuBar: true,
+ webPreferences: {
+ devTools: false
+ }
+ })
+ gpuWindow.loadURL('chrome://gpu')
+ }
+ },
{ type: 'separator' },
{ role: 'resetzoom' },
{ role: 'resetzoom', accelerator: 'CmdOrCtrl+num0', visible: false },
From 63400530c44e7d1f6b3fac6bbe30e2cc2378fb5f Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 12 Aug 2024 23:40:53 +0200
Subject: [PATCH 082/489] Migrate FtElementList, FtAutoGrid and
FtListLazyWrapper to the composition API (#5546)
* Migrate FtAutoGrid to the composition API
* Migrate FtListLazyWrapper to the composition API
* Migrate FtElementList to the composition API
---
.../FtAutoGrid.css} | 0
.../components/FtAutoGrid/FtAutoGrid.vue | 21 ++
.../FtElementList.css} | 0
.../FtElementList/FtElementList.vue | 140 +++++++++
.../FtListLazyWrapper.css} | 0
.../FtListLazyWrapper/FtListLazyWrapper.vue | 273 ++++++++++++++++++
.../components/ft-auto-grid/ft-auto-grid.js | 11 -
.../components/ft-auto-grid/ft-auto-grid.vue | 13 -
.../ft-element-list/ft-element-list.js | 98 -------
.../ft-element-list/ft-element-list.vue | 33 ---
.../ft-list-lazy-wrapper.js | 209 --------------
.../ft-list-lazy-wrapper.vue | 60 ----
.../subscriptions-tab-ui.js | 2 +-
src/renderer/views/Channel/Channel.js | 2 +-
src/renderer/views/Hashtag/Hashtag.js | 2 +-
src/renderer/views/History/History.js | 2 +-
src/renderer/views/Playlist/Playlist.js | 2 +-
src/renderer/views/Popular/Popular.js | 2 +-
src/renderer/views/Search/Search.js | 2 +-
src/renderer/views/Trending/Trending.js | 2 +-
.../views/UserPlaylists/UserPlaylists.js | 2 +-
21 files changed, 443 insertions(+), 433 deletions(-)
rename src/renderer/components/{ft-auto-grid/ft-auto-grid.css => FtAutoGrid/FtAutoGrid.css} (100%)
create mode 100644 src/renderer/components/FtAutoGrid/FtAutoGrid.vue
rename src/renderer/components/{ft-element-list/ft-element-list.css => FtElementList/FtElementList.css} (100%)
create mode 100644 src/renderer/components/FtElementList/FtElementList.vue
rename src/renderer/components/{ft-list-lazy-wrapper/ft-list-lazy-wrapper.css => FtListLazyWrapper/FtListLazyWrapper.css} (100%)
create mode 100644 src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.vue
delete mode 100644 src/renderer/components/ft-auto-grid/ft-auto-grid.js
delete mode 100644 src/renderer/components/ft-auto-grid/ft-auto-grid.vue
delete mode 100644 src/renderer/components/ft-element-list/ft-element-list.js
delete mode 100644 src/renderer/components/ft-element-list/ft-element-list.vue
delete mode 100644 src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js
delete mode 100644 src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.css b/src/renderer/components/FtAutoGrid/FtAutoGrid.css
similarity index 100%
rename from src/renderer/components/ft-auto-grid/ft-auto-grid.css
rename to src/renderer/components/FtAutoGrid/FtAutoGrid.css
diff --git a/src/renderer/components/FtAutoGrid/FtAutoGrid.vue b/src/renderer/components/FtAutoGrid/FtAutoGrid.vue
new file mode 100644
index 0000000000000..05af66ecb95a9
--- /dev/null
+++ b/src/renderer/components/FtAutoGrid/FtAutoGrid.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/ft-element-list/ft-element-list.css b/src/renderer/components/FtElementList/FtElementList.css
similarity index 100%
rename from src/renderer/components/ft-element-list/ft-element-list.css
rename to src/renderer/components/FtElementList/FtElementList.css
diff --git a/src/renderer/components/FtElementList/FtElementList.vue b/src/renderer/components/FtElementList/FtElementList.vue
new file mode 100644
index 0000000000000..e6f8f3feed11a
--- /dev/null
+++ b/src/renderer/components/FtElementList/FtElementList.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.css b/src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.css
similarity index 100%
rename from src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.css
rename to src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.css
diff --git a/src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.vue b/src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.vue
new file mode 100644
index 0000000000000..abaf49d6de3f7
--- /dev/null
+++ b/src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.js b/src/renderer/components/ft-auto-grid/ft-auto-grid.js
deleted file mode 100644
index d9d1e21522e0a..0000000000000
--- a/src/renderer/components/ft-auto-grid/ft-auto-grid.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { defineComponent } from 'vue'
-
-export default defineComponent({
- name: 'FtAutoGrid',
- props: {
- grid: {
- type: Boolean,
- required: true
- }
- }
-})
diff --git a/src/renderer/components/ft-auto-grid/ft-auto-grid.vue b/src/renderer/components/ft-auto-grid/ft-auto-grid.vue
deleted file mode 100644
index f39ab3d680a58..0000000000000
--- a/src/renderer/components/ft-auto-grid/ft-auto-grid.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/renderer/components/ft-element-list/ft-element-list.js b/src/renderer/components/ft-element-list/ft-element-list.js
deleted file mode 100644
index b82b04f95afe0..0000000000000
--- a/src/renderer/components/ft-element-list/ft-element-list.js
+++ /dev/null
@@ -1,98 +0,0 @@
-import { defineComponent } from 'vue'
-import FtAutoGrid from '../ft-auto-grid/ft-auto-grid.vue'
-import FtListLazyWrapper from '../ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue'
-
-export default defineComponent({
- name: 'FtElementList',
- components: {
- 'ft-auto-grid': FtAutoGrid,
- 'ft-list-lazy-wrapper': FtListLazyWrapper
- },
- props: {
- data: {
- type: Array,
- required: true
- },
- dataType: {
- type: String,
- default: null,
- },
- display: {
- type: String,
- required: false,
- default: ''
- },
- showVideoWithLastViewedPlaylist: {
- type: Boolean,
- default: false
- },
- useChannelsHiddenPreference: {
- type: Boolean,
- default: true,
- },
- hideForbiddenTitles: {
- type: Boolean,
- default: true
- },
- searchQueryText: {
- type: String,
- required: false,
- default: '',
- },
- alwaysShowAddToPlaylistButton: {
- type: Boolean,
- default: false,
- },
- quickBookmarkButtonEnabled: {
- type: Boolean,
- default: true,
- },
- canMoveVideoUp: {
- type: Boolean,
- default: false,
- },
- canMoveVideoDown: {
- type: Boolean,
- default: false,
- },
- canRemoveFromPlaylist: {
- type: Boolean,
- default: false,
- },
- playlistItemsLength: {
- type: Number,
- default: 0
- },
- playlistId: {
- type: String,
- default: null
- },
- playlistType: {
- type: String,
- default: null
- },
- },
- emits: ['move-video-down', 'move-video-up', 'remove-from-playlist'],
- computed: {
- listType: function () {
- return this.$store.getters.getListType
- },
-
- displayValue: function () {
- return this.display === '' ? this.listType : this.display
- }
- },
- methods: {
- moveVideoUp: function(videoId, playlistItemId) {
- this.$emit('move-video-up', videoId, playlistItemId)
- },
-
- moveVideoDown: function(videoId, playlistItemId) {
- this.$emit('move-video-down', videoId, playlistItemId)
- },
-
- removeFromPlaylist: function(videoId, playlistItemId) {
- this.$emit('remove-from-playlist', videoId, playlistItemId)
- },
- }
-})
diff --git a/src/renderer/components/ft-element-list/ft-element-list.vue b/src/renderer/components/ft-element-list/ft-element-list.vue
deleted file mode 100644
index 7331d2e7ff8b6..0000000000000
--- a/src/renderer/components/ft-element-list/ft-element-list.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js
deleted file mode 100644
index f94037ef774bd..0000000000000
--- a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js
+++ /dev/null
@@ -1,209 +0,0 @@
-import { defineComponent } from 'vue'
-import FtListVideo from '../ft-list-video/ft-list-video.vue'
-import FtListChannel from '../ft-list-channel/ft-list-channel.vue'
-import FtListPlaylist from '../ft-list-playlist/ft-list-playlist.vue'
-import FtCommunityPost from '../ft-community-post/ft-community-post.vue'
-import FtListHashtag from '../ft-list-hashtag/ft-list-hashtag.vue'
-
-export default defineComponent({
- name: 'FtListLazyWrapper',
- components: {
- 'ft-list-video': FtListVideo,
- 'ft-list-channel': FtListChannel,
- 'ft-list-playlist': FtListPlaylist,
- 'ft-community-post': FtCommunityPost,
- 'ft-list-hashtag': FtListHashtag,
- },
- props: {
- data: {
- type: Object,
- required: true
- },
- dataType: {
- type: String,
- default: null,
- },
- appearance: {
- type: String,
- required: true
- },
- firstScreen: {
- type: Boolean,
- required: true
- },
- layout: {
- type: String,
- default: 'grid'
- },
- showVideoWithLastViewedPlaylist: {
- type: Boolean,
- default: false
- },
- useChannelsHiddenPreference: {
- type: Boolean,
- default: true,
- },
- hideForbiddenTitles: {
- type: Boolean,
- default: true
- },
- searchQueryText: {
- type: String,
- required: false,
- default: '',
- },
- playlistId: {
- type: String,
- default: null
- },
- playlistType: {
- type: String,
- default: null
- },
- playlistItemId: {
- type: String,
- default: null
- },
- alwaysShowAddToPlaylistButton: {
- type: Boolean,
- default: false,
- },
- quickBookmarkButtonEnabled: {
- type: Boolean,
- default: true,
- },
- canMoveVideoUp: {
- type: Boolean,
- default: false,
- },
- canMoveVideoDown: {
- type: Boolean,
- default: false,
- },
- canRemoveFromPlaylist: {
- type: Boolean,
- default: false,
- },
- },
- emits: ['move-video-down', 'move-video-up', 'remove-from-playlist'],
- data: function () {
- return {
- visible: this.firstScreen
- }
- },
- computed: {
- hideLiveStreams: function() {
- return this.$store.getters.getHideLiveStreams
- },
- channelsHidden: function() {
- // Some component users like channel view will have this disabled
- if (!this.useChannelsHiddenPreference) { return [] }
-
- return JSON.parse(this.$store.getters.getChannelsHidden).map((ch) => {
- // Legacy support
- if (typeof ch === 'string') {
- return { name: ch, preferredName: '', icon: '' }
- }
- return ch
- })
- },
- forbiddenTitles: function() {
- if (!this.hideForbiddenTitles) { return [] }
- return JSON.parse(this.$store.getters.getForbiddenTitles)
- },
- hideUpcomingPremieres: function () {
- return this.$store.getters.getHideUpcomingPremieres
- },
- /**
- * Show or Hide results in the list
- *
- * @return {bool} false to hide the video, true to show it
- */
- showResult: function () {
- const { data } = this
- const dataType = this.finalDataType
- if (!dataType) {
- return false
- }
- if (dataType === 'video' || dataType === 'shortVideo') {
- if (this.hideLiveStreams && (data.liveNow || data.lengthSeconds == null)) {
- // hide livestreams
- return false
- }
- if (this.hideUpcomingPremieres &&
- // Observed for premieres in Local API Channels.
- (data.premiereDate != null ||
- // Invidious API
- // `premiereTimestamp` only available on premiered videos
- // https://docs.invidious.io/api/common_types/#videoobject
- data.premiereTimestamp != null ||
- // viewCount is our only method of detecting premieres in RSS
- // data without sending an additional request.
- // If we ever get a better flag, use it here instead.
- (data.isRSS && data.viewCount === '0'))) {
- // hide upcoming
- return false
- }
- if (this.channelsHidden.some(ch => ch.name === data.authorId) || this.channelsHidden.some(ch => ch.name === data.author)) {
- // hide videos by author
- return false
- }
- if (this.forbiddenTitles.some((text) => this.data.title?.toLowerCase().includes(text.toLowerCase()))) {
- return false
- }
- } else if (dataType === 'channel') {
- const attrsToCheck = [
- // Local API
- data.id,
- data.name,
- // Invidious API
- // https://docs.invidious.io/api/common_types/#channelobject
- data.author,
- data.authorId,
- ]
- if (attrsToCheck.some(a => a != null && this.channelsHidden.some(ch => ch.name === a))) {
- // hide channels by author
- return false
- }
- } else if (dataType === 'playlist') {
- if (this.forbiddenTitles.some((text) => this.data.title?.toLowerCase().includes(text.toLowerCase()))) {
- return false
- }
- const attrsToCheck = [
- // Local API
- data.channelId,
- data.channelName,
- // Invidious API
- // https://docs.invidious.io/api/common_types/#playlistobject
- data.author,
- data.authorId,
- ]
- if (attrsToCheck.some(a => a != null && this.channelsHidden.some(ch => ch.name === a))) {
- // hide playlists by author
- return false
- }
- }
- return true
- },
-
- finalDataType() {
- return this.data.type ?? this.dataType
- },
- },
- methods: {
- onVisibilityChanged: function (visible) {
- this.visible = visible
- },
- moveVideoUp: function() {
- this.$emit('move-video-up')
- },
-
- moveVideoDown: function() {
- this.$emit('move-video-down')
- },
-
- removeFromPlaylist: function() {
- this.$emit('remove-from-playlist')
- },
- }
-})
diff --git a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue
deleted file mode 100644
index df93ed245667b..0000000000000
--- a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/renderer/components/subscriptions-tab-ui/subscriptions-tab-ui.js b/src/renderer/components/subscriptions-tab-ui/subscriptions-tab-ui.js
index a812cd0d09cc2..489d928f383e0 100644
--- a/src/renderer/components/subscriptions-tab-ui/subscriptions-tab-ui.js
+++ b/src/renderer/components/subscriptions-tab-ui/subscriptions-tab-ui.js
@@ -4,7 +4,7 @@ import FtLoader from '../ft-loader/ft-loader.vue'
import FtButton from '../ft-button/ft-button.vue'
import FtRefreshWidget from '../ft-refresh-widget/ft-refresh-widget.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
-import FtElementList from '../ft-element-list/ft-element-list.vue'
+import FtElementList from '../FtElementList/FtElementList.vue'
import FtChannelBubble from '../ft-channel-bubble/ft-channel-bubble.vue'
import FtAutoLoadNextPageWrapper from '../ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js
index 9f5f881554f9f..20ca20794ca4d 100644
--- a/src/renderer/views/Channel/Channel.js
+++ b/src/renderer/views/Channel/Channel.js
@@ -4,7 +4,7 @@ import FtCard from '../../components/ft-card/ft-card.vue'
import FtSelect from '../../components/ft-select/ft-select.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue'
import ChannelAbout from '../../components/channel-about/channel-about.vue'
import ChannelDetails from '../../components/ChannelDetails/ChannelDetails.vue'
diff --git a/src/renderer/views/Hashtag/Hashtag.js b/src/renderer/views/Hashtag/Hashtag.js
index 6de3cd9b7ca2e..27e65e4a28986 100644
--- a/src/renderer/views/Hashtag/Hashtag.js
+++ b/src/renderer/views/Hashtag/Hashtag.js
@@ -1,6 +1,6 @@
import { defineComponent } from 'vue'
import FtCard from '../../components/ft-card/ft-card.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
diff --git a/src/renderer/views/History/History.js b/src/renderer/views/History/History.js
index b3df7d88e2f47..4b1da3bdd68d3 100644
--- a/src/renderer/views/History/History.js
+++ b/src/renderer/views/History/History.js
@@ -3,7 +3,7 @@ import debounce from 'lodash.debounce'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtCard from '../../components/ft-card/ft-card.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtInput from '../../components/ft-input/ft-input.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js
index 35a88e59f5525..5589067b9cbd6 100644
--- a/src/renderer/views/Playlist/Playlist.js
+++ b/src/renderer/views/Playlist/Playlist.js
@@ -7,7 +7,7 @@ import PlaylistInfo from '../../components/playlist-info/playlist-info.vue'
import FtListVideoNumbered from '../../components/ft-list-video-numbered/ft-list-video-numbered.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtSelect from '../../components/ft-select/ft-select.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
import {
diff --git a/src/renderer/views/Popular/Popular.js b/src/renderer/views/Popular/Popular.js
index 9d71b12d30385..2a35f9d8cb68d 100644
--- a/src/renderer/views/Popular/Popular.js
+++ b/src/renderer/views/Popular/Popular.js
@@ -2,7 +2,7 @@ import { defineComponent } from 'vue'
import { mapMutations } from 'vuex'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtCard from '../../components/ft-card/ft-card.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtIconButton from '../../components/ft-icon-button/ft-icon-button.vue'
import FtRefreshWidget from '../../components/ft-refresh-widget/ft-refresh-widget.vue'
diff --git a/src/renderer/views/Search/Search.js b/src/renderer/views/Search/Search.js
index 05b26d5792b7a..1b4984704bd3f 100644
--- a/src/renderer/views/Search/Search.js
+++ b/src/renderer/views/Search/Search.js
@@ -1,7 +1,7 @@
import { defineComponent } from 'vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtCard from '../../components/ft-card/ft-card.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
import {
copyToClipboard,
diff --git a/src/renderer/views/Trending/Trending.js b/src/renderer/views/Trending/Trending.js
index 1fe5e0d0fbb6c..a8717845ada1f 100644
--- a/src/renderer/views/Trending/Trending.js
+++ b/src/renderer/views/Trending/Trending.js
@@ -2,7 +2,7 @@ import { defineComponent } from 'vue'
import { mapActions, mapMutations } from 'vuex'
import FtCard from '../../components/ft-card/ft-card.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtIconButton from '../../components/ft-icon-button/ft-icon-button.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtRefreshWidget from '../../components/ft-refresh-widget/ft-refresh-widget.vue'
diff --git a/src/renderer/views/UserPlaylists/UserPlaylists.js b/src/renderer/views/UserPlaylists/UserPlaylists.js
index cc865c4d6b2a3..a29495f61c73e 100644
--- a/src/renderer/views/UserPlaylists/UserPlaylists.js
+++ b/src/renderer/views/UserPlaylists/UserPlaylists.js
@@ -7,7 +7,7 @@ import FtTooltip from '../../components/ft-tooltip/ft-tooltip.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtSelect from '../../components/ft-select/ft-select.vue'
-import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
+import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtInput from '../../components/ft-input/ft-input.vue'
import FtIconButton from '../../components/ft-icon-button/ft-icon-button.vue'
import FtToggleSwitch from '../../components/ft-toggle-switch/ft-toggle-switch.vue'
From 27d7ba63c09b49774b5411623e0fad6f4e786799 Mon Sep 17 00:00:00 2001
From: PikachuEXE
Date: Tue, 13 Aug 2024 05:42:29 +0800
Subject: [PATCH 083/489] * Update top nav to move query text to new window
instead of remaining in old window (#5541)
---
src/renderer/components/top-nav/top-nav.js | 29 ++++++++++++++--------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js
index 0a5f16371cceb..be3d163655817 100644
--- a/src/renderer/components/top-nav/top-nav.js
+++ b/src/renderer/components/top-nav/top-nav.js
@@ -136,7 +136,7 @@ export default defineComponent({
this.debounceSearchResults = debounce(this.getSearchSuggestions, 200)
},
methods: {
- goToSearch: async function (query, { event }) {
+ goToSearch: async function (queryText, { event }) {
const doCreateNewWindow = event && event.shiftKey
if (window.innerWidth <= MOBILE_WIDTH_THRESHOLD) {
@@ -148,7 +148,7 @@ export default defineComponent({
clearLocalSearchSuggestionsSession()
- this.getYoutubeUrlInfo(query).then((result) => {
+ this.getYoutubeUrlInfo(queryText).then((result) => {
switch (result.urlType) {
case 'video': {
const { videoId, timestamp, playlistId } = result
@@ -164,7 +164,8 @@ export default defineComponent({
openInternalPath({
path: `/watch/${videoId}`,
query,
- doCreateNewWindow
+ doCreateNewWindow,
+ searchQueryText: queryText,
})
break
}
@@ -175,7 +176,8 @@ export default defineComponent({
openInternalPath({
path: `/playlist/${playlistId}`,
query,
- doCreateNewWindow
+ doCreateNewWindow,
+ searchQueryText: queryText,
})
break
}
@@ -187,7 +189,7 @@ export default defineComponent({
path: `/search/${encodeURIComponent(searchQuery)}`,
query,
doCreateNewWindow,
- searchQueryText: searchQuery
+ searchQueryText: searchQuery,
})
break
}
@@ -196,7 +198,8 @@ export default defineComponent({
const { hashtag } = result
openInternalPath({
path: `/hashtag/${encodeURIComponent(hashtag)}`,
- doCreateNewWindow
+ doCreateNewWindow,
+ searchQueryText: `#${hashtag}`,
})
break
@@ -209,8 +212,9 @@ export default defineComponent({
path: `/channel/${channelId}/${subPath}`,
doCreateNewWindow,
query: {
- url
- }
+ url,
+ },
+ searchQueryText: queryText,
})
break
}
@@ -218,7 +222,7 @@ export default defineComponent({
case 'invalid_url':
default: {
openInternalPath({
- path: `/search/${encodeURIComponent(query)}`,
+ path: `/search/${encodeURIComponent(queryText)}`,
query: {
sortBy: this.searchSettings.sortBy,
time: this.searchSettings.time,
@@ -227,10 +231,15 @@ export default defineComponent({
features: this.searchSettings.features,
},
doCreateNewWindow,
- searchQueryText: query
+ searchQueryText: queryText,
})
}
}
+
+ if (doCreateNewWindow) {
+ // Query text copied to new window = can be removed from current window
+ this.updateSearchInputText('')
+ }
})
},
From 122db20894afd63191bba5592e0943e87bd43206 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Tue, 13 Aug 2024 03:36:40 +0200
Subject: [PATCH 084/489] Migrate WatchVideoRecommendations,
WatchVideoDescription and WatchVideoChapters to the composition API (#5556)
* Migrate WatchVideoRecommendations to the composition API
* Migrate WatchVideoDescription to the composition API
* Migrate WatchVideoChapters to the composition API
---
.../WatchVideoChapters.css} | 0
.../WatchVideoChapters/WatchVideoChapters.vue | 191 ++++++++++++++++++
.../WatchVideoDescription.css} | 0
.../WatchVideoDescription.vue | 87 ++++++++
.../WatchVideoRecommendations.css} | 0
.../WatchVideoRecommendations.vue | 61 ++++++
.../watch-video-chapters.js | 115 -----------
.../watch-video-chapters.vue | 72 -------
.../watch-video-description.js | 74 -------
.../watch-video-description.vue | 15 --
.../watch-video-recommendations.js | 34 ----
.../watch-video-recommendations.vue | 30 ---
src/renderer/views/Watch/Watch.js | 6 +-
13 files changed, 342 insertions(+), 343 deletions(-)
rename src/renderer/components/{watch-video-chapters/watch-video-chapters.css => WatchVideoChapters/WatchVideoChapters.css} (100%)
create mode 100644 src/renderer/components/WatchVideoChapters/WatchVideoChapters.vue
rename src/renderer/components/{watch-video-description/watch-video-description.css => WatchVideoDescription/WatchVideoDescription.css} (100%)
create mode 100644 src/renderer/components/WatchVideoDescription/WatchVideoDescription.vue
rename src/renderer/components/{watch-video-recommendations/watch-video-recommendations.css => WatchVideoRecommendations/WatchVideoRecommendations.css} (100%)
create mode 100644 src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.vue
delete mode 100644 src/renderer/components/watch-video-chapters/watch-video-chapters.js
delete mode 100644 src/renderer/components/watch-video-chapters/watch-video-chapters.vue
delete mode 100644 src/renderer/components/watch-video-description/watch-video-description.js
delete mode 100644 src/renderer/components/watch-video-description/watch-video-description.vue
delete mode 100644 src/renderer/components/watch-video-recommendations/watch-video-recommendations.js
delete mode 100644 src/renderer/components/watch-video-recommendations/watch-video-recommendations.vue
diff --git a/src/renderer/components/watch-video-chapters/watch-video-chapters.css b/src/renderer/components/WatchVideoChapters/WatchVideoChapters.css
similarity index 100%
rename from src/renderer/components/watch-video-chapters/watch-video-chapters.css
rename to src/renderer/components/WatchVideoChapters/WatchVideoChapters.css
diff --git a/src/renderer/components/WatchVideoChapters/WatchVideoChapters.vue b/src/renderer/components/WatchVideoChapters/WatchVideoChapters.vue
new file mode 100644
index 0000000000000..ac27a48059e7d
--- /dev/null
+++ b/src/renderer/components/WatchVideoChapters/WatchVideoChapters.vue
@@ -0,0 +1,191 @@
+
+
+
+ {{ $t("Chapters.Chapters") }}
+
+
+ • {{ currentTitle }}
+
+
+
+
+
+
+
+
+
+ {{ chapter.timestamp }}
+
+
+ {{ chapter.title }}
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/watch-video-description/watch-video-description.css b/src/renderer/components/WatchVideoDescription/WatchVideoDescription.css
similarity index 100%
rename from src/renderer/components/watch-video-description/watch-video-description.css
rename to src/renderer/components/WatchVideoDescription/WatchVideoDescription.css
diff --git a/src/renderer/components/WatchVideoDescription/WatchVideoDescription.vue b/src/renderer/components/WatchVideoDescription/WatchVideoDescription.vue
new file mode 100644
index 0000000000000..37a12ea6eafca
--- /dev/null
+++ b/src/renderer/components/WatchVideoDescription/WatchVideoDescription.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.css b/src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.css
similarity index 100%
rename from src/renderer/components/watch-video-recommendations/watch-video-recommendations.css
rename to src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.css
diff --git a/src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.vue b/src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.vue
new file mode 100644
index 0000000000000..103422236a555
--- /dev/null
+++ b/src/renderer/components/WatchVideoRecommendations/WatchVideoRecommendations.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ {{ $t("Up Next") }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/watch-video-chapters/watch-video-chapters.js b/src/renderer/components/watch-video-chapters/watch-video-chapters.js
deleted file mode 100644
index 224274f2ae4a5..0000000000000
--- a/src/renderer/components/watch-video-chapters/watch-video-chapters.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import { defineComponent, nextTick } from 'vue'
-import FtCard from '../ft-card/ft-card.vue'
-
-export default defineComponent({
- name: 'WatchVideoChapters',
- components: {
- 'ft-card': FtCard
- },
- props: {
- chapters: {
- type: Array,
- required: true
- },
- currentChapterIndex: {
- type: Number,
- required: true
- }
- },
- emits: ['timestamp-event'],
- data: function () {
- return {
- showChapters: false,
- currentIndex: 0
- }
- },
- computed: {
- currentChapter: function () {
- return this.chapters[this.currentIndex]
- },
-
- currentTitle: function () {
- return this.currentChapter.title
- },
-
- compact: function () {
- return !this.chapters[0].thumbnail
- },
-
- observeVisibilityOptions() {
- return {
- callback: (isVisible, _entry) => {
- // This is also fired when **hidden**
- // No point doing anything if not visible
- if (!isVisible) { return }
- // Only auto scroll when expanded
- if (!this.showChapters) { return }
-
- this.scrollToCurrentChapter()
- },
- intersection: {
- // Only when it intersects with N% above bottom
- rootMargin: '0% 0% 0% 0%',
- },
- // Callback responsible for scolling to current chapter multiple times
- once: false,
- }
- },
- },
- watch: {
- currentChapterIndex: function (value) {
- if (this.currentIndex !== value) {
- this.currentIndex = value
- }
- }
- },
- created: function () {
- this.currentIndex = this.currentChapterIndex
- },
- methods: {
- changeChapter: function(index) {
- this.currentIndex = index
- this.$emit('timestamp-event', this.chapters[index].startSeconds)
- window.scrollTo(0, 0)
- },
-
- navigateChapters(direction) {
- const chapterElements = Array.from(this.$refs.chaptersWrapper.children)
- const focusedIndex = chapterElements.indexOf(document.activeElement)
-
- let newIndex = focusedIndex
- if (direction === 'up') {
- if (focusedIndex === 0) {
- newIndex = chapterElements.length - 1
- } else {
- newIndex--
- }
- } else {
- if (focusedIndex === chapterElements.length - 1) {
- newIndex = 0
- } else {
- newIndex++
- }
- }
-
- chapterElements[newIndex].focus()
- },
-
- toggleShowChapters() {
- this.showChapters = !this.showChapters
-
- if (this.showChapters) { this.scrollToCurrentChapter() }
- },
-
- scrollToCurrentChapter() {
- const container = this.$refs.chaptersWrapper
- const currentChaptersItem = (this.$refs.currentChaptersItem || [])[0]
- // Must wait until rendering done after value change
- nextTick(() => {
- if (container != null && currentChaptersItem != null) {
- container.scrollTop = currentChaptersItem.offsetTop - container.offsetTop
- }
- })
- },
- }
-})
diff --git a/src/renderer/components/watch-video-chapters/watch-video-chapters.vue b/src/renderer/components/watch-video-chapters/watch-video-chapters.vue
deleted file mode 100644
index 172eecd549120..0000000000000
--- a/src/renderer/components/watch-video-chapters/watch-video-chapters.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
- {{ $t("Chapters.Chapters") }}
-
-
- • {{ currentTitle }}
-
-
-
-
-
-
-
-
-
- {{ chapter.timestamp }}
-
-
- {{ chapter.title }}
-
-
-
-
-
-
-
-
diff --git a/src/renderer/components/watch-video-description/watch-video-description.js b/src/renderer/components/watch-video-description/watch-video-description.js
deleted file mode 100644
index d173bcc8e0305..0000000000000
--- a/src/renderer/components/watch-video-description/watch-video-description.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import { defineComponent } from 'vue'
-import FtCard from '../ft-card/ft-card.vue'
-import FtTimestampCatcher from '../ft-timestamp-catcher/ft-timestamp-catcher.vue'
-import autolinker from 'autolinker'
-
-export default defineComponent({
- name: 'WatchVideoDescription',
- components: {
- 'ft-card': FtCard,
- 'ft-timestamp-catcher': FtTimestampCatcher
- },
- props: {
- description: {
- type: String,
- required: true
- },
- descriptionHtml: {
- type: String,
- default: ''
- }
- },
- emits: ['timestamp-event'],
- data: function () {
- return {
- shownDescription: ''
- }
- },
- created: function () {
- if (this.descriptionHtml !== '') {
- const parsed = this.parseDescriptionHtml(this.descriptionHtml)
-
- // the invidious API returns emtpy html elements when the description is empty
- // so we need to parse it to see if there is any meaningful text in the html
- // or if it's just empty html elements e.g. ``
-
- const testDiv = document.createElement('div')
- testDiv.innerHTML = parsed
-
- if (!/^\s*$/.test(testDiv.innerText)) {
- this.shownDescription = parsed
- }
- } else {
- if (!/^\s*$/.test(this.description)) {
- this.shownDescription = autolinker.link(this.description)
- }
- }
- },
- methods: {
- onTimestamp: function(timestamp) {
- this.$emit('timestamp-event', timestamp)
- },
- parseDescriptionHtml: function (descriptionText) {
- return descriptionText
- .replaceAll('target="_blank"', '')
- .replaceAll(/\/redirect.+?(?=q=)/g, '')
- .replaceAll('q=', '')
- .replaceAll(/rel="nofollow\snoopener"/g, '')
- .replaceAll(/class=.+?(?=")./g, '')
- .replaceAll(/id=.+?(?=")./g, '')
- .replaceAll(/data-target-new-window=.+?(?=")./g, '')
- .replaceAll(/data-url=.+?(?=")./g, '')
- .replaceAll(/data-sessionlink=.+?(?=")./g, '')
- .replaceAll('&', '&')
- .replaceAll('%3A', ':')
- .replaceAll('%2F', '/')
- .replaceAll(/&v.+?(?=")/g, '')
- .replaceAll(/&redirect-token.+?(?=")/g, '')
- .replaceAll(/&redir_token.+?(?=")/g, '')
- .replaceAll('href="/', 'href="https://www.youtube.com/')
- .replaceAll('href="/hashtag/', 'href="https://wwww.youtube.com/hashtag/')
- .replaceAll('yt.www.watch.player.seekTo', 'changeDuration')
- }
- }
-})
diff --git a/src/renderer/components/watch-video-description/watch-video-description.vue b/src/renderer/components/watch-video-description/watch-video-description.vue
deleted file mode 100644
index 7c47df0a1a6c7..0000000000000
--- a/src/renderer/components/watch-video-description/watch-video-description.vue
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.js b/src/renderer/components/watch-video-recommendations/watch-video-recommendations.js
deleted file mode 100644
index 568c9a7830d82..0000000000000
--- a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { defineComponent } from 'vue'
-import { mapActions } from 'vuex'
-import FtCard from '../ft-card/ft-card.vue'
-import FtListVideoLazy from '../ft-list-video-lazy/ft-list-video-lazy.vue'
-import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue'
-
-export default defineComponent({
- name: 'WatchVideoRecommendations',
- components: {
- 'ft-card': FtCard,
- 'ft-list-video-lazy': FtListVideoLazy,
- 'ft-toggle-switch': FtToggleSwitch
- },
- props: {
- data: {
- type: Array,
- required: true
- },
- showAutoplay: {
- type: Boolean,
- default: false
- }
- },
- computed: {
- playNextVideo: function () {
- return this.$store.getters.getPlayNextVideo
- }
- },
- methods: {
- ...mapActions([
- 'updatePlayNextVideo'
- ])
- }
-})
diff --git a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.vue b/src/renderer/components/watch-video-recommendations/watch-video-recommendations.vue
deleted file mode 100644
index dea6468448578..0000000000000
--- a/src/renderer/components/watch-video-recommendations/watch-video-recommendations.vue
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- {{ $t("Up Next") }}
-
-
-
-
-
-
-
-
-
diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js
index ff8d4ec69e79f..f4a86094b2f40 100644
--- a/src/renderer/views/Watch/Watch.js
+++ b/src/renderer/views/Watch/Watch.js
@@ -3,12 +3,12 @@ import { mapActions } from 'vuex'
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'
-import WatchVideoChapters from '../../components/watch-video-chapters/watch-video-chapters.vue'
-import WatchVideoDescription from '../../components/watch-video-description/watch-video-description.vue'
+import WatchVideoChapters from '../../components/WatchVideoChapters/WatchVideoChapters.vue'
+import WatchVideoDescription from '../../components/WatchVideoDescription/WatchVideoDescription.vue'
import WatchVideoComments from '../../components/watch-video-comments/watch-video-comments.vue'
import WatchVideoLiveChat from '../../components/watch-video-live-chat/watch-video-live-chat.vue'
import WatchVideoPlaylist from '../../components/watch-video-playlist/watch-video-playlist.vue'
-import WatchVideoRecommendations from '../../components/watch-video-recommendations/watch-video-recommendations.vue'
+import WatchVideoRecommendations from '../../components/WatchVideoRecommendations/WatchVideoRecommendations.vue'
import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue'
import packageDetails from '../../../../package.json'
import {
From 510f75d2ae5bcf85dc69d6cf7e3c99a49cc78068 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D7=99=2E=20=D7=A4=D7=9C?= <7353755@gmail.com>
Date: Thu, 15 Aug 2024 22:23:03 +0000
Subject: [PATCH 085/489] Translated using Weblate (Hebrew)
Currently translated at 81.7% (710 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index c7407c97e7184..221b8fa7f65df 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -42,6 +42,8 @@ Global:
Subscriber Count: מנוי או מנויה 1 | {count} מנויים
View Count: צפייה אחת | {count} צפיות
Watching Count: צופה 1 | {count} צורפים
+ Input Tags:
+ Length Requirement: התג חייב להיות באורך של {number} תווים לפחות
Version {versionNumber} is now available! Click for more details: 'גרסה {versionNumber}
זמינה מעתה! לחיצה תציג פרטים נוספים'
Download From Site: 'הורדה מהאתר'
@@ -1001,3 +1003,5 @@ Playlist will pause when current video is finished: רשימת הנגינה תו
הנוכחי
Playlist will not pause when current video is finished: רשימת הנגינה לא תושהה עם סיום
הסרטון הנוכחי
+Close Banner: סגור באנר
+Go to page: עבור אל {page}
From ab24da704c8de26bb3568adb86aa203a3468915a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D7=99=2E=20=D7=A4=D7=9C?= <7353755@gmail.com>
Date: Thu, 15 Aug 2024 22:23:42 +0000
Subject: [PATCH 086/489] Translated using Weblate (Hebrew)
Currently translated at 82.8% (719 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index 221b8fa7f65df..ce72d3c8b52c0 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -88,6 +88,12 @@ Search Filters:
Fetch more results: 'חיפוש תוצאות נוספות'
# Sidebar
There are no more results for this search: אין תוצאות נוספות לחיפוש הזה
+ Features:
+ Features: תכונות
+ HD: HD
+ 4K: 4K
+ 3D: 3D
+ Subtitles: כתוביות
Subscriptions:
# On Subscriptions Page
Subscriptions: 'מינויים'
@@ -1005,3 +1011,9 @@ Playlist will not pause when current video is finished: רשימת הנגינה
הסרטון הנוכחי
Close Banner: סגור באנר
Go to page: עבור אל {page}
+Search Listing:
+ Label:
+ 4K: 4K
+ Subtitles: כתוביות
+ Closed Captions: כתוביות סגורות
+Search character limit: שאילתת החיפוש חורגת ממגבלת התווים {searchCharacterLimit}
From ad0ea951ed15af0238973457657d2933d1598b84 Mon Sep 17 00:00:00 2001
From: Yaron Shahrabani
Date: Thu, 15 Aug 2024 22:24:06 +0000
Subject: [PATCH 087/489] Translated using Weblate (Hebrew)
Currently translated at 82.8% (719 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index ce72d3c8b52c0..d10570f1da980 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -43,7 +43,7 @@ Global:
View Count: צפייה אחת | {count} צפיות
Watching Count: צופה 1 | {count} צורפים
Input Tags:
- Length Requirement: התג חייב להיות באורך של {number} תווים לפחות
+ Length Requirement: התגית חייבת להיות באורך של {number} תווים לפחות
Version {versionNumber} is now available! Click for more details: 'גרסה {versionNumber}
זמינה מעתה! לחיצה תציג פרטים נוספים'
Download From Site: 'הורדה מהאתר'
@@ -1009,8 +1009,8 @@ Playlist will pause when current video is finished: רשימת הנגינה תו
הנוכחי
Playlist will not pause when current video is finished: רשימת הנגינה לא תושהה עם סיום
הסרטון הנוכחי
-Close Banner: סגור באנר
-Go to page: עבור אל {page}
+Close Banner: סגירת כרזה
+Go to page: מעבר אל {page}
Search Listing:
Label:
4K: 4K
From a967fb8c2e64d6fd7c90bcdfc142ee32011bcf01 Mon Sep 17 00:00:00 2001
From: Yaron Shahrabani
Date: Thu, 15 Aug 2024 22:25:19 +0000
Subject: [PATCH 088/489] Translated using Weblate (Hebrew)
Currently translated at 83.2% (723 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index d10570f1da980..d03e0bbaecffb 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -89,11 +89,12 @@ Search Filters:
# Sidebar
There are no more results for this search: אין תוצאות נוספות לחיפוש הזה
Features:
- Features: תכונות
+ Features: יכולות
HD: HD
4K: 4K
- 3D: 3D
+ 3D: תלת־ממד
Subtitles: כתוביות
+ Live: שידור חי
Subscriptions:
# On Subscriptions Page
Subscriptions: 'מינויים'
@@ -1015,5 +1016,5 @@ Search Listing:
Label:
4K: 4K
Subtitles: כתוביות
- Closed Captions: כתוביות סגורות
+ Closed Captions: כתוביות לכבדי שמיעה
Search character limit: שאילתת החיפוש חורגת ממגבלת התווים {searchCharacterLimit}
From 12cce06cfd7afde583994002504dab94a3ff7df7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D7=99=2E=20=D7=A4=D7=9C?= <7353755@gmail.com>
Date: Thu, 15 Aug 2024 22:25:05 +0000
Subject: [PATCH 089/489] Translated using Weblate (Hebrew)
Currently translated at 83.2% (723 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index d03e0bbaecffb..657fc4292de43 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -95,6 +95,9 @@ Search Filters:
3D: תלת־ממד
Subtitles: כתוביות
Live: שידור חי
+ 360 Video: ווידאו 360
+ HDR: HDR
+ VR180: VR180
Subscriptions:
# On Subscriptions Page
Subscriptions: 'מינויים'
From 2e60e4bb81cf3b66b325a0a3b0a254c495451e69 Mon Sep 17 00:00:00 2001
From: Yaron Shahrabani
Date: Thu, 15 Aug 2024 22:26:13 +0000
Subject: [PATCH 090/489] Translated using Weblate (Hebrew)
Currently translated at 83.9% (729 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index 657fc4292de43..475e24b31b874 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -95,9 +95,10 @@ Search Filters:
3D: תלת־ממד
Subtitles: כתוביות
Live: שידור חי
- 360 Video: ווידאו 360
+ 360 Video: וידאו 360
HDR: HDR
VR180: VR180
+ Location: מקום
Subscriptions:
# On Subscriptions Page
Subscriptions: 'מינויים'
From d77b85fe2a589f89ba65edff17a763d27c09c474 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D7=99=2E=20=D7=A4=D7=9C?= <7353755@gmail.com>
Date: Thu, 15 Aug 2024 22:26:21 +0000
Subject: [PATCH 091/489] Translated using Weblate (Hebrew)
Currently translated at 83.9% (729 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index 475e24b31b874..d160156a9ff8e 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -137,6 +137,18 @@ User Playlists:
שמרת סרטונים. יש ללחוץ על כפתור השמירה בפינת הסרטון כדי שיופיע כאן
Search bar placeholder: חיפוש רשימות נגינה
Empty Search Message: אין סרטונים ברשימת הנגינה הזו שעונים לחיפוש שלך
+ You have no playlists. Click on the create new playlist button to create a new one.: אין
+ לך רשימות השמעה. לחץ על כפתור צור רשימת השמעה חדשה כדי ליצור רשימת השמעה חדשה.
+ Edit Playlist Info: ערוך פרטי רשימת השמעה
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: האם
+ אתה בטוח שברצונך להסיר סרטון משוכפל אחד מפלייליסט זה? לא ניתן לבטל זאת. | האם
+ אתה בטוח שברצונך להסיר {playlistItemCount} סרטונים כפולים מפלייליסט זה? לא ניתן
+ לבטל זאת.
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: האם
+ אתה בטוח שברצונך להסיר סרטון אחד שנצפה מפלייליסט זה? לא ניתן לבטל זאת. | האם אתה
+ בטוח שברצונך להסיר {playlistItemCount} סרטונים שנצפו מפלייליסט זה? לא ניתן לבטל
+ זאת.
+ Delete Playlist: מחק רשימת השמעה
History:
# On History Page
History: 'היסטוריה'
From 3c2d5b9115eeb0e6f3cfee910f93b988909de776 Mon Sep 17 00:00:00 2001
From: Yaron Shahrabani
Date: Thu, 15 Aug 2024 22:28:29 +0000
Subject: [PATCH 092/489] Translated using Weblate (Hebrew)
Currently translated at 84.4% (733 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index d160156a9ff8e..1c13f94291144 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -138,8 +138,9 @@ User Playlists:
Search bar placeholder: חיפוש רשימות נגינה
Empty Search Message: אין סרטונים ברשימת הנגינה הזו שעונים לחיפוש שלך
You have no playlists. Click on the create new playlist button to create a new one.: אין
- לך רשימות השמעה. לחץ על כפתור צור רשימת השמעה חדשה כדי ליצור רשימת השמעה חדשה.
- Edit Playlist Info: ערוך פרטי רשימת השמעה
+ לך רשימות נגינה. נא ללחוץ על כפתור יצירת רשימת נגינה חדשה כדי ליצור רשימת נגינה
+ חדשה.
+ Edit Playlist Info: עריכת פרטי רשימת נגינה
Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: האם
אתה בטוח שברצונך להסיר סרטון משוכפל אחד מפלייליסט זה? לא ניתן לבטל זאת. | האם
אתה בטוח שברצונך להסיר {playlistItemCount} סרטונים כפולים מפלייליסט זה? לא ניתן
@@ -149,6 +150,9 @@ User Playlists:
בטוח שברצונך להסיר {playlistItemCount} סרטונים שנצפו מפלייליסט זה? לא ניתן לבטל
זאת.
Delete Playlist: מחק רשימת השמעה
+ Copy Playlist: העתקת רשימת נגינה
+ Remove Watched Videos: הסרת סרטונים שנצפו
+ Remove Duplicate Videos: הסרת סרטונים כפולים
History:
# On History Page
History: 'היסטוריה'
From ef77ba8c0f62b5ab95e78d97002bf9fe719a34cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D7=99=2E=20=D7=A4=D7=9C?= <7353755@gmail.com>
Date: Thu, 15 Aug 2024 22:27:52 +0000
Subject: [PATCH 093/489] Translated using Weblate (Hebrew)
Currently translated at 84.4% (733 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index 1c13f94291144..b8dd6764764ec 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -153,6 +153,8 @@ User Playlists:
Copy Playlist: העתקת רשימת נגינה
Remove Watched Videos: הסרת סרטונים שנצפו
Remove Duplicate Videos: הסרת סרטונים כפולים
+ Are you sure you want to delete this playlist? This cannot be undone: האם אתה בטוח
+ שברצונך למחוק את רשימת ההשמעה הזו? לא ניתן לבטל זאת.
History:
# On History Page
History: 'היסטוריה'
From 1f2a3c8adfe725f3cd2872b91ee0733eb785f706 Mon Sep 17 00:00:00 2001
From: Renko
Date: Thu, 15 Aug 2024 23:31:46 +0000
Subject: [PATCH 094/489] Translated using Weblate (Romanian)
Currently translated at 91.8% (797 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/
---
static/locales/ro.yaml | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml
index cc1b230630d04..74954dce58984 100644
--- a/static/locales/ro.yaml
+++ b/static/locales/ro.yaml
@@ -89,6 +89,15 @@ Search Filters:
# Sidebar
There are no more results for this search: Nu mai există rezultate pentru această
căutare
+ Features:
+ Features: Caracteristici
+ HD: HD
+ 3D: 3D
+ Live: În direct
+ 4K: 4K
+ Subtitles: Subtitrări
+ Location: Locație
+ HDR: HDR
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonamente'
@@ -156,6 +165,18 @@ User Playlists:
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}
+ Added {count} Times: Deja adăugat | Adăugat {count} ori
+ Allow Adding Duplicate Video(s): Permiteți adăugarea de videoclipuri duplicat(e)
+ Save: Salvează
+ "{videoCount}/{totalVideoCount} Videos Will Be Added": '{videoCount}/{totalVideoCount}
+ Videoclipuri vor fi adăugate'
+ Toast:
+ You haven't selected any playlist yet.: Nu ați selectat încă nicio listă de
+ redare.
+ N playlists selected: '{playlistCount} Selectat'
+ "{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
+ Videoclipuri deja adăugate'
+ Search in Playlists: Caută in listele de redare
Cancel: Anulare
Edit Playlist Info: Editați informațiile despre lista de redare
Copy Playlist: Copiați lista de redare
@@ -199,7 +220,24 @@ User Playlists:
This video cannot be moved up.: Acest videoclip nu poate fi mutat în sus.
Video has been removed: Videoclipul a fost eliminat
Quick bookmark disabled: Marcaj rapid dezactivat
+ Some videos in the playlist are not loaded yet. Click here to copy anyway.: Unele
+ videoclipuri din lista de redare nu au fost incă încărcate. Face-ți click
+ aici pentru a le copia oricum.
+ This playlist is protected and cannot be removed.: Această listă de redare este
+ protejată și nu poate fi ștearsă.
+ Playlist {playlistName} has been deleted.: Lista de redare {playlistName} a
+ fost ștearsă.
+ "{videoCount} video(s) have been removed": 1 videoclip a fost șters | {videoCount}
+ videoclipuri au fost șterse
+ There were no videos to remove.: Nu au existat videoclipuri care să fie eliminate.
+ Playlist name cannot be empty. Please input a name.: Numele listei de redare
+ nu poate fi gol. Vă rugăm să introduceți un nume.
+ Playlist has been updated.: Lista de redare a fost actualizată.
+ This playlist does not exist: Această listă de redare nu există
+ There was an issue with updating this playlist.: A fost o problemă în actualizarea
+ acestei liste de redare.
Search for Videos: Căutați videoclipuri
+ Remove Duplicate Videos: Șterge videoclipurile duplicate
History:
# On History Page
History: 'Istoric'
@@ -253,6 +291,8 @@ Settings:
prezent este {instance}
Current Invidious Instance: Instanța actuală Invidious
System Default: Prestabilită de sistem
+ Auto Load Next Page:
+ Label: Încarcă următoarea pagină automat
Theme Settings:
Theme Settings: 'Setări temei'
Match Top Bar with Main Color: 'Potriviți bara de sus cu culoarea principală'
From c43ded9c70817675bf27d4b1f6a80a5ab19dfa59 Mon Sep 17 00:00:00 2001
From: Yaron Shahrabani
Date: Thu, 15 Aug 2024 22:30:23 +0000
Subject: [PATCH 095/489] Translated using Weblate (Hebrew)
Currently translated at 86.4% (750 of 868 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/
---
static/locales/he.yaml | 43 +++++++++++++++++++++++++++++++-----------
1 file changed, 32 insertions(+), 11 deletions(-)
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index b8dd6764764ec..3af8747990d37 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -141,20 +141,41 @@ User Playlists:
לך רשימות נגינה. נא ללחוץ על כפתור יצירת רשימת נגינה חדשה כדי ליצור רשימת נגינה
חדשה.
Edit Playlist Info: עריכת פרטי רשימת נגינה
- Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: האם
- אתה בטוח שברצונך להסיר סרטון משוכפל אחד מפלייליסט זה? לא ניתן לבטל זאת. | האם
- אתה בטוח שברצונך להסיר {playlistItemCount} סרטונים כפולים מפלייליסט זה? לא ניתן
- לבטל זאת.
- Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: האם
- אתה בטוח שברצונך להסיר סרטון אחד שנצפה מפלייליסט זה? לא ניתן לבטל זאת. | האם אתה
- בטוח שברצונך להסיר {playlistItemCount} סרטונים שנצפו מפלייליסט זה? לא ניתן לבטל
- זאת.
- Delete Playlist: מחק רשימת השמעה
+ Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: להסיר
+ סרטון משוכפל מרשימת הנגינה הזאת? זאת פעולה בלתי הפיכה. | להסיר {playlistItemCount}
+ סרטונים כפולים מרשימת הנגינה הזאת? זאת פעולה בלתי הפיכה.
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: להסיר
+ סרטון שנצפה מרשימת הנגינה הזאת? זאת פעולה בלתי הפיכה. | להסיר {playlistItemCount}
+ סרטונים שנצפו מרשימת הנגינה הזאת? זאת פעולה בלתי הפיכה.
+ Delete Playlist: מחיקת רשימת נגינה
Copy Playlist: העתקת רשימת נגינה
Remove Watched Videos: הסרת סרטונים שנצפו
Remove Duplicate Videos: הסרת סרטונים כפולים
- Are you sure you want to delete this playlist? This cannot be undone: האם אתה בטוח
- שברצונך למחוק את רשימת ההשמעה הזו? לא ניתן לבטל זאת.
+ Are you sure you want to delete this playlist? This cannot be undone: למחוק את רשימת
+ הנגינה הזו? זאת פעולה בלתי הפיכה.
+ Sort By:
+ EarliestUpdatedFirst: הראשונים שעודכנו
+ Sort By: מיון לפי
+ NameAscending: א-ת
+ NameDescending: ת-א
+ LatestPlayedFirst: האחרונים שהתנגנו
+ EarliestPlayedFirst: הראשונים שהתנגנו
+ LatestCreatedFirst: נוצרו לאחרונה
+ EarliestCreatedFirst: הראשונים שנוצרו
+ LatestUpdatedFirst: האחרונים שעודכנו
+ SinglePlaylistView:
+ Toast:
+ This playlist is already being used for quick bookmark.: רשימת הנגינה הזאת כבר
+ משמשת למועדפים זריזים.
+ This playlist is now used for quick bookmark: רשימת הנגינה הזאת משמשת כעת לסימניות
+ זריזות
+ This video cannot be moved up.: אי אפשר להעלות את הסרטון הזה למעלה.
+ This video cannot be moved down.: אי אפשר להוריד את הסרטון הזה למטה.
+ Video has been removed: הסרטון הוסר
+ There was a problem with removing this video: אירעה בעיה עם הסרת הסרטון הזה
+ Search for Videos: חיפוש סרטונים
+ Cannot delete the quick bookmark target playlist.: לא ניתן למחוק את רשימת הנגינה
+ ביעד הסימניות הזריזות.
History:
# On History Page
History: 'היסטוריה'
From 7a1217e4d456845bf97795067b379ee5afd76e5b Mon Sep 17 00:00:00 2001
From: PikachuEXE
Date: Sat, 17 Aug 2024 00:33:52 +0800
Subject: [PATCH 096/489] Implement case sensitive search in history (#5446)
* $ Refactor a bit first
* * Implement case sensitive search in history
---
src/renderer/views/History/History.js | 66 ++++++++++++++------------
src/renderer/views/History/History.vue | 11 +++++
static/locales/en-US.yaml | 1 +
3 files changed, 47 insertions(+), 31 deletions(-)
diff --git a/src/renderer/views/History/History.js b/src/renderer/views/History/History.js
index 4b1da3bdd68d3..9432541a141de 100644
--- a/src/renderer/views/History/History.js
+++ b/src/renderer/views/History/History.js
@@ -7,8 +7,25 @@ import FtElementList from '../../components/FtElementList/FtElementList.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtInput from '../../components/ft-input/ft-input.vue'
import FtAutoLoadNextPageWrapper from '../../components/ft-auto-load-next-page-wrapper/ft-auto-load-next-page-wrapper.vue'
+import FtToggleSwitch from '../../components/ft-toggle-switch/ft-toggle-switch.vue'
import { ctrlFHandler } from '../../helpers/utils'
+const identity = (v) => v
+
+function filterVideosWithQuery(videos, query, attrProcessor = identity) {
+ return videos.filter((video) => {
+ if (typeof (video.title) === 'string' && attrProcessor(video.title).includes(query)) {
+ return true
+ } else if (typeof (video.author) === 'string' && attrProcessor(video.author).includes(query)) {
+ return true
+ }
+
+ return false
+ }).sort((a, b) => {
+ return b.timeWatched - a.timeWatched
+ })
+}
+
export default defineComponent({
name: 'History',
components: {
@@ -19,12 +36,14 @@ export default defineComponent({
'ft-button': FtButton,
'ft-input': FtInput,
'ft-auto-load-next-page-wrapper': FtAutoLoadNextPageWrapper,
+ 'ft-toggle-switch': FtToggleSwitch,
},
data: function () {
return {
isLoading: false,
dataLimit: 100,
searchDataLimit: 100,
+ doCaseSensitiveSearch: false,
showLoadMoreButton: false,
query: '',
activeData: [],
@@ -49,9 +68,11 @@ export default defineComponent({
this.filterHistoryAsync()
},
fullData() {
- this.activeData = this.fullData
this.filterHistory()
- }
+ },
+ doCaseSensitiveSearch() {
+ this.filterHistory()
+ },
},
mounted: function () {
document.addEventListener('keydown', this.keyboardShortcutHandler)
@@ -63,11 +84,7 @@ export default defineComponent({
this.activeData = this.fullData
- if (this.activeData.length < this.historyCacheSorted.length) {
- this.showLoadMoreButton = true
- } else {
- this.showLoadMoreButton = false
- }
+ this.showLoadMoreButton = this.activeData.length < this.historyCacheSorted.length
this.filterHistoryDebounce = debounce(this.filterHistory, 500)
},
@@ -92,34 +109,21 @@ export default defineComponent({
filterHistory: function() {
if (this.query === '') {
this.activeData = this.fullData
- if (this.activeData.length < this.historyCacheSorted.length) {
- this.showLoadMoreButton = true
- } else {
- this.showLoadMoreButton = false
- }
- } else {
- const lowerCaseQuery = this.query.toLowerCase()
- const filteredQuery = this.historyCacheSorted.filter((video) => {
- 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
- }
+ this.showLoadMoreButton = this.activeData.length < this.historyCacheSorted.length
+ return
+ }
- return false
- }).sort((a, b) => {
- return b.timeWatched - a.timeWatched
- })
- if (filteredQuery.length <= this.searchDataLimit) {
- this.showLoadMoreButton = false
- } else {
- this.showLoadMoreButton = true
- }
- this.activeData = filteredQuery.length < this.searchDataLimit ? filteredQuery : filteredQuery.slice(0, this.searchDataLimit)
+ let filteredQuery = []
+ if (this.doCaseSensitiveSearch) {
+ filteredQuery = filterVideosWithQuery(this.historyCacheSorted, this.query)
+ } else {
+ filteredQuery = filterVideosWithQuery(this.historyCacheSorted, this.query.toLowerCase(), (s) => s.toLowerCase())
}
+ this.activeData = filteredQuery.length < this.searchDataLimit ? filteredQuery : filteredQuery.slice(0, this.searchDataLimit)
+ this.showLoadMoreButton = this.activeData.length > this.searchDataLimit
},
keyboardShortcutHandler: function (event) {
ctrlFHandler(event, this.$refs.searchBar)
- }
+ },
}
})
diff --git a/src/renderer/views/History/History.vue b/src/renderer/views/History/History.vue
index 98a4ce34d2890..5167a0ff67d5c 100644
--- a/src/renderer/views/History/History.vue
+++ b/src/renderer/views/History/History.vue
@@ -18,6 +18,17 @@
@input="(input) => query = input"
@clear="query = ''"
/>
+
+
+
diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml
index 765a0a53ee4b0..ef1e6a8eb6963 100644
--- a/static/locales/en-US.yaml
+++ b/static/locales/en-US.yaml
@@ -264,6 +264,7 @@ History:
Your history list is currently empty.: Your history list is currently empty.
Empty Search Message: There are no videos in your history that match your search
Search bar placeholder: "Search in History"
+ Case Sensitive Search: Case Sensitive Search
Settings:
# On Settings Page
Settings: Settings
From 81d0775285428595bf92596df7483e456663d123 Mon Sep 17 00:00:00 2001
From: Jose Delvani
Date: Fri, 16 Aug 2024 17:02:17 +0000
Subject: [PATCH 097/489] Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/
---
static/locales/pt-BR.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml
index a6073a47cb15d..6188e9847ce0a 100644
--- a/static/locales/pt-BR.yaml
+++ b/static/locales/pt-BR.yaml
@@ -255,6 +255,7 @@ History:
Your history list is currently empty.: 'Seu histórico está vazio no momento.'
Search bar placeholder: Pesquisar no histórico
Empty Search Message: Não há vídeos em seu histórico que correspondam à sua pesquisa
+ Case Sensitive Search: Pesquisa que diferencia maiúsculas de minúsculas
Settings:
# On Settings Page
Settings: 'Configurações'
@@ -1222,7 +1223,7 @@ External link opening has been disabled in the general settings: A abertura de l
externo foi desativada nas configurações gerais
Are you sure you want to open this link?: Quer mesmo abrir este link?
Downloading has completed: '"{videoTitle}" download concluído'
-Starting download: Iniciando download de "{videoTitle}"
+Starting download: Iniciando download "{videoTitle}"
Downloading failed: Falha no download "{videoTitle}"
New Window: Nova janela
Channels:
From 5a625bd9f0d7ac2e351b3b05404744dc1eae3e6b Mon Sep 17 00:00:00 2001
From: Rex_sa
Date: Fri, 16 Aug 2024 17:15:56 +0000
Subject: [PATCH 098/489] Translated using Weblate (Arabic)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/
---
static/locales/ar.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml
index 73449a889fe96..4143fcc3c6afe 100644
--- a/static/locales/ar.yaml
+++ b/static/locales/ar.yaml
@@ -251,6 +251,7 @@ History:
Your history list is currently empty.: 'قائمة سجلّك فارغة حالياً.'
Search bar placeholder: البحث في السجل
Empty Search Message: لا توجد مقاطع فيديو في السجل الخاص بك تطابق بحثك
+ Case Sensitive Search: ‘بحث مميِّز لحالة الأحرف
Settings:
# On Settings Page
Settings: 'الإعدادات'
From 02b98bee05d3c81f8af2dffcc697f7aa61ef86c1 Mon Sep 17 00:00:00 2001
From: gallegonovato
Date: Fri, 16 Aug 2024 17:06:28 +0000
Subject: [PATCH 099/489] Translated using Weblate (Spanish)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
---
static/locales/es.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/es.yaml b/static/locales/es.yaml
index df208b8b00fd7..23529fdb67b28 100644
--- a/static/locales/es.yaml
+++ b/static/locales/es.yaml
@@ -260,6 +260,7 @@ History:
Your history list is currently empty.: 'Tu historial está vacío.'
Search bar placeholder: Buscar en la historia
Empty Search Message: No hay vídeos en tu historial que coincidan con tu búsqueda
+ Case Sensitive Search: Búsqueda sensible a mayúsculas y minúsculas
Settings:
# On Settings Page
Settings: 'Ajustes'
From b4ed8738b1572901385d42e18877bcb91acaa6c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?O=C4=9Fuz=20Ersen?=
Date: Fri, 16 Aug 2024 16:43:57 +0000
Subject: [PATCH 100/489] Translated using Weblate (Turkish)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
---
static/locales/tr.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml
index eef74da97c7f0..7068693262e86 100644
--- a/static/locales/tr.yaml
+++ b/static/locales/tr.yaml
@@ -263,6 +263,7 @@ History:
Your history list is currently empty.: 'Geçmişin şu anda boş.'
Search bar placeholder: Geçmişte Ara
Empty Search Message: Geçmişinizde aramanızla eşleşen video yok
+ Case Sensitive Search: Büyük/Küçük Harfe Duyarlı Ara
Settings:
# On Settings Page
Settings: 'Ayarlar'
From 96942aa32cc2006a711e0d0137f28effd6db81fc Mon Sep 17 00:00:00 2001
From: Markus Gaugg
Date: Sat, 17 Aug 2024 03:29:55 +0000
Subject: [PATCH 101/489] Translated using Weblate (German)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
---
static/locales/de-DE.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml
index 55b5c64976f3b..63a015cbcd07c 100644
--- a/static/locales/de-DE.yaml
+++ b/static/locales/de-DE.yaml
@@ -269,6 +269,7 @@ History:
Your history list is currently empty.: Dein Verlauf ist aktuell leer.
Search bar placeholder: Im Verlauf suchen
Empty Search Message: Es gibt keine Videos in deinem Verlauf, die deiner Suche entsprechen
+ Case Sensitive Search: Groß- und Kleinschreibung bei Suche beachten
Settings:
# On Settings Page
Settings: Einstellungen
From 18e9c019478416fedc2d300bd3b638bc6bfdc179 Mon Sep 17 00:00:00 2001
From: Massimo Pissarello
Date: Sat, 17 Aug 2024 04:39:28 +0000
Subject: [PATCH 102/489] Translated using Weblate (Italian)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index a96db580247a2..a855085853555 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -261,6 +261,7 @@ History:
Search bar placeholder: Cerca nella cronologia
Empty Search Message: Non ci sono video nella tua cronologia che corrispondono alla
tua ricerca
+ Case Sensitive Search: Ricerca con distinzione tra maiuscole e minuscole
Settings:
# On Settings Page
Settings: 'Impostazioni'
From 440143961a12469868c9a27adb8b7a11170a205d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?=
=?UTF-8?q?=E5=B1=B1?=
Date: Sat, 17 Aug 2024 06:50:45 +0000
Subject: [PATCH 103/489] Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
---
static/locales/zh-CN.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml
index 3465fee6530a6..412c1b9c1483d 100644
--- a/static/locales/zh-CN.yaml
+++ b/static/locales/zh-CN.yaml
@@ -222,6 +222,7 @@ History:
Your history list is currently empty.: 您的历史记录列表目前是空的。
Search bar placeholder: 在播放历史中搜索
Empty Search Message: 历史记录中没有匹配你搜索的视频
+ Case Sensitive Search: 区分大小写的搜索
Settings:
# On Settings Page
Settings: '设置'
From 9e656469d8f2de48e8e750136d515160f96eb9ff Mon Sep 17 00:00:00 2001
From: Dragibus Noir
Date: Sat, 17 Aug 2024 06:22:12 +0000
Subject: [PATCH 104/489] Translated using Weblate (French)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
---
static/locales/fr-FR.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml
index 8486c245ecacc..42eb4387c42b5 100644
--- a/static/locales/fr-FR.yaml
+++ b/static/locales/fr-FR.yaml
@@ -271,6 +271,7 @@ History:
Search bar placeholder: "Recherche dans l'historique"
Empty Search Message: Il n'y a pas de vidéos dans votre historique qui correspondent
à votre recherche
+ Case Sensitive Search: Recherche sensible à la casse
Settings:
# On Settings Page
Settings: 'Paramètres'
From 5e1dfccf0baf767146193b46c7133bc46dcb26e7 Mon Sep 17 00:00:00 2001
From: Fjuro
Date: Sat, 17 Aug 2024 08:19:14 +0000
Subject: [PATCH 105/489] Translated using Weblate (Czech)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
---
static/locales/cs.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml
index 03e26dc0e970b..5fdb951399fca 100644
--- a/static/locales/cs.yaml
+++ b/static/locales/cs.yaml
@@ -261,6 +261,7 @@ History:
Empty Search Message: Ve vaší historii nejsou žádná videa, která by odpovídala vašemu
vyhledávání
Search bar placeholder: Hledat v historii
+ Case Sensitive Search: Vyhledávání citlivé na velikost písmen
Settings:
# On Settings Page
Settings: 'Nastavení'
From 7a4c1b4512ee8c6962a5faa81b84e846a99f9779 Mon Sep 17 00:00:00 2001
From: NEXI
Date: Sat, 17 Aug 2024 12:57:15 +0000
Subject: [PATCH 106/489] Translated using Weblate (Serbian)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/
---
static/locales/sr.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml
index 0c3670429054b..462ce581e0f3c 100644
--- a/static/locales/sr.yaml
+++ b/static/locales/sr.yaml
@@ -265,6 +265,7 @@ History:
Search bar placeholder: Претрага у историји
Empty Search Message: У вашој историји нема видео снимака који одговарају вашој
претрази
+ Case Sensitive Search: Претрага осетљива на велика и мала слова
Settings:
# On Settings Page
Settings: 'Подешавања'
From 33fe8c42e96c60021b165130b74f0e9ecd67e9ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sveinn=20=C3=AD=20Felli?=
Date: Sat, 17 Aug 2024 14:08:13 +0000
Subject: [PATCH 107/489] Translated using Weblate (Icelandic)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/is/
---
static/locales/is.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/is.yaml b/static/locales/is.yaml
index e471b1a8cd75b..4aeb1350c226b 100644
--- a/static/locales/is.yaml
+++ b/static/locales/is.yaml
@@ -266,6 +266,7 @@ History:
Search bar placeholder: Leita í áhorfsferli
Empty Search Message: Það eru engin myndskeið í ferlinum þínum sem samsvara leitinni
þinni
+ Case Sensitive Search: Leit háð há-/lágstöfum
Settings:
# On Settings Page
Settings: 'Stillingar'
From 66d577427cd69efa1d8ccc8ad30870383cef9e23 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Sun, 18 Aug 2024 02:31:42 +0200
Subject: [PATCH 108/489] Update the Invidious instances list (#5575)
---
static/invidious-instances.json | 58 ++-------------------------------
1 file changed, 3 insertions(+), 55 deletions(-)
diff --git a/static/invidious-instances.json b/static/invidious-instances.json
index a70a2b22e5abd..85e94a22aad8b 100644
--- a/static/invidious-instances.json
+++ b/static/invidious-instances.json
@@ -1,80 +1,28 @@
[
{
- "url": "https://invidious.fdn.fr",
+ "url": "https://iv.ggtyler.dev",
"cors": true
},
{
- "url": "https://inv.tux.pizza",
- "cors": true
- },
- {
- "url": "https://invidious.flokinet.to",
- "cors": true
- },
- {
- "url": "https://invidious.privacydev.net",
+ "url": "https://invidious.nerdvpn.de",
"cors": true
},
{
"url": "https://inv.nadeko.net",
- "cors": true
- },
- {
- "url": "https://invidious.protokolla.fi",
- "cors": true
- },
- {
- "url": "https://invidious.private.coffee",
- "cors": true
- },
- {
- "url": "https://yt.artemislena.eu",
- "cors": true
+ "cors": false
},
{
"url": "https://invidious.jing.rocks",
"cors": true
},
- {
- "url": "https://invidious.drgns.space",
- "cors": true
- },
- {
- "url": "https://inv.us.projectsegfau.lt",
- "cors": true
- },
{
"url": "https://invidious.perennialte.ch",
"cors": true
},
- {
- "url": "https://inv.in.projectsegfau.lt",
- "cors": true
- },
- {
- "url": "https://invidious.materialio.us",
- "cors": false
- },
- {
- "url": "https://iv.datura.network",
- "cors": true
- },
{
"url": "https://invidious.reallyaweso.me",
"cors": false
},
- {
- "url": "https://yt.drgnz.club",
- "cors": true
- },
- {
- "url": "https://invidious.incogniweb.net",
- "cors": true
- },
- {
- "url": "https://iv.melmac.space",
- "cors": true
- },
{
"url": "https://invidious.privacyredirect.com",
"cors": true
From 060ebe870051db111732e782b0d91f139a51ee96 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Sun, 18 Aug 2024 12:37:31 +0000
Subject: [PATCH 109/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index bf45b914c18d8..487f1edcc6249 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -224,6 +224,7 @@ History:
Your history list is currently empty.: 現在、履歴リストは空です。
Search bar placeholder: 履歴の検索
Empty Search Message: 検索条件に一致する動画は履歴にありません
+ Case Sensitive Search: 大文字小文字を区別した検索
Settings:
# On Settings Page
Settings: '設定'
From c07d341c83dc4b06bf7e6ec719fb0ac78cbbcd1e Mon Sep 17 00:00:00 2001
From: Andi Chandler
Date: Sun, 18 Aug 2024 12:11:08 +0000
Subject: [PATCH 110/489] Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
---
static/locales/en_GB.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml
index 63c1a006bd201..ae4bbf9366aee 100644
--- a/static/locales/en_GB.yaml
+++ b/static/locales/en_GB.yaml
@@ -258,6 +258,7 @@ History:
Your history list is currently empty.: 'Your history list is currently empty.'
Search bar placeholder: Search in History
Empty Search Message: There are no videos in your history that match your search
+ Case Sensitive Search: Case Sensitive Search
Settings:
# On Settings Page
Settings: 'Settings'
From 4d133fc9228364333e8b9f8b4750767bb3dd362d Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Sun, 18 Aug 2024 15:25:28 +0000
Subject: [PATCH 111/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 487f1edcc6249..1290427b9c16d 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -452,7 +452,7 @@ Settings:
Are you sure you want to remove all your playlists?: すべての再生リストを削除してもよろしいですか?
Data Settings:
How do I import my subscriptions?: 登録チャンネルをインポートするには?
- Unknown data key: 不明なデータ キー
+ Unknown data key: 不明なデータキー
Unable to write file: ファイルに書き込めません
Unable to read file: ファイルを読み込めません
All watched history has been successfully exported: すべての視聴履歴を正常にエクスポートしました
@@ -547,8 +547,8 @@ Settings:
Country: 国名
Ip: IP
Your Info: あなたの情報
- Test Proxy: テスト プロキシ
- Clicking on Test Proxy will send a request to: テスト プロキシをクリックして、送信するリクエスト先は
+ Test Proxy: プロキシのテスト
+ Clicking on Test Proxy will send a request to: プロキシのテストをクリックして、送信するリクエスト先は
Proxy Port Number: プロキシのポート番号
Proxy Host: プロキシのホスト
Proxy Protocol: プロキシのプロトコル
@@ -561,10 +561,10 @@ Settings:
Enable SponsorBlock: スポンサーブロックの有効化
SponsorBlock Settings: スポンサーブロックの設定
Skip Options:
- Skip Option: オプションのスキップ
+ Skip Option: スキップの設定
Auto Skip: 自動スキップ
- Show In Seek Bar: 動画の進行バーの非表示
- Prompt To Skip: ログイン プロンプトのスキップ
+ Show In Seek Bar: 進行バーに表示
+ Prompt To Skip: プロンプトをスキップ
Do Nothing: 何もしない
Category Color: カテゴリの色
UseDeArrowTitles: 動画タイトルに DeArrow を使用する
@@ -589,7 +589,7 @@ Settings:
Open in web browser: Web ブラウザで開く
Download in app: アプリでダウンロード
Parental Control Settings:
- Hide Search Bar: 検索ボックスの非表示
+ Hide Search Bar: 検索バーの非表示
Parental Control Settings: 制限付きモードの設定
Show Family Friendly Only: ファミリー向けのみ表示
Hide Unsubscribe Button: 登録解除ボタンの非表示
@@ -960,15 +960,15 @@ Profile:
'{profile} is now the active profile': '{profile} プロファイルに変更しました'
Your default profile has been changed to your primary profile: 起動時のプロファイルを、上位のプロファイルに変更しました
Removed {profile} from your profiles: プロファイルから {profile} を削除しました
- Your default profile has been set to {profile}: 起動時のプロファイルを {profile} に設定しました
+ Your default profile has been set to {profile}: 標準プロファイルが{profile}に設定されました
Profile has been updated: プロファイルを更新しました
Profile has been created: プロファイルを作成しました
Your profile name cannot be empty: プロファイル名は空にできません
- Profile could not be found: プロファイルはありません
+ Profile could not be found: プロファイルが見つかりません
All subscriptions will also be deleted.: すべての登録チャンネルも削除されます。
Are you sure you want to delete this profile?: このプロファイルを削除しますか?
Delete Profile: プロファイルの削除
- Make Default Profile: 起動時のプロファイルに設定
+ Make Default Profile: 標準のプロファイルに設定
Create Profile: プロファイルの作成
Update Profile: プロファイルの更新
Profile Preview: プロファイルのプレビュー
@@ -986,11 +986,11 @@ Profile:
Select All: すべて選択
Other Channels: ほかのチャンネル
Subscription List: 登録チャンネル一覧
- '{number} selected': '{number} 項目選択'
+ '{number} selected': '{number} 件選択済み'
Add Selected To Profile: 選択項目をプロファイルに追加
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
- : これはメインのプロファイルです。選択したチャンネルを削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
+ : これはあなたのメインのプロファイルです。選択したチャンネルを本当に削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
Profile Filter: プロファイルのフィルター
Profile Settings: プロファイル設定
Toggle Profile List: プロファイル一覧の切替
From 281985eb2598332928bc5ef337c11bc107094456 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?=
Date: Sun, 18 Aug 2024 15:15:01 +0000
Subject: [PATCH 112/489] Translated using Weblate (Polish)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
---
static/locales/pl.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml
index 2aed8a2eae406..c0a425607f809 100644
--- a/static/locales/pl.yaml
+++ b/static/locales/pl.yaml
@@ -258,6 +258,7 @@ History:
Your history list is currently empty.: 'Twoja historia jest obecnie pusta.'
Search bar placeholder: Przeszukaj historię
Empty Search Message: W historii nie ma filmów, które pasowałyby do Twojego zapytania
+ Case Sensitive Search: Rozróżniaj wielkość liter
Settings:
# On Settings Page
Settings: 'Ustawienia'
From 19afdf982b534023e97701d3d0dd3b822ce3ae80 Mon Sep 17 00:00:00 2001
From: Markus Gaugg
Date: Sun, 18 Aug 2024 18:20:53 +0000
Subject: [PATCH 113/489] Translated using Weblate (German)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
---
static/locales/de-DE.yaml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml
index 63a015cbcd07c..2972c8e1b0045 100644
--- a/static/locales/de-DE.yaml
+++ b/static/locales/de-DE.yaml
@@ -269,7 +269,7 @@ History:
Your history list is currently empty.: Dein Verlauf ist aktuell leer.
Search bar placeholder: Im Verlauf suchen
Empty Search Message: Es gibt keine Videos in deinem Verlauf, die deiner Suche entsprechen
- Case Sensitive Search: Groß- und Kleinschreibung bei Suche beachten
+ Case Sensitive Search: Groß- und Kleinschreibung bei der Suche beachten
Settings:
# On Settings Page
Settings: Einstellungen
@@ -278,7 +278,7 @@ Settings:
Fallback to Non-Preferred Backend on Failure: Falle zu nicht-präferiertem System
bei Fehlschlag zurück
Enable Search Suggestions: Suchvorschläge aktivieren
- Default Landing Page: Standard-Landeseite
+ Default Landing Page: Standard Startseite
Locale Preference: Spracheinstellung
Preferred API Backend:
@@ -464,7 +464,7 @@ Settings:
Fetch Automatically: Feed automatisch abrufen
Only Show Latest Video for Each Channel: Nur das neueste Video für jeden Kanal
anzeigen
- Confirm Before Unsubscribing: Unbeabsichtigtes Deabonnieren vermeiden
+ Confirm Before Unsubscribing: Unbeabsichtigtes Deabonnieren verhindern
Advanced Settings:
Advanced Settings: Erweiterte Einstellungen
Enable Debug Mode (Prints data to the console): Aktiviere Debug-Modus (Konsolenausgabe
@@ -680,7 +680,7 @@ Settings:
Parental Control Settings:
Parental Control Settings: Einstellungen der Kindersicherung
Hide Unsubscribe Button: Schaltfläche zum Entfernen des Abos ausblenden
- Show Family Friendly Only: Nur familienfreundlich anzeigen
+ Show Family Friendly Only: Nur familienfreundliche Inhalte anzeigen
Hide Search Bar: Suchleiste ausblenden
Experimental Settings:
Experimental Settings: Experimentelle Einstellungen
@@ -1117,7 +1117,7 @@ Profile:
Color Picker: Farbauswahl
Edit Profile: Profil bearbeiten
Create New Profile: Neues Profil erstellen
- Profile Manager: Profilverwalter
+ Profile Manager: Profilverwaltung
All Channels: Alle Kanäle
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: Bist
du sicher, dass du die ausgewählten Kanäle löschen möchtest? Dadurch wird der
@@ -1266,7 +1266,7 @@ Channels:
Channels: Kanäle
Title: Kanal-Liste
Search bar placeholder: Kanäle durchsuchen
- Count: '{number} Kanal/Kanäle gefunden.'
+ Count: '{number} Kanal/Kanäle gefunden'
Empty: Deine Kanal-Liste ist derzeit leer.
Unsubscribe: Abo entfernen
Unsubscribed: '{channelName} wurde aus deinen Abos entfernt'
From bc91c41bfe15cb83a551cd75e46398d2f707e780 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 07:55:31 -0400
Subject: [PATCH 114/489] Bump electron from 31.3.1 to 31.4.0 (#5584)
Bumps [electron](https://github.com/electron/electron) from 31.3.1 to 31.4.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v31.3.1...v31.4.0)
---
updated-dependencies:
- dependency-name: electron
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index c0484018ed485..1e60d589baf79 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
- "electron": "^31.3.1",
+ "electron": "^31.4.0",
"electron-builder": "^24.13.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/yarn.lock b/yarn.lock
index 736028bc80b49..32bb8be35034a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3496,10 +3496,10 @@ electron-to-chromium@^1.4.820:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
-electron@^31.3.1:
- version "31.3.1"
- resolved "https://registry.yarnpkg.com/electron/-/electron-31.3.1.tgz#de5f21f10db1ba0568e0cdd7ae76ec40a4b800c3"
- integrity sha512-9fiuWlRhBfygtcT+auRd/WdBK/f8LZZcrpx0RjpXhH2DPTP/PfnkC4JB1PW55qCbGbh4wAgkYbf4ExIag8oGCA==
+electron@^31.4.0:
+ version "31.4.0"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.4.0.tgz#fd55fd882117b09fd68b2d182c8fda2dbb7ef454"
+ integrity sha512-YTwKoAA+nrJMlI1TTHnIXLYWoQLKnhbkz0qxZcI7Hadcy0UaFMFs9xzwvH2MnrRpVJy7RKo49kVGuvSdRl8zMA==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
From 65064aeb19205e628c39149f47d6b86cf42b397e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 07:56:06 -0400
Subject: [PATCH 115/489] Bump stylelint from 16.8.1 to 16.8.2 in the stylelint
group (#5583)
Bumps the stylelint group with 1 update: [stylelint](https://github.com/stylelint/stylelint).
Updates `stylelint` from 16.8.1 to 16.8.2
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.8.1...16.8.2)
---
updated-dependencies:
- dependency-name: stylelint
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: stylelint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 79 +++++++++++++++++++++++++++++++---------------------
2 files changed, 48 insertions(+), 33 deletions(-)
diff --git a/package.json b/package.json
index 1e60d589baf79..97a10444a7558 100644
--- a/package.json
+++ b/package.json
@@ -118,7 +118,7 @@
"rimraf": "^6.0.1",
"sass": "^1.77.8",
"sass-loader": "^16.0.0",
- "stylelint": "^16.8.1",
+ "stylelint": "^16.8.2",
"stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
"stylelint-high-performance-animation": "^1.10.0",
diff --git a/yarn.lock b/yarn.lock
index 32bb8be35034a..739a5ed3b6f6b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1049,25 +1049,40 @@
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
-"@csstools/css-parser-algorithms@^2.6.1", "@csstools/css-parser-algorithms@^2.7.1":
+"@csstools/css-parser-algorithms@^2.6.1":
version "2.7.1"
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==
-"@csstools/css-tokenizer@^2.2.4", "@csstools/css-tokenizer@^2.4.1":
+"@csstools/css-parser-algorithms@^3.0.0":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz#f14ade63bae5f6025ac85c7d03fe47a7ca0e58af"
+ integrity sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==
+
+"@csstools/css-tokenizer@^2.2.4":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8"
integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==
-"@csstools/media-query-list-parser@^2.1.13", "@csstools/media-query-list-parser@^2.1.9":
+"@csstools/css-tokenizer@^3.0.0":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz#9dd9b10084f3011290f96789598091e5bcb3c29a"
+ integrity sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==
+
+"@csstools/media-query-list-parser@^2.1.9":
version "2.1.13"
resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5"
integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==
-"@csstools/selector-specificity@^3.1.1":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe"
- integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==
+"@csstools/media-query-list-parser@^3.0.0":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz#9474e08e6d7767cf68c56bf1581b59d203360cb0"
+ integrity sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==
+
+"@csstools/selector-specificity@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz#7dfccb9df5499e627e7bfdbb4021a06813a45dba"
+ integrity sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==
"@develar/schema-utils@~2.6.5":
version "2.6.5"
@@ -4984,10 +4999,10 @@ 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:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
- integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+ integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
immediate@~3.0.5:
version "3.0.6"
@@ -6780,10 +6795,10 @@ postcss-reduce-transforms@^7.0.0:
dependencies:
postcss-value-parser "^4.2.0"
-postcss-resolve-nested-selector@^0.1.1, postcss-resolve-nested-selector@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz#0068767902fb40f0e6cd7b24faee4fa4bc14a5da"
- integrity sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==
+postcss-resolve-nested-selector@^0.1.1, postcss-resolve-nested-selector@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#3d84dec809f34de020372c41b039956966896686"
+ integrity sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==
postcss-safe-parser@^7.0.0:
version "7.0.0"
@@ -6795,10 +6810,10 @@ postcss-scss@^4.0.9:
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685"
integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==
-postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.1:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
- integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
+postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
+ integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -6831,7 +6846,7 @@ postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.40, postcss@^8.4.41:
+postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.41:
version "8.4.41"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
@@ -7939,15 +7954,15 @@ stylelint-use-logical-spec@^5.0.1:
resolved "https://registry.yarnpkg.com/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#d5aa254d615d373f18214297c0b49a03a6ca5980"
integrity sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==
-stylelint@^16.4.0, stylelint@^16.8.1:
- version "16.8.1"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.8.1.tgz#7d4b2d7922771dd0514446a66f04e954f1dfa444"
- integrity sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==
+stylelint@^16.4.0, stylelint@^16.8.2:
+ version "16.8.2"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.8.2.tgz#7fda18b919a36e206e897417d4720baceb3af122"
+ integrity sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==
dependencies:
- "@csstools/css-parser-algorithms" "^2.7.1"
- "@csstools/css-tokenizer" "^2.4.1"
- "@csstools/media-query-list-parser" "^2.1.13"
- "@csstools/selector-specificity" "^3.1.1"
+ "@csstools/css-parser-algorithms" "^3.0.0"
+ "@csstools/css-tokenizer" "^3.0.0"
+ "@csstools/media-query-list-parser" "^3.0.0"
+ "@csstools/selector-specificity" "^4.0.0"
"@dual-bundle/import-meta-resolve" "^4.1.0"
balanced-match "^2.0.0"
colord "^2.9.3"
@@ -7962,7 +7977,7 @@ stylelint@^16.4.0, stylelint@^16.8.1:
globby "^11.1.0"
globjoin "^0.1.4"
html-tags "^3.3.1"
- ignore "^5.3.1"
+ ignore "^5.3.2"
imurmurhash "^0.1.4"
is-plain-object "^5.0.0"
known-css-properties "^0.34.0"
@@ -7971,10 +7986,10 @@ stylelint@^16.4.0, stylelint@^16.8.1:
micromatch "^4.0.7"
normalize-path "^3.0.0"
picocolors "^1.0.1"
- postcss "^8.4.40"
- postcss-resolve-nested-selector "^0.1.4"
+ postcss "^8.4.41"
+ postcss-resolve-nested-selector "^0.1.6"
postcss-safe-parser "^7.0.0"
- postcss-selector-parser "^6.1.1"
+ postcss-selector-parser "^6.1.2"
postcss-value-parser "^4.2.0"
resolve-from "^5.0.0"
string-width "^4.2.3"
From 7cf57e27d395f71f41ec82e6d219f291a21d9b51 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Aug 2024 07:56:37 -0400
Subject: [PATCH 116/489] Bump lefthook from 1.7.12 to 1.7.14 (#5585)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.7.12 to 1.7.14.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.7.12...v1.7.14)
---
updated-dependencies:
- dependency-name: lefthook
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 116 ++++++++++++++++++++++++++++-----------------------
2 files changed, 65 insertions(+), 53 deletions(-)
diff --git a/package.json b/package.json
index 97a10444a7558..287b99d2d7030 100644
--- a/package.json
+++ b/package.json
@@ -109,7 +109,7 @@
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.0",
- "lefthook": "^1.7.12",
+ "lefthook": "^1.7.14",
"mini-css-extract-plugin": "^2.9.0",
"npm-run-all2": "^6.2.2",
"postcss": "^8.4.41",
diff --git a/yarn.lock b/yarn.lock
index 739a5ed3b6f6b..881c38638b4f1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5651,59 +5651,71 @@ 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.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.12.tgz#8bb3a6a5816ccbfb46b3060c1dfa0f2eeb39f817"
- integrity sha512-CjbV968FMFJWBe/5UA4H3DiKH5TFCh0449pfr9NTt14r05FIg6YzLf5h97CYlDz3b0Bx8Iz8ZqoguE1dFrYpsg==
-
-lefthook-darwin-x64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.12.tgz#ad8274f794275f931469e19c2735335e6ca1626c"
- integrity sha512-EEwh5zU65MwfwkGOpBW7rd0Ldg7Ef17VoFUQ/pr408acLq7BvNOrrFga/RNUvB5Hsaa7eNjBbv0AG02qE3X/ZA==
-
-lefthook-freebsd-arm64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.12.tgz#0109267593f94a6b6598dc9b947cf6e11e38934e"
- integrity sha512-BznKfuFw9lWhqJFrI+ci2EyS5vvfEWTcsISTq0o4a/kR058stK/6B+i+XnTHrHsiOjQbLJ42wcFgvUEFmio6yw==
-
-lefthook-freebsd-x64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.12.tgz#7d4952922026fdb76f3dbf98b8af13cbb88c62e5"
- integrity sha512-9+I0xakvqpAIxhPb5ON6a5v/Iyl+gahJi+ogoEDNqlg3zj4otZspOvdiAsLWBAaXI+yFQftOHBM8940Ki5RB0A==
-
-lefthook-linux-arm64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.12.tgz#aea6714e3820a6ef73a21b85bcea0d2dff64b8be"
- integrity sha512-FC+4cyz2CUBVL4BnDwnAzQPdBHM80O2TM53qoT1R3sn9LbWwcpnwdXi86NhVD0I7+vKg6rGUKgOQMTZfSe+sDg==
-
-lefthook-linux-x64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.12.tgz#207cb3c1d6182fec4cf457e7ffdcae99d25fcc8e"
- integrity sha512-BH9peuKjx2ikOxjnohdAH4ocRfC2NZQTXrJXsAdPOFja1iNHzBwpZe+/x+g8fO8a3WVrmBWad3814Hb/oGCICA==
-
-lefthook-windows-arm64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.12.tgz#8e7434ff30d15bae5e4bae57d01f8e37f01ec452"
- integrity sha512-GlCNSpXAiBcCQ8jtcFGxkxGzqnsPzGWbx9HTYO7Xz1QjW56de311rdntyVIRl48nQ+Q76fVyEKAtsyQczvRN6w==
-
-lefthook-windows-x64@1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.12.tgz#fa9880a4fbb526095043066aa7adeeee1b153030"
- integrity sha512-9GeeQVUX7R8irJ5mf0Zzxn74ZTpy1LHqIGPRAmn9ELtkVdne/DGpCcGyKGVoJFbMInEaeDHGOnVjeQ9kgWB8Fw==
-
-lefthook@^1.7.12:
- version "1.7.12"
- resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.12.tgz#031be9222c23d1a12bd835ed2ae0415149b69994"
- integrity sha512-kZQQAeL4JZbsADqzK5YMP7M0aadGVDha7oo+4exA5FeQbgpmnDq+ejbkdfLOdo9uy7FSY82akmbxAiXq+V4fbg==
+lefthook-darwin-arm64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.7.14.tgz#d8f885ce26f1c997113b473b840aafb5edc77294"
+ integrity sha512-3hNr04A8DSYZk0RBTdu8D/kkE3FHiNnexAEvuFOqLuf3EQhrrX1wxclGO0+tIk3s7nyh+iqpV69Xd+cb4Fnvpw==
+
+lefthook-darwin-x64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.7.14.tgz#deeaf9a8ae39de3e1f8acd1969318c08cfd786d6"
+ integrity sha512-cXVsxTS2IRKKRyYFEMjAxf0a/31M1PkiNAjlJPXQPoAxxC1rbsvkxWL8vXhH4P0AL18zSYVBf9aTktYArgQGuA==
+
+lefthook-freebsd-arm64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.7.14.tgz#c406cae46a9ae4c4c337fbeb7c1c09ac22ea61b5"
+ integrity sha512-rhx2ZkbWD6SkOXLc5/xyN1fu0uL9MLYBYKKg5T0rLRVwqqr9aYKZ+1Rru/5oL8utH1qkQyiwQkcjnKkyHwSjPg==
+
+lefthook-freebsd-x64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.7.14.tgz#409a4c63932b6f1173a73f10fbcc3c3cff06f058"
+ integrity sha512-WeVPDm7JB1Crchc7OQ3uLiRfLlhwwX3N2662DPguMresps2r79dUO97LhHMzd+l1RKIqZIgnU+j5fKFI+cmw4w==
+
+lefthook-linux-arm64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.7.14.tgz#943d55e3208bcb0273383aa6b95eb92bed9ca295"
+ integrity sha512-IUvxJBfLDVComNc1Djk4VYUJsSAtdwfTvwpNxfaG2qb31VNvF6PPdp43bgpgqzV8O0KDCMm/sn0hlZ00GTuy2A==
+
+lefthook-linux-x64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.7.14.tgz#7468b70eff53b75281d364c10dbc8806a19cfa49"
+ integrity sha512-jCNjVk+9iaFSwlFH4RM7SI05tpdty0vPzSTsABXUQwdmKdt1hPWhnUsEhCU03ik33UmpfmXUK9pLFgStT7W5rw==
+
+lefthook-openbsd-arm64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.7.14.tgz#19d1b7c115e032fc9bd64fd49ae1b7bbcfeec245"
+ integrity sha512-Mq5GgjzDMiFin+Ucm52nizvvDQM1o+MnL/P+FDbBq253BIJGDJK+qEuQBgEQndE9bUyAP4qiHb+R6jz5fbpAlA==
+
+lefthook-openbsd-x64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.7.14.tgz#c9c49b27d725a80545eead9210b06fc1c5826256"
+ integrity sha512-enbPte9MAYU2JHkcvUBRJrXI6JMVcQqJHN+F8yKOJLFBnthoR0ZUuSTzqAMOivj/wgncHkYPqOWIo1UfB+HpGw==
+
+lefthook-windows-arm64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.7.14.tgz#fc17ce5362fb0a5bc25a239ff8a3e464f932dbe0"
+ integrity sha512-M9QbTs+Je0SRKC2c/0X8OQsme6glFrKxQoxWMFCN02S6nNLiHqP4vsHphJFU+wnAwv4KE8I1YKT5iMxde0Ejlg==
+
+lefthook-windows-x64@1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.7.14.tgz#fa3596570e759f195bf1b8b8290f654de98b37cf"
+ integrity sha512-40Mx+a44kPZUF/AXV45EIgw03FANTXMFDBR1Ib8qYbSaf1cWqJtfeQs9R5Ea0EdqxXkGprzwZ+yUFFjjfOFIoQ==
+
+lefthook@^1.7.14:
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.7.14.tgz#d8f8090d083e782f4eac59007d0a1f5109541531"
+ integrity sha512-GIMJm3HPksrHyXgu9OYX3r9QKM10hxoeiI45+7KhJKvAWChDtGqMZ5EPQuTMVsXu5IwggQL9QJLhDfk54WOXEw==
optionalDependencies:
- lefthook-darwin-arm64 "1.7.12"
- lefthook-darwin-x64 "1.7.12"
- lefthook-freebsd-arm64 "1.7.12"
- lefthook-freebsd-x64 "1.7.12"
- lefthook-linux-arm64 "1.7.12"
- lefthook-linux-x64 "1.7.12"
- lefthook-windows-arm64 "1.7.12"
- lefthook-windows-x64 "1.7.12"
+ lefthook-darwin-arm64 "1.7.14"
+ lefthook-darwin-x64 "1.7.14"
+ lefthook-freebsd-arm64 "1.7.14"
+ lefthook-freebsd-x64 "1.7.14"
+ lefthook-linux-arm64 "1.7.14"
+ lefthook-linux-x64 "1.7.14"
+ lefthook-openbsd-arm64 "1.7.14"
+ lefthook-openbsd-x64 "1.7.14"
+ lefthook-windows-arm64 "1.7.14"
+ lefthook-windows-x64 "1.7.14"
levn@^0.4.1:
version "0.4.1"
From 7ab1baaf86a382e05adb99ec44731446f6a6bee1 Mon Sep 17 00:00:00 2001
From: summoner001
Date: Mon, 19 Aug 2024 11:14:18 +0000
Subject: [PATCH 117/489] Translated using Weblate (Hungarian)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
---
static/locales/hu.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml
index 44f58655838ab..44863449780f6 100644
--- a/static/locales/hu.yaml
+++ b/static/locales/hu.yaml
@@ -271,6 +271,7 @@ History:
Search bar placeholder: Keresés az előzmények között
Empty Search Message: Nincsenek olyan videók az előzmények között, amelyek megfelelnek
a keresésnek
+ Case Sensitive Search: Kis- nagybetű érzéken keresés
Settings:
# On Settings Page
Settings: 'Beállítások'
From f781a38faa16b61c263901ae102a224a35cc7f17 Mon Sep 17 00:00:00 2001
From: Milo Ivir
Date: Mon, 19 Aug 2024 13:11:48 +0000
Subject: [PATCH 118/489] Translated using Weblate (Croatian)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/
---
static/locales/hr.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml
index 8caa0352a32b3..660b6285532e9 100644
--- a/static/locales/hr.yaml
+++ b/static/locales/hr.yaml
@@ -252,6 +252,7 @@ History:
Search bar placeholder: Pretraži povijest
Empty Search Message: U ovoj zbirci nema videa u tvojoj povijesti koji odgovaraju
tvojem pretraživanju
+ Case Sensitive Search: Razlikuj velika i mala slova tijekom pretraživanja
Settings:
# On Settings Page
Settings: 'Postavke'
From e5356eecbd1e0a58ddb1da8adaec8a6051cb9993 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 19 Aug 2024 22:18:41 +0200
Subject: [PATCH 119/489] Use randomArrayItem helper in more places to reduce
duplicate code (#5576)
---
.../components/ft-age-restricted/ft-age-restricted.js | 4 ++--
src/renderer/components/general-settings/general-settings.js | 5 ++---
src/renderer/store/modules/invidious.js | 5 ++---
3 files changed, 6 insertions(+), 8 deletions(-)
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 112d963f76774..571c1b7112e44 100644
--- a/src/renderer/components/ft-age-restricted/ft-age-restricted.js
+++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.js
@@ -1,4 +1,5 @@
import { defineComponent } from 'vue'
+import { randomArrayItem } from '../../helpers/utils'
export default defineComponent({
name: 'FtAgeRestricted',
@@ -14,8 +15,7 @@ export default defineComponent({
},
computed: {
emoji: function () {
- const emojis = ['😵', '😦', '🙁', '☹️', '😦', '🤫', '😕']
- return emojis[Math.floor(Math.random() * emojis.length)]
+ return randomArrayItem(['😵', '😦', '🙁', '☹️', '😦', '🤫', '😕'])
},
restrictedMessage: function () {
diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js
index a37332ed03c9d..64b53ff387ca6 100644
--- a/src/renderer/components/general-settings/general-settings.js
+++ b/src/renderer/components/general-settings/general-settings.js
@@ -9,7 +9,7 @@ import FtButton from '../ft-button/ft-button.vue'
import debounce from 'lodash.debounce'
import allLocales from '../../../../static/locales/activeLocales.json'
-import { showToast } from '../../helpers/utils'
+import { randomArrayItem, showToast } from '../../helpers/utils'
import { translateWindowTitle } from '../../helpers/strings'
export default defineComponent({
@@ -214,8 +214,7 @@ export default defineComponent({
// synchronous), unfortunately, we have to copy/paste the logic
// from the `setRandomCurrentInvidiousInstance` action onto here
const instanceList = this.invidiousInstancesList
- const randomIndex = Math.floor(Math.random() * instanceList.length)
- this.setCurrentInvidiousInstance(instanceList[randomIndex])
+ this.setCurrentInvidiousInstance(randomArrayItem(instanceList))
}
},
methods: {
diff --git a/src/renderer/store/modules/invidious.js b/src/renderer/store/modules/invidious.js
index 00680c39000f0..2116b0085cec9 100644
--- a/src/renderer/store/modules/invidious.js
+++ b/src/renderer/store/modules/invidious.js
@@ -1,4 +1,4 @@
-import { createWebURL, fetchWithTimeout } from '../../helpers/utils'
+import { createWebURL, fetchWithTimeout, randomArrayItem } from '../../helpers/utils'
const state = {
currentInvidiousInstance: '',
@@ -60,8 +60,7 @@ const actions = {
setRandomCurrentInvidiousInstance({ commit, state }) {
const instanceList = state.invidiousInstancesList
- const randomIndex = Math.floor(Math.random() * instanceList.length)
- commit('setCurrentInvidiousInstance', instanceList[randomIndex])
+ commit('setCurrentInvidiousInstance', randomArrayItem(instanceList))
}
}
From 20096bfe72f50ccd2daca1c0de4fa9920c23dc95 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Tue, 20 Aug 2024 02:56:59 +0000
Subject: [PATCH 120/489] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
---
static/locales/zh-TW.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml
index 304b36f4a3027..3ce06ca373f7b 100644
--- a/static/locales/zh-TW.yaml
+++ b/static/locales/zh-TW.yaml
@@ -222,6 +222,7 @@ History:
Your history list is currently empty.: 尚未觀賞過任何影片,因此觀看紀錄清單為空。
Search bar placeholder: 在觀看紀錄中搜尋
Empty Search Message: 您的歷史紀錄中沒有與您的搜尋相符的影片
+ Case Sensitive Search: 區分大小寫的搜尋
Settings:
# On Settings Page
Settings: '設定'
From b696b5f042508d6a77102370b6e30cbcc6f5e303 Mon Sep 17 00:00:00 2001
From: Philip Goto
Date: Tue, 20 Aug 2024 06:20:42 +0000
Subject: [PATCH 121/489] Translated using Weblate (Dutch)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/
---
static/locales/nl.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml
index 0785ef311f9b4..619ac6fc94e1f 100644
--- a/static/locales/nl.yaml
+++ b/static/locales/nl.yaml
@@ -260,6 +260,7 @@ History:
Your history list is currently empty.: 'Uw geschiedenis is momenteel leeg.'
Search bar placeholder: In geschiedenis zoeken
Empty Search Message: Geschiedenis bevat geen video's die overeenkomen met de zoekopdracht
+ Case Sensitive Search: Hoofdlettergevoelige zoekopdracht
Settings:
# On Settings Page
Settings: 'Instellingen'
From d12883a4faf38bd9e504842fb2ee74e67a87b17b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?=
Date: Tue, 20 Aug 2024 06:58:24 +0000
Subject: [PATCH 122/489] Translated using Weblate (Estonian)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
---
static/locales/et.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/et.yaml b/static/locales/et.yaml
index f2e9d5c6a7481..482cd17b77ec4 100644
--- a/static/locales/et.yaml
+++ b/static/locales/et.yaml
@@ -259,6 +259,7 @@ History:
Your history list is currently empty.: 'Sinu ajalugu on hetkel tühi.'
Search bar placeholder: Otsi ajaloost
Empty Search Message: Sinu ajaloos pole sinu otsingule vastavaid videosid
+ Case Sensitive Search: Tõstutundlik otsing
Settings:
# On Settings Page
Settings: 'Seadistused'
From 0438fdc68a8f4a529286042de687d910265f84d8 Mon Sep 17 00:00:00 2001
From: Renko
Date: Thu, 22 Aug 2024 17:57:09 +0000
Subject: [PATCH 123/489] Translated using Weblate (Romanian)
Currently translated at 93.9% (816 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/
---
static/locales/ro.yaml | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml
index 74954dce58984..42a7ed4e1ab01 100644
--- a/static/locales/ro.yaml
+++ b/static/locales/ro.yaml
@@ -173,6 +173,8 @@ User Playlists:
Toast:
You haven't selected any playlist yet.: Nu ați selectat încă nicio listă de
redare.
+ "{videoCount} video(s) added to 1 playlist": 1 videoclip adăugat la 1 listă
+ de redare| {videoCount} videoclupuri adăugate la 1 listă de redare
N playlists selected: '{playlistCount} Selectat'
"{videoCount}/{totalVideoCount} Videos Already Added": '{videoCount}/{totalVideoCount}
Videoclipuri deja adăugate'
@@ -238,6 +240,10 @@ User Playlists:
acestei liste de redare.
Search for Videos: Căutați videoclipuri
Remove Duplicate Videos: Șterge videoclipurile duplicate
+ Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Sunteți
+ sigur(ă) că doriți să ștergeți 1 videoclip vizualizat din această lista de redare?
+ Această acțiune este definitivă. | Sunteți sigur(ă) că doriți să ștergeți {playlistItemCount}
+ videoclip vizualizat din această lista de redare? Această acțiune este definitivă.
History:
# On History Page
History: 'Istoric'
@@ -293,6 +299,7 @@ Settings:
System Default: Prestabilită de sistem
Auto Load Next Page:
Label: Încarcă următoarea pagină automat
+ Tooltip: Încarcă automat pagini și comentarii suplimentare.
Theme Settings:
Theme Settings: 'Setări temei'
Match Top Bar with Main Color: 'Potriviți bara de sus cu culoarea principală'
@@ -306,6 +313,8 @@ Settings:
Catppuccin Mocha: Catppuccin Mocha
Pastel Pink: Pastel Roz
Hot Pink: Hot Roz
+ Solarized Light: Lumină solarizată
+ Solarized Dark: Întuneric solarizat
Main Color Theme:
Main Color Theme: 'Culoarea principală a temei'
Red: 'Roşu'
@@ -345,6 +354,13 @@ Settings:
Catppuccin Mocha Maroon: Catppuccin Mocha Maro
Catppuccin Mocha Peach: Catppuccin Mocha Piersică
Catppuccin Mocha Rosewater: Catppuccin Mocha Apă de Trandafiri
+ Solarized Violet: Violet solarizat
+ Solarized Cyan: Turcoaz solarizat
+ Solarized Red: Roșu solarizat
+ Solarized Green: Verde solarizat
+ Solarized Yellow: Galben solarizat
+ Solarized Blue: Albastru solarizat
+ Solarized Orange: Portocaliu solarizat
Secondary Color Theme: 'Culoarea secundară a temei'
#* Main Color Theme
UI Scale: Scala UI
@@ -426,12 +442,19 @@ Settings:
nu poate fi anulat.'
Save Watched Videos With Last Viewed Playlist: Salvați videoclipurile vizionate
cu ultima listă de redare vizualizată
+ Are you sure you want to remove all your playlists?: Sunteți sigur(ă) că doriț
+ să ștergeți toate listele dvs. de redare?
+ Remove All Playlists: Șterge toate listele de redare
+ All playlists have been removed: Toate listele de redare au fost șterse
Subscription Settings:
Subscription Settings: 'Setări de abonament'
Hide Videos on Watch: 'Ascunde videoclipurile la vizionare'
Fetch Feeds from RSS: 'Preluare de fluxuri din RSS'
Manage Subscriptions: 'Gestionați abonamentele'
Fetch Automatically: Preluați feedul automat
+ Confirm Before Unsubscribing: Confirmă înainte de dezabonare
+ Only Show Latest Video for Each Channel: Arată doar cele mai noi videoclipuri
+ pentru fiecare canal
Data Settings:
Data Settings: 'Setări de date'
Select Import Type: 'Selectează tipul de import'
@@ -596,6 +619,7 @@ Settings:
răspundere!
Replace HTTP Cache: Înlocuiți cache HTTP
Experimental Settings: Setări experimentale
+ Sort Settings Sections (A-Z): Setări Sortare Secțiuni (A-Z)
About:
#On About page
About: 'Despre'
@@ -1131,3 +1155,5 @@ Search Listing:
4K: 4K
Subtitles: Subtitrări
Closed Captions: Subtitrări Complexe
+Feed:
+ Refresh Feed: Reîmprospătează {subscriptionName}
From fb4a4d15bccbf1cc4a79ce3680bef1b87e0398dc Mon Sep 17 00:00:00 2001
From: Renko
Date: Thu, 22 Aug 2024 21:22:39 +0000
Subject: [PATCH 124/489] Translated using Weblate (Romanian)
Currently translated at 94.0% (817 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/
---
static/locales/ro.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml
index 42a7ed4e1ab01..ccb291573eb6a 100644
--- a/static/locales/ro.yaml
+++ b/static/locales/ro.yaml
@@ -98,6 +98,7 @@ Search Filters:
Subtitles: Subtitrări
Location: Locație
HDR: HDR
+ VR180: VR180
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonamente'
From 579d6d397db6bf8884155bf40fd5a4837c295b06 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Fri, 23 Aug 2024 17:18:49 +0200
Subject: [PATCH 125/489] Support authentication with the Basic scheme for
Invidious instances (#5569)
* Support authentication with the Basic scheme for Invidious instances
* I forgot to change this line
---
src/constants.js | 4 +-
src/main/index.js | 132 ++++++++++++------
.../ft-list-channel/ft-list-channel.js | 6 +-
.../ft-list-playlist/ft-list-playlist.js | 8 +-
.../components/ft-list-video/ft-list-video.js | 10 +-
.../ft-playlist-selector.js | 6 +-
.../ft-profile-channel-list.js | 8 +-
.../ft-profile-filter-channels-list.js | 8 +-
.../ft-share-button/ft-share-button.js | 14 +-
.../ft-video-player/ft-video-player.js | 11 ++
.../components/playlist-info/playlist-info.js | 6 +-
src/renderer/components/side-nav/side-nav.js | 6 +-
.../subscriptions-community.js | 8 +-
.../subscriptions-live/subscriptions-live.js | 10 +-
.../subscriptions-shorts.js | 9 +-
.../subscriptions-videos.js | 10 +-
src/renderer/components/top-nav/top-nav.js | 4 -
src/renderer/helpers/api/invidious.js | 28 +++-
src/renderer/helpers/utils.js | 10 ++
src/renderer/store/modules/invidious.js | 49 ++++++-
src/renderer/views/Channel/Channel.js | 10 +-
src/renderer/views/Playlist/Playlist.js | 6 +-
.../SubscribedChannels/SubscribedChannels.js | 8 +-
src/renderer/views/Watch/Watch.js | 21 +--
24 files changed, 262 insertions(+), 130 deletions(-)
diff --git a/src/constants.js b/src/constants.js
index 7fc27d8e342ff..cf50e91b83a72 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -37,7 +37,9 @@ const IpcChannels = {
SHOW_VIDEO_STATISTICS: 'show-video-statistics',
PLAYER_CACHE_GET: 'player-cache-get',
- PLAYER_CACHE_SET: 'player-cache-set'
+ PLAYER_CACHE_SET: 'player-cache-set',
+
+ SET_INVIDIOUS_AUTHORIZATION: 'set-invidious-authorization'
}
const DBActions = {
diff --git a/src/main/index.js b/src/main/index.js
index a2bdaeb8237f8..5defe0157f526 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -403,15 +403,19 @@ function runApp() {
sameSite: 'no_restriction',
})
- // make InnerTube requests work with the fetch function
- // InnerTube rejects requests if the referer isn't YouTube or empty
- const innertubeAndMediaRequestFilter = { urls: ['https://www.youtube.com/youtubei/*', 'https://*.googlevideo.com/videoplayback?*'] }
-
- session.defaultSession.webRequest.onBeforeSendHeaders(innertubeAndMediaRequestFilter, ({ requestHeaders, url, resourceType }, callback) => {
- requestHeaders.Referer = 'https://www.youtube.com/'
- requestHeaders.Origin = 'https://www.youtube.com'
+ const onBeforeSendHeadersRequestFilter = {
+ urls: ['https://*/*', 'http://*/*'],
+ types: ['xhr', 'media', 'image']
+ }
+ session.defaultSession.webRequest.onBeforeSendHeaders(onBeforeSendHeadersRequestFilter, ({ requestHeaders, url, resourceType, webContents }, callback) => {
+ const urlObj = new URL(url)
if (url.startsWith('https://www.youtube.com/youtubei/')) {
+ // make InnerTube requests work with the fetch function
+ // InnerTube rejects requests if the referer isn't YouTube or empty
+ requestHeaders.Referer = 'https://www.youtube.com/'
+ requestHeaders.Origin = 'https://www.youtube.com'
+
// Make iOS requests work and look more realistic
if (requestHeaders['x-youtube-client-name'] === '5') {
delete requestHeaders.Referer
@@ -430,41 +434,50 @@ function runApp() {
requestHeaders['Sec-Fetch-Mode'] = 'same-origin'
requestHeaders['X-Youtube-Bootstrap-Logged-In'] = 'false'
}
- } else {
+ } else if (urlObj.origin.endsWith('.googlevideo.com') && urlObj.pathname === '/videoplayback') {
+ requestHeaders.Referer = 'https://www.youtube.com/'
+ requestHeaders.Origin = 'https://www.youtube.com'
+
// YouTube doesn't send the Content-Type header for the media requests, so we shouldn't either
delete requestHeaders['Content-Type']
- }
- // YouTube throttles the adaptive formats if you request a chunk larger than 10MiB.
- // For the DASH formats we are fine as video.js doesn't seem to ever request chunks that big.
- // The legacy formats don't have any chunk size limits.
- // For the audio formats we need to handle it ourselves, as the browser requests the entire audio file,
- // which means that for most videos that are longer than 10 mins, we get throttled, as the audio track file sizes surpass that 10MiB limit.
+ // YouTube throttles the adaptive formats if you request a chunk larger than 10MiB.
+ // For the DASH formats we are fine as video.js doesn't seem to ever request chunks that big.
+ // The legacy formats don't have any chunk size limits.
+ // For the audio formats we need to handle it ourselves, as the browser requests the entire audio file,
+ // which means that for most videos that are longer than 10 mins, we get throttled, as the audio track file sizes surpass that 10MiB limit.
- // This code checks if the file is larger than the limit, by checking the `clen` query param,
- // which YouTube helpfully populates with the content length for us.
- // If it does surpass that limit, it then checks if the requested range is larger than the limit
- // (seeking right at the end of the video, would result in a small enough range to be under the chunk limit)
- // if that surpasses the limit too, it then limits the requested range to 10MiB, by setting the range to `start-${start + 10MiB}`.
- if (resourceType === 'media' && url.includes('&mime=audio') && requestHeaders.Range) {
- const TEN_MIB = 10 * 1024 * 1024
+ // This code checks if the file is larger than the limit, by checking the `clen` query param,
+ // which YouTube helpfully populates with the content length for us.
+ // If it does surpass that limit, it then checks if the requested range is larger than the limit
+ // (seeking right at the end of the video, would result in a small enough range to be under the chunk limit)
+ // if that surpasses the limit too, it then limits the requested range to 10MiB, by setting the range to `start-${start + 10MiB}`.
+ if (resourceType === 'media' && urlObj.searchParams.get('mime')?.startsWith('audio/') && requestHeaders.Range) {
+ const TEN_MIB = 10 * 1024 * 1024
- const contentLength = parseInt(new URL(url).searchParams.get('clen'))
+ const contentLength = parseInt(new URL(url).searchParams.get('clen'))
- if (contentLength > TEN_MIB) {
- const [startStr, endStr] = requestHeaders.Range.split('=')[1].split('-')
+ if (contentLength > TEN_MIB) {
+ const [startStr, endStr] = requestHeaders.Range.split('=')[1].split('-')
- const start = parseInt(startStr)
+ const start = parseInt(startStr)
- // handle open ended ranges like `0-` and `1234-`
- const end = endStr.length === 0 ? contentLength : parseInt(endStr)
+ // handle open ended ranges like `0-` and `1234-`
+ const end = endStr.length === 0 ? contentLength : parseInt(endStr)
- if (end - start > TEN_MIB) {
- const newEnd = start + TEN_MIB
+ if (end - start > TEN_MIB) {
+ const newEnd = start + TEN_MIB
- requestHeaders.Range = `bytes=${start}-${newEnd}`
+ requestHeaders.Range = `bytes=${start}-${newEnd}`
+ }
}
}
+ } else if (webContents) {
+ const invidiousAuthorization = invidiousAuthorizations.get(webContents.id)
+
+ if (invidiousAuthorization && url.startsWith(invidiousAuthorization.url)) {
+ requestHeaders.Authorization = invidiousAuthorization.authorization
+ }
}
// eslint-disable-next-line n/no-callback-literal
@@ -488,8 +501,10 @@ function runApp() {
const imageCache = new ImageCache()
protocol.handle('imagecache', (request) => {
+ const [requestUrl, rawWebContentsId] = request.url.split('#')
+
return new Promise((resolve, reject) => {
- const url = decodeURIComponent(request.url.substring(13))
+ const url = decodeURIComponent(requestUrl.substring(13))
if (imageCache.has(url)) {
const cached = imageCache.get(url)
@@ -499,9 +514,22 @@ function runApp() {
return
}
+ let headers
+
+ if (rawWebContentsId) {
+ const invidiousAuthorization = invidiousAuthorizations.get(parseInt(rawWebContentsId))
+
+ if (invidiousAuthorization && url.startsWith(invidiousAuthorization.url)) {
+ headers = {
+ Authorization: invidiousAuthorization.authorization
+ }
+ }
+ }
+
const newRequest = net.request({
method: request.method,
- url
+ url,
+ headers
})
// Electron doesn't allow certain headers to be set:
@@ -548,19 +576,20 @@ function runApp() {
})
})
- const imageRequestFilter = { urls: ['https://*/*', 'http://*/*'] }
+ const imageRequestFilter = { urls: ['https://*/*', 'http://*/*'], types: ['image'] }
session.defaultSession.webRequest.onBeforeRequest(imageRequestFilter, (details, callback) => {
// the requests made by the imagecache:// handler to fetch the image,
// are allowed through, as their resourceType is 'other'
- if (details.resourceType === 'image') {
- // eslint-disable-next-line n/no-callback-literal
- callback({
- redirectURL: `imagecache://${encodeURIComponent(details.url)}`
- })
- } else {
- // eslint-disable-next-line n/no-callback-literal
- callback({})
+
+ let redirectURL = `imagecache://${encodeURIComponent(details.url)}`
+
+ if (details.webContents) {
+ redirectURL += `#${details.webContents.id}`
}
+
+ callback({
+ redirectURL
+ })
})
// --- end of `if experimentsDisableDiskCache` ---
@@ -1011,6 +1040,21 @@ function runApp() {
await asyncFs.writeFile(filePath, new Uint8Array(value))
})
+ /** @type {Map} */
+ const invidiousAuthorizations = new Map()
+
+ ipcMain.on(IpcChannels.SET_INVIDIOUS_AUTHORIZATION, (event, authorization, url) => {
+ if (!isFreeTubeUrl(event.senderFrame.url)) {
+ return
+ }
+
+ if (!authorization) {
+ invidiousAuthorizations.delete(event.sender.id)
+ } else if (typeof authorization === 'string' && typeof url === 'string') {
+ invidiousAuthorizations.set(event.sender.id, { authorization, url })
+ }
+ })
+
// ************************************************* //
// DB related IPC calls
// *********** //
@@ -1376,6 +1420,12 @@ function runApp() {
}
})
+ app.on('web-contents-created', (_, webContents) => {
+ webContents.once('destroyed', () => {
+ invidiousAuthorizations.delete(webContents.id)
+ })
+ })
+
/*
* Check if an argument was passed and send it over to the GUI (Linux / Windows).
* Remove freetube:// protocol if present
diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.js b/src/renderer/components/ft-list-channel/ft-list-channel.js
index 8e94cb37df68a..709c34cf149c4 100644
--- a/src/renderer/components/ft-list-channel/ft-list-channel.js
+++ b/src/renderer/components/ft-list-channel/ft-list-channel.js
@@ -33,8 +33,8 @@ export default defineComponent({
}
},
computed: {
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
listType: function () {
return this.$store.getters.getListType
@@ -81,7 +81,7 @@ export default defineComponent({
// Can be prefixed with `https://` or `//` (protocol relative)
const thumbnailUrl = this.data.authorThumbnails[2].url
- this.thumbnail = youtubeImageUrlToInvidious(thumbnailUrl, this.currentInvidiousInstance)
+ this.thumbnail = youtubeImageUrlToInvidious(thumbnailUrl, this.currentInvidiousInstanceUrl)
this.channelName = this.data.author
this.id = this.data.authorId
diff --git a/src/renderer/components/ft-list-playlist/ft-list-playlist.js b/src/renderer/components/ft-list-playlist/ft-list-playlist.js
index b88747cd638c9..98747cef34c23 100644
--- a/src/renderer/components/ft-list-playlist/ft-list-playlist.js
+++ b/src/renderer/components/ft-list-playlist/ft-list-playlist.js
@@ -37,8 +37,8 @@ export default defineComponent({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
quickBookmarkPlaylistId() {
@@ -131,7 +131,7 @@ export default defineComponent({
parseInvidiousData: function () {
this.title = this.data.title
if (this.thumbnailCanBeShown) {
- this.thumbnail = this.data.playlistThumbnail.replace('https://i.ytimg.com', this.currentInvidiousInstance).replace('hqdefault', 'mqdefault')
+ this.thumbnail = this.data.playlistThumbnail.replace('https://i.ytimg.com', this.currentInvidiousInstanceUrl).replace('hqdefault', 'mqdefault')
}
this.channelName = this.data.author
this.channelId = this.data.authorId
@@ -159,7 +159,7 @@ export default defineComponent({
if (this.thumbnailCanBeShown && this.data.videos.length > 0) {
const thumbnailURL = `https://i.ytimg.com/vi/${this.data.videos[0].videoId}/mqdefault.jpg`
if (this.backendPreference === 'invidious') {
- this.thumbnail = thumbnailURL.replace('https://i.ytimg.com', this.currentInvidiousInstance)
+ this.thumbnail = thumbnailURL.replace('https://i.ytimg.com', this.currentInvidiousInstanceUrl)
} else {
this.thumbnail = thumbnailURL
}
diff --git a/src/renderer/components/ft-list-video/ft-list-video.js b/src/renderer/components/ft-list-video/ft-list-video.js
index cc91ac027bf55..c90e1fa9c8f75 100644
--- a/src/renderer/components/ft-list-video/ft-list-video.js
+++ b/src/renderer/components/ft-list-video/ft-list-video.js
@@ -150,8 +150,8 @@ export default defineComponent({
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
showPlaylists: function () {
@@ -182,7 +182,7 @@ export default defineComponent({
},
invidiousUrl: function () {
- let videoUrl = `${this.currentInvidiousInstance}/watch?v=${this.id}`
+ let videoUrl = `${this.currentInvidiousInstanceUrl}/watch?v=${this.id}`
// `playlistId` can be undefined
if (this.playlistSharable) {
// `index` seems can be ignored
@@ -192,7 +192,7 @@ export default defineComponent({
},
invidiousChannelUrl: function () {
- return `${this.currentInvidiousInstance}/channel/${this.channelId}`
+ return `${this.currentInvidiousInstanceUrl}/channel/${this.channelId}`
},
youtubeUrl: function () {
@@ -338,7 +338,7 @@ export default defineComponent({
let baseUrl
if (this.backendPreference === 'invidious') {
- baseUrl = this.currentInvidiousInstance
+ baseUrl = this.currentInvidiousInstanceUrl
} else {
baseUrl = 'https://i.ytimg.com'
}
diff --git a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js
index 3016a10a4125a..825ddc1119abb 100644
--- a/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js
+++ b/src/renderer/components/ft-playlist-selector/ft-playlist-selector.js
@@ -47,8 +47,8 @@ export default defineComponent({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
toBeAddedToPlaylistVideoList: function () {
return this.$store.getters.getToBeAddedToPlaylistVideoList
@@ -129,7 +129,7 @@ export default defineComponent({
if (this.playlist.videos.length > 0) {
const thumbnailURL = `https://i.ytimg.com/vi/${this.playlist.videos[0].videoId}/mqdefault.jpg`
if (this.backendPreference === 'invidious') {
- this.thumbnail = thumbnailURL.replace('https://i.ytimg.com', this.currentInvidiousInstance)
+ this.thumbnail = thumbnailURL.replace('https://i.ytimg.com', this.currentInvidiousInstanceUrl)
} else {
this.thumbnail = thumbnailURL
}
diff --git a/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.js b/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.js
index 6166401f85374..c9b8590089209 100644
--- a/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.js
+++ b/src/renderer/components/ft-profile-channel-list/ft-profile-channel-list.js
@@ -43,8 +43,8 @@ export default defineComponent({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
profileList: function () {
return this.$store.getters.getProfileList
@@ -76,7 +76,7 @@ export default defineComponent({
})
subscriptions.forEach((channel) => {
if (this.backendPreference === 'invidious') {
- channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
+ channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstanceUrl)
}
channel.selected = false
})
@@ -92,7 +92,7 @@ export default defineComponent({
})
subscriptions.forEach((channel) => {
if (this.backendPreference === 'invidious') {
- channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
+ channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstanceUrl)
}
channel.selected = false
})
diff --git a/src/renderer/components/ft-profile-filter-channels-list/ft-profile-filter-channels-list.js b/src/renderer/components/ft-profile-filter-channels-list/ft-profile-filter-channels-list.js
index 9108ff4d1dea8..57beae3b25901 100644
--- a/src/renderer/components/ft-profile-filter-channels-list/ft-profile-filter-channels-list.js
+++ b/src/renderer/components/ft-profile-filter-channels-list/ft-profile-filter-channels-list.js
@@ -36,8 +36,8 @@ export default defineComponent({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
profileList: function () {
return this.$store.getters.getProfileList
@@ -71,7 +71,7 @@ export default defineComponent({
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
- channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
+ channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstanceUrl)
}
channel.selected = false
return channel
@@ -92,7 +92,7 @@ export default defineComponent({
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
- channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
+ channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstanceUrl)
}
channel.selected = false
return channel
diff --git a/src/renderer/components/ft-share-button/ft-share-button.js b/src/renderer/components/ft-share-button/ft-share-button.js
index 054e3e58ab3cc..6d9eb6f73f149 100644
--- a/src/renderer/components/ft-share-button/ft-share-button.js
+++ b/src/renderer/components/ft-share-button/ft-share-button.js
@@ -68,8 +68,8 @@ export default defineComponent({
return this.$t('Share.Share Video')
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
selectedUserPlaylist: function () {
@@ -86,12 +86,12 @@ export default defineComponent({
invidiousURL() {
if (this.isChannel) {
- return `${this.currentInvidiousInstance}/channel/${this.id}`
+ return `${this.currentInvidiousInstanceUrl}/channel/${this.id}`
}
if (this.isPlaylist) {
- return `${this.currentInvidiousInstance}/playlist?list=${this.id}`
+ return `${this.currentInvidiousInstanceUrl}/playlist?list=${this.id}`
}
- let videoUrl = `${this.currentInvidiousInstance}/watch?v=${this.id}`
+ let videoUrl = `${this.currentInvidiousInstanceUrl}/watch?v=${this.id}`
// `playlistId` can be undefined
if (this.playlistSharable) {
// `index` seems can be ignored
@@ -102,9 +102,9 @@ export default defineComponent({
invidiousEmbedURL() {
if (this.isPlaylist) {
- return `${this.currentInvidiousInstance}/embed/videoseries?list=${this.id}`
+ return `${this.currentInvidiousInstanceUrl}/embed/videoseries?list=${this.id}`
}
- return `${this.currentInvidiousInstance}/embed/${this.id}`
+ return `${this.currentInvidiousInstanceUrl}/embed/${this.id}`
},
youtubeChannelUrl() {
diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js
index dc7c463822592..77b919985ef2b 100644
--- a/src/renderer/components/ft-video-player/ft-video-player.js
+++ b/src/renderer/components/ft-video-player/ft-video-player.js
@@ -40,6 +40,9 @@ videojs.Vhs.xhr.beforeRequest = (options) => {
const { uri } = options
options.uri = getProxyUrl(uri)
}
+
+ const authorization = store.getters.getCurrentInvidiousInstanceAuthorization
+
// pass in the optional base so it doesn't error for `dashFiles/videoId.xml` (DASH manifest in dev mode)
if (new URL(options.uri, window.location.origin).hostname.endsWith('.googlevideo.com')) {
// The official clients use POST requests with this body for the DASH requests, so we should do that too
@@ -50,6 +53,14 @@ videojs.Vhs.xhr.beforeRequest = (options) => {
options.uri += `&range=${options.headers.Range.split('=')[1]}`
delete options.headers.Range
}
+ } else if (authorization && options.uri.startsWith(store.getters.getCurrentInvidiousInstanceUrl)) {
+ if (options.headers) {
+ options.headers.Authorization = authorization
+ } else {
+ options.headers = {
+ Authorization: authorization
+ }
+ }
}
}
// videojs-http-streaming spits out a warning every time you access videojs.Vhs.BANDWIDTH_VARIANCE
diff --git a/src/renderer/components/playlist-info/playlist-info.js b/src/renderer/components/playlist-info/playlist-info.js
index 5d7dac11a5148..6f9ff99bcfd99 100644
--- a/src/renderer/components/playlist-info/playlist-info.js
+++ b/src/renderer/components/playlist-info/playlist-info.js
@@ -124,8 +124,8 @@ export default defineComponent({
return this.$store.getters.getHideSharingActions
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
historyCacheById: function () {
@@ -204,7 +204,7 @@ export default defineComponent({
let baseUrl = 'https://i.ytimg.com'
if (this.backendPreference === 'invidious') {
- baseUrl = this.currentInvidiousInstance
+ baseUrl = this.currentInvidiousInstanceUrl
} else if (typeof this.playlistThumbnail === 'string' && this.playlistThumbnail.length > 0) {
// Use playlist thumbnail provided by YT when available
return this.playlistThumbnail
diff --git a/src/renderer/components/side-nav/side-nav.js b/src/renderer/components/side-nav/side-nav.js
index a68ac2e686c47..dd050476b5839 100644
--- a/src/renderer/components/side-nav/side-nav.js
+++ b/src/renderer/components/side-nav/side-nav.js
@@ -20,8 +20,8 @@ export default defineComponent({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
profileList: function () {
return this.$store.getters.getProfileList
@@ -47,7 +47,7 @@ export default defineComponent({
if (this.backendPreference === 'invidious') {
subscriptions.forEach((channel) => {
- channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
+ channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstanceUrl)
})
}
diff --git a/src/renderer/components/subscriptions-community/subscriptions-community.js b/src/renderer/components/subscriptions-community/subscriptions-community.js
index e42510c49111f..59df38efcb570 100644
--- a/src/renderer/components/subscriptions-community/subscriptions-community.js
+++ b/src/renderer/components/subscriptions-community/subscriptions-community.js
@@ -28,8 +28,8 @@ export default defineComponent({
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
activeProfile: function () {
@@ -167,8 +167,8 @@ export default defineComponent({
if (thumbnailUrl) {
if (thumbnailUrl.startsWith('//')) {
thumbnailUrl = 'https:' + thumbnailUrl
- } else if (thumbnailUrl.startsWith(`${this.currentInvidiousInstance}/ggpht`)) {
- thumbnailUrl = thumbnailUrl.replace(`${this.currentInvidiousInstance}/ggpht`, 'https://yt3.googleusercontent.com')
+ } else if (thumbnailUrl.startsWith(`${this.currentInvidiousInstanceUrl}/ggpht`)) {
+ thumbnailUrl = thumbnailUrl.replace(`${this.currentInvidiousInstanceUrl}/ggpht`, 'https://yt3.googleusercontent.com')
}
}
diff --git a/src/renderer/components/subscriptions-live/subscriptions-live.js b/src/renderer/components/subscriptions-live/subscriptions-live.js
index f556559f55d05..625da4a0096a6 100644
--- a/src/renderer/components/subscriptions-live/subscriptions-live.js
+++ b/src/renderer/components/subscriptions-live/subscriptions-live.js
@@ -3,7 +3,7 @@ import { mapActions, mapMutations } from 'vuex'
import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue'
import { setPublishedTimestampsInvidious, copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils'
-import { invidiousAPICall } from '../../helpers/api/invidious'
+import { invidiousAPICall, invidiousFetch } from '../../helpers/api/invidious'
import { getLocalChannelLiveStreams } from '../../helpers/api/local'
import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions'
@@ -29,8 +29,8 @@ export default defineComponent({
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
useRssFeeds: function () {
@@ -354,10 +354,10 @@ export default defineComponent({
getChannelLiveInvidiousRSS: async function (channel, failedAttempts = 0) {
const playlistId = channel.id.replace('UC', 'UULV')
- const feedUrl = `${this.currentInvidiousInstance}/feed/playlist/${playlistId}`
+ const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}`
try {
- const response = await fetch(feedUrl)
+ const response = await invidiousFetch(feedUrl)
if (response.status === 500 || response.status === 404) {
return {
diff --git a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js
index f24ae77c49ef3..317e54b2a5416 100644
--- a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js
+++ b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js
@@ -4,6 +4,7 @@ import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue
import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions'
import { copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils'
+import { invidiousFetch } from '../../helpers/api/invidious'
export default defineComponent({
name: 'SubscriptionsShorts',
@@ -27,8 +28,8 @@ export default defineComponent({
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
lastShortRefreshTimestamp: function () {
@@ -231,10 +232,10 @@ export default defineComponent({
getChannelShortsInvidious: async function (channel, failedAttempts = 0) {
const playlistId = channel.id.replace('UC', 'UUSH')
- const feedUrl = `${this.currentInvidiousInstance}/feed/playlist/${playlistId}`
+ const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}`
try {
- const response = await fetch(feedUrl)
+ const response = await invidiousFetch(feedUrl)
if (response.status === 500 || response.status === 404) {
return {
diff --git a/src/renderer/components/subscriptions-videos/subscriptions-videos.js b/src/renderer/components/subscriptions-videos/subscriptions-videos.js
index e728668537665..395c591756565 100644
--- a/src/renderer/components/subscriptions-videos/subscriptions-videos.js
+++ b/src/renderer/components/subscriptions-videos/subscriptions-videos.js
@@ -3,7 +3,7 @@ import { mapActions, mapMutations } from 'vuex'
import SubscriptionsTabUI from '../subscriptions-tab-ui/subscriptions-tab-ui.vue'
import { setPublishedTimestampsInvidious, copyToClipboard, getRelativeTimeFromDate, showToast } from '../../helpers/utils'
-import { invidiousAPICall } from '../../helpers/api/invidious'
+import { invidiousAPICall, invidiousFetch } from '../../helpers/api/invidious'
import { getLocalChannelVideos } from '../../helpers/api/local'
import { parseYouTubeRSSFeed, updateVideoListAfterProcessing } from '../../helpers/subscriptions'
@@ -29,8 +29,8 @@ export default defineComponent({
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
currentLocale: function () {
@@ -355,10 +355,10 @@ export default defineComponent({
getChannelVideosInvidiousRSS: async function (channel, failedAttempts = 0) {
const playlistId = channel.id.replace('UC', 'UULF')
- const feedUrl = `${this.currentInvidiousInstance}/feed/playlist/${playlistId}`
+ const feedUrl = `${this.currentInvidiousInstanceUrl}/feed/playlist/${playlistId}`
try {
- const response = await fetch(feedUrl)
+ const response = await invidiousFetch(feedUrl)
if (response.status === 500 || response.status === 404) {
this.errorChannels.push(channel)
diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js
index be3d163655817..c0d5400cdb04a 100644
--- a/src/renderer/components/top-nav/top-nav.js
+++ b/src/renderer/components/top-nav/top-nav.js
@@ -71,10 +71,6 @@ export default defineComponent({
return this.$store.getters.getBarColor
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
- },
-
backendFallback: function () {
return this.$store.getters.getBackendFallback
},
diff --git a/src/renderer/helpers/api/invidious.js b/src/renderer/helpers/api/invidious.js
index 05898068a0b3f..a842edfb884d7 100644
--- a/src/renderer/helpers/api/invidious.js
+++ b/src/renderer/helpers/api/invidious.js
@@ -4,12 +4,12 @@ import { isNullOrEmpty } from '../strings'
import autolinker from 'autolinker'
import { FormatUtils, Misc, Player } from 'youtubei.js'
-function getCurrentInstance() {
- return store.getters.getCurrentInvidiousInstance
+function getCurrentInstanceUrl() {
+ return store.getters.getCurrentInvidiousInstanceUrl
}
export function getProxyUrl(uri) {
- const currentInstance = getCurrentInstance()
+ const currentInstance = getCurrentInstanceUrl()
const url = new URL(uri)
const { origin } = url
@@ -20,10 +20,24 @@ export function getProxyUrl(uri) {
return url.toString().replace(origin, currentInstance)
}
+export function invidiousFetch(url) {
+ const authorization = store.getters.getCurrentInvidiousInstanceAuthorization
+
+ if (authorization) {
+ return fetch(url, {
+ headers: {
+ Authorization: authorization
+ }
+ })
+ } else {
+ return fetch(url)
+ }
+}
+
export function invidiousAPICall({ resource, id = '', params = {}, doLogError = true, subResource = '' }) {
return new Promise((resolve, reject) => {
- const requestUrl = getCurrentInstance() + '/api/v1/' + resource + '/' + id + (!isNullOrEmpty(subResource) ? `/${subResource}` : '') + '?' + new URLSearchParams(params).toString()
- fetch(requestUrl)
+ const requestUrl = getCurrentInstanceUrl() + '/api/v1/' + resource + '/' + id + (!isNullOrEmpty(subResource) ? `/${subResource}` : '') + '?' + new URLSearchParams(params).toString()
+ invidiousFetch(requestUrl)
.then((response) => response.json())
.then((json) => {
if (json.error !== undefined) {
@@ -126,7 +140,7 @@ export function youtubeImageUrlToInvidious(url, currentInstance = null) {
}
if (currentInstance === null) {
- currentInstance = getCurrentInstance()
+ currentInstance = getCurrentInstanceUrl()
}
// Can be prefixed with `https://` or `//` (protocol relative)
if (url.startsWith('//')) {
@@ -149,7 +163,7 @@ function parseInvidiousCommentData(response) {
comment.authorLink = comment.authorId
comment.authorThumb = youtubeImageUrlToInvidious(comment.authorThumbnails.at(-1).url)
comment.likes = comment.likeCount
- comment.text = autolinker.link(stripHTML(invidiousImageUrlToInvidious(comment.contentHtml, getCurrentInstance())))
+ comment.text = autolinker.link(stripHTML(invidiousImageUrlToInvidious(comment.contentHtml, getCurrentInstanceUrl())))
comment.dataType = 'invidious'
comment.isOwner = comment.authorIsChannelOwner
comment.numReplies = comment.replies?.replyCount ?? 0
diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js
index f65161b4a60f4..d924a24a7a302 100644
--- a/src/renderer/helpers/utils.js
+++ b/src/renderer/helpers/utils.js
@@ -877,3 +877,13 @@ export function ctrlFHandler(event, inputElement) {
export function randomArrayItem(array) {
return array[Math.floor(Math.random() * array.length)]
}
+
+/**
+ * @param {string} text
+ */
+export function base64EncodeUtf8(text) {
+ const bytes = new TextEncoder().encode(text)
+
+ const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join('')
+ return btoa(binString)
+}
diff --git a/src/renderer/store/modules/invidious.js b/src/renderer/store/modules/invidious.js
index 2116b0085cec9..3ac2d59dec814 100644
--- a/src/renderer/store/modules/invidious.js
+++ b/src/renderer/store/modules/invidious.js
@@ -1,7 +1,10 @@
-import { createWebURL, fetchWithTimeout, randomArrayItem } from '../../helpers/utils'
+import { IpcChannels } from '../../../constants'
+import { base64EncodeUtf8, createWebURL, fetchWithTimeout, randomArrayItem } from '../../helpers/utils'
const state = {
currentInvidiousInstance: '',
+ currentInvidiousInstanceAuthorization: null,
+ currentInvidiousInstanceUrl: '',
invidiousInstancesList: null
}
@@ -10,6 +13,14 @@ const getters = {
return state.currentInvidiousInstance
},
+ getCurrentInvidiousInstanceUrl(state) {
+ return state.currentInvidiousInstanceUrl
+ },
+
+ getCurrentInvidiousInstanceAuthorization(state) {
+ return state.currentInvidiousInstanceAuthorization
+ },
+
getInvidiousInstancesList(state) {
return state.invidiousInstancesList
}
@@ -67,6 +78,42 @@ const actions = {
const mutations = {
setCurrentInvidiousInstance(state, value) {
state.currentInvidiousInstance = value
+
+ let url
+ try {
+ url = new URL(value)
+ } catch { }
+
+ let authorization = null
+
+ if (url && (url.username.length > 0 || url.password.length > 0)) {
+ authorization = `Basic ${base64EncodeUtf8(`${url.username}:${url.password}`)}`
+ }
+
+ state.currentInvidiousInstanceAuthorization = authorization
+
+ let instanceUrl
+
+ if (url && authorization) {
+ url.username = ''
+ url.password = ''
+
+ instanceUrl = url.toString().replace(/\/$/, '')
+ } else {
+ instanceUrl = value
+ }
+
+ state.currentInvidiousInstanceUrl = instanceUrl
+
+ if (process.env.IS_ELECTRON) {
+ const { ipcRenderer } = require('electron')
+
+ if (authorization) {
+ ipcRenderer.send(IpcChannels.SET_INVIDIOUS_AUTHORIZATION, authorization, instanceUrl)
+ } else {
+ ipcRenderer.send(IpcChannels.SET_INVIDIOUS_AUTHORIZATION, null)
+ }
+ }
},
setInvidiousInstancesList(state, value) {
diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js
index 20ca20794ca4d..8116dbb705fe6 100644
--- a/src/renderer/views/Channel/Channel.js
+++ b/src/renderer/views/Channel/Channel.js
@@ -153,8 +153,8 @@ export default defineComponent({
return this.$store.getters.getShowFamilyFriendlyOnly
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
activeProfile: function () {
@@ -976,7 +976,7 @@ export default defineComponent({
this.isFamilyFriendly = response.isFamilyFriendly
this.subCount = response.subCount
const thumbnail = response.authorThumbnails[3].url
- this.thumbnailUrl = youtubeImageUrlToInvidious(thumbnail, this.currentInvidiousInstance)
+ this.thumbnailUrl = youtubeImageUrlToInvidious(thumbnail, this.currentInvidiousInstanceUrl)
this.updateSubscriptionDetails({ channelThumbnailUrl: thumbnail, channelName: channelName, channelId: channelId })
this.description = autolinker.link(response.description)
this.viewCount = response.totalViews
@@ -987,12 +987,12 @@ export default defineComponent({
return {
name: channel.author,
id: channel.authorId,
- thumbnailUrl: youtubeImageUrlToInvidious(thumbnailUrl, this.currentInvidiousInstance)
+ thumbnailUrl: youtubeImageUrlToInvidious(thumbnailUrl, this.currentInvidiousInstanceUrl)
}
})
if (response.authorBanners instanceof Array && response.authorBanners.length > 0) {
- this.bannerUrl = youtubeImageUrlToInvidious(response.authorBanners[0].url, this.currentInvidiousInstance)
+ this.bannerUrl = youtubeImageUrlToInvidious(response.authorBanners[0].url, this.currentInvidiousInstanceUrl)
} else {
this.bannerUrl = null
}
diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js
index 5589067b9cbd6..fc7c8c798b431 100644
--- a/src/renderer/views/Playlist/Playlist.js
+++ b/src/renderer/views/Playlist/Playlist.js
@@ -87,8 +87,8 @@ export default defineComponent({
backendFallback: function () {
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
userPlaylistSortOrder: function () {
return this.$store.getters.getUserPlaylistSortOrder
@@ -356,7 +356,7 @@ export default defineComponent({
this.viewCount = result.viewCount
this.videoCount = result.videoCount
this.channelName = result.author
- this.channelThumbnail = youtubeImageUrlToInvidious(result.authorThumbnails[2].url, this.currentInvidiousInstance)
+ this.channelThumbnail = youtubeImageUrlToInvidious(result.authorThumbnails[2].url, this.currentInvidiousInstanceUrl)
this.channelId = result.authorId
this.infoSource = 'invidious'
diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.js b/src/renderer/views/SubscribedChannels/SubscribedChannels.js
index a570375098934..797e379ebe114 100644
--- a/src/renderer/views/SubscribedChannels/SubscribedChannels.js
+++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.js
@@ -63,8 +63,8 @@ export default defineComponent({
return this.$store.getters.getBackendPreference
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
}
},
watch: {
@@ -119,13 +119,13 @@ export default defineComponent({
const hostname = new URL(newURL).hostname
if (hostname === 'yt3.ggpht.com' || hostname === 'yt3.googleusercontent.com') {
if (this.backendPreference === 'invidious') { // YT to IV
- newURL = youtubeImageUrlToInvidious(newURL, this.currentInvidiousInstance)
+ newURL = youtubeImageUrlToInvidious(newURL, this.currentInvidiousInstanceUrl)
}
} else {
if (this.backendPreference === 'local') { // IV to YT
newURL = newURL.replace(this.re.ivToYt, `${this.ytBaseURL}/$1`)
} else { // IV to IV
- newURL = invidiousImageUrlToInvidious(newURL, this.currentInvidiousInstance)
+ newURL = invidiousImageUrlToInvidious(newURL, this.currentInvidiousInstanceUrl)
}
}
diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js
index f4a86094b2f40..f676cd3229e2c 100644
--- a/src/renderer/views/Watch/Watch.js
+++ b/src/renderer/views/Watch/Watch.js
@@ -31,6 +31,7 @@ import {
convertInvidiousToLocalFormat,
filterInvidiousFormats,
generateInvidiousDashManifestLocally,
+ invidiousFetch,
invidiousGetVideoInformation,
youtubeImageUrlToInvidious
} from '../../helpers/api/invidious'
@@ -150,8 +151,8 @@ export default defineComponent({
backendFallback: function () {
return this.$store.getters.getBackendFallback
},
- currentInvidiousInstance: function () {
- return this.$store.getters.getCurrentInvidiousInstance
+ currentInvidiousInstanceUrl: function () {
+ return this.$store.getters.getCurrentInvidiousInstanceUrl
},
proxyVideos: function () {
return this.$store.getters.getProxyVideos
@@ -698,7 +699,7 @@ export default defineComponent({
this.isLoading = true
}
- this.videoStoryboardSrc = `${this.currentInvidiousInstance}/api/v1/storyboards/${this.videoId}?height=90`
+ this.videoStoryboardSrc = `${this.currentInvidiousInstanceUrl}/api/v1/storyboards/${this.videoId}?height=90`
invidiousGetVideoInformation(this.videoId)
.then(async result => {
@@ -720,7 +721,7 @@ export default defineComponent({
this.channelId = result.authorId
this.channelName = result.author
const channelThumb = result.authorThumbnails[1]
- this.channelThumbnail = channelThumb ? youtubeImageUrlToInvidious(channelThumb.url, this.currentInvidiousInstance) : ''
+ this.channelThumbnail = channelThumb ? youtubeImageUrlToInvidious(channelThumb.url, this.currentInvidiousInstanceUrl) : ''
this.updateSubscriptionDetails({
channelThumbnailUrl: channelThumb?.url,
channelName: result.author,
@@ -739,7 +740,7 @@ export default defineComponent({
this.isLive = result.liveNow
this.isFamilyFriendly = result.isFamilyFriendly
this.captionHybridList = result.captions.map(caption => {
- caption.url = this.currentInvidiousInstance + caption.url
+ caption.url = this.currentInvidiousInstanceUrl + caption.url
caption.type = ''
caption.dataSource = 'invidious'
return caption
@@ -747,13 +748,13 @@ export default defineComponent({
switch (this.thumbnailPreference) {
case 'start':
- this.thumbnail = `${this.currentInvidiousInstance}/vi/${this.videoId}/maxres1.jpg`
+ this.thumbnail = `${this.currentInvidiousInstanceUrl}/vi/${this.videoId}/maxres1.jpg`
break
case 'middle':
- this.thumbnail = `${this.currentInvidiousInstance}/vi/${this.videoId}/maxres2.jpg`
+ this.thumbnail = `${this.currentInvidiousInstanceUrl}/vi/${this.videoId}/maxres2.jpg`
break
case 'end':
- this.thumbnail = `${this.currentInvidiousInstance}/vi/${this.videoId}/maxres3.jpg`
+ this.thumbnail = `${this.currentInvidiousInstanceUrl}/vi/${this.videoId}/maxres3.jpg`
break
default:
this.thumbnail = result.videoThumbnails[0].url
@@ -1439,7 +1440,7 @@ export default defineComponent({
},
createInvidiousDashManifest: async function () {
- let url = `${this.currentInvidiousInstance}/api/manifest/dash/id/${this.videoId}`
+ let url = `${this.currentInvidiousInstanceUrl}/api/manifest/dash/id/${this.videoId}`
// If we are in Electron,
// we can use YouTube.js' DASH manifest generator to generate the manifest.
@@ -1447,7 +1448,7 @@ export default defineComponent({
if (process.env.SUPPORTS_LOCAL_API) {
// Invidious' API response doesn't include the height and width (and fps and qualityLabel for AV1) of video streams
// so we need to extract them from Invidious' manifest
- const response = await fetch(url)
+ const response = await invidiousFetch(url)
const originalText = await response.text()
const parsedManifest = new DOMParser().parseFromString(originalText, 'application/xml')
From a9ca4a86816530cbc84cd4ab069d6bee116027e4 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Sun, 25 Aug 2024 09:34:39 +0000
Subject: [PATCH 126/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 1290427b9c16d..8c42a5fa5d4e5 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -241,13 +241,13 @@ Settings:
Video View Type:
Video View Type: '動画一覧の表示方法'
Grid: 'グリッド'
- List: '一覧'
+ List: 'リスト'
Thumbnail Preference:
Thumbnail Preference: 'サムネイルの設定'
Default: 'デフォルト'
Beginning: '開始'
Middle: '中間'
- End: '終了'
+ End: '最後'
Hidden: 非表示
Blur: ぼかし
'Invidious Instance (Default is https://invidious.snopyta.org)': '接続先の Invidious
@@ -258,7 +258,7 @@ Settings:
Check for Updates: 更新の確認
View all Invidious instance information: すべての Invidious インスタンス情報の表示
System Default: システム初期設定
- Clear Default Instance: デフォルトの設定をクリアする
+ Clear Default Instance: 既定のインスタンスをクリア
Set Current Instance as Default: 現在のインスタンスを既定として設定する
Current instance will be randomized on startup: 現在のインスタンスは起動時にランダム化されます
No default instance has been set: 既定のインスタンスが設定されていません
@@ -271,10 +271,10 @@ Settings:
External Link Handling: 外部リンク処理
Auto Load Next Page:
Label: 次のページを自動で読み込む
- Tooltip: 追加のページやコメントを自動的に読み込む。
+ Tooltip: 追加のページやコメント欄の続きを自動的に読み込みます。
Theme Settings:
Theme Settings: 'テーマの設定'
- Match Top Bar with Main Color: 'トップバーをメインカラーに合わせる'
+ Match Top Bar with Main Color: '上部のバーをメインカラーに合わせる'
Base Theme:
Base Theme: 'テーマの選択'
Black: '黒'
@@ -335,7 +335,7 @@ Settings:
Solarized Cyan: ソラライズド・シアン
Solarized Green: ソラライズド・グリーン
Solarized Blue: ソラライズド・ブルー
- Secondary Color Theme: 'テーマのセカンダリー カラー'
+ Secondary Color Theme: 'テーマのアクセント カラー'
#* Main Color Theme
UI Scale: UI 縮尺率
Expand Side Bar by Default: 幅広のサイド バーで起動
@@ -347,7 +347,7 @@ Settings:
Force Local Backend for Legacy Formats: '旧形式であれば内部 API の適用'
Remember History: '履歴を記憶'
Play Next Video: '次の動画の自動再生'
- Turn on Subtitles by Default: '字幕をデフォルトでオンにする'
+ Turn on Subtitles by Default: 'デフォルトで字幕を有効にする'
Autoplay Videos: '動画の自動再生'
Proxy Videos Through Invidious: '動画を Invidious プロキシを経由して取得'
Autoplay Playlists: '再生リストの自動再生'
@@ -375,8 +375,8 @@ Settings:
Next Video Interval: 次の動画までの間隔
Fast-Forward / Rewind Interval: 早送り/巻き戻し間隔
Display Play Button In Video Player: 動画プレーヤーに再生ボタンを表示する
- Scroll Volume Over Video Player: スクロールで動画の音量調整
- Scroll Playback Rate Over Video Player: スクロールで動画の再生速度調整
+ Scroll Volume Over Video Player: 動画プレーヤーをスクロールして音量を変更
+ Scroll Playback Rate Over Video Player: 動画プレーヤーをスクロールして再生速度を変更
Max Video Playback Rate: 最大動画再生速度
Video Playback Rate Interval: 動画再生速度間隔
Screenshot:
@@ -391,13 +391,13 @@ Settings:
Enable: スクリーンショットの有効化
Format Label: スクリーンショット形式
Ask Path: 保存フォルダを尋ねる
- Folder Button: フォルダーの選択
+ Folder Button: フォルダの選択
Enter Fullscreen on Display Rotate: 画面の回転時に全画面表示にする
- Skip by Scrolling Over Video Player: スクロールで動画をスキップ
+ Skip by Scrolling Over Video Player: 動画プレーヤーをスクロールして動画をスキップ
Allow DASH AV1 formats: DASH AV1形式を許可
Subscription Settings:
Subscription Settings: '登録チャンネルの設定'
- Hide Videos on Watch: '視聴済み動画の非表示'
+ Hide Videos on Watch: '視聴済みの動画を非表示にする'
Subscriptions Export Format:
Subscriptions Export Format: '登録のエクスポート形式'
#& Freetube
@@ -503,8 +503,8 @@ Settings:
Hide Channel Subscribers: チャンネル登録者数の非表示
Hide Video Views: 再生数の非表示
Hide Video Likes And Dislikes: 評価の非表示
- Distraction Free Settings: 集中モード
- Hide Active Subscriptions: 使用中の登録チャンネルの非表示
+ Distraction Free Settings: 集中モード設定
+ Hide Active Subscriptions: 登録チャンネルを非表示
Hide Playlists: 再生リストの非表示
Hide Video Description: 動画説明の非表示
Hide Comments: コメントの非表示
@@ -516,11 +516,11 @@ Settings:
Hide Channels Placeholder: チャンネル ID
Display Titles Without Excessive Capitalisation: 過剰な大文字や句読点のないタイトルの表示
Hide Channel Playlists: チャンネル再生リストの非表示
- Hide Channel Community: チャンネル コミュニティの非表示
+ Hide Channel Community: チャンネルコミュニティの非表示
Sections:
Side Bar: サイドバー
Channel Page: チャンネル ページ
- Watch Page: ウォッチページ
+ Watch Page: 視聴ページ
General: 一般
Subscriptions Page: 登録チャンネル ページ
Hide Featured Channels: おすすめチャンネルの非表示
@@ -530,7 +530,7 @@ Settings:
Hide Subscriptions Live: 登録チャンネルのライブ配信の非表示
Hide Subscriptions Videos: 登録チャンネルの動画の非表示
Hide Channel Releases: チャンネルの新着情報の非表示
- Hide Profile Pictures in Comments: コメントでプロフィール写真を隠す
+ Hide Profile Pictures in Comments: コメント欄のプロフィール写真を隠す
Blur Thumbnails: サムネイルをぼかす
Hide Subscriptions Community: 登録チャンネルのコミュニティの非表示
Hide Channels Invalid: 提供されたチャンネル ID が無効です
@@ -640,7 +640,7 @@ About:
#On Channel Page
Donate: 寄付
FreeTube is made possible by: FreeTube が実現できているのは
- these people and projects: これらの人々とプロジェクト
+ these people and projects: これらの人々とプロジェクトのおかげです
Credits: 著作権
Translate: 翻訳
room rules: ルームの規則について
From 7e14f4cb43338d41c64ad2936dff4e16933f88e5 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Sun, 25 Aug 2024 15:58:43 +0000
Subject: [PATCH 127/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 8c42a5fa5d4e5..2c312186fbd70 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -499,12 +499,12 @@ Settings:
Hide Popular Videos: 人気動画の非表示
Hide Trending Videos: 急上昇動画の非表示
Hide Recommended Videos: おすすめ動画の非表示
- Hide Comment Likes: コメント評価の非表示
+ Hide Comment Likes: コメント欄の評価の非表示
Hide Channel Subscribers: チャンネル登録者数の非表示
Hide Video Views: 再生数の非表示
Hide Video Likes And Dislikes: 評価の非表示
Distraction Free Settings: 集中モード設定
- Hide Active Subscriptions: 登録チャンネルを非表示
+ Hide Active Subscriptions: 登録チャンネルの非表示
Hide Playlists: 再生リストの非表示
Hide Video Description: 動画説明の非表示
Hide Comments: コメントの非表示
@@ -898,7 +898,7 @@ Share:
Share Playlist: '再生リストの共有'
Copy Link: 'リンクのコピー'
Open Link: 'リンクの表示'
- Copy Embed: '埋め込みのコピー'
+ Copy Embed: '埋め込み コピー'
Open Embed: '埋め込みの表示'
# On Click
Invidious URL copied to clipboard: 'Invidious URL をコピーしました'
From 04b1b00bd54b239ba16ad0a2a57efe6e7a316aa5 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Mon, 26 Aug 2024 01:03:05 +0000
Subject: [PATCH 128/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 2c312186fbd70..5272b43c7e21a 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -96,7 +96,7 @@ Subscriptions:
# On Subscriptions Page
Subscriptions: '登録チャンネル'
Latest Subscriptions: '最新の登録'
- 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '登録済みの登録チャンネルはありません。登録するとココに表示されます。'
+ 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '登録済みの登録チャンネルがありません。登録するとこちらに表示されます。'
'Getting Subscriptions. Please wait.': '登録を取得中。お待ちください...'
Refresh Subscriptions: 登録チャンネルの更新
Getting Subscriptions. Please wait.: 登録チャンネルの内容を取得中。しばらくお待ちください。
@@ -898,7 +898,7 @@ Share:
Share Playlist: '再生リストの共有'
Copy Link: 'リンクのコピー'
Open Link: 'リンクの表示'
- Copy Embed: '埋め込み コピー'
+ Copy Embed: '埋め込みのコピー'
Open Embed: '埋め込みの表示'
# On Click
Invidious URL copied to clipboard: 'Invidious URL をコピーしました'
From c4d8a04e9a788dcfb620b4bfa89c5bf7d1d4cc9f Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Mon, 26 Aug 2024 08:54:57 +0000
Subject: [PATCH 129/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 5272b43c7e21a..08660141a1788 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -1060,7 +1060,7 @@ Hashtags have not yet been implemented, try again later: ハッシュタグは
Unknown YouTube url type, cannot be opened in app: 不明な YouTube URL の種類、アプリで実行できません
Open New Window: 新しいウィンドウを開く
Default Invidious instance has been cleared: デフォルトの Invidious インスタンスがクリアされました
-Default Invidious instance has been set to {instance}: デフォルトの Invidious インスタンスは{instance}に設定されています
+Default Invidious instance has been set to {instance}: デフォルトの Invidious インスタンスは{instance}に設定されました
External link opening has been disabled in the general settings: 一般設定で外部リンクの表示は無効になっています
Search Bar:
Clear Input: 入力の消去
From a0372eff6aa5de7ba908e2c655edfde068fd4ae3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:40:37 -0400
Subject: [PATCH 130/489] Bump electron from 31.4.0 to 32.0.1 (#5613)
Bumps [electron](https://github.com/electron/electron) from 31.4.0 to 32.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v31.4.0...v32.0.1)
---
updated-dependencies:
- dependency-name: electron
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 287b99d2d7030..fa7795837c528 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
- "electron": "^31.4.0",
+ "electron": "^32.0.1",
"electron-builder": "^24.13.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/yarn.lock b/yarn.lock
index 881c38638b4f1..ca40d27c0fb28 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3511,10 +3511,10 @@ electron-to-chromium@^1.4.820:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
-electron@^31.4.0:
- version "31.4.0"
- resolved "https://registry.yarnpkg.com/electron/-/electron-31.4.0.tgz#fd55fd882117b09fd68b2d182c8fda2dbb7ef454"
- integrity sha512-YTwKoAA+nrJMlI1TTHnIXLYWoQLKnhbkz0qxZcI7Hadcy0UaFMFs9xzwvH2MnrRpVJy7RKo49kVGuvSdRl8zMA==
+electron@^32.0.1:
+ version "32.0.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-32.0.1.tgz#8bfc186b81a645c6b3b12f91e71db4231fd0c934"
+ integrity sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
From 4e5b34beb6a40e3496362c8a6b74d651e18cf008 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:41:10 -0400
Subject: [PATCH 131/489] Bump electron-context-menu from 4.0.1 to 4.0.2
(#5611)
Bumps [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/sindresorhus/electron-context-menu/releases)
- [Commits](https://github.com/sindresorhus/electron-context-menu/compare/v4.0.1...v4.0.2)
---
updated-dependencies:
- dependency-name: electron-context-menu
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index fa7795837c528..954a695270fe0 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"@seald-io/nedb": "^4.0.4",
"@silvermine/videojs-quality-selector": "^1.3.1",
"autolinker": "^4.0.0",
- "electron-context-menu": "^4.0.1",
+ "electron-context-menu": "^4.0.2",
"lodash.debounce": "^4.0.8",
"marked": "^14.0.0",
"path-browserify": "^1.0.1",
diff --git a/yarn.lock b/yarn.lock
index ca40d27c0fb28..755b8f4d30c16 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3465,10 +3465,10 @@ electron-builder@^24.13.3:
simple-update-notifier "2.0.0"
yargs "^17.6.2"
-electron-context-menu@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-4.0.1.tgz#973b684f87dbcb9e6cb39d4f3f7750abee858021"
- integrity sha512-tPRzsIK48gm+DDP4FLJeocrFg1rJBH7ZgQx3j4ebt5d6euM2ERAB8pdBmKyhHy7na/BiZfrw4ASMq97oVwQXgw==
+electron-context-menu@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-4.0.2.tgz#240d2db25b9556cb92ce230bf1ddf1f360ea1978"
+ integrity sha512-rlh1HsvLI+NBYh2Iu0NnXqWt1ngmG0/eRrPC0Ia3NE9NKLRr6+36IxWEr/1gNikcsWCDGhvO1mI1wjPbAi0muA==
dependencies:
cli-truncate "^4.0.0"
electron-dl "^4.0.0"
From 62181016f83ac5410ea99638c5f81e0cc98f74ab Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:41:33 -0400
Subject: [PATCH 132/489] Bump mini-css-extract-plugin from 2.9.0 to 2.9.1
(#5612)
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.9.0 to 2.9.1.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.9.0...v2.9.1)
---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 954a695270fe0..cfe13207bab49 100644
--- a/package.json
+++ b/package.json
@@ -110,7 +110,7 @@
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.0",
"lefthook": "^1.7.14",
- "mini-css-extract-plugin": "^2.9.0",
+ "mini-css-extract-plugin": "^2.9.1",
"npm-run-all2": "^6.2.2",
"postcss": "^8.4.41",
"postcss-scss": "^4.0.9",
diff --git a/yarn.lock b/yarn.lock
index 755b8f4d30c16..a5fb2945a3a12 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6000,10 +6000,10 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-mini-css-extract-plugin@^2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235"
- integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==
+mini-css-extract-plugin@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz#4d184f12ce90582e983ccef0f6f9db637b4be758"
+ integrity sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==
dependencies:
schema-utils "^4.0.0"
tapable "^2.2.1"
From 503bd48b9c07d9b7cfd5d9ea1aa6cb95a8c484a7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:42:06 -0400
Subject: [PATCH 133/489] Bump sass-loader from 16.0.0 to 16.0.1 (#5607)
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v16.0.0...v16.0.1)
---
updated-dependencies:
- dependency-name: sass-loader
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index cfe13207bab49..b7117b4b5e49a 100644
--- a/package.json
+++ b/package.json
@@ -117,7 +117,7 @@
"prettier": "^2.8.8",
"rimraf": "^6.0.1",
"sass": "^1.77.8",
- "sass-loader": "^16.0.0",
+ "sass-loader": "^16.0.1",
"stylelint": "^16.8.2",
"stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
diff --git a/yarn.lock b/yarn.lock
index a5fb2945a3a12..0b047e87864e8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7397,10 +7397,10 @@ sanitize-filename@^1.6.3:
dependencies:
truncate-utf8-bytes "^1.0.0"
-sass-loader@^16.0.0:
- version "16.0.0"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.0.tgz#9b8d497e24bc176dc368df2b5b9e90b4ad24bf4e"
- integrity sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==
+sass-loader@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.1.tgz#57049c1787076e923b21a1dccc612546ecaf4295"
+ integrity sha512-xACl1ToTsKnL9Ce5yYpRxrLj9QUDCnwZNhzpC7tKiFyA8zXsd3Ap+HGVnbCgkdQcm43E+i6oKAWBsvGA6ZoiMw==
dependencies:
neo-async "^2.6.2"
From f3e788bc169a2e4451f164343c06d41613dce2fc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:51:46 -0400
Subject: [PATCH 134/489] Bump marked from 14.0.0 to 14.1.0 (#5610)
Bumps [marked](https://github.com/markedjs/marked) from 14.0.0 to 14.1.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v14.0.0...v14.1.0)
---
updated-dependencies:
- dependency-name: marked
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index b7117b4b5e49a..9571e054b8040 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"autolinker": "^4.0.0",
"electron-context-menu": "^4.0.2",
"lodash.debounce": "^4.0.8",
- "marked": "^14.0.0",
+ "marked": "^14.1.0",
"path-browserify": "^1.0.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
diff --git a/yarn.lock b/yarn.lock
index 0b047e87864e8..8f560398ccb1e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5867,10 +5867,10 @@ m3u8-parser@4.8.0:
"@videojs/vhs-utils" "^3.0.5"
global "^4.4.0"
-marked@^14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/marked/-/marked-14.0.0.tgz#79a1477358a59e0660276f8fec76de2c33f35d83"
- integrity sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==
+marked@^14.1.0:
+ version "14.1.0"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-14.1.0.tgz#736ae774ff06ddf03e55a071f9322fe240cb89cb"
+ integrity sha512-P93GikH/Pde0hM5TAXEd8I4JAYi8IB03n8qzW8Bh1BIEFpEyBoYxi/XWZA53LSpTeLBiMQOoSMj0u5E/tiVYTA==
matcher@^3.0.0:
version "3.0.0"
From 7e9b21ce06895737ad5724254a89180467869181 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:52:18 -0400
Subject: [PATCH 135/489] Bump webpack from 5.93.0 to 5.94.0 (#5609)
Bumps [webpack](https://github.com/webpack/webpack) from 5.93.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.93.0...v5.94.0)
---
updated-dependencies:
- dependency-name: webpack
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 69 +++++++++-------------------------------------------
2 files changed, 13 insertions(+), 58 deletions(-)
diff --git a/package.json b/package.json
index 9571e054b8040..66174c33377f8 100644
--- a/package.json
+++ b/package.json
@@ -127,7 +127,7 @@
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^9.4.3",
"vue-loader": "^15.10.0",
- "webpack": "^5.93.0",
+ "webpack": "^5.94.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.0.4",
"yaml-eslint-parser": "^1.2.3"
diff --git a/yarn.lock b/yarn.lock
index 8f560398ccb1e..99108b8442d43 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1608,23 +1608,7 @@
dependencies:
"@types/ms" "*"
-"@types/eslint-scope@^3.7.3":
- version "3.7.3"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
- integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*":
- version "8.4.2"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575"
- integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
-"@types/estree@*", "@types/estree@^1.0.5":
+"@types/estree@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
@@ -1706,7 +1690,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.11"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
@@ -2511,17 +2495,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.23.0:
- version "4.23.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
- integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
- dependencies:
- caniuse-lite "^1.0.30001587"
- electron-to-chromium "^1.4.668"
- node-releases "^2.0.14"
- update-browserslist-db "^1.0.13"
-
-browserslist@^4.23.1:
+browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.23.0, browserslist@^4.23.1:
version "4.23.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
@@ -2669,11 +2643,6 @@ caniuse-lite@^1.0.0:
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz"
integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==
-caniuse-lite@^1.0.30001587:
- version "1.0.30001600"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079"
- integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
-
caniuse-lite@^1.0.30001640:
version "1.0.30001642"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f"
@@ -3501,11 +3470,6 @@ electron-publish@24.13.1:
lazy-val "^1.0.5"
mime "^2.5.2"
-electron-to-chromium@^1.4.668:
- version "1.4.715"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46"
- integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==
-
electron-to-chromium@^1.4.820:
version "1.4.827"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
@@ -3552,10 +3516,10 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
-enhanced-resolve@^5.17.0:
- version "5.17.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5"
- integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==
+enhanced-resolve@^5.17.0, enhanced-resolve@^5.17.1:
+ version "5.17.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
+ integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -8407,14 +8371,6 @@ unused-filename@^4.0.1:
escape-string-regexp "^5.0.0"
path-exists "^5.0.0"
-update-browserslist-db@^1.0.13:
- version "1.0.13"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
- integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
- dependencies:
- escalade "^3.1.1"
- picocolors "^1.0.0"
-
update-browserslist-db@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
@@ -8757,12 +8713,11 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@^5.93.0:
- version "5.93.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5"
- integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==
+webpack@^5.94.0:
+ version "5.94.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f"
+ integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==
dependencies:
- "@types/eslint-scope" "^3.7.3"
"@types/estree" "^1.0.5"
"@webassemblyjs/ast" "^1.12.1"
"@webassemblyjs/wasm-edit" "^1.12.1"
@@ -8771,7 +8726,7 @@ webpack@^5.93.0:
acorn-import-attributes "^1.9.5"
browserslist "^4.21.10"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.17.0"
+ enhanced-resolve "^5.17.1"
es-module-lexer "^1.2.1"
eslint-scope "5.1.1"
events "^3.2.0"
From 95e52679ef37dd8d36a550ed7f1df70b60beb5de Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 07:52:32 -0400
Subject: [PATCH 136/489] Bump swiper from 11.1.9 to 11.1.10 (#5608)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.1.9 to 11.1.10.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v11.1.9...v11.1.10)
---
updated-dependencies:
- dependency-name: swiper
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 66174c33377f8..d1b2efbdb6c94 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"path-browserify": "^1.0.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
- "swiper": "^11.1.9",
+ "swiper": "^11.1.10",
"video.js": "7.21.5",
"videojs-contrib-quality-levels": "^3.0.0",
"videojs-http-source-selector": "^1.1.6",
diff --git a/yarn.lock b/yarn.lock
index 99108b8442d43..42110ce4aa608 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8034,10 +8034,10 @@ svgo@^3.2.0:
csso "^5.0.5"
picocolors "^1.0.0"
-swiper@^11.1.9:
- version "11.1.9"
- resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.9.tgz#55505c7cf4723b678df8220fc06152b793585dbc"
- integrity sha512-rflu8zvfGa3x1v/aeSufk4zRJffhOQowyvtJlp46sUBnOqAuk1Rdv5Ldj0AWWBV595iZ+ZMk7VB35ZRtRUomtA==
+swiper@^11.1.10:
+ version "11.1.10"
+ resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.10.tgz#4d3df50ff8afc4960e9644ed6e5828d35ab38853"
+ integrity sha512-pAVM6vCb6bumj2B9aSh67l3wP1j5YR8dPQM1YhQKMpnBc33vs+RpyVz6NZYZl/ZopCBSYbbWK5nvESwbmU0QXQ==
synckit@^0.6.0:
version "0.6.2"
From b9229d22976080d6f54021476b77f42204846b93 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Mon, 26 Aug 2024 11:58:07 +0000
Subject: [PATCH 137/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 08660141a1788..030dc8688c915 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -389,7 +389,7 @@ Settings:
Folder Label: スクリーンショットのフォルダ
Quality Label: スクリーンショットの品質
Enable: スクリーンショットの有効化
- Format Label: スクリーンショット形式
+ Format Label: スクリーンショットの形式
Ask Path: 保存フォルダを尋ねる
Folder Button: フォルダの選択
Enter Fullscreen on Display Rotate: 画面の回転時に全画面表示にする
From 02cd2b779af50c2348f28dc88a3de15c7e1f255b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 21:30:32 +0800
Subject: [PATCH 138/489] Bump the babel group with 2 updates (#5606)
Bumps the babel group with 2 updates: [@babel/plugin-transform-class-properties](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-properties) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).
Updates `@babel/plugin-transform-class-properties` from 7.24.7 to 7.25.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.4/packages/babel-plugin-transform-class-properties)
Updates `@babel/preset-env` from 7.25.3 to 7.25.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.4/packages/babel-preset-env)
---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-class-properties"
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: babel
- dependency-name: "@babel/preset-env"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: babel
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
yarn.lock | 217 ++++++++++++++++++++++++++++++++++-----------------
2 files changed, 148 insertions(+), 73 deletions(-)
diff --git a/package.json b/package.json
index d1b2efbdb6c94..8c553ec97abb2 100644
--- a/package.json
+++ b/package.json
@@ -84,8 +84,8 @@
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/eslint-parser": "^7.25.1",
- "@babel/plugin-transform-class-properties": "^7.24.7",
- "@babel/preset-env": "^7.25.3",
+ "@babel/plugin-transform-class-properties": "^7.25.4",
+ "@babel/preset-env": "^7.25.4",
"@double-great/stylelint-a11y": "^3.0.2",
"@intlify/eslint-plugin-vue-i18n": "^3.0.0",
"babel-loader": "^9.1.3",
diff --git a/yarn.lock b/yarn.lock
index 42110ce4aa608..6406bd3c04373 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -28,10 +28,10 @@
"@babel/highlight" "^7.24.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2":
- version "7.25.2"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5"
- integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2", "@babel/compat-data@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb"
+ integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
"@babel/core@^7.25.2":
version "7.25.2"
@@ -73,6 +73,16 @@
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
+"@babel/generator@^7.25.4":
+ version "7.25.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.5.tgz#b31cf05b3fe8c32d206b6dad03bb0aacbde73450"
+ integrity sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==
+ dependencies:
+ "@babel/types" "^7.25.4"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
@@ -106,19 +116,17 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b"
- integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==
+"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14"
+ integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-function-name" "^7.24.7"
- "@babel/helper-member-expression-to-functions" "^7.24.7"
+ "@babel/helper-member-expression-to-functions" "^7.24.8"
"@babel/helper-optimise-call-expression" "^7.24.7"
- "@babel/helper-replace-supers" "^7.24.7"
+ "@babel/helper-replace-supers" "^7.25.0"
"@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
+ "@babel/traverse" "^7.25.4"
semver "^6.3.1"
"@babel/helper-create-regexp-features-plugin@^7.18.6":
@@ -147,6 +155,15 @@
regexpu-core "^5.3.1"
semver "^6.3.1"
+"@babel/helper-create-regexp-features-plugin@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9"
+ integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.24.7"
+ regexpu-core "^5.3.1"
+ semver "^6.3.1"
+
"@babel/helper-define-polyfill-provider@^0.6.1":
version "0.6.1"
resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd"
@@ -158,6 +175,17 @@
lodash.debounce "^4.0.8"
resolve "^1.14.2"
+"@babel/helper-define-polyfill-provider@^0.6.2":
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d"
+ integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+
"@babel/helper-environment-visitor@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
@@ -271,13 +299,6 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-split-export-declaration@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856"
- integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==
- dependencies:
- "@babel/types" "^7.24.7"
-
"@babel/helper-string-parser@^7.24.8":
version "7.24.8"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
@@ -337,6 +358,13 @@
dependencies:
"@babel/types" "^7.25.2"
+"@babel/parser@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a"
+ integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==
+ dependencies:
+ "@babel/types" "^7.25.4"
+
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3":
version "7.25.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f"
@@ -515,15 +543,15 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-async-generator-functions@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf"
- integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==
+"@babel/plugin-transform-async-generator-functions@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz#2afd4e639e2d055776c9f091b6c0c180ed8cf083"
+ integrity sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==
dependencies:
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-remap-async-to-generator" "^7.25.0"
"@babel/plugin-syntax-async-generators" "^7.8.4"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.4"
"@babel/plugin-transform-async-to-generator@^7.24.7":
version "7.24.7"
@@ -548,13 +576,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.8"
-"@babel/plugin-transform-class-properties@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834"
- integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==
+"@babel/plugin-transform-class-properties@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz#bae7dbfcdcc2e8667355cd1fb5eda298f05189fd"
+ integrity sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.4"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-class-static-block@^7.24.7":
version "7.24.7"
@@ -565,16 +593,16 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
-"@babel/plugin-transform-classes@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e"
- integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==
+"@babel/plugin-transform-classes@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz#d29dbb6a72d79f359952ad0b66d88518d65ef89a"
+ integrity sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-compilation-targets" "^7.24.8"
+ "@babel/helper-compilation-targets" "^7.25.2"
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-replace-supers" "^7.25.0"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.4"
globals "^11.1.0"
"@babel/plugin-transform-computed-properties@^7.24.7":
@@ -794,13 +822,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-private-methods@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e"
- integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==
+"@babel/plugin-transform-private-methods@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz#9bbefbe3649f470d681997e0b64a4b254d877242"
+ integrity sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.4"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-private-property-in-object@^7.24.7":
version "7.24.7"
@@ -893,20 +921,20 @@
"@babel/helper-create-regexp-features-plugin" "^7.24.7"
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-unicode-sets-regex@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9"
- integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==
+"@babel/plugin-transform-unicode-sets-regex@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz#be664c2a0697ffacd3423595d5edef6049e8946c"
+ integrity sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.2"
+ "@babel/helper-plugin-utils" "^7.24.8"
-"@babel/preset-env@^7.25.3":
- version "7.25.3"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c"
- integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==
+"@babel/preset-env@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.4.tgz#be23043d43a34a2721cd0f676c7ba6f1481f6af6"
+ integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==
dependencies:
- "@babel/compat-data" "^7.25.2"
+ "@babel/compat-data" "^7.25.4"
"@babel/helper-compilation-targets" "^7.25.2"
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-validator-option" "^7.24.8"
@@ -935,13 +963,13 @@
"@babel/plugin-syntax-top-level-await" "^7.14.5"
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
"@babel/plugin-transform-arrow-functions" "^7.24.7"
- "@babel/plugin-transform-async-generator-functions" "^7.25.0"
+ "@babel/plugin-transform-async-generator-functions" "^7.25.4"
"@babel/plugin-transform-async-to-generator" "^7.24.7"
"@babel/plugin-transform-block-scoped-functions" "^7.24.7"
"@babel/plugin-transform-block-scoping" "^7.25.0"
- "@babel/plugin-transform-class-properties" "^7.24.7"
+ "@babel/plugin-transform-class-properties" "^7.25.4"
"@babel/plugin-transform-class-static-block" "^7.24.7"
- "@babel/plugin-transform-classes" "^7.25.0"
+ "@babel/plugin-transform-classes" "^7.25.4"
"@babel/plugin-transform-computed-properties" "^7.24.7"
"@babel/plugin-transform-destructuring" "^7.24.8"
"@babel/plugin-transform-dotall-regex" "^7.24.7"
@@ -969,7 +997,7 @@
"@babel/plugin-transform-optional-catch-binding" "^7.24.7"
"@babel/plugin-transform-optional-chaining" "^7.24.8"
"@babel/plugin-transform-parameters" "^7.24.7"
- "@babel/plugin-transform-private-methods" "^7.24.7"
+ "@babel/plugin-transform-private-methods" "^7.25.4"
"@babel/plugin-transform-private-property-in-object" "^7.24.7"
"@babel/plugin-transform-property-literals" "^7.24.7"
"@babel/plugin-transform-regenerator" "^7.24.7"
@@ -982,10 +1010,10 @@
"@babel/plugin-transform-unicode-escapes" "^7.24.7"
"@babel/plugin-transform-unicode-property-regex" "^7.24.7"
"@babel/plugin-transform-unicode-regex" "^7.24.7"
- "@babel/plugin-transform-unicode-sets-regex" "^7.24.7"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.25.4"
"@babel/preset-modules" "0.1.6-no-external-plugins"
babel-plugin-polyfill-corejs2 "^0.4.10"
- babel-plugin-polyfill-corejs3 "^0.10.4"
+ babel-plugin-polyfill-corejs3 "^0.10.6"
babel-plugin-polyfill-regenerator "^0.6.1"
core-js-compat "^3.37.1"
semver "^6.3.1"
@@ -1040,6 +1068,19 @@
debug "^4.3.1"
globals "^11.1.0"
+"@babel/traverse@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.4.tgz#648678046990f2957407e3086e97044f13c3e18e"
+ integrity sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==
+ dependencies:
+ "@babel/code-frame" "^7.24.7"
+ "@babel/generator" "^7.25.4"
+ "@babel/parser" "^7.25.4"
+ "@babel/template" "^7.25.0"
+ "@babel/types" "^7.25.4"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
"@babel/types@^7.18.6", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4":
version "7.25.2"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125"
@@ -1049,6 +1090,15 @@
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.25.4":
+ version "7.25.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.4.tgz#6bcb46c72fdf1012a209d016c07f769e10adcb5f"
+ integrity sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==
+ dependencies:
+ "@babel/helper-string-parser" "^7.24.8"
+ "@babel/helper-validator-identifier" "^7.24.7"
+ to-fast-properties "^2.0.0"
+
"@csstools/css-parser-algorithms@^2.6.1":
version "2.7.1"
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
@@ -2373,13 +2423,13 @@ babel-plugin-polyfill-corejs2@^0.4.10:
"@babel/helper-define-polyfill-provider" "^0.6.1"
semver "^6.3.1"
-babel-plugin-polyfill-corejs3@^0.10.4:
- version "0.10.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77"
- integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==
+babel-plugin-polyfill-corejs3@^0.10.6:
+ version "0.10.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7"
+ integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.1"
- core-js-compat "^3.36.1"
+ "@babel/helper-define-polyfill-provider" "^0.6.2"
+ core-js-compat "^3.38.0"
babel-plugin-polyfill-regenerator@^0.6.1:
version "0.6.1"
@@ -2505,6 +2555,16 @@ browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.23.0, browserslist@^
node-releases "^2.0.14"
update-browserslist-db "^1.1.0"
+browserslist@^4.23.3:
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
+ integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
+ dependencies:
+ caniuse-lite "^1.0.30001646"
+ electron-to-chromium "^1.5.4"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.0"
+
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@@ -2648,6 +2708,11 @@ caniuse-lite@^1.0.30001640:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f"
integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==
+caniuse-lite@^1.0.30001646:
+ version "1.0.30001653"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56"
+ integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -2930,12 +2995,12 @@ copy-webpack-plugin@^12.0.2:
schema-utils "^4.2.0"
serialize-javascript "^6.0.2"
-core-js-compat@^3.36.1, core-js-compat@^3.37.0, core-js-compat@^3.37.1:
- version "3.37.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee"
- integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==
+core-js-compat@^3.37.0, core-js-compat@^3.37.1, core-js-compat@^3.38.0:
+ version "3.38.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09"
+ integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==
dependencies:
- browserslist "^4.23.0"
+ browserslist "^4.23.3"
core-util-is@1.0.2:
version "1.0.2"
@@ -3475,6 +3540,11 @@ electron-to-chromium@^1.4.820:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
+electron-to-chromium@^1.5.4:
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6"
+ integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==
+
electron@^32.0.1:
version "32.0.1"
resolved "https://registry.yarnpkg.com/electron/-/electron-32.0.1.tgz#8bfc186b81a645c6b3b12f91e71db4231fd0c934"
@@ -6129,6 +6199,11 @@ node-releases@^2.0.14:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+node-releases@^2.0.18:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
+ integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
+
normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
From 4c60860a0a304bca3432998557337435cd8c7f69 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 21:30:51 +0800
Subject: [PATCH 139/489] Bump micromatch from 4.0.7 to 4.0.8 (#5614)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)
---
updated-dependencies:
- dependency-name: micromatch
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
yarn.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index 6406bd3c04373..e12be05adb0b4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5978,9 +5978,9 @@ methods@~1.1.2:
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
- integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
braces "^3.0.3"
picomatch "^2.3.1"
From cf8b65e720fc4ae2d7a07f86a375fc0c8a09e6df Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Mon, 26 Aug 2024 15:26:29 +0000
Subject: [PATCH 140/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 030dc8688c915..943450e959ba2 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -96,7 +96,7 @@ Subscriptions:
# On Subscriptions Page
Subscriptions: '登録チャンネル'
Latest Subscriptions: '最新の登録'
- 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '登録済みの登録チャンネルがありません。登録するとこちらに表示されます。'
+ 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '登録チャンネルリストは空です。チャンネル登録をするとこちらに表示されます。'
'Getting Subscriptions. Please wait.': '登録を取得中。お待ちください...'
Refresh Subscriptions: 登録チャンネルの更新
Getting Subscriptions. Please wait.: 登録チャンネルの内容を取得中。しばらくお待ちください。
@@ -104,7 +104,7 @@ Subscriptions:
RSS を使用します
Load More Videos: もっと見る
Error Channels: エラーが発生したチャンネル
- Disabled Automatic Fetching: サブスクリプションの自動取得を無効にしました。サブスクリプションを更新して、ここで確認します。
+ Disabled Automatic Fetching: 登録チャンネルの自動取得が無効になっています。動画を表示するには更新をしてください。
Empty Channels: 現在、チャンネル登録しているチャンネルには動画がありません。
Subscriptions Tabs: 登録チャンネル タブ
All Subscription Tabs Hidden: 全ての登録チャンネル タブが非表示になっています。こちらのコンテンツをご覧いただくには、"{settingsSection}"
@@ -386,7 +386,7 @@ Settings:
Error:
Forbidden Characters: 使用禁止文字
Empty File Name: 空のファイル名
- Folder Label: スクリーンショットのフォルダ
+ Folder Label: スクリーンショットの保存先
Quality Label: スクリーンショットの品質
Enable: スクリーンショットの有効化
Format Label: スクリーンショットの形式
@@ -409,8 +409,8 @@ Settings:
How do I import my subscriptions?: 'どうやってインポートするのですか?'
Fetch Feeds from RSS: RSS から情報取得
Fetch Automatically: フィードの自動取得
- Confirm Before Unsubscribing: 登録解除する前に確認する
- Only Show Latest Video for Each Channel: 各チャンネルの最新の動画のみを表示する
+ Confirm Before Unsubscribing: 登録解除する前に確認画面を表示する
+ Only Show Latest Video for Each Channel: 各チャンネルの最新動画のみを表示する
Advanced Settings:
Advanced Settings: '詳細設定'
Enable Debug Mode (Prints data to the console): 'デバッグ モードの有効化(コンソールにデータ出力)'
@@ -446,7 +446,7 @@ Settings:
Privacy Settings: プライバシーの設定
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。
Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除
- Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存
+ Save Watched Videos With Last Viewed Playlist: 視聴済み動画を最後に見た再生リストと共に保存する
Remove All Playlists: 再生リストをすべて削除
All playlists have been removed: すべての再生リストが削除されました
Are you sure you want to remove all your playlists?: すべての再生リストを削除してもよろしいですか?
@@ -486,7 +486,7 @@ Settings:
All playlists has been successfully exported: すべての再生リストが正常にエクスポートされました
Import Playlists: 再生リストのインポート
Export Playlists: 再生リストのエキスポート
- Subscription File: サブスクリプション ファイル
+ Subscription File: 登録チャンネル ファイル
History File: 履歴ファイル
Playlist File: 再生リスト
Export Playlists For Older FreeTube Versions:
@@ -512,7 +512,7 @@ Settings:
Hide Sharing Actions: 共有ボタンの非表示
Hide Chapters: チャプターの非表示
Hide Upcoming Premieres: 今後のプレミア公開を非表示
- Hide Channels: チャンネルから動画を非表示
+ Hide Channels: チャンネルから動画を非表示にする
Hide Channels Placeholder: チャンネル ID
Display Titles Without Excessive Capitalisation: 過剰な大文字や句読点のないタイトルの表示
Hide Channel Playlists: チャンネル再生リストの非表示
@@ -779,9 +779,9 @@ Video:
Mark As Watched: 視聴済みに変更
Autoplay: 自動再生
Play Previous Video: 前の動画を再生
- Play Next Video: 次の動画の再生
+ Play Next Video: 次の動画を再生
Reverse Playlist: 再生リストを逆順にする
- Shuffle Playlist: 再生リストのシャッフル
+ Shuffle Playlist: 再生リストをシャッフル
Loop Playlist: 再生リストのループ
Starting soon, please refresh the page to check again: すぐに再生されます、ページを再読み込みしてお待ちください
Audio:
@@ -853,7 +853,7 @@ Video:
Scroll to Bottom: 下までスクロール
Upcoming: 今後の配信予定
'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': この配信ではライブチャットは使用できません。配信者によって無効に設定されているようです。
- Pause on Current Video: 現在の動画の一時停止
+ Pause on Current Video: 現在の動画を一時停止
Hide Channel: チャンネルを非表示
Unhide Channel: チャンネルを表示
More Options: その他の設定
@@ -928,7 +928,7 @@ Comments:
Newest first: 新しい順
No more comments available: これ以上のコメントはありません
Sort by: 並べ替え
- Show More Replies: その他の返信を表示する
+ Show More Replies: 返信をもっと見る
And others: その他
Pinned by: ピン留め
From {channelName}: '{channelName} から'
@@ -948,10 +948,10 @@ Loop is now disabled: 'ループ再生を無効にしました'
Loop is now enabled: 'ループ再生を有効にしました'
Shuffle is now disabled: 'シャッフル再生を無効にしました'
Shuffle is now enabled: 'シャッフル再生を有効にしました'
-Playing Next Video: '次の動画の再生'
+Playing Next Video: '次の動画を再生'
Playing Previous Video: '前の動画を再生'
Canceled next video autoplay: '次の動画の自動再生をキャンセルしました'
-'The playlist has ended. Enable loop to continue playing': '再生リストの最後に到達しました。再生を続けるにはループを有効にします'
+'The playlist has ended. Enable loop to continue playing': '再生リストが終了しました。再生を続けるにはループを有効にしてください'
Yes: 'はい'
No: 'いいえ'
@@ -1009,7 +1009,7 @@ Tooltips:
Subscription Settings:
Fetch Feeds from RSS: 有効にすると、FreeTube は、登録チャンネルの情報を、通常の方法の代わりに RSS から取得します。RSS
は高速であり IP 制限も回避できますが、動画の長さやライブ配信の状態などの詳細情報は提供されていません
- Fetch Automatically: 有効にすると、FreeTube は新しいウィンドウを開くとき、およびプロファイルを切り替えるときに、サブスクリプション
+ Fetch Automatically: 有効にすると、FreeTube は新しいウィンドウを開くとき、およびプロファイルを切り替えるときに、登録チャンネル
フィードを自動的に取得します。
Player Settings:
Default Video Format: 動画再生で使用する形式の設定です。DASH 形式であれば高品質で再生できます。旧形式だと、最大 720p に制限されますが、使用する帯域幅を減らせます。音声形式は音声のみです。
@@ -1095,7 +1095,7 @@ Hashtag:
Hashtag: ハッシュタグ
This hashtag does not currently have any videos: このハッシュタグには現在動画がありません
Playlist will pause when current video is finished: 現在の動画が終了すると、再生リストが一時停止します
-Playlist will not pause when current video is finished: 現在のビデオが終了しても、再生リストは一旦停止しません
+Playlist will not pause when current video is finished: 現在の動画が終了しても、再生リストは一旦停止しません
Close Banner: バナーを閉じる
Go to page: '{page} を表示'
Search character limit: 検索クエリは {searchCharacterLimit} 文字制限を超えています
@@ -1118,7 +1118,7 @@ checkmark: ✓
Moments Ago: たった今
Age Restricted:
This video is age restricted: この動画には年齢制限があります
- This channel is age restricted: このチャンネルは年齢制限があります
+ This channel is age restricted: このチャンネルには年齢制限があります
Trimmed input must be at least N characters long: トリミングされた入力は少なくとも1文字以上でなければなりません
| トリミングされた入力は少なくとも {length} 文字以上でなければなりません
'Blocked opening potentially unsafe URL': '安全でない可能性のあるURLをブロックしました: "{url}"。'
From 9069d2083ac8650852f999d60beed591d82cb69f Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Tue, 27 Aug 2024 06:20:39 +0000
Subject: [PATCH 141/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 943450e959ba2..5b34fdf682d36 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -71,8 +71,8 @@ Search Filters:
Duration:
Duration: '動画時間'
All Durations: 'すべての長さ'
- Short (< 4 minutes): '短編(4 分未満)'
- Long (> 20 minutes): '長編(20 分以上)'
+ Short (< 4 minutes): '短編(< 4 分未満)'
+ Long (> 20 minutes): '長編(> 20 分以上)'
# On Search Page
Medium (4 - 20 minutes): 中編(4 - 20 分間)
Search Results: '検索結果'
@@ -477,7 +477,7 @@ Settings:
Import Subscriptions: 登録者のインポート
Select Export Type: エクスポート形式の選択
Select Import Type: インポート形式の選択
- Data Settings: データ設定
+ Data Settings: データの設定
One or more subscriptions were unable to be imported: いくつかの登録チャンネルはインポートできませんでした
Check for Legacy Subscriptions: 旧型式の登録チャンネルの確認
Manage Subscriptions: 登録チャンネルの管理
@@ -503,7 +503,7 @@ Settings:
Hide Channel Subscribers: チャンネル登録者数の非表示
Hide Video Views: 再生数の非表示
Hide Video Likes And Dislikes: 評価の非表示
- Distraction Free Settings: 集中モード設定
+ Distraction Free Settings: 集中モードの設定
Hide Active Subscriptions: 登録チャンネルの非表示
Hide Playlists: 再生リストの非表示
Hide Video Description: 動画説明の非表示
@@ -535,7 +535,7 @@ Settings:
Hide Subscriptions Community: 登録チャンネルのコミュニティの非表示
Hide Channels Invalid: 提供されたチャンネル ID が無効です
Hide Channels Disabled Message: 一部のチャンネルが ID を使用してブロックされ、処理されませんでした。これらの ID が更新されている間、機能はブロックされます
- Hide Channels Already Exists: 既に存在するチャンネル ID
+ Hide Channels Already Exists: チャンネル ID は既に存在します
Hide Channels API Error: 指定されたIDのユーザーを検索する際にエラーが発生しました。IDが正しいかもう一度確認してください。
Hide Videos and Playlists Containing Text Placeholder: 単語、単語の一部、またはフレーズ
Hide Videos and Playlists Containing Text: 特定のテキストを含む動画と再生リストを非表示にする
@@ -599,8 +599,8 @@ Settings:
Warning:
これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください!
Password Settings:
- Password Settings: パスワード設定
- Set Password To Prevent Access: 設定にアクセスするためのパスワードを設定する
+ Password Settings: パスワードの設定
+ Set Password To Prevent Access: 設定にアクセスするためのパスワードの設定
Set Password: パスワードの設定
Remove Password: パスワードの削除
Password Dialog:
@@ -641,10 +641,10 @@ About:
Donate: 寄付
FreeTube is made possible by: FreeTube が実現できているのは
these people and projects: これらの人々とプロジェクトのおかげです
- Credits: 著作権
+ Credits: クレジット
Translate: 翻訳
- room rules: ルームの規則について
- Please read the: 次をお読みください
+ room rules: ルームの規則
+ Please read the: '次をお読みください:'
Chat on Matrix: Matrix でチャット
Mastodon: マストドン
Email: メールアドレス
@@ -796,7 +796,7 @@ Video:
Open Channel in Invidious: Invidious でチャンネル表示
Copy YouTube Channel Link: YouTube チャンネルへのリンクのコピー
Open Channel in YouTube: YouTube でチャンネル表示
- Started streaming on: ライブ配信の開始
+ Started streaming on: ライブ開始日
Streamed on: ライブ配信
Video has been removed from your saved list: 動画を保存一覧から削除しました
Video has been saved: 動画を保存しました
@@ -827,7 +827,7 @@ Video:
playlist: 再生リスト
video: 動画
OpenInTemplate: '{externalPlayer} で開く'
- Premieres on: プレミア公開
+ Premieres on: プレミア公開日時
Stats:
player resolution: 表示領域
fps: FPS
@@ -851,7 +851,7 @@ Video:
Premieres: プレミア公開
Show Super Chat Comment: Super Chat のコメント表示
Scroll to Bottom: 下までスクロール
- Upcoming: 今後の配信予定
+ Upcoming: 近日公開
'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': この配信ではライブチャットは使用できません。配信者によって無効に設定されているようです。
Pause on Current Video: 現在の動画を一時停止
Hide Channel: チャンネルを非表示
@@ -992,7 +992,7 @@ Profile:
same channels will be deleted in any profile they are found in.
: これはあなたのメインのプロファイルです。選択したチャンネルを本当に削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
Profile Filter: プロファイルのフィルター
- Profile Settings: プロファイル設定
+ Profile Settings: プロファイルの設定
Toggle Profile List: プロファイル一覧の切替
Create Profile Name: プロファイル名を作成
Profile Name: プロファイル名
@@ -1098,7 +1098,7 @@ Playlist will pause when current video is finished: 現在の動画が終了す
Playlist will not pause when current video is finished: 現在の動画が終了しても、再生リストは一旦停止しません
Close Banner: バナーを閉じる
Go to page: '{page} を表示'
-Search character limit: 検索クエリは {searchCharacterLimit} 文字制限を超えています
+Search character limit: 検索クエリが {searchCharacterLimit} 文字の制限を超えています
Feed:
Feed Last Updated: '{feedName} フィードの最終更新日時: {date}'
Refresh Feed: '{subscriptionName} の更新'
From a09b5ac6e4c5cab6db0fdaa5c08a6640e79c94b7 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Tue, 27 Aug 2024 08:52:25 +0000
Subject: [PATCH 142/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 5b34fdf682d36..9d434d8d2e43c 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -567,7 +567,7 @@ Settings:
Prompt To Skip: プロンプトをスキップ
Do Nothing: 何もしない
Category Color: カテゴリの色
- UseDeArrowTitles: 動画タイトルに DeArrow を使用する
+ UseDeArrowTitles: DeArrow の動画タイトルを使用する
UseDeArrowThumbnails: DeArrow のサムネイルを使用する
'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': DeArrow
Thumbnail Generator API Url (デフォルト https://dearrow-thumb.ajay.app)
@@ -583,7 +583,7 @@ Settings:
Ignore Default Arguments: デフォルト引数を無視する
Download Settings:
Download Settings: ダウンロードの設定
- Ask Download Path: ダウンロードパスの設定
+ Ask Download Path: ダウンロードパスを尋ねる
Choose Path: パスの選択
Download Behavior: ダウンロードの処理方法
Open in web browser: Web ブラウザで開く
From 52440b079b848e230bff71d7b4315e5468932fe1 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Tue, 27 Aug 2024 13:48:23 +0000
Subject: [PATCH 143/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 9d434d8d2e43c..f0e2a6e6acf4f 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -262,7 +262,8 @@ Settings:
Set Current Instance as Default: 現在のインスタンスを既定として設定する
Current instance will be randomized on startup: 現在のインスタンスは起動時にランダム化されます
No default instance has been set: 既定のインスタンスが設定されていません
- The currently set default instance is {instance}: 現在設定されている既定のインスタンスは {instance}です
+ The currently set default instance is {instance}: 現在設定されているインスタンスは {instance}
+ です
Current Invidious Instance: 現在の invidious インスタンス
External Link Handling:
No Action: 何もしない
@@ -337,7 +338,7 @@ Settings:
Solarized Blue: ソラライズド・ブルー
Secondary Color Theme: 'テーマのアクセント カラー'
#* Main Color Theme
- UI Scale: UI 縮尺率
+ UI Scale: UIの拡大率
Expand Side Bar by Default: 幅広のサイド バーで起動
Disable Smooth Scrolling: スムーズ スクロールの無効化
Hide Side Bar Labels: サイドバー ラベルの非表示
From 7bb59919011f86a92f6eafb89a17aa43f2b9599e Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Wed, 28 Aug 2024 01:53:06 +0000
Subject: [PATCH 144/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index f0e2a6e6acf4f..496dc7ba18eac 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -475,25 +475,25 @@ Settings:
Import NewPipe: NewPipe インポート
Import FreeTube: FreeTube インポート
Export Subscriptions: 登録チャンネルのエクスポート
- Import Subscriptions: 登録者のインポート
+ Import Subscriptions: 登録チャンネルのインポート
Select Export Type: エクスポート形式の選択
Select Import Type: インポート形式の選択
Data Settings: データの設定
One or more subscriptions were unable to be imported: いくつかの登録チャンネルはインポートできませんでした
Check for Legacy Subscriptions: 旧型式の登録チャンネルの確認
Manage Subscriptions: 登録チャンネルの管理
- Playlist insufficient data: 再生リスト"{playlist}"のデータが不完全なため、このアイテムは飛ばされます
- All playlists has been successfully imported: 全ての再生リストは成功にインポートされました
+ Playlist insufficient data: 再生リスト「{playlist}」のデータが不十分なため、項目をスキップします
+ All playlists has been successfully imported: すべての再生リストが正常にインポートされました
All playlists has been successfully exported: すべての再生リストが正常にエクスポートされました
Import Playlists: 再生リストのインポート
- Export Playlists: 再生リストのエキスポート
+ Export Playlists: 再生リストのエクスポート
Subscription File: 登録チャンネル ファイル
History File: 履歴ファイル
Playlist File: 再生リスト
Export Playlists For Older FreeTube Versions:
Label: 古いバージョンの FreeTube 用に再生リストをエクスポートする
Tooltip: "このオプションは、すべての再生リストから動画をエクスポートし、1つの再生リスト「Favorites」にまとめます。\n古いバージョンのFreeTube用に再生リストの動画をエクスポートおよびインポートする方法は以下の通りです:\n
- 1. このオプションを有効にして再生リストをエクスポートします。\n2. プライバシー設定の「すべての再生リストを削除」オプションを使用して、既存のすべての再生リストを削除します。\n
+ 1. このオプションを有効にして再生リストをエクスポートします。\n2. プライバシー設定の「再生リストをすべて削除」オプションを使用して、既存のすべての再生リストを削除します。\n
3. 古いバージョンのFreeTubeを起動し、エクスポートした再生リストをインポートします。"
Distraction Free Settings:
Hide Live Chat: ライブチャットの非表示
From d84986b046b2b39bc923fe47db23f64568a7edad Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Wed, 28 Aug 2024 04:57:56 +0000
Subject: [PATCH 145/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 496dc7ba18eac..c231f7e6e5628 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -696,7 +696,7 @@ Channel:
Details: 詳細
Joined: 参加日
Location: 場所
- Added channel to your subscriptions: 登録にチャンネルを追加しました
+ Added channel to your subscriptions: チャンネルを登録しました
Channel has been removed from your subscriptions: チャンネルがあなたの登録チャンネルから削除されました
Removed subscription from {count} other channel(s): ほかの {count} チャンネルから登録を削除しました
Community:
From 385a40aa823113dfc7deb346fea00108b8ce90e0 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Wed, 28 Aug 2024 11:44:33 +0000
Subject: [PATCH 146/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index c231f7e6e5628..30dec1839e148 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -922,7 +922,7 @@ Comments:
Hide: '非表示'
Replies: '返信'
Reply: '返信'
- There are no comments available for this video: 'この動画へのコメントはありません'
+ There are no comments available for this video: 'この動画にはコメントがありません'
Load More Comments: 'もっと見る'
There are no more comments for this video: この動画へのコメントはまだありません
Top comments: 評価順
From 8773cde05f9af0bbf10063ca4f51aa9fdb4b5e87 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Wed, 28 Aug 2024 14:42:07 +0000
Subject: [PATCH 147/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 30dec1839e148..8d0053b0277aa 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -507,7 +507,7 @@ Settings:
Distraction Free Settings: 集中モードの設定
Hide Active Subscriptions: 登録チャンネルの非表示
Hide Playlists: 再生リストの非表示
- Hide Video Description: 動画説明の非表示
+ Hide Video Description: 動画概要欄の非表示
Hide Comments: コメントの非表示
Hide Live Streams: ライブ配信の非表示
Hide Sharing Actions: 共有ボタンの非表示
@@ -1016,14 +1016,14 @@ Tooltips:
Default Video Format: 動画再生で使用する形式の設定です。DASH 形式であれば高品質で再生できます。旧形式だと、最大 720p に制限されますが、使用する帯域幅を減らせます。音声形式は音声のみです。
Force Local Backend for Legacy Formats: これは、Invidious API が有効の場合にのみ機能します。有効にすると内部APIが実行され、Invidiousが返す形式ではなく、その内部APIが返す旧形式を使用します。Invidious
から返された動画が国の制限で再生できない場合に役立ちます。
- Proxy Videos Through Invidious: 動画を取得するため、YouTube ではなく Invidious に接続します。API 設定を書き換えます。
+ Proxy Videos Through Invidious: YouTube に直接接続せず、Invidious に接続します。これによりAPIの設定が上書きされます。
Scroll Playback Rate Over Video Player: カーソルが動画上にあるとき、Ctrl キー(Mac では Command キー)を押したまま、マウスホイールを前後にスクロールして再生速度を調整します。Control
キー(Mac では Command キー)を押したままマウスを左クリックすると、すぐにデフォルトの再生速度(設定を変更していない場合は 1 x)に戻ります。
- Skip by Scrolling Over Video Player: スクロール ホイールを使用して、ビデオ、MPV スタイルをスキップします。
+ Skip by Scrolling Over Video Player: MPVスタイルでスクロールホイールを使って動画をスキップします。
Allow DASH AV1 formats: DASH H.264形式よりもDASH AV1形式の方がきれいに見える可能性がありますが、再生にはより多くの処理能力が必要となります。DASH
AV1形式を使用できない場合、プレイヤーはDASH H.264形式を自動で使用します。
General Settings:
- Invidious Instance: FreeTube が使用する Invidious API の接続先サーバーです。
+ Invidious Instance: FreeTube が API 呼び出しのために接続する Invidious のインスタンスです。
Preferred API Backend: FreeTube がデータを取得するために使用する方法を選択してください。内部 API はアプリ内蔵の取得機能です。
Invidious API は、 Invidious サーバーへの接続が必要です。
Thumbnail Preference: FreeTube のすべてのサムネイルを、元のサムネイルの代わりに動画の 1 コマに置き換えます。
@@ -1034,13 +1034,13 @@ Tooltips:
はクリックしたリンクをデフォルトのブラウザで開きます。\n"
External Player Settings:
Custom External Player Arguments: '";"、セミコロンで区切られたカスタム コマンド ライン引数を外部プレーヤーに渡します。'
- Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(再生リストの反転など)に警告を抑制します。
+ Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(再生リストを逆順にするなど)に警告を抑制します。
Custom External Player Executable: デフォルトでは、FreeTube は選択した外部プレーヤーが PATH 環境変数を介して見つかると想定します。必要に応じて、カスタム
パスをここで設定できます。
External Player: 外部プレーヤーを選択すると、動画(対応している場合は再生リスト)を開くためのアイコンがサムネイルに表示されます。警告:Invidious
の設定は、外部プレーヤーには影響しません。
DefaultCustomArgumentsTemplate: "(デフォルト: '{defaultCustomArguments}')"
- Ignore Default Arguments: 動画のURL以外のデフォルトの引数(再生速度、再生リストのURLなど)を外部プレーヤーに送信しないでください。カスタム引数はそのまま引き継がれます。
+ Ignore Default Arguments: 動画の URL 以外のデフォルトの引数(再生速度、再生リストの URL など)を外部プレーヤーに送信しないでください。カスタム引数はそのまま引き継がれます。
Experimental Settings:
Replace HTTP Cache: Electron のディスクに基づく HTTP キャッシュを無効化し、メモリ内で独自の画像キャッシュを使用します。このことにより
RAM の使用率は増加します。
From 6d9dbd8b95233ccbc5c9f1eb357475dfdfba0ead Mon Sep 17 00:00:00 2001
From: Alex Gabilondo
Date: Wed, 28 Aug 2024 20:01:33 +0000
Subject: [PATCH 148/489] Translated using Weblate (Basque)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/
---
static/locales/eu.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml
index f68c8b31bc41b..bf40cbe56b292 100644
--- a/static/locales/eu.yaml
+++ b/static/locales/eu.yaml
@@ -264,6 +264,7 @@ History:
Your history list is currently empty.: 'Zure historia-zerrenda hutsik dago une honetan.'
Empty Search Message: Ez dago historikoan zure bilaketarekin bat datorren bideorik
Search bar placeholder: Bilatu historikoan
+ Case Sensitive Search: Maiuskulak eta minuskulak bereizten ditu
Settings:
# On Settings Page
Settings: 'Ezarpenak'
From e87829be7dbce2ab5e543740d8bebb394179f9ec Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Thu, 29 Aug 2024 10:16:26 +0000
Subject: [PATCH 149/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 8d0053b0277aa..38d7732444707 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -652,7 +652,7 @@ About:
Blog: ブログ
Website: WEB サイト
Please check for duplicates before posting: 投稿する前に重複を確認してください
- GitHub issues: GitHub の課題ツール
+ GitHub issues: GitHub の課題
Report a problem: 問題の報告
FAQ: よくある質問
FreeTube Wiki: FreeTube の Wiki
From 492f2245d16d7d6a5d0da4a088095c3be39e5dd8 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Thu, 29 Aug 2024 13:37:45 +0000
Subject: [PATCH 150/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (869 of 869 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index 38d7732444707..33ed2be0d748a 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -1058,7 +1058,7 @@ Playing Next Video Interval: すぐに次の動画を再生します。クリッ
秒で再生します。クリックするとキャンセル。|次の動画を {nextVideoInterval} 秒で再生します。クリックするとキャンセル。
More: もっと見る
Hashtags have not yet been implemented, try again later: ハッシュタグは未実装です。実装後に実行してください
-Unknown YouTube url type, cannot be opened in app: 不明な YouTube URL の種類、アプリで実行できません
+Unknown YouTube url type, cannot be opened in app: 不明な YouTube URL タイプのため、アプリで開くことができません
Open New Window: 新しいウィンドウを開く
Default Invidious instance has been cleared: デフォルトの Invidious インスタンスがクリアされました
Default Invidious instance has been set to {instance}: デフォルトの Invidious インスタンスは{instance}に設定されました
From 7c4e2de33f0a330a411d87ec9be971b71c8e67ba Mon Sep 17 00:00:00 2001
From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Date: Sun, 1 Sep 2024 21:28:23 -0400
Subject: [PATCH 151/489] Don't make requests when importing subscriptions
(#5617)
* Don't make requests when importing subscriptions
* Remove unused string
* Fix SubscribedChannels page when thumbnail is missing
* Get thumbnail from parsed header when using local api for subscribedchannels view
* Remove unused async and unused computed properties
* filter freetube.db subs by id not name
---
.../components/data-settings/data-settings.js | 343 ++++--------------
.../ft-channel-bubble/ft-channel-bubble.js | 2 +-
.../ft-channel-bubble/ft-channel-bubble.vue | 7 +
.../ft-subscribe-button.js | 2 +-
src/renderer/components/side-nav/side-nav.css | 5 +
src/renderer/components/side-nav/side-nav.vue | 6 +
.../SubscribedChannels/SubscribedChannels.css | 1 +
.../SubscribedChannels/SubscribedChannels.js | 5 +-
.../SubscribedChannels/SubscribedChannels.vue | 6 +
static/locales/ar.yaml | 2 -
static/locales/be.yaml | 1 -
static/locales/bg.yaml | 2 -
static/locales/ca.yaml | 2 -
static/locales/ckb.yaml | 1 -
static/locales/cs.yaml | 2 -
static/locales/cy.yaml | 1 -
static/locales/da.yaml | 2 -
static/locales/de-DE.yaml | 2 -
static/locales/el.yaml | 2 -
static/locales/en-US.yaml | 3 -
static/locales/en_GB.yaml | 2 -
static/locales/es-MX.yaml | 2 -
static/locales/es.yaml | 2 -
static/locales/es_AR.yaml | 2 -
static/locales/et.yaml | 2 -
static/locales/eu.yaml | 2 -
static/locales/fa.yaml | 2 -
static/locales/fi.yaml | 2 -
static/locales/fr-FR.yaml | 2 -
static/locales/gl.yaml | 2 -
static/locales/he.yaml | 2 -
static/locales/hr.yaml | 2 -
static/locales/hu.yaml | 2 -
static/locales/id.yaml | 2 -
static/locales/is.yaml | 2 -
static/locales/it.yaml | 2 -
static/locales/ja.yaml | 7 +-
static/locales/ko.yaml | 1 -
static/locales/lt.yaml | 2 -
static/locales/lv.yaml | 1 -
static/locales/nb_NO.yaml | 2 -
static/locales/nl.yaml | 2 -
static/locales/nn.yaml | 2 -
static/locales/pl.yaml | 2 -
static/locales/pt-BR.yaml | 2 -
static/locales/pt-PT.yaml | 2 -
static/locales/pt.yaml | 2 -
static/locales/ro.yaml | 2 -
static/locales/ru.yaml | 2 -
static/locales/sk.yaml | 2 -
static/locales/sl.yaml | 2 -
static/locales/sm.yaml | 1 -
static/locales/sr.yaml | 2 -
static/locales/sv.yaml | 2 -
static/locales/tr.yaml | 2 -
static/locales/uk.yaml | 2 -
static/locales/ur.yaml | 2 -
static/locales/vi.yaml | 2 -
static/locales/zh-CN.yaml | 1 -
static/locales/zh-TW.yaml | 1 -
60 files changed, 113 insertions(+), 364 deletions(-)
diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js
index 1671981f1ceaa..c528fcabd283e 100644
--- a/src/renderer/components/data-settings/data-settings.js
+++ b/src/renderer/components/data-settings/data-settings.js
@@ -9,7 +9,6 @@ import { MAIN_PROFILE_ID } from '../../../constants'
import { calculateColorLuminance, getRandomColor } from '../../helpers/colors'
import {
- copyToClipboard,
deepCopy,
escapeHTML,
getTodayDateStrLocalTimezone,
@@ -19,8 +18,6 @@ import {
showToast,
writeFileFromDialog,
} from '../../helpers/utils'
-import { invidiousAPICall } from '../../helpers/api/invidious'
-import { getLocalChannel } from '../../helpers/api/local'
export default defineComponent({
name: 'DataSettings',
@@ -47,12 +44,6 @@ export default defineComponent({
}
},
computed: {
- backendPreference: function () {
- return this.$store.getters.getBackendPreference
- },
- backendFallback: function () {
- return this.$store.getters.getBackendFallback
- },
profileList: function () {
return this.$store.getters.getProfileList
},
@@ -169,7 +160,7 @@ export default defineComponent({
this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(profileObject.subscriptions)
this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.filter((sub, index) => {
const profileIndex = this.primaryProfile.subscriptions.findIndex((x) => {
- return x.name === sub.name
+ return x.id === sub.id
})
return profileIndex === index
@@ -185,7 +176,7 @@ export default defineComponent({
existingProfile.subscriptions = existingProfile.subscriptions.concat(profileObject.subscriptions)
existingProfile.subscriptions = existingProfile.subscriptions.filter((sub, index) => {
const profileIndex = existingProfile.subscriptions.findIndex((x) => {
- return x.name === sub.name
+ return x.id === sub.id
})
return profileIndex === index
@@ -198,7 +189,7 @@ export default defineComponent({
this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(profileObject.subscriptions)
this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.filter((sub, index) => {
const profileIndex = this.primaryProfile.subscriptions.findIndex((x) => {
- return x.name === sub.name
+ return x.id === sub.id
})
return profileIndex === index
@@ -211,18 +202,14 @@ export default defineComponent({
showToast(this.$t('Settings.Data Settings.All subscriptions and profiles have been successfully imported'))
},
- importCsvYouTubeSubscriptions: async function(textDecode) { // first row = header, last row = empty
+ importCsvYouTubeSubscriptions: function(textDecode) { // first row = header, last row = empty
const youtubeSubscriptions = textDecode.split('\n').filter(sub => {
return sub !== ''
})
const subscriptions = []
- const errorList = []
-
- showToast(this.$t('Settings.Data Settings.This might take a while, please wait'))
this.updateShowProgressBar(true)
this.setProgressBarPercentage(0)
- let count = 0
const splitCSVRegex = /(?:,|\n|^)("(?:(?:"")|[^"])*"|[^\n",]*|(?:\n|$))/g
@@ -237,96 +224,65 @@ export default defineComponent({
}).filter(channel => {
return channel.length > 0
})
- new Promise((resolve) => {
- let finishCount = 0
- ytsubs.forEach(async (yt) => {
- const { subscription, result } = await this.subscribeToChannel({
- channelId: yt[0],
- subscriptions: subscriptions,
- channelName: yt[2],
- count: count++,
- total: ytsubs.length
- })
- if (result === 1) {
- subscriptions.push(subscription)
- } else if (result === -1) {
- errorList.push(yt)
- }
- finishCount++
- if (finishCount === ytsubs.length) {
- resolve(true)
+
+ ytsubs.forEach((yt) => {
+ const channelId = yt[0]
+ if (!this.isChannelSubscribed(channelId, subscriptions)) {
+ const subscription = {
+ id: channelId,
+ name: yt[2],
+ thumbnail: null
}
- })
- }).then(_ => {
- this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
- this.updateProfile(this.primaryProfile)
- if (errorList.length !== 0) {
- errorList.forEach(e => { // log it to console for now, dedicated tab for 'error' channels needed
- console.error(`failed to import ${e[2]}. Url to channel: ${e[1]}.`)
- })
- showToast(this.$t('Settings.Data Settings.One or more subscriptions were unable to be imported'))
- } else {
- showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
+
+ subscriptions.push(subscription)
}
- }).finally(_ => {
- this.updateShowProgressBar(false)
})
+
+ this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
+ this.updateProfile(this.primaryProfile)
+ showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
+ this.updateShowProgressBar(false)
},
- importYouTubeSubscriptions: async function (textDecode) {
+ importYouTubeSubscriptions: function (textDecode) {
const subscriptions = []
- const errorList = []
+ let count = 0
showToast(this.$t('Settings.Data Settings.This might take a while, please wait'))
this.updateShowProgressBar(true)
this.setProgressBarPercentage(0)
- let count = 0
- new Promise((resolve) => {
- let finishCount = 0
- textDecode.forEach(async (channel) => {
- const snippet = channel.snippet
- if (typeof snippet === 'undefined') {
- const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
- showToast(message)
- throw new Error('Unable to find channel data')
- }
- const { subscription, result } = await this.subscribeToChannel({
- channelId: snippet.resourceId.channelId,
- subscriptions: subscriptions,
- channelName: snippet.title,
- thumbnail: snippet.thumbnails.default.url,
- count: count++,
- total: textDecode.length
- })
- if (result === 1) {
- subscriptions.push(subscription)
- } else if (result === -1) {
- errorList.push([snippet.resourceId.channelId, `https://www.youtube.com/channel/${snippet.resourceId.channelId}`, snippet.title])
- }
- finishCount++
- if (finishCount === textDecode.length) {
- resolve(true)
- }
- })
- }).then(_ => {
- this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
- this.updateProfile(this.primaryProfile)
- if (errorList.length !== 0) {
- errorList.forEach(e => { // log it to console for now, dedicated tab for 'error' channels needed
- console.error(`failed to import ${e[2]}. Url to channel: ${e[1]}.`)
+ textDecode.forEach((channel) => {
+ const snippet = channel.snippet
+ if (typeof snippet === 'undefined') {
+ const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
+ showToast(message)
+ throw new Error('Unable to find channel data')
+ }
+
+ const channelId = snippet.resourceId.channelId
+ if (!this.isChannelSubscribed(channelId, subscriptions)) {
+ subscriptions.push({
+ id: channelId,
+ name: snippet.title,
+ thumbnail: snippet.thumbnails.default.url
})
- showToast(this.$t('Settings.Data Settings.One or more subscriptions were unable to be imported'))
- } else {
- showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
}
- }).finally(_ => {
- this.updateShowProgressBar(false)
+
+ count++
+
+ const progressPercentage = (count / (textDecode.length - 1)) * 100
+ this.setProgressBarPercentage(progressPercentage)
})
+
+ this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
+ this.updateProfile(this.primaryProfile)
+ showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
+ this.updateShowProgressBar(false)
},
- importOpmlYouTubeSubscriptions: async function (data) {
+ importOpmlYouTubeSubscriptions: function (data) {
let xmlDom
const domParser = new DOMParser()
try {
@@ -361,15 +317,14 @@ export default defineComponent({
const subscriptions = []
- showToast(this.$t('Settings.Data Settings.This might take a while, please wait'))
-
this.updateShowProgressBar(true)
this.setProgressBarPercentage(0)
let count = 0
- feedData.forEach(async (channel) => {
+ feedData.forEach((channel) => {
const xmlUrl = channel.getAttribute('xmlUrl')
+ const channelName = channel.getAttribute('title')
let channelId
if (xmlUrl.includes('https://www.youtube.com/feeds/videos.xml?channel_id=')) {
channelId = new URL(xmlUrl).searchParams.get('channel_id')
@@ -379,48 +334,29 @@ export default defineComponent({
} else {
console.error(`Unknown xmlUrl format: ${xmlUrl}`)
}
- const subExists = this.primaryProfile.subscriptions.findIndex((sub) => {
- return sub.id === channelId
- })
- if (subExists === -1) {
- let channelInfo
- if (this.backendPreference === 'invidious') {
- channelInfo = await this.getChannelInfoInvidious(channelId)
- } else {
- channelInfo = await this.getChannelInfoLocal(channelId)
- }
- if (typeof channelInfo.author !== 'undefined') {
- const subscription = {
- id: channelId,
- name: channelInfo.author,
- thumbnail: channelInfo.authorThumbnails[1].url
- }
- subscriptions.push(subscription)
+ if (!this.isChannelSubscribed(channelId, subscriptions)) {
+ const subscription = {
+ id: channelId,
+ name: channelName,
+ thumbnail: null
}
+ subscriptions.push(subscription)
}
count++
const progressPercentage = (count / feedData.length) * 100
this.setProgressBarPercentage(progressPercentage)
-
- if (count === feedData.length) {
- this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
- this.updateProfile(this.primaryProfile)
-
- if (subscriptions.length < count) {
- showToast(this.$t('Settings.Data Settings.One or more subscriptions were unable to be imported'))
- } else {
- showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
- }
-
- this.updateShowProgressBar(false)
- }
})
+
+ this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
+ this.updateProfile(this.primaryProfile)
+ showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
+ this.updateShowProgressBar(false)
},
- importNewPipeSubscriptions: async function (newPipeData) {
+ importNewPipeSubscriptions: function (newPipeData) {
if (typeof newPipeData.subscriptions === 'undefined') {
showToast(this.$t('Settings.Data Settings.Invalid subscriptions file'))
@@ -432,51 +368,32 @@ export default defineComponent({
})
const subscriptions = []
- const errorList = []
-
- showToast(this.$t('Settings.Data Settings.This might take a while, please wait'))
this.updateShowProgressBar(true)
this.setProgressBarPercentage(0)
let count = 0
- new Promise((resolve) => {
- let finishCount = 0
- newPipeSubscriptions.forEach(async (channel, index) => {
- const channelId = channel.url.replace(/https:\/\/(www\.)?youtube\.com\/channel\//, '')
- const { subscription, result } = await this.subscribeToChannel({
- channelId: channelId,
- subscriptions: subscriptions,
- channelName: channel.name,
- count: count++,
- total: newPipeSubscriptions.length
- })
- if (result === 1) {
- subscriptions.push(subscription)
- }
- if (result === -1) {
- errorList.push([channelId, channel.url, channel.name])
- }
- finishCount++
- if (finishCount === newPipeSubscriptions.length) {
- resolve(true)
- }
- })
- }).then(_ => {
- this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
- this.updateProfile(this.primaryProfile)
- if (errorList.count > 0) {
- errorList.forEach(e => { // log it to console for now, dedicated tab for 'error' channels needed
- console.error(`failed to import ${e[2]}. Url to channel: ${e[1]}.`)
+ newPipeSubscriptions.forEach((channel) => {
+ const channelId = channel.url.replace(/https:\/\/(www\.)?youtube\.com\/channel\//, '')
+
+ if (!this.isChannelSubscribed(channelId, subscriptions)) {
+ subscriptions.push({
+ id: channelId,
+ name: channel.name,
+ thumbnail: null
})
- showToast(this.$t('Settings.Data Settings.One or more subscriptions were unable to be imported'))
- } else {
- showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
}
- }).finally(_ => {
- this.updateShowProgressBar(false)
+ count++
+
+ const progressPercentage = (count / (newPipeSubscriptions.length - 1)) * 100
+ this.setProgressBarPercentage(progressPercentage)
})
+
+ this.primaryProfile.subscriptions = this.primaryProfile.subscriptions.concat(subscriptions)
+ this.updateProfile(this.primaryProfile)
+ showToast(this.$t('Settings.Data Settings.All subscriptions have been successfully imported'))
+ this.updateShowProgressBar(false)
},
exportSubscriptions: function (option) {
@@ -622,10 +539,9 @@ export default defineComponent({
let exportText = 'Channel ID,Channel URL,Channel title\n'
this.profileList[0].subscriptions.forEach((channel) => {
const channelUrl = `https://www.youtube.com/channel/${channel.id}`
- let channelName = channel.name
- if (channelName.search(',') !== -1) { // add quotations and escape existing quotations if channel has comma in name
- channelName = `"${channelName.replaceAll('"', '""')}"`
- }
+
+ // always have channel name quoted to simplify things
+ const channelName = `"${channel.name.replaceAll('"', '""')}"`
exportText += `${channel.id},${channelUrl},${channelName}\n`
})
exportText += '\n'
@@ -1138,105 +1054,6 @@ export default defineComponent({
showToast(successMessage)
},
- getChannelInfoInvidious: function (channelId) {
- return new Promise((resolve, reject) => {
- const subscriptionsPayload = {
- resource: 'channels',
- id: channelId,
- params: {}
- }
-
- invidiousAPICall(subscriptionsPayload).then((response) => {
- resolve(response)
- }).catch((err) => {
- const errorMessage = this.$t('Invidious API Error (Click to copy)')
- showToast(`${errorMessage}: ${err}`, 10000, () => {
- copyToClipboard(err)
- })
-
- if (process.env.SUPPORTS_LOCAL_API && this.backendFallback && this.backendPreference === 'invidious') {
- showToast(this.$t('Falling back to Local API'))
- resolve(this.getChannelInfoLocal(channelId))
- } else {
- resolve([])
- }
- })
- })
- },
-
- getChannelInfoLocal: async function (channelId) {
- try {
- const channel = await getLocalChannel(channelId)
-
- if (channel.alert) {
- return []
- }
-
- return {
- author: channel.header.author.name,
- authorThumbnails: channel.header.author.thumbnails
- }
- } catch (err) {
- console.error(err)
- const errorMessage = this.$t('Local API Error (Click to copy)')
- showToast(`${errorMessage}: ${err}`, 10000, () => {
- copyToClipboard(err)
- })
-
- if (this.backendFallback && this.backendPreference === 'local') {
- showToast(this.$t('Falling back to Invidious API'))
- return await this.getChannelInfoInvidious(channelId)
- } else {
- return []
- }
- }
- },
-
- /*
- TODO: allow default thumbnail to be used to limit requests to YouTube
- (thumbnail will get updated when user goes to their channel page)
- Returns:
- -1: an error occured
- 0: already subscribed
- 1: successfully subscribed
- */
- async subscribeToChannel({ channelId, subscriptions, channelName = null, thumbnail = null, count = 0, total = 0 }) {
- let result = 1
- if (this.isChannelSubscribed(channelId, subscriptions)) {
- return { subscription: null, successMessage: 0 }
- }
-
- let channelInfo
- let subscription = null
- if (channelName === null || thumbnail === null) {
- try {
- if (this.backendPreference === 'invidious') {
- channelInfo = await this.getChannelInfoInvidious(channelId)
- } else {
- channelInfo = await this.getChannelInfoLocal(channelId)
- }
- } catch (err) {
- console.error(err)
- result = -1
- }
- } else {
- channelInfo = { author: channelName, authorThumbnails: [null, { url: thumbnail }] }
- }
-
- if (typeof channelInfo.author !== 'undefined') {
- subscription = {
- id: channelId,
- name: channelInfo.author,
- thumbnail: channelInfo.authorThumbnails[1].url
- }
- } else {
- result = -1
- }
- const progressPercentage = (count / (total - 1)) * 100
- this.setProgressBarPercentage(progressPercentage)
- return { subscription, result }
- },
-
isChannelSubscribed(channelId, subscriptions) {
if (channelId === null) { return true }
const subExists = this.primaryProfile.subscriptions.findIndex((sub) => {
diff --git a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.js b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.js
index dbff93d28e7b4..efe260efcf7f4 100644
--- a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.js
+++ b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.js
@@ -13,7 +13,7 @@ export default defineComponent({
},
channelThumbnail: {
type: String,
- required: true
+ default: null
},
showSelected: {
type: Boolean,
diff --git a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.vue b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.vue
index 53abe2f282c36..ed8dd5f8bf76d 100644
--- a/src/renderer/components/ft-channel-bubble/ft-channel-bubble.vue
+++ b/src/renderer/components/ft-channel-bubble/ft-channel-bubble.vue
@@ -6,10 +6,17 @@
:to="`/channel/${channelId}`"
>
+
+
{
if (!response.alert) {
this.updateSubscriptionDetails({
- channelThumbnailUrl: this.thumbnailURL(response.header.author.thumbnails[0].url),
+ channelThumbnailUrl: this.thumbnailURL(parseLocalChannelHeader(response).thumbnailUrl),
channelName: channel.name,
channelId: channel.id
})
diff --git a/src/renderer/views/SubscribedChannels/SubscribedChannels.vue b/src/renderer/views/SubscribedChannels/SubscribedChannels.vue
index 323681aca1801..034c414091508 100644
--- a/src/renderer/views/SubscribedChannels/SubscribedChannels.vue
+++ b/src/renderer/views/SubscribedChannels/SubscribedChannels.vue
@@ -36,11 +36,17 @@
:to="`/channel/${channel.id}`"
>
+
Date: Mon, 2 Sep 2024 04:18:14 +0200
Subject: [PATCH 152/489] Switch to non-deprecated Electron navigation history
APIs (#5626)
---
src/main/index.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/index.js b/src/main/index.js
index 5defe0157f526..f8e53a7e652f9 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -1595,7 +1595,7 @@ function runApp() {
click: (_menuItem, browserWindow, _event) => {
if (browserWindow == null) { return }
- browserWindow.webContents.goBack()
+ browserWindow.webContents.navigationHistory.goBack()
},
type: 'normal',
},
@@ -1605,7 +1605,7 @@ function runApp() {
click: (_menuItem, browserWindow, _event) => {
if (browserWindow == null) { return }
- browserWindow.webContents.goForward()
+ browserWindow.webContents.navigationHistory.goForward()
},
type: 'normal',
},
From e2bc3c686d314459a7fb33475d1808234478a700 Mon Sep 17 00:00:00 2001
From: absidue <48293849+absidue@users.noreply.github.com>
Date: Mon, 2 Sep 2024 05:15:55 +0200
Subject: [PATCH 153/489] Cleanup the Hide Profile Pictures in Comments code
(#5625)
---
.../watch-video-comments.vue | 52 +++++++++----------
1 file changed, 24 insertions(+), 28 deletions(-)
diff --git a/src/renderer/components/watch-video-comments/watch-video-comments.vue b/src/renderer/components/watch-video-comments/watch-video-comments.vue
index e788059fbf715..ee5798c631b73 100644
--- a/src/renderer/components/watch-video-comments/watch-video-comments.vue
+++ b/src/renderer/components/watch-video-comments/watch-video-comments.vue
@@ -64,20 +64,18 @@
tabindex="-1"
>
-
-
-
-
-
-
+
+
-
-
-
-
-
-
+
+
{
+export function filterInvidiousFormats(formats) {
+ return formats.filter(format => {
const mimeType = format.type
- if (mimeType.startsWith('audio/mp4')) {
- audioFormats.push(format)
- } else if (allowAv1 && mimeType.startsWith('video/mp4; codecs="av01')) {
- av1Formats.push(format)
- } else if (mimeType.startsWith('video/mp4; codecs="avc')) {
- h264Formats.push(format)
- }
+ return mimeType.startsWith('audio/') ||
+ mimeType.startsWith('video/mp4; codecs="avc') ||
+ mimeType.startsWith('video/mp4; codecs="av01')
})
-
- // Disabled AV1 as a workaround to https://github.com/FreeTubeApp/FreeTube/issues/3382
- // Which is caused by Invidious API limitation on AV1 formats (see related issues)
- // Commented code to be restored after Invidious issue fixed
- //
- // As we generate our own DASH manifest (using YouTube.js) for multiple audio track support when the local API is supported,
- // we can allow AV1 in that situation. When the local API isn't supported,
- // we still can't use them until Invidious fixes the issue on their side
- if (process.env.SUPPORTS_LOCAL_API && allowAv1 && av1Formats.length > 0) {
- return [...audioFormats, ...av1Formats]
- }
-
- return [...audioFormats, ...h264Formats]
}
export async function getHashtagInvidious(hashtag, page) {
@@ -396,7 +375,6 @@ export function convertInvidiousToLocalFormat(format) {
// audioQuality and qualityLabel don't go inside the DASH manifest, but are used by YouTube.js
// to determine whether a format is an audio or video stream respectively.
- /** @type {import('./local').LocalFormat} */
const localFormat = new Misc.Format({
itag: format.itag,
mimeType: format.type,
@@ -424,13 +402,36 @@ export function convertInvidiousToLocalFormat(format) {
: {
fps: format.fps,
qualityLabel: format.qualityLabel,
- colorInfo: format.colorInfo ?? {}
+ ...(format.colorInfo ? { colorInfo: format.colorInfo } : {})
})
})
- // Adding freeTubeUrl allows us to reuse the code,
- // to generate the audio tracks for audio only mode, that we use for the local API
- localFormat.freeTubeUrl = format.url
-
return localFormat
}
+
+/**
+ * @param {any} format
+ * @param {boolean} trustApiResponse
+ */
+export function mapInvidiousLegacyFormat(format, trustApiResponse) {
+ let width
+ let height
+
+ if (trustApiResponse) {
+ const [stringWidth, stringHeight] = format.size.split('x')
+
+ width = parseInt(stringWidth)
+ height = parseInt(stringHeight)
+ }
+
+ return {
+ itag: format.itag,
+ qualityLabel: format.qualityLabel,
+ fps: format.fps,
+ bitrate: parseInt(format.bitrate),
+ mimeType: format.type,
+ height,
+ width,
+ url: format.url
+ }
+}
diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js
index fbdbab2894ac4..12ddbf6cb3fbf 100644
--- a/src/renderer/helpers/api/local.js
+++ b/src/renderer/helpers/api/local.js
@@ -1240,7 +1240,7 @@ export function parseLocalTextRuns(runs, emojiSize = 16, options = { looseChanne
/**
* @param {LocalFormat} format
*/
-export function mapLocalFormat(format) {
+export function mapLocalLegacyFormat(format) {
return {
itag: format.itag,
qualityLabel: format.quality_label,
diff --git a/src/renderer/helpers/player/legacyFormatsVttCueParser.js b/src/renderer/helpers/player/legacyFormatsVttCueParser.js
new file mode 100644
index 0000000000000..ec17ff9018c8a
--- /dev/null
+++ b/src/renderer/helpers/player/legacyFormatsVttCueParser.js
@@ -0,0 +1,297 @@
+import shaka from 'shaka-player'
+
+const ShakaCue = shaka.text.Cue
+
+/**
+ * Creates a shaka Cue from a browser native VTTCue
+ * including parsing the karake style text, styling information and unescaping the text.
+ *
+ * Please note this is designed specifically to parse YouTube's VTT files
+ * and makes some assumptions that won't be applicable to other VTT files.
+ * E.g. that the class names always refer to colours, as the actual CSS that the class name points to,
+ * isn't accessible through the VTTCues. It's the only way (as far as I can tell) to support coloured text,
+ * without parsing the VTT file to extract the style section.
+ *
+ * The only tag this currently doesn't parse, is the voice (``) one, as I wasn't able to find a video with them.
+ * @param {VTTCue} vttCue
+ * @param {boolean} ignoreTextAlignAndPosition auto-generated text tracks are displayed in the bottom left corner if we don't ignore these properties
+ */
+export function shakaCueFromVTTCue(vttCue, ignoreTextAlignAndPosition) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API#cue_payload_text_tags
+ // https://w3c.github.io/webvtt
+
+ // strip the voice tags as we don't support them yet
+ /** @type {string} */
+ const text = vttCue.text.replaceAll(/<(?:v(?:[\t .][^>]+)?|\/v)>/g, '')
+
+ // if the text doesn't contain any tags, we can bypass all the parsing and directly return a Cue
+ if (!text.includes('<')) {
+ const shakaCue = new ShakaCue(vttCue.startTime, vttCue.endTime, replaceCueTextEscapeSequences(text))
+
+ copyFromVttCueToShakaCue(vttCue, shakaCue, ignoreTextAlignAndPosition)
+
+ return shakaCue
+ }
+
+ const nestedCues = []
+
+ const TIME_TAG_REGEX = /(?:(?\d{2,}):)?(?\d{2}):(?\d{2}\.\d{3})/
+
+ let currentStartTime = vttCue.startTime
+ let currentText = ''
+ /** @type {string|null} */
+ let currentColor = null
+ let bold = false
+ let italic = false
+ let underline = false
+
+ let ruby = false
+ let rubyRt = false
+
+ let inTag = false
+ let tagText = ''
+
+ const createCueWithCurrentConfig = () => {
+ /** @type {'rt'|'ruby'|null} */
+ let rubyTag = null
+
+ if (rubyRt) {
+ rubyTag = 'rt'
+ } else if (ruby) {
+ rubyTag = 'ruby'
+ }
+
+ const cue = createFormattedShakaCue(currentStartTime, vttCue.endTime, currentText, bold, italic, underline, currentColor, rubyTag)
+
+ currentText = ''
+
+ return cue
+ }
+
+ for (let i = 0; i < text.length; i++) {
+ const character = text.charAt(i)
+
+ if (inTag) {
+ if (character === '>') {
+ if (currentText.length > 0) {
+ nestedCues.push(createCueWithCurrentConfig())
+ }
+
+ switch (tagText) {
+ case 'b':
+ bold = true
+ break
+ case '/b':
+ bold = false
+ break
+ case 'i':
+ italic = true
+ break
+ case '/i':
+ italic = false
+ break
+ case 'u':
+ underline = true
+ break
+ case '/u':
+ underline = false
+ break
+ case 'ruby':
+ ruby = true
+ break
+ case '/ruby':
+ ruby = false
+ break
+ case 'rt':
+ rubyRt = true
+ break
+ case '/rt':
+ rubyRt = false
+ break
+ case '/c':
+ currentColor = null
+ break
+ default:
+ if (tagText.charAt(0) === 'c') {
+ // examples
+ //
+ //
+ //
+ currentColor = tagText.substring(2)
+ } else {
+ const match = tagText.match(TIME_TAG_REGEX)
+
+ if (match) {
+ let startSeconds = parseFloat(match.groups.seconds)
+ startSeconds += parseInt(match.groups.minutes) * 60
+
+ if (match.groups.hours) {
+ startSeconds += parseInt(match.groups.hours) * 60 * 60
+ }
+
+ currentStartTime = startSeconds
+ }
+ }
+
+ break
+ }
+
+ inTag = false
+ tagText = ''
+ } else {
+ tagText += character
+ }
+ } else if (character === '<') {
+ inTag = true
+
+ if (currentText.length > 0) {
+ nestedCues.push(createCueWithCurrentConfig())
+ }
+
+ // create cue with current settings
+ } else if (character === '\n') {
+ const cue = createCueWithCurrentConfig()
+
+ const lineBreakCue = new ShakaCue(currentStartTime, vttCue.endTime, '')
+ lineBreakCue.lineBreak = true
+
+ nestedCues.push(cue, lineBreakCue)
+ } else {
+ currentText += character
+ }
+ }
+
+ if (currentText.length > 0) {
+ nestedCues.push(createCueWithCurrentConfig())
+ }
+
+ const shakaCue = new ShakaCue(vttCue.startTime, vttCue.endTime, '')
+
+ copyFromVttCueToShakaCue(vttCue, shakaCue, ignoreTextAlignAndPosition)
+
+ shakaCue.nestedCues = nestedCues
+
+ return shakaCue
+}
+
+/**
+ * @param {number} startTime
+ * @param {number} endTime
+ * @param {string} text
+ * @param {boolean} bold
+ * @param {boolean} italic
+ * @param {boolean} underline
+ * @param {string|null} color
+ * @param {'ruby'|'rt'|null} rubyTag
+ */
+function createFormattedShakaCue(startTime, endTime, text, bold, italic, underline, color, rubyTag) {
+ const cue = new ShakaCue(startTime, endTime, replaceCueTextEscapeSequences(text))
+
+ if (bold) {
+ cue.fontWeight = ShakaCue.fontWeight.BOLD
+ }
+
+ if (italic) {
+ cue.fontStyle = ShakaCue.fontStyle.ITALIC
+ }
+
+ if (underline) {
+ cue.textDecoration = [ShakaCue.textDecoration.UNDERLINE]
+ }
+
+ if (color !== null && color.length > 0) {
+ // even though we can't directly access the style section in the vtt file
+ // YouTube uses predictable class names for their colour classes:
+ // either the name of a colour e.g. "c.yellow" or the hex values e.g. "c.colorEEEEEE"
+ // (I checked the style section in one of their VTT files to verify that)
+
+ if (color.startsWith('color')) {
+ cue.color = color.replace('color', '#')
+ } else {
+ cue.color = color
+ }
+ }
+
+ if (rubyTag !== null) {
+ cue.rubyTag = rubyTag
+ }
+
+ return cue
+}
+
+/**
+ * @param {VTTCue} vttCue
+ * @param {shaka.text.Cue} shakaCue
+ * @param {boolean} ignoreTextAlignAndPosition
+ */
+function copyFromVttCueToShakaCue(vttCue, shakaCue, ignoreTextAlignAndPosition) {
+ shakaCue.lineAlign = vttCue.lineAlign ?? ShakaCue.lineAlign.START
+ shakaCue.positionAlign = vttCue.positionAlign ?? ShakaCue.positionAlign.AUTO
+ shakaCue.size = vttCue.size
+
+ switch (vttCue.vertical) {
+ case '':
+ shakaCue.writingMode = ShakaCue.writingMode.HORIZONTAL_TOP_TO_BOTTOM
+ break
+ case 'lr':
+ shakaCue.writingMode = ShakaCue.writingMode.VERTICAL_LEFT_TO_RIGHT
+ break
+ case 'rl':
+ shakaCue.writingMode = ShakaCue.writingMode.VERTICAL_RIGHT_TO_LEFT
+ break
+ }
+
+ shakaCue.lineInterpretation = vttCue.snapToLines ? ShakaCue.lineInterpretation.LINE_NUMBER : ShakaCue.lineInterpretation.PERCENTAGE
+
+ shakaCue.line = vttCue.line === 'auto' ? null : vttCue.line
+
+ if (!ignoreTextAlignAndPosition) {
+ shakaCue.textAlign = vttCue.align
+ shakaCue.position = vttCue.position === 'auto' ? null : vttCue.position
+ }
+
+ // only available in Firefox at the moment, but we might as well copy it, when it's there
+ if (vttCue.region) {
+ const shakaRegion = shakaCue.region
+
+ shakaRegion.id = vttCue.region.id
+ shakaRegion.viewportAnchorX = vttCue.region.viewportAnchorX
+ shakaRegion.viewportAnchorY = vttCue.region.viewportAnchorY
+ shakaRegion.regionAnchorX = vttCue.region.regionAnchorX
+ shakaRegion.regionAnchorY = vttCue.region.regionAnchorY
+ shakaRegion.width = vttCue.region.width
+ shakaRegion.height = vttCue.region.lines
+ shakaRegion.heightUnits = shaka.text.CueRegion.units.LINES
+ shakaRegion.scroll = vttCue.region.scroll
+ }
+}
+
+/**
+ * @param {string} text
+ * @returns {string}
+ */
+function replaceCueTextEscapeSequences(text) {
+ return text.replaceAll(/&(amp|lt|gt|lrm|rlm|nbsp);/g, escapeSequenceReplacer)
+}
+
+/**
+ * @param {string} _match
+ * @param {string} sequence
+ * @returns {string}
+ */
+function escapeSequenceReplacer(_match, sequence) {
+ switch (sequence) {
+ case 'amp':
+ return '&'
+ case 'lt':
+ return '<'
+ case 'gt':
+ return '>'
+ case 'lrm':
+ return '\u200E'
+ case 'rlm':
+ return '\u200F'
+ case 'nbsp':
+ return '\u00A0'
+ }
+}
diff --git a/src/renderer/helpers/player/utils.js b/src/renderer/helpers/player/utils.js
new file mode 100644
index 0000000000000..9aeb4509486ef
--- /dev/null
+++ b/src/renderer/helpers/player/utils.js
@@ -0,0 +1,319 @@
+import shaka from 'shaka-player'
+import { deepCopy } from '../utils'
+import i18n from '../../i18n/index'
+import { sponsorBlockSkipSegments } from '../sponsorblock'
+
+/** @typedef {import('../sponsorblock').SponsorBlockCategory} SponsorBlockCategory */
+
+/**
+ * @param {shaka.util.Error} error
+ * @param {string} context
+ * @param {string} videoId
+ * @param {object=} details
+ */
+export function logShakaError(error, context, videoId, details) {
+ const { Severity, Category, Code } = shaka.util.Error
+
+ // shaka's error type also has a message property but that is apparently only available in uncompiled mode
+
+ /** @type {keyof Severity} */
+ const severityText = Object.keys(Severity).find((/** @type {keyof Severity} */ key) => Severity[key] === error.severity)
+
+ /** @type {keyof Category} */
+ const categoryText = Object.keys(Category).find((/** @type {keyof Category} */ key) => Category[key] === error.category)
+
+ /** @type {keyof Code} */
+ const codeText = Object.keys(Code).find((/** @type {keyof Code} */ key) => Code[key] === error.code)
+
+ const message =
+ 'Player Error (category and code explainations here: https://shaka-player-demo.appspot.com/docs/api/shaka.util.Error.html)\n' +
+ `Video ID: "${videoId}"\n` +
+ `FreeTube player context: "${context}"\n\n` +
+ `Severity: ${severityText} (${error.severity})\n` +
+ `Category: ${categoryText} (${error.category})\n` +
+ `Code: ${codeText} (${error.code})\n` +
+ `Stack trace:\n${error.stack}`
+
+ /** @type {*[]} */
+ const args = [message]
+
+ if (error.data && error.data.length > 0) {
+ args.push(
+ '\n\nshaka-player Data:',
+ error.data
+ )
+ }
+
+ if (details) {
+ args.push(
+ '\n\nFreeTube data:',
+ // use deepCopy to get rid of Vue's proxying,
+ // as that requires you click the 3 dots for every property in the logged object to see their values
+ // doing it like this, results in a "clean" object where everything is immediately visible
+ typeof details === 'object' ? deepCopy(details) : details
+ )
+ }
+
+ console.error(...args)
+}
+
+/**
+ * @param {string} videoId
+ * @param {SponsorBlockCategory[]} categories
+ */
+export async function getSponsorBlockSegments(videoId, categories) {
+ const segments = await sponsorBlockSkipSegments(videoId, categories)
+
+ if (segments.length === 0) {
+ return {
+ segments: [],
+ averageDuration: 0
+ }
+ }
+
+ const averageDuration = segments.reduce((accumulator, segment) => {
+ return accumulator + segment.videoDuration
+ }, 0) / segments.length
+
+ const mappedSegments = segments.map(({ category, segment: [startTime, endTime], UUID }) => {
+ return {
+ uuid: UUID,
+ category,
+ startTime,
+ endTime
+ }
+ })
+
+ mappedSegments.sort((a, b) => a.startTime - b.startTime)
+
+ return {
+ segments: mappedSegments,
+ averageDuration
+ }
+}
+
+/**
+ * @param {SponsorBlockCategory} category
+ */
+export function translateSponsorBlockCategory(category) {
+ switch (category) {
+ case 'sponsor':
+ return i18n.t('Video.Sponsor Block category.sponsor')
+ case 'intro':
+ return i18n.t('Video.Sponsor Block category.intro')
+ case 'outro':
+ return i18n.t('Video.Sponsor Block category.outro')
+ case 'recap':
+ return this.$t('Video.Sponsor Block category.recap')
+ case 'selfpromo':
+ return i18n.t('Video.Sponsor Block category.self-promotion')
+ case 'interaction':
+ return i18n.t('Video.Sponsor Block category.interaction')
+ case 'music_offtopic':
+ return i18n.t('Video.Sponsor Block category.music offtopic')
+ case 'filler':
+ return i18n.t('Video.Sponsor Block category.filler')
+ default:
+ console.error(`Unknown translation for SponsorBlock category ${category}`)
+ return category
+ }
+}
+
+/**
+ * @param {string} qualityLabel
+ * @returns {number}
+ */
+export function qualityLabelToDimension(qualityLabel) {
+ return parseInt(qualityLabel.split('p')[0])
+}
+
+/**
+ * Moves the captions that are the most similar to the display language to the top
+ * and sorts the remaining ones alphabetically.
+ * @param {{
+ * url: string,
+ * label: string,
+ * language: string,
+ * mimeType: string,
+ * isAutotranslated?: boolean
+ * }[]} captions
+ */
+export function sortCaptions(captions) {
+ const currentLocale = i18n.locale.replace('_', '-')
+ const userLocale = currentLocale.split('-') // ex. [en,US]
+
+ const collator = new Intl.Collator([currentLocale, 'en'])
+
+ return captions.slice().sort((captionA, captionB) => {
+ const aCode = captionA.language.split('-') // ex. [en,US] or [en]
+ const bCode = captionB.language.split('-')
+ const aName = captionA.label // ex: english (auto-generated)
+ const bName = captionB.label
+ const aIsAutotranslated = !!captionA.isAutotranslated
+ const bIsAutotranslated = !!captionB.isAutotranslated
+ if (aCode[0] === userLocale[0]) { // caption a has same language as user's locale
+ if (bCode[0] === userLocale[0]) { // caption b has same language as user's locale
+ if (bName.includes('auto')) {
+ // prefer caption a: b is auto-generated captions
+ return -1
+ } else if (aName.includes('auto')) {
+ // prefer caption b: a is auto-generated captions
+ return 1
+ } else if (bIsAutotranslated) {
+ // prefer caption a: b is auto-translated captions
+ return -1
+ } else if (aIsAutotranslated) {
+ // prefer caption b: a is auto-translated captions
+ return 1
+ } else if (aCode[1] === userLocale[1]) {
+ // prefer caption a: caption a has same county code as user's locale
+ return -1
+ } else if (bCode[1] === userLocale[1]) {
+ // prefer caption b: caption b has same county code as user's locale
+ return 1
+ } else if (aCode[1] === undefined) {
+ // prefer caption a: no country code is better than wrong country code
+ return -1
+ } else if (bCode[1] === undefined) {
+ // prefer caption b: no country code is better than wrong country code
+ return 1
+ }
+ } else {
+ // prefer caption a: b does not match user's language
+ return -1
+ }
+ } else if (bCode[0] === userLocale[0]) {
+ // prefer caption b: a does not match user's language
+ return 1
+ }
+ // sort alphabetically
+ return collator.compare(aName, bName)
+ })
+}
+
+/**
+ * When the build doesn't support the local API
+ * we have to use Invidious' DASH manifest, instead of generating our own one.
+ * This function cleans it up, so that we can use it.
+ *
+ * Here is a list of things this function does:
+ * * Removes bogus roles and labels
+ * * Extracts the languages from the audio URLs if available and adds it to the adapation sets
+ * * Adds roles and labels when possible to add support for multiple audio tracks
+ *
+ * Things this function does not do:
+ * * Separate DRC (Stable Volume) from their original counterparts
+ * * Tag HDR video streams (Invidious puts all video streams in the same adaptation set,
+ * to tag HDR and SDR streams we would have to separate them out into multiple adaptation sets)
+ * @param {shaka.extern.xml.Node[]} periods
+ */
+export function repairInvidiousManifest(periods) {
+ /** @type {shaka.extern.xml.Node[]} */
+ const audioAdaptationSets = []
+
+ for (const period of periods) {
+ if (Array.isArray(period.children)) {
+ for (const periodChild of period.children) {
+ if (typeof periodChild !== 'string' && periodChild.tagName === 'AdaptationSet' && periodChild.attributes.mimeType?.startsWith('audio/')) {
+ audioAdaptationSets.push(periodChild)
+ }
+ }
+ }
+ }
+
+ // match YouTube's local API response with English
+ const languageNames = new Intl.DisplayNames('en-US', { type: 'language' })
+
+ for (const audioAdaptationSet of audioAdaptationSets) {
+ // Invidious adds a label to every audio stream with it's bitrate
+ // we need to remove those labels, so that they don't get treated as multiple audio tracks
+ if (audioAdaptationSet.attributes.label) {
+ delete audioAdaptationSet.attributes.label
+ }
+
+ if (Array.isArray(audioAdaptationSet.children)) {
+ // Invidious gives the first audio stream the main role and then the rest of them the alternate role
+ // regardless of which one is actually the main track
+ const roleIndex = audioAdaptationSet.children.findIndex((adaptationSetChild) => {
+ return typeof adaptationSetChild !== 'string' && adaptationSetChild.tagName === 'Role'
+ })
+
+ if (roleIndex !== -1) {
+ audioAdaptationSet.children.splice(roleIndex, 1)
+ }
+
+ // Extract the language and audio content type from the URL if available
+ // and add the language, role and label to the adaption set
+
+ /** @type {shaka.extern.xml.Node | undefined} */
+ const representation = audioAdaptationSet.children
+ .find((child) => typeof child !== 'string' && child.tagName === 'Representation')
+
+ if (representation && Array.isArray(representation.children)) {
+ /** @type {string | undefined} */
+ const baseUrl = representation.children
+ .find((child) => typeof child !== 'string' && child.tagName === 'BaseURL')
+ ?.children[0]
+
+ if (baseUrl) {
+ const url = new URL(baseUrl.replaceAll('&', '&'))
+
+ if (url.searchParams.has('xtags')) {
+ const xtags = url.searchParams.get('xtags').split(':')
+
+ const lang = xtags.find(xtag => xtag.startsWith('lang='))?.replace('lang=', '')
+ const audioContent = xtags.find(xtag => xtag.startsWith('acont='))?.replace('acont=', '')
+
+ const labelParts = []
+
+ if (lang) {
+ audioAdaptationSet.attributes.lang = lang
+
+ labelParts.push(languageNames.of(lang))
+ }
+
+ if (audioContent) {
+ let role = ''
+
+ switch (audioContent) {
+ case 'original':
+ role = 'main'
+ labelParts.push('original')
+ break
+ case 'dubbed':
+ role = 'dub'
+ break
+ case 'descriptive':
+ role = 'description'
+ labelParts.push('descriptive')
+ break
+ case 'secondary':
+ role = 'alternate'
+ labelParts.push('secondary')
+ break
+ default:
+ role = 'alternate'
+ labelParts.push('alternative')
+ break
+ }
+
+ audioAdaptationSet.children.push({
+ tagName: 'Role',
+ attributes: {
+ schemeIdUri: 'urn:mpeg:dash:role:2011',
+ value: role
+ },
+ children: [],
+ parent: audioAdaptationSet
+ })
+ }
+
+ if (labelParts.length > 0) {
+ audioAdaptationSet.attributes.label = labelParts.join(' ')
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/renderer/helpers/sponsorblock.js b/src/renderer/helpers/sponsorblock.js
index 3b658b6a17638..142974f342193 100644
--- a/src/renderer/helpers/sponsorblock.js
+++ b/src/renderer/helpers/sponsorblock.js
@@ -10,6 +10,27 @@ async function getVideoHash(videoId) {
hashArray[1].toString(16).padStart(2, '0')
}
+/**
+ * @typedef {'sponsor' | 'selfpromo' | 'interaction' | 'intro' | 'outro' | 'preview' | 'music_offtopic' | 'filler'} SponsorBlockCategory
+ */
+
+/**
+ * @param {string} videoId
+ * @param {SponsorBlockCategory[]} categories
+ * @returns {Promise<{
+ * UUID: string,
+ * actionType: string,
+ * category: SponsorBlockCategory,
+ * description: string,
+ * locked: 1|0,
+ * segment: [
+ * number,
+ * number
+ * ],
+ * videoDuration: number,
+ * votes: number
+ * }[]>}
+ */
export async function sponsorBlockSkipSegments(videoId, categories) {
const videoIdHashPrefix = await getVideoHash(videoId)
const requestUrl = `${store.getters.getSponsorBlockUrl}/api/skipSegments/${videoIdHashPrefix}?categories=${JSON.stringify(categories)}`
diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js
index d924a24a7a302..cc02b4c60d9c2 100644
--- a/src/renderer/helpers/utils.js
+++ b/src/renderer/helpers/utils.js
@@ -253,41 +253,6 @@ export function buildVTTFileLocally(storyboard, videoLengthSeconds) {
return vttString
}
-export async function getFormatsFromHLSManifest(manifestUrl) {
- const response = await fetch(manifestUrl)
- const text = await response.text()
-
- const lines = text.split('\n').filter(line => line)
-
- const formats = []
- let currentHeight = 0
- let currentFPS = 0
-
- for (const line of lines) {
- if (line.startsWith('#')) {
- if (!line.startsWith('#EXT-X-STREAM-INF:')) {
- continue
- }
-
- const parts = line.split(',')
- const height = parts.find(part => part.startsWith('RESOLUTION'))
- .split('x')[1]
- const fps = parts.find(part => part.startsWith('FRAME-RATE'))
- .split('=')[1]
- currentHeight = parseInt(height)
- currentFPS = parseInt(fps)
- } else {
- formats.push({
- height: currentHeight,
- fps: currentFPS,
- url: line.trim()
- })
- }
- }
-
- return formats
-}
-
export function showToast(message, time = null, action = null) {
FtToastEvents.dispatchEvent(new CustomEvent('toast-open', {
detail: {
diff --git a/src/renderer/main.js b/src/renderer/main.js
index b3a40418963ae..fc0476101c4cb 100644
--- a/src/renderer/main.js
+++ b/src/renderer/main.js
@@ -27,6 +27,7 @@ import {
faCheck,
faChevronRight,
faCircleUser,
+ faClock,
faClone,
faComment,
faCommentDots,
@@ -76,6 +77,7 @@ import {
faSearch,
faServer,
faShareAlt,
+ faSlash,
faSlidersH,
faSortAlphaDown,
faSortAlphaDownAlt,
@@ -92,6 +94,7 @@ import {
faUserCheck,
faUsers,
faUsersSlash,
+ faWifi,
} from '@fortawesome/free-solid-svg-icons'
import {
faBookmark as farBookmark
@@ -101,7 +104,7 @@ import {
faGithub,
faMastodon,
} from '@fortawesome/free-brands-svg-icons'
-import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
+import { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'
import PortalVue from 'portal-vue'
Vue.config.devtools = process.env.NODE_ENV === 'development'
@@ -125,6 +128,7 @@ library.add(
faCheck,
faChevronRight,
faCircleUser,
+ faClock,
faClone,
faComment,
faCommentDots,
@@ -175,6 +179,7 @@ library.add(
faSearch,
faServer,
faShareAlt,
+ faSlash,
faSlidersH,
faSortAlphaDown,
faSortAlphaDownAlt,
@@ -191,6 +196,7 @@ library.add(
faUserCheck,
faUsers,
faUsersSlash,
+ faWifi,
// solid icons
farBookmark,
@@ -204,6 +210,7 @@ library.add(
registerSwiper()
Vue.component('FontAwesomeIcon', FontAwesomeIcon)
+Vue.component('FontAwesomeLayers', FontAwesomeLayers)
Vue.directive('observe-visibility', ObserveVisibility)
/* eslint-disable-next-line no-new */
diff --git a/src/renderer/store/modules/index.js b/src/renderer/store/modules/index.js
index d556d9571d6e0..f7ec3be26ba8f 100644
--- a/src/renderer/store/modules/index.js
+++ b/src/renderer/store/modules/index.js
@@ -10,6 +10,7 @@ import profiles from './profiles'
import settings from './settings'
import subscriptions from './subscriptions'
import utils from './utils'
+import player from './player'
export default {
history,
@@ -18,5 +19,6 @@ export default {
profiles,
settings,
subscriptions,
- utils
+ utils,
+ player
}
diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js
new file mode 100644
index 0000000000000..13192944d0587
--- /dev/null
+++ b/src/renderer/store/modules/player.js
@@ -0,0 +1,35 @@
+import { set as vueSet } from 'vue'
+import { createWebURL } from '../../helpers/utils'
+
+// replace with a Map after the Vue 3 and Pinia migrations
+const state = {
+ cachedPlayerLocales: {}
+}
+
+const getters = {}
+
+const actions = {
+ async cachePlayerLocale({ commit }, locale) {
+ const url = createWebURL(`/static/shaka-player-locales/${locale}.json`)
+
+ const response = await fetch(url)
+ const data = await response.json()
+
+ Object.freeze(data)
+
+ commit('addPlayerLocaleToCache', { locale, data })
+ }
+}
+
+const mutations = {
+ addPlayerLocaleToCache(state, { locale, data }) {
+ vueSet(state.cachedPlayerLocales, locale, data)
+ }
+}
+
+export default {
+ state,
+ getters,
+ actions,
+ mutations
+}
diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js
index bf54469f16f11..928b0eb3ccb26 100644
--- a/src/renderer/store/modules/settings.js
+++ b/src/renderer/store/modules/settings.js
@@ -300,7 +300,6 @@ const state = {
settingsSectionSortEnabled: false,
fetchSubscriptionsAutomatically: true,
settingsPassword: '',
- allowDashAv1Formats: false,
useDeArrowTitles: false,
useDeArrowThumbnails: false,
deArrowThumbnailGeneratorUrl: 'https://dearrow-thumb.ajay.app',
diff --git a/src/renderer/videoJS.css b/src/renderer/videoJS.css
deleted file mode 100644
index bbf783cab856d..0000000000000
--- a/src/renderer/videoJS.css
+++ /dev/null
@@ -1,2226 +0,0 @@
-@charset "UTF-8";
-.vjs-modal-dialog .vjs-modal-dialog-content, .video-js .vjs-modal-dialog, .vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
- position: absolute;
- top: 0px;
- left: 0;
- width: 100%;
- height: 100%;
-}
-
-.vjs-button > .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
- text-align: center;
-}
-
-@font-face {
- font-family: VideoJS;
- src: url(assets/font/VideoJS.woff);
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-play, .video-js .vjs-play-control .vjs-icon-placeholder, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-play:before, .video-js .vjs-play-control .vjs-icon-placeholder:before, .video-js .vjs-big-play-button .vjs-icon-placeholder:before {
- content: "\f101";
-}
-
-.vjs-icon-play-circle {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-play-circle:before {
- content: "\f102";
-}
-
-.vjs-icon-pause, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-pause:before, .video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before {
- content: "\f103";
-}
-
-.vjs-icon-volume-mute, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-volume-mute:before, .video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before {
- content: "\f104";
-}
-
-.vjs-icon-volume-low, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-volume-low:before, .video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before {
- content: "\f105";
-}
-
-.vjs-icon-volume-mid, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-volume-mid:before, .video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before {
- content: "\f106";
-}
-
-.vjs-icon-volume-high, .video-js .vjs-mute-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-volume-high:before, .video-js .vjs-mute-control .vjs-icon-placeholder:before {
- content: "\f107";
-}
-
-.vjs-icon-fullscreen-enter, .video-js .vjs-fullscreen-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-fullscreen-enter:before, .video-js .vjs-fullscreen-control .vjs-icon-placeholder:before {
- content: "\f108";
-}
-
-.vjs-icon-fullscreen-exit, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-fullscreen-exit:before, .video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before {
- content: "\f109";
-}
-
-.vjs-icon-square {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-square:before {
- content: "\f10a";
-}
-
-.vjs-icon-spinner {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-spinner:before {
- content: "\f10b";
-}
-
-.vjs-icon-subtitles, .video-js .vjs-subs-caps-button .vjs-icon-placeholder,
-.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,
-.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,
-.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,
-.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-subtitles-button .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-subtitles:before, .video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,
-.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,
-.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,
-.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,
-.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-subtitles-button .vjs-icon-placeholder:before {
- content: "\f10c";
-}
-
-.vjs-icon-captions, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,
-.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder, .video-js .vjs-captions-button .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-captions:before, .video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,
-.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before, .video-js .vjs-captions-button .vjs-icon-placeholder:before {
- content: "\f10d";
-}
-
-.vjs-icon-chapters, .video-js .vjs-chapters-button .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-chapters:before, .video-js .vjs-chapters-button .vjs-icon-placeholder:before {
- content: "\f10e";
-}
-
-.vjs-icon-share {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-share:before {
- content: "\f10f";
-}
-
-.vjs-icon-cog {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
- position: relative;
- top: -3px;
-}
-.vjs-icon-cog:before {
- content: "\f110";
-}
-.video-js .vjs-icon-cog {
- font-size: 2em;
-}
-
-.vjs-icon-circle, .vjs-seek-to-live-control .vjs-icon-placeholder, .video-js .vjs-volume-level, .video-js .vjs-play-progress {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-circle:before, .vjs-seek-to-live-control .vjs-icon-placeholder:before, .video-js .vjs-volume-level:before, .video-js .vjs-play-progress:before {
- content: "\f111";
-}
-
-.vjs-icon-circle-outline {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-circle-outline:before {
- content: "\f112";
-}
-
-.vjs-icon-circle-inner-circle {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-circle-inner-circle:before {
- content: "\f113";
-}
-
-.vjs-icon-hd {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-hd:before {
- content: "\f114";
-}
-
-.vjs-icon-cancel, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder {
- color: #fff;
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-cancel:before, .video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before {
- content: "\f115";
-}
-
-.vjs-icon-replay, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-replay:before, .video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before {
- content: "\f116";
-}
-
-.vjs-icon-facebook {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-facebook:before {
- content: "\f117";
-}
-
-.vjs-icon-gplus {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-gplus:before {
- content: "\f118";
-}
-
-.vjs-icon-linkedin {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-linkedin:before {
- content: "\f119";
-}
-
-.vjs-icon-twitter {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-twitter:before {
- content: "\f11a";
-}
-
-.vjs-icon-tumblr {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-tumblr:before {
- content: "\f11b";
-}
-
-.vjs-icon-pinterest {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-pinterest:before {
- content: "\f11c";
-}
-
-.vjs-icon-audio-description, .video-js .vjs-descriptions-button .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-audio-description:before, .video-js .vjs-descriptions-button .vjs-icon-placeholder:before {
- content: "\f11d";
-}
-
-.vjs-icon-audio, .video-js .vjs-audio-button .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-audio:before, .video-js .vjs-audio-button .vjs-icon-placeholder:before {
- content: "\f11e";
-}
-
-.vjs-icon-next-item {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-next-item:before {
- content: "\f11f";
-}
-
-.vjs-icon-previous-item {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-previous-item:before {
- content: "\f120";
-}
-
-.vjs-icon-picture-in-picture-enter, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-picture-in-picture-enter:before, .video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before {
- content: "\f121";
-}
-
-.vjs-icon-picture-in-picture-exit, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-picture-in-picture-exit:before, .video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before {
- content: "\f122";
-}
-
-.video-js {
- display: block;
- box-sizing: border-box;
- color: #fff;
- background-color: #000;
- position: relative;
- padding: 0;
- font-size: 10px;
- line-height: 1;
- font-weight: normal;
- font-style: normal;
- font-family: Arial, Helvetica, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
- word-break: initial;
-}
-.video-js:-moz-full-screen {
- position: absolute;
-}
-.video-js:-webkit-full-screen {
- width: 100% !important;
- height: 100% !important;
-}
-
-.video-js[tabindex="-1"] {
- outline: none;
-}
-
-.video-js *,
-.video-js *:before,
-.video-js *:after {
- box-sizing: inherit;
-}
-
-.video-js ul {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
- list-style-position: outside;
- margin-left: 0;
- margin-right: 0;
- margin-top: 0;
- margin-bottom: 0;
-}
-
-.video-js.vjs-fluid,
-.video-js.vjs-16-9,
-.video-js.vjs-4-3 {
- width: 100%;
- height: 0;
-}
-
-.video-js.vjs-16-9 {
- padding-top: 56.25%;
-}
-
-.video-js.vjs-4-3 {
- padding-top: 75%;
-}
-
-.video-js.vjs-fill {
- width: 100%;
- height: 100%;
-}
-
-.video-js .vjs-tech {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-}
-
-body.vjs-full-window {
- padding: 0;
- margin: 0;
- width: 100%;
- height: 100%;
-}
-
-.vjs-full-window .video-js.vjs-full-screen {
- position: fixed;
- overflow: hidden;
- z-index: 1000;
- left: 0;
- top: 0;
- bottom: 0;
- right: 0;
-}
-
-.video-js.vjs-full-screen {
- width: 100% !important;
- height: 100% !important;
- padding-top: 0 !important;
-}
-
-.video-js.vjs-full-screen.vjs-user-inactive {
- cursor: none;
-}
-
-.vjs-icon-fullwindow-enter, .vjs-icon-theatre-inactive, .video-js .vjs-fullwindow-control .vjs-icon-placeholder {
- color: white !important;
- margin-top: 10px !important;
- cursor:pointer;
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-fullwindow-enter:before, .video-js .vjs-fullwindow-control .vjs-icon-placeholder:before {
- content: url(assets/img/open_fullwindow.svg);
-}
-/* Hide button in full screen mode */
-.vjs--full-screen-enabled .vjs-button-fullwindow, .vjs--full-screen-enabled .vjs-button-theatre, .vjs-full-window .vjs-button-theatre {
- display: none;
-}
-
-.vjs-icon-fullwindow-exit, .vjs-icon-theatre-active, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder {
- font-family: VideoJS;
- font-weight: normal;
- font-style: normal;
-}
-.vjs-icon-fullwindow-exit:before, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder:before {
- content: url(assets/img/close_fullwindow.svg);
-}
-
-.vjs-icon-loop, .video-js .vjs-fullwindow-control .vjs-icon-placeholder {
- color: white !important;
- margin-top: 5px !important;
- padding-top: 5px !important;
- cursor: pointer;
-}
-
-.vjs-icon-theatre-inactive, .vjs-icon-theatre-active {
- margin-top: 10px !important;
-}
-
-.vjs-icon-loop-active {
- background-color: var(--primary-color);
-}
-
-.vjs-icon-loop:before, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder:before {
- content: url(assets/img/loop.svg);
- /* filter: invert(1) drop-shadow(1px 0px 0px var(--primary-color)); */
-}
-
-.vjs-icon-theatre-inactive:before {
- content: url(assets/img/open_theatre.svg)
-}
-
-.vjs-icon-theatre-active:before {
- content: url(assets/img/close_theatre.svg)
-}
-
-.vjs-icon-screenshot {
- margin-top: 3px;
- padding-top: 3px;
- cursor: pointer;
-}
-
-.vjs-icon-screenshot::before {
- content: url(assets/img/camera.svg)
-}
-
-@media only screen and (max-width: 1350px) {
- .videoPlayer .vjs-button-theatre {
- display: none
- }
-}
-
-.loop-black:before {
- filter: brightness(0%);
-}
-
-.loop-white:before {
- filter: none;
-}
-
-.vjs-full-window .video-js.vjs-fullscreen {
- position: fixed;
- overflow: hidden;
- z-index: 1000;
- left: 0;
- top: 0;
- bottom: 0;
- right: 0;
-}
-
-.video-js.vjs-fullscreen {
- width: 100% !important;
- height: 100% !important;
- padding-top: 0 !important;
-}
-
-.video-js.vjs-fullscreen.vjs-user-inactive {
- cursor: none;
-}
-
-.vjs-hidden {
- display: none !important;
-}
-
-.vjs-disabled {
- opacity: 0.5;
- cursor: default;
-}
-
-.video-js .vjs-offscreen {
- height: 1px;
- left: -9999px;
- position: absolute;
- top: 0;
- width: 1px;
-}
-
-.vjs-lock-showing {
- display: block !important;
- opacity: 1;
- visibility: visible;
-}
-
-.vjs-no-js {
- padding: 20px;
- color: #fff;
- background-color: #000;
- font-size: 18px;
- font-family: Arial, Helvetica, sans-serif;
- text-align: center;
- width: 300px;
- height: 150px;
- margin: 0px auto;
-}
-
-.vjs-no-js a,
-.vjs-no-js a:visited {
- color: #66A8CC;
-}
-
-.video-js .vjs-big-play-button {
- font-size: 3em;
- line-height: 1.5em;
- height: 1.63332em;
- width: 3em;
- display: block;
- position: absolute;
- top: 10px;
- left: 10px;
- padding: 0;
- cursor: pointer;
- opacity: 1;
- border: 0.06666em solid #fff;
- background-color: #2B333F;
- background-color: rgba(43, 51, 63, 0.7);
- border-radius: 0.3em;
- transition: all 0.4s;
-}
-.vjs-big-play-centered .vjs-big-play-button {
- top: 50%;
- left: 50%;
- margin-top: -0.81666em;
- margin-left: -1.5em;
-}
-
-.video-js:hover .vjs-big-play-button,
-.video-js .vjs-big-play-button:focus {
- border-color: #fff;
- background-color: #73859f;
- background-color: rgba(115, 133, 159, 0.5);
- transition: all 0s;
-}
-
-.vjs-controls-disabled .vjs-big-play-button,
-.vjs-has-started .vjs-big-play-button,
-.vjs-using-native-controls .vjs-big-play-button,
-.vjs-error .vjs-big-play-button {
- display: none;
-}
-
-.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button {
- display: block;
-}
-
-.video-js button {
- background: none;
- border: 0;
- color: inherit;
- display: inline-block;
- font-size: inherit;
- line-height: inherit;
- text-transform: none;
- text-decoration: none;
- transition: none;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-}
-
-.vjs-control .vjs-button {
- width: 100%;
- height: 100%;
-}
-
-.video-js .vjs-control.vjs-close-button {
- cursor: pointer;
- height: 3em;
- position: absolute;
- right: 0;
- top: 0.5em;
- z-index: 2;
-}
-.video-js .vjs-modal-dialog {
- background: rgba(0, 0, 0, 0.8);
- background: linear-gradient(180deg, rgba(0, 0, 0, 0.8), rgba(255, 255, 255, 0));
- overflow: auto;
-}
-
-.video-js .vjs-modal-dialog > * {
- box-sizing: border-box;
-}
-
-.vjs-modal-dialog .vjs-modal-dialog-content {
- font-size: 1.2em;
- line-height: 1.5;
- padding: 20px 24px;
- z-index: 1;
-}
-
-.vjs-menu-button {
- cursor: pointer;
-}
-
-.vjs-menu-button.vjs-disabled {
- cursor: default;
-}
-
-.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu {
- display: none;
-}
-
-.vjs-quality-level-value {
- width: 100%;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.vjs-quality-level-value:hover + .vjs-quality-level-menu {
- display: block;
-}
-
-.vjs-quality-level-menu {
- display: none;
- position: absolute;
- bottom: 30px;
- left: -33px;
- z-index: 5;
- background-color: #151b17;
- width: 100px;
- max-height: 225px;
- overflow-y: auto;
-}
-
-.vjs-quality-level-menu:hover {
- display: block;
-}
-
-.vjs-quality-level-menu .vjs-menu-item {
- padding: 5px;
-}
-
-.quality-selected {
- background-color: var(--primary-color);
- color: var(--text-with-main-color);
-}
-
-.quality-selected:hover {
- background-color: var(--primary-color-hover) !important;
-}
-
-.vjs-menu .vjs-menu-content {
- display: block;
- padding: 0;
- margin: 0;
- font-family: Arial, Helvetica, sans-serif;
- overflow: auto;
-}
-
-.vjs-menu .vjs-menu-content > * {
- box-sizing: border-box;
-}
-
-.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu {
- display: none;
-}
-
-.vjs-menu li {
- list-style: none;
- margin: 0;
- padding: 0.2em 0;
- line-height: 1.4em;
- font-size: 1.2em;
- text-align: center;
- text-transform: lowercase;
-}
-
-.vjs-menu li.vjs-menu-item:focus,
-.vjs-menu li.vjs-menu-item:hover,
-.js-focus-visible .vjs-menu li.vjs-menu-item:hover {
- background-color: #73859f;
- background-color: rgba(115, 133, 159, 0.5);
-}
-
-.vjs-menu li.vjs-selected,
-.vjs-menu li.vjs-selected:focus,
-.vjs-menu li.vjs-selected:hover,
-.js-focus-visible .vjs-menu li.vjs-selected:hover {
- background-color: #fff;
- color: #2B333F;
-}
-
-.vjs-menu li.vjs-menu-title {
- text-align: center;
- text-transform: uppercase;
- font-size: 1em;
- line-height: 2em;
- padding: 0;
- margin: 0 0 0.3em 0;
- font-weight: bold;
- cursor: default;
-}
-
-.vjs-menu-button-popup .vjs-menu {
- display: none;
- position: absolute;
- bottom: 0;
- width: 10em;
- left: -2em;
- height: 0em;
- margin-bottom: 1.4em;
- border-top-color: rgba(43, 51, 63, 0.7);
-}
-
-.vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- background-color: #2B333F;
- background-color: rgba(43, 51, 63, 0.7);
- position: absolute;
- bottom: 1.5em;
- max-height: 19em;
-}
-
-.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
-.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- max-height: 5em;
-}
-
-.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- max-height: 10em;
-}
-
-.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- max-height: 14em;
-}
-
-.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
-.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
-.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- max-height: 25em;
-}
-
-.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,
-.vjs-menu-button-popup .vjs-menu.vjs-lock-showing {
- display: block;
-}
-
-.video-js .vjs-menu-button-inline {
- transition: all 0.4s;
- overflow: hidden;
-}
-
-.video-js .vjs-menu-button-inline:before {
- width: 2.222222222em;
-}
-
-.video-js .vjs-menu-button-inline:hover,
-.video-js .vjs-menu-button-inline:focus,
-.video-js .vjs-menu-button-inline.vjs-slider-active,
-.video-js.vjs-no-flex .vjs-menu-button-inline {
- width: 12em;
-}
-
-.vjs-menu-button-inline .vjs-menu {
- opacity: 0;
- height: 100%;
- width: auto;
- position: absolute;
- left: 4em;
- top: 0;
- padding: 0;
- margin: 0;
- transition: all 0.4s;
-}
-
-.vjs-menu-button-inline:hover .vjs-menu,
-.vjs-menu-button-inline:focus .vjs-menu,
-.vjs-menu-button-inline.vjs-slider-active .vjs-menu {
- display: block;
- opacity: 1;
-}
-
-.vjs-no-flex .vjs-menu-button-inline .vjs-menu {
- display: block;
- opacity: 1;
- position: relative;
- width: auto;
-}
-
-.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu,
-.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,
-.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu {
- width: auto;
-}
-
-.vjs-menu-button-inline .vjs-menu-content {
- width: auto;
- height: 100%;
- margin: 0;
- overflow: hidden;
-}
-
-.video-js .vjs-control-bar {
- display: none;
- width: 100%;
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- height: 3em;
- background-color: #2B333F;
- background-color: rgba(43, 51, 63, 0.7);
-}
-
-.vjs-has-started .vjs-control-bar {
- display: flex;
- visibility: visible;
- opacity: 1;
- transition: visibility 0.1s, opacity 0.1s;
-}
-
-.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
- visibility: visible;
- opacity: 0;
- transition: visibility 1s, opacity 1s;
-}
-
-.vjs-controls-disabled .vjs-control-bar,
-.vjs-using-native-controls .vjs-control-bar,
-.vjs-error .vjs-control-bar {
- display: none !important;
-}
-
-.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
- opacity: 1;
- visibility: visible;
-}
-
-.vjs-has-started.vjs-no-flex .vjs-control-bar {
- display: table;
-}
-
-.video-js .vjs-control {
- position: relative;
- text-align: center;
- margin: 0;
- padding: 0;
- height: 100%;
- width: 4em;
- flex: none;
-}
-
-.vjs-button > .vjs-icon-placeholder:before {
- font-size: 2em;
- line-height: 1.67;
-}
-
-.video-js .vjs-control:focus:before,
-.video-js .vjs-control:hover:before,
-.video-js .vjs-control:focus {
- text-shadow: 0em 0em 1em white;
-}
-
-.video-js .vjs-control-text {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
-}
-
-.vjs-no-flex .vjs-control {
- display: table-cell;
- vertical-align: middle;
-}
-
-.video-js .vjs-custom-control-spacer {
- display: none;
-}
-
-.video-js .vjs-progress-control {
- cursor: pointer;
- flex: auto;
- display: flex;
- align-items: center;
- min-width: 4em;
- touch-action: none;
- z-index: 1;
-}
-
-.video-js .vjs-progress-control.disabled {
- cursor: default;
-}
-
-.vjs-live .vjs-progress-control {
- display: none;
-}
-
-.vjs-liveui .vjs-progress-control {
- display: flex;
- align-items: center;
-}
-
-.vjs-no-flex .vjs-progress-control {
- width: auto;
-}
-
-.video-js .vjs-progress-holder {
- flex: auto;
- transition: all 0.2s;
- height: 0.3em;
-}
-
-.video-js .vjs-progress-control .vjs-progress-holder {
- margin: 0 10px;
-}
-
-.video-js .vjs-progress-control:hover .vjs-progress-holder {
- font-size: 1.6666666667em;
-}
-
-.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled {
- font-size: 1em;
-}
-
-.video-js .vjs-progress-holder .vjs-play-progress,
-.video-js .vjs-progress-holder .vjs-load-progress,
-.video-js .vjs-progress-holder .vjs-load-progress div {
- position: absolute;
- display: block;
- height: 100%;
- margin: 0;
- padding: 0;
- width: 0;
-}
-
-.video-js .vjs-play-progress {
- background-color: #fff;
-}
-.video-js .vjs-play-progress:before {
- font-size: 0.9em;
- position: absolute;
- right: -0.5em;
- top: -0.3333333333em;
- z-index: 1;
-}
-
-.video-js .vjs-load-progress {
- background: rgba(115, 133, 159, 0.5);
-}
-
-.video-js .vjs-load-progress div {
- background: rgba(115, 133, 159, 0.75);
-}
-
-.video-js .vjs-time-tooltip {
- background-color: #fff;
- background-color: rgba(255, 255, 255, 0.8);
- border-radius: 0.3em;
- color: #000;
- float: right;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 1em;
- padding: 6px 8px 8px 8px;
- pointer-events: none;
- position: absolute;
- top: -2.7em;
- visibility: hidden;
- z-index: 2;
-}
-
-.video-js .vjs-progress-holder:focus .vjs-time-tooltip {
- display: none;
-}
-
-.video-js .vjs-progress-control:hover .vjs-time-tooltip,
-.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip {
- display: block;
- font-size: 0.6em;
- visibility: visible;
-}
-
-.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip {
- font-size: 1em;
-}
-
-.video-js .vjs-progress-control .vjs-mouse-display {
- display: none;
- position: absolute;
- width: 1px;
- height: 100%;
- background-color: #000;
- z-index: 4;
-}
-
-.vjs-no-flex .vjs-progress-control .vjs-mouse-display {
- z-index: 0;
-}
-
-.video-js .vjs-progress-control:hover .vjs-mouse-display {
- display: block;
-}
-
-.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display {
- visibility: hidden;
- opacity: 0;
- transition: visibility 1s, opacity 1s;
-}
-
-.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display {
- display: none;
-}
-
-.vjs-mouse-display .vjs-time-tooltip {
- color: #fff;
- background-color: #000;
- background-color: rgba(0, 0, 0, 0.8);
-}
-
-.video-js .vjs-slider {
- position: relative;
- cursor: pointer;
- padding: 0;
- margin: 0 0.45em 0 0.45em;
- user-select: none;
- background-color: #73859f;
- background-color: rgba(115, 133, 159, 0.5);
-}
-
-.video-js .vjs-slider.disabled {
- cursor: default;
-}
-
-.video-js .vjs-slider:focus {
- text-shadow: 0em 0em 1em white;
- box-shadow: 0 0 1em #fff;
-}
-
-.video-js .vjs-mute-control {
- cursor: pointer;
- flex: none;
-}
-.video-js .vjs-volume-control {
- cursor: pointer;
- margin-right: 1em;
- display: flex;
-}
-
-.video-js .vjs-volume-control.vjs-volume-horizontal {
- width: 5em;
- top: 3px;
-}
-
-.video-js .vjs-volume-panel .vjs-volume-control {
- visibility: visible;
- opacity: 0;
- width: 1px;
- height: 1px;
- margin-left: -1px;
-}
-
-.video-js .vjs-volume-tooltip {
- display: none;
-}
-
-.video-js .vjs-volume-panel {
- transition: width 1s;
-}
-.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control, .video-js .vjs-volume-panel:active .vjs-volume-control, .video-js .vjs-volume-panel:focus .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control:active, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active {
- visibility: visible;
- opacity: 1;
- position: relative;
- transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, left 0s, top 0s;
-}
-.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-horizontal, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal {
- width: 5em;
- height: 3em;
- margin-right: 0;
-}
-.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical, .video-js .vjs-volume-panel.vjs-hover .vjs-mute-control ~ .vjs-volume-control.vjs-volume-vertical, .video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical {
- left: -3.5em;
- transition: left 0s;
-}
-.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active, .video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active {
- width: 8em;
- transition: width 0.1s;
-}
-.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only {
- width: 4em;
-}
-
-.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {
- height: 8em;
- width: 3em;
- left: -3000em;
- transition: visibility 1s, opacity 1s, height 1s 1s, width 1s 1s, left 1s 1s, top 1s 1s;
-}
-
-.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {
- transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, left 1s 1s, top 1s 1s;
-}
-
-.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {
- width: 5em;
- height: 3em;
- visibility: visible;
- opacity: 1;
- position: relative;
- transition: none;
-}
-
-.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,
-.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {
- position: absolute;
- bottom: 3em;
- left: 0.5em;
-}
-
-.video-js .vjs-volume-panel {
- display: flex;
-}
-
-.video-js .vjs-volume-bar {
- margin: 1.35em 0.45em;
-}
-
-.vjs-volume-bar.vjs-slider-horizontal {
- width: 5em;
- height: 0.3em;
- position: relative;
- top: -2px;
-}
-
-.vjs-volume-bar.vjs-slider-vertical {
- width: 0.3em;
- height: 5em;
- margin: 1.35em auto;
-}
-
-.video-js .vjs-volume-level {
- position: absolute;
- bottom: 0;
- left: 0;
- background-color: #fff;
-}
-.video-js .vjs-volume-level:before {
- position: absolute;
- font-size: 0.9em;
-}
-
-.vjs-slider-vertical .vjs-volume-level {
- width: 0.3em;
-}
-.vjs-slider-vertical .vjs-volume-level:before {
- top: -0.5em;
- left: -0.3em;
-}
-
-.vjs-slider-horizontal .vjs-volume-level {
- height: 0.3em;
-}
-.vjs-slider-horizontal .vjs-volume-level:before {
- top: -0.3em;
- right: -0.5em;
-}
-
-.video-js .vjs-volume-panel.vjs-volume-panel-vertical {
- width: 4em;
-}
-
-.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level {
- height: 100%;
-}
-
-.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {
- width: 100%;
-}
-
-.video-js .vjs-volume-vertical {
- width: 3em;
- height: 8em;
- bottom: 8em;
- background-color: #2B333F;
- background-color: rgba(43, 51, 63, 0.7);
-}
-
-.video-js .vjs-volume-horizontal .vjs-menu {
- left: -2em;
-}
-
-.vjs-poster {
- display: inline-block;
- vertical-align: middle;
- background-repeat: no-repeat;
- background-position: 50% 50%;
- background-size: contain;
- background-color: #000000;
- cursor: pointer;
- margin: 0;
- padding: 0;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- height: 100%;
-}
-
-.vjs-has-started .vjs-poster {
- display: none;
-}
-
-.vjs-audio.vjs-has-started .vjs-poster {
- display: block;
-}
-
-.vjs-using-native-controls .vjs-poster {
- display: none;
-}
-
-.video-js .vjs-live-control {
- display: flex;
- align-items: flex-start;
- flex: auto;
- font-size: 1em;
- line-height: 3em;
-}
-
-.vjs-no-flex .vjs-live-control {
- display: table-cell;
- width: auto;
- text-align: left;
-}
-
-.video-js:not(.vjs-live) .vjs-live-control,
-.video-js.vjs-liveui .vjs-live-control {
- display: none;
-}
-
-.video-js .vjs-seek-to-live-control {
- cursor: pointer;
- flex: none;
- display: inline-flex;
- height: 100%;
- padding-left: 0.5em;
- padding-right: 0.5em;
- font-size: 1em;
- line-height: 3em;
- width: auto;
- min-width: 4em;
-}
-
-.vjs-no-flex .vjs-seek-to-live-control {
- display: table-cell;
- width: auto;
- text-align: left;
-}
-
-.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,
-.video-js:not(.vjs-live) .vjs-seek-to-live-control {
- display: none;
-}
-
-.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge {
- cursor: auto;
-}
-
-.vjs-seek-to-live-control .vjs-icon-placeholder {
- margin-right: 0.5em;
- color: #888;
-}
-
-.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder {
- color: red;
-}
-
-.video-js .vjs-time-control {
- flex: none;
- font-size: 1em;
- line-height: 3.7em;
- min-width: 2em;
- width: auto;
- padding-left: 0em;
- padding-right: 0em;
-}
-
-.vjs-live .vjs-time-control {
- display: none;
-}
-
-.video-js .vjs-current-time,
-.vjs-no-flex .vjs-current-time {
- display: none;
-}
-
-.video-js .vjs-duration,
-.vjs-no-flex .vjs-duration {
- display: none;
-}
-
-.vjs-time-divider {
- display: none;
- line-height: 3em;
-}
-
-.vjs-live .vjs-time-divider {
- display: none;
-}
-
-.video-js .vjs-play-control {
- cursor: pointer;
- position: relative;
- top: -1px;
-}
-
-.video-js .vjs-play-control .vjs-icon-placeholder {
- flex: none;
-}
-
-.vjs-text-track-display {
- position: absolute;
- bottom: 3em;
- left: 0;
- right: 0;
- top: 0;
- pointer-events: none;
-}
-
-.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {
- bottom: 1em;
-}
-
-.video-js .vjs-text-track {
- font-size: 1.4em;
- text-align: center;
- margin-bottom: 0.1em;
-}
-
-.vjs-subtitles {
- color: #fff;
-}
-
-.vjs-captions {
- color: #fc6;
-}
-
-.vjs-tt-cue {
- display: block;
-}
-
-video::-webkit-media-text-track-display {
- transform: translateY(-3em);
-}
-
-.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display {
- transform: translateY(-1.5em);
-}
-
-.video-js .vjs-picture-in-picture-control {
- cursor: pointer;
- flex: none;
- position: relative;
- top: -1px;
-}
-.video-js .vjs-fullscreen-control {
- cursor: pointer;
- flex: none;
- position: relative;
- top: -1px;
-}
-.vjs-playback-rate > .vjs-menu-button,
-.vjs-playback-rate .vjs-playback-rate-value {
- position: absolute;
- line-height: 36px;
- left: 0;
- width: 100%;
- height: 100%;
-}
-
-.vjs-playback-rate .vjs-playback-rate-value {
- pointer-events: none;
- font-size: 1.2em;
- text-align: center;
-}
-
-.vjs-playback-rate .vjs-menu {
- width: 4em;
- left: 0em;
-}
-
-.vjs-error .vjs-error-display .vjs-modal-dialog-content {
- font-size: 1.4em;
- text-align: center;
-}
-
-.vjs-error .vjs-error-display:before {
- color: #fff;
- content: "X";
- font-family: Arial, Helvetica, sans-serif;
- font-size: 4em;
- left: 0;
- line-height: 1;
- margin-top: -0.5em;
- position: absolute;
- text-shadow: 0.05em 0.05em 0.1em #000;
- text-align: center;
- top: 50%;
- vertical-align: middle;
- width: 100%;
-}
-
-.vjs-loading-spinner {
- display: none;
- position: absolute;
- top: 50%;
- left: 50%;
- margin: -25px 0 0 -25px;
- opacity: 0.85;
- text-align: left;
- border: 6px solid rgba(43, 51, 63, 0.7);
- box-sizing: border-box;
- background-clip: padding-box;
- width: 50px;
- height: 50px;
- border-radius: 25px;
- visibility: hidden;
-}
-
-.vjs-seeking .vjs-loading-spinner,
-.vjs-waiting .vjs-loading-spinner {
- display: block;
- -webkit-animation: vjs-spinner-show 0s linear 0.3s forwards;
- animation: vjs-spinner-show 0s linear 0.3s forwards;
-}
-
-.vjs-loading-spinner:before,
-.vjs-loading-spinner:after {
- content: "";
- position: absolute;
- margin: -6px;
- box-sizing: inherit;
- width: inherit;
- height: inherit;
- border-radius: inherit;
- opacity: 1;
- border: inherit;
- border-color: transparent;
- border-top-color: white;
-}
-
-.vjs-seeking .vjs-loading-spinner:before,
-.vjs-seeking .vjs-loading-spinner:after,
-.vjs-waiting .vjs-loading-spinner:before,
-.vjs-waiting .vjs-loading-spinner:after {
- -webkit-animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite;
- animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite, vjs-spinner-fade 1.1s linear infinite;
-}
-
-.vjs-seeking .vjs-loading-spinner:before,
-.vjs-waiting .vjs-loading-spinner:before {
- border-top-color: white;
-}
-
-.vjs-seeking .vjs-loading-spinner:after,
-.vjs-waiting .vjs-loading-spinner:after {
- border-top-color: white;
- -webkit-animation-delay: 0.44s;
- animation-delay: 0.44s;
-}
-
-@keyframes vjs-spinner-show {
- to {
- visibility: visible;
- }
-}
-@-webkit-keyframes vjs-spinner-show {
- to {
- visibility: visible;
- }
-}
-@keyframes vjs-spinner-spin {
- 100% {
- transform: rotate(360deg);
- }
-}
-@-webkit-keyframes vjs-spinner-spin {
- 100% {
- -webkit-transform: rotate(360deg);
- }
-}
-@keyframes vjs-spinner-fade {
- 0% {
- border-top-color: #73859f;
- }
- 20% {
- border-top-color: #73859f;
- }
- 35% {
- border-top-color: white;
- }
- 60% {
- border-top-color: #73859f;
- }
- 100% {
- border-top-color: #73859f;
- }
-}
-@-webkit-keyframes vjs-spinner-fade {
- 0% {
- border-top-color: #73859f;
- }
- 20% {
- border-top-color: #73859f;
- }
- 35% {
- border-top-color: white;
- }
- 60% {
- border-top-color: #73859f;
- }
- 100% {
- border-top-color: #73859f;
- }
-}
-.vjs-chapters-button .vjs-menu ul {
- width: 24em;
-}
-
-.vjs-subs-caps-button .vjs-menu {
- left: -4em!important;
-}
-
-.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
- vertical-align: middle;
- display: inline-block;
- margin-bottom: -0.1em;
-}
-
-.video-js .vjs-subs-caps-button + .vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
- font-family: VideoJS;
- content: "";
- font-size: 1.5em;
- line-height: inherit;
-}
-
-.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
- vertical-align: middle;
- display: inline-block;
- margin-bottom: -0.1em;
-}
-
-.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
- font-family: VideoJS;
- content: " ";
- font-size: 1.5em;
- line-height: inherit;
-}
-
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-current-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-time-divider,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-duration,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-remaining-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-playback-rate,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-chapters-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-descriptions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-captions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-subtitles-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-audio-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-volume-control, .video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-current-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-time-divider,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-duration,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-remaining-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-playback-rate,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-chapters-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-descriptions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-captions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-subtitles-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-audio-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-volume-control, .video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-current-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-time-divider,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-duration,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-remaining-time,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-playback-rate,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-chapters-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-descriptions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-captions-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-subtitles-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-audio-button,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-volume-control {
- display: none;
-}
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,
-.video-js:not(.vjs-fullscreen).vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active, .video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,
-.video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active {
- width: auto;
- width: initial;
-}
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small:not(.vjs-liveui) .vjs-subs-caps-button, .video-js:not(.vjs-fullscreen).vjs-layout-x-small:not(.vjs-live) .vjs-subs-caps-button, .video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-subs-caps-button {
- display: none;
-}
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small.vjs-liveui .vjs-custom-control-spacer, .video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-custom-control-spacer {
- flex: auto;
- display: block;
-}
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small.vjs-liveui.vjs-no-flex .vjs-custom-control-spacer, .video-js:not(.vjs-fullscreen).vjs-layout-tiny.vjs-no-flex .vjs-custom-control-spacer {
- width: auto;
-}
-.video-js:not(.vjs-fullscreen).vjs-layout-x-small.vjs-liveui .vjs-progress-control, .video-js:not(.vjs-fullscreen).vjs-layout-tiny .vjs-progress-control {
- display: none;
-}
-
-.vjs-modal-dialog.vjs-text-track-settings {
- background-color: #2B333F;
- background-color: rgba(43, 51, 63, 0.75);
- color: #000;
- height: 70%;
-}
-
-.vjs-text-track-settings .vjs-modal-dialog-content {
- display: table;
-}
-
-.vjs-text-track-settings .vjs-track-settings-colors,
-.vjs-text-track-settings .vjs-track-settings-font,
-.vjs-text-track-settings .vjs-track-settings-controls {
- display: table-cell;
-}
-
-.vjs-text-track-settings .vjs-track-settings-controls {
- text-align: right;
- vertical-align: bottom;
-}
-
-@supports (display: grid) {
- .vjs-text-track-settings .vjs-modal-dialog-content {
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: 1fr;
- padding: 20px 24px 0px 24px;
- }
-
- .vjs-track-settings-controls .vjs-default-button {
- margin-bottom: 20px;
- }
-
- .vjs-text-track-settings .vjs-track-settings-controls {
- grid-column: 1/-1;
- }
-
- .vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,
-.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,
-.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content {
- grid-template-columns: 1fr;
- }
-}
-.vjs-track-setting > select {
- margin-right: 1em;
- margin-bottom: 0.5em;
-}
-
-.vjs-text-track-settings fieldset {
- margin: 5px;
- padding: 3px;
- border: 0;
-}
-
-.vjs-text-track-settings fieldset span {
- display: inline-block;
-}
-
-.vjs-text-track-settings fieldset span > select {
- max-width: 7.3em;
-}
-
-.vjs-text-track-settings legend {
- color: #fff;
- margin: 0 0 5px 0;
-}
-
-.vjs-text-track-settings .vjs-label {
- position: absolute;
- clip: rect(1px 1px 1px 1px);
- clip: rect(1px, 1px, 1px, 1px);
- display: block;
- margin: 0 0 5px 0;
- padding: 0;
- border: 0;
- height: 1px;
- width: 1px;
- overflow: hidden;
-}
-
-.vjs-track-settings-controls button:focus,
-.vjs-track-settings-controls button:active {
- outline-style: solid;
- outline-width: medium;
- background-image: linear-gradient(0deg, #fff 88%, #73859f 100%);
-}
-
-.vjs-track-settings-controls button:hover {
- color: rgba(43, 51, 63, 0.75);
-}
-
-.vjs-track-settings-controls button {
- background-color: #fff;
- background-image: linear-gradient(-180deg, #fff 88%, #73859f 100%);
- color: #2B333F;
- cursor: pointer;
- border-radius: 2px;
-}
-
-.vjs-track-settings-controls .vjs-default-button {
- margin-right: 1em;
-}
-
-@media print {
- .video-js > *:not(.vjs-tech):not(.vjs-poster) {
- visibility: hidden;
- }
-}
-.vjs-resize-manager {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: 0;
- z-index: -1000;
-}
-
-.js-focus-visible .video-js *:focus:not(.focus-visible) {
- outline: none;
- background: none;
-}
-
-.video-js *:focus:not(:focus-visible),
-.video-js .vjs-menu *:focus:not(:focus-visible) {
- outline: none;
- background: none;
-}
-
-/* YouTube Style Theme */
-
-.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline {
- width: 10em
-}
-
-.video-js .vjs-controls-disabled .vjs-big-play-button {
- display: none!important
-}
-
-.video-js .vjs-control {
- width: 3em
-}
-
-.video-js .vjs-menu-button-inline:before {
- width: 1.5em
-}
-
-.vjs-menu-button-inline .vjs-menu {
- left: 3em
-}
-
-.vjs-paused.vjs-has-started.video-js .vjs-big-play-button,.video-js.vjs-ended .vjs-big-play-button,.video-js.vjs-paused .vjs-big-play-button {
- display: block
-}
-
-.video-js .vjs-load-progress div,.vjs-seeking .vjs-big-play-button,.vjs-waiting .vjs-big-play-button,.vjs-using-touch .vjs-big-play-button {
- display: none!important
-}
-
-.video-js .vjs-mouse-display:after,.video-js .vjs-play-progress:after {
- padding: 0 .4em .3em
-}
-
-.video-js.vjs-ended .vjs-loading-spinner {
- display: none;
-}
-
-.video-js.vjs-ended .vjs-big-play-button {
- display: block !important;
-}
-
-.video-js *,.video-js:after,.video-js:before {
- box-sizing: inherit;
- font-size: inherit;
- color: inherit;
- line-height: inherit
-}
-
-.video-js.vjs-fullscreen,.video-js.vjs-fullscreen .vjs-tech {
- width: 100%!important;
- height: 100%!important
-}
-
-.video-js {
- font-size: 14px;
- overflow: hidden
-}
-
-.video-js .vjs-control {
- color: inherit
-}
-
-.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline {
- width: 8.35em
-}
-
-.video-js .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:hover .vjs-menu .vjs-menu-content {
- height: 3em;
- width: 6.35em
-}
-
-.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before {
- text-shadow: 0 0 1em #fff,0 0 1em #fff,0 0 1em #fff
-}
-
-.video-js .vjs-spacer,.video-js .vjs-time-control {
- display: -webkit-box;
- display: -moz-box;
- display: -ms-flexbox;
- display: -webkit-flex;
- display: flex;
- -webkit-box-flex: 1 1 auto;
- -moz-box-flex: 1 1 auto;
- -webkit-flex: 1 1 auto;
- -ms-flex: 1 1 auto;
- flex: 1 1 auto
-}
-
-.video-js .vjs-time-control {
- -webkit-box-flex: 0 1 auto;
- -moz-box-flex: 0 1 auto;
- -webkit-flex: 0 1 auto;
- -ms-flex: 0 1 auto;
- flex: 0 1 auto;
- width: auto;
- font-size: 14px;
- position: relative;
- top: -6px;
-}
-
-.video-js .vjs-time-control.vjs-time-divider {
- width: 14px
-}
-
-.video-js .vjs-time-control.vjs-time-divider div {
- width: 100%;
- text-align: center
-}
-
-.video-js .vjs-time-control.vjs-current-time {
- margin-left: 1em
-}
-
-.video-js .vjs-time-control .vjs-current-time-display,.video-js .vjs-time-control .vjs-duration-display {
- width: 100%
-}
-
-.video-js .vjs-time-control .vjs-current-time-display {
- text-align: right
-}
-
-.video-js .vjs-time-control .vjs-duration-display {
- text-align: left
-}
-
-.video-js .vjs-play-progress:before,.video-js .vjs-progress-control .vjs-play-progress:before,.video-js .vjs-remaining-time,.video-js .vjs-volume-level:after,.video-js .vjs-volume-level:before,.video-js.vjs-live .vjs-time-control.vjs-current-time,.video-js.vjs-live .vjs-time-control.vjs-duration,.video-js.vjs-live .vjs-time-control.vjs-time-divider,.video-js.vjs-no-flex .vjs-time-control.vjs-remaining-time {
- display: none
-}
-
-.video-js.vjs-no-flex .vjs-time-control {
- display: table-cell;
- width: 4em
-}
-
-.video-js .vjs-progress-control {
- position: absolute;
- left: 0;
- right: 0;
- width: 100%;
- height: .4em;
- top: -.1em
-}
-
-.video-js .vjs-progress-control .vjs-load-progress,.video-js .vjs-progress-control .vjs-play-progress,.video-js .vjs-progress-control .vjs-progress-holder {
- height: 100%
-}
-
-.video-js .vjs-progress-control .vjs-progress-holder {
- margin: 0
-}
-
-.video-js .vjs-progress-control:hover {
- height: 1.25em;
- top: -0.95em
-}
-
-.video-js .vjs-control-bar {
- -webkit-transition: -webkit-transform .1s ease 0s;
- -moz-transition: -moz-transform .1s ease 0s;
- -ms-transition: -ms-transform .1s ease 0s;
- -o-transition: -o-transform .1s ease 0s;
- transition: transform .1s ease 0s
-}
-
-.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-control-bar,.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-control-bar,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-control-bar,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar,.video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar {
- visibility: visible;
- opacity: 1;
- -webkit-backface-visibility: hidden;
- backface-visibility: hidden;
- -webkit-transform: translateY(3em);
- -moz-transform: translateY(3em);
- -ms-transform: translateY(3em);
- -o-transform: translateY(3em);
- transform: translateY(3em);
- -webkit-transition: -webkit-transform 1s ease 0s;
- -moz-transition: -moz-transform 1s ease 0s;
- -ms-transition: -ms-transform 1s ease 0s;
- -o-transition: -o-transform 1s ease 0s;
- transition: transform 1s ease 0s
-}
-
-.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-progress-control,.video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-progress-control {
- height: .25em;
- top: -.25em;
- pointer-events: none;
- -webkit-transition: height 1s,top 1s;
- -moz-transition: height 1s,top 1s;
- -ms-transition: height 1s,top 1s;
- -o-transition: height 1s,top 1s;
- transition: height 1s,top 1s
-}
-
-.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active.vjs-fullscreen .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive.vjs-fullscreen .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active.vjs-fullscreen .vjs-progress-control,.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive.vjs-fullscreen .vjs-progress-control,.video-js.vjs-has-started.vjs-playing.vjs-user-inactive.vjs-fullscreen .vjs-progress-control {
- opacity: 0;
- -webkit-transition: opacity 1s ease 1s;
- -moz-transition: opacity 1s ease 1s;
- -ms-transition: opacity 1s ease 1s;
- -o-transition: opacity 1s ease 1s;
- transition: opacity 1s ease 1s
-}
-
-.video-js.vjs-live .vjs-live-control {
- margin-left: 1em
-}
-
-.video-js .vjs-big-play-button {
- top: 50%;
- left: 50%;
- margin-left: -1em;
- margin-top: -1em;
- width: 2em;
- height: 2em;
- line-height: 2em;
- border: 0;
- border-radius: 50%;
- font-size: 3.5em;
- background-color: rgba(0,0,0,.45);
- color: #fff;
- -webkit-transition: border-color .4s,outline .4s,background-color .4s;
- -moz-transition: border-color .4s,outline .4s,background-color .4s;
- -ms-transition: border-color .4s,outline .4s,background-color .4s;
- -o-transition: border-color .4s,outline .4s,background-color .4s;
- transition: border-color .4s,outline .4s,background-color .4s
-}
-
-.video-js .vjs-menu-button-popup .vjs-menu {
- left: -2em
-}
-
-.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
- background-color: transparent;
- left: 1.5em;
- padding-bottom: .5em;
- z-index: 1;
- bottom: 1.15em;
-}
-
-.video-js .vjs-menu-button-popup.vjs-http-source-selector .vjs-menu .vjs-menu-content {
- bottom: 1.5em;
-}
-
-.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item,.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title {
- background-color: #151b17;
- padding: .6em;
-}
-
-.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item.vjs-selected {
- background-color: var(--primary-color);
- color: var(--text-with-main-color);
-}
-
-.video-js .vjs-big-play-button {
- background-color: rgba(0,0,0,0.5);
- font-size: 2.5em;
- border-radius: 20%;
- height: 1.4em !important;
- line-height: 1.4em !important;
- margin-top: -0.7em !important
-}
-
-.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus,.video-js .vjs-big-play-button:active {
- background-color: var(--primary-color);
- color: var(--text-with-main-color);
-}
-
-.video-js .vjs-loading-spinner {
- border-color: var(--primary-color);
-}
-
-.video-js .vjs-control-bar2 {
- background-color: #000000;
-}
-
-.video-js .vjs-control-bar {
- background-color: rgba(0,0,0,0.3) !important;
- color: #ffffff;
- font-size: 12px
-}
-
-.video-js .vjs-play-progress,.video-js .vjs-volume-level {
- background-color: var(--primary-color)
-}
-
-.video-js .vjs-load-progress {
- background: rgba(255,255,255,0.3);
-}
-
-.vjs-quality-selector .vjs-menu-button{margin:0;padding:0;height:100%;width:100%}.vjs-quality-selector .vjs-icon-placeholder{font-family:'VideoJS';font-weight:normal;font-style:normal}.vjs-quality-selector .vjs-icon-placeholder:before{content:'\f110'}.vjs-quality-changing .vjs-big-play-button{display:none}.vjs-quality-changing .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1}
-
-/* .vjs-quality-selector .vjs-menu-button {
- margin: 0;
- padding: 0;
- height: 100%;
- width: 100%;
-}
-
-.vjs-quality-selector .vjs-quality-selector-icon {
- font-family: 'VideoJS';
- font-weight: normal;
- font-style: normal;
-}
-
-.vjs-quality-selector .vjs-quality-selector-icon:before {
- content: '\f110';
-}
-
-.vjs-quality-changing .vjs-big-play-button {
- display: none;
-}
-
-.vjs-quality-changing .vjs-control-bar {
- display: flex;
- visibility: visible;
- opacity: 1;
-} */
-
-.video-js .vjs-vtt-thumbnails {
- display: block;
-}
-
-.video-js .vjs-vtt-thumbnail-display {
- position: absolute;
- transition: transform .1s, opacity .2s;
- /* `bottom` was 20px, to avoid obstruction by time tooltip updated to current value */
- bottom: 56px;
- pointer-events: none;
- box-shadow: 0 0 7px rgba(0,0,0,.6);
- z-index: 3;
-}
-
-.video-js .vjs-http-source-selector {
- top: 4px;
-}
-
-.vjs-subs-caps-button.vjs-control {
- position: relative;
- top: -1px;
-}
-
-.vjs-volume-panel .vjs-mute-control {
- position: relative;
- top: -1px;
-}
-
-.vjs-overlay {
- font-size: xx-large;
- max-width: 100% !important;
-}
-
-.vjs-modal-dialog.statsModal {
- line-height: 10px;
- width: 550px;
- height: 225px;
- font-size: 10px;
- background-color: rgba(0, 0, 0, 0.5) !important;
-}
-
-.vjs-modal-dialog.statsModal p {
- line-height: 10px;
- position:relative;
- bottom: 15px;
-}
-
-@media screen and (max-width: 775px) {
- .vjs-modal-dialog.statsModal {
- width: 100%;
- height: 100%;
- }
-}
-
-@media screen and (max-width: 680px) {
- .vjs-control.vjs-disabled.vjs-picture-in-picture-control,
- .vjs-control.vjs-button.vjs-button-fullwindow {
- display: none;
- }
- .vjs-full-window .video-js.vjs-full-screen .vjs-control.vjs-button.vjs-button-fullwindow {
- display: initial;
- }
-}
-
-.videoPlayer .video-js .vjs-touch-overlay {
- display: none;
-}
-
-.vjs-using-touch .video-js.vjs-touch-enabled .vjs-touch-overlay {
- display: block;
-}
-
-.video-js .vjs-touch-overlay .vjs-play-control .vjs-icon-placeholder:before {
- content: "\f103" !important;
- text-shadow: 0 0 25px rgb(0 0 0 / 50%), 0 0 10px rgb(0 0 0 / 50%), 2px 2px 8px rgb(206 89 55 / 0%);
- color: white;
- font-size: 18vw;
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- background-image: none !important;
-}
-
-.video-js .vjs-touch-overlay .vjs-play-control.vjs-paused .vjs-icon-placeholder:before {
- content: "\f101" !important;
-}
-
-.vjs-hide-play-button .video-js .vjs-touch-overlay .vjs-play-control .vjs-icon-placeholder:before {
- content: " " !important;
-}
-
-.video-js .vjs-touch-overlay.skip {
- -webkit-filter: drop-shadow(0px 0px 4px black);
- filter: drop-shadow(0px 0px 4px black);
-}
diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js
index f676cd3229e2c..a8c6ccb589c82 100644
--- a/src/renderer/views/Watch/Watch.js
+++ b/src/renderer/views/Watch/Watch.js
@@ -1,7 +1,8 @@
import { defineComponent } from 'vue'
import { mapActions } from 'vuex'
+import shaka from 'shaka-player'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
-import FtVideoPlayer from '../../components/ft-video-player/ft-video-player.vue'
+import FtShakaVideoPlayer from '../../components/ft-shaka-video-player/ft-shaka-video-player.vue'
import WatchVideoInfo from '../../components/watch-video-info/watch-video-info.vue'
import WatchVideoChapters from '../../components/WatchVideoChapters/WatchVideoChapters.vue'
import WatchVideoDescription from '../../components/WatchVideoDescription/WatchVideoDescription.vue'
@@ -16,13 +17,11 @@ import {
copyToClipboard,
formatDurationAsTimestamp,
formatNumber,
- getFormatsFromHLSManifest,
showToast
} from '../../helpers/utils'
import {
- filterLocalFormats,
getLocalVideoInfo,
- mapLocalFormat,
+ mapLocalLegacyFormat,
parseLocalSubscriberCount,
parseLocalTextRuns,
parseLocalWatchNextVideo
@@ -31,32 +30,21 @@ import {
convertInvidiousToLocalFormat,
filterInvidiousFormats,
generateInvidiousDashManifestLocally,
+ getProxyUrl,
invidiousFetch,
invidiousGetVideoInformation,
+ mapInvidiousLegacyFormat,
youtubeImageUrlToInvidious
} from '../../helpers/api/invidious'
-/**
- * @typedef {object} AudioSource
- * @property {string} url
- * @property {string} type
- * @property {string} label
- * @property {string} qualityLabel
- *
- * @typedef {object} AudioTrack
- * @property {string} id
- * @property {('main'|'translation'|'descriptions'|'alternative')} kind - https://videojs.com/guides/audio-tracks/#kind
- * @property {string} label
- * @property {string} language
- * @property {boolean} isDefault
- * @property {AudioSource[]} sourceList
- */
+const MANIFEST_TYPE_DASH = 'application/dash+xml'
+const MANIFEST_TYPE_HLS = 'application/x-mpegURL'
export default defineComponent({
name: 'Watch',
components: {
'ft-loader': FtLoader,
- 'ft-video-player': FtVideoPlayer,
+ 'ft-shaka-video-player': FtShakaVideoPlayer,
'watch-video-info': WatchVideoInfo,
'watch-video-chapters': WatchVideoChapters,
'watch-video-description': WatchVideoDescription,
@@ -67,7 +55,7 @@ export default defineComponent({
'ft-age-restricted': FtAgeRestricted
},
beforeRouteLeave: function (to, from, next) {
- this.handleRouteChange(this.videoId)
+ this.handleRouteChange()
window.removeEventListener('beforeunload', this.handleWatchProgress)
next()
},
@@ -76,8 +64,7 @@ export default defineComponent({
isLoading: true,
firstLoad: true,
useTheatreMode: false,
- videoPlayerReady: false,
- hidePlayer: false,
+ videoPlayerLoaded: false,
isFamilyFriendly: false,
isLive: false,
liveChat: null,
@@ -86,6 +73,7 @@ export default defineComponent({
isPostLiveDvr: false,
upcomingTimestamp: null,
upcomingTimeLeft: null,
+ /** @type {'dash' | 'audio' | 'legacy'} */
activeFormat: 'legacy',
thumbnail: '',
videoId: '',
@@ -104,29 +92,39 @@ export default defineComponent({
channelSubscriptionCountText: '',
videoPublished: 0,
videoStoryboardSrc: '',
- dashSrc: [],
- activeSourceList: [],
- videoSourceList: [],
- audioSourceList: [],
- /**
- * @type {AudioTrack[]}
- */
- audioTracks: [],
- adaptiveFormats: [],
- captionHybridList: [], // [] -> Promise[] -> string[] (URIs)
+ /** @type {string|null} */
+ manifestSrc: null,
+ /** @type {(MANIFEST_TYPE_DASH|MANIFEST_TYPE_HLS)} */
+ manifestMimeType: MANIFEST_TYPE_DASH,
+ legacyFormats: [],
+ captions: [],
+ /** @type {'EQUIRECTANGULAR' | 'EQUIRECTANGULAR_THREED_TOP_BOTTOM' | 'MESH'| null} */
+ vrProjection: null,
recommendedVideos: [],
downloadLinks: [],
watchingPlaylist: false,
playlistId: '',
playlistType: '',
playlistItemId: null,
+ /** @type {number|null} */
timestamp: null,
+ /** @type {number|null} */
+ startTimeSeconds: null,
playNextTimeout: null,
playNextCountDownIntervalId: null,
infoAreaSticky: true,
commentsEnabled: true,
onMountedRun: false,
+
+ // error handling/messages
+ /** @type {string|null} */
+ errorMessage: null,
+ /** @type {string[]|null} */
+ customErrorIcon: null,
+ videoGenreIsMusic: false,
+ /** @type {Date|null} */
+ streamingDataExpiryDate: null
}
},
computed: {
@@ -208,9 +206,6 @@ export default defineComponent({
hideChapters: function () {
return this.$store.getters.getHideChapters
},
- allowDashAv1Formats: function () {
- return this.$store.getters.getAllowDashAv1Formats
- },
channelsHidden() {
return JSON.parse(this.$store.getters.getChannelsHidden).map((ch) => {
// Legacy support
@@ -238,21 +233,26 @@ export default defineComponent({
},
watch: {
$route() {
- this.handleRouteChange(this.videoId)
+ this.handleRouteChange()
// react to route changes...
this.videoId = this.$route.params.id
this.firstLoad = true
- this.videoPlayerReady = false
+ this.videoPlayerLoaded = false
+ this.errorMessage = null
+ this.customErrorIcon = null
this.activeFormat = this.defaultVideoFormat
this.videoStoryboardSrc = ''
- this.captionHybridList = []
+ this.captions = []
+ this.vrProjection = null
this.downloadLinks = []
this.videoCurrentChapterIndex = 0
- this.audioTracks = []
+ this.startTimeSeconds = null
+ this.videoGenreIsMusic = false
- this.checkIfPlaylist()
this.checkIfTimestamp()
+ this.setStartTime()
+ this.checkIfPlaylist()
switch (this.backendPreference) {
case 'local':
@@ -260,10 +260,6 @@ export default defineComponent({
break
case 'invidious':
this.getVideoInformationInvidious(this.videoId)
-
- if (this.forceLocalBackendForLegacy) {
- this.getVideoInformationLocal(this.videoId)
- }
break
}
},
@@ -271,11 +267,14 @@ export default defineComponent({
this.onMountedDependOnLocalStateLoading()
},
},
- mounted: function () {
+ created: function () {
this.videoId = this.$route.params.id
this.activeFormat = this.defaultVideoFormat
- this.useTheatreMode = this.defaultTheatreMode && this.theatrePossible
+ this.checkIfTimestamp()
+ this.setStartTime()
+ },
+ mounted: function () {
this.onMountedDependOnLocalStateLoading()
},
methods: {
@@ -288,7 +287,9 @@ export default defineComponent({
this.onMountedRun = true
this.checkIfPlaylist()
- this.checkIfTimestamp()
+
+ // this has to be below checkIfPlaylist() as theatrePossible needs to know if there is a playlist or not
+ this.useTheatreMode = this.defaultTheatreMode && this.theatrePossible
if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') {
this.getVideoInformationInvidious()
@@ -300,7 +301,11 @@ export default defineComponent({
},
changeTimestamp: function (timestamp) {
- this.$refs.videoPlayer.player.currentTime(timestamp)
+ const player = this.$refs.player
+
+ if (!this.isLoading && player?.hasLoaded) {
+ player.setCurrentTime(timestamp)
+ }
},
getVideoInformationLocal: async function () {
@@ -352,6 +357,8 @@ export default defineComponent({
this.channelThumbnail = ''
}
+ this.videoGenreIsMusic = result.basic_info.category === 'Music'
+
this.updateSubscriptionDetails({
channelThumbnailUrl: this.channelThumbnail.length === 0 ? null : this.channelThumbnail,
channelName: this.channelName,
@@ -460,39 +467,45 @@ export default defineComponent({
// endregion No comment detection
if ((this.isLive || this.isPostLiveDvr) && !this.isUpcoming) {
- try {
- const formats = await getFormatsFromHLSManifest(result.streaming_data.hls_manifest_url)
+ let useRemoteManifest = true
+
+ if (this.isPostLiveDvr) {
+ try {
+ this.manifestSrc = await this.createLocalDashManifest(result, true)
+ this.manifestMimeType = MANIFEST_TYPE_DASH
+ useRemoteManifest = false
+ } catch (error) {
+ console.error(`Failed to generate DASH manifest for this Post Live DVR video ${this.videoId}, falling back to using YouTube's provided one...`, error)
+ }
+ }
- this.videoSourceList = formats
- .sort((formatA, formatB) => {
- return formatB.height - formatA.height
- })
- .map((format) => {
- return {
- url: format.url,
- fps: format.fps,
- type: 'application/x-mpegURL',
- label: 'Dash',
- qualityLabel: `${format.height}p`
- }
- })
- } catch (e) {
- console.error('Failed to extract formats form HLS manifest, falling back to passing it directly to video.js', e)
-
- this.videoSourceList = [
- {
- url: result.streaming_data.hls_manifest_url,
- type: 'application/x-mpegURL',
- label: 'Dash',
- qualityLabel: 'Live'
- }
- ]
+ if (useRemoteManifest) {
+ // The live DASH manifest is currently unusable it is not available on the iOS client
+ // but the web ones returns 403s after 1 minute of playback so we have to use the HLS one for now.
+ // Leaving the code here commented out in case we can use it again in the future
+
+ // if (result.streaming_data.dash_manifest_url) {
+ // let src = result.streaming_data.dash_manifest_url
+
+ // if (src.includes('?')) {
+ // src += '&mpd_version=7'
+ // } else {
+ // src += `${src.endsWith('/') ? '' : '/'}mpd_version/7`
+ // }
+
+ // this.manifestSrc = src
+ // this.manifestMimeType = MANIFEST_TYPE_DASH
+ // } else {
+ this.manifestSrc = result.streaming_data.hls_manifest_url
+ this.manifestMimeType = MANIFEST_TYPE_HLS
+ // }
}
- this.activeFormat = 'legacy'
- this.activeSourceList = this.videoSourceList
- this.audioSourceList = null
- this.dashSrc = null
+ this.streamingDataExpiryDate = result.streaming_data.expires
+
+ if (this.activeFormat === 'legacy') {
+ this.activeFormat = 'dash'
+ }
} else if (this.isUpcoming) {
const upcomingTimestamp = result.basic_info.start_timestamp
@@ -547,16 +560,22 @@ export default defineComponent({
} else {
this.videoLengthSeconds = result.basic_info.duration
if (result.streaming_data) {
+ this.streamingDataExpiryDate = result.streaming_data.expires
+
if (result.streaming_data.formats.length > 0) {
- this.videoSourceList = result.streaming_data.formats.map(mapLocalFormat).reverse()
- } else {
- this.videoSourceList = filterLocalFormats(result.streaming_data.adaptive_formats, this.allowDashAv1Formats).map(mapLocalFormat).reverse()
+ this.legacyFormats = result.streaming_data.formats.map(mapLocalLegacyFormat)
+
+ if (this.proxyVideos) {
+ this.legacyFormats.forEach(format => {
+ format.url = getProxyUrl(format.url)
+ })
+ }
}
- this.adaptiveFormats = this.videoSourceList
/** @type {import('../../helpers/api/local').LocalFormat[]} */
const formats = [...result.streaming_data.formats, ...result.streaming_data.adaptive_formats]
- this.downloadLinks = formats.map((format) => {
+
+ const downloadLinks = formats.map((format) => {
const qualityLabel = format.quality_label ?? format.bitrate
const fps = format.fps ? `${format.fps}fps` : 'kbps'
const type = format.mime_type.split(';')[0]
@@ -577,30 +596,49 @@ export default defineComponent({
})
if (result.captions) {
- const captionTracks = result.captions.caption_tracks.map((caption) => {
+ const captionTracks = result.captions?.caption_tracks?.map((caption) => {
+ const url = new URL(caption.base_url)
+ url.searchParams.set('fmt', 'vtt')
+
return {
- url: caption.base_url,
+ url: url.toString(),
label: caption.name.text,
- language_code: caption.language_code,
- kind: caption.kind
+ language: caption.language_code,
+ mimeType: 'text/vtt'
}
- })
- if (this.currentLocale) {
- const noLocaleCaption = !captionTracks.some(track =>
- track.language_code === this.currentLocale && track.kind !== 'asr'
- )
-
- if (!this.currentLocale.startsWith('en') && noLocaleCaption) {
- captionTracks.forEach((caption) => {
- this.tryAddingTranslatedLocaleCaption(captionTracks, this.currentLocale, caption.url)
- })
+ }) ?? []
+
+ if (captionTracks.length > 0) {
+ const languagesSet = new Set([this.currentLocale, this.currentLocale.split('-')[0]])
+
+ // special cases
+ switch (this.currentLocale) {
+ case 'nn':
+ case 'nb-NO':
+ // according to https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
+ // "no" is the macro language for "nb" and "nn"
+ languagesSet.add('no')
+ break
+ case 'he':
+ // according to https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
+ // "iw" is the old/original code for Hewbrew, these days it's "he"
+ languagesSet.add('iw')
+ break
+ }
+
+ if (!captionTracks.some(captionTrack => languagesSet.has(captionTrack.language))) {
+ const translatedCaptionTrack = this.getTranslatedLocaleCaption(result.captions, languagesSet)
+
+ if (translatedCaptionTrack) {
+ captionTracks.push(translatedCaptionTrack)
+ }
}
}
- this.captionHybridList = this.createCaptionPromiseList(captionTracks)
+ this.captions = captionTracks
const captionLinks = captionTracks.map((caption) => {
- const label = `${caption.label} (${caption.language_code}) - text/vtt`
+ const label = `${caption.label} (${caption.language}) - text/vtt`
return {
url: caption.url,
@@ -608,7 +646,9 @@ export default defineComponent({
}
})
- this.downloadLinks = this.downloadLinks.concat(captionLinks)
+ downloadLinks.push(...captionLinks)
+
+ this.downloadLinks = downloadLinks
}
} else {
// video might be region locked or something else. This leads to no formats being available
@@ -621,48 +661,27 @@ export default defineComponent({
}
if (result.streaming_data?.adaptive_formats.length > 0) {
- const audioFormats = result.streaming_data.adaptive_formats.filter((format) => {
- return format.has_audio
- })
-
- const hasMultipleAudioTracks = audioFormats.some(format => format.audio_track)
-
- if (hasMultipleAudioTracks) {
- const audioTracks = this.createAudioTracksFromLocalFormats(audioFormats)
-
- this.audioTracks = audioTracks
-
- this.audioSourceList = audioTracks.find(track => track.isDefault).sourceList
- } else {
- this.audioTracks = []
-
- this.audioSourceList = this.createLocalAudioSourceList(audioFormats)
- }
-
- // we need to alter the result object so the toDash function uses the filtered formats too
- result.streaming_data.adaptive_formats = filterLocalFormats(result.streaming_data.adaptive_formats, this.allowDashAv1Formats)
+ this.vrProjection = result.streaming_data.adaptive_formats
+ .find(format => {
+ return format.has_video &&
+ typeof format.projection_type === 'string' &&
+ format.projection_type !== 'RECTANGULAR'
+ })
+ ?.projection_type ?? null
// When `this.proxyVideos` is true
// It's possible that the Invidious instance used, only supports a subset of the formats from Local API
// i.e. the value passed into `adaptiveFormats`
// e.g. Supports 720p60, but not 720p - https://[DOMAIN_NAME]/api/manifest/dash/id/v3wm83zoSSY?local=true
if (this.proxyVideos) {
- this.adaptiveFormats = await this.getAdaptiveFormatsInvidious()
- this.dashSrc = await this.createInvidiousDashManifest()
- } else {
- this.adaptiveFormats = result.streaming_data.adaptive_formats.map(mapLocalFormat)
- this.dashSrc = await this.createLocalDashManifest(result)
- }
-
- if (this.activeFormat === 'audio') {
- this.activeSourceList = this.audioSourceList
+ this.manifestSrc = await this.createInvidiousDashManifest()
+ this.manifestMimeType = MANIFEST_TYPE_DASH
} else {
- this.activeSourceList = this.videoSourceList
+ this.manifestSrc = await this.createLocalDashManifest(result)
+ this.manifestMimeType = MANIFEST_TYPE_DASH
}
} else {
- this.activeSourceList = this.videoSourceList
- this.audioSourceList = null
- this.dashSrc = null
+ this.manifestSrc = null
this.enableLegacyFormat()
}
@@ -671,10 +690,11 @@ export default defineComponent({
if (window.innerWidth < 500) {
source = source.filter((board) => board.thumbnail_height <= 90)
}
- this.createLocalStoryboardUrls(source.at(-1))
+ this.videoStoryboardSrc = this.createLocalStoryboardUrls(source.at(-1))
}
}
+ // this.errorMessage = 'Test error message'
this.isLoading = false
this.updateTitle()
} catch (err) {
@@ -685,8 +705,6 @@ export default defineComponent({
console.error(err)
if (this.backendPreference === 'local' && this.backendFallback && !err.toString().includes('private')) {
showToast(this.$t('Falling back to Invidious API'))
- // Invidious doesn't support multiple audio tracks, so we need to clear this to prevent the player getting confused
- this.audioTracks = []
this.getVideoInformationInvidious()
} else {
this.isLoading = false
@@ -699,8 +717,6 @@ export default defineComponent({
this.isLoading = true
}
- this.videoStoryboardSrc = `${this.currentInvidiousInstanceUrl}/api/v1/storyboards/${this.videoId}?height=90`
-
invidiousGetVideoInformation(this.videoId)
.then(async result => {
if (result.error) {
@@ -718,6 +734,8 @@ export default defineComponent({
this.videoDislikeCount = result.dislikeCount
}
+ this.videoGenreIsMusic = result.genre === 'Music'
+
this.channelId = result.authorId
this.channelName = result.author
const channelThumb = result.authorThumbnails[1]
@@ -736,16 +754,23 @@ export default defineComponent({
...recommendedVideos.filter((video) => !this.isRecommendedVideoWatched(video.videoId)),
...recommendedVideos.filter((video) => this.isRecommendedVideoWatched(video.videoId))
]
- this.adaptiveFormats = await this.getAdaptiveFormatsInvidious(result)
this.isLive = result.liveNow
this.isFamilyFriendly = result.isFamilyFriendly
- this.captionHybridList = result.captions.map(caption => {
- caption.url = this.currentInvidiousInstanceUrl + caption.url
- caption.type = ''
- caption.dataSource = 'invidious'
- return caption
+ this.isPostLiveDvr = !!result.isPostLiveDvr
+
+ this.captions = result.captions.map(caption => {
+ return {
+ url: this.currentInvidiousInstanceUrl + caption.url,
+ label: caption.label,
+ language: caption.language_code,
+ mimeType: 'text/vtt'
+ }
})
+ if (!this.isLive && !this.isPostLiveDvr) {
+ this.videoStoryboardSrc = `${this.currentInvidiousInstanceUrl}/api/v1/storyboards/${this.videoId}?height=90`
+ }
+
switch (this.thumbnailPreference) {
case 'start':
this.thumbnail = `${this.currentInvidiousInstanceUrl}/vi/${this.videoId}/maxres1.jpg`
@@ -777,41 +802,66 @@ export default defineComponent({
}
this.videoChapters = chapters
- if (this.isLive) {
- this.activeFormat = 'legacy'
+ if (this.isLive || this.isPostLiveDvr) {
+ // The live DASH manifest is currently unusable as it returns 403s after 1 minute of playback
+ // so we have to use the HLS one for now.
+ // Leaving the code here commented out in case we can use it again in the future
+ // const url = `${this.currentInvidiousInstanceUrl}/api/manifest/dash/id/${this.videoId}`
- this.videoSourceList = [
- {
- url: result.hlsUrl,
- type: 'application/x-mpegURL',
- label: 'Dash',
- qualityLabel: 'Live'
- }
- ]
+ // // Proxying doesn't work for live or post live DVR DASH, so use HLS instead
+ // // https://github.com/iv-org/invidious/pull/4589
+ // if (this.proxyVideos) {
+ this.manifestSrc = result.hlsUrl
+ this.manifestMimeType = MANIFEST_TYPE_HLS
- // Grabs the adaptive formats from Invidious. Might be worth making these work.
- // The type likely needs to be changed in order for these to be played properly.
- // this.videoSourceList = result.adaptiveFormats.filter((format) => {
- // if (typeof (format.type) !== 'undefined') {
- // return format.type.includes('video/mp4')
- // }
- // }).map((format) => {
- // return {
- // url: format.url,
- // type: 'application/x-mpegURL',
- // label: 'Dash',
- // qualityLabel: format.qualityLabel
- // }
- // })
+ // The HLS manifests only contain combined audio+video streams, so we can't do audio only
+ if (this.activeFormat === 'audio') {
+ this.activeFormat = 'dash'
+ }
+ // } else {
+ // this.manifestSrc = url
+ // this.manifestMimeType = MANIFEST_TYPE_DASH
+ // }
- this.activeSourceList = this.videoSourceList
- } else if (this.forceLocalBackendForLegacy) {
- this.getLegacyFormats()
+ this.legacyFormats = []
+
+ if (this.activeFormat === 'legacy') {
+ this.activeFormat = 'dash'
+ }
} else {
this.videoLengthSeconds = result.lengthSeconds
- this.videoSourceList = result.formatStreams.reverse()
- this.downloadLinks = result.adaptiveFormats.concat(this.videoSourceList).map((format) => {
+ // Detect if the Invidious server is running a new enough version of Invidious
+ // to include this pull request: https://github.com/iv-org/invidious/pull/4586
+ // which fixed the API returning incorrect height, width and fps information
+ const trustApiResponse = result.adaptiveFormats.some(stream => typeof stream.size === 'string')
+
+ if (process.env.SUPPORTS_LOCAL_API && this.forceLocalBackendForLegacy) {
+ const legacyFormats = await this.getLocalLegacyFormats()
+
+ if (legacyFormats !== null) {
+ this.legacyFormats = legacyFormats
+ } else {
+ this.legacyFormats = result.formatStreams.map(format => mapInvidiousLegacyFormat(format, trustApiResponse))
+ }
+ } else {
+ this.legacyFormats = result.formatStreams.map(format => mapInvidiousLegacyFormat(format, trustApiResponse))
+ }
+
+ if (!process.env.SUPPORTS_LOCAL_API || (this.proxyVideos && !this.forceLocalBackendForLegacy)) {
+ this.legacyFormats.forEach(format => {
+ format.url = getProxyUrl(format.url)
+ })
+ }
+
+ this.vrProjection = result.adaptiveFormats
+ .find(stream => {
+ return typeof stream.projectionType === 'string' &&
+ stream.projectionType !== 'RECTANGULAR'
+ })
+ ?.projectionType ?? null
+
+ this.downloadLinks = result.adaptiveFormats.concat(result.formatStreams).map((format) => {
const qualityLabel = format.qualityLabel || format.bitrate
const itag = parseInt(format.itag)
const fps = format.fps ? (format.fps + 'fps') : 'kbps'
@@ -841,34 +891,8 @@ export default defineComponent({
return object
}))
- this.audioTracks = []
- this.dashSrc = await this.createInvidiousDashManifest()
-
- if (process.env.SUPPORTS_LOCAL_API && this.audioTracks.length > 0) {
- // when the local API is supported and the video has multiple audio tracks,
- // we populate the list inside createInvidiousDashManifest
- // as we need to work out the different audio tracks for the DASH manifest anyway
- this.audioSourceList = this.audioTracks.find(track => track.isDefault).sourceList
- } else {
- this.audioSourceList = result.adaptiveFormats.filter((format) => {
- return format.type.includes('audio')
- }).map((format) => {
- return {
- url: format.url,
- type: format.type,
- label: 'Audio',
- qualityLabel: parseInt(format.bitrate)
- }
- }).sort((a, b) => {
- return a.qualityLabel - b.qualityLabel
- })
- }
-
- if (this.activeFormat === 'audio') {
- this.activeSourceList = this.audioSourceList
- } else {
- this.activeSourceList = this.videoSourceList
- }
+ this.manifestSrc = await this.createInvidiousDashManifest(result, trustApiResponse)
+ this.manifestMimeType = MANIFEST_TYPE_DASH
}
this.updateTitle()
@@ -934,9 +958,16 @@ export default defineComponent({
chapters.at(-1).endSeconds = videoLengthSeconds
},
- updateCurrentChapter: function () {
+ /**
+ * @param {number} currentSeconds
+ */
+ updateCurrentChapter: function (currentSeconds) {
const chapters = this.videoChapters
- const currentSeconds = this.getTimestamp()
+
+ if (this.hideChapters || chapters.length === 0) {
+ return
+ }
+
const currentChapterStart = chapters[this.videoCurrentChapterIndex].startSeconds
if (currentSeconds !== currentChapterStart) {
@@ -951,104 +982,6 @@ export default defineComponent({
}
},
- /**
- * @param {import('../../helpers/api/local').LocalFormat[]} audioFormats
- * @returns {AudioTrack[]}
- */
- createAudioTracksFromLocalFormats: function (audioFormats) {
- /** @type {string[]} */
- const ids = []
-
- /** @type {AudioTrack[]} */
- const audioTracks = []
-
- /** @type {import('youtubei.js').Misc.Format[][]} */
- const sourceLists = []
-
- for (const format of audioFormats) {
- // Some videos with multiple audio tracks, have a broken one, that doesn't have any audio track information
- // It seems to be the same as default audio track but broken
- // At the time of writing, this video has a broken audio track: https://youtu.be/UJeSWbR6W04
- if (!format.audio_track) {
- continue
- }
-
- const index = ids.indexOf(format.audio_track.id)
- if (index === -1) {
- ids.push(format.audio_track.id)
-
- let kind
-
- if (format.audio_track.audio_is_default) {
- kind = 'main'
- } else if (format.is_dubbed) {
- kind = 'translation'
- } else if (format.is_descriptive) {
- kind = 'descriptions'
- } else {
- kind = 'alternative'
- }
-
- audioTracks.push({
- id: format.audio_track.id,
- kind,
- label: format.audio_track.display_name,
- language: format.language,
- isDefault: format.audio_track.audio_is_default,
- sourceList: []
- })
-
- sourceLists.push([
- format
- ])
- } else {
- sourceLists[index].push(format)
- }
- }
-
- for (let i = 0; i < audioTracks.length; i++) {
- audioTracks[i].sourceList = this.createLocalAudioSourceList(sourceLists[i])
- }
-
- return audioTracks
- },
-
- /**
- * @param {import('../../helpers/api/local').LocalFormat[]} audioFormats
- * @returns {AudioSource[]}
- */
- createLocalAudioSourceList: function (audioFormats) {
- return audioFormats.sort((a, b) => {
- return a.bitrate - b.bitrate
- }).map((format, index) => {
- let label
-
- switch (index) {
- case 0:
- label = this.$t('Video.Audio.Low')
- break
- case 1:
- label = this.$t('Video.Audio.Medium')
- break
- case 2:
- label = this.$t('Video.Audio.High')
- break
- case 3:
- label = this.$t('Video.Audio.Best')
- break
- default:
- label = format.bitrate.toString()
- }
-
- return {
- url: format.freeTubeUrl,
- type: format.mime_type,
- label: 'Audio',
- qualityLabel: label
- }
- }).reverse()
- },
-
addToHistory: function (watchProgress) {
const videoData = {
videoId: this.videoId,
@@ -1069,17 +1002,14 @@ export default defineComponent({
},
handleWatchProgress: function () {
- if (this.rememberHistory && !this.isUpcoming && !this.isLoading && !this.isLive) {
- const player = this.$refs.videoPlayer?.player
-
- if (player && this.saveWatchedProgress) {
- const currentTime = this.getWatchedProgress()
- const payload = {
- videoId: this.videoId,
- watchProgress: currentTime
- }
- this.updateWatchProgress(payload)
+ if (this.rememberHistory && this.saveWatchedProgress && !this.isUpcoming &&
+ !this.isLoading && !this.isLive && this.$refs.player?.hasLoaded) {
+ const currentTime = this.getWatchedProgress()
+ const payload = {
+ videoId: this.videoId,
+ watchProgress: currentTime
}
+ this.updateWatchProgress(payload)
}
},
@@ -1097,49 +1027,48 @@ export default defineComponent({
})
},
- handleVideoReady: function () {
- this.videoPlayerReady = true
- this.checkIfWatched()
- this.updateLocalPlaylistLastPlayedAtSometimes()
- },
-
isRecommendedVideoWatched: function (videoId) {
return !!this.$store.getters.getHistoryCacheById[videoId]
},
- checkIfWatched: function () {
- if (!this.isLive) {
- if (this.timestamp) {
- if (this.timestamp < 0) {
- this.$refs.videoPlayer.player.currentTime(0)
- } else if (this.timestamp > (this.videoLengthSeconds - 10)) {
- this.$refs.videoPlayer.player.currentTime(this.videoLengthSeconds - 10)
+ handleVideoLoaded: function () {
+ // will trigger again if you switch formats or change legacy quality
+ if (!this.videoPlayerLoaded) {
+ this.videoPlayerLoaded = true
+
+ if (this.rememberHistory) {
+ if (this.timestamp) {
+ this.addToHistory(this.timestamp)
+ } else if (this.historyEntryExists) {
+ this.addToHistory(this.historyEntry.watchProgress)
} else {
- this.$refs.videoPlayer.player.currentTime(this.timestamp)
+ this.addToHistory(0)
}
- } else if (this.saveWatchedProgress && this.historyEntryExists) {
- // For UX consistency, no progress reading if writing disabled
- const watchProgress = this.historyEntry.watchProgress
- if (watchProgress < (this.videoLengthSeconds - 10)) {
- this.$refs.videoPlayer.player.currentTime(watchProgress)
- }
+ // Must be called AFTER history entry inserted
+ // Otherwise the value is not saved for first time watched videos
+ this.handlePlaylistPersisting()
}
+
+ this.updateLocalPlaylistLastPlayedAtSometimes()
}
+ },
- if (this.rememberHistory) {
- if (this.timestamp) {
- this.addToHistory(this.timestamp)
- } else if (this.historyEntryExists) {
- this.addToHistory(this.historyEntry.watchProgress)
- } else {
- this.addToHistory(0)
- }
+ setStartTime: function () {
+ if (this.timestamp !== null && this.timestamp > 0) {
+ this.startTimeSeconds = this.timestamp
+ return
+ } else if (this.saveWatchedProgress && this.historyEntryExists) {
+ // For UX consistency, no progress reading if writing disabled
+ const watchProgress = this.historyEntry.watchProgress
- // Must be called AFTER history entry inserted
- // Otherwise the value is not saved for first time watched videos
- this.handlePlaylistPersisting()
+ if (watchProgress > 0) {
+ this.startTimeSeconds = watchProgress
+ return
+ }
}
+
+ this.startTimeSeconds = null
},
checkIfPlaylist: function () {
@@ -1196,22 +1125,18 @@ export default defineComponent({
this.timestamp = isNaN(timestamp) || timestamp < 0 ? null : timestamp
},
- getLegacyFormats: function () {
- getLocalVideoInfo(this.videoId)
- .then(result => {
- this.videoSourceList = result.streaming_data.formats.map(mapLocalFormat)
- })
- .catch(err => {
- const errorMessage = this.$t('Local API Error (Click to copy)')
- showToast(`${errorMessage}: ${err}`, 10000, () => {
- copyToClipboard(err)
- })
- console.error(err)
- if (!process.env.SUPPORTS_LOCAL_API || (this.backendPreference === 'local' && this.backendFallback)) {
- showToast(this.$t('Falling back to Invidious API'))
- this.getVideoInformationInvidious()
- }
+ getLocalLegacyFormats: async function () {
+ try {
+ const result = await getLocalVideoInfo(this.videoId)
+ return result.streaming_data.formats.map(mapLocalLegacyFormat)
+ } catch (err) {
+ const errorMessage = this.$t('Local API Error (Click to copy)')
+ showToast(`${errorMessage}: ${err}`, 10000, () => {
+ copyToClipboard(err)
})
+ console.error(err)
+ return null
+ }
},
handleFormatChange: function (format) {
@@ -1233,23 +1158,12 @@ export default defineComponent({
return
}
- if (this.dashSrc === null || this.isLive || this.isPostLiveDvr) {
+ if (this.manifestSrc === null) {
showToast(this.$t('Change Format.Dash formats are not available for this video'))
return
}
- const watchedProgress = this.getWatchedProgress()
+
this.activeFormat = 'dash'
- this.hidePlayer = true
-
- setTimeout(() => {
- this.hidePlayer = false
- setTimeout(() => {
- const player = this.$refs.videoPlayer.player
- if (player !== null) {
- player.currentTime(watchedProgress)
- }
- }, 500)
- }, 100)
},
enableLegacyFormat: function () {
@@ -1257,20 +1171,12 @@ export default defineComponent({
return
}
- const watchedProgress = this.getWatchedProgress()
+ if (this.isLive || this.isPostLiveDvr || this.legacyFormats.length === 0) {
+ showToast(this.$t('Change Format.Legacy formats are not available for this video'))
+ return
+ }
+
this.activeFormat = 'legacy'
- this.activeSourceList = this.videoSourceList
- this.hidePlayer = true
-
- setTimeout(() => {
- this.hidePlayer = false
- setTimeout(() => {
- const player = this.$refs.videoPlayer.player
- if (player !== null) {
- player.currentTime(watchedProgress)
- }
- }, 500)
- }, 100)
},
enableAudioFormat: function () {
@@ -1278,25 +1184,14 @@ export default defineComponent({
return
}
- if (this.audioSourceList === null) {
+ if (this.manifestSrc === null ||
+ // HLS consists of combined audio and video files, so we can't do audio only
+ ((this.isLive || this.isPostLiveDvr) && this.manifestMimeType !== MANIFEST_TYPE_DASH)) {
showToast(this.$t('Change Format.Audio formats are not available for this video'))
return
}
- const watchedProgress = this.getWatchedProgress()
this.activeFormat = 'audio'
- this.activeSourceList = this.audioSourceList
- this.hidePlayer = true
-
- setTimeout(() => {
- this.hidePlayer = false
- setTimeout(() => {
- const player = this.$refs.videoPlayer.player
- if (player !== null) {
- player.currentTime(watchedProgress)
- }
- }, 500)
- }, 100)
},
handleVideoEnded: function () {
@@ -1329,8 +1224,9 @@ export default defineComponent({
const nextVideoInterval = this.defaultInterval
this.playNextTimeout = setTimeout(() => {
- const player = this.$refs.videoPlayer?.player
- if (player && player.paused()) {
+ const player = this.$refs.player
+
+ if (player && player.isPaused()) {
if (this.watchingPlaylist) {
this.$refs.watchVideoPlaylist.playNextVideo()
} else {
@@ -1368,90 +1264,124 @@ export default defineComponent({
this.playNextCountDownIntervalId = setInterval(showCountDownMessage, 1000)
},
- handleRouteChange: function (videoId) {
- // receiving it as an arg instead of accessing it ourselves means we always have the right one
-
+ handleRouteChange: function () {
clearTimeout(this.playNextTimeout)
clearInterval(this.playNextCountDownIntervalId)
this.videoChapters = []
this.handleWatchProgress()
+ },
- if (!this.isUpcoming && !this.isLoading) {
- const player = this.$refs.videoPlayer?.player
-
- if (player && !player.paused() && player.isInPictureInPicture()) {
- setTimeout(() => {
- player.play()
- player.on('leavepictureinpicture', (event) => {
- const watchTime = player.currentTime()
- if (this.$route.fullPath.includes('/watch')) {
- const routeId = this.$route.params.id
- if (routeId === videoId) {
- this.$refs.videoPlayer.$refs.video.currentTime = watchTime
- }
- }
+ /**
+ * @param {import('shaka-player/dist/shaka-player.ui').default.util.Error} error
+ */
+ handlePlayerError: function (error) {
+ // the error is logged to the console inside the player so we don't have to do it here
- player.pause()
- player.dispose()
- })
- }, 200)
+ const { Code } = shaka.util.Error
+
+ if (error.code === Code.HTTP_ERROR) {
+ if (error.data[1]?.message === 'Failed to fetch' && !navigator.onLine) {
+ // Internet connection was lost, do nothing on our side as
+ // shaka-player will keep trying until the internet connection returns and resume playback automatically when it does
+ return
}
- }
+ } else if (error.code === Code.BAD_HTTP_STATUS) {
+ switch (error.data[1]) {
+ case 429:
+ this.handleWatchProgress()
- if (this.videoStoryboardSrc.startsWith('blob:')) {
- URL.revokeObjectURL(this.videoStoryboardSrc)
- this.videoStoryboardSrc = ''
- }
- },
+ this.errorMessage = '[BAD_HTTP_STATUS: 429] Ratelimited'
+ return
+ case 403:
+ this.handleWatchProgress()
- handleVideoError: function (error) {
- console.error(error)
- if (this.isLive) {
- return
+ if (new Date() > this.streamingDataExpiryDate) {
+ this.errorMessage = '[BAD_HTTP_STATUS: 403] YouTube watch session expired. Please reopen this video.'
+ this.customErrorIcon = ['fas', 'clock']
+ return
+ }
+
+ if (this.videoGenreIsMusic) {
+ this.errorMessage = '[BAD_HTTP_STATUS: 403] Potential causes: IP block, streaming URL deciphering failed or music video geo-block'
+ } else {
+ this.errorMessage = '[BAD_HTTP_STATUS: 403] Potential causes: IP block or streaming URL deciphering failed'
+ }
+ return
+ }
+ } else if (error.code === Code.VIDEO_ERROR) {
+ if (this.activeFormat === 'legacy') {
+ if (new Date() > this.streamingDataExpiryDate) {
+ this.handleWatchProgress()
+
+ this.errorMessage = '[VIDEO_ERROR] YouTube watch session expired. Please reopen this video.'
+ this.customErrorIcon = ['fas', 'clock']
+ return
+ }
+ }
}
- if (error.code === 4) {
+ if (this.isLive || this.isPostLiveDvr) {
+ // live streams don't have legacy formats, so only switch between dash and audio
+
if (this.activeFormat === 'dash') {
- console.warn(
- 'Unable to play dash formats. Reverting to legacy formats...'
- )
- this.enableLegacyFormat()
+ console.error('Unable to play audio formats. Reverting to DASH formats...')
+ this.enableAudioFormat()
} else {
+ console.error('Unable to play DASH formats. Reverting to audio formats...')
this.enableDashFormat()
}
+ } else {
+ // loop through formats DASH -> legacy -> audio -> DASH
+
+ switch (this.activeFormat) {
+ case 'dash':
+ console.error('Unable to play DASH formats. Reverting to legacy formats...')
+ this.enableLegacyFormat()
+ break
+ case 'legacy':
+ console.error('Unable to play legacy formats. Reverting to audio formats...')
+ this.enableAudioFormat()
+ break
+ case 'audio':
+ console.error('Unable to play audio formats. Reverting to DASH formats...')
+ this.enableDashFormat()
+ break
+ }
}
},
/**
* @param {import('youtubei.js').YT.VideoInfo} videoInfo
+ * @param {boolean} includeThumbnails
*/
- createLocalDashManifest: async function (videoInfo) {
- const xmlData = await videoInfo.toDash()
-
- return [
- {
- url: `data:application/dash+xml;charset=UTF-8,${encodeURIComponent(xmlData)}`,
- type: 'application/dash+xml',
- label: 'Dash',
- qualityLabel: 'Auto'
- }
- ]
+ createLocalDashManifest: async function (videoInfo, includeThumbnails = false) {
+ const xmlData = await videoInfo.toDash(undefined, undefined, {
+ include_thumbnails: includeThumbnails
+ })
+
+ return `data:application/dash+xml;charset=UTF-8,${encodeURIComponent(xmlData)}`
},
- createInvidiousDashManifest: async function () {
+ createInvidiousDashManifest: async function (result, trustApiResponse = false) {
let url = `${this.currentInvidiousInstanceUrl}/api/manifest/dash/id/${this.videoId}`
// If we are in Electron,
// we can use YouTube.js' DASH manifest generator to generate the manifest.
// Using YouTube.js' gives us support for multiple audio tracks (currently not supported by Invidious)
if (process.env.SUPPORTS_LOCAL_API) {
- // Invidious' API response doesn't include the height and width (and fps and qualityLabel for AV1) of video streams
- // so we need to extract them from Invidious' manifest
- const response = await invidiousFetch(url)
- const originalText = await response.text()
+ const adaptiveFormats = await this.getAdaptiveFormatsInvidious(result, trustApiResponse)
- const parsedManifest = new DOMParser().parseFromString(originalText, 'application/xml')
+ let parsedManifest
+
+ if (!trustApiResponse) {
+ // Invidious' API response doesn't include the height and width (and fps and qualityLabel for AV1) of video streams
+ // so we need to extract them from Invidious' manifest
+ const response = await invidiousFetch(url)
+ const originalText = await response.text()
+
+ parsedManifest = new DOMParser().parseFromString(originalText, 'application/xml')
+ }
/** @type {import('youtubei.js').Misc.Format[]} */
const formats = []
@@ -1461,8 +1391,8 @@ export default defineComponent({
let hasMultipleAudioTracks = false
- for (const format of this.adaptiveFormats) {
- if (format.type.startsWith('video/')) {
+ for (const format of adaptiveFormats) {
+ if (!trustApiResponse && format.type.startsWith('video/')) {
const representation = parsedManifest.querySelector(`Representation[id="${format.itag}"][bandwidth="${format.bitrate}"]`)
format.height = parseInt(representation.getAttribute('height'))
@@ -1480,7 +1410,7 @@ export default defineComponent({
if (localFormat.has_audio) {
audioFormats.push(localFormat)
- if (localFormat.is_dubbed || localFormat.is_descriptive) {
+ if (localFormat.is_dubbed || localFormat.is_descriptive || localFormat.is_drc || localFormat.is_secondary) {
hasMultipleAudioTracks = true
}
}
@@ -1494,8 +1424,6 @@ export default defineComponent({
for (const format of audioFormats) {
this.generateAudioTrackFieldInvidious(format, languageNames)
}
-
- this.audioTracks = this.createAudioTracksFromLocalFormats(audioFormats)
}
const manifest = await generateInvidiousDashManifestLocally(formats)
@@ -1505,14 +1433,7 @@ export default defineComponent({
url += '?local=true'
}
- return [
- {
- url: url,
- type: 'application/dash+xml',
- label: 'Dash',
- qualityLabel: 'Auto'
- }
- ]
+ return url
},
/**
@@ -1534,6 +1455,9 @@ export default defineComponent({
} else if (format.is_original) {
type = ' original'
idNumber = 4
+ } else if (format.is_secondary) {
+ type = ' secondary'
+ idNumber = 6
} else {
type = ' alternative'
idNumber = -1
@@ -1548,7 +1472,7 @@ export default defineComponent({
}
},
- getAdaptiveFormatsInvidious: async function (existingInfoResult = null) {
+ getAdaptiveFormatsInvidious: async function (existingInfoResult = null, trustApiResponse = false) {
let result
if (existingInfoResult) {
result = existingInfoResult
@@ -1556,120 +1480,105 @@ export default defineComponent({
result = await invidiousGetVideoInformation(this.videoId)
}
- return filterInvidiousFormats(result.adaptiveFormats, this.allowDashAv1Formats)
- .map((format) => {
+ if (trustApiResponse) {
+ result.adaptiveFormats.forEach((format) => {
format.bitrate = parseInt(format.bitrate)
- if (typeof format.resolution === 'string') {
- format.height = parseInt(format.resolution.replace('p', ''))
+
+ // audio streams don't have a size property
+ if (typeof format.size === 'string') {
+ const [stringWidth, stringHeight] = format.size.split('x')
+
+ format.width = parseInt(stringWidth)
+ format.height = parseInt(stringHeight)
}
- return format
})
+
+ return result.adaptiveFormats
+ } else {
+ return filterInvidiousFormats(result.adaptiveFormats)
+ .map((format) => {
+ format.bitrate = parseInt(format.bitrate)
+ if (typeof format.resolution === 'string') {
+ format.height = parseInt(format.resolution.replace('p', ''))
+ }
+ return format
+ })
+ }
},
createLocalStoryboardUrls: function (storyboardInfo) {
const results = buildVTTFileLocally(storyboardInfo, this.videoLengthSeconds)
- // after the player migration, switch to using a data URI, as those don't need to be revoked
-
- const blob = new Blob([results], { type: 'text/vtt;charset=UTF-8' })
-
- this.videoStoryboardSrc = URL.createObjectURL(blob)
+ return `data:text/vtt;charset=utf-8,${encodeURIComponent(results)}`
},
- tryAddingTranslatedLocaleCaption: function (captionTracks, locale, baseUrl) {
- const enCaptionIdx = captionTracks.findIndex(track =>
- track.language_code === 'en' && track.kind !== 'asr'
- )
+ /**
+ * @param {import('youtubei.js').YTNodes.PlayerCaptionsTracklist} captions
+ * @param {Set} userLanguages
+ * @returns {null|{ url: string, label: string, language: string, mimeType: string, isAutotranslated: boolean }}
+ */
+ getTranslatedLocaleCaption: function (captions, userLanguages) {
+ // check if we can translate to the users language
+ const translationLanguage = captions.translation_languages.find(language => userLanguages.has(language.language_code))
+
+ let translationName, translationCode
+ // otherwise just fallback to the FreeTube display language and hope that YouTube will be able to handle it
+ if (!translationLanguage) {
+ translationName = this.$i18n.t('Locale Name')
+ translationCode = userLanguages.values().next()
+ } else {
+ translationName = translationLanguage.language_name.text
+ translationCode = translationLanguage.language_code
+ }
- const enCaptionExists = enCaptionIdx !== -1
- const asrEnabled = captionTracks.some(track => track.kind === 'asr')
+ let trackToTranslate
- if (enCaptionExists || asrEnabled) {
- let label
- let url
+ const autoGeneratedCaptionTrack = captions.caption_tracks.find(track => track.kind === 'asr')
+ if (autoGeneratedCaptionTrack) {
+ // Check if there is a user uploaded caption track in the language of the video, as that is more trustworthy than auto-generated captions
+ const userUploadedCaptionTrack = captions.caption_tracks.find(track => track.kind !== 'asr' && track.language_code === autoGeneratedCaptionTrack.language_code)
- if (this.$te('Video.translated from English') && this.$t('Video.translated from English') !== '') {
- label = `${this.$t('Locale Name')} (${this.$t('Video.translated from English')})`
- } else {
- label = `${this.$t('Locale Name')} (translated from English)`
- }
+ // Fallback to the auto-generated track if there is no user uploaded one that matches the video language
+ trackToTranslate = userUploadedCaptionTrack ?? autoGeneratedCaptionTrack
+ } else {
+ // if there is no auto-generated track choose the first translatable track
+ trackToTranslate = captions.caption_tracks.find(track => track.is_translatable) ?? captions.caption_tracks[0]
+ }
- const indexTranslated = captionTracks.findIndex((item) => {
- return item.label === label
- })
- if (indexTranslated !== -1) {
- return
- }
+ const url = new URL(trackToTranslate.base_url)
+ url.searchParams.set('fmt', 'vtt')
+ url.searchParams.set('tlang', translationCode)
- if (enCaptionExists) {
- url = new URL(captionTracks[enCaptionIdx].url)
- } else {
- url = new URL(baseUrl)
- url.searchParams.set('lang', 'en')
- url.searchParams.set('kind', 'asr')
- }
+ const label = this.$t('Video.Player.TranslatedCaptionTemplate', {
+ language: translationName,
+ originalLanguage: trackToTranslate.name.text
+ })
- url.searchParams.set('tlang', locale)
- captionTracks.unshift({
- url: url.toString(),
- label,
- language_code: locale,
- is_autotranslated: true
- })
+ return {
+ url: url.toString(),
+ label,
+ language: translationCode,
+ mimeType: 'text/vtt',
+ isAutotranslated: true
}
},
- createCaptionPromiseList: function (captionTracks) {
- return captionTracks.map(caption => new Promise((resolve, reject) => {
- caption.type = 'text/vtt'
- caption.charset = 'charset=utf-8'
- caption.dataSource = 'local'
-
- const url = new URL(caption.url)
- url.searchParams.set('fmt', 'vtt')
-
- fetch(url)
- .then((response) => response.text())
- .then((text) => {
- // The character '#' needs to be percent-encoded in a (data) URI
- // because it signals an identifier, which means anything after it
- // is automatically removed when the URI is used as a source
- let vtt = text.replaceAll('#', '%23')
-
- // A lot of videos have messed up caption positions that need to be removed
- // This can be either because this format isn't really used by YouTube
- // or because it's expected for the player to be able to somehow
- // wrap the captions so that they won't step outside its boundaries
- //
- // Auto-generated captions are also all aligned to the start
- // so those instances must also be removed
- // In addition, all aligns seem to be fixed to "start" when they do pop up in normal captions
- // If it's prominent enough that people start to notice, it can be removed then
- if (caption.kind === 'asr') {
- vtt = vtt.replaceAll(/ align:start| position:\d{1,3}%/g, '')
- } else {
- vtt = vtt.replaceAll(/ position:\d{1,3}%/g, '')
- }
-
- caption.url = `data:${caption.type};${caption.charset},${vtt}`
- resolve(caption)
- })
- .catch((error) => {
- console.error(error)
- reject(error)
- })
- }))
- },
-
pausePlayer: function () {
- const player = this.$refs.videoPlayer.player
- if (player && !player.paused()) {
+ const player = this.$refs.player
+
+ if (player && !player.isPaused()) {
player.pause()
}
},
getWatchedProgress: function () {
- return this.$refs.videoPlayer && this.$refs.videoPlayer.player ? this.$refs.videoPlayer.player.currentTime() : 0
+ const player = this.$refs.player
+
+ if (!this.isLoading && player?.hasLoaded) {
+ return player.getCurrentTime()
+ }
+
+ return 0
},
getTimestamp: function () {
diff --git a/src/renderer/views/Watch/Watch.scss b/src/renderer/views/Watch/Watch.scss
index cac7c281dff90..edefbb85a23ea 100644
--- a/src/renderer/views/Watch/Watch.scss
+++ b/src/renderer/views/Watch/Watch.scss
@@ -47,7 +47,7 @@
max-inline-size: calc(80vh * 1.78);
position: relative;
- .upcomingThumbnail {
+ .videoThumbnail {
inline-size: 100%;
}
@@ -82,6 +82,46 @@
}
}
}
+
+ .errorContainer {
+ position: absolute;
+ inset: 30px;
+ display: grid;
+ place-content: center;
+ }
+
+ .errorWrapper {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 20px;
+ padding: 10px;
+ border-radius: 20px;
+ background-color: rgb(0 0 0 / 90%);
+ color: #fff;
+ }
+
+ .errorIcon {
+ font-size: 80px;
+ }
+
+ .errorMessage {
+ margin: 0;
+ }
+
+ @media only screen and (width <= 680px) {
+ .errorContainer {
+ inset: 10px;
+ }
+
+ .errorWrapper {
+ gap: 10px;
+ }
+
+ .errorIcon {
+ font-size: 60px;
+ }
+ }
}
}
diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue
index b927b20e13646..e9c60192c8322 100644
--- a/src/renderer/views/Watch/Watch.vue
+++ b/src/renderer/views/Watch/Watch.vue
@@ -16,42 +16,42 @@
class="videoArea"
>
-
+
+
+
+
+ {{ errorMessage }}
+
+
+
@@ -150,7 +169,7 @@
:class="{ theatreWatchVideo: useTheatreMode }"
:channel-thumbnail="channelThumbnail"
:channel-name="channelName"
- :video-player-ready="videoPlayerReady"
+ :video-player-ready="videoPlayerLoaded"
:force-state="commentsEnabled ? null : 'noComment'"
@timestamp-event="changeTimestamp"
/>
diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml
index ef571b6c777af..d8ed78dfaa17f 100644
--- a/static/locales/ar.yaml
+++ b/static/locales/ar.yaml
@@ -426,7 +426,6 @@ Settings:
أرقام. %i معرف الفيديو. يمكنك أيضا استخدام "\" أو "/" لإنشاء مجلدات فرعية.
Enter Fullscreen on Display Rotate: وضع ملء الشاشة عند تدوير الشاشة
Skip by Scrolling Over Video Player: تخطي بالتمرير فوق مشغل الفيديو
- Allow DASH AV1 formats: السماح بتنسيقات DASH AV1
Privacy Settings:
Privacy Settings: 'إعدادات الخصوصية'
Remember History: 'تذّكر سجلّ المشاهدة'
@@ -905,11 +904,6 @@ Video:
Loop Playlist: تكرار قائمة التشغيل
Starting soon, please refresh the page to check again: سيبدأ قريباً ، يرجى تحديث
الصفحة للتحقق مرة أخرى
- Audio:
- Best: الأفضل
- High: عال
- Medium: متوسط
- Low: منخفض
audio only: الصوت فقط
video only: الفيديو فقط
Download Video: تحميل الفيديو
@@ -922,7 +916,6 @@ Video:
Video has been saved: تم حفظ الفيديو
Save Video: احفظ الفيديو
Video has been removed from your saved list: تمت إزالة الفيديو من قائمتك المحفوظة
- translated from English: مترجمة من الإنجليزية
Sponsor Block category:
music offtopic: موسيقى خارجة عن المألوف
interaction: تفاعل
@@ -932,7 +925,6 @@ Video:
sponsor: الرعاة
filler: حشو
recap: الخلاصة
- Skipped segment: تم تخطي المقطع
External Player:
Unsupported Actions:
looping playlists: تكرار قوائم التشغيل
@@ -949,26 +941,6 @@ Video:
video: فيديو
OpenInTemplate: فتح في {externalPlayer}
Premieres on: العرض الأول بتاريخ
- Stats:
- video id: معرف الفيديو (يوتيوب)
- player resolution: المعاينه
- fps: معدل الإطارات
- frame drop: إسقاط الإطار
- buffered: مخزنة
- out of: خارج عن
- bandwidth: سرعة الاتصال
- volume: الصوت
- Video statistics are not available for legacy videos: إحصائيات الفيديو غير متوفرة
- لمقاطع الفيديو القديمة
- Video ID: معرف الفيديو
- Resolution: الدقة
- Bitrate: معدل البت
- Player Dimensions: عدد اللاعبين
- Volume: الصوت
- Bandwidth: عرض النطاق الترددي
- Buffered: مخزنة
- Dropped / Total Frames: إسقاط / إجمالي الإطارات
- Mimetype: نمط ميمي
Premieres in: العرض الأول في
Premieres: العرض الأولي
Scroll to Bottom: انتقل إلى الأسفل
@@ -1119,9 +1091,6 @@ Tooltips:
على Mac) ثم انقر فوق الماوس للعودة بسرعة إلى معدل التشغيل الافتراضي (1x ما لم
يتم تغييره في الإعدادات).
Skip by Scrolling Over Video Player: استخدم عجلة التمرير لتخطي الفيديو بنمط MPV.
- Allow DASH AV1 formats: قد تبدو تنسيقات DASH AV1 أفضل من تنسيقات DASH H.264. تتطلب
- تنسيقات DASH AV1 مزيدا من الطاقة للتشغيل! وهي غير متوفرة في جميع مقاطع الفيديو
- ، وفي هذه الحالات سيستخدم المشغل تنسيقات DASH H.264 بدلا من ذلك.
Subscription Settings:
Fetch Feeds from RSS: عند تفعيلها، سوف يستخدم فريتيوب طريقة RSS بدلًا من طريقته
المعتادة لجلب صفحة اشتراكاتك. طريقة RSS أسرع وتتخطى حجب الآي بي IP، لكنها لا
diff --git a/static/locales/be.yaml b/static/locales/be.yaml
index e4faf4f4d6c55..4b43bbe8276b0 100644
--- a/static/locales/be.yaml
+++ b/static/locales/be.yaml
@@ -277,7 +277,6 @@ Settings:
1440p: ''
4k: ''
8k: ''
- Allow DASH AV1 formats: ''
Screenshot:
Enable: ''
Format Label: ''
@@ -612,11 +611,6 @@ Video:
Download Video: ''
video only: ''
audio only: ''
- Audio:
- Low: ''
- Medium: ''
- High: ''
- Best: ''
Published:
Jan: ''
Feb: ''
@@ -650,9 +644,7 @@ Video:
Published on: ''
Streamed on: ''
Started streaming on: ''
- translated from English: ''
Publicationtemplate: ''
- Skipped segment: ''
Sponsor Block category:
sponsor: ''
intro: ''
@@ -676,17 +668,6 @@ Video:
reversing playlists: ''
shuffling playlists: ''
looping playlists: ''
- Stats:
- Video statistics are not available for legacy videos: ''
- Video ID: ''
- Resolution: ''
- Player Dimensions: ''
- Bitrate: ''
- Volume: ''
- Bandwidth: ''
- Buffered: ''
- Dropped / Total Frames: ''
- Mimetype: ''
#& Videos
Videos:
#& Sort By
@@ -782,7 +763,6 @@ Tooltips:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
- Allow DASH AV1 formats: ''
Scroll Playback Rate Over Video Player: ''
Skip by Scrolling Over Video Player: ''
External Player Settings:
diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml
index dcc15eba7e333..7a9e190cae362 100644
--- a/static/locales/bg.yaml
+++ b/static/locales/bg.yaml
@@ -441,7 +441,6 @@ Settings:
Folder Button: Избор на папка
Enter Fullscreen on Display Rotate: Режим на цял екран при завъртане на дисплея
Skip by Scrolling Over Video Player: Превъртане над видео плейъра
- Allow DASH AV1 formats: Разрешаване на форматите DASH AV1
Privacy Settings:
Privacy Settings: 'Настройки за поверителност'
Remember History: 'Запазване на историята'
@@ -924,11 +923,6 @@ Video:
Published on: 'Публикувано на'
Publicationtemplate: 'Преди {number} {unit}'
#& Videos
- Audio:
- Best: Най-добро
- High: Високо
- Medium: Средно
- Low: Ниско
audio only: само аудио
video only: само видео
Download Video: Сваляне на видео
@@ -942,7 +936,6 @@ Video:
със запазени
Video has been saved: Видеото е запазено
Save Video: Запазване на видео
- translated from English: преведено от английски
Sponsor Block category:
interaction: Взаимодействие
self-promotion: Самореклама
@@ -952,7 +945,6 @@ Video:
music offtopic: Музика извън темата
recap: Резюме
filler: Запълване
- Skipped segment: Пропуснат сегмент
External Player:
Unsupported Actions:
looping playlists: повтаряне на плейлисти
@@ -968,26 +960,6 @@ Video:
playlist: плейлист
video: видео
OpenInTemplate: Отваряне във {externalPlayer}
- Stats:
- fps: Кадри в секунда
- video id: Идентификатор на видеоклип (YouTube)
- player resolution: Изглед
- volume: Сила на звука
- frame drop: Пропускане на кадър
- bandwidth: Скорост на свързване
- buffered: Буферирани
- out of: от
- Resolution: Резолюция
- Video ID: Идентификатор на видеото
- Player Dimensions: Размери на плейъра
- Bitrate: Побитова скорост
- Bandwidth: Пропускателна способност
- Volume: Сила на звука
- Dropped / Total Frames: Отпаднали / Общо кадри
- Mimetype: MIME тип
- Buffered: Буферирани
- Video statistics are not available for legacy videos: Статистиката не е налична
- за наследени видеа
Premieres on: Премиера на
Premieres in: Премиери в
Premieres: Премиерa
@@ -1133,10 +1105,6 @@ Tooltips:
(1x, освен ако не е променена в настройките).
Skip by Scrolling Over Video Player: Използване колелцето на мишката за превъртане
на видео в стил MPV.
- Allow DASH AV1 formats: Форматите DASH AV1 може да изглеждат по-добре от DASH
- H.264. DASH AV1 форматите изискват повече енергия за възпроизвеждане! Те не
- са налични за всички видеа, като в тези случаи плейърът ще използва DASH H.264
- вместо тях.
General Settings:
Region for Trending: Регионът на набиращите популярност дава възможност да се
избере страната, за която това се отнася.
diff --git a/static/locales/ca.yaml b/static/locales/ca.yaml
index 9c8b2ef49c380..1348fd0dc0529 100644
--- a/static/locales/ca.yaml
+++ b/static/locales/ca.yaml
@@ -534,11 +534,6 @@ Video:
Published on: 'Publicat el'
Publicationtemplate: '{number} {unit} fa'
#& Videos
- Audio:
- High: Alta
- Best: Millor
- Low: Baixa
- Medium: Mitjana
Started streaming on: Retransmissió iniciada el
Sponsor Block category:
interaction: interacció
@@ -547,7 +542,6 @@ Video:
intro: introducció
outro: conclusió
self-promotion: autopromoció
- Skipped segment: Segment saltat
External Player:
Unsupported Actions:
starting video at offset: començant el vídeo al punt donat
@@ -572,7 +566,6 @@ Video:
Download Video: Descàrrega El Vídeo
video only: només vídeo
Streamed on: Retransmès en directe el
- translated from English: traduït de l'anglès
Videos:
#& Sort By
Sort By:
diff --git a/static/locales/ckb.yaml b/static/locales/ckb.yaml
index a56a93b7ddceb..b2b2333796c32 100644
--- a/static/locales/ckb.yaml
+++ b/static/locales/ckb.yaml
@@ -281,7 +281,6 @@ Settings:
1440p: '١٤٤٠p'
4k: '٤k'
8k: '٨k'
- Allow DASH AV1 formats: ''
Screenshot:
Enable: ''
Format Label: ''
@@ -626,11 +625,6 @@ Video:
Download Video: 'داگرتنی ڤیدیۆ'
video only: 'تەنیا ڤیدیۆ'
audio only: 'تەنیا دەنگ'
- Audio:
- Low: 'نزم'
- Medium: 'مامناوەند'
- High: 'بەرز'
- Best: 'باشترین'
Published:
Jan: ''
Feb: ''
@@ -664,9 +658,7 @@ Video:
Published on: 'بڵاوکرایەوە لە'
Streamed on: ''
Started streaming on: ''
- translated from English: ''
Publicationtemplate: ''
- Skipped segment: ''
Sponsor Block category:
sponsor: ''
intro: ''
@@ -690,17 +682,6 @@ Video:
reversing playlists: ''
shuffling playlists: ''
looping playlists: ''
- Stats:
- Video statistics are not available for legacy videos: ''
- Video ID: ''
- Resolution: ''
- Player Dimensions: ''
- Bitrate: ''
- Volume: ''
- Bandwidth: ''
- Buffered: ''
- Dropped / Total Frames: ''
- Mimetype: ''
#& Videos
Unhide Channel: پیشاندانی کەناڵ
Hide Channel: شاردنەوەی کەناڵ
@@ -798,7 +779,6 @@ Tooltips:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
- Allow DASH AV1 formats: ''
Scroll Playback Rate Over Video Player: ''
Skip by Scrolling Over Video Player: ''
External Player Settings:
diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml
index cf4cff8640cc2..0bcc9ee6b87ed 100644
--- a/static/locales/cs.yaml
+++ b/static/locales/cs.yaml
@@ -439,7 +439,6 @@ Settings:
Folder Button: Vybrat složku
Enter Fullscreen on Display Rotate: Při otočení displeje přejít na celou obrazovku
Skip by Scrolling Over Video Player: Posouvat čas posuvem kolečka myši na přehrávači
- Allow DASH AV1 formats: Povolit formáty DASH AV1
Privacy Settings:
Privacy Settings: 'Nastavení soukromí'
Remember History: 'Zapamatovat historii'
@@ -880,11 +879,6 @@ Video:
Download Video: 'Stáhnout Video'
video only: 'pouze video'
audio only: 'pouze zvuk'
- Audio:
- Low: 'Nízká'
- Medium: 'Střední'
- High: 'Vysoká'
- Best: 'Nejlepší'
Published:
Jan: 'Leden'
Feb: 'Únor'
@@ -925,7 +919,6 @@ Video:
Save Video: Uložit video
Video has been removed from your saved list: Video bylo odstraněno z vašeho uloženého
seznamu
- translated from English: přeloženo z angličtiny
Sponsor Block category:
music offtopic: Není hudba
interaction: Interakce
@@ -935,7 +928,6 @@ Video:
sponsor: Sponzor
recap: Shrnutí
filler: Výplň
- Skipped segment: Přeskočen segment
External Player:
Unsupported Actions:
opening specific video in a playlist (falling back to opening the video): Otevření
@@ -952,18 +944,6 @@ Video:
video: video
OpenInTemplate: Otevřít v {externalPlayer}
Premieres on: Premiéra
- Stats:
- Mimetype: Typ int. média
- Video statistics are not available for legacy videos: Statistiky videí nejsou
- k dispozici pro starší videa
- Video ID: ID videa
- Resolution: Rozlišení
- Player Dimensions: Rozměry přehrávače
- Bitrate: Bitrate
- Volume: Hlasitost
- Bandwidth: Bandwidth
- Buffered: V mezipaměti
- Dropped / Total Frames: Vyřazené / Celkový počet snímků
Premieres in: Premiéra za
Premieres: Premiéra
Show Super Chat Comment: Zobrazit komentář Super Chat
@@ -1100,9 +1080,6 @@ Tooltips:
není změněná v nastavení).
Skip by Scrolling Over Video Player: Pomocí rolovacího kolečka můžete video přeskakovat
ve stylu MPV.
- Allow DASH AV1 formats: Formáty DASH AV1 mohou vypadat lépe než formáty DASH H.264,
- vyžadují ale k přehrávání větší výkon! Nejsou k dispozici u všech videí, v těchto
- případech přehrávač místo nich použije formáty DASH H.264.
Subscription Settings:
Fetch Feeds from RSS: 'Je-li povoleno, FreeTube použije RSS místo své výchozí
metody pro získání vašich odběrů. RSS je rychlejší a brání blokování IP, ale
diff --git a/static/locales/cy.yaml b/static/locales/cy.yaml
index c75f4af839155..e22f0cb8fd58c 100644
--- a/static/locales/cy.yaml
+++ b/static/locales/cy.yaml
@@ -284,7 +284,6 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
- Allow DASH AV1 formats: ''
Screenshot:
Enable: 'Galluogi Sgrinlun'
Format Label: 'Fformat Sgrinluniau'
@@ -630,11 +629,6 @@ Video:
Download Video: 'Lawrlwytho Fideo'
video only: 'fideo yn unig'
audio only: 'sain yn unig'
- Audio:
- Low: 'Isel'
- Medium: 'Canolig'
- High: 'Uwch'
- Best: 'Gorau'
Published:
Jan: 'Ion'
Feb: 'Chw'
@@ -668,9 +662,7 @@ Video:
Published on: ''
Streamed on: ''
Started streaming on: ''
- translated from English: ''
Publicationtemplate: ''
- Skipped segment: ''
Sponsor Block category:
sponsor: 'Noddwr'
intro: 'Cyflwyniad'
@@ -694,17 +686,6 @@ Video:
reversing playlists: ''
shuffling playlists: ''
looping playlists: ''
- Stats:
- Video statistics are not available for legacy videos: ''
- Video ID: 'ID fideo'
- Resolution: 'Eglurdeb'
- Player Dimensions: ''
- Bitrate: 'Cyfradd didau'
- Volume: 'Sain'
- Bandwidth: 'Lled band'
- Buffered: ''
- Dropped / Total Frames: ''
- Mimetype: 'Math mime'
#& Videos
Videos:
#& Sort By
@@ -800,7 +781,6 @@ Tooltips:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
- Allow DASH AV1 formats: ''
Scroll Playback Rate Over Video Player: ''
Skip by Scrolling Over Video Player: ''
External Player Settings:
diff --git a/static/locales/da.yaml b/static/locales/da.yaml
index 76a4139a5fe4f..6eabec8d5027f 100644
--- a/static/locales/da.yaml
+++ b/static/locales/da.yaml
@@ -363,7 +363,6 @@ Settings:
Scroll Playback Rate Over Video Player: Scroll Afspilningshastighed i Videoafspiller
Scroll Volume Over Video Player: Scroll Lydstyrke i Videoafspiller
Skip by Scrolling Over Video Player: Spring Over ved at Scrolle Over Videoafspilleren
- Allow DASH AV1 formats: Tillad DASH AV1-formater
Privacy Settings:
Privacy Settings: 'Privatlivsindstillinger'
Remember History: 'Husk Historik'
@@ -801,28 +800,10 @@ Video:
Save Video: Gem Video
Started streaming on: Begyndte at sende
Streamed on: Sendt
- Audio:
- Best: Bedst
- High: Høj
- Medium: Middel
- Low: Lav
audio only: kun lyd
video only: kun video
Download Video: Hent Video
Premieres on: Har premiere på
- Stats:
- Resolution: Skærmopløsning
- Player Dimensions: Afspillerdimensioner
- Bitrate: Bitrate
- Volume: Lydstyrke
- Bandwidth: Båndbredde
- Buffered: Bufferet
- Dropped / Total Frames: Tabte / Antal Billeder
- Mimetype: Mimetype
- Video statistics are not available for legacy videos: Videostatistikker er ikke
- tilgængelige for gamle videoer
- Video ID: Video ID
- translated from English: oversat fra engelsk
Sponsor Block category:
intro: Intro
sponsor: Sponsor
@@ -847,7 +828,6 @@ Video:
video: video
playlist: playliste
UnsupportedActionTemplate: '{externalPlayer} understøtter ikke: {action}'
- Skipped segment: Sprunget over segment
Hide Channel: Skjul Kanal
Unhide Channel: Vis Kanal
'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': Live
diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml
index 96d8bfbf43b53..0b06a83199637 100644
--- a/static/locales/de-DE.yaml
+++ b/static/locales/de-DE.yaml
@@ -447,7 +447,6 @@ Settings:
Unterordner zu erstellen.
Enter Fullscreen on Display Rotate: Beim Drehen des Bildschirms zu Vollbild wechseln
Skip by Scrolling Over Video Player: Überspringen durch Scrollen über den Videoabspieler
- Allow DASH AV1 formats: DASH AV1-Formate zulassen
Subscription Settings:
Subscription Settings: Abo-Einstellungen
Hide Videos on Watch: Videos bei Wiedergabe ausblenden
@@ -905,11 +904,6 @@ Video:
Loop Playlist: Wiedergabeliste wiederholen
Starting soon, please refresh the page to check again: Es beginnt bald, bitte aktualisiere
die Seite, um es erneut zu überprüfen
- Audio:
- Best: Am besten
- High: Hoch
- Medium: Mittel
- Low: Niedrig
audio only: nur Audio
video only: nur Video
Download Video: Video herunterladen
@@ -923,7 +917,6 @@ Video:
Videos entfernt
Video has been saved: Video wurde gespeichert
Save Video: Video speichern
- translated from English: aus dem Englischen übersetzt
Sponsor Block category:
music offtopic: Musik Offtopic
interaction: Interaktion
@@ -933,7 +926,6 @@ Video:
sponsor: Sponsor
recap: Rekapitulation
filler: Füller
- Skipped segment: Segment übersprungen
External Player:
OpenInTemplate: In {externalPlayer} öffnen
Unsupported Actions:
@@ -950,26 +942,6 @@ Video:
playlist: Wiedergabeliste
video: Video
Premieres on: Premiere am
- Stats:
- volume: Lautstärke
- fps: BpS
- frame drop: Bildverlust
- bandwidth: Verbindungsgeschwindigkeit
- out of: aus
- player resolution: Ansichtsfenster
- video id: Video-ID (YouTube)
- buffered: Gepuffert
- Video ID: Video-ID
- Resolution: Auflösung
- Player Dimensions: Abspieler-Größe
- Bitrate: Bitrate
- Volume: Lautstärke
- Bandwidth: Bandbreite
- Buffered: Gepuffert
- Dropped / Total Frames: Entfallene / gesamte Einzelbilder
- Mimetype: MIME-Typ
- Video statistics are not available for legacy videos: Videostatistiken sind für
- ältere Videos nicht verfügbar
Premieres in: Premieren in
Premieres: Premiere
Show Super Chat Comment: Super-Chat-Kommentar anzeigen
@@ -1192,10 +1164,6 @@ Tooltips:
(1x, sofern sie nicht in den Einstellungen geändert wurde).
Skip by Scrolling Over Video Player: Verwende das Scrollrad, um durch das Video
zu springen, MPV-Stil.
- Allow DASH AV1 formats: DASH AV1-Formate können besser aussehen als DASH H.264-Formate.
- 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.
External Player Settings:
Custom External Player Arguments: Alle benutzerdefinierten Befehlszeilenargumente,
getrennt durch Semikolon (';'), die an den externen Abspieler übergeben werden
diff --git a/static/locales/el.yaml b/static/locales/el.yaml
index 4d3d79a2e4665..df458fcec39d2 100644
--- a/static/locales/el.yaml
+++ b/static/locales/el.yaml
@@ -303,7 +303,6 @@ Settings:
Βίντεο
Enter Fullscreen on Display Rotate: Μετάβαση στην Πλήρη Οθόνη κατά την Περιστροφή
Οθόνης
- Allow DASH AV1 formats: Να επιτρέπονται οι μορφές DASH AV1
Privacy Settings:
Privacy Settings: 'Ρυθμίσεις απορρήτου'
Remember History: 'Διατήρηση ιστορικού'
@@ -776,11 +775,6 @@ Video:
Published on: 'Δημοσιεύθηκε στις'
Publicationtemplate: 'δημοσιεύθηκε πριν από {number} {unit}'
#& Videos
- Audio:
- Best: Καλύτερο
- High: Υψηλή
- Medium: Μεσαία
- Low: Χαμηλή
Starting soon, please refresh the page to check again: Έναρξη σύντομα, παρακαλούμε
κάντε ανανέωση της σελίδας για επανέλεγχο
audio only: μόνο ήχος
@@ -796,7 +790,6 @@ Video:
λίστα σας
Video has been saved: Το βίντεο έχει αποθηκευτεί
Save Video: Αποθήκευση βίντεο
- translated from English: μεταφράστηκε από τα Αγγλικά
Sponsor Block category:
intro: Εισαγωγή
interaction: Αλληλεπίδραση
@@ -823,26 +816,6 @@ Video:
OpeningTemplate: Άνοιγμα {videoOrPlaylist} σε {externalPlayer}...
UnsupportedActionTemplate: 'Το {externalPlayer} δεν υποστηρίζει: {action}'
Premieres on: Πρεμιέρες στις
- Stats:
- video id: Αναγνωριστικό του βίντεο (YouTube)
- player resolution: Θύρα προβολής
- volume: Ένταση ήχου
- fps: FPS
- out of: από
- frame drop: Πτώση καρέ
- bandwidth: Ταχύτητα σύνδεσης
- Mimetype: Τύπος αρχείου
- Video statistics are not available for legacy videos: Τα στατιστικά βίντεο δεν
- είναι διαθέσιμα για βίντεο παλαιού τύπου
- Video ID: Αναγνωριστικό βίντεο
- Resolution: Ανάλυση
- Player Dimensions: Διαστάσεις αναπαραγωγής βίντεο
- Bitrate: Ρυθμός μεταβίβασης δεδομένων
- Volume: Ένταση
- Bandwidth: Εύρος ζώνης
- Buffered: Φορτωμένο
- Dropped / Total Frames: Πτωμένα / Συνολικά Καρέ
- Skipped segment: Τμήμα που παραλείφθηκε
Show Super Chat Comment: Εμφάνιση Σχολίου Super Chat
Scroll to Bottom: Κύλιση προς τα Κάτω
Premieres: Πρεμιέρες
@@ -992,10 +965,6 @@ Tooltips:
ρυθμό αναπαραγωγής (1x εκτός αν έχει αλλάξει στις ρυθμίσεις).
Skip by Scrolling Over Video Player: Χρησιμοποιήστε τον τροχό κύλισης για να παρακάμψετε
το βίντεο, στυλ MPV.
- Allow DASH AV1 formats: Οι μορφές DASH AV1 μπορεί να φαίνονται καλύτερες από τις
- μορφές DASH H.264. Οι μορφές DASH AV1 απαιτούν περισσότερη ισχύ για την αναπαραγωγή!
- Δεν είναι διαθέσιμα σε όλα τα βίντεο, σε αυτές τις περιπτώσεις το πρόγραμμα
- αναπαραγωγής θα χρησιμοποιήσει τις μορφές DASH H.264.
General Settings:
Region for Trending: Η περιοχή των τάσεων σας επιτρέπει να επιλέξετε τα δημοφιλή
βίντεο της χώρας που θέλετε να εμφανίζονται.
diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml
index 72c9da86d16af..ab1e3c2d11dd9 100644
--- a/static/locales/en-US.yaml
+++ b/static/locales/en-US.yaml
@@ -422,7 +422,6 @@ Settings:
1440p: 1440p
4k: 4k
8k: 8k
- Allow DASH AV1 formats: Allow DASH AV1 formats
Screenshot:
Enable: Enable Screenshot
Format Label: Screenshot Format
@@ -818,11 +817,6 @@ Video:
Download Video: Download Video
video only: video only
audio only: audio only
- Audio:
- Low: Low
- Medium: Medium
- High: High
- Best: Best
Published:
Jan: Jan
Feb: Feb
@@ -856,9 +850,7 @@ Video:
Published on: Published on
Streamed on: Streamed on
Started streaming on: Started streaming on
- translated from English: translated from English
Publicationtemplate: '{number} {unit} ago'
- Skipped segment: Skipped segment
Sponsor Block category:
sponsor: Sponsor
intro: Intro
@@ -882,17 +874,33 @@ Video:
reversing playlists: reversing playlists
shuffling playlists: shuffling playlists
looping playlists: looping playlists
- Stats:
- Video statistics are not available for legacy videos: Video statistics are not available for legacy videos
- Video ID: Video ID
- Resolution: Resolution
- Player Dimensions: Player Dimensions
- Bitrate: Bitrate
- Volume: Volume
- Bandwidth: Bandwidth
- Buffered: Buffered
- Dropped / Total Frames: Dropped / Total Frames
- Mimetype: Mimetype
+ Player:
+ TranslatedCaptionTemplate: '{language} (translated from "{originalLanguage}")'
+ Audio Tracks: Audio Tracks
+ Theatre Mode: Theater Mode
+ Exit Theatre Mode: Exit Theater Mode
+ Full Window: Full Window
+ Exit Full Window: Exit Full Window
+ Take Screenshot: Take Screenshot
+ Show Stats: Show Stats
+ Hide Stats: Hide Stats
+ Stats:
+ Stats: Stats
+ Video ID: 'Video ID: {videoId}'
+ Media Formats: 'Media Formats: {formats}'
+ Resolution: 'Resolution: {width}x{height}@{frameRate}'
+ Player Dimensions: 'Player Dimensions: {width}x{height}'
+ Bitrate: 'Bitrate: {bitrate} kbps'
+ Volume: 'Volume: {volumePercentage}%'
+ Bandwidth: 'Bandwidth: {bandwidth} kbps'
+ Buffered: 'Buffered: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Dropped Frames: {droppedFrames} / Total Frames: {totalFrames}'
+ CodecAudio: 'Codec: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}'
+ You appear to be offline: You appear to be offline.
+ Playback will resume automatically when your connection comes back: Playback will resume automatically when your connection comes back.
+ Skipped segment: 'Skipped {segmentCategory} segment'
#& Videos
Videos:
#& Sort By
@@ -932,6 +940,8 @@ Change Format:
this video
Audio formats are not available for this video: Audio formats are not available
for this video
+ Legacy formats are not available for this video: Legacy formats are not available
+ for this video
Share:
Share Video: Share Video
Share Channel: Share Channel
@@ -1015,9 +1025,6 @@ Tooltips:
Default Video Format: Set the formats used when a video plays. DASH formats can
play higher qualities. Legacy formats are limited to a max of 720p but use less
bandwidth. Audio formats are audio only streams.
- Allow DASH AV1 formats: DASH AV1 formats may look better than DASH H.264 formats.
- DASH AV1 formats require more power to playback! They are not available on all videos,
- in those cases the player will use the DASH H.264 formats instead.
Scroll Playback Rate Over Video Player: While the cursor is over the video, press and
hold the Control key (Command Key on Mac) and scroll the mouse wheel forwards or backwards to control
the playback rate. Press and hold the Control key (Command Key on Mac) and left click the mouse
diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml
index 23d2b2fddc8e8..85be4a61bb9a5 100644
--- a/static/locales/en_GB.yaml
+++ b/static/locales/en_GB.yaml
@@ -434,7 +434,6 @@ Settings:
Ask Path: Ask for Save Folder
File Name Label: Filename pattern
Skip by Scrolling Over Video Player: Skip by scrolling over video player
- Allow DASH AV1 formats: Allow DASH AV1 formats
External Player Settings:
External Player Settings: External Player Settings
External Player: External Player
@@ -899,11 +898,6 @@ Video:
#& Videos
Started streaming on: Started streaming on
Streamed on: Streamed on
- Audio:
- Best: Best
- High: High
- Medium: Medium
- Low: Low
audio only: audio only
video only: video only
Download Video: Download Video
@@ -915,7 +909,6 @@ Video:
list
Video has been saved: Video has been saved
Save Video: Save Video
- translated from English: translated from English
Sponsor Block category:
music offtopic: Music offtopic
interaction: Interaction
@@ -925,7 +918,6 @@ Video:
sponsor: Sponsor
recap: Recap
filler: Filler
- Skipped segment: Skipped segment
External Player:
OpenInTemplate: Open in {externalPlayer}
video: video
@@ -942,26 +934,6 @@ Video:
shuffling playlists: shuffling playlists
looping playlists: looping playlists
Premieres on: Premieres on
- Stats:
- video id: Video ID (YouTube)
- player resolution: Viewport
- volume: Volume
- frame drop: Frame Drop
- buffered: Buffered
- fps: FPS
- bandwidth: Connection Speed
- out of: out of
- Player Dimensions: Player dimensions
- Bitrate: Bitrate
- Volume: Volume
- Bandwidth: Bandwidth
- Buffered: Buffered
- Dropped / Total Frames: Dropped / Total frames
- Mimetype: Media type
- Resolution: Resolution
- Video statistics are not available for legacy videos: Video statistics are not
- available for legacy videos
- Video ID: Video ID
Premieres in: Premieres in
Premieres: Premieres
Show Super Chat Comment: Show Super Chat comment
@@ -973,6 +945,33 @@ Video:
Hide Channel: Hide channel
Unhide Channel: Show channel
More Options: More options
+ Player:
+ TranslatedCaptionTemplate: '{language} (translated from ‘{originalLanguage}’)'
+ Audio Tracks: Audio Tracks
+ Theatre Mode: Theatre Mode
+ Exit Theatre Mode: Exit Theatre Mode
+ Full Window: Full Window
+ Exit Full Window: Exit Full Window
+ Take Screenshot: Take Screenshot
+ Show Stats: Show Stats
+ Hide Stats: Hide Stats
+ Stats:
+ Stats: Stats
+ Video ID: 'Video ID: {videoId}'
+ Media Formats: 'Media formats: {formats}'
+ Resolution: 'Resolution: {width}x{height}@{frameRate}'
+ Player Dimensions: 'Player dimensions: {width}x{height}'
+ Bitrate: 'Bitrate: {bitrate} kbps'
+ Volume: 'Volume: {volumePercentage}%'
+ Bandwidth: 'Bandwidth: {bandwidth} kbps'
+ Buffered: 'Buffered: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Dropped frames: {droppedFrames} / Total frames: {totalFrames}'
+ CodecAudio: 'Codec: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}'
+ You appear to be offline: You appear to be offline.
+ Playback will resume automatically when your connection comes back: Playback will resume automatically when your connection comes back.
+ Skipped segment: 'Skipped {segmentCategory} segment'
Videos:
#& Sort By
Sort By:
@@ -1104,9 +1103,6 @@ Tooltips:
rate (1x unless it has been changed in the settings).
Skip by Scrolling Over Video Player: Use the scroll wheel to skip through the
video, MPV style.
- Allow DASH AV1 formats: DASH AV1 formats may look better than DASH H.264 formats.
- DASH AV1 formats require more power to playback! They are not available on all
- videos, in those cases the player will use the DASH H.264 formats instead.
General Settings:
Region for Trending: The region of trends allows you to pick which country’s trending
videos you want to have displayed.
diff --git a/static/locales/es-MX.yaml b/static/locales/es-MX.yaml
index 6b11113849531..31e2a00af94d9 100644
--- a/static/locales/es-MX.yaml
+++ b/static/locales/es-MX.yaml
@@ -539,29 +539,11 @@ Video:
Reverse Playlist: Lista de reproducción invertida
Shuffle Playlist: Lista de reproducción aleatoria
Loop Playlist: Lista de reproducción en bucle
- translated from English: traducido del inglés
- Stats:
- Mimetype: Tipo de medio
- Resolution: Resolución
- Player Dimensions: Tamaño del reproductor
- Bitrate: Tasa de bits
- Volume: Volumen
- Bandwidth: Ancho de banda
- Video statistics are not available for legacy videos: Estadísticas no disponibles
- para videos heredados
- Video ID: ID del video
- Buffered: Amplificado
- Dropped / Total Frames: Caídos / Fotogramas totales
Video has been removed from your saved list: El video se ha eliminado de su lista
de guardado
Video has been saved: Video guardado
Starting soon, please refresh the page to check again: Empezará pronto, por favor
actualice la página para volver a revisar
- Audio:
- Best: Máxima
- Low: Baja
- Medium: Media
- High: Alta
External Player:
Unsupported Actions:
reversing playlists: revirtiendo listas
@@ -594,7 +576,6 @@ Video:
Copy Invidious Channel Link: Copiar link del canal en Invidious
Copy YouTube Channel Link: Copiar link del canal en YouTube
Premieres on: En estreno
- Skipped segment: Omitida esta parte
Download Video: Descargar video
Videos:
#& Sort By
diff --git a/static/locales/es.yaml b/static/locales/es.yaml
index 4d8dca10da693..8f9232d96fbb9 100644
--- a/static/locales/es.yaml
+++ b/static/locales/es.yaml
@@ -441,7 +441,6 @@ Settings:
Enter Fullscreen on Display Rotate: Entrar en pantalla completa al girar la pantalla
Skip by Scrolling Over Video Player: Omitir al desplazarse sobre el reproductor
de vídeo
- Allow DASH AV1 formats: Permitir formatos DASH AV1
Privacy Settings:
Privacy Settings: 'Ajustes de Privacidad'
Remember History: 'Recordar historial'
@@ -926,11 +925,6 @@ Video:
Loop Playlist: Reproducción en bucle
Starting soon, please refresh the page to check again: Comenzará en breve. Por favor,
recarga la página para comprobarlo
- Audio:
- Best: Máxima
- High: Alta
- Medium: Media
- Low: Baja
audio only: audio únicamente
video only: vídeo únicamente
Download Video: Descargar vídeo
@@ -944,7 +938,6 @@ Video:
de guardados
Video has been saved: El vídeo ha sido guardado
Save Video: Guardar el vídeo
- translated from English: traducido del inglés
Sponsor Block category:
music offtopic: No relacionado con la música
interaction: Interacción
@@ -954,7 +947,6 @@ Video:
sponsor: Patrocinador
recap: Recapitulación
filler: Relleno
- Skipped segment: Segmento saltado
External Player:
playlist: lista de reproducción
video: vídeo
@@ -971,26 +963,6 @@ Video:
UnsupportedActionTemplate: '{externalPlayer} no soporta: {action}'
OpeningTemplate: Abriendo {videoOrPlaylist} en {externalPlayer}...
Premieres on: Se estrena el
- Stats:
- bandwidth: Velocidad de conexión
- volume: Volumen
- video id: ID del vídeo (Youtube)
- player resolution: Ventana
- fps: FPS
- frame drop: Pérdida de fotogramas
- buffered: En buffer
- out of: sin
- Video statistics are not available for legacy videos: Las estadísticas de vídeo
- no están disponibles para los vídeos heredados
- Bitrate: Tasa de bits
- Volume: Volumen
- Mimetype: Tipo de medio
- Resolution: Resolución
- Player Dimensions: Dimensiones del reproductor
- Bandwidth: Ancho de banda
- Video ID: ID de vídeo
- Buffered: En búfer
- Dropped / Total Frames: Fotogramas Perdidos / Fotogramas Totales
Premieres in: Estrenos en
Premieres: Estrenos
Show Super Chat Comment: Mostrar los comentarios del Super Chat
@@ -1147,10 +1119,6 @@ Tooltips:
ajustes).
Skip by Scrolling Over Video Player: Use la rueda de desplazamiento para saltar
el vídeo, estilo MPV.
- Allow DASH AV1 formats: Los formatos DASH AV1 pueden verse mejor que los formatos
- DASH H.264. ¡Los formatos DASH AV1 requieren más potencia para reproducirse!
- No están disponibles en todos los videos, en esos casos el reproductor usará
- los formatos DASH H.264 en su lugar.
General Settings:
Region for Trending: La región de las tendencias permite ver los vídeos más populares
en un país determinado.
diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml
index 15677a9ba6619..5f0761041f2b0 100644
--- a/static/locales/es_AR.yaml
+++ b/static/locales/es_AR.yaml
@@ -274,7 +274,6 @@ Settings:
Scroll Volume Over Video Player: Barra de volumen en el reproductor
Skip by Scrolling Over Video Player: Saltar Deslizando sobre el Reproductor de
Video
- Allow DASH AV1 formats: Permitir formatos DASH AV1
Scroll Playback Rate Over Video Player: Acelerar video con la rueda del mouse
Fast-Forward / Rewind Interval: Período de Avance Rápido / Retroceso
Video Playback Rate Interval: Intervalo entre velocidades del video
@@ -446,10 +445,6 @@ Channel:
Tags:
Search for: Buscar por «{tag}»
Details: Detalles
-Video:
- translated from English: traducido del inglés
- Stats:
- Mimetype: Tipo de medio
Yes: 'Sí'
No: 'No'
A new blog is now available, {blogTitle}. Click to view more: 'Un nuevo blog está
diff --git a/static/locales/et.yaml b/static/locales/et.yaml
index 3115714d55aba..104369051e3a2 100644
--- a/static/locales/et.yaml
+++ b/static/locales/et.yaml
@@ -435,7 +435,6 @@ Settings:
%s 2-numbriline videosekund. %t 3-numbriline video millisekund. %i video tunnus.
Alamkaustade loomiseks võid kasutada ka „\“ või „/“.
Skip by Scrolling Over Video Player: Jäta vahele, kerides üle videopleieri
- Allow DASH AV1 formats: Luba DASH AV1 vormingud
Enter Fullscreen on Display Rotate: Ekraani pööramisel ava täisekraanivaade
Privacy Settings:
Privacy Settings: 'Privaatsuse seadistused'
@@ -866,14 +865,8 @@ Video:
videote loendist
Video has been saved: Video on salvestatud
Save Video: Salvesta video
- translated from English: tõlgitud inglise keelest
Started streaming on: Voogedastus algas
Streamed on: Voogedastatud
- Audio:
- High: Kõrge kvaliteet
- Medium: Keskmine kvaliteet
- Low: Madal kvaliteet
- Best: Parim kvaliteet
audio only: vaid helivoog
video only: vaid videovoog
Download Video: Laadi video alla
@@ -886,7 +879,6 @@ Video:
sponsor: Sponsor
filler: Täitevideo
recap: Kokkuvõte
- Skipped segment: Vahelejäetud lõik
External Player:
UnsupportedActionTemplate: 'Rakenduses {externalPlayer} puudub tugi: {action}'
OpeningTemplate: Avan {videoOrPlaylist} {externalPlayer} rakendusega...
@@ -903,26 +895,6 @@ Video:
setting a playback rate: taasesituskiiruse määramine
starting video at offset: video esitamine ajanihkega
Premieres on: Esilinastub
- Stats:
- video id: YouTube video tunnus
- player resolution: Vaate suurus
- volume: Helivaljus
- fps: FPS
- frame drop: Vahelejäetud kaadreid
- bandwidth: Võrguühenduse kiirus
- buffered: Puhverdatud
- out of: /
- Bandwidth: Ribalaius
- Bitrate: Bitikiirus
- Volume: Helivaljus
- Dropped / Total Frames: Vahele jäetud kaadreid / kaadreid kokku
- Player Dimensions: Meediaesitaja mõõdud
- Buffered: Puhverdatud
- Video ID: Video tunnus
- Mimetype: Meedia MIME-tüüp
- Video statistics are not available for legacy videos: Vana tüüpi videote puhul
- pole statistika saataval
- Resolution: Resolutsioon
Premieres: Esilinastus
Show Super Chat Comment: Näita Super Chat'i kommentaare
Scroll to Bottom: Keri alla
@@ -1097,10 +1069,6 @@ Tooltips:
edasi ja tagasi. Tavakiiruse taastamiseks (kui sa seda seadistustest pole muutnud,
siis on see 1x) hoia all Ctrl klahvi (Mac'is ⌘ klahvi) ja klõpsi hiire vasakut
nuppu.
- Allow DASH AV1 formats: DASH AV1 vormingu puhul pilt võib tunduda paremad kui
- DASH H.264 puhul. DASH AV1 vormingu dekodeerimine kasutab esitamise ajal rohkem
- energiat! See vorming ei ole saadaval kõikide videote puhul, mispuhul kasutab
- videoesitaja selle asemel DASH H.264 vormingut.
Skip by Scrolling Over Video Player: MPV-stiilis video läbilappamiseks kasuta
hiire ratast.
Distraction Free Settings:
diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml
index fbfb021d9f58f..ccc8b01c0e64b 100644
--- a/static/locales/eu.yaml
+++ b/static/locales/eu.yaml
@@ -440,7 +440,6 @@ Settings:
Video Playback Rate Interval: Bideo Erreprodukzio-tasa tartea
Skip by Scrolling Over Video Player: Saltatu bideo-erreproduzitzailean korrituz
Enter Fullscreen on Display Rotate: Sartu pantaila osoko pantaila biratu pantailan
- Allow DASH AV1 formats: Baimendu DASH AV1 formatuak
Privacy Settings:
Privacy Settings: 'Pribatutasunari buruzko ezarpenak'
Remember History: 'Historikoa oroitu'
@@ -845,11 +844,6 @@ Video:
Download Video: 'Bideoa deskargatu'
video only: 'Bideoa soilik'
audio only: 'Audioa soilik'
- Audio:
- Low: 'Eskasa'
- Medium: 'Erdi-mailakoa'
- High: 'Altua'
- Best: 'Onena'
Published:
Jan: 'Urtarrila'
Feb: 'Otsaila'
@@ -883,7 +877,6 @@ Video:
Published on: 'Noiz argitaratua'
Streamed on: 'Noiz zuzenean emana'
Started streaming on: 'Noiz hasi zen zuzenekoa'
- translated from English: 'Ingelesetik itzulia'
Publicationtemplate: 'Duela {number} {unit}'
#& Videos
External Player:
@@ -901,18 +894,6 @@ Video:
OpeningTemplate: '{videoOrPlaylist} irekitzen {externalPlayer}-an...'
UnsupportedActionTemplate: '{externalPlayer}-k ez du onartzen: {action}'
playlist: erreprodukzio zerrenda
- Stats:
- Video ID: Bideoaren identifikatzailea
- Bitrate: biten tasa
- Volume: Bolumena
- Bandwidth: Banda zabalera
- Buffered: Bufferera igota
- Video statistics are not available for legacy videos: Bideoen estatistikak ez
- daude eskuragarri legacy bideoentzat
- Resolution: Bereizmena
- Player Dimensions: Erreproduzitzailearen neurriak
- Dropped / Total Frames: Bidalitako / Guztira Frame-ak
- Mimetype: MIME mota
Sponsor Block category:
music offtopic: Gaiaz kanpoko musika
interaction: Elkarrekintza
@@ -922,7 +903,6 @@ Video:
recap: Laburpen
filler: Betegarria
intro: Sarrera
- Skipped segment: Saltatu egin da segmentua
Premieres on: Estreinaldiak
Hide Channel: Kanala ezkutatu
Unhide Channel: Kanala erakutsi
@@ -1063,10 +1043,6 @@ Tooltips:
aldaketarik egin ez bada).
Skip by Scrolling Over Video Player: Erabili korritze-gurpila bideoa saltatzeko,
MPV estiloa.
- Allow DASH AV1 formats: DASH AV1 formatuak DASH H.264 formatuak baino itxura hobea
- izan dezake. DASH AV1 formatuek potentzia gehiago behar dute erreproduzitzeko!
- Ez daude bideo guztietan eskuragarri, kasu horietan erreproduzitzaileak DASH
- H.264 formatuak erabiliko ditu ordez.
Subscription Settings:
Fetch Feeds from RSS: 'Posible denean, Freetube-k bere lehenetsitako metodoa erabili
beharrean RSS-ak baliatuko ditu zure harpidetzen jariora konektatzeko. RSS arinagoa
diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml
index 7051a8271ece0..9539aad8df1db 100644
--- a/static/locales/fa.yaml
+++ b/static/locales/fa.yaml
@@ -284,7 +284,6 @@ Settings:
Folder Label: پوشه اسکرین شات
Folder Button: پوشه را انتخاب کنید
Skip by Scrolling Over Video Player: با پیمایش روی پخشکننده ویدیو از آن بگذرید
- Allow DASH AV1 formats: فرمتهای DASH AV1 را مجاز کنید
External Player Settings:
External Player Settings: 'تنظیمات پخش کننده خارجی'
External Player: 'پخش کننده خارجی'
@@ -573,12 +572,10 @@ Video:
Ago: پیش
Upcoming: اولین نمایش در
In less than a minute: در کمتر از یک دقیقه
- translated from English: ترجمه شده از انگلیسی
Copy Invidious Link: لینک Invidious را کپی کنید
Play Previous Video: پخش ویدیوی قبلی
Autoplay: پخش خودکار
Started streaming on: پخش جریانی را شروع کرد
- Skipped segment: بخش رد شد
'Chat is disabled or the Live Stream has ended.': چت غیرفعال است یا پخش زنده به
پایان رسیده است.
Copy YouTube Channel Link: لینک کانال یوتیوب را کپی کنید
@@ -599,11 +596,6 @@ Video:
Live Now: زنده هم اکنون
Save Video: ذخیره ویدیو
Open in Invidious: در Invidious باز کنید
- Audio:
- Medium: متوسط
- Best: بهترین
- High: عالی
- Low: کم
Video has been removed from your saved list: ویدیو از لیست ذخیره شده شما حذف شده
است
Download Video: دانلود ویدیو
@@ -627,18 +619,6 @@ Video:
audio only: فقط صدا
Publicationtemplate: '{number} {unit} پیش'
Video has been saved: ویدیو ذخیره شده است
- Stats:
- Dropped / Total Frames: حذف شده / مجموع فریم ها
- Video ID: شناسه ویدیو
- Player Dimensions: ابعاد پخش کننده
- Bitrate: میزان بیت
- Volume: درجه صدا
- Bandwidth: پهنای باند
- Buffered: بافر شده
- Video statistics are not available for legacy videos: آمار ویدیویی برای ویدیوهای
- قدیمی موجود نیست
- Resolution: کیفیت
- Mimetype: نوع مایم
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': گفتگوی
زنده در حال حاضر با Invidious API پشتیبانی نمی شود. اتصال مستقیم به YouTube مورد
نیاز است.
@@ -679,10 +659,6 @@ Tooltips:
Player Settings:
Skip by Scrolling Over Video Player: از چرخ اسکرول برای رد شدن از ویدیو، سبک MPV
استفاده کنید.
- Allow DASH AV1 formats: فرمتهای DASH AV1 ممکن است بهتر از فرمتهای DASH H.264
- به نظر برسند. فرمت های DASH AV1 برای پخش به قدرت بیشتری نیاز دارند! آنها در
- همه ویدیوها در دسترس نیستند، در این موارد پخش کننده به جای آن از فرمت های DASH
- H.264 استفاده می کند.
Scroll Playback Rate Over Video Player: در حالی که مکان نما روی ویدیو است، کلید
کنترل (کلید فرمان در مک) را فشار داده و نگه دارید و چرخ ماوس را به جلو یا عقب
ببرید تا سرعت پخش را کنترل کنید. کلید کنترل (کلید فرمان در مک) را فشار داده
diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml
index 0ca3d7c52aa23..1df85d33bc9fe 100644
--- a/static/locales/fi.yaml
+++ b/static/locales/fi.yaml
@@ -361,7 +361,6 @@ Settings:
"\" tai "/" luodaksesi alikansioita.
Enter Fullscreen on Display Rotate: Siirry koko näytön tilaan näyttöä kiertäessä
Skip by Scrolling Over Video Player: Ohita vierittämällä videosoittimen yli
- Allow DASH AV1 formats: Salli DASH AV1 -formaatit
Subscription Settings:
Subscription Settings: 'Tilausasetukset'
Hide Videos on Watch: 'Piilota katsotut videot'
@@ -772,11 +771,6 @@ Video:
Loop Playlist: Kierrätä soittolistaa
Starting soon, please refresh the page to check again: Hetki pieni, päivitä sivu
uudelleen
- Audio:
- Best: Paras
- High: Korkea
- Medium: Keskitaso
- Low: Alhainen
audio only: vain ääni
video only: vain video
Download Video: Lataa video
@@ -810,31 +804,10 @@ Video:
sponsor: Sponsori
recap: Kertaus
filler: Täyte
- Skipped segment: Ylihypätty osio
- translated from English: käännetty englanninkielestä
Video has been removed from your saved list: Video poistettiin tallennettujen videoiden
luettelostasi
Video has been saved: Video on tallennettu
Save Video: Tallenna video
- Stats:
- video id: Videon tunniste (YouTube)
- player resolution: Näkymäikkuna
- bandwidth: Yhteyden nopeus
- buffered: Puskuroitu
- volume: Äänenvoimakkuus
- fps: Kuvanopeus
- out of: /
- Video ID: Videotunnus
- Bitrate: Tiedonsiirtonopeus
- Bandwidth: Kaistanleveys
- Mimetype: Internet-mediatyyppi
- Video statistics are not available for legacy videos: Vanhojen videoiden videotilastot
- eivät ole saatavilla
- Player Dimensions: Soittimen mitat
- Volume: Äänenvoimakkuus
- Buffered: Puskuroitu
- Resolution: Resoluutio
- Dropped / Total Frames: Pudotettu / Yhteensä
Premieres on: Julkaistaan
Premieres: Ensilähetykset
Show Super Chat Comment: Näytä Super Chat -kommentti
@@ -1033,10 +1006,6 @@ Tooltips:
painettuna ja paina hiiren vasenta näppäintä.
Skip by Scrolling Over Video Player: Käytä vieritysrullaa videon selaamiseen,
MPV-tyyliin.
- Allow DASH AV1 formats: DASH AV1 formaatit saattavat näyttää paremmalta kuin DASH
- 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.
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/fr-FR.yaml b/static/locales/fr-FR.yaml
index a4ff0595011a6..d99e5e71915e3 100644
--- a/static/locales/fr-FR.yaml
+++ b/static/locales/fr-FR.yaml
@@ -455,7 +455,6 @@ Settings:
Folder Label: Dossier de capture d'écran
Enter Fullscreen on Display Rotate: Entrer en plein écran sur l'affichage Rotation
Skip by Scrolling Over Video Player: Sauter en faisant défiler le lecteur vidéo
- Allow DASH AV1 formats: Autoriser les formats DASH AV1
Subscription Settings:
Subscription Settings: 'Paramètres des abonnements'
Hide Videos on Watch: 'Masquer les vidéos visionnées'
@@ -916,11 +915,6 @@ Video:
Loop Playlist: Liste de lecture en boucle
Starting soon, please refresh the page to check again: Débute prochainement, veuillez
actualiser la page pour vérifier à nouveau
- Audio:
- Best: Meilleure
- Medium: Normale
- Low: Basse
- High: Haute
audio only: audio uniquement
video only: vidéo uniquement
Download Video: Télécharger la vidéo
@@ -934,7 +928,6 @@ Video:
enregistrée
Video has been saved: La vidéo a été enregistrée
Save Video: Enregistrer la vidéo
- translated from English: traduit de l'anglais
Sponsor Block category:
music offtopic: Musique hors sujet
interaction: Interaction
@@ -944,7 +937,6 @@ Video:
intro: Intro
filler: Bouche-trou
recap: Récap
- Skipped segment: Segment ignoré
External Player:
playlist: liste de lecture
video: vidéo
@@ -961,26 +953,6 @@ Video:
UnsupportedActionTemplate: '{externalPlayer} non pris en charge : {action}'
OpeningTemplate: Ouverture de {videoOrPlaylist} en {externalPlayer}…
OpenInTemplate: Ouvrir avec {externalPlayer}
- Stats:
- video id: "Identifiant de la vidéo (YouTube)"
- player resolution: "Résolution du lecteur"
- volume: "Volume"
- fps: "IPS"
- frame drop: "Perte d'image"
- bandwidth: "Vitesse de connexion"
- buffered: "En tampon"
- out of: "sur"
- Player Dimensions: Dimensions du lecteur
- Bitrate: Débit binaire
- Volume: Volume
- Mimetype: Type de médias
- Video statistics are not available for legacy videos: Les statistiques vidéo ne
- sont pas disponibles pour les anciennes vidéos
- Resolution: Résolution
- Bandwidth: Bande passante
- Video ID: Identifiant vidéo
- Buffered: En mémoire tampon
- Dropped / Total Frames: Images perdues / Nombre total d'images
Premieres on: Avant-première le
Premieres in: Première dans
Premieres: Avant-première
@@ -1192,10 +1164,6 @@ Tooltips:
de lecture par défaut (1x, sauf si elle a été modifiée dans les paramètres).
Skip by Scrolling Over Video Player: Utilisez la molette de défilement pour passer
d'une vidéo à l'autre, en style MPV.
- Allow DASH AV1 formats: Les formats DASH AV1 peuvent être plus beaux que les formats
- DASH H.264. Les formats DASH AV1 nécessitent plus de puissance pour être lus !
- Ils ne sont pas disponibles sur toutes les vidéos, dans ce cas le lecteur utilisera
- les formats DASH H.264 à la place.
General Settings:
Invidious Instance: L'instance Invidious à laquelle FreeTube se connectera pour
les appels API.
diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml
index ec96a721382e1..fc84e88386cd0 100644
--- a/static/locales/gl.yaml
+++ b/static/locales/gl.yaml
@@ -288,7 +288,6 @@ Settings:
Max Video Playback Rate: Velocidade máxima da reprodución do vídeo
Enter Fullscreen on Display Rotate: Poñase a pantalla enteira o xirala pantalla
Skip by Scrolling Over Video Player: Saltar desprazándose polo reprodutor de vídeo
- Allow DASH AV1 formats: Permitilos formatos DASH AV1
Privacy Settings:
Privacy Settings: 'Axustes de privacidade'
Remember History: 'Lembrar histórico'
@@ -663,11 +662,6 @@ Video:
Download Video: 'Descargar vídeo'
video only: 'Só vídeo'
audio only: 'Só audio'
- Audio:
- Low: 'Baixa'
- Medium: 'Media'
- High: 'Alta'
- Best: 'Máxima'
Published:
Jan: 'Xan'
Feb: 'Feb'
@@ -727,23 +721,9 @@ Video:
sponsor: Patrocinador
recap: Recapitulación
filler: Recheo
- Skipped segment: Segmento omitido
- translated from English: traducido do inglés
Video has been removed from your saved list: Eliminouse este vídeo da lista de gardados
Video has been saved: Gardouse o vídeo
Save Video: Gardar vídeo
- Stats:
- Player Dimensions: Dimensións do reproductor
- Video ID: Identificador do video
- Buffered: No bufer
- Mimetype: Tipo de medio
- Video statistics are not available for legacy videos: As estadísticas dos vídeo
- non se atopan dispoñibles para os vídeos antigos
- Bitrate: Taxa dos bits
- Volume: Volume
- Resolution: Resolución
- Bandwidth: Ancho da banda
- Dropped / Total Frames: Fotogramas Perdidos / Fotogramas Totales
Premieres on: Estrease o
Premieres: Estreos
Show Super Chat Comment: Mostralos comentarios do Super Chat
@@ -865,10 +845,6 @@ Tooltips:
que o modificase na configuración).
Skip by Scrolling Over Video Player: Usala roda de desprazamento para saltalo
vídeo, estilo MPV.
- Allow DASH AV1 formats: Os formatos DASH AV1 poden parecer mellor que os formatos
- DASH H.264. Os formatos DASH AV1 requiren máis potencia para reproducir. Non
- están dispoñibles en todolos vídeos, neses casos o reprodutor utilizará os formatos
- DASH H.264.
Subscription Settings:
Fetch Feeds from RSS: 'Cando está activado, FreeTube usará RSS no canto do método
predeterminao para obter as subscricións. RSS é máis rápido e impide o bloqueo
diff --git a/static/locales/he.yaml b/static/locales/he.yaml
index fe90a01a3310e..985a9f82acf2e 100644
--- a/static/locales/he.yaml
+++ b/static/locales/he.yaml
@@ -341,7 +341,6 @@ Settings:
ב־3 ספרות. %i מזהה הסרטון. אפשר להשתמש גם ב־„/” או ב־„\” כדי ליצור תת־תיקיות.
Enter Fullscreen on Display Rotate: מעבר למסך מלא עם סיבוב התצוגה
Skip by Scrolling Over Video Player: אפשר לדלג על ידי גלילה על נגן הווידאו
- Allow DASH AV1 formats: לאפשר תצורות DASH AV1
Privacy Settings:
Privacy Settings: 'הגדרות פרטיות'
Remember History: 'לזכור את היסטוריית הצפייה'
@@ -773,11 +772,6 @@ Video:
Published on: 'פורסם'
Publicationtemplate: 'לפני {number} {unit}'
#& Videos
- Audio:
- Best: איכות הכי טובה
- High: איכות גבוהה
- Medium: איכות בינונית
- Low: איכות נמוכה
audio only: שמע בלבד
video only: סרטון בלבד
Download Video: להוריד סרטון
@@ -790,7 +784,6 @@ Video:
Video has been removed from your saved list: הסרטון הוסר מרשימת השמורים שלך
Video has been saved: סרטון נשמר
Save Video: שמירת סרטון
- translated from English: תורגם מאנגלית
Premieres on: שידור הבכורה ב־
Sponsor Block category:
outro: סיום
@@ -816,26 +809,6 @@ Video:
looping playlists: לולאה על רשימות נגינה
opening specific video in a playlist (falling back to opening the video): פתיחת
סרטון מסוים ברשימת נגינה (ייסוג לפתיחת הסרטון)
- Skipped segment: קטע שדילגת עליו
- Stats:
- video id: מזהה סרטון (YouTube)
- bandwidth: מהירות החיבור
- out of: מתוך
- volume: עוצמת שמע
- buffered: בזיכרון
- frame drop: השמטת תמוניות
- fps: תמוניות לשנייה
- Video statistics are not available for legacy videos: סטטיסטיקת וידאו אינה זמינה
- לסרטונים ישנים
- Video ID: מזהה וידאו
- Resolution: רזולוציה
- Player Dimensions: ממדי נגן
- Bitrate: קצב סיביות
- Volume: עצמת שמע
- Bandwidth: רוחב פס
- Buffered: שמור בזיכרון
- Dropped / Total Frames: תמוניות שהושמטו / סה״כ
- Mimetype: טיפוס MIME
Premieres in: בכורה בעוד
Premieres: בכורות
Scroll to Bottom: גלילה לתחתית
@@ -969,9 +942,6 @@ Tooltips:
בהגדרות).
Skip by Scrolling Over Video Player: ניתן להשתמש בגלגלת כדי לדלג בתוך הסרטון,
כמו ב־MPV.
- Allow DASH AV1 formats: תסדירי DASH AV1 עשויים להיראות טוב יותר מתסדירי DASH H.264.
- תסדירי DASH AV1 דורשים יותר חשמל כדי לנגן! הם אינם זמינים בכל הסרטונים, במקרים
- האלה הנגן ישתמש בתסדירי DASH H.264 במקום.
Subscription Settings:
Fetch Feeds from RSS: כאשר אפשרות זו פעילה. FreeTube ישתמש ב־RSS במקום בשיטת ברירת
המחדל לאיסוף הזנת המינויים שלך. RSS היא שיטה מהירה יותר ומונעת חסימת IP אבל
diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml
index 1ef894fca07cf..645dc095588b1 100644
--- a/static/locales/hr.yaml
+++ b/static/locales/hr.yaml
@@ -429,7 +429,6 @@ Settings:
Enter Fullscreen on Display Rotate: Koristi cjeloekranski prikaz pri okretanju
ekrana
Skip by Scrolling Over Video Player: Preskoči pomicanjem preko video playera
- Allow DASH AV1 formats: Dozvoli DASH AV1 formate
Privacy Settings:
Privacy Settings: 'Postavke privatnosti'
Remember History: 'Zapamti povijest'
@@ -915,11 +914,6 @@ Video:
Loop Playlist: Ponavljaj zbirku
Starting soon, please refresh the page to check again: Uskoro počinje. Aktualiziraj
stranicu za ponovnu provjeru
- Audio:
- Best: Najbolja
- High: Visoka
- Medium: Srednja
- Low: Niska
audio only: samo audiosnimku
video only: samo video
Download Video: Preuzmi video
@@ -933,7 +927,6 @@ Video:
spremljenih
Video has been saved: Video je spremljen
Save Video: Spremi video
- translated from English: prevedeno iz engleskog
Sponsor Block category:
music offtopic: Druga vrsta glazbe
interaction: Interakcija
@@ -943,7 +936,6 @@ Video:
sponsor: Sponzor
recap: Rekapitulacija
filler: Dodatni materijal
- Skipped segment: Preskočeni segment
External Player:
Unsupported Actions:
starting video at offset: pokretanje videa pri odmaku
@@ -960,26 +952,6 @@ Video:
video: video
OpenInTemplate: Otvori u {externalPlayer}
Premieres on: Premijera
- Stats:
- fps: Kadrova u sekundi
- player resolution: Rezolucija prikaza
- video id: Video ID (YouTube)
- volume: Glasnoća
- frame drop: Ispuštanje kadrova
- bandwidth: Brzina veze
- buffered: Učitano u memoriju
- out of: od
- Video statistics are not available for legacy videos: Statistika videa nije dostupna
- za stara videa
- Video ID: Video ID
- Resolution: Razlučivost
- Player Dimensions: Dimenzije playera
- Bitrate: Brzina prijenosa
- Volume: Direktorij
- Bandwidth: Propusnost
- Buffered: Učitano u memoriju
- Mimetype: Mimetype
- Dropped / Total Frames: Ispušteni/ukupni kadrovi
Premieres in: Premijera u
Premieres: Premijere
Show Super Chat Comment: Prikaži Super Chat komentar
@@ -1121,10 +1093,6 @@ Tooltips:
brzinu reprodukcije (jednostruka brzina, ukoliko nije promijenjena u postavkama).
Skip by Scrolling Over Video Player: Koristi kotačić za pregledavanje videa, MPV
stil.
- Allow DASH AV1 formats: DASH AV1 formati mogu izgledati bolje od DASH H.264 formata.
- DASH AV1 formati zahtijevaju više kapaciteta za reprodukciju! Nisu dostupni
- pri svim videima. U tim će slučajevima player umjesto njih koristiti DASH H.264
- formate.
General Settings:
Invidious Instance: Invidious primjerak na koji će se FreeTube povezati za pozive
API-a.
diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml
index 9a11b286caa9f..364d04881b419 100644
--- a/static/locales/hu.yaml
+++ b/static/locales/hu.yaml
@@ -449,7 +449,6 @@ Settings:
Video Playback Rate Interval: Videó lejátszási sebesség léptetési köze
Enter Fullscreen on Display Rotate: Teljes képernyős mód a kijelzőn forgatáshoz
Skip by Scrolling Over Video Player: Kihagyás a Videolejátszó felett görgetve
- Allow DASH AV1 formats: DASH AV1 formátumok engedélyezése
Privacy Settings:
Privacy Settings: 'Adatvédelmi beállítások'
Remember History: 'Előzmények megjegyzése'
@@ -933,11 +932,6 @@ Video:
Published on: 'Megjelent'
Publicationtemplate: '{number} {unit} ezelőtt'
#& Videos
- Audio:
- Best: Legjobb
- High: Magas
- Medium: Közepes
- Low: Alacsony
audio only: csak hang
video only: csak videó
Download Video: Videó letöltése
@@ -950,7 +944,6 @@ Video:
Video has been removed from your saved list: A videót eltávolítottuk a mentett listáról
Video has been saved: A videó mentve
Save Video: Videó mentése
- translated from English: angolról fordítva
Sponsor Block category:
music offtopic: Témán kívüli zene
interaction: Interakció
@@ -960,7 +953,6 @@ Video:
sponsor: Szponzor
filler: Kitöltő
recap: Összegzés
- Skipped segment: Kihagyott szegmens
External Player:
Unsupported Actions:
looping playlists: lejátszási lista folyamatos lejátszása
@@ -979,18 +971,6 @@ Video:
video: videó
OpenInTemplate: 'Megnyitás itt: {externalPlayer}'
Premieres on: 'Bemutató dátuma'
- Stats:
- Player Dimensions: Lejátszási méretek
- Video ID: Videóazonosító
- Video statistics are not available for legacy videos: Az örökölt videókhoz videóstatisztika
- nem érhető el
- Resolution: Felbontás
- Mimetype: MIME-típus
- Volume: Hangerő
- Bandwidth: Sávszélesség
- Buffered: Pufferelt
- Dropped / Total Frames: Eldobott/Összes képkocka
- Bitrate: Átviteli sebesség
Premieres: Első előadások
Show Super Chat Comment: Haladó csevegési hozzászólás megjelenítése
Scroll to Bottom: Görgetés legalulra
@@ -1158,10 +1138,6 @@ Tooltips:
(1x, hacsak nem módosították a beállításokban).
Skip by Scrolling Over Video Player: MPV módban a görgetőkerék használatával kihagyhatja
a videót.
- Allow DASH AV1 formats: A DASH AV1 formátumok jobban nézhetnek ki, mint a DASH
- 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.
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
diff --git a/static/locales/id.yaml b/static/locales/id.yaml
index db26d1d1a1a8c..9564474a02421 100644
--- a/static/locales/id.yaml
+++ b/static/locales/id.yaml
@@ -328,7 +328,6 @@ Settings:
Ask Path: Tanya Lokasi Penyimpanan
Quality Label: Kualitas Tangkapan Layar
File Name Label: Pola Nama Berkas
- Allow DASH AV1 formats: Izinkan format DASH AV1
Enter Fullscreen on Display Rotate: Masuk ke Layar Penuh ketika Perangkat Diputar
Skip by Scrolling Over Video Player: Lewati dengan Menggulir Di Atas Pemutar Video
Privacy Settings:
@@ -770,11 +769,6 @@ Video:
Published on: 'Dipublikasi pada'
Publicationtemplate: '{number} {unit} yang lalu'
#& Videos
- Audio:
- Best: Terbaik
- High: Tinggi
- Medium: Sedang
- Low: Rendah
audio only: hanya audio
video only: hanya video
Download Video: Unduh Video
@@ -790,7 +784,6 @@ Video:
Anda
Video has been saved: Video telah disimpan
Save Video: Simpan Video
- translated from English: diterjemahkan dari Bahasa Inggris
Sponsor Block category:
interaction: Interaksi
music offtopic: Musik Non-Topik
@@ -798,7 +791,6 @@ Video:
outro: Outro
intro: Intro
sponsor: Sponsor
- Skipped segment: Segmen yang dilewati
External Player:
Unsupported Actions:
starting video at offset: memulai video pada offset
@@ -816,24 +808,6 @@ Video:
video: video
OpenInTemplate: Buka di {externalPlayer}
Premieres on: Pemutaran Perdana pada
- Stats:
- bandwidth: Kecepatan Koneksi
- volume: Volume
- fps: FPS
- video id: ID Video (YouTube)
- frame drop: Frame Drop
- buffered: Buffered
- player resolution: Area pandang
- out of: keluar dari
- Bandwidth: Bandwidth
- Video statistics are not available for legacy videos: Statistik video tidak tersedia
- untuk video dengan format lawas
- Video ID: ID Video
- Resolution: Resolusi
- Volume: Volume
- Mimetype: Tipe Mime
- Player Dimensions: Ukuran Pemutar
- Bitrate: Laju Bit
Hide Channel: Sembunyikan Kanal
Upcoming: Akan Datang
Videos:
diff --git a/static/locales/is.yaml b/static/locales/is.yaml
index 633a6592f5864..52d7bf814c3d6 100644
--- a/static/locales/is.yaml
+++ b/static/locales/is.yaml
@@ -445,7 +445,6 @@ Settings:
File Name Label: Mynstur skráaheita
Enter Fullscreen on Display Rotate: Fara í skjáfylli við snúning á skjá
Skip by Scrolling Over Video Player: Sleppa með því að skruna ofan á myndspilara
- Allow DASH AV1 formats: Leyfa DASH AV1 snið
Privacy Settings:
Privacy Settings: 'Stillingar gagnaleyndar'
Remember History: 'Muna áhorfsferil'
@@ -847,11 +846,6 @@ Video:
Download Video: 'Sækja myndskeið'
video only: 'einungis myndmerki'
audio only: 'einungis hljóð'
- Audio:
- Low: 'Lág'
- Medium: 'Miðlungs'
- High: 'Há'
- Best: 'Besta'
Published:
Jan: 'Jan'
Feb: 'Feb'
@@ -888,7 +882,6 @@ Video:
Started streaming on: 'Byrjaði streymi'
Publicationtemplate: 'Fyrir {number} {unit} síðan'
#& Videos
- translated from English: þýtt úr ensku
Sponsor Block category:
music offtopic: Tónlist óskyld efni
interaction: Gagnvirkni
@@ -898,7 +891,6 @@ Video:
outro: Afkynning
recap: Upprifjun
filler: Uppfylling
- Skipped segment: Búti sleppt
External Player:
Unsupported Actions:
looping playlists: endurtaka spilunarlista
@@ -915,26 +907,6 @@ Video:
video: myndskeið
OpenInTemplate: Opna í {externalPlayer}
Premieres on: Frumsýnt
- Stats:
- player resolution: Myndgluggi
- fps: r/sek
- bandwidth: Hraði tengingar
- buffered: Í biðminni
- out of: af
- frame drop: Rammatap
- video id: Auðkenni myndskeiðs (YouTube)
- volume: Hljóðstyrkur
- Video ID: Auðkenni myndmerkis
- Resolution: Upplausn
- Player Dimensions: Stærðir spilara
- Bandwidth: Bandbreidd
- Buffered: Biðminni
- Dropped / Total Frames: Sleppt / Fjöldi ramma
- Mimetype: MIME-tegund
- Video statistics are not available for legacy videos: Tölfræði myndskeiða er ekki
- í boði fyrir eldri gerðir myndskeiða
- Bitrate: Bitahraði
- Volume: Hljóðstyrkur
Premieres in: Frumsýnt eftir
Premieres: Frumsýnt
Show Super Chat Comment: Birta athugasemd Super Chat
@@ -1071,9 +1043,6 @@ Tooltips:
breytt í stillingunum).
Skip by Scrolling Over Video Player: Nota skrunhjólið til að fletta í gegnum myndskeið,
svipað og í MPV.
- Allow DASH AV1 formats: DASH AV1 snið geta litið betur út en DASH H.264 snið.
- DASH AV1 snið krefjast hins vegar meira afls í afspilun! Það er ekki til taks
- í öllum myndskeiðum, þá mun spilarinn nota DASH H.264 snið í staðinn.
Subscription Settings:
Fetch Feeds from RSS: 'Þegar þetta er virkt, mun FreeTube nota RSS í stað sjálfgefinnar
aðferðar við að safna streymi áskriftarinnar þinnar. RSS er hraðvirkara og kemur
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 7e6cdd650b1ac..487338b298cbc 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -439,7 +439,6 @@ Settings:
del video 3 cifre. %i ID video. Puoi anche usare \ o / per creare sottocartelle.
Enter Fullscreen on Display Rotate: Entra a schermo intero su Ruota schermo
Skip by Scrolling Over Video Player: Salta tramite scorrimento sul lettore video
- Allow DASH AV1 formats: Consenti formati DASH AV1
Privacy Settings:
Privacy Settings: 'Impostazioni della privacy'
Remember History: 'Salva la cronologia'
@@ -885,11 +884,6 @@ Video:
Autoplay: Riproduzione automatica
Starting soon, please refresh the page to check again: La riproduzione partirà tra
breve, aggiorna la pagina per ricontrollare
- Audio:
- Best: Migliore
- High: Alto
- Medium: Medio
- Low: Basso
audio only: solo audio
video only: solo video
Download Video: Download video
@@ -927,29 +921,7 @@ Video:
sponsor: Sponsor
recap: Ricapitolazione
filler: Riempitivo
- Skipped segment: Segmento saltato
- translated from English: tradotto dall'inglese
Premieres on: Première il
- Stats:
- volume: Volume
- fps: FPS
- frame drop: Perdita di immagine
- buffered: Bufferizzato
- bandwidth: Velocità di connessione
- out of: per
- video id: ID video (YouTube)
- player resolution: Finestra di visualizzazione
- Video statistics are not available for legacy videos: Le statistiche sui video
- non sono disponibili per i video obsoleti
- Video ID: ID video
- Resolution: Risoluzione
- Player Dimensions: Dimensioni del lettore
- Bitrate: Velocità di trasmissione
- Volume: Volume
- Bandwidth: Larghezza di banda
- Buffered: Memoria buffer
- Dropped / Total Frames: Frame persi / Frame totali
- Mimetype: Tipo di media
Premieres in: Anteprima in
Premieres: Première
Scroll to Bottom: Scorri fino in fondo
@@ -1147,10 +1119,6 @@ Tooltips:
nelle Impostazioni).
Skip by Scrolling Over Video Player: Usa la rotella di scorrimento per saltare
il video, in stile MPV.
- Allow DASH AV1 formats: I formati DASH AV1 possono avere un aspetto migliore dei
- formati DASH H.264. I formati DASH AV1 richiedono più potenza per la riproduzione!
- Non sono disponibili su tutti i video, in questo caso il lettore userà invece
- i formati DASH H.264.
Subscription Settings:
Fetch Feeds from RSS: Se abilitato, FreeTube userà gli RSS invece del metodo standard
per leggere le iscrizioni. Gli RSS sono più veloci e impediscono il blocco dell'IP,
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index fbb6bc4cb3bf7..c677cd16ab59b 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -165,7 +165,7 @@ User Playlists:
Playlist name cannot be empty. Please input a name.: 再生リストの名前は空白にできません。名前を入力してください.
Reverted to use {oldPlaylistName} for quick bookmark: クイックブックマークを {oldPlaylistName}
に戻しました
- "{videoCount} video(s) have been removed": 1 本の動画を削除しました | {video Count} 本の動画を削除しました
+ "{videoCount} video(s) have been removed": 1 本の動画を削除しました | {videoCount} 本の動画を削除しました
Playlist {playlistName} has been deleted.: 再生リスト {playlistName} が削除されました。
There were no videos to remove.: 削除する動画はありません。
This playlist does not exist: この再生リストは存在しません
@@ -395,7 +395,6 @@ Settings:
Folder Button: フォルダの選択
Enter Fullscreen on Display Rotate: 画面の回転時に全画面表示にする
Skip by Scrolling Over Video Player: 動画プレーヤーをスクロールして動画をスキップ
- Allow DASH AV1 formats: DASH AV1形式を許可
Subscription Settings:
Subscription Settings: '登録チャンネルの設定'
Hide Videos on Watch: '視聴済みの動画を非表示にする'
@@ -784,11 +783,6 @@ Video:
Shuffle Playlist: 再生リストをシャッフル
Loop Playlist: 再生リストのループ
Starting soon, please refresh the page to check again: すぐに再生されます、ページを再読み込みしてお待ちください
- Audio:
- Best: 最適
- High: 高
- Medium: 中
- Low: 低
audio only: '音声のみ'
video only: '映像のみ'
Download Video: '動画のダウンロード'
@@ -801,7 +795,6 @@ Video:
Video has been removed from your saved list: 動画を保存一覧から削除しました
Video has been saved: 動画を保存しました
Save Video: 動画の保存
- translated from English: 英語から翻訳
Sponsor Block category:
sponsor: スポンサー
music offtopic: 音楽以外
@@ -811,7 +804,6 @@ Video:
intro: イントロ(冒頭)
recap: 要約
filler: フィラー(穴埋め)
- Skipped segment: スキップされたセグメント
External Player:
OpeningTemplate: '{externalPlayer} で {videoOrPlaylist} を開く...'
Unsupported Actions:
@@ -828,25 +820,6 @@ Video:
video: 動画
OpenInTemplate: '{externalPlayer} で開く'
Premieres on: プレミア公開日時
- Stats:
- player resolution: 表示領域
- fps: FPS
- frame drop: コマ落ち
- buffered: バッファー
- video id: Video ID (YouTube)
- volume: 音量
- bandwidth: 接続速度
- out of: のうち
- Mimetype: メディアタイプ
- Video ID: ビデオ ID
- Resolution: 解像度
- Bitrate: ビットレート
- Volume: 音量
- Buffered: バッファー
- Player Dimensions: プレーヤーのサイズ
- Video statistics are not available for legacy videos: 従来のビデオでは、ビデオ統計を使用できません
- Bandwidth: 帯域幅
- Dropped / Total Frames: ドロップ率 / 総フレーム数
Premieres in: 配信開始まで
Premieres: プレミア公開
Show Super Chat Comment: Super Chat のコメント表示
@@ -1019,8 +992,6 @@ Tooltips:
Scroll Playback Rate Over Video Player: カーソルが動画上にあるとき、Ctrl キー(Mac では Command キー)を押したまま、マウスホイールを前後にスクロールして再生速度を調整します。Control
キー(Mac では Command キー)を押したままマウスを左クリックすると、すぐにデフォルトの再生速度(設定を変更していない場合は 1 x)に戻ります。
Skip by Scrolling Over Video Player: MPVスタイルでスクロールホイールを使って動画をスキップします。
- Allow DASH AV1 formats: DASH H.264形式よりもDASH AV1形式の方がきれいに見える可能性がありますが、再生にはより多くの処理能力が必要となります。DASH
- AV1形式を使用できない場合、プレイヤーはDASH H.264形式を自動で使用します。
General Settings:
Invidious Instance: FreeTube が API 呼び出しのために接続する Invidious のインスタンスです。
Preferred API Backend: FreeTube がデータを取得するために使用する方法を選択してください。内部 API はアプリ内蔵の取得機能です。
diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml
index 8dc11675164c4..0f38e5aa3e4b9 100644
--- a/static/locales/ko.yaml
+++ b/static/locales/ko.yaml
@@ -269,7 +269,6 @@ Settings:
File Name Tooltip: 아래 변수를 사용할 수 있습니다. %Y 년 4자리. %M 월 2자리. %D 일 2자리. %H 시간 2자리.
%N 분 2자리. %S 초 2자리. %T 밀리초 3자리. %s 비디오초. %t 비디오 밀리초 3자리. %i 비디오 ID. "\" 또는
"/" 를 사용하여 하위 폴더를 만들 수도 있습니다.
- Allow DASH AV1 formats: DASH AV1 포맷 허용
Skip by Scrolling Over Video Player: 비디오 플레이어를 스크롤하여 건너뛰기
Enter Fullscreen on Display Rotate: 화면 회전 시 전체화면 활성화하기
Privacy Settings:
@@ -551,11 +550,6 @@ Video:
Download Video: '동영상 다운로드'
video only: '비디오만'
audio only: '오디오만'
- Audio:
- Low: '낮음'
- Medium: '중간'
- High: '높음'
- Best: '최고'
Published:
Jan: '1월'
Feb: '2월'
@@ -594,18 +588,6 @@ Video:
Video has been saved: 동영상이 저장되었습니다
Video has been removed from your saved list: 저장된 목록에서 동영상이 제거되었습니다
Save Video: 비디오 저장
- Stats:
- Mimetype: 미디어 타입
- Video statistics are not available for legacy videos: 레거시 비디오에 대한 비디오 통계를 사용할
- 수 없습니다
- Player Dimensions: 플레이어 치수
- Bandwidth: 대역폭
- Video ID: 비디오 ID
- Resolution: 해상도
- Bitrate: 비트 전송률
- Volume: 음량
- Buffered: 버퍼링된
- Dropped / Total Frames: 손실된 / 총 프레임 수
Premieres on: 개봉일
External Player:
Unsupported Actions:
@@ -631,8 +613,6 @@ Video:
outro: 결말부
self-promotion: 자기 홍보
interaction: 상호 작용
- translated from English: 영어에서 번역됨
- Skipped segment: 건너뛴 세그먼트
Premieres: 프리미어
Upcoming: 공개 예정
Show Super Chat Comment: 슈퍼채팅 댓글 보이기
@@ -732,8 +712,6 @@ Tooltips:
Scroll Playback Rate Over Video Player: 커서가 비디오 위에 있는 동안 Control 키( Mac의 경우 Command
키)를 길게 누르고 마우스 휠을 앞뒤로 스크롤하여 재생 속도를 제어합니다. Control 키 (Mac의 경우 Command 키)를 길게
누르고 마우스 왼쪽 버튼을 클릭하여 기본 재생 속도(설정에서 변경되지 않은 경우 1배)로 빠르게 돌아갑니다.
- Allow DASH AV1 formats: DASH AV1 포맷은 DASH H.264 포맷보다 화질이 좋을 수 있으나, 영상 재생을 위해 더
- 높은 성능을 요구합니다. 모든 영상에서 사용 가능한 것은 아니며, 사용이 불가능할 경우 DASH H.264 포맷을 사용합니다.
Skip by Scrolling Over Video Player: MPV 방식으로 마우스 스크롤을 이용해 영상을 스킵합니다.
Subscription Settings:
Fetch Feeds from RSS: '활성화되면 FreeTube는 구독 피드를 가져오는 기본 방법 대신 RSS를 사용합니다. RSS는 더
diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml
index dfed670b6e4ca..3722847d1bcda 100644
--- a/static/locales/lt.yaml
+++ b/static/locales/lt.yaml
@@ -294,7 +294,6 @@ Settings:
Max Video Playback Rate: Maksimalus vaizdo įrašų atkūrimo dažnis
Enter Fullscreen on Display Rotate: Viso ekrano režimas pasukus ekraną
Skip by Scrolling Over Video Player: Praleiskite slinkdami per vaizdo grotuvą
- Allow DASH AV1 formats: Leisti DASH AV1 formatus
External Player Settings:
External Player Settings: 'Išorinio grotuvo nustatymai'
External Player: 'Išorinis grotuvas'
@@ -606,11 +605,6 @@ Video:
Download Video: 'Atsisiųsti vaizdo įrašą'
video only: 'tik video'
audio only: 'tik audio'
- Audio:
- Low: 'Žemiausia'
- Medium: 'Vidutinė'
- High: 'Aukščiausia'
- Best: 'Pati geriausia'
Published:
Jan: 'Sau'
Feb: 'Vas'
@@ -644,9 +638,7 @@ Video:
Published on: 'Publikuota'
Streamed on: 'Transliuota'
Started streaming on: 'Transliaciją pradėjo'
- translated from English: 'išversta iš anglų kalbos'
Publicationtemplate: 'prieš {number} {unit}'
- Skipped segment: 'Praleistas segmentas'
Sponsor Block category:
sponsor: 'Rėmėjas'
intro: 'Įžanga'
@@ -673,26 +665,6 @@ Video:
looping playlists: 'ciklu sukami grojaraščiai'
#& Videos
Premieres on: Premjera
- Stats:
- video id: Vaizdo įrašo ID (YouTube)
- player resolution: Peržiūros sritis
- fps: Kadrai per sekundę (FPS)
- frame drop: Praleisti kadrai
- bandwidth: Ryšio greitis
- buffered: Užkrauta atmintyje
- volume: Garsas
- out of: iš
- Video ID: Vaizdo įrašo ID
- Resolution: Rezoliucija
- Bitrate: Bitų sparta
- Bandwidth: Pralaidumas
- Volume: Apimtis
- Player Dimensions: Grotuvo matmenys
- Video statistics are not available for legacy videos: Vaizdo įrašų statistika
- nepateikiama seniems vaizdo įrašams
- Dropped / Total Frames: Pamesti / Iš viso kadrų
- Mimetype: Mimetipas
- Buffered: Buferizuota
Premieres: Premjera
Videos:
#& Sort By
diff --git a/static/locales/lv.yaml b/static/locales/lv.yaml
index 7c5857e0154a5..22254e18bfc88 100644
--- a/static/locales/lv.yaml
+++ b/static/locales/lv.yaml
@@ -279,7 +279,6 @@ Settings:
1440p: '1440p'
4k: '4k'
8k: '8k'
- Allow DASH AV1 formats: 'Atļaut DASH AV1 formātus'
Screenshot:
Enable: 'Iespējot ekrānšāviņu'
Format Label: 'Ekrānšāviņa formāti'
@@ -627,11 +626,6 @@ Video:
Download Video: ''
video only: ''
audio only: ''
- Audio:
- Low: ''
- Medium: ''
- High: ''
- Best: ''
Published:
Jan: ''
Feb: ''
@@ -665,9 +659,7 @@ Video:
Published on: ''
Streamed on: ''
Started streaming on: ''
- translated from English: ''
Publicationtemplate: ''
- Skipped segment: ''
Sponsor Block category:
sponsor: ''
intro: ''
@@ -691,17 +683,6 @@ Video:
reversing playlists: ''
shuffling playlists: ''
looping playlists: ''
- Stats:
- Video statistics are not available for legacy videos: ''
- Video ID: ''
- Resolution: ''
- Player Dimensions: ''
- Bitrate: ''
- Volume: ''
- Bandwidth: ''
- Buffered: ''
- Dropped / Total Frames: ''
- Mimetype: ''
#& Videos
Videos:
#& Sort By
@@ -797,7 +778,6 @@ Tooltips:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
- Allow DASH AV1 formats: ''
Scroll Playback Rate Over Video Player: ''
Skip by Scrolling Over Video Player: ''
External Player Settings:
diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml
index e57f9bc17c96f..2fe61c785d2da 100644
--- a/static/locales/nb_NO.yaml
+++ b/static/locales/nb_NO.yaml
@@ -276,7 +276,6 @@ Settings:
Video Playback Rate Interval: Intervall for videoavspillingshastighet
Enter Fullscreen on Display Rotate: Fullskjermsvisning når skjermen roteres
Skip by Scrolling Over Video Player: Hopp over ved å rulle over videoavspiller
- Allow DASH AV1 formats: Tillat DASH AV1-formater
Privacy Settings:
Privacy Settings: 'Personvernsinnstillinger'
Remember History: 'Husk historikk'
@@ -626,11 +625,6 @@ Video:
Published on: 'Publisert'
Publicationtemplate: '{number} {unit} siden'
#& Videos
- Audio:
- High: Høy
- Medium: Middels
- Low: Lav
- Best: Beste
audio only: Bare lyd
video only: Bare video
Download Video: Last ned video
@@ -652,7 +646,6 @@ Video:
Open Channel in YouTube: Åpne kanal i YouTube
Play Previous Video: Spill av forrige video
Play Next Video: Spill av neste video
- translated from English: oversatt fra engelsk
Sponsor Block category:
interaction: samhandling
outro: utgang
@@ -662,7 +655,6 @@ Video:
self-promotion: egenpromotering
recap: Oppsummering
filler: Fyllstoff
- Skipped segment: Overhoppet del
External Player:
Unsupported Actions:
shuffling playlists: omstokking av spillelister
@@ -678,18 +670,6 @@ Video:
playlist: spilleliste
video: video
OpenInTemplate: Åpne i {externalPlayer}
- Stats:
- Bitrate: Bitrate
- Volume: Lydstyrke
- Bandwidth: Båndbredde
- Resolution: Oppløsning
- Player Dimensions: Avspillerdimensjoner
- Mimetype: Media-type
- Buffered: Mellomlagret
- Video ID: Video-ID
- Video statistics are not available for legacy videos: Videostatistikk er ikke
- tilgjengelig for gammeldagse videoer
- Dropped / Total Frames: Tapte/totalt antall rammer
Show Super Chat Comment: Vis supersludringskommentar
Scroll to Bottom: Rull til bunnen
Premieres on: Har première
@@ -879,9 +859,6 @@ Tooltips:
å kontrollere avspillingshastigheten. Trykk og hold Ctrl-tasten (⌘ på Mac) og
venstreklikk på musen for å gå tilbake til fovalgt avspillingshastighet (1x
med minde det har blitt endret i innstillingene).
- 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.
External Player Settings:
Custom External Player Arguments: Alle egendefinerte kommandolinjeargumenter,
semikoloninndelt («;») du ønsker å sende til den eksterne avspilleren.
diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml
index 2b312f40b9026..39cf61a532eb5 100644
--- a/static/locales/nl.yaml
+++ b/static/locales/nl.yaml
@@ -435,7 +435,6 @@ Settings:
video; %i ID van de video. U kunt ook "\" of "/" gebruiken om deelmappen aan
te maken.'
Skip by Scrolling Over Video Player: Overslaan door over de videospeler te scrollen
- Allow DASH AV1 formats: DASH-AV1-bestandstypes toestaan
Enter Fullscreen on Display Rotate: Volledig scherm bij draaien van scherm
Privacy Settings:
Privacy Settings: 'Privacy-instellingen'
@@ -874,11 +873,6 @@ Video:
Loop Playlist: Playlist herhalen
Starting soon, please refresh the page to check again: Start binnenkort, vernieuw
de pagina om opnieuw te controleren
- Audio:
- Best: Beste
- High: Hoog
- Medium: Gemiddeld
- Low: Laag
audio only: alleen audio
video only: alleen video
Download Video: Video downloaden
@@ -892,7 +886,6 @@ Video:
opgeslagen video's
Video has been saved: Video is opgeslagen
Save Video: Video opslaan
- translated from English: vertaald uit het Engels
Sponsor Block category:
music offtopic: Niet-muziek
interaction: Interactie
@@ -902,7 +895,6 @@ Video:
sponsor: Sponsor
recap: Samenvatting
filler: Opvulling
- Skipped segment: Segment overgeslagen
External Player:
Unsupported Actions:
shuffling playlists: afspeellijsten shufflen
@@ -918,26 +910,6 @@ Video:
playlist: afspeellijst
video: video
OpenInTemplate: Openen in {externalPlayer}
- Stats:
- player resolution: Venster
- volume: Volume
- video id: Video-ID (YouTube)
- fps: FPS
- frame drop: Frame verlies
- bandwidth: Verbindingssnelheid
- buffered: Gebufferd
- out of: van de
- Buffered: Gebufferd
- Dropped / Total Frames: Frames verloren/totaal
- Mimetype: MIME-type
- Video statistics are not available for legacy videos: Videogegevens zijn niet
- beschikbaar voor oudere video's
- Video ID: Video-ID
- Resolution: Resolutie
- Bandwidth: Bandbreedte
- Bitrate: Bitrate
- Volume: Volume
- Player Dimensions: Spelerafmetingen
Premieres on: Gaat in première op
Premieres: Premières
Scroll to Bottom: Helemaal naar onderen scrollen
@@ -1132,10 +1104,6 @@ Tooltips:
om de afspeelsnelheid te besturen. Houd de Control-toets (Command-toets op Mac)
ingedrukt en klik met de linker muisknop om snel terug te schakelen naar de
standaard afspeelsnelheid (1x tenzij aangepast in de instellingen).
- Allow DASH AV1 formats: Video's in DASH AV1-formaat kunnen er beter uitzien dan
- die in DASH H.264-formaat. DASH AV1 verbruikt op oudere apparaten meer energie!
- Dit formaat is niet beschikbaar voor alle video's, in welk geval het DASH H.264-formaat
- wordt gebruikt.
Skip by Scrolling Over Video Player: Gebruik het scroll-wieltje om door de video
te spoelen, zoals bij MPV.
Subscription Settings:
diff --git a/static/locales/nn.yaml b/static/locales/nn.yaml
index ce1f7c1ab6897..40adc864feffa 100644
--- a/static/locales/nn.yaml
+++ b/static/locales/nn.yaml
@@ -590,11 +590,6 @@ Video:
Download Video: 'Last ned video'
video only: 'berre video'
audio only: 'berre lyd'
- Audio:
- Low: 'Låg'
- Medium: 'Middels'
- High: 'Høg'
- Best: 'Beste'
Published:
Jan: 'Jan'
Feb: 'Feb'
@@ -630,7 +625,6 @@ Video:
Started streaming on: 'Begynte å straume på'
Publicationtemplate: '{number} {unit} sidan'
#& Videos
- translated from English: omsett frå engelsk
Sponsor Block category:
outro: Avslutting
interaction: Samhandling
@@ -640,7 +634,6 @@ Video:
self-promotion: Eigenpromotering
recap: Oppsummering
filler: Fyllstoff
- Skipped segment: Overhoppa del
External Player:
video: video
playlist: speleliste
@@ -657,18 +650,6 @@ Video:
opening specific video in a playlist (falling back to opening the video): opner
valt video i ei speleliste (faller tilbake til å opne videoen)
Premieres on: Har premiere
- Stats:
- Volume: Lydstyrke
- Bandwidth: Bandbreidde
- Player Dimensions: Avspelarstorleik
- Bitrate: Bithastigheit
- Resolution: Oppløysing
- Buffered: Hurtiglagra
- Video ID: Video-ID
- Mimetype: Medietype
- Video statistics are not available for legacy videos: Videostatestikk er ikkje
- tilgjengeleg for utdaterte videoar
- Dropped / Total Frames: Redusert/total mengd bilete
Show Super Chat Comment: Vis super-chat-kommentar
Premieres: Premiere
Scroll to Bottom: Rull til botn
diff --git a/static/locales/or.yaml b/static/locales/or.yaml
index 357cce54e39c4..52ad07e86760f 100644
--- a/static/locales/or.yaml
+++ b/static/locales/or.yaml
@@ -88,7 +88,6 @@ Settings:
1440p: '୧୪୪୦p'
4k: '୪k'
8k: '୮k'
- Allow DASH AV1 formats: DASH AV1 ଫର୍ମାଟ୍କୁ ଅନୁମତି ଦେବା
External Player Settings:
External Player Settings: 'ବାହ୍ୟ ଚାଳକ ସେଟିଂ'
External Player: 'ବାହ୍ୟ ଚାଳକ'
diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml
index 71c6919a57254..213b51911f357 100644
--- a/static/locales/pl.yaml
+++ b/static/locales/pl.yaml
@@ -438,7 +438,6 @@ Settings:
orientacji ekranu
Skip by Scrolling Over Video Player: Przewijaj film kółkiem myszy na obszarze
odtwarzacza
- Allow DASH AV1 formats: Zezwól na format AV1 DASH
Subscription Settings:
Subscription Settings: 'Ustawienia subskrypcji'
Hide Videos on Watch: 'Ukrywaj filmy po obejrzeniu'
@@ -889,11 +888,6 @@ Video:
Loop Playlist: Zapętl playlistę
Starting soon, please refresh the page to check again: Wkrótce się zacznie. Proszę
odświeżyć stronę, aby ponownie sprawdzić
- Audio:
- Best: Najlepsza
- High: Wysoka
- Medium: Średnia
- Low: Niska
audio only: tylko audio
video only: tylko wideo
Download Video: Pobierz film
@@ -907,7 +901,6 @@ Video:
zapisanych
Video has been saved: Film został zapisany
Save Video: Zapisz film
- translated from English: przetłumaczone z angielskiego
Sponsor Block category:
music offtopic: niemuzyczny
interaction: o interakcji
@@ -917,7 +910,6 @@ Video:
sponsor: sponsorowany
filler: z wypełniaczem
recap: z podsumowaniem
- Skipped segment: Pominięto segment
External Player:
Unsupported Actions:
reversing playlists: odwracania playlist
@@ -934,26 +926,6 @@ Video:
video: filmu
OpenInTemplate: Otwórz w {externalPlayer}
Premieres on: Premiera
- Stats:
- buffered: Zbuforowano
- out of: z
- video id: ID filmu (YouTube)
- player resolution: Odtwarzacz
- volume: Głośność
- bandwidth: Prędkość połączenia
- fps: FPS
- frame drop: Pominięte klatki
- Video ID: ID filmu
- Resolution: Rozdzielczość
- Player Dimensions: Wymiary odtwarzacza
- Bitrate: Szybkość transmisji
- Volume: Głośność
- Bandwidth: Przepustowość
- Buffered: Zbuforowano
- Mimetype: Typ MIME
- Video statistics are not available for legacy videos: Statystyki filmu nie są
- dostępne dla starych formatów
- Dropped / Total Frames: Opuszczone klatki / klatki ogółem
Premieres in: Premiera za
Premieres: Premiery
Show Super Chat Comment: Pokazuj komentarze z „Superczatu”
@@ -1171,10 +1143,6 @@ Tooltips:
wartości (1x, chyba że została zmieniona w ustawieniach).
Skip by Scrolling Over Video Player: Użyj kółka myszy, by przewijać film tak jak
w MPV.
- Allow DASH AV1 formats: Film w formacie AV1 DASH może wyglądać lepiej, niż w formacie
- 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.
External Player Settings:
Ignore Warnings: Nie pokazuj ostrzeżeń o nieobsługiwanych akcjach przez zewnętrzny
odtwarzacz (n.p. odwracanie playlist, itp.).
diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml
index eafeed21609c8..c676dfcaf8a66 100644
--- a/static/locales/pt-BR.yaml
+++ b/static/locales/pt-BR.yaml
@@ -435,7 +435,6 @@ Settings:
Enter Fullscreen on Display Rotate: Entrar em tela cheia ao girar o dispositivo
para o modo paisagem
Skip by Scrolling Over Video Player: Pular vídeo ao rolar sobre o player
- Allow DASH AV1 formats: Permitir formatos DASH AV1
Subscription Settings:
Subscription Settings: 'Configurações de inscrições'
Hide Videos on Watch: 'Ocultar vídeos após assisti-los'
@@ -872,11 +871,6 @@ Video:
#& Videos
Started streaming on: Transmissão iniciada em
Streamed on: Transmitido em
- Audio:
- Best: Máxima
- Medium: Média
- Low: Baixa
- High: Alta
audio only: somente áudio
video only: somente vídeo
Download Video: Baixar vídeo
@@ -896,7 +890,6 @@ Video:
vídeos salvos
Video has been saved: O vídeo foi salvo
Save Video: Salvar vídeo
- translated from English: traduzido do Inglês
Sponsor Block category:
music offtopic: Música fora do contexto
interaction: Interação
@@ -906,7 +899,6 @@ Video:
sponsor: Patrocinador
filler: Preenchimento
recap: Recapitulação
- Skipped segment: Segmento ignorado
External Player:
Unsupported Actions:
shuffling playlists: Playlists aleatórias
@@ -923,26 +915,6 @@ Video:
OpenInTemplate: Abrir em {externalPlayer}
video: vídeo
Premieres on: Estreia em
- Stats:
- video id: ID do vídeo (YouTube)
- volume: Volume
- fps: FPS
- frame drop: Frame Drop
- bandwidth: Velocidade de conexão
- buffered: Buffered
- out of: de
- player resolution: Janela de exibição
- Mimetype: Mimetype
- Video statistics are not available for legacy videos: As estatísticas de vídeo
- não estão disponíveis para vídeos mais antigos
- Video ID: ID do vídeo
- Player Dimensions: Dimensões do player
- Bitrate: Taxa de bits
- Volume: Volume
- Bandwidth: Largura de banda
- Resolution: Resolução
- Buffered: Em buffer
- Dropped / Total Frames: Quadros perdidos / Total de quadros
Premieres in: Estréias em
Premieres: Estreia
Scroll to Bottom: Ir para o final
@@ -1148,10 +1120,6 @@ Tooltips:
sido alterada nas configurações).
Skip by Scrolling Over Video Player: Use a roda de rolagem para pular o vídeo,
estilo MPV.
- Allow DASH AV1 formats: Os formatos DASH AV1 podem ter melhor aspecto do que os
- formatos DASH H.264. Os formatos DASH AV1 requerem mais potência para reprodução!
- Eles não estão disponíveis em todos os vídeos, e nesses casos o player usará
- os formatos DASH H.264.
General Settings:
Region for Trending: A região de tendências permite que você escolha os vídeos
em alta do país que deseja exibir.
diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml
index 8448fd3f251c0..3f30b7fcef357 100644
--- a/static/locales/pt-PT.yaml
+++ b/static/locales/pt-PT.yaml
@@ -423,7 +423,6 @@ Settings:
por cima do reprodutor
Enter Fullscreen on Display Rotate: Ativar modo de ecrã completo ao rodar o ecrã
Skip by Scrolling Over Video Player: Ignorar ao deslocar por cima do reprodutor
- Allow DASH AV1 formats: Permitir formatos DASH AV1
Privacy Settings:
Privacy Settings: Definições de privacidade
Remember History: Memorizar histórico
@@ -829,11 +828,6 @@ Video:
Download Video: Descarregar vídeo
video only: apenas vídeo
audio only: apenas áudio
- Audio:
- Low: Baixa
- Medium: Média
- High: Alta
- Best: Melhor
Published:
Jan: jan
Feb: fev
@@ -874,7 +868,6 @@ Video:
Reverse Playlist: Inverter lista de reprodução
Shuffle Playlist: Baralhar lista de reprodução
Loop Playlist: Repetir lista de reprodução
- translated from English: traduzido do inglês
External Player:
Unsupported Actions:
looping playlists: repetir lista de reprodução
@@ -899,19 +892,6 @@ Video:
sponsor: Patrocinador
recap: Recapitulação
filler: Preenchimento
- Skipped segment: Secção ignorada
- Stats:
- Mimetype: Tipo mime
- Video statistics are not available for legacy videos: As estatísticas de vídeo
- não estão disponíveis para vídeos mais antigos
- Resolution: Resolução
- Video ID: ID do vídeo
- Volume: Volume
- Bandwidth: Largura de banda
- Buffered: Em memória
- Bitrate: Taxa de dados
- Dropped / Total Frames: Fotogramas perdidos/total de fotogramas
- Player Dimensions: Dimensões do reprodutor
Premieres on: Estreia a
Premieres: Estreias
Show Super Chat Comment: Mostrar comentário do Super Chat
@@ -1050,10 +1030,6 @@ Tooltips:
padrão (1 a não ser que tenha sido alterada nas definições).
Skip by Scrolling Over Video Player: Utilizar roda do rato para ignorar vídeo,
estilo MPV.
- Allow DASH AV1 formats: Os formatos DASH AV1 podem parecer melhores do que os
- formatos DASH H.264. Os formatos DASH AV1 requerem mais potência para reprodução!
- Não estão disponíveis para todos os vídeos e, nesses casos, o reprodutor usará
- os formatos DASH H.264.
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
@@ -1147,7 +1123,7 @@ Screenshot Success: Captura de ecrã guardada como "{filePath}"
Screenshot Error: Erro ao capturar o ecrã. {error}
Chapters:
'Chapters list hidden, current chapter: {chapterName}': 'Lista de capítulos oculta,
- capítulo atual: {capítuloNoto}'
+ capítulo atual: {chapterName}'
Chapters: Capítulos
'Chapters list visible, current chapter: {chapterName}': 'Lista de capítulos visível,
capítulo atual: {chapterName}'
diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml
index 470b74724f93a..aa2f646aaccdf 100644
--- a/static/locales/pt.yaml
+++ b/static/locales/pt.yaml
@@ -431,7 +431,6 @@ Settings:
Ask Path: Perguntar onde guardar
Enter Fullscreen on Display Rotate: Ativar modo de ecrã completo ao rodar o ecrã
Skip by Scrolling Over Video Player: Ignorar ao deslocar por cima do reprodutor
- Allow DASH AV1 formats: Permitir formatos DASH AV1
Privacy Settings:
Privacy Settings: 'Definições de privacidade'
Remember History: 'Memorizar histórico'
@@ -943,8 +942,6 @@ Video:
sponsor: Patrocinador
recap: Recapitulação
filler: Preenchimento
- Skipped segment: Secção ignorada
- translated from English: traduzido do inglês
Started streaming on: Transmissão iniciada em
Streamed on: Transmitido a
Audio:
@@ -963,26 +960,6 @@ Video:
Video has been saved: O vídeo foi guardado
Save Video: Guardar vídeo
Premieres on: Estreia a
- Stats:
- video id: Video ID (YouTube)
- volume: Volume
- fps: FPS
- frame drop: Fotogramas ignorados
- bandwidth: Velocidade da conexão
- out of: de
- player resolution: Janela de visualização
- buffered: Buffered
- Mimetype: Tipo mime
- Video ID: ID do vídeo
- Player Dimensions: Dimensões do reprodutor
- Bitrate: Taxa de dados
- Volume: Volume
- Video statistics are not available for legacy videos: As estatísticas de vídeo
- não estão disponíveis para vídeos mais antigos
- Resolution: Resolução
- Bandwidth: Largura de banda
- Buffered: Em memória
- Dropped / Total Frames: Fotogramas perdidos/total de fotogramas
Premieres in: Estreia em
Premieres: Estreias
Scroll to Bottom: Deslocar para baixo
@@ -1160,10 +1137,6 @@ Tooltips:
padrão (1 a não ser que tenha sido alterada nas definições).
Skip by Scrolling Over Video Player: Utilizar roda do rato para ignorar vídeo,
estilo MPV.
- Allow DASH AV1 formats: Os formatos DASH AV1 podem parecer melhores do que os
- formatos DASH H.264. Os formatos DASH AV1 requerem mais potência para reprodução!
- Não estão disponíveis para todos os vídeos e, nesses casos, o reprodutor usará
- os formatos DASH H.264.
General Settings:
Region for Trending: A região permite-lhe escolher de que país virão os vídeos
na secção de tendências.
@@ -1216,7 +1189,7 @@ Channels:
Unsubscribe Prompt: Tem a certeza de que pretende cancelar a subscrição em "{channelName}"?
Chapters:
'Chapters list hidden, current chapter: {chapterName}': 'Lista de capítulos oculta,
- capítulo atual: {capítuloNoto}'
+ capítulo atual: {chapterName}'
Chapters: Capítulos
'Chapters list visible, current chapter: {chapterName}': 'Lista de capítulos visível,
capítulo atual: {chapterName}'
diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml
index 51e2d7ce7fd7e..20e2a609b3e80 100644
--- a/static/locales/ro.yaml
+++ b/static/locales/ro.yaml
@@ -424,7 +424,6 @@ Settings:
de scroll
Enter Fullscreen on Display Rotate: Intrați pe ecran complet pe afișaj Rotire
Skip by Scrolling Over Video Player: Omiteți derulând peste player-ul video
- Allow DASH AV1 formats: Permiteți formatele DASH AV1
Privacy Settings:
Privacy Settings: 'Setări de confidențialitate'
Remember History: 'Reține istoric'
@@ -857,15 +856,8 @@ Video:
sponsor: Sponsor
recap: Recapitulare
filler: Filler
- Skipped segment: Segment omis
- translated from English: tradus din engleză
Started streaming on: A început să transmită pe
Streamed on: Difuzat pe
- Audio:
- Best: Cea mai bună
- Medium: Medie
- Low: Scăzută
- High: Înaltă
audio only: numai audio
video only: numai video
Download Video: Descărcați video
@@ -877,26 +869,6 @@ Video:
ta de salvări
Video has been saved: Videoclipul a fost salvat
Save Video: Salvați video
- Stats:
- video id: Identificator videoclip (YouTube)
- player resolution: Fereastră de vizualizare
- volume: Sonor
- fps: CPS
- frame drop: Aruncare cadre
- bandwidth: Viteză conexiune
- out of: din
- buffered: Preîncărcat
- Video statistics are not available for legacy videos: Statisticile videoclipurilor
- nu sunt disponibile pentru videoclipurile vechi
- Video ID: Video ID
- Resolution: Rezoluție
- Player Dimensions: Dimensiunile player-ului
- Bitrate: Rată de biți
- Volume: Volum
- Bandwidth: Lățime de bandă
- Buffered: Încărcat
- Dropped / Total Frames: Cadre pierdute / totale
- Mimetype: Mimetype
Premieres on: Premieră pe
Premieres in: Are premiera în
Scroll to Bottom: Derulați până jos
@@ -1066,10 +1038,6 @@ Tooltips:
(tasta Command pe Mac) și faceți clic cu butonul stâng al mouse-ului pentru
a reveni rapid la rata de redare implicită (1x, cu excepția cazului în care
aceasta a fost modificată în setări).
- Allow DASH AV1 formats: Formatele DASH AV1 pot arăta mai bine decât formatele
- DASH H.264. Formatele DASH AV1 necesită mai multă putere pentru redare! Nu sunt
- disponibile pe toate videoclipurile, în acele cazuri playerul va folosi în schimb
- formatele DASH H.264.
Skip by Scrolling Over Video Player: Utilizați rotița de derulare pentru a trece
prin videoclip, stil MPV.
General Settings:
diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml
index 67edab9204212..2506b51c48aee 100644
--- a/static/locales/ru.yaml
+++ b/static/locales/ru.yaml
@@ -429,7 +429,6 @@ Settings:
Enter Fullscreen on Display Rotate: Входить в полноэкранный режим при повороте
дисплея
Skip by Scrolling Over Video Player: Пропустить, прокручивая видеопроигрыватель
- Allow DASH AV1 formats: Разрешить форматы DASH AV1
Subscription Settings:
Subscription Settings: 'Подписки'
Hide Videos on Watch: 'Скрывать видео после просмотра'
@@ -868,11 +867,6 @@ Video:
Loop Playlist: Повторять подборку
Starting soon, please refresh the page to check again: Скоро начнется, обновите
страницу, чтобы проверить ещё раз
- Audio:
- Best: Лучшее
- High: Высокое
- Medium: Среднее
- Low: Низкое
audio only: только звук
video only: только видео
Download Video: Скачать видео
@@ -885,7 +879,6 @@ Video:
Video has been removed from your saved list: Видео было удалено из списка сохраненных
Video has been saved: Видео было добавлено в сохраненные
Save Video: Добавить видео в сохранённые
- translated from English: переведён с английского
Sponsor Block category:
music offtopic: Сегмент без музыки
interaction: Напоминание
@@ -895,7 +888,6 @@ Video:
sponsor: Спонсор
recap: Краткое содержание
filler: Отвлечение
- Skipped segment: Пропущенный сегмент
External Player:
Unsupported Actions:
looping playlists: повторение подборок
@@ -911,26 +903,6 @@ Video:
playlist: подборка
video: видео
OpenInTemplate: Открыть в {externalPlayer}
- Stats:
- frame drop: Пропущенные кадры
- video id: ID видео (YouTube)
- player resolution: Область просмотра
- volume: Громкость
- bandwidth: Скорость соединения
- buffered: Буферизовано
- out of: из
- fps: Кадровая частота
- Video statistics are not available for legacy videos: Статистика видео недоступна
- для устаревших видео
- Video ID: Идентификатор видео
- Resolution: Разрешение
- Player Dimensions: Размеры проигрывателя
- Bitrate: Битрейт
- Volume: Громкость
- Bandwidth: Пропускная способность
- Dropped / Total Frames: Пропущено / Всего кадров
- Mimetype: MIME-типы
- Buffered: Буферизовано
Premieres on: Премьеры
Premieres in: Премьеры в
Premieres: Премьеры
@@ -1153,10 +1125,6 @@ Tooltips:
не была изменена в настройках).
Skip by Scrolling Over Video Player: Используйте колесо прокрутки, чтобы пропустить
видео в стиле MPV.
- Allow DASH AV1 formats: Форматы DASH AV1 могут выглядеть лучше, чем форматы DASH
- H.264. Форматы DASH AV1 требуют большей производительности для воспроизведения!
- Они доступны не для всех видео. Если они будут недоступны, тогда проигрыватель
- будет использовать форматы DASH H.264.
External Player Settings:
Custom External Player Arguments: Любые пользовательские аргументы командной строки,
разделенные точкой с запятой (';'), которые вы хотите передать внешнему проигрывателю.
diff --git a/static/locales/sk.yaml b/static/locales/sk.yaml
index 6b0e8da2c2c7b..0f83473bedcb3 100644
--- a/static/locales/sk.yaml
+++ b/static/locales/sk.yaml
@@ -508,11 +508,6 @@ Video:
a znova skontrolujte
Started streaming on: Vysielanie začaté o
Streamed on: Odvysielané dňa
- Audio:
- Medium: Stredná
- Low: Nízka
- High: Vysoká
- Best: Najlepšia
audio only: len zvuk
video only: len video
Download Video: Stiahnuť video
@@ -535,17 +530,6 @@ Video:
outro: Záver
intro: Úvod
sponsor: Sponzor
- Skipped segment: Preskočený segment
- translated from English: preložené z angličtiny
- Stats:
- fps: Obrázky za sekundu
- frame drop: Vyhodené obrázky
- volume: Hlasitosť
- player resolution: Výrez
- out of: z
- bandwidth: Rýchlosť pripojenia
- video id: ID videa (YouTube)
- buffered: Prednačítané
External Player:
OpenInTemplate: Otvoriť v {externalPlayer}
Unsupported Actions:
diff --git a/static/locales/sl.yaml b/static/locales/sl.yaml
index ce605f0d92255..e8c2a82468749 100644
--- a/static/locales/sl.yaml
+++ b/static/locales/sl.yaml
@@ -273,7 +273,6 @@ Settings:
File Name Label: Vzorec imena datoteke
Enter Fullscreen on Display Rotate: Pri vrtenju zaslona vstopite v celozaslonski
način
- Allow DASH AV1 formats: Dovoli oblike DASH AV1
Next Video Interval: Interval do naslednjega videa
Display Play Button In Video Player: Prikaz gumba za predvajanje v video predvajalniku
Fast-Forward / Rewind Interval: Interval za hitro previjanje naprej/nazaj
@@ -611,11 +610,6 @@ Video:
Published on: 'Objavljeno dne'
Publicationtemplate: '{number} {unit} nazaj'
#& Videos
- Audio:
- Best: Najvišja
- High: Visoka
- Medium: Srednja
- Low: Nizka
audio only: Samo avdio
video only: Samo video
Download Video: Prenesi videoposnetek
@@ -629,9 +623,6 @@ Video:
seznama
Video has been saved: Videoposnetek je bil shranjen
Save Video: Shrani videoposnetek
- Stats:
- Bandwidth: Pasovna širina
- translated from English: prevedeno iz angleščine
Videos:
#& Sort By
Sort By:
diff --git a/static/locales/sm.yaml b/static/locales/sm.yaml
index 83252c853dc89..ea15eefd03df5 100644
--- a/static/locales/sm.yaml
+++ b/static/locales/sm.yaml
@@ -278,7 +278,6 @@ Settings:
1440p: ''
4k: ''
8k: ''
- Allow DASH AV1 formats: ''
Screenshot:
Enable: ''
Format Label: ''
@@ -613,11 +612,6 @@ Video:
Download Video: ''
video only: ''
audio only: ''
- Audio:
- Low: ''
- Medium: ''
- High: ''
- Best: ''
Published:
Jan: ''
Feb: ''
@@ -651,9 +645,7 @@ Video:
Published on: ''
Streamed on: ''
Started streaming on: ''
- translated from English: ''
Publicationtemplate: ''
- Skipped segment: ''
Sponsor Block category:
sponsor: ''
intro: ''
@@ -677,17 +669,6 @@ Video:
reversing playlists: ''
shuffling playlists: ''
looping playlists: ''
- Stats:
- Video statistics are not available for legacy videos: ''
- Video ID: ''
- Resolution: ''
- Player Dimensions: ''
- Bitrate: ''
- Volume: ''
- Bandwidth: ''
- Buffered: ''
- Dropped / Total Frames: ''
- Mimetype: ''
#& Videos
Videos:
#& Sort By
@@ -783,7 +764,6 @@ Tooltips:
Force Local Backend for Legacy Formats: ''
Proxy Videos Through Invidious: ''
Default Video Format: ''
- Allow DASH AV1 formats: ''
Scroll Playback Rate Over Video Player: ''
Skip by Scrolling Over Video Player: ''
External Player Settings:
diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml
index 2c8ffd385dc10..6da06af08268a 100644
--- a/static/locales/sr.yaml
+++ b/static/locales/sr.yaml
@@ -438,7 +438,6 @@ Settings:
Scroll Volume Over Video Player: Превуци за јачину звука преко плејера видео снимка
Skip by Scrolling Over Video Player: Прескочи превлачењем преко плејера видео
снимка
- Allow DASH AV1 formats: Дозволи DASH AV1 формате
Scroll Playback Rate Over Video Player: Превуци за брзину репродукције преко плејера
видео снимка
Fast-Forward / Rewind Interval: Интервал брзог премотавања унапред/уназад
@@ -867,18 +866,6 @@ Video:
Ago: Пре
Aug: Авг.
Upcoming: Предстојеће
- Stats:
- Video statistics are not available for legacy videos: Статистика видео снимака
- није доступна за застареле видео снимке
- Buffered: Баферовано
- Bitrate: Брзина кадра
- Volume: Волумен (партиција)
- Mimetype: Mimetype
- Resolution: Резолуција
- Dropped / Total Frames: Испуштено / Укупно кадрова
- Bandwidth: Проток
- Player Dimensions: Димензије плејера
- Video ID: ID видео снимка
Sponsor Block category:
interaction: Интеракција
filler: Попуњавање
@@ -888,7 +875,6 @@ Video:
sponsor: Спонзор
recap: Рекапитулација
intro: Уводна анимација
- translated from English: преведено са енглеског
External Player:
Unsupported Actions:
opening playlists: отварање плејлиста
@@ -907,13 +893,7 @@ Video:
Live chat is enabled. Chat messages will appear here once sent.: Ћаскање уживо је
омогућено. Поруке ћаскања ће се појавити овде када буду послате.
Streamed on: Стримовано
- Audio:
- Medium: Средње
- High: Високо
- Best: Најбоље
- Low: Ниско
video only: само видео снимак
- Skipped segment: Прескочен сегмент
Pause on Current Video: Паузирај на тренутном видео снимку
Premieres on: Премијера на
audio only: само аудио снимак (звук)
@@ -985,10 +965,6 @@ Tooltips:
чији их оригинални наслови садрже у целом FreeTube-у, искључујући само историју,
ваше плејлисте и видео снимке унутар плејлиста.
Player Settings:
- Allow DASH AV1 formats: DASH AV1 формати могу изгледати боље од DASH H.264 формата.
- DASH AV1 формати захтевају више снаге за репродукцију! Они нису доступни на
- свим видео снимцима, у тим случајевима плејер ће уместо њих користити DASH H.264
- формате.
Default Video Format: Подесите формате који се користе када се видео снимак пушта.
DASH формати могу да пуштају виши квалитет. Застарели формати су ограничени
на максимално 720p, али користе мање протока. Аудио формати су само звучни снимци.
diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml
index 064f186f46a8c..fdbb61c63f928 100644
--- a/static/locales/sv.yaml
+++ b/static/locales/sv.yaml
@@ -374,7 +374,6 @@ Settings:
Skip by Scrolling Over Video Player: Hoppa över genom att skrolla över videospelaren
Max Video Playback Rate: Maximal uppspelningshastighet
Video Playback Rate Interval: Uppspelningshastighetsintervall
- Allow DASH AV1 formats: Tillåt DASH AV1-format
Scroll Playback Rate Over Video Player: Skrolla uppspelningshastighet över videospelaren
Enter Fullscreen on Display Rotate: Fullskärm vid skärmrotation
Privacy Settings:
@@ -829,11 +828,6 @@ Video:
Published on: 'Publicerad den'
Publicationtemplate: 'för {number} {unit} sedan'
#& Videos
- Audio:
- Best: Högsta
- High: Hög
- Medium: Medium
- Low: Låg
audio only: endast ljud
video only: endast video
Download Video: Ladda ner video
@@ -856,8 +850,6 @@ Video:
sponsor: sponsor
recap: Sammanfattning
filler: Utfyllnad
- Skipped segment: Skippat segment
- translated from English: översatt från Engelska
External Player:
Unsupported Actions:
shuffling playlists: blandar spellistor
@@ -873,18 +865,6 @@ Video:
playlist: spellista
video: video
OpenInTemplate: Öppna i {externalPlayer}
- Stats:
- Video statistics are not available for legacy videos: Videostatstik är inte tillgänglig
- för föråldrade videor
- Dropped / Total Frames: Missade / Totalt antal bildrutor
- Bitrate: Bithastighet
- Volume: Volym
- Resolution: Upplösning
- Player Dimensions: Spelardimensioner
- Video ID: Video-ID
- Bandwidth: Bandbredd
- Mimetype: Mimetyp
- Buffered: Buffrad
Premieres on: Har premiär den
Premieres: Premiärer
Upcoming: Kommande
@@ -1014,9 +994,6 @@ Tooltips:
landsbegränsningar.
Skip by Scrolling Over Video Player: Använd skrollhjulet för att snappspola igenom
videon, MPV-stil.
- Allow DASH AV1 formats: DASH AV1-format kan se bättre ut än DASH H.264-format.
- DASH AV1-format kräver mer kraft för uppspelning! Det är inte tillgängligt för
- alla videor, i de fall kommer spelaren använde DASh H.264-format istället.
Scroll Playback Rate Over Video Player: När muspekaren är över videon, håll nere
CTRL (Kommandotangenten på Mac) och skrolla upp och ner för att ändra uppspelningshastigheten.
Håll nere CTRL (Kommandotangenten på Mac) och vänsterklicka för att återställa
diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml
index ad960d7e5dd26..6575a0817e8d0 100644
--- a/static/locales/tr.yaml
+++ b/static/locales/tr.yaml
@@ -440,7 +440,6 @@ Settings:
veya "/" kullanabilirsiniz.
Enter Fullscreen on Display Rotate: Ekran Döndürüldüğünde Tam Ekrana Geç
Skip by Scrolling Over Video Player: Video Oynatıcı Üzerinde Kaydırarak Atla
- Allow DASH AV1 formats: DASH AV1 biçimlerine izin ver
Privacy Settings:
Privacy Settings: 'Gizlilik Ayarları'
Remember History: 'Geçmişi Hatırla'
@@ -932,11 +931,6 @@ Video:
Published on: 'Yayımlanma tarihi'
Publicationtemplate: '{number} {unit} önce'
#& Videos
- Audio:
- Best: En iyi
- High: Yüksek
- Medium: Orta
- Low: Düşük
audio only: yalnızca ses
video only: yalnızca video
Download Video: Video İndir
@@ -949,7 +943,6 @@ Video:
Video has been removed from your saved list: Video, kaydedilen listenizden kaldırıldı
Video has been saved: Video kaydedildi
Save Video: Videoyu Kaydet
- translated from English: İngilizceden çevrildi
Sponsor Block category:
music offtopic: Müzik Konu Dışı
interaction: Etkileşim
@@ -959,7 +952,6 @@ Video:
sponsor: Sponsor
recap: Özet
filler: Dolgu
- Skipped segment: Atlanan bölüm
External Player:
Unsupported Actions:
looping playlists: oynatma listelerini döngüye alma
@@ -976,26 +968,6 @@ Video:
video: video
OpenInTemplate: '{externalPlayer} içinde aç'
Premieres on: İlk gösterim tarihi
- Stats:
- volume: Ses Seviyesi
- out of: /
- player resolution: Görüntü Penceresi
- fps: FPS
- frame drop: Çerçeve Kaybı
- video id: Video Kimliği (YouTube)
- bandwidth: Bağlantı Hızı
- buffered: Arabelleğe Alınan
- Video ID: Video Kimliği
- Resolution: Çözünürlük
- Player Dimensions: Oynatıcı Boyutları
- Bitrate: Bit Hızı
- Volume: Ses Seviyesi
- Bandwidth: Bant Genişliği
- Buffered: Arabelleğe Alınan
- Dropped / Total Frames: Düşürülen / Toplam Çerçeve Sayısı
- Mimetype: MIME Türü
- Video statistics are not available for legacy videos: Video istatistikleri eski
- videolar için kullanılabilir değil
Premieres in: İlk gösterim
Premieres: İlk gösterim
Scroll to Bottom: Aşağıya Kaydır
@@ -1142,9 +1114,6 @@ Tooltips:
için Ctrl tuşunu (Mac'te Komut tuşu) basılı tutun ve fareye sol tıklayın.
Skip by Scrolling Over Video Player: MPV'deki gibi videoda atlamak için kaydırma
tekerleğini kullanın.
- Allow DASH AV1 formats: DASH AV1 biçimleri, DASH H.264 biçimlerinden daha iyi
- görünebilir. DASH AV1 biçimleri oynatmak daha fazla güç gerektirir! Tüm videolarda
- bulunmazlar, bu durumlarda oynatıcı bunun yerine DASH H.264 biçimlerini kullanacaktır.
General Settings:
Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious örneği.
Thumbnail Preference: FreeTube'daki tüm önizleme görselleri, öntanımlı önizleme
diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml
index 1210830ecfaa8..78b53f1912afe 100644
--- a/static/locales/uk.yaml
+++ b/static/locales/uk.yaml
@@ -322,7 +322,6 @@ Settings:
Enter Fullscreen on Display Rotate: Переходити в повноекранний режим за обертання
екрана
Skip by Scrolling Over Video Player: Пропустити гортанням відеопрогравача
- Allow DASH AV1 formats: Дозволити формат DASH AV1
Privacy Settings:
Privacy Settings: 'Налаштування приватності'
Remember History: 'Збрігати історію'
@@ -687,11 +686,6 @@ Video:
Download Video: 'Завантажити відео'
video only: 'лише відео'
audio only: 'лише звук'
- Audio:
- Low: 'Низька'
- Medium: 'Середня'
- High: 'Висока'
- Best: 'Найкраща'
Published:
Jan: 'Ян'
Feb: 'Лют'
@@ -731,7 +725,6 @@ Video:
Video has been removed from your saved list: Відео вилучено зі списку збережених
Video has been saved: Відео збережено
Save Video: Зберегти відео
- translated from English: перекладено з англійської
Sponsor Block category:
music offtopic: Музика поза темою
interaction: Взаємодія
@@ -741,7 +734,6 @@ Video:
sponsor: Спонсор
recap: Підсумок
filler: Заповнювач
- Skipped segment: Пропущений відтинок
External Player:
Unsupported Actions:
looping playlists: зациклювання добірок
@@ -758,26 +750,6 @@ Video:
video: відео
OpenInTemplate: Відкрити у {externalPlayer}
Premieres on: Прем'єри
- Stats:
- player resolution: Вікно перегляду
- fps: Кадрів/с
- volume: Обсяг
- bandwidth: Швидкість з'єднання
- buffered: Буферизовано
- out of: з
- video id: ID відео (YouTube)
- frame drop: Пропущені кадри
- Resolution: Роздільність
- Volume: Обсяг
- Bandwidth: Пропускна здатність
- Dropped / Total Frames: Пропущені / Усього кадрів
- Mimetype: Тип MIME
- Bitrate: Бітрейт
- Video ID: ID відео
- Player Dimensions: Розміри програвача
- Buffered: Буферизовано
- Video statistics are not available for legacy videos: Статистика відео недоступна
- для застарілих відео
Premieres in: Прем'єри в
Premieres: Прем'єри
Scroll to Bottom: Прокрутити до кінця
@@ -904,10 +876,6 @@ Tooltips:
в налаштуваннях).
Skip by Scrolling Over Video Player: Використовувати колесо прокрутки для прокручування
відео в стилі MPV.
- Allow DASH AV1 formats: Формати DASH AV1 можуть виглядати краще, ніж формати DASH
- H.264. Формати DASH AV1 вимагають більше енергії для відтворення! Вони доступні
- не для всіх відео, у таких випадках програвач буде використовувати формати DASH
- H.264.
Subscription Settings:
Fetch Feeds from RSS: 'Якщо ввімкнено, FreeTube використовуватиме RSS замість
стандартного способу захоплення каналу підписки. RSS швидше і запобігає блокуванню
diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml
index 15de51649098d..fe8fd69fb88ce 100644
--- a/static/locales/vi.yaml
+++ b/static/locales/vi.yaml
@@ -382,7 +382,6 @@ Settings:
Video Playback Rate Interval: Khoảng cách tốc độ phát
Enter Fullscreen on Display Rotate: Bật toàn màn hình khi xoay
Skip by Scrolling Over Video Player: Tua video bằng con lăn chuột
- Allow DASH AV1 formats: Cho phép định dạng DASH AV1
Subscription Settings:
Subscription Settings: 'Cài đặt đăng ký'
Hide Videos on Watch: 'Ẩn video khi đã xem'
@@ -804,11 +803,6 @@ Video:
Video has been marked as watched: Video đánh dấu đã xem
Remove From History: Xóa khỏi lịch sử
Mark As Watched: Đánh dấu đã xem
- Audio:
- Best: Tốt nhất
- High: Cao
- Medium: Trung bình
- Low: Thấp
audio only: Chỉ âm thanh
video only: Chỉ video
Download Video: Tải video
@@ -822,7 +816,6 @@ Video:
Loop Playlist: Lặp lại Playlist
Open Channel in YouTube: Mở kênh này trên YouTube
Copy YouTube Channel Link: Sao chép liên kết của kênh
- Skipped segment: Phân đoạn đã bỏ qua
Sponsor Block category:
sponsor: Nhà tài trợ
intro: Giới thiệu
@@ -832,22 +825,9 @@ Video:
outro: Kết thúc
recap: Tóm tắt
filler: Bộ lọc
- Stats:
- Resolution: Độ phân giải
- Player Dimensions: Khối lượng phát
- Bandwidth: Băng thông
- Buffered: Đệm
- Video ID: Video
- Video statistics are not available for legacy videos: Số liệu thống kê video không
- có sẵn cho các video tiếp nôi
- Mimetype: Mimetype
- Dropped / Total Frames: Bị drop / tống số khung hình
- Bitrate: Tốc độ Bitrate
- Volume: Volume
Premieres on: Công chiếu vào lúc
Streamed on: Phát trực tiếp vào lúc
Started streaming on: Bắt đầu.phát trực tiếp vào lúc
- translated from English: Được dịch từ tiếng Anh
External Player:
playlist: danh sách phát
Unsupported Actions:
@@ -1081,10 +1061,6 @@ Tooltips:
được thay đổi trong cài đặt).
Skip by Scrolling Over Video Player: Sử dụng con lăn chuột để bỏ qua video, kiểu
MPV.
- Allow DASH AV1 formats: Định dạng DASH AV1 có thể trông đẹp hơn định dạng DASH
- H.264. Định dạng DASH AV1 yêu cầu nhiều năng lượng hơn để phát lại! Chúng không
- có sẵn trên tất cả các video, trong những trường hợp đó trình phát sẽ sử dụng
- định dạng DASH H.264 thay thế.
External Player Settings:
Custom External Player Arguments: Bất kỳ tham số dòng lệnh tùy chỉnh nào, được
phân tách bằng dấu chấm phẩy (';'), bạn muốn được chuyển đến trình phát bên
diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml
index 4beafac044f30..8e4c60c558248 100644
--- a/static/locales/zh-CN.yaml
+++ b/static/locales/zh-CN.yaml
@@ -391,7 +391,6 @@ Settings:
Folder Label: 截屏文件夹
Enter Fullscreen on Display Rotate: 屏幕旋转时进入全屏
Skip by Scrolling Over Video Player: 从视频播放器一侧滚动到另一侧来跳过视频
- Allow DASH AV1 formats: 允许 DASH AV1 格式
Subscription Settings:
Subscription Settings: '订阅设置'
Hide Videos on Watch: '观看时隐藏视频'
@@ -777,11 +776,6 @@ Video:
Shuffle Playlist: 随机播放列表
Loop Playlist: 循环播放列表
Starting soon, please refresh the page to check again: 即将开始,请刷新页面再次检查
- Audio:
- Best: 最佳
- High: 高
- Medium: 中
- Low: 低
audio only: 仅音频
video only: 仅视频
Download Video: 下载视频
@@ -794,25 +788,6 @@ Video:
Video has been removed from your saved list: 视频已从你的播放列表移除
Video has been saved: 视频已保存
Save Video: 保存视频到播放列表
- Stats:
- video id: 视频 ID (YouTube)
- player resolution: 视区
- volume: 音量
- fps: 每秒帧数
- out of: 中的
- frame drop: 掉帧
- bandwidth: 连接速度
- buffered: 缓冲
- Video ID: 视频 ID
- Resolution: 分辨率
- Player Dimensions: 播放器尺寸
- Bitrate: 比特率
- Volume: 音量
- Buffered: 已缓冲
- Dropped / Total Frames: 丢弃帧/总帧数
- Mimetype: 互联网媒体类型
- Bandwidth: 带宽
- Video statistics are not available for legacy videos: 视频统计数据对于 legacy 视频不可用
External Player:
OpenInTemplate: 在 {externalPlayer} 中打开
video: 视频
@@ -838,8 +813,6 @@ Video:
sponsor: 赞助者
recap: 回顾
filler: 过滤器
- translated from English: 从英语翻译
- Skipped segment: 跳过片段
Premieres in: 首映于
Premieres: 首映
Scroll to Bottom: 滚动到底部
@@ -1011,8 +984,6 @@ Tooltips:
Scroll Playback Rate Over Video Player: 当光标位于视频上方时,按住 Control 键(Mac 上的 Command
键),前后滚动鼠标滚轮,控制播放速度。按住 Control 键(Mac 上的 Command 键),左键点击鼠标快速返回到默认播放速率(1x,除非在设置中改变了数值)。
Skip by Scrolling Over Video Player: 使用滚轮跳过视频,MPV 风格。
- Allow DASH AV1 formats: DASH AV1 格式画质也许比 DASH H.264 格式要好。 但请注意 DASH AV1 格式耗电更多!不是所有视频都有
- DASH AV1 格式,如果没有的话,播放器会使用 DASH H.264 格式。
General Settings:
Invidious Instance: FreeTube 要连接到哪个 Invidious 实例进行 API 调用。
Thumbnail Preference: FreeTube中所有缩略图都会被替换为影片画面而非默认缩略图。
diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml
index de48a2baf430c..c1e725d47dd48 100644
--- a/static/locales/zh-TW.yaml
+++ b/static/locales/zh-TW.yaml
@@ -393,7 +393,6 @@ Settings:
或 "/" 來建立子資料夾。
Enter Fullscreen on Display Rotate: 在顯示旋轉時進入全螢幕
Skip by Scrolling Over Video Player: 捲動影片播放器跳過
- Allow DASH AV1 formats: 允許 DASH AV1 格式
Subscription Settings:
Subscription Settings: '訂閱設定'
Hide Videos on Watch: '觀看時隱藏影片'
@@ -787,11 +786,6 @@ Video:
Shuffle Playlist: 隨機播放清單
Loop Playlist: 循環播放清單
Starting soon, please refresh the page to check again: 影片即將開始,請重新整理頁面以再次檢查是否有更新
- Audio:
- Best: 最佳
- High: 高
- Medium: 中
- Low: 低
audio only: 僅音訊
video only: 僅影片
Download Video: 下載影片
@@ -804,7 +798,6 @@ Video:
Video has been removed from your saved list: 影片已從您的播放清單移除
Video has been saved: 影片已儲存
Save Video: 儲存影片至播放清單
- translated from English: 從英文翻譯
Sponsor Block category:
music offtopic: 音樂離題
interaction: 互動
@@ -814,7 +807,6 @@ Video:
sponsor: 贊助商
recap: 回顧
filler: 填充
- Skipped segment: 已跳過的片段
External Player:
Unsupported Actions:
looping playlists: 循環播放清單
@@ -830,25 +822,6 @@ Video:
video: 視訊
OpenInTemplate: 在 {externalPlayer} 中開啟
Premieres on: 首映日期
- Stats:
- buffered: 已緩衝
- out of: 中的
- video id: Video ID (YouTube)
- volume: 音量
- player resolution: 視野
- fps: FPS
- frame drop: 丟棄畫面
- bandwidth: 連線速度
- Resolution: 解析度
- Player Dimensions: 播放器大小
- Bitrate: 位元率
- Volume: 音量
- Bandwidth: 頻寬
- Buffered: 已緩衝
- Dropped / Total Frames: 丟棄/總畫面數
- Video statistics are not available for legacy videos: 影片統計資料不適用於舊版影片
- Video ID: 影片 ID
- Mimetype: 多媒體類型
Premieres in: 首映於
Premieres: 首映
Show Super Chat Comment: 顯示超級聊天留言
@@ -1021,8 +994,6 @@ Tooltips:
Scroll Playback Rate Over Video Player: 當游標停在影片上時,按住 Ctrl 鍵(Mac 的話則是 Command 鍵),然後向前或向後滾動滑鼠滾輪來控制播放速度。按住
Ctrl 鍵(Mac 的話則是 Command 鍵)並點擊滑鼠左鍵以快速回到預設的播放速度(1x,除非在設定中更改)。
Skip by Scrolling Over Video Player: 使用滾輪跳過影片,MPV 風格。
- Allow DASH AV1 formats: DASH AV1 格式可能會看起來比 DASH H.264 格式更好。DASH AV1 格式需要更大的功率來播放!且並非所有影片都提供,在這種情況下,播放程式會使用
- DASH H.264 格式代替。
General Settings:
Invidious Instance: FreeTube 將連線到 Invidious 站台進行 API 呼叫。
Thumbnail Preference: FreeTube 中所有縮圖都會被替換為影片畫面而非預設縮圖。
diff --git a/yarn.lock b/yarn.lock
index 05c9df2c9366c..78d3adf072b28 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1032,13 +1032,6 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
- version "7.17.9"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
- integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
- 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"
@@ -1046,6 +1039,13 @@
dependencies:
regenerator-runtime "^0.14.0"
+"@babel/runtime@^7.8.4":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
+ integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.24.7", "@babel/template@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
@@ -1558,13 +1558,6 @@
localforage "^1.9.0"
util "^0.12.4"
-"@silvermine/videojs-quality-selector@^1.3.1":
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/@silvermine/videojs-quality-selector/-/videojs-quality-selector-1.3.1.tgz#23307dd3d5be442f7aa127c01820f16a3d9476a3"
- integrity sha512-uo6gs2HVG2TD0bpZAl0AT6RkDXzk9PnAxtmmW5zXexa2uJvkdFT64QvJoMlEUd2FUUwqYqqAuWGFDJdBh5+KcQ==
- dependencies:
- underscore "1.13.1"
-
"@sinclair/typebox@^0.27.8":
version "0.27.8"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@@ -1888,38 +1881,6 @@
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-"@videojs/http-streaming@2.16.2":
- version "2.16.2"
- resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-2.16.2.tgz#a9be925b4e368a41dbd67d49c4f566715169b84b"
- integrity sha512-etPTUdCFu7gUWc+1XcbiPr+lrhOcBu3rV5OL1M+3PDW89zskScAkkcdqYzP4pFodBPye/ydamQoTDScOnElw5A==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@videojs/vhs-utils" "3.0.5"
- aes-decrypter "3.1.3"
- global "^4.4.0"
- m3u8-parser "4.8.0"
- mpd-parser "^0.22.1"
- mux.js "6.0.1"
- video.js "^6 || ^7"
-
-"@videojs/vhs-utils@3.0.5", "@videojs/vhs-utils@^3.0.4", "@videojs/vhs-utils@^3.0.5":
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c"
- integrity sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==
- dependencies:
- "@babel/runtime" "^7.12.5"
- global "^4.4.0"
- url-toolkit "^2.2.1"
-
-"@videojs/xhr@2.6.0":
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80"
- integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==
- dependencies:
- "@babel/runtime" "^7.5.5"
- global "~4.4.0"
- is-function "^1.0.1"
-
"@vue/compiler-sfc@2.7.16":
version "2.7.16"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83"
@@ -2083,11 +2044,6 @@
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
-"@xmldom/xmldom@^0.8.3":
- version "0.8.6"
- resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.6.tgz#8a1524eb5bd5e965c1e3735476f0262469f71440"
- integrity sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==
-
"@xmldom/xmldom@^0.8.8":
version "0.8.10"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
@@ -2126,16 +2082,6 @@ acorn@^8.11.3, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
-aes-decrypter@3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz#65ff5f2175324d80c41083b0e135d1464b12ac35"
- integrity sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@videojs/vhs-utils" "^3.0.5"
- global "^4.4.0"
- pkcs7 "^1.0.4"
-
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -2162,7 +2108,7 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2347,14 +2293,7 @@ arraybuffer.prototype.slice@^1.0.2:
is-array-buffer "^3.0.2"
is-shared-array-buffer "^1.0.2"
-asn1@~0.2.3:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
- integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
+assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
@@ -2396,16 +2335,6 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
- integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
- integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
-
babel-loader@^9.1.3:
version "9.1.3"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a"
@@ -2458,13 +2387,6 @@ batch@0.6.1:
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
- dependencies:
- tweetnacl "^0.14.3"
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -2713,11 +2635,6 @@ caniuse-lite@^1.0.30001646:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56"
integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -2864,7 +2781,7 @@ colorette@^2.0.10, colorette@^2.0.14:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
-combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
+combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -3183,13 +3100,6 @@ csstype@^3.1.0:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
- dependencies:
- assert-plus "^1.0.0"
-
debug@2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3397,11 +3307,6 @@ dom-serializer@^2.0.0:
domhandler "^5.0.2"
entities "^4.2.0"
-dom-walk@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
- integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
-
domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
@@ -3462,14 +3367,6 @@ eastasianwidth@^0.2.0:
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
-
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -3554,6 +3451,11 @@ electron@^32.0.1:
"@types/node" "^20.9.0"
extract-zip "^2.0.1"
+eme-encryption-scheme-polyfill@^2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.1.5.tgz#86338bdd3b13f04ba02fa36758501c7c6c122efe"
+ integrity sha512-z9BKXV4TCYjmar0wiZLObZ0J8HE13VIg7Zq/iyPWdbEfROtxVXEJalknWKtBR5XNezzy15/zWS964TGbcAWlPg==
+
emoji-regex@^10.0.0, emoji-regex@^10.3.0:
version "10.3.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23"
@@ -4175,11 +4077,6 @@ ext-name@^5.0.0:
ext-list "^2.0.0"
sort-keys-length "^1.0.0"
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
extract-zip@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
@@ -4191,11 +4088,6 @@ extract-zip@^2.0.1:
optionalDependencies:
"@types/yauzl" "^2.9.1"
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
extsprintf@^1.2.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
@@ -4377,11 +4269,6 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -4391,15 +4278,6 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
- integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.6"
- mime-types "^2.1.12"
-
forwarded@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
@@ -4570,13 +4448,6 @@ get-tsconfig@^4.7.0:
dependencies:
resolve-pkg-maps "^1.0.0"
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
- dependencies:
- assert-plus "^1.0.0"
-
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -4659,14 +4530,6 @@ global-prefix@^3.0.0:
kind-of "^6.0.2"
which "^1.3.1"
-global@^4.3.1, global@^4.3.2, global@^4.4.0, global@~4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
- integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
- dependencies:
- min-document "^2.19.0"
- process "^0.11.10"
-
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -4764,19 +4627,6 @@ handle-thing@^2.0.0:
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
- integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
- dependencies:
- ajv "^6.12.3"
- har-schema "^2.0.0"
-
has-bigints@^1.0.1, has-bigints@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
@@ -4971,15 +4821,6 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
http2-wrapper@^1.0.0-beta.5.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
@@ -5074,11 +4915,6 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
-individual@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97"
- integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c=
-
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -5246,11 +5082,6 @@ is-fullwidth-code-point@^4.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
-is-function@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
- integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
-
is-generator-function@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
@@ -5391,11 +5222,6 @@ is-typed-array@^1.1.3, is-typed-array@^1.1.9:
for-each "^0.3.3"
has-tostringtag "^1.0.0"
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
is-weakref@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
@@ -5440,11 +5266,6 @@ isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
jackspeak@^3.1.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a"
@@ -5523,11 +5344,6 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -5575,17 +5391,12 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-json-schema@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
-
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+json-stringify-safe@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
@@ -5628,21 +5439,6 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jsprim@^1.2.2:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
- integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.4.0"
- verror "1.10.0"
-
-keycode@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff"
- integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==
-
keyv@^4.0.0:
version "4.5.2"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56"
@@ -5892,15 +5688,6 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-m3u8-parser@4.8.0:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz#4a2d591fdf6f2579d12a327081198df8af83083d"
- integrity sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@videojs/vhs-utils" "^3.0.5"
- global "^4.4.0"
-
marked@^14.1.0:
version "14.1.0"
resolved "https://registry.yarnpkg.com/marked/-/marked-14.1.0.tgz#736ae774ff06ddf03e55a071f9322fe240cb89cb"
@@ -5990,7 +5777,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -6022,13 +5809,6 @@ mimic-response@^3.1.0:
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-min-document@^2.19.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
- integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=
- dependencies:
- dom-walk "^0.1.0"
-
min-indent@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@@ -6115,16 +5895,6 @@ mkdirp@^1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-mpd-parser@0.22.1, mpd-parser@^0.22.1:
- version "0.22.1"
- resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.22.1.tgz#bc2bf7d3e56368e4b0121035b055675401871521"
- integrity sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@videojs/vhs-utils" "^3.0.5"
- "@xmldom/xmldom" "^0.8.3"
- global "^4.4.0"
-
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -6148,14 +5918,6 @@ multicast-dns@^7.2.5:
dns-packet "^5.2.2"
thunky "^1.0.2"
-mux.js@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-6.0.1.tgz#65ce0f7a961d56c006829d024d772902d28c7755"
- integrity sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==
- dependencies:
- "@babel/runtime" "^7.11.2"
- global "^4.4.0"
-
nanoid@^3.3.7:
version "3.3.7"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
@@ -6256,11 +6018,6 @@ nth-check@^2.0.1, nth-check@^2.1.1:
dependencies:
boolbase "^1.0.0"
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
- integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
object-inspect@^1.12.0, object-inspect@^1.9.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
@@ -6559,11 +6316,6 @@ pend@~1.2.0:
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-
picocolors@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
@@ -6584,13 +6336,6 @@ pidtree@^0.6.0:
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c"
integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==
-pkcs7@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb"
- integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==
- dependencies:
- "@babel/runtime" "^7.5.5"
-
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -6967,11 +6712,6 @@ pseudomap@^1.0.2:
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-psl@^1.1.28:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
- integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
@@ -6980,7 +6720,7 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
-punycode@^2.1.0, punycode@^2.1.1:
+punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -6999,11 +6739,6 @@ qs@6.11.0:
dependencies:
side-channel "^1.0.4"
-qs@~6.5.2:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
- integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
-
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -7236,32 +6971,6 @@ renderkid@^3.0.0:
lodash "^4.17.21"
strip-ansi "^6.0.1"
-request@^2.88.2:
- version "2.88.2"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
- integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.3"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.5.0"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -7381,13 +7090,6 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
-rust-result@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72"
- integrity sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=
- dependencies:
- individual "^2.0.0"
-
safe-array-concat@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c"
@@ -7403,18 +7105,11 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-json-parse@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac"
- integrity sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=
- dependencies:
- rust-result "^1.0.0"
-
safe-regex-test@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
@@ -7424,7 +7119,7 @@ safe-regex-test@^1.0.0:
get-intrinsic "^1.1.3"
is-regex "^1.1.4"
-"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -7594,6 +7289,13 @@ setprototypeof@1.2.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+shaka-player@^4.10.12:
+ version "4.10.12"
+ resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.10.12.tgz#29f9ffb0f7f3a67e5ccddbb48ba5601c911079de"
+ integrity sha512-Gn8MmSsWU/yrJyJLwEGZYQwz/09y6hMW+HaPnkC/+s3fgXbVYPgrpra45T0aCLV4LgfjXRf+uHDjVydUW5rTZA==
+ dependencies:
+ eme-encryption-scheme-polyfill "^2.1.5"
+
shallow-clone@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
@@ -7780,21 +7482,6 @@ sprintf-js@^1.1.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
-sshpk@^1.7.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
- integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- bcrypt-pbkdf "^1.0.0"
- dashdash "^1.12.0"
- ecc-jsbn "~0.1.1"
- getpass "^0.1.1"
- jsbn "~0.1.0"
- safer-buffer "^2.0.2"
- tweetnacl "~0.14.0"
-
stat-mode@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
@@ -8237,14 +7924,6 @@ toidentifier@1.0.1:
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
-tough-cookie@~2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
- integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
- dependencies:
- psl "^1.1.28"
- punycode "^2.1.1"
-
tree-kill@1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
@@ -8272,18 +7951,6 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -8373,11 +8040,6 @@ unbox-primitive@^1.0.2:
has-symbols "^1.0.3"
which-boxed-primitive "^1.0.2"
-underscore@1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1"
- integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==
-
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
@@ -8461,11 +8123,6 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-url-toolkit@^2.2.1:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607"
- integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==
-
utf8-byte-length@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
@@ -8498,11 +8155,6 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.3.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
@@ -8521,15 +8173,6 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
verror@^1.10.0:
version "1.10.1"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb"
@@ -8539,85 +8182,6 @@ verror@^1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
-video.js@7.21.5, "video.js@^6 || ^7", "video.js@^6 || ^7 || ^8", video.js@^7.0.0, "video.js@^7.2.0 || ^6.6.0":
- version "7.21.5"
- resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.21.5.tgz#36fcbbdeded757089a10bbb78f49c360a2d0c9d4"
- integrity sha512-WRq86tXZKrThA9mK+IR+v4tIQVVvnb5LhvL71fD2AX7TxVOPdaeK1X/wyuUruBqWaOG3w2sZXoMY6HF2Jlo9qA==
- dependencies:
- "@babel/runtime" "^7.12.5"
- "@videojs/http-streaming" "2.16.2"
- "@videojs/vhs-utils" "^3.0.4"
- "@videojs/xhr" "2.6.0"
- aes-decrypter "3.1.3"
- global "^4.4.0"
- keycode "^2.2.0"
- m3u8-parser "4.8.0"
- mpd-parser "0.22.1"
- mux.js "6.0.1"
- safe-json-parse "4.0.0"
- videojs-font "3.2.0"
- videojs-vtt.js "^0.15.5"
-
-videojs-contrib-quality-levels@^2.0.4:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.2.1.tgz#46bd7e1db25e6e45824dadf933b08f0c6ec724a1"
- integrity sha512-cnF6OGGgoC/2nUrbdz54nzPm3BpEZQzMTpyekiX6AXs8imATX2sHbrUz97xXVSHITldk/+d7ZAUrdQYJJTyuug==
- dependencies:
- global "^4.3.2"
- video.js "^6 || ^7 || ^8"
-
-videojs-contrib-quality-levels@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-3.0.0.tgz#bc66f1333b763754b4425455bee4ef6e5ba53984"
- integrity sha512-sNx38EYUx+Q+gmup1gVTv9P9/sPs28rM7gZOx1sedaHoKxEdYB+ysOGfHj6MSELBMNGMj6ZspdrpSiWguGvGxA==
- dependencies:
- global "^4.4.0"
-
-videojs-font@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232"
- integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==
-
-videojs-http-source-selector@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/videojs-http-source-selector/-/videojs-http-source-selector-1.1.6.tgz#073aadbea0106ba6c98d6b611094dbf8554ffa1f"
- integrity sha512-6b5MmKTT2cVnrjtdNj4z1VO91udbXkZkTYA6LlD8WN2aHlG2rqFTmtMab4NK4nlkkkbRnm3c2q2IddL3jffLmg==
- dependencies:
- global "^4.3.2"
- video.js "^7.0.0"
- videojs-contrib-quality-levels "^2.0.4"
-
-videojs-mobile-ui@^0.8.0:
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/videojs-mobile-ui/-/videojs-mobile-ui-0.8.0.tgz#40a1c6f9302071b9bbe95937c934114600916ac5"
- integrity sha512-Jd+u/ctjUkbZlT1cAA0umTu0LQwSZSFG+02cJxShuwq27B6rfrRALETK/gsuTc7U27lB9fbwcF7HBMaNxW62nA==
- dependencies:
- global "^4.4.0"
-
-videojs-overlay@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/videojs-overlay/-/videojs-overlay-3.1.0.tgz#d57505d375eca952feeb36e5b33e0a130e3dc9e0"
- integrity sha512-P863Z4ghWgf7Z4A4uzmHlqIixRb8v5220JuQ4pfb/uorbWSBCt5D+czrp/eTxXXLtSmrSUKn596QswVYZuMzPg==
- dependencies:
- global "^4.3.2"
- video.js "^6 || ^7 || ^8"
-
-videojs-vtt-thumbnails-freetube@0.0.15:
- version "0.0.15"
- resolved "https://registry.yarnpkg.com/videojs-vtt-thumbnails-freetube/-/videojs-vtt-thumbnails-freetube-0.0.15.tgz#5bbc1f98c4d4cffd5b3538e8caab36aca94c86cf"
- integrity sha512-aRjG6fvsuWCpcFcdhqRbI5HUWw1l7boHRJZoQki+z74uDbys/u8OVo6S/oJgpmog//iToQEKqHjSEisFdVDQlA==
- dependencies:
- global "^4.4.0"
- request "^2.88.2"
- video.js "^7.2.0 || ^6.6.0"
-
-videojs-vtt.js@^0.15.5:
- version "0.15.5"
- resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz#567776eaf2a7a928d88b148a8b401ade2406f2ca"
- integrity sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==
- dependencies:
- global "^4.3.1"
-
vue-devtools@^5.1.4:
version "5.1.4"
resolved "https://registry.yarnpkg.com/vue-devtools/-/vue-devtools-5.1.4.tgz#265a7458ade2affb291739176964256b597fa302"
From 8c67807311ef673b36e6aeba0f95a610e3a155ad Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 2 Sep 2024 22:58:50 +0200
Subject: [PATCH 158/489] Bump the stylelint group with 2 updates (#5633)
Bumps the stylelint group with 2 updates: [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).
Updates `postcss` from 8.4.41 to 8.4.44
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.41...8.4.44)
Updates `stylelint` from 16.8.2 to 16.9.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.8.2...16.9.0)
---
updated-dependencies:
- dependency-name: postcss
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: stylelint
- dependency-name: stylelint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: stylelint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 ++--
yarn.lock | 42 +++++++++++++++++++++---------------------
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/package.json b/package.json
index a3d85211de057..9d45298d03044 100644
--- a/package.json
+++ b/package.json
@@ -107,13 +107,13 @@
"lefthook": "^1.7.15",
"mini-css-extract-plugin": "^2.9.1",
"npm-run-all2": "^6.2.2",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.44",
"postcss-scss": "^4.0.9",
"prettier": "^2.8.8",
"rimraf": "^6.0.1",
"sass": "^1.77.8",
"sass-loader": "^16.0.1",
- "stylelint": "^16.8.2",
+ "stylelint": "^16.9.0",
"stylelint-config-sass-guidelines": "^12.0.0",
"stylelint-config-standard": "^36.0.1",
"stylelint-high-performance-animation": "^1.10.0",
diff --git a/yarn.lock b/yarn.lock
index 78d3adf072b28..600e6bb3573df 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1104,7 +1104,7 @@
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==
-"@csstools/css-parser-algorithms@^3.0.0":
+"@csstools/css-parser-algorithms@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz#f14ade63bae5f6025ac85c7d03fe47a7ca0e58af"
integrity sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==
@@ -1114,7 +1114,7 @@
resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8"
integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==
-"@csstools/css-tokenizer@^3.0.0":
+"@csstools/css-tokenizer@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz#9dd9b10084f3011290f96789598091e5bcb3c29a"
integrity sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==
@@ -1124,7 +1124,7 @@
resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5"
integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==
-"@csstools/media-query-list-parser@^3.0.0":
+"@csstools/media-query-list-parser@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz#9474e08e6d7767cf68c56bf1581b59d203360cb0"
integrity sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==
@@ -5764,7 +5764,7 @@ methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.7:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -6642,10 +6642,10 @@ postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.41:
- version "8.4.41"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
- integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
+postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.4.44:
+ version "8.4.44"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.44.tgz#d56834ef6508610ba224bb22b2457b2169ed0480"
+ integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.1"
@@ -7692,14 +7692,14 @@ stylelint-use-logical-spec@^5.0.1:
resolved "https://registry.yarnpkg.com/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#d5aa254d615d373f18214297c0b49a03a6ca5980"
integrity sha512-UfLB4LW6iG4r3cXxjxkiHQrFyhWFqt8FpNNngD+TyvgMWSokk5TYwTvBHS3atUvZhOogllTOe/PUrGE+4z84AA==
-stylelint@^16.4.0, stylelint@^16.8.2:
- version "16.8.2"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.8.2.tgz#7fda18b919a36e206e897417d4720baceb3af122"
- integrity sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==
+stylelint@^16.4.0, stylelint@^16.9.0:
+ version "16.9.0"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.9.0.tgz#81615c0608b9dc645486e08e35c6c9206e1ba132"
+ integrity sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==
dependencies:
- "@csstools/css-parser-algorithms" "^3.0.0"
- "@csstools/css-tokenizer" "^3.0.0"
- "@csstools/media-query-list-parser" "^3.0.0"
+ "@csstools/css-parser-algorithms" "^3.0.1"
+ "@csstools/css-tokenizer" "^3.0.1"
+ "@csstools/media-query-list-parser" "^3.0.1"
"@csstools/selector-specificity" "^4.0.0"
"@dual-bundle/import-meta-resolve" "^4.1.0"
balanced-match "^2.0.0"
@@ -7721,7 +7721,7 @@ stylelint@^16.4.0, stylelint@^16.8.2:
known-css-properties "^0.34.0"
mathml-tag-names "^2.1.3"
meow "^13.2.0"
- micromatch "^4.0.7"
+ micromatch "^4.0.8"
normalize-path "^3.0.0"
picocolors "^1.0.1"
postcss "^8.4.41"
@@ -7732,7 +7732,7 @@ stylelint@^16.4.0, stylelint@^16.8.2:
resolve-from "^5.0.0"
string-width "^4.2.3"
strip-ansi "^7.1.0"
- supports-hyperlinks "^3.0.0"
+ supports-hyperlinks "^3.1.0"
svg-tags "^1.0.0"
table "^6.8.2"
write-file-atomic "^5.0.1"
@@ -7765,10 +7765,10 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
-supports-hyperlinks@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#c711352a5c89070779b4dad54c05a2f14b15c94b"
- integrity sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==
+supports-hyperlinks@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz#b56150ff0173baacc15f21956450b61f2b18d3ac"
+ integrity sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==
dependencies:
has-flag "^4.0.0"
supports-color "^7.0.0"
From 406512f1f7a35c86645b914e13fade7b29849714 Mon Sep 17 00:00:00 2001
From: gallegonovato
Date: Mon, 2 Sep 2024 19:53:24 +0000
Subject: [PATCH 159/489] Translated using Weblate (Spanish)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
---
static/locales/es.yaml | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/static/locales/es.yaml b/static/locales/es.yaml
index 8f9232d96fbb9..ecbcaeabdb3af 100644
--- a/static/locales/es.yaml
+++ b/static/locales/es.yaml
@@ -975,6 +975,35 @@ Video:
Unhide Channel: Mostrar el canal
Hide Channel: Ocultar el canal
More Options: Más opciones
+ Player:
+ TranslatedCaptionTemplate: '{language} (traducido de "{originalLanguage}")'
+ Exit Full Window: Salir de la pantalla completa
+ Take Screenshot: Hacer una captura de pantalla
+ Show Stats: Mostrar estadísticas
+ Hide Stats: Ocultar estadísticas
+ Stats:
+ Stats: Estadísticas
+ Video ID: 'ID del vídeo: {videoId}'
+ Media Formats: 'Formatos del medio: {formats}'
+ Resolution: 'Resolución: {width}x{height}@{frameRate}'
+ Player Dimensions: 'Dimensiones del reproductor: {width}x{height}'
+ Bitrate: 'Tasa de bits: {bitrate} kbps'
+ Volume: 'Volumen: {volumePercentage}%'
+ Bandwidth: 'Ancho de banda: {bandwidth} kbps'
+ Buffered: 'Almacenado en búfer: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Fotogramas eliminados: {droppedFrames} / Fotogramas
+ totales: {totalFrames}'
+ CodecAudio: 'Codec: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}'
+ You appear to be offline: Parece que no tienes conexión.
+ Playback will resume automatically when your connection comes back: La reproducción
+ se reanudará automáticamente cuando se restablezca la conexión.
+ Skipped segment: Segmento {segmentCategory} omitido
+ Audio Tracks: Pistas de audio
+ Theatre Mode: Modo cine
+ Exit Theatre Mode: Salir del modo cine
+ Full Window: Pantalla completa
Videos:
#& Sort By
Sort By:
@@ -1013,6 +1042,8 @@ Change Format:
para este vídeo
Dash formats are not available for this video: Los formatos DASH no están disponibles
para este vídeo
+ Legacy formats are not available for this video: Los formatos antiguos no están
+ disponibles para este vídeo
Share:
Share Video: 'Compartir vídeo'
Share Playlist: 'Compartir lista de reproducción'
From 78dea2d7a052d5bc7df9ba1804b5c13ab04264f8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 2 Sep 2024 17:27:51 -0400
Subject: [PATCH 160/489] Bump swiper from 11.1.10 to 11.1.12 (#5635)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.1.10 to 11.1.12.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v11.1.10...v11.1.12)
---
updated-dependencies:
- dependency-name: swiper
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 9d45298d03044..cf93e6ce8a487 100644
--- a/package.json
+++ b/package.json
@@ -68,7 +68,7 @@
"portal-vue": "^2.1.7",
"process": "^0.11.10",
"shaka-player": "^4.10.12",
- "swiper": "^11.1.10",
+ "swiper": "^11.1.12",
"vue": "^2.7.16",
"vue-i18n": "^8.28.2",
"vue-observe-visibility": "^1.0.0",
diff --git a/yarn.lock b/yarn.lock
index 600e6bb3573df..25c09d9bcaec0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7796,10 +7796,10 @@ svgo@^3.2.0:
csso "^5.0.5"
picocolors "^1.0.0"
-swiper@^11.1.10:
- version "11.1.10"
- resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.10.tgz#4d3df50ff8afc4960e9644ed6e5828d35ab38853"
- integrity sha512-pAVM6vCb6bumj2B9aSh67l3wP1j5YR8dPQM1YhQKMpnBc33vs+RpyVz6NZYZl/ZopCBSYbbWK5nvESwbmU0QXQ==
+swiper@^11.1.12:
+ version "11.1.12"
+ resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.12.tgz#563b90dd0162925025878c2ec4e136cc46bcb4f4"
+ integrity sha512-PUkCToYAZMB4kP7z+YfPnkMHOMwMO71g8vUhz2o5INGIgIMb6Sb0XiP6cEJFsiFTd7FRDn5XCbg+KVKPDZqXLw==
synckit@^0.6.0:
version "0.6.2"
From fd941aed482b726c2bbcbd05af49463c78aa0d84 Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 21:55:06 +0000
Subject: [PATCH 161/489] Translated using Weblate (German)
Currently translated at 99.0% (867 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
---
static/locales/de-DE.yaml | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml
index 0b06a83199637..fc9f29044886c 100644
--- a/static/locales/de-DE.yaml
+++ b/static/locales/de-DE.yaml
@@ -953,6 +953,30 @@ Video:
Unhide Channel: Kanal anzeigen
Hide Channel: Kanal ausblenden
More Options: Weitere Optionen
+ Player:
+ Audio Tracks: Audiospuren
+ Theatre Mode: Theater-Modus
+ Exit Theatre Mode: Theater-Modus beenden
+ Full Window: Vollständiges Fenster
+ Take Screenshot: Bildschirmfoto aufnehmen
+ Show Stats: Statistiken anzeigen
+ Stats:
+ Stats: Statistiken
+ Video ID: 'Videokennung: {videoId}'
+ Media Formats: 'Medienformate: {formats}'
+ Resolution: 'Auflösung: {width}×{height}@{frameRate}'
+ Player Dimensions: 'Player-Dimensionen: {width}×{height}'
+ Bitrate: 'Bitrate: {bitrate} kb/s'
+ Volume: 'Lautstärke: {volumePercentage} %'
+ Bandwidth: 'Bandbreite: {bandwidth} kb/s'
+ Buffered: 'Pufferspeichern: {bufferedPercentage} %'
+ You appear to be offline: Sie scheinen offline zu sein.
+ Playback will resume automatically when your connection comes back: Die Wiedergabe
+ wird automatisch wieder aufgenommen, wenn Ihre Verbindung zurückkommt.
+ Skipped segment: '{segmentCategory}-Segment ausgelassen'
+ TranslatedCaptionTemplate: '{language} (übersetzt von {originalLanguage})'
+ Exit Full Window: Vollständiges Fenster beenden
+ Hide Stats: Statistiken ausblenden
Videos:
#& Sort By
Sort By:
@@ -991,6 +1015,8 @@ Change Format:
nicht verfügbar
Dash formats are not available for this video: DASH-Formate sind für dieses Video
nicht verfügbar
+ Legacy formats are not available for this video: Legacy-Formate sind nicht verfügbar
+ für dieses Video
Share:
Share Video: Video teilen
Share Playlist: Wiedergabeliste teilen
From 3aa4d4e9948b32e8116efa37bcfe243e9f7df6e5 Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 21:44:17 +0000
Subject: [PATCH 162/489] Translated using Weblate (French)
Currently translated at 99.8% (874 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
---
static/locales/fr-FR.yaml | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml
index d99e5e71915e3..1626f188d4225 100644
--- a/static/locales/fr-FR.yaml
+++ b/static/locales/fr-FR.yaml
@@ -966,6 +966,33 @@ Video:
Hide Channel: Cacher la chaîne
Unhide Channel: Rétablir la chaîne
More Options: Plus d'options
+ Player:
+ Audio Tracks: Pistes audio
+ Theatre Mode: Mode théâtre
+ Exit Theatre Mode: Quitter le mode théâtre
+ Full Window: Fenêtre pleine
+ Show Stats: Afficher les stats
+ Hide Stats: Masquer les stats
+ Stats:
+ Stats: Stats
+ Video ID: 'Identifiant de la vidéo : {videoId}'
+ Media Formats: 'Formats du média : {formats}'
+ Resolution: 'Résolution : {width}×{height}@{frameRate}'
+ Player Dimensions: 'Dimensions du lecteur : {width}×{height}'
+ Volume: 'Volume : {volumePercentage} %'
+ Bandwidth: 'Bande passante : {bandwidth} kb/s'
+ Bitrate: 'Débit binaire : {bitrate} kb/s'
+ Buffered: 'Mise en mémoire tampon : {bufferedPercentage} %'
+ CodecAudio: 'Codec : {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codecs : {videoCodec} / {audioCodec}'
+ CodecsVideoAudio: 'Codecs : {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ Skipped segment: Segment {segmentCategory} ignoré
+ TranslatedCaptionTemplate: '{language} (traduit depuis : {originalLanguage})'
+ Exit Full Window: Quitter la fenêtre pleine
+ Take Screenshot: Prendre une capture d'écran
+ You appear to be offline: Vous semblez être hors ligne.
+ Playback will resume automatically when your connection comes back: La lecture
+ reprendra automatiquement quand votre connexion reviendra.
Videos:
#& Sort By
Sort By:
@@ -1004,6 +1031,8 @@ Change Format:
pour cette vidéo
Dash formats are not available for this video: Le format DASH n'est pas disponible
pour cette vidéo
+ Legacy formats are not available for this video: Les formats héritage ne sont pas
+ disponibles pour cette vidéo
Share:
Share Video: 'Partager la vidéo'
Share Playlist: 'Partager la liste de lecture'
From 1e69744eb05c9636b4e0e35655559ad339475414 Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 22:02:54 +0000
Subject: [PATCH 163/489] Translated using Weblate (Italian)
Currently translated at 98.9% (866 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 487338b298cbc..17aecc6f4bd6f 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -934,6 +934,18 @@ Video:
Unhide Channel: Mostra canale
Hide Channel: Nascondi canale
More Options: Più opzioni
+ Player:
+ TranslatedCaptionTemplate: '{language} (tradotto da: {originalLanguage})'
+ Audio Tracks: Tracce audio
+ Theatre Mode: Modalità teatro
+ Exit Theatre Mode: Esci dalla modalità teatro
+ Show Stats: Mostra statistiche
+ Stats:
+ Media Formats: 'Formati multimediali: {formats}'
+ Resolution: 'Risoluzione: {width}×{height}@{frameRate}'
+ Player Dimensions: 'Dimensioni del lettore: {width}×{height}'
+ Stats: Statistiche
+ Hide Stats: Nascondi statistiche
Videos:
#& Sort By
Sort By:
From a6d8ee32054582e1ed6bc7e7f41dc17dfc5d1147 Mon Sep 17 00:00:00 2001
From: Massimo Pissarello
Date: Mon, 2 Sep 2024 22:07:29 +0000
Subject: [PATCH 164/489] Translated using Weblate (Italian)
Currently translated at 98.9% (866 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 17aecc6f4bd6f..24026eed2a98a 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -945,7 +945,14 @@ Video:
Resolution: 'Risoluzione: {width}×{height}@{frameRate}'
Player Dimensions: 'Dimensioni del lettore: {width}×{height}'
Stats: Statistiche
+ Video ID: 'ID video: {videoId}'
+ Bitrate: 'Bitrate: {bitrate} kbps'
+ Volume: 'Volume: {volumePercentage}%'
+ Bandwidth: 'Larghezza di banda: {bandwidth} kbps'
Hide Stats: Nascondi statistiche
+ Full Window: Finestra intera
+ Exit Full Window: Esci da Finestra intera
+ Take Screenshot: Acquisisci screenshot
Videos:
#& Sort By
Sort By:
From a88844bb866b1f6a833d9a21dce7ece2b07b2ecb Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 22:10:45 +0000
Subject: [PATCH 165/489] Translated using Weblate (Italian)
Currently translated at 99.3% (869 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 24026eed2a98a..759b82474f4e8 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -946,13 +946,16 @@ Video:
Player Dimensions: 'Dimensioni del lettore: {width}×{height}'
Stats: Statistiche
Video ID: 'ID video: {videoId}'
- Bitrate: 'Bitrate: {bitrate} kbps'
+ Bitrate: 'Velocità di trasmissione: {bitrate} kb/s'
Volume: 'Volume: {volumePercentage}%'
- Bandwidth: 'Larghezza di banda: {bandwidth} kbps'
+ Bandwidth: 'Larghezza di banda: {bandwidth} kb/s'
Hide Stats: Nascondi statistiche
Full Window: Finestra intera
Exit Full Window: Esci da Finestra intera
Take Screenshot: Acquisisci screenshot
+ You appear to be offline: Sembra che tu sia offline.
+ Playback will resume automatically when your connection comes back: La riproduzione
+ riprenderà automaticamente quando la connessione tornerà.
Videos:
#& Sort By
Sort By:
From a69f98a50a362f245e0061205dee64317c6fec17 Mon Sep 17 00:00:00 2001
From: Massimo Pissarello
Date: Mon, 2 Sep 2024 22:11:04 +0000
Subject: [PATCH 166/489] Translated using Weblate (Italian)
Currently translated at 99.3% (869 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 759b82474f4e8..2935f735c23d2 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -949,6 +949,7 @@ Video:
Bitrate: 'Velocità di trasmissione: {bitrate} kb/s'
Volume: 'Volume: {volumePercentage}%'
Bandwidth: 'Larghezza di banda: {bandwidth} kb/s'
+ Buffered: 'Bufferizzato: {bufferedPercentage}%'
Hide Stats: Nascondi statistiche
Full Window: Finestra intera
Exit Full Window: Esci da Finestra intera
From 8d6700103fd47c819f7055fc2153c8f2bf10698a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?=
=?UTF-8?q?=E5=B1=B1?=
Date: Tue, 3 Sep 2024 00:02:24 +0000
Subject: [PATCH 167/489] Translated using Weblate (Chinese (Simplified Han
script))
Currently translated at 99.7% (873 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
---
static/locales/zh-CN.yaml | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml
index 8e4c60c558248..53221192ec985 100644
--- a/static/locales/zh-CN.yaml
+++ b/static/locales/zh-CN.yaml
@@ -823,6 +823,32 @@ Video:
Unhide Channel: 显示频道
Hide Channel: 隐藏频道
More Options: 更多选项
+ Player:
+ Audio Tracks: 音轨
+ Theatre Mode: 影院模式
+ Full Window: 全窗口
+ Exit Full Window: 退出全窗口
+ Take Screenshot: 截屏
+ Show Stats: 显示统计信息
+ Hide Stats: 隐藏统计信息
+ Stats:
+ Stats: 统计信息
+ Video ID: 视频 ID: {videoId}
+ Media Formats: 媒体格式:{formats}
+ Resolution: 分辨率:{width}x{height}@{frameRate}
+ Player Dimensions: 播放器尺寸: {width}x{height}
+ Bitrate: 比特率:{bitrate} kbps
+ Volume: 音量:{volumePercentage}%
+ Buffered: 已缓冲:{bufferedPercentage}%
+ Dropped Frames / Total Frames: 丢弃帧:{droppedFrames} / 总帧数: {totalFrames}
+ CodecAudio: 编解码器:{audioCodec} ({audioItag})
+ CodecsVideoAudioNoItags: 编解码器:{videoCodec} / {audioCodec}
+ Bandwidth: 带宽:{bandwidth} kbps
+ CodecsVideoAudio: 编解码器:{videoCodec} ({videoItag}) / {audioCodec} ({audioItag})
+ You appear to be offline: 你似乎处于离线状态。
+ Playback will resume automatically when your connection comes back: 网络连接恢复时,将自动继续播放。
+ TranslatedCaptionTemplate: '{language} (翻译自 "{originalLanguage}")'
+ Exit Theatre Mode: 推出影院模式
Videos:
#& Sort By
Sort By:
From aaf57faaa028a0060af42fafffca3f464331b44c Mon Sep 17 00:00:00 2001
From: Massimo Pissarello
Date: Mon, 2 Sep 2024 22:13:38 +0000
Subject: [PATCH 168/489] Translated using Weblate (Italian)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
---
static/locales/it.yaml | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/static/locales/it.yaml b/static/locales/it.yaml
index 2935f735c23d2..7782f54c441a5 100644
--- a/static/locales/it.yaml
+++ b/static/locales/it.yaml
@@ -935,10 +935,10 @@ Video:
Hide Channel: Nascondi canale
More Options: Più opzioni
Player:
- TranslatedCaptionTemplate: '{language} (tradotto da: {originalLanguage})'
+ TranslatedCaptionTemplate: '{language} (tradotto da "{originalLanguage}")'
Audio Tracks: Tracce audio
Theatre Mode: Modalità teatro
- Exit Theatre Mode: Esci dalla modalità teatro
+ Exit Theatre Mode: Esci dalla Modalità teatro
Show Stats: Mostra statistiche
Stats:
Media Formats: 'Formati multimediali: {formats}'
@@ -946,17 +946,23 @@ Video:
Player Dimensions: 'Dimensioni del lettore: {width}×{height}'
Stats: Statistiche
Video ID: 'ID video: {videoId}'
- Bitrate: 'Velocità di trasmissione: {bitrate} kb/s'
+ Bitrate: 'Bitrate: {bitrate} kbps'
Volume: 'Volume: {volumePercentage}%'
- Bandwidth: 'Larghezza di banda: {bandwidth} kb/s'
+ Bandwidth: 'Larghezza di banda: {bandwidth} kbps'
Buffered: 'Bufferizzato: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Fotogrammi persi: {droppedFrames} / Fotogrammi
+ totali: {totalFrames}'
+ CodecAudio: 'Codec: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Codec: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codec: {videoCodec} / {audioCodec}'
Hide Stats: Nascondi statistiche
Full Window: Finestra intera
Exit Full Window: Esci da Finestra intera
Take Screenshot: Acquisisci screenshot
You appear to be offline: Sembra che tu sia offline.
Playback will resume automatically when your connection comes back: La riproduzione
- riprenderà automaticamente quando la connessione tornerà.
+ riprenderà automaticamente quando verrà ripristinata la connessione.
+ Skipped segment: Segmento {segmentCategory} saltato
Videos:
#& Sort By
Sort By:
@@ -995,6 +1001,8 @@ Change Format:
per questo video
Dash formats are not available for this video: I formati DASH non sono disponibili
per questo video
+ Legacy formats are not available for this video: I formati obsoleti non sono disponibili
+ per questo video
Share:
Share Video: 'Condividi video'
Share Playlist: 'Condividi la playlist'
From df6b5dfee66dcd5b7e0016952f2d9241d2acfd46 Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 22:15:07 +0000
Subject: [PATCH 169/489] Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
---
static/locales/en_GB.yaml | 36 ++++++++++++++++++++----------------
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml
index 85be4a61bb9a5..56e55ff944956 100644
--- a/static/locales/en_GB.yaml
+++ b/static/locales/en_GB.yaml
@@ -947,30 +947,32 @@ Video:
More Options: More options
Player:
TranslatedCaptionTemplate: '{language} (translated from ‘{originalLanguage}’)'
- Audio Tracks: Audio Tracks
- Theatre Mode: Theatre Mode
- Exit Theatre Mode: Exit Theatre Mode
- Full Window: Full Window
- Exit Full Window: Exit Full Window
- Take Screenshot: Take Screenshot
- Show Stats: Show Stats
- Hide Stats: Hide Stats
+ Audio Tracks: Audio tracks
+ Theatre Mode: Theatre mode
+ Exit Theatre Mode: Exit theatre mode
+ Full Window: Full window
+ Exit Full Window: Exit full window
+ Take Screenshot: Take screenshot
+ Show Stats: Show stats
+ Hide Stats: Hide stats
Stats:
Stats: Stats
Video ID: 'Video ID: {videoId}'
Media Formats: 'Media formats: {formats}'
- Resolution: 'Resolution: {width}x{height}@{frameRate}'
- Player Dimensions: 'Player dimensions: {width}x{height}'
- Bitrate: 'Bitrate: {bitrate} kbps'
+ Resolution: 'Resolution: {width}×{height}@{frameRate}'
+ Player Dimensions: 'Player dimensions: {width}×{height}'
+ Bitrate: 'Bitrate: {bitrate} kb/s'
Volume: 'Volume: {volumePercentage}%'
- Bandwidth: 'Bandwidth: {bandwidth} kbps'
+ Bandwidth: 'Bandwidth: {bandwidth} kb/s'
Buffered: 'Buffered: {bufferedPercentage}%'
- Dropped Frames / Total Frames: 'Dropped frames: {droppedFrames} / Total frames: {totalFrames}'
+ Dropped Frames / Total Frames: 'Dropped frames: {droppedFrames} / Total frames:
+ {totalFrames}'
CodecAudio: 'Codec: {audioCodec} ({audioItag})'
CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}'
You appear to be offline: You appear to be offline.
- Playback will resume automatically when your connection comes back: Playback will resume automatically when your connection comes back.
+ Playback will resume automatically when your connection comes back: Playback will
+ resume automatically when your connection comes back.
Skipped segment: 'Skipped {segmentCategory} segment'
Videos:
#& Sort By
@@ -982,11 +984,11 @@ Videos:
Playlist:
#& About
Playlist: Playlist
- View Full Playlist: 'View Full Playlist'
+ View Full Playlist: 'View full playlist'
Videos: 'Videos'
View: 'View'
Views: 'Views'
- Last Updated On: 'Last Updated On'
+ Last Updated On: 'Last updated on'
# On Video Watch Page
#* Published
@@ -1010,6 +1012,8 @@ Change Format:
this video'
Audio formats are not available for this video: 'Audio formats are not available
for this video'
+ Legacy formats are not available for this video: Legacy formats are not available
+ for this video
Share:
Share Video: 'Share Video'
Share Channel: 'Share Channel'
From b86eb518a51b2c7bce5015b096456a41e6a80766 Mon Sep 17 00:00:00 2001
From: "J. Lavoie"
Date: Mon, 2 Sep 2024 22:15:45 +0000
Subject: [PATCH 170/489] Translated using Weblate (Turkish)
Currently translated at 97.0% (849 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
---
static/locales/tr.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml
index 6575a0817e8d0..6e1a17298fe2f 100644
--- a/static/locales/tr.yaml
+++ b/static/locales/tr.yaml
@@ -989,11 +989,11 @@ Videos:
#& Playlists
Playlist:
#& About
- View Full Playlist: 'Tüm Oynatma Listesini Görüntüle'
+ View Full Playlist: 'Tüm oynatma listesini görüntüle'
Videos: 'Videolar'
View: 'Görüntüle'
Views: 'İzlenme'
- Last Updated On: 'Son Güncelleme Tarihi'
+ Last Updated On: 'Son güncelleme tarihi'
# On Video Watch Page
#* Published
From f60ca8bfc758c0e1faf18f3c5940d2f6232f5956 Mon Sep 17 00:00:00 2001
From: NEXI
Date: Mon, 2 Sep 2024 23:08:22 +0000
Subject: [PATCH 171/489] Translated using Weblate (Serbian)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/
---
static/locales/sr.yaml | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml
index 6da06af08268a..0383a0c13cd87 100644
--- a/static/locales/sr.yaml
+++ b/static/locales/sr.yaml
@@ -912,6 +912,35 @@ Video:
Unhide Channel: Прикажи канал
Hide Channel: Сакриј канал
More Options: Више опција
+ Player:
+ TranslatedCaptionTemplate: '{language} (преведено са „{originalLanguage}“)'
+ Theatre Mode: Режим биоскопа
+ Exit Theatre Mode: Изађи из режима биоскопа
+ Exit Full Window: Изађи из целог прозора
+ Take Screenshot: Направи снимак екрана
+ Show Stats: Прикажи статистику
+ Hide Stats: Сакриј статистику
+ Stats:
+ Video ID: 'ID видеа: {videoId}'
+ Media Formats: 'Формат медија: {formats}'
+ Resolution: 'Резолуција: {width}x{height}@{frameRate}'
+ Volume: 'Волумен: {volumePercentage}%'
+ Stats: Статистика
+ Dropped Frames / Total Frames: 'Испуштени кадрови: {droppedFrames} / Укупан
+ број кадрова: {totalFrames}'
+ CodecAudio: 'Кодек: {audioCodec} ({audioItag})'
+ Player Dimensions: 'Димензије плејера: {width}x{height}'
+ Bitrate: 'Брзина преноса: {bitrate} kbps'
+ Bandwidth: 'Пропусни опсег: {bandwidth} kbps'
+ Buffered: 'Баферовано: {bufferedPercentage}%'
+ CodecsVideoAudio: 'Кодеци: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Кодеци: {videoCodec} / {audioCodec}'
+ Audio Tracks: Аудио нумере
+ Full Window: Цео прозор
+ You appear to be offline: Изгледа да сте офлајн.
+ Playback will resume automatically when your connection comes back: Репродукција
+ ће се аутоматски наставити када се ваша интернет веза врати.
+ Skipped segment: Прескочен сегмент „{segmentCategory}“
Tooltips:
Subscription Settings:
Fetch Feeds from RSS: 'Када је омогућено, FreeTube ће користити RSS уместо свог
@@ -1023,6 +1052,8 @@ Change Format:
Change Media Formats: Промени формате медија
Use Dash Formats: Користи DASH формате
Use Legacy Formats: Користи застареле формате
+ Legacy formats are not available for this video: Застарели формати нису доступни
+ за овај видео снимак
Comments:
Comments: Коментари
Sort by: Сортирање по
From c28a0e8324568510834b4edecfbba526723d4c2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?=
=?UTF-8?q?=E5=B1=B1?=
Date: Tue, 3 Sep 2024 00:10:22 +0000
Subject: [PATCH 172/489] Translated using Weblate (Chinese (Simplified Han
script))
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
---
static/locales/zh-CN.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml
index 53221192ec985..f1f081a003fcd 100644
--- a/static/locales/zh-CN.yaml
+++ b/static/locales/zh-CN.yaml
@@ -849,6 +849,7 @@ Video:
Playback will resume automatically when your connection comes back: 网络连接恢复时,将自动继续播放。
TranslatedCaptionTemplate: '{language} (翻译自 "{originalLanguage}")'
Exit Theatre Mode: 推出影院模式
+ Skipped segment: 跳过了 {segmentCategory} 部分
Videos:
#& Sort By
Sort By:
@@ -885,6 +886,7 @@ Change Format:
Use Audio Formats: '使用音频格式'
Audio formats are not available for this video: 这个视频没有音频格式
Dash formats are not available for this video: 这个视频没有Dash格式
+ Legacy formats are not available for this video: 旧格式对这个视频不可用
Share:
Share Video: '分享视频'
Share Playlist: '分享播放列表'
From 1f68475a1869c8715849d67fd87a4be7f99019f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Grzegorz=20W=C3=B3jcicki?=
Date: Tue, 3 Sep 2024 00:41:48 +0000
Subject: [PATCH 173/489] Translated using Weblate (Polish)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
---
static/locales/pl.yaml | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml
index 213b51911f357..b318f6514f821 100644
--- a/static/locales/pl.yaml
+++ b/static/locales/pl.yaml
@@ -938,6 +938,35 @@ Video:
Unhide Channel: Pokaż kanał
Hide Channel: Ukryj kanał
More Options: Więcej opcji
+ Player:
+ TranslatedCaptionTemplate: '{language} (przetłumaczono z: "{originalLanguage}")'
+ Audio Tracks: Ścieżki audio
+ Theatre Mode: Tryb kina
+ Exit Theatre Mode: Wyłącz tryb kina
+ Exit Full Window: Wyłącz pełny ekran
+ Take Screenshot: Zrób zrzut ekranu
+ Show Stats: Pokaż statystyki
+ Hide Stats: Schowaj statystyki
+ Stats:
+ Stats: Statystyki
+ Video ID: 'ID filmu: {videoId}'
+ Player Dimensions: 'Rozmiary odtwarzacza: {width}x{height}'
+ Bitrate: 'Bitrate: {bitrate} kbps'
+ Volume: 'Głośność: {volumePercentage}%'
+ Bandwidth: 'Szerokość pasma: {bandwidth} kbps'
+ Buffered: 'Zbuforowano: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Zgubione klatki: {droppedFrames} / Wszystkie
+ klatki: {totalFrames}'
+ CodecAudio: 'Kodek: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Kodeki: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Kodeki: {videoCodec} / {audioCodec}'
+ Media Formats: 'Formaty ścieżek: {formats}'
+ Resolution: 'Rozdzielczość: {width}x{height}@{frameRate}'
+ You appear to be offline: Zdaje się, że jesteś rozłączony.
+ Playback will resume automatically when your connection comes back: Odtwarzanie
+ zostanie wznowione, jak tylko połączenie zostanie odzyskane.
+ Skipped segment: Pominięto segment {segmentCategory}
+ Full Window: Pełny ekran
Videos:
#& Sort By
Sort By:
@@ -976,6 +1005,8 @@ Change Format:
tego filmu
Dash formats are not available for this video: Formaty DASH nie są dostępne dla
tego filmu
+ Legacy formats are not available for this video: Ten film nie jest dostępny w starych
+ formatach
Share:
Share Video: 'Podziel się filmem'
Share Playlist: 'Podziel się playlistą'
From 37a528e62b0ff72e826a7da32c48b82a3b7d19f7 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Tue, 3 Sep 2024 02:16:18 +0000
Subject: [PATCH 174/489] Translated using Weblate (Chinese (Traditional Han
script))
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
---
static/locales/zh-TW.yaml | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml
index c1e725d47dd48..09372ed86b17a 100644
--- a/static/locales/zh-TW.yaml
+++ b/static/locales/zh-TW.yaml
@@ -832,6 +832,33 @@ Video:
Unhide Channel: 顯示頻道
Hide Channel: 隱藏頻道
More Options: 更多選項
+ Player:
+ TranslatedCaptionTemplate: '{language}(翻譯自「{originalLanguage}」)'
+ Audio Tracks: 音訊軌
+ Theatre Mode: 劇院模式
+ Exit Theatre Mode: 離開劇院模式
+ Full Window: 全視窗
+ Exit Full Window: 離開全視窗
+ Take Screenshot: 拍攝螢幕截圖
+ Show Stats: 顯示統計資料
+ Hide Stats: 隱藏統計資料
+ Stats:
+ Stats: 統計資料
+ Video ID: 影片 ID:{videoId}
+ Media Formats: 媒體格式:{formats}
+ Resolution: 解析度:{width}x{height}@{frameRate}
+ Player Dimensions: 播放器尺寸:{width}x{height}
+ Bitrate: 位元速率:{bitrate} kbps
+ Volume: 音量:{volumePercentage}%
+ Bandwidth: 頻寬:{bandwidth} kbps
+ Buffered: 已緩衝:{bufferedPercentage}%
+ Dropped Frames / Total Frames: 丟棄的畫面數:{droppedFrames} / 總畫面數:{totalFrames}
+ CodecAudio: 編解碼器:{audioCodec} ({audioItag})
+ CodecsVideoAudio: 編解碼器:{videoCodec} ({videoItag}) / {audioCodec} ({audioItag})
+ CodecsVideoAudioNoItags: 編解碼器:{videoCodec} / {audioCodec}
+ You appear to be offline: 您似乎已離線。
+ Playback will resume automatically when your connection comes back: 當您的連線恢復時,將會自動繼續播放。
+ Skipped segment: 已跳過 {segmentCategory} 段
Videos:
#& Sort By
Sort By:
@@ -868,6 +895,7 @@ Change Format:
Use Audio Formats: '使用音訊格式'
Audio formats are not available for this video: 這個影片沒有音訊格式
Dash formats are not available for this video: 這個影片沒有 DASH 格式
+ Legacy formats are not available for this video: 舊格式不適用於該影片
Share:
Share Video: '分享影片'
Share Playlist: '分享播放清單'
From c8d0041af9709ff01073e8363a2dcd546a67ee26 Mon Sep 17 00:00:00 2001
From: Jose Delvani
Date: Tue, 3 Sep 2024 03:16:12 +0000
Subject: [PATCH 175/489] Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/
---
static/locales/pt-BR.yaml | 35 +++++++++++++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml
index c676dfcaf8a66..d3ca87be128bc 100644
--- a/static/locales/pt-BR.yaml
+++ b/static/locales/pt-BR.yaml
@@ -18,8 +18,8 @@ Reload: 'Recarregar'
Force Reload: 'Forçar recarregamento'
Toggle Developer Tools: 'Alternar ferramentas de desenvolvedor'
Actual size: 'Tamanho atual'
-Zoom in: 'Aumentar zoom'
-Zoom out: 'Diminuir zoom'
+Zoom in: 'Ampliar'
+Zoom out: 'Reduzir'
Toggle fullscreen: 'Alternar tela cheia'
Window: 'Janela'
Minimize: 'Minimizar'
@@ -927,6 +927,35 @@ Video:
Unhide Channel: Mostrar canal
Hide Channel: Ocultar canal
More Options: Mais opções
+ Player:
+ Audio Tracks: Faixas de áudio
+ Theatre Mode: Modo Teatro
+ Exit Theatre Mode: Sair do modo Teatro
+ Take Screenshot: Capturar tela
+ Hide Stats: Ocultar estatísticas
+ Stats:
+ Stats: Estatísticas
+ Video ID: 'ID do vídeo: {videoId}'
+ Media Formats: 'Formatos de mídia: {formats}'
+ Resolution: 'Resolução: {width}x{height}@{frameRate}'
+ Player Dimensions: 'Dimensões do player: {width}x{height}'
+ Bitrate: 'Taxa de bits: {bitrate} kbps'
+ Volume: 'Volume: {volumePercentage}%'
+ Dropped Frames / Total Frames: 'Quadros descartados: {droppedFrames} / Total
+ de quadros: {totalFrames}'
+ CodecAudio: 'Codec: {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Codecs: {videoCodec} / {audioCodec}'
+ Buffered: 'Transferência: {bufferedPercentage}%'
+ Bandwidth: 'Transmissão de dados: {bandwidth} kbps'
+ CodecsVideoAudio: 'Codecs: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ You appear to be offline: Parece que você está offline.
+ Playback will resume automatically when your connection comes back: A reprodução
+ será retomada automaticamente quando a conexão for restabelecida.
+ Skipped segment: Segmento {segmentCategory} ignorado
+ Full Window: Preencher janela
+ TranslatedCaptionTemplate: '{language} (traduzido do "{originalLanguage}")'
+ Show Stats: Mostrar estatísticas
+ Exit Full Window: Sair do preenchimento de janela
Videos:
#& Sort By
Sort By:
@@ -965,6 +994,8 @@ Change Format:
para este vídeo
Dash formats are not available for this video: Formatos DASH não disponíveis para
este vídeo
+ Legacy formats are not available for this video: Os formatos antigos não estão disponíveis
+ para este vídeo
Share:
Share Video: 'Compartilhar vídeo'
Share Playlist: 'Compartilhar playlist'
From 90ae9beee71a51544dbefac5c728ed75b21e2414 Mon Sep 17 00:00:00 2001
From: summoner001
Date: Tue, 3 Sep 2024 05:03:04 +0000
Subject: [PATCH 176/489] Translated using Weblate (Hungarian)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
---
static/locales/hu.yaml | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml
index 364d04881b419..b318f270c1e22 100644
--- a/static/locales/hu.yaml
+++ b/static/locales/hu.yaml
@@ -981,6 +981,35 @@ Video:
Unhide Channel: Csatorna megjelenítése
Hide Channel: Csatorna elrejtése
More Options: További beállítások
+ Player:
+ Audio Tracks: Hangsávok
+ Exit Theatre Mode: Kilépés a színházmódból
+ Theatre Mode: Színházmód
+ Full Window: Teljes ablak
+ Exit Full Window: Kilépés a teljes ablakból
+ Take Screenshot: Képernyőkép készítése
+ Hide Stats: Statisztika elrejtése
+ Stats:
+ Stats: Statisztikák
+ Video ID: 'Videó azonosító: {videoId}'
+ Media Formats: 'Média formátum: {formats}'
+ Player Dimensions: 'Lejátszó mérete: {width}x{height}'
+ Bitrate: 'Bitsebesség: {bitrate} kbps'
+ Volume: 'Hangerő: {volumePercentage}%'
+ Bandwidth: 'Sávszélesség: {bandwidth} kbps'
+ Buffered: 'Pufferolt: {bufferedPercentage}%'
+ CodecAudio: 'Kodek: {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'Kodekek: {videoCodec} / {audioCodec}'
+ Dropped Frames / Total Frames: 'Kihagyott képkockák: {droppedFrames} / Összes
+ képkocka: {totalFrames}'
+ Resolution: 'Felbontás: {width}x{height}@{frameRate}'
+ CodecsVideoAudio: 'Kodekek: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ You appear to be offline: Úgy tűnik, hogy jelenleg nem kapcsolódsz a hálózathoz.
+ Skipped segment: Kihagyott {segmentCategory} szakasz
+ TranslatedCaptionTemplate: '{language} (fordítva erről: "{originalLanguage}")'
+ Show Stats: Statisztika megjelenítése
+ Playback will resume automatically when your connection comes back: A lejátszás
+ automatikusan folytatódik, amikor a kapcsolat helyreáll.
Videos:
#& Sort By
Sort By:
@@ -1021,6 +1050,8 @@ Change Format:
a videóhoz'
Audio formats are not available for this video: 'Hangformátumok nem érhetők el ehhez
a videóhoz'
+ Legacy formats are not available for this video: A régebbi formátumok nem állnak
+ rendelkezésre ehhez a videóhoz
Share:
Share Video: 'Videó megosztása'
Share Playlist: 'Lejátszási lista megosztása'
From 7bbf2d5cc216718b1747cf86c4f766b70dbb0bc4 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Tue, 3 Sep 2024 08:15:18 +0000
Subject: [PATCH 177/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 36 ++++++++++++++++++++++++++++++++----
1 file changed, 32 insertions(+), 4 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index c677cd16ab59b..f366651e5649c 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -123,7 +123,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:
このページは完全に機能する再生リストを反映していません。保存した動画やお気に入りの動画のみが表示されます。作業が完了すると、現在ここにあるすべての動画は「Favorites」の再生リストに移行されます。
Search bar placeholder: 再生リストの検索
Empty Search Message: この再生リストに、検索に一致する動画はありません
@@ -595,7 +595,7 @@ Settings:
Experimental Settings:
Replace HTTP Cache: HTTP キャッシュの置換
Experimental Settings: 実験中の設定
- Warning:
+ Warning:
これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください!
Password Settings:
Password Settings: パスワードの設定
@@ -830,6 +830,33 @@ Video:
Hide Channel: チャンネルを非表示
Unhide Channel: チャンネルを表示
More Options: その他の設定
+ Player:
+ Stats:
+ Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}'
+ CodecAudio: 'コーデック: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}'
+ Video ID: '動画 ID: {videoId}'
+ Media Formats: 'メディア形式: {formats}'
+ Resolution: '解像度: {width}x{height}@{frameRate}'
+ Player Dimensions: 'プレーヤー寸法: {width}x{height}'
+ Bitrate: 'ビットレート: {bitrate} kbps'
+ Volume: '音量: {volumePercentage}%'
+ Bandwidth: '帯域幅: {bandwidth} kbps'
+ Buffered: 'バッファ済み: {bufferedPercentage}%'
+ Stats: 統計
+ You appear to be offline: オフラインのようです。
+ Playback will resume automatically when your connection comes back: ネットワーク接続が回復すると再生が自動的に再開されます。
+ Skipped segment: '{segmentCategory} セグメントをスキップしました'
+ TranslatedCaptionTemplate: '{language}(「{originalLanguage}」から翻訳)'
+ Audio Tracks: オーディオ トラック
+ Theatre Mode: シアターモード
+ Exit Theatre Mode: シアターモードを終了
+ Exit Full Window: フルウィンドウを終了
+ Full Window: フルウィンドウ
+ Hide Stats: 統計を隠す
+ Take Screenshot: スクリーンショットを撮る
+ Show Stats: 統計を表示
Videos:
#& Sort By
Sort By:
@@ -866,6 +893,7 @@ Change Format:
Use Audio Formats: '音声形式の使用'
Audio formats are not available for this video: この動画には音声形式はありません
Dash formats are not available for this video: この動画には DASH 形式はありません
+ Legacy formats are not available for this video: この動画には旧形式を使用できません
Share:
Share Video: '動画の共有'
Share Playlist: '再生リストの共有'
@@ -1015,11 +1043,11 @@ Tooltips:
Replace HTTP Cache: Electron のディスクに基づく HTTP キャッシュを無効化し、メモリ内で独自の画像キャッシュを使用します。このことにより
RAM の使用率は増加します。
Distraction Free Settings:
- Hide Channels: チャンネル ID を入力すると、すべてのビデオ、再生リスト、チャンネル自体が検索や人気、およびおすすめに表示されなくなります。入力するチャンネル
+ Hide Channels: チャンネル ID を入力すると、すべての動画、再生リスト、チャンネル自体が検索や人気、およびおすすめに表示されなくなります。入力するチャンネル
ID は、大文字と小文字を区別するので完全に一致させてください。
Hide Subscriptions Live: この設定は、アプリ全体の "{appWideSetting}" 設定により上書きされます。"{settingsSection}"
項目の "{subsection}" にあります
- Hide Videos and Playlists Containing Text: FreeTube
+ Hide Videos and Playlists Containing Text: FreeTube
全体での履歴やあなたの再生リストと再生リスト内の動画を除き、元のタイトルにその単語を含む動画や単語の一部または、フレーズ(大文字と小文字を区別しない)が含まれているすべての動画と再生リストを非表示にします。
SponsorBlock Settings:
UseDeArrowTitles: 動画のタイトルを DeArrow からユーザーが投稿したタイトルに置き換えます。
From 4aac2f77dae1596e1b105e6c8503626f9b855d12 Mon Sep 17 00:00:00 2001
From: Cloud Esp
Date: Tue, 3 Sep 2024 07:31:31 +0000
Subject: [PATCH 178/489] Translated using Weblate (French)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
---
static/locales/fr-FR.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml
index 1626f188d4225..23d5d2da5d785 100644
--- a/static/locales/fr-FR.yaml
+++ b/static/locales/fr-FR.yaml
@@ -986,6 +986,8 @@ Video:
CodecAudio: 'Codec : {audioCodec} ({audioItag})'
CodecsVideoAudioNoItags: 'Codecs : {videoCodec} / {audioCodec}'
CodecsVideoAudio: 'Codecs : {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ Dropped Frames / Total Frames: 'Images perdues : {droppedFrames} / Images totales :
+ {totalFrames}'
Skipped segment: Segment {segmentCategory} ignoré
TranslatedCaptionTemplate: '{language} (traduit depuis : {originalLanguage})'
Exit Full Window: Quitter la fenêtre pleine
From b79d5d6e3cc2b3007135905d389f556b184e62b7 Mon Sep 17 00:00:00 2001
From: Riki Shinozaki
Date: Tue, 3 Sep 2024 12:01:33 +0000
Subject: [PATCH 179/489] Translated using Weblate (Japanese)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
---
static/locales/ja.yaml | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml
index f366651e5649c..bff57fcb200eb 100644
--- a/static/locales/ja.yaml
+++ b/static/locales/ja.yaml
@@ -832,18 +832,18 @@ Video:
More Options: その他の設定
Player:
Stats:
- Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}'
- CodecAudio: 'コーデック: {audioCodec} ({audioItag})'
- CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
- CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}'
- Video ID: '動画 ID: {videoId}'
- Media Formats: 'メディア形式: {formats}'
- Resolution: '解像度: {width}x{height}@{frameRate}'
- Player Dimensions: 'プレーヤー寸法: {width}x{height}'
- Bitrate: 'ビットレート: {bitrate} kbps'
- Volume: '音量: {volumePercentage}%'
- Bandwidth: '帯域幅: {bandwidth} kbps'
- Buffered: 'バッファ済み: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'コマ落ち: {droppedFrames} / 総フレーム: {totalFrames}'
+ CodecAudio: 'コーデック: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'コーデック: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ CodecsVideoAudioNoItags: 'コーデック: {videoCodec} / {audioCodec}'
+ Video ID: '動画 ID: {videoId}'
+ Media Formats: 'メディア形式: {formats}'
+ Resolution: '解像度: {width}x{height}@{frameRate}'
+ Player Dimensions: 'プレーヤーの寸法: {width}x{height}'
+ Bitrate: 'ビットレート: {bitrate} kbps'
+ Volume: '音量: {volumePercentage}%'
+ Bandwidth: '帯域幅: {bandwidth} kbps'
+ Buffered: 'バッファ済み: {bufferedPercentage}%'
Stats: 統計
You appear to be offline: オフラインのようです。
Playback will resume automatically when your connection comes back: ネットワーク接続が回復すると再生が自動的に再開されます。
From 62b4a5d2dff87378848efe83f551a0a0526650fc Mon Sep 17 00:00:00 2001
From: Fjuro
Date: Tue, 3 Sep 2024 12:42:43 +0000
Subject: [PATCH 180/489] Translated using Weblate (Czech)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
---
static/locales/cs.yaml | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml
index 0bcc9ee6b87ed..080dac4d4b36a 100644
--- a/static/locales/cs.yaml
+++ b/static/locales/cs.yaml
@@ -955,6 +955,35 @@ Video:
Unhide Channel: Zobrazit kanál
Hide Channel: Skrýt kanál
More Options: Další možnosti
+ Player:
+ Stats:
+ Player Dimensions: Rozměry přehrávače {width}x{height}
+ Bitrate: 'Datový tok: {bitrate} kb/s'
+ Volume: 'Hlasitost: {volumePercentage} %'
+ CodecsVideoAudioNoItags: 'Kodeky: {videoCodec} / {audioCodec}'
+ Stats: Statistiky
+ Video ID: 'ID videa: {videoId}'
+ Media Formats: 'Formáty médií: {formats}'
+ Resolution: 'Rozlišení: {width}x{height}@{frameRate}'
+ Bandwidth: 'Šířka pásma: {bandwidth} kb/s'
+ Buffered: 'Načteno: {bufferedPercentage} %'
+ Dropped Frames / Total Frames: 'Vypuštěno snímků: {droppedFrames} / Celkem snímků:
+ {totalFrames}'
+ CodecAudio: 'Kodek: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Kodeky: {videoCodec} ({videoItag}) / {audioCodec} ({audioItag})'
+ Skipped segment: Přeskočen segment {segmentCategory}
+ TranslatedCaptionTemplate: '{language} (přeloženo z jazyka {originalLanguage})'
+ Audio Tracks: Zvukové stopy
+ Theatre Mode: Režim kina
+ Exit Theatre Mode: Opustit režim kina
+ Full Window: Celé okno
+ Exit Full Window: Opustit celé okno
+ Take Screenshot: Pořídit snímek
+ Show Stats: Zobrazit statistiky
+ Hide Stats: Skrýt statistiky
+ You appear to be offline: Zdá se, že jste offline.
+ Playback will resume automatically when your connection comes back: Přehrávání
+ bude automaticky pokračovat, jakmile budete opět připojeni.
Videos:
#& Sort By
Sort By:
@@ -993,6 +1022,8 @@ Change Format:
dostupné'
Audio formats are not available for this video: 'Zvukové formáty nejsou pro toto
video dostupné'
+ Legacy formats are not available for this video: Starší formáty nejsou pro toto
+ video dostupné
Share:
Share Video: 'Sdílet video'
Share Playlist: 'Sdílet playlist'
From 1bc9c5833e976b8fc0e9d6920fb1940df9b6d10d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?O=C4=9Fuz=20Ersen?=
Date: Tue, 3 Sep 2024 16:51:41 +0000
Subject: [PATCH 181/489] Translated using Weblate (Turkish)
Currently translated at 100.0% (875 of 875 strings)
Translation: FreeTube/Translations
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
---
static/locales/tr.yaml | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml
index 6e1a17298fe2f..789f2074828e4 100644
--- a/static/locales/tr.yaml
+++ b/static/locales/tr.yaml
@@ -980,6 +980,36 @@ Video:
Unhide Channel: Kanalı Göster
Hide Channel: Kanalı Gizle
More Options: Daha Fazla Seçenek
+ Player:
+ TranslatedCaptionTemplate: '{language} ("{originalLanguage}" dilinden çevrildi)'
+ Audio Tracks: Ses Parçaları
+ Stats:
+ Media Formats: 'Medya Biçimleri: {formats}'
+ Bitrate: 'Bit Hızı: {bitrate} kbps'
+ CodecsVideoAudioNoItags: 'Kod Çözücüler: {videoCodec} / {audioCodec}'
+ Stats: İstatistikler
+ Video ID: 'Video Kimliği: {videoId}'
+ Resolution: 'Çözünürlük: {width}x{height}@{frameRate}'
+ Player Dimensions: 'Oynatıcı Boyutları: {width}x{height}'
+ Volume: 'Ses Düzeyi: {volumePercentage}%'
+ Bandwidth: 'Bant Genişliği: {bandwidth} kbps'
+ Buffered: 'Ara Belleğe Alınan: {bufferedPercentage}%'
+ Dropped Frames / Total Frames: 'Kaybedilen Çerçeve: {droppedFrames} / Toplam
+ Çerçeve: {totalFrames}'
+ CodecAudio: 'Kod Çözücü: {audioCodec} ({audioItag})'
+ CodecsVideoAudio: 'Kod Çözücüler: {videoCodec} ({videoItag}) / {audioCodec}
+ ({audioItag})'
+ Theatre Mode: Tiyatro Modu
+ Exit Theatre Mode: Tiyatro Modundan Çık
+ Full Window: Tam Pencere
+ Exit Full Window: Tam Pencereden Çık
+ Take Screenshot: Ekran Görüntüsü Al
+ Show Stats: İstatistikleri Göster
+ Hide Stats: İstatistikleri Gizle
+ You appear to be offline: Çevrim dışı görünüyorsunuz.
+ Playback will resume automatically when your connection comes back: Bağlantınız
+ geri geldiğinde oynatma otomatik olarak devam edecektir.
+ Skipped segment: '{segmentCategory} bölümü atlandı'
Videos:
#& Sort By
Sort By:
@@ -1010,7 +1040,7 @@ Playlist:
Custom: Özel
Toggle Theatre Mode: 'Tiyatro Modunu Aç/Kapat'
Change Format:
- Change Media Formats: 'Video Biçimlerini Değiştir'
+ Change Media Formats: 'Medya Biçimlerini Değiştir'
Use Dash Formats: 'DASH Biçimlerini Kullan'
Use Legacy Formats: 'Eski Biçimleri Kullan'
Use Audio Formats: 'Ses Biçimlerini Kullan'
@@ -1018,6 +1048,8 @@ Change Format:
değil'
Audio formats are not available for this video: 'Ses biçimleri bu video için kullanılabilir
değil'
+ Legacy formats are not available for this video: Eski biçimler bu video için kullanılabilir
+ değil
Share:
Share Video: 'Videoyu Paylaş'
Share Playlist: 'Oynatma Listesini Paylaş'
From d58976ada74953d3481d833afb6d45374d3a75e3 Mon Sep 17 00:00:00 2001
From: Emma
Date: Tue, 3 Sep 2024 20:54:30 -0400
Subject: [PATCH 182/489] =?UTF-8?q?=F0=9F=99=88=20monkey=20patch=20`canPla?=
=?UTF-8?q?yType`=20to=20force=20shaka=20to=20use=20non-native=20HLS=20pla?=
=?UTF-8?q?yback?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/index.ejs | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/index.ejs b/src/index.ejs
index 3b0065d2e21c1..ed3a7d917bef1 100644
--- a/src/index.ejs
+++ b/src/index.ejs
@@ -5,6 +5,11 @@
<% if (process.env.IS_ANDROID) { %>