From a40294580bb1ba2cddd676eebf79bafdf6f3bca6 Mon Sep 17 00:00:00 2001 From: Tyoma Date: Fri, 5 Apr 2024 12:30:44 +0000 Subject: [PATCH 01/45] Translated using Weblate (Russian) Currently translated at 95.9% (786 of 819 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index f1cec0bf7..edcab672b 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -1,7 +1,7 @@ FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- - Эта часть приложения ещё не готова. Вернитесь позже, когда выйдет новая версия. + Эта часть приложения ещё не готова. Вернитесь позже, когда появится новая версия. # Webkit Menu Bar File: 'Файл' @@ -170,8 +170,8 @@ User Playlists: You haven't selected any playlist yet.: Ещё не выбрана ни одна подборка. "{videoCount} video(s) added to 1 playlist": 1 видео добавлено в 1 подборку | {videoCount} видео добавлено в 1 подборку - Select a playlist to add your N videos to: Выбери подборку на добавление твоего - видео | Выбери подборку на добавление твоих {videoCount} видео в неё + Select a playlist to add your N videos to: Выбери подборку на добавление видео + | Выбери подборку на добавление {videoCount} видео в неё CreatePlaylistPrompt: Toast: Playlist {playlistName} has been successfully created.: Подборка {playlistName} From 70f702ce684976d5141c3338aabf1f0a8017f74a Mon Sep 17 00:00:00 2001 From: Tyoma Date: Fri, 5 Apr 2024 14:30:54 +0000 Subject: [PATCH 02/45] Translated using Weblate (Russian) Currently translated at 96.3% (789 of 819 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index edcab672b..f10522609 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -531,6 +531,10 @@ Settings: Hide Channels Already Exists: Идентификатор канала уже существует Hide Channels API Error: Ошибка при получении пользователя с предоставленным идентификатором. Пожалуйста, проверьте еще раз, правильно ли указан идентификатор. + Hide Videos and Playlists Containing Text: Скрыть видео и подборки, содержащие + текст + Hide Videos and Playlists Containing Text Placeholder: Слово, часть слова, или + выражение The app needs to restart for changes to take effect. Restart and apply change?: Чтобы изменения вступили в силу, необходимо перезапустить приложение. Перезапустить и применить изменения? @@ -564,6 +568,7 @@ Settings: Do Nothing: Ничего не делать Category Color: Цвет категории UseDeArrowTitles: Использовать заголовки видео «DeArrow» + UseDeArrowThumbnails: Использовать DeArrow для заставок External Player Settings: Custom External Player Arguments: Аргументы внешнего проигрывателя Custom External Player Executable: Исполняемый файл внешнего проигрывателя From cfe590bd59f61bf06c7a5e1aead65e90a5b96774 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, 5 Apr 2024 15:49:29 +0000 Subject: [PATCH 03/45] Add caution blockquote to Download links (#4878) * Add caution blockquote to Download links * Specify versions at top of readme and redo wording --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f55240f1..5a43ba89c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ FreeTube is an open source desktop YouTube player built with privacy in mind. Use YouTube without advertisements and prevent Google from tracking you with their cookies and JavaScript. -Available for Windows, Mac & Linux thanks to Electron. +Available for Windows (10 and later), Mac (macOS 10.15 and later) & Linux thanks to Electron.

Download FreeTube

@@ -78,6 +78,10 @@ FreeTube is supported by the [Privacy Redirect](https://github.com/SimonBrazell/ ## Download Links ### Official Downloads + +> [!CAUTION] +> FreeTube is only supported on Windows 10 and later, macOS 10.15 and above, and various Linux distributions. Installing it on unsupported systems may result in unexpected issues. + * [GitHub Releases](https://github.com/FreeTubeApp/FreeTube/releases) * [FreeTube Website](https://freetubeapp.io/#download) From cbefdcd225311dcfcbc407343ca4d57a8b84fb8d Mon Sep 17 00:00:00 2001 From: Tyoma Date: Fri, 5 Apr 2024 14:41:43 +0000 Subject: [PATCH 04/45] Translated using Weblate (Russian) Currently translated at 97.3% (797 of 819 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index f10522609..8b6d31f0a 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -569,6 +569,8 @@ Settings: Category Color: Цвет категории UseDeArrowTitles: Использовать заголовки видео «DeArrow» UseDeArrowThumbnails: Использовать DeArrow для заставок + 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': Адрес + набора функций (API) генератора заставок DeArrow (По умолчанию, это https://dearrow-thumb.ajay.app) External Player Settings: Custom External Player Arguments: Аргументы внешнего проигрывателя Custom External Player Executable: Исполняемый файл внешнего проигрывателя @@ -716,6 +718,7 @@ Channel: votes: 'Голосов: {votes}' Hide Answers: Скрыть ответы Reveal Answers: Раскрыть ответы + Video hidden by FreeTube: Видео скрыто FreeTube'ом Live: Live: Трансляции This channel does not currently have any live streams: На этом канале в настоящее @@ -875,6 +878,7 @@ Video: Pause on Current Video: Остановиться на текущем видео Hide Channel: Скрыть канал Unhide Channel: Показать канал + More Options: Больше настроек Videos: #& Sort By Sort By: @@ -1106,9 +1110,14 @@ Tooltips: Введенный идентификатор канала должен полностью совпадать и чувствителен к регистру. Hide Subscriptions Live: Эта настройка переопределена общей настройкой «{appWideSetting}», в подразделе «{subsection}» раздела «{settingsSection}» + Hide Videos and Playlists Containing Text: 'Вставь слово, часть слова, или выражение + (вне зависимости от регистра), чтобы скрыть все видео и подборки, в чьих названиях + содержится что-либо вставленное сюда; за исключением только: истории, подборок + и видео в подборках.' SponsorBlock Settings: UseDeArrowTitles: Заменить пользовательски-размещённые заголовки на заголовки, предоставляемые «DeArrow». + UseDeArrowThumbnails: Заменить заставки видео, заставками от DeArrow. More: Больше Playing Next Video Interval: Воспроизведение следующего видео без задержки. Нажмите для отмены. | Воспроизведение следующего видео через {nextVideoInterval} сек. Нажмите @@ -1164,3 +1173,7 @@ Playlist will pause when current video is finished: Подборка остан видео закончится Channel Unhidden: '{channel} удалён из канального фильтровщика' Channel Hidden: '{channel} добавлен в канальный фильтровщик' +Age Restricted: + This channel is age restricted: Канал с возрастным ограничением + This video is age restricted: Видео с возрастным ограничением +Tag already exists: «{tagName}» метка уже существует From c541896b907dc7e4d87fd3a67679f4e1919ada44 Mon Sep 17 00:00:00 2001 From: mapi68 <41143572+mapi68@users.noreply.github.com> Date: Fri, 5 Apr 2024 18:21:45 +0200 Subject: [PATCH 05/45] Bump Node.js from 18.x to 20.x (#4876) * Update linter.yml * Update release.yml * Update build.yml --- .github/workflows/build.yml | 2 +- .github/workflows/linter.yml | 4 ++-- .github/workflows/release.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 569ded447..3bbef6630 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: build: strategy: matrix: - node-version: [18.x] + node-version: [20.x] runtime: - linux-x64 - linux-armv7l diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 53ea38937..a213b4b1c 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -18,10 +18,10 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: - uses: actions/checkout@v4 - - name: Use Node.js 18.x + - name: Use Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x cache: "yarn" - run: yarn run ci - run: yarn run lint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 519492e79..87237a364 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: build: strategy: matrix: - node-version: [18.x] + node-version: [20.x] runtime: - linux-x64 - linux-armv7l From 64be1c1606e519b3b3ffc70505cfb32e211b0fa4 Mon Sep 17 00:00:00 2001 From: Tyoma Date: Fri, 5 Apr 2024 17:29:00 +0000 Subject: [PATCH 06/45] Translated using Weblate (Russian) Currently translated at 98.0% (803 of 819 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 8b6d31f0a..12f65982b 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -120,7 +120,7 @@ User Playlists: только те видео, которые вы сохранили или добавили в избранное. После переработки этой страницы все видео, которые сейчас находятся здесь, переместятся в подборку «Избранное». - Search bar placeholder: Поиск в подборке + Search bar placeholder: Поиск подборок Empty Search Message: В этой подборке нет видео, соответствующих вашему запросу This playlist currently has no videos.: Пока в этой подборке нет видео. Add to Playlist: Добавить в подборку @@ -162,6 +162,7 @@ User Playlists: This video cannot be moved up.: Это видео нельзя передвинуть вверх. This video cannot be moved down.: Это видео нельзя передвинуть вниз. Video has been removed: Видео было удалено + Search for Videos: Поиск видео AddVideoPrompt: N playlists selected: '{playlistCount} выбрано' Search in Playlists: Поиск подборок @@ -193,6 +194,8 @@ User Playlists: You have no playlists. Click on the create new playlist button to create a new one.: У тебя нет подборок. Нажми на кнопку создания новой подборки, чтобы создать новую. Create New Playlist: Создать новую подборку + Add to Favorites: Добавить в {playlistName} + Remove from Favorites: Убрать из {playlistName} History: # On History Page History: 'История' @@ -506,8 +509,8 @@ Settings: Hide Upcoming Premieres: Скрыть предстоящие премьеры Hide Channels Placeholder: Идентификатор канала Hide Channels: Скрыть видео с каналов - Display Titles Without Excessive Capitalisation: Отображать заголовки без чрезмерного - использования заглавных букв + Display Titles Without Excessive Capitalisation: Отображать заголовки без сплошных + заглавных букв и знаков препинания Hide Featured Channels: Скрыть избранные каналы Hide Channel Playlists: Скрыть подборки канала Hide Channel Community: Скрыть сообщество канала From 8b16bd5d6d10e3a23db4ef30d3094068d72b8656 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sat, 6 Apr 2024 03:53:01 +0200 Subject: [PATCH 07/45] Move ft-list-channel specific css to ft-list-channel.scss (#4873) --- .../ft-list-channel/ft-list-channel.scss | 39 +++++++++++++++++++ src/renderer/scss-partials/_ft-list-item.scss | 39 ------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/renderer/components/ft-list-channel/ft-list-channel.scss b/src/renderer/components/ft-list-channel/ft-list-channel.scss index 9ceb65342..4fa0fe962 100644 --- a/src/renderer/components/ft-list-channel/ft-list-channel.scss +++ b/src/renderer/components/ft-list-channel/ft-list-channel.scss @@ -1,5 +1,44 @@ @use '../../scss-partials/_ft-list-item'; +.ft-list-channel { + &.grid { + align-items: center; + text-align: center; + + .infoAndSubscribe { + flex-flow: column wrap; + align-items: center; + + .info { + margin-block-end: 12px; + + .infoLine { + text-align: center; + } + } + } + } + + &.list { + .infoAndSubscribe { + flex-flow: row wrap; + justify-content: center; + + .channelSubscribeButton { + margin-block: auto; + margin-inline: 7px; + } + } + } +} + +.infoAndSubscribe { + display: flex; + flex-flow: row wrap; + justify-content: center; + inline-size: 100%; +} + .handle { color: inherit; text-decoration: none; diff --git a/src/renderer/scss-partials/_ft-list-item.scss b/src/renderer/scss-partials/_ft-list-item.scss index 624d21093..1fda317db 100644 --- a/src/renderer/scss-partials/_ft-list-item.scss +++ b/src/renderer/scss-partials/_ft-list-item.scss @@ -386,45 +386,6 @@ $watched-transition-duration: 0.5s; } } -.ft-list-channel { - .infoAndSubscribe { - display: flex; - flex-flow: row wrap; - justify-content: center; - inline-size: 100%; - } - - &.grid { - align-items: center; - text-align: center; - - .infoAndSubscribe { - flex-flow: column wrap; - align-items: center; - - .info { - margin-block-end: 12px; - - .infoLine { - text-align: center; - } - } - } - } - - &.list { - .infoAndSubscribe { - flex-flow: row wrap; - justify-content: center; - - .channelSubscribeButton { - margin-block: auto; - margin-inline: 7px; - } - } - } -} - .videoWatched, .live, .upcoming { From fdc3c13fcd89dfd08a61d724e2abf424fefd2869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Gr=C3=B6nroos?= Date: Sun, 7 Apr 2024 12:57:34 +0000 Subject: [PATCH 08/45] Translated using Weblate (Finnish) Currently translated at 94.7% (776 of 819 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fi/ --- static/locales/fi.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml index 9fab29925..5714154d0 100644 --- a/static/locales/fi.yaml +++ b/static/locales/fi.yaml @@ -144,6 +144,8 @@ User Playlists: ja sitä ei voi poistaa. Playlist {playlistName} has been deleted.: Soittolista {playlistName} on poistettu. This playlist does not exist: Soittolistaa ei ole olemassa + There was an issue with updating this playlist.: Tätä soittolistaa päivittäessä + ilmeni ongelma. Search for Videos: Etsi videot Move Video Down: Siirrä video alas Remove from Playlist: Poista soittolistalta @@ -174,6 +176,8 @@ User Playlists: nimellä on jo olemassa soittolista. Valitse eri nimi. Playlist {playlistName} has been successfully created.: Soittolista {playlistName} on luotu. + There was an issue with creating the playlist.: Soittolistaa luotaessa ilmeni + ongelma. Add to Favorites: Lisää soittolistaan {playlistName} Remove from Favorites: Poista soittolistalta {playlistName} Remove Watched Videos: Poista katsotut videot @@ -363,6 +367,7 @@ Settings: How do I import my subscriptions?: 'Miten voin tuoda tilaukseni?' Fetch Feeds from RSS: Nouda RSS-syöte Fetch Automatically: Nouda syöte automaattisesti + Only Show Latest Video for Each Channel: Näytä vain jokaisen kanavan uusin video Advanced Settings: Advanced Settings: 'Lisäasetukset' Enable Debug Mode (Prints data to the console): 'Ota virheenkorjaustila käyttöön @@ -458,6 +463,8 @@ Settings: Playlist File: Soittolistatiedosto History File: Historia-tiedosto Subscription File: Tilaustiedosto + Export Playlists For Older FreeTube Versions: + Label: Vie soittolistat FreeTuben vanhempiin versioihin Distraction Free Settings: Hide Live Chat: Piilota Live-keskustelu Hide Popular Videos: Piilota suositut videot @@ -570,6 +577,7 @@ Settings: Password Settings: Salasana-asetukset Set Password: Aseta salasana Remove Password: Poista salasana + Expand All Settings Sections: Laajenna asetusten kaikki osiot About: #On About page About: 'Tietoja' From d8387b76d77f3c29cc6bad15c3735ff546393339 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Sun, 7 Apr 2024 10:58:15 -0400 Subject: [PATCH 09/45] Add i18n-eslint-plugin (#4763) * add i18n-eslint-plugin * remove `FreeTube` `Invidious` and `YouTube` from locale files as those shouldn't be translated * Remove testing code * Uncomment code * use separate getColorTranslations function * make suggested changes Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com> * Add back blank line between import & export --------- Co-authored-by: absidue <48293849+absidue@users.noreply.github.com> Co-authored-by: PikachuEXE --- .eslintrc.js | 46 ++++++- package.json | 1 + src/renderer/App.js | 14 +- .../components/data-settings/data-settings.js | 24 ++-- .../external-player-settings.js | 10 +- .../ft-age-restricted/ft-age-restricted.js | 2 +- .../ft-playlist-add-video-prompt.js | 21 ++- .../ft-share-button/ft-share-button.js | 10 ++ .../ft-share-button/ft-share-button.vue | 4 +- .../components/ft-slider/ft-slider.vue | 5 +- .../ft-sponsor-block-category.js | 31 ++++- .../ft-sponsor-block-category.vue | 2 +- .../ft-subscribe-button.vue | 2 +- .../ft-video-player/ft-video-player.js | 2 + .../general-settings/general-settings.js | 3 +- .../player-settings/player-settings.js | 2 +- .../proxy-settings/proxy-settings.vue | 8 +- .../theme-settings/theme-settings.js | 8 +- src/renderer/components/top-nav/top-nav.js | 6 +- src/renderer/helpers/colors.js | 49 ++++++- src/renderer/helpers/strings.js | 29 ++++ src/renderer/helpers/utils.js | 51 +++++-- src/renderer/router/index.js | 22 +-- src/renderer/store/modules/profiles.js | 2 +- src/renderer/store/modules/utils.js | 31 ++--- .../views/ProfileSettings/ProfileSettings.js | 2 +- static/external-player-map.json | 11 -- static/locales/ar.yaml | 1 - static/locales/as.yaml | 1 - static/locales/be.yaml | 1 - static/locales/bg.yaml | 1 - static/locales/bn.yaml | 1 - static/locales/bs.yaml | 1 - static/locales/ca.yaml | 1 - static/locales/ckb.yaml | 1 - static/locales/cs.yaml | 1 - static/locales/cy.yaml | 1 - static/locales/da.yaml | 1 - static/locales/de-DE.yaml | 1 - static/locales/el.yaml | 1 - static/locales/en-US.yaml | 5 +- static/locales/en_GB.yaml | 1 - static/locales/eo.yaml | 1 - static/locales/es-MX.yaml | 1 - static/locales/es.yaml | 1 - static/locales/es_AR.yaml | 1 - static/locales/et.yaml | 1 - static/locales/eu.yaml | 1 - static/locales/fa.yaml | 1 - static/locales/fi.yaml | 1 - static/locales/fil.yaml | 1 - static/locales/fr-FR.yaml | 3 +- static/locales/gl.yaml | 1 - static/locales/gsw.yaml | 1 - static/locales/he.yaml | 1 - static/locales/hi.yaml | 1 - static/locales/hr.yaml | 1 - static/locales/hu.yaml | 1 - static/locales/id.yaml | 1 - static/locales/is.yaml | 1 - static/locales/it.yaml | 1 - static/locales/ja.yaml | 5 +- static/locales/ka.yaml | 1 - static/locales/km.yaml | 1 - static/locales/ko.yaml | 1 - static/locales/ku.yaml | 1 - static/locales/la.yaml | 1 - static/locales/lt.yaml | 1 - static/locales/lv.yaml | 1 - static/locales/nb_NO.yaml | 1 - static/locales/ne.yaml | 1 - static/locales/nl.yaml | 1 - static/locales/nn.yaml | 1 - static/locales/pl.yaml | 1 - static/locales/pt-BR.yaml | 1 - static/locales/pt-PT.yaml | 1 - static/locales/pt.yaml | 1 - static/locales/ro.yaml | 1 - static/locales/ru.yaml | 1 - static/locales/sat.yaml | 1 - static/locales/si.yaml | 1 - static/locales/sk.yaml | 1 - static/locales/sl.yaml | 1 - static/locales/sm.yaml | 1 - static/locales/sr.yaml | 1 - static/locales/sv.yaml | 1 - static/locales/ti.yaml | 1 - static/locales/tr.yaml | 1 - static/locales/uk.yaml | 1 - static/locales/ur.yaml | 1 - static/locales/vi.yaml | 1 - static/locales/zh-CN.yaml | 1 - static/locales/zh-TW.yaml | 1 - yarn.lock | 127 ++++++++++++++++-- 94 files changed, 400 insertions(+), 201 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2729411b7..1846e7791 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,8 @@ +const path = require('path') +const { readFileSync } = require('fs') + +const activeLocales = JSON.parse(readFileSync(path.join(__dirname, './static/locales/activeLocales.json'))) + module.exports = { // https://eslint.org/docs/user-guide/configuring#using-configuration-files-1 root: true, @@ -47,11 +52,12 @@ module.exports = { 'plugin:vue/recommended', 'standard', 'plugin:jsonc/recommended-with-json', - 'plugin:vuejs-accessibility/recommended' + 'plugin:vuejs-accessibility/recommended', + 'plugin:@intlify/vue-i18n/recommended' ], // https://eslint.org/docs/user-guide/configuring#configuring-plugins - plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn'], + plugins: ['vue', 'vuejs-accessibility', 'n', 'unicorn', '@intlify/vue-i18n'], rules: { 'space-before-function-paren': 'off', @@ -77,6 +83,40 @@ module.exports = { 'unicorn/no-array-push-push': 'error', 'unicorn/prefer-keyboard-event-key': 'error', 'unicorn/prefer-regexp-test': 'error', - 'unicorn/prefer-string-replace-all': 'error' + 'unicorn/prefer-string-replace-all': 'error', + '@intlify/vue-i18n/no-dynamic-keys': 'error', + // TODO: enable at a later date. currently disabled to prevent massive conflicts for initial PR + // '@intlify/vue-i18n/no-unused-keys': [ + // 'error', + // { + // extensions: ['.js', '.vue', 'yaml'] + // } + // ], + '@intlify/vue-i18n/no-duplicate-keys-in-locale': 'error', + '@intlify/vue-i18n/no-raw-text': [ + 'error', + { + attributes: { + '/.+/': [ + 'title', + 'aria-label', + 'aria-placeholder', + 'aria-roledescription', + 'aria-valuetext', + 'tooltip', + 'message' + ], + input: ['placeholder', 'value'], + img: ['alt'] + }, + ignoreText: ['-', '•', '/', 'YouTube', 'Invidious', 'FreeTube'] + } + ], + }, + settings: { + 'vue-i18n': { + localeDir: `./static/locales/{${activeLocales.join(',')}}.yaml`, + messageSyntaxVersion: '^8.0.0' + } } } diff --git a/package.json b/package.json index f1ed1c968..252c2d5a7 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.24.3", "@double-great/stylelint-a11y": "^3.0.2", + "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", "css-loader": "^6.10.0", diff --git a/src/renderer/App.js b/src/renderer/App.js index e152ea8fb..380655809 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -15,6 +15,7 @@ import { marked } from 'marked' import { IpcChannels } from '../constants' import packageDetails from '../../package.json' import { openExternalLink, openInternalPath, showToast } from './helpers/utils' +import { translateWindowTitle } from './helpers/strings' let ipcRenderer = null @@ -77,12 +78,12 @@ export default defineComponent({ return this.$store.getters.getShowCreatePlaylistPrompt }, windowTitle: function () { - const routeTitle = this.$route.meta.title - if (routeTitle !== 'Channel' && routeTitle !== 'Watch' && routeTitle !== 'Hashtag') { + const routeName = this.$route.name + if (routeName !== 'channel' && routeName !== 'watch' && routeName !== 'hashtag') { let title = this.$route.meta.path === '/home' ? packageDetails.productName - : `${this.$t(this.$route.meta.title)} - ${packageDetails.productName}` + : `${translateWindowTitle(this.$route.meta.title, this.$i18n)} - ${packageDetails.productName}` if (!title) { title = packageDetails.productName } @@ -466,12 +467,7 @@ export default defineComponent({ default: { // Unknown URL type - let message = 'Unknown YouTube url type, cannot be opened in app' - if (this.$te(message) && this.$t(message) !== '') { - message = this.$t(message) - } - - showToast(message) + showToast(this.$t('Unknown YouTube url type, cannot be opened in app')) } } }) diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index fac608c4b..57b46847c 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -520,7 +520,7 @@ export default defineComponent({ ] } - await this.promptAndWriteToFile(options, subscriptionsDb, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, subscriptionsDb, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportYouTubeSubscriptions: async function () { @@ -573,7 +573,7 @@ export default defineComponent({ return object }) - await this.promptAndWriteToFile(options, JSON.stringify(subscriptionsObject), 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify(subscriptionsObject), this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportOpmlYouTubeSubscriptions: async function () { @@ -601,7 +601,7 @@ export default defineComponent({ opmlData += '' - await this.promptAndWriteToFile(options, opmlData, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, opmlData, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportCsvYouTubeSubscriptions: async function () { @@ -628,7 +628,7 @@ export default defineComponent({ }) exportText += '\n' - await this.promptAndWriteToFile(options, exportText, 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, exportText, this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, exportNewPipeSubscriptions: async function () { @@ -662,7 +662,7 @@ export default defineComponent({ newPipeObject.subscriptions.push(subscription) }) - await this.promptAndWriteToFile(options, JSON.stringify(newPipeObject), 'Subscriptions have been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify(newPipeObject), this.$t('Settings.Data Settings.Subscriptions have been successfully exported')) }, importHistory: async function () { @@ -856,7 +856,7 @@ export default defineComponent({ ] } - await this.promptAndWriteToFile(options, historyDb, 'All watched history has been successfully exported') + await this.promptAndWriteToFile(options, historyDb, this.$t('Settings.Data Settings.All watched history has been successfully exported')) }, importPlaylists: async function () { @@ -1035,7 +1035,7 @@ export default defineComponent({ return JSON.stringify(playlist) }).join('\n') + '\n'// a trailing line is expected - await this.promptAndWriteToFile(options, playlistsDb, 'All playlists has been successfully exported') + await this.promptAndWriteToFile(options, playlistsDb, this.$t('Settings.Data Settings.All playlists has been successfully exported')) }, exportPlaylistsForOlderVersionsSometimes: function () { @@ -1084,7 +1084,7 @@ export default defineComponent({ }) }) - await this.promptAndWriteToFile(options, JSON.stringify([favoritesPlaylistData]), 'All playlists has been successfully exported') + await this.promptAndWriteToFile(options, JSON.stringify([favoritesPlaylistData]), this.$t('Settings.Data Settings.All playlists has been successfully exported')) }, convertOldFreeTubeFormatToNew(oldData) { @@ -1094,7 +1094,7 @@ export default defineComponent({ for (const profile of channel.profile) { let index = convertedData.findIndex(p => p.name === profile.value) if (index === -1) { // profile doesn't exist yet - const randomBgColor = getRandomColor() + const randomBgColor = getRandomColor().value const contrastyTextColor = calculateColorLuminance(randomBgColor) convertedData.push({ name: profile.value, @@ -1118,7 +1118,7 @@ export default defineComponent({ return convertedData }, - promptAndWriteToFile: async function (saveOptions, content, successMessageKeySuffix) { + promptAndWriteToFile: async function (saveOptions, content, successMessage) { const response = await showSaveDialog(saveOptions) if (response.canceled || response.filePath === '') { // User canceled the save dialog @@ -1133,7 +1133,7 @@ export default defineComponent({ return } - showToast(this.$t(`Settings.Data Settings.${successMessageKeySuffix}`)) + showToast(successMessage) }, getChannelInfoInvidious: function (channelId) { @@ -1182,7 +1182,7 @@ export default defineComponent({ }) if (this.backendFallback && this.backendPreference === 'local') { - showToast(this.$t('Falling back to the Invidious API')) + showToast(this.$t('Falling back to Invidious API')) return await this.getChannelInfoInvidious(channelId) } else { return [] diff --git a/src/renderer/components/external-player-settings/external-player-settings.js b/src/renderer/components/external-player-settings/external-player-settings.js index d6662a9f1..d9e30a2b5 100644 --- a/src/renderer/components/external-player-settings/external-player-settings.js +++ b/src/renderer/components/external-player-settings/external-player-settings.js @@ -21,9 +21,15 @@ export default defineComponent({ computed: { externalPlayerNames: function () { const fallbackNames = this.$store.getters.getExternalPlayerNames - const nameTranslationKeys = this.$store.getters.getExternalPlayerNameTranslationKeys + const translations = [{ + name: 'None', + translatedValue: this.$t('Settings.External Player Settings.Players.None.Name') + }] - return nameTranslationKeys.map((translationKey, idx) => this.$te(translationKey) ? this.$t(translationKey) : fallbackNames[idx]) + return fallbackNames.map((name) => { + const translation = translations.find(e => e.name === name) + return translation ? translation.translatedValue : name + }) }, externalPlayerValues: function () { return this.$store.getters.getExternalPlayerValues diff --git a/src/renderer/components/ft-age-restricted/ft-age-restricted.js b/src/renderer/components/ft-age-restricted/ft-age-restricted.js index c9cd917bc..112d963f7 100644 --- a/src/renderer/components/ft-age-restricted/ft-age-restricted.js +++ b/src/renderer/components/ft-age-restricted/ft-age-restricted.js @@ -23,7 +23,7 @@ export default defineComponent({ return this.$t('Age Restricted.This channel is age restricted') } - return this.$t('Age Restricted.This video is age restricted:') + return this.$t('Age Restricted.This video is age restricted') } } }) diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js index 9a1d9a118..4f5a944e4 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js @@ -240,13 +240,20 @@ export default defineComponent({ this.updatePlaylist({ _id: playlist._id }) }) - const translationEntryKey = addedPlaylistIds.size === 1 - ? 'User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to 1 playlist' - : 'User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to {playlistCount} playlists' - showToast(this.$tc(translationEntryKey, this.toBeAddedToPlaylistVideoCount, { - videoCount: this.toBeAddedToPlaylistVideoCount, - playlistCount: addedPlaylistIds.size, - })) + let message + if (addedPlaylistIds.size === 1) { + message = this.$tc('User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to 1 playlist', this.toBeAddedToPlaylistVideoCount, { + videoCount: this.toBeAddedToPlaylistVideoCount, + playlistCount: addedPlaylistIds.size, + }) + } else { + message = this.$tc('User Playlists.AddVideoPrompt.Toast.{videoCount} video(s) added to {playlistCount} playlists', this.toBeAddedToPlaylistVideoCount, { + videoCount: this.toBeAddedToPlaylistVideoCount, + playlistCount: addedPlaylistIds.size, + }) + } + + showToast(message) this.hide() }, 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 58851679f..054e3e58a 100644 --- a/src/renderer/components/ft-share-button/ft-share-button.js +++ b/src/renderer/components/ft-share-button/ft-share-button.js @@ -58,6 +58,16 @@ export default defineComponent({ return this.shareTargetType === 'Video' }, + shareTitle: function() { + if (this.isChannel) { + return this.$t('Share.Share Channel') + } + if (this.isPlaylist) { + return this.$t('Share.Share Playlist') + } + return this.$t('Share.Share Video') + }, + currentInvidiousInstance: function () { return this.$store.getters.getCurrentInvidiousInstance }, diff --git a/src/renderer/components/ft-share-button/ft-share-button.vue b/src/renderer/components/ft-share-button/ft-share-button.vue index 1f83260c8..b72380c90 100644 --- a/src/renderer/components/ft-share-button/ft-share-button.vue +++ b/src/renderer/components/ft-share-button/ft-share-button.vue @@ -1,7 +1,7 @@ diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js index 9828be76e..479752c14 100644 --- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js +++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.js @@ -1,6 +1,6 @@ import { defineComponent } from 'vue' import { mapActions } from 'vuex' -import { colors } from '../../helpers/colors' +import { colors, getColorTranslations } from '../../helpers/colors' import FtSelect from '../ft-select/ft-select.vue' import { sanitizeForHtmlId } from '../../helpers/accessibility' @@ -31,11 +31,7 @@ export default defineComponent({ }, colorNames: function () { - return this.colorValues.map(colorVal => { - // add spaces before capital letters - const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim() - return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`) - }) + return getColorTranslations() }, sponsorBlockValues: function() { @@ -80,6 +76,29 @@ export default defineComponent({ this.$t('Settings.SponsorBlock Settings.Skip Options.Show In Seek Bar'), this.$t('Settings.SponsorBlock Settings.Skip Options.Do Nothing') ] + }, + + translatedCategoryName: function() { + switch (this.categoryName.toLowerCase()) { + case 'sponsor': + return this.$t('Video.Sponsor Block category.sponsor') + case 'self-promotion': + return this.$t('Video.Sponsor Block category.self-promotion') + case 'interaction': + return this.$t('Video.Sponsor Block category.interaction') + case 'intro': + return this.$t('Video.Sponsor Block category.intro') + case 'outro': + return this.$t('Video.Sponsor Block category.outro') + case 'recap': + return this.$t('Video.Sponsor Block category.recap') + case 'music offtopic': + return this.$t('Video.Sponsor Block category.music offtopic') + case 'filler': + return this.$t('Video.Sponsor Block category.filler') + default: + return '' + } } }, diff --git a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue index 7ec5479c5..c87b79ef6 100644 --- a/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue +++ b/src/renderer/components/ft-sponsor-block-category/ft-sponsor-block-category.vue @@ -4,7 +4,7 @@ :id="sanitizedId" class="sponsorTitle" > - {{ $t("Video.Sponsor Block category." + categoryName) }} + {{ translatedCategoryName }} - {{ isProfileSubscribed(profile) ? '✓' : profileInitials[index] }} + {{ isProfileSubscribed(profile) ? $t('checkmark') : profileInitials[index] }}

{ copyToClipboard(err) diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js index d682bbba5..a2b7d3e7b 100644 --- a/src/renderer/components/general-settings/general-settings.js +++ b/src/renderer/components/general-settings/general-settings.js @@ -10,6 +10,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 { translateWindowTitle } from '../../helpers/strings' export default defineComponent({ name: 'GeneralSettings', @@ -91,7 +92,7 @@ export default defineComponent({ return this.$router.getRoutes().filter((route) => includedPageNames.includes(route.name)) }, defaultPageNames: function () { - return this.defaultPages.map((route) => this.$t(route.meta.title)) + return this.defaultPages.map((route) => translateWindowTitle(route.meta.title, this.$i18n)) }, defaultPageValues: function () { // avoid Vue parsing issues by excluding '/' from path values diff --git a/src/renderer/components/player-settings/player-settings.js b/src/renderer/components/player-settings/player-settings.js index 30f4f889d..c3d4ea78f 100644 --- a/src/renderer/components/player-settings/player-settings.js +++ b/src/renderer/components/player-settings/player-settings.js @@ -283,7 +283,7 @@ export default defineComponent({ this.screenshotFilenameExample = `${res}.${this.screenshotFormat}` return true }).catch(err => { - this.screenshotFilenameExample = `❗ ${this.$t(`Settings.Player Settings.Screenshot.Error.${err.message}`)}` + this.screenshotFilenameExample = `❗ ${err.message}` return false }) }, diff --git a/src/renderer/components/proxy-settings/proxy-settings.vue b/src/renderer/components/proxy-settings/proxy-settings.vue index 1e9580c27..b502dee0c 100644 --- a/src/renderer/components/proxy-settings/proxy-settings.vue +++ b/src/renderer/components/proxy-settings/proxy-settings.vue @@ -61,16 +61,16 @@ {{ $t('Settings.Proxy Settings.Your Info') }}

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

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

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

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

diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js index dce362993..d53bf2f92 100644 --- a/src/renderer/components/theme-settings/theme-settings.js +++ b/src/renderer/components/theme-settings/theme-settings.js @@ -6,7 +6,7 @@ import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue' import FtSlider from '../ft-slider/ft-slider.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' -import { colors } from '../../helpers/colors' +import { colors, getColorTranslations } from '../../helpers/colors' export default defineComponent({ name: 'ThemeSettings', @@ -114,11 +114,7 @@ export default defineComponent({ }, colorNames: function () { - return this.colorValues.map(colorVal => { - // add spaces before capital letters - const colorName = colorVal.replaceAll(/([A-Z])/g, ' $1').trim() - return this.$t(`Settings.Theme Settings.Main Color Theme.${colorName}`) - }) + return getColorTranslations() }, areColorThemesEnabled: function() { diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js index 6a89a1fce..00edb43ec 100644 --- a/src/renderer/components/top-nav/top-nav.js +++ b/src/renderer/components/top-nav/top-nav.js @@ -7,6 +7,7 @@ import debounce from 'lodash.debounce' import { IpcChannels } from '../../../constants' import { openInternalPath } from '../../helpers/utils' +import { translateWindowTitle } from '../../helpers/strings' import { clearLocalSearchSuggestionsSession, getLocalSearchSuggestions } from '../../helpers/api/local' import { invidiousAPICall } from '../../helpers/api/invidious' @@ -47,9 +48,10 @@ export default defineComponent({ headerLogoTitle: function () { return this.$t('Go to page', { - page: this.$t(this.$router.getRoutes() + page: translateWindowTitle(this.$router.getRoutes() .find((route) => route.path === '/' + this.landingPage) - .meta.title + .meta.title, + this.$i18n ) }) }, diff --git a/src/renderer/helpers/colors.js b/src/renderer/helpers/colors.js index e09fbdd86..eb58004a0 100644 --- a/src/renderer/helpers/colors.js +++ b/src/renderer/helpers/colors.js @@ -1,3 +1,5 @@ +import i18n from '../i18n/index' + export const colors = [ { name: 'Red', value: '#d50000' }, { name: 'Pink', value: '#C51162' }, @@ -38,14 +40,55 @@ export const colors = [ { name: 'CatppuccinMochaLavender', value: '#B4BEFE' } ] +export function getColorTranslations() { + return [ + i18n.t('Settings.Theme Settings.Main Color Theme.Red'), + i18n.t('Settings.Theme Settings.Main Color Theme.Pink'), + i18n.t('Settings.Theme Settings.Main Color Theme.Purple'), + i18n.t('Settings.Theme Settings.Main Color Theme.Deep Purple'), + i18n.t('Settings.Theme Settings.Main Color Theme.Indigo'), + i18n.t('Settings.Theme Settings.Main Color Theme.Blue'), + i18n.t('Settings.Theme Settings.Main Color Theme.Light Blue'), + i18n.t('Settings.Theme Settings.Main Color Theme.Cyan'), + i18n.t('Settings.Theme Settings.Main Color Theme.Teal'), + i18n.t('Settings.Theme Settings.Main Color Theme.Green'), + i18n.t('Settings.Theme Settings.Main Color Theme.Light Green'), + i18n.t('Settings.Theme Settings.Main Color Theme.Lime'), + i18n.t('Settings.Theme Settings.Main Color Theme.Yellow'), + i18n.t('Settings.Theme Settings.Main Color Theme.Amber'), + i18n.t('Settings.Theme Settings.Main Color Theme.Orange'), + i18n.t('Settings.Theme Settings.Main Color Theme.Deep Orange'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Cyan'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Green'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Orange'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Pink'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Purple'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Red'), + i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Yellow'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Rosewater'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Flamingo'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Pink'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Mauve'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Red'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Maroon'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Peach'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Yellow'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Green'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Teal'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Sky'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Sapphire'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Blue'), + i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Lavender') + ] +} + export function getRandomColorClass() { - const randomInt = Math.floor(Math.random() * colors.length) - return 'main' + colors[randomInt].name + return 'main' + getRandomColor().name } export function getRandomColor() { const randomInt = Math.floor(Math.random() * colors.length) - return colors[randomInt].value + return colors[randomInt] } export function calculateColorLuminance(colorValue) { diff --git a/src/renderer/helpers/strings.js b/src/renderer/helpers/strings.js index f83a0ea11..255630484 100644 --- a/src/renderer/helpers/strings.js +++ b/src/renderer/helpers/strings.js @@ -23,3 +23,32 @@ export function isKeyboardEventKeyPrintableChar(eventKey) { return false } + +export function translateWindowTitle(title, i18n) { + switch (title) { + case 'Subscriptions': + return i18n.t('Subscriptions.Subscriptions') + case 'Channels': + return i18n.t('Channels.Title') + case 'Trending': + return i18n.t('Trending.Trending') + case 'Most Popular': + return i18n.t('Most Popular') + case 'Your Playlists': + return i18n.t('User Playlists.Your Playlists') + case 'History': + return i18n.t('History.History') + case 'Settings': + return i18n.t('Settings.Settings') + case 'About': + return i18n.t('About.About') + case 'Profile Settings': + return i18n.t('Profile.Profile Settings') + case 'Search Results': + return i18n.t('Search Filters.Search Results') + case 'Playlist': + return i18n.t('Playlist.Playlist') + default: + return null + } +} diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index fd3016062..1a0850e07 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -92,43 +92,67 @@ export function toLocalePublicationString ({ publishText, isLive = false, isUpco const match = publishText.match(PUBLISHED_TEXT_REGEX) const singular = (match[1] === '1') - let translationKey = '' + let unit = '' switch (match[2].substring(0, 2)) { case 'se': case 's': - translationKey = 'Video.Published.Second' + if (singular) { + unit = i18n.t('Video.Published.Second') + } else { + unit = i18n.t('Video.Published.Seconds') + } break case 'mi': case 'm': - translationKey = 'Video.Published.Minute' + if (singular) { + unit = i18n.t('Video.Published.Minute') + } else { + unit = i18n.t('Video.Published.Minutes') + } break case 'ho': case 'h': - translationKey = 'Video.Published.Hour' + if (singular) { + unit = i18n.t('Video.Published.Hour') + } else { + unit = i18n.t('Video.Published.Hours') + } break case 'da': case 'd': - translationKey = 'Video.Published.Day' + if (singular) { + unit = i18n.t('Video.Published.Day') + } else { + unit = i18n.t('Video.Published.Days') + } break case 'we': case 'w': - translationKey = 'Video.Published.Week' + if (singular) { + unit = i18n.t('Video.Published.Week') + } else { + unit = i18n.t('Video.Published.Weeks') + } break case 'mo': - translationKey = 'Video.Published.Month' + if (singular) { + unit = i18n.t('Video.Published.Month') + } else { + unit = i18n.t('Video.Published.Months') + } break case 'ye': case 'y': - translationKey = 'Video.Published.Year' + if (singular) { + unit = i18n.t('Video.Published.Year') + } else { + unit = i18n.t('Video.Published.Years') + } break default: return publishText } - if (!singular) { - translationKey += 's' - } - const unit = i18n.t(translationKey) return i18n.t('Video.Publicationtemplate', { number: match[1], unit }) } @@ -574,8 +598,7 @@ export function extractNumberFromString(str) { } } -export function showExternalPlayerUnsupportedActionToast(externalPlayer, actionName) { - const action = i18n.t(`Video.External Player.Unsupported Actions.${actionName}`) +export function showExternalPlayerUnsupportedActionToast(externalPlayer, action) { const message = i18n.t('Video.External Player.UnsupportedActionTemplate', { externalPlayer, action }) showToast(message) } diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js index bce2ce775..2185a7d48 100644 --- a/src/renderer/router/index.js +++ b/src/renderer/router/index.js @@ -23,7 +23,7 @@ const router = new Router({ path: '/', name: 'default', meta: { - title: 'Subscriptions.Subscriptions' + title: 'Subscriptions' }, component: Subscriptions }, @@ -31,7 +31,7 @@ const router = new Router({ path: '/subscriptions', name: 'subscriptions', meta: { - title: 'Subscriptions.Subscriptions' + title: 'Subscriptions' }, component: Subscriptions }, @@ -39,7 +39,7 @@ const router = new Router({ path: '/subscribedchannels', name: 'subscribedChannels', meta: { - title: 'Channels.Title' + title: 'Channels' }, component: SubscribedChannels }, @@ -47,7 +47,7 @@ const router = new Router({ path: '/trending', name: 'trending', meta: { - title: 'Trending.Trending' + title: 'Trending' }, component: Trending }, @@ -63,7 +63,7 @@ const router = new Router({ path: '/userplaylists', name: 'userPlaylists', meta: { - title: 'User Playlists.Your Playlists' + title: 'Your Playlists' }, component: UserPlaylists }, @@ -71,7 +71,7 @@ const router = new Router({ path: '/history', name: 'history', meta: { - title: 'History.History' + title: 'History' }, component: History }, @@ -79,7 +79,7 @@ const router = new Router({ path: '/settings', name: 'settings', meta: { - title: 'Settings.Settings' + title: 'Settings' }, component: Settings }, @@ -87,7 +87,7 @@ const router = new Router({ path: '/about', name: 'about', meta: { - title: 'About.About' + title: 'About' }, component: About }, @@ -95,21 +95,21 @@ const router = new Router({ path: '/settings/profile', name: 'profileSettings', meta: { - title: 'Profile.Profile Settings' + title: 'Profile Settings' }, component: ProfileSettings }, { path: '/search/:query', meta: { - title: 'Search Filters.Search Results' + title: 'Search Results' }, component: Search }, { path: '/playlist/:id', meta: { - title: 'Playlist.Playlist' + title: 'Playlist' }, component: Playlist }, diff --git a/src/renderer/store/modules/profiles.js b/src/renderer/store/modules/profiles.js index 02630feff..34574b4df 100644 --- a/src/renderer/store/modules/profiles.js +++ b/src/renderer/store/modules/profiles.js @@ -54,7 +54,7 @@ const actions = { if (profiles.length === 0) { // Create a default profile and persist it - const randomColor = getRandomColor() + const randomColor = getRandomColor().value const textColor = calculateColorLuminance(randomColor) const defaultProfile = { _id: MAIN_PROFILE_ID, diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index 243520044..0a52ca7c4 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -47,7 +47,6 @@ const state = { duration: '' }, externalPlayerNames: [], - externalPlayerNameTranslationKeys: [], externalPlayerValues: [], externalPlayerCmdArguments: {} } @@ -133,10 +132,6 @@ const getters = { return state.externalPlayerNames }, - getExternalPlayerNameTranslationKeys () { - return state.externalPlayerNameTranslationKeys - }, - getExternalPlayerValues () { return state.externalPlayerValues }, @@ -262,7 +257,7 @@ const actions = { } if (parsedString !== replaceFilenameForbiddenChars(parsedString)) { - reject(new Error('Forbidden Characters')) // use message as translation key + reject(new Error(i18n.t('Settings.Player Settings.Screenshot.Error.Forbidden Characters'))) } let filename @@ -274,7 +269,7 @@ const actions = { } if (!filename) { - reject(new Error('Empty File Name')) + reject(new Error(i18n.t('Settings.Player Settings.Screenshot.Error.Empty File Name'))) } resolve(parsedString) @@ -603,7 +598,7 @@ const actions = { const fileData = await fs.readFile(`${fileLocation}${fileName}`) const externalPlayerMap = JSON.parse(fileData).map((entry) => { - return { name: entry.name, nameTranslationKey: entry.nameTranslationKey, value: entry.value, cmdArguments: entry.cmdArguments } + return { name: entry.name, value: entry.value, cmdArguments: entry.cmdArguments } }) // Sort external players alphabetically & case-insensitive, keep default entry at the top const playerNone = externalPlayerMap.shift() @@ -611,7 +606,6 @@ const actions = { externalPlayerMap.unshift(playerNone) const externalPlayerNames = externalPlayerMap.map((entry) => { return entry.name }) - const externalPlayerNameTranslationKeys = externalPlayerMap.map((entry) => { return entry.nameTranslationKey }) const externalPlayerValues = externalPlayerMap.map((entry) => { return entry.value }) const externalPlayerCmdArguments = externalPlayerMap.reduce((result, item) => { result[item.value] = item.cmdArguments @@ -619,7 +613,6 @@ const actions = { }, {}) commit('setExternalPlayerNames', externalPlayerNames) - commit('setExternalPlayerNameTranslationKeys', externalPlayerNameTranslationKeys) commit('setExternalPlayerValues', externalPlayerValues) commit('setExternalPlayerCmdArguments', externalPlayerCmdArguments) }, @@ -667,7 +660,7 @@ const actions = { args.push(cmdArgs.startOffset, Math.trunc(payload.watchProgress)) } } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'starting video at offset') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.starting video at offset')) } } @@ -675,7 +668,7 @@ const actions = { if (typeof cmdArgs.playbackRate === 'string') { args.push(`${cmdArgs.playbackRate}${payload.playbackRate}`) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'setting a playback rate') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.setting a playback rate')) } } @@ -685,7 +678,7 @@ const actions = { if (typeof cmdArgs.playlistIndex === 'string') { args.push(`${cmdArgs.playlistIndex}${payload.playlistIndex}`) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'opening specific video in a playlist (falling back to opening the video)') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.opening specific video in a playlist (falling back to opening the video)')) } } @@ -693,7 +686,7 @@ const actions = { if (typeof cmdArgs.playlistReverse === 'string') { args.push(cmdArgs.playlistReverse) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'reversing playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.reversing playlists')) } } @@ -701,7 +694,7 @@ const actions = { if (typeof cmdArgs.playlistShuffle === 'string') { args.push(cmdArgs.playlistShuffle) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'shuffling playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.shuffling playlists')) } } @@ -709,7 +702,7 @@ const actions = { if (typeof cmdArgs.playlistLoop === 'string') { args.push(cmdArgs.playlistLoop) } else if (!ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'looping playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.looping playlists')) } } @@ -721,7 +714,7 @@ const actions = { } } else { if (payload.playlistId != null && payload.playlistId !== '' && !ignoreWarnings) { - showExternalPlayerUnsupportedActionToast(externalPlayer, 'opening playlists') + showExternalPlayerUnsupportedActionToast(externalPlayer, i18n.t('Video.External Player.Unsupported Actions.opening playlists')) } if (payload.videoId != null) { args.push(`${cmdArgs.videoUrl}https://www.youtube.com/watch?v=${payload.videoId}`) @@ -874,10 +867,6 @@ const mutations = { state.externalPlayerNames = value }, - setExternalPlayerNameTranslationKeys (state, value) { - state.externalPlayerNameTranslationKeys = value - }, - setExternalPlayerValues (state, value) { state.externalPlayerValues = value }, diff --git a/src/renderer/views/ProfileSettings/ProfileSettings.js b/src/renderer/views/ProfileSettings/ProfileSettings.js index 561f31918..6650d93f6 100644 --- a/src/renderer/views/ProfileSettings/ProfileSettings.js +++ b/src/renderer/views/ProfileSettings/ProfileSettings.js @@ -52,7 +52,7 @@ export default defineComponent({ methods: { openSettingsForNewProfile: function () { this.isNewProfileOpen = true - const bgColor = getRandomColor() + const bgColor = getRandomColor().value const textColor = calculateColorLuminance(bgColor) this.openSettingsProfile = { name: '', diff --git a/static/external-player-map.json b/static/external-player-map.json index 2df522a82..81a976ece 100644 --- a/static/external-player-map.json +++ b/static/external-player-map.json @@ -1,13 +1,11 @@ [ { "name": "None", - "nameTranslationKey": "Settings.External Player Settings.Players.None.Name", "value": "", "cmdArguments": null }, { "name": "mpv", - "nameTranslationKey": "Settings.External Player Settings.Players.mpv.Name", "value": "mpv", "cmdArguments": { "defaultExecutable": "mpv", @@ -25,7 +23,6 @@ }, { "name": "VLC", - "nameTranslationKey": "Settings.External Player Settings.Players.VLC.Name", "value": "vlc", "cmdArguments": { "defaultExecutable": "vlc", @@ -43,7 +40,6 @@ }, { "name": "iina", - "nameTranslationKey": "Settings.External Player Settings.Players.iina.Name", "value": "iina", "cmdArguments": { "defaultExecutable": "iina", @@ -61,7 +57,6 @@ }, { "name": "SMPlayer", - "nameTranslationKey": "Settings.External Player Settings.Players.SMPlayer.Name", "value": "smplayer", "cmdArguments": { "defaultExecutable": "smplayer", @@ -79,7 +74,6 @@ }, { "name": "MPC-BE", - "nameTranslationKey": "Settings.External Player Settings.Players.MPC-BE.Name", "value": "mpc-be", "cmdArguments": { "defaultExecutable": "mpc-be64", @@ -97,7 +91,6 @@ }, { "name": "MPC-HC", - "nameTranslationKey": "Settings.External Player Settings.Players.MPC-HC.Name", "value": "mpc-hc", "cmdArguments": { "defaultExecutable": "mpc-hc64", @@ -115,7 +108,6 @@ }, { "name": "PotPlayer", - "nameTranslationKey": "Settings.External Player Settings.Players.PotPlayer.Name", "value": "potplayer", "cmdArguments": { "defaultExecutable": "potplayermini64", @@ -133,7 +125,6 @@ }, { "name": "Clapper", - "nameTranslationKey": "Settings.External Player Settings.Players.Clapper.Name", "value": "clapper", "cmdArguments": { "defaultExecutable": "clapper", @@ -151,7 +142,6 @@ }, { "name": "Celluloid", - "nameTranslationKey": "Settings.External Player Settings.Players.Celluloid.Name", "value": "celluloid", "cmdArguments": { "defaultExecutable": "celluloid", @@ -169,7 +159,6 @@ }, { "name": "Haruna", - "nameTranslationKey": "Settings.External Player Settings.Players.Haruna.Name", "value": "haruna", "cmdArguments": { "defaultExecutable": "haruna", diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index ba3d2397a..04bda7c23 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'العربية' -FreeTube: 'فري تيوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- هذا الجزء من التطبيق ليس جاهزاً بعد. عُد لاحقاً عندما يتم إحراز تقدم. diff --git a/static/locales/as.yaml b/static/locales/as.yaml index 41018236f..c0d721131 100644 --- a/static/locales/as.yaml +++ b/static/locales/as.yaml @@ -1,4 +1,3 @@ -FreeTube: 'ফ্ৰীটিউব' # Currently on Subscriptions, Playlists, and History File: 'ফাইল' Quit: 'অন্ত কৰক' diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 847311372..22c5ef58c 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Беларуская' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Гэтая частка праграмы яшчэ не гатова. Прыходзьце пазней. diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 8b37e929d..622b54461 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Български' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Тази част от приложението все още не е готова. Върнете се по-късно, когато може diff --git a/static/locales/bn.yaml b/static/locales/bn.yaml index 82cb20bef..26612f6b1 100644 --- a/static/locales/bn.yaml +++ b/static/locales/bn.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'বাংলা' -FreeTube: 'ফ্রিটিউব' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- অ্যাপের এই অংশটি এখনও প্রস্তুত নয়। পরে ফিরে এসো যখন অগ্রগতি হয়েছে। diff --git a/static/locales/bs.yaml b/static/locales/bs.yaml index 5104e2b0c..f9d3f065e 100644 --- a/static/locales/bs.yaml +++ b/static/locales/bs.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Bosanski' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ovaj dio aplikacije još nije spreman. Vratite se kasnije kad se postigne napredak. diff --git a/static/locales/ca.yaml b/static/locales/ca.yaml index 6d0627144..f3946d460 100644 --- a/static/locales/ca.yaml +++ b/static/locales/ca.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'català' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Aquesta secció de l'aplicació encara no està llesta. Torna més endavant quan s'hagin diff --git a/static/locales/ckb.yaml b/static/locales/ckb.yaml index 10df3f5a8..f9461f790 100644 --- a/static/locales/ckb.yaml +++ b/static/locales/ckb.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ئیگلیزی (وڵاتە یەکگرتووەکانی ئەمریکا)' -FreeTube: 'فریتیوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- بەشێک لە نەرمەواڵەکە هێشتا ئامادە نییە. کە ڕەوتەکە درووست کرا دووبارە وەرەوە. diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 9aa0f5e78..49bc59576 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Čeština' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Tato část aplikace ještě není hotova. Vraťte se později. diff --git a/static/locales/cy.yaml b/static/locales/cy.yaml index 6f277d93c..d5a742592 100644 --- a/static/locales/cy.yaml +++ b/static/locales/cy.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Cymraeg' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': > diff --git a/static/locales/da.yaml b/static/locales/da.yaml index e9033f2dc..9af1a44a0 100644 --- a/static/locales/da.yaml +++ b/static/locales/da.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'dansk' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Denne del af app'en er ikke klar endnu. Kom tilbage senere, når der er gjort fremskridt. diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 10f816214..ef8adc699 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -1,4 +1,3 @@ -FreeTube: FreeTube # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Dieser Teil der App ist noch nicht bereit. Komme später wieder, wenn Fortschritte diff --git a/static/locales/el.yaml b/static/locales/el.yaml index 31e8a2fe0..9cef9b282 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Ελληνικά (EL)' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Αυτό το μέρος της εφαρμογής δεν είναι ακόμη έτοιμο. Επιστρέψτε αργότερα όταν έχει diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 60f91e356..19198f8b4 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: English (US) -FreeTube: FreeTube # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- This part of the app is not ready yet. Come back later when progress has been made. @@ -1060,3 +1059,7 @@ Hashtag: Yes: Yes No: No Ok: Ok +# symbol used to indicate that an item is correct +checkmark: ✓ +# French is the only language that should change this (they have a space before the colon) +Display Label: '{label}: {value}' diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 81ff39260..d189a8481 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'English (UK)' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- This part of the app is not ready yet. Come back later when progress has been made. diff --git a/static/locales/eo.yaml b/static/locales/eo.yaml index fea50e47c..461dcf747 100644 --- a/static/locales/eo.yaml +++ b/static/locales/eo.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Esperanto' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History File: 'Dosiero' Quit: 'Eliri' diff --git a/static/locales/es-MX.yaml b/static/locales/es-MX.yaml index 61ee2146e..1c20341fe 100644 --- a/static/locales/es-MX.yaml +++ b/static/locales/es-MX.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte de la aplicación aún no está lista. Vuelva más tarde cuando se haya avanzado. diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 68e45bc0e..cd8431634 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'español (España)' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte de la aplicación aún no está lista. Vuelve más tarde cuando se hayan diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml index f3de05dc3..a9bc19d8e 100644 --- a/static/locales/es_AR.yaml +++ b/static/locales/es_AR.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'español (Argentina)' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte de la aplicación no esta lista por el momento. Vuelve después cuando diff --git a/static/locales/et.yaml b/static/locales/et.yaml index f7c2244b5..bd045a8e3 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'eesti keel' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Rakenduse see osa pole veel valmis. Tule hiljem tagasi, kui arendustööd on valmis. diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index 03e2d3a88..b73de1da6 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Euskera' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Zati hau ez dago prest oraindik. Itzuli aurrerago aurrerapenak egin direnean. diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml index 7d62641c5..fa1f0ef13 100644 --- a/static/locales/fa.yaml +++ b/static/locales/fa.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'فارسی (ایرانی)' -FreeTube: 'یوتیوب آزاد' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- این بخش از نرم افزار هنوز آماده نیست.زمانی که پیشرفتی صورت گرفت به اینجا باز گردید. diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml index 5714154d0..80ee202ed 100644 --- a/static/locales/fi.yaml +++ b/static/locales/fi.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Tämä sovelluksen osa ei ole vielä valmis. Tule takaisin myöhemmin kun olemme edistyneet. diff --git a/static/locales/fil.yaml b/static/locales/fil.yaml index 294cef1be..311fb54a3 100644 --- a/static/locales/fil.yaml +++ b/static/locales/fil.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Filipino' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ang bahagi ito ng aplikasyon ay hindi pa handa. Bumalik po kayo mamaya kapag nag-unsad diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 7c580fa99..cd30a8601 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Cette partie de l'application n'est pas encore prête. Revenez plus tard lorsque @@ -1269,3 +1268,5 @@ Age Restricted: This channel is age restricted: Cette chaîne est soumise à des restrictions d'âge This video is age restricted: Cette vidéo est soumise à des restrictions d'âge Close Banner: Fermer la bannière +# French is the only language that should change this (they have a space before the colon) +Display Label: '{label} : {value}' diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index fd4cf960d..ecbe3ae15 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'galego' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte da aplicación non está lista aínda. Volve máis adiante, cando se avance diff --git a/static/locales/gsw.yaml b/static/locales/gsw.yaml index e964dc53a..182e20a50 100644 --- a/static/locales/gsw.yaml +++ b/static/locales/gsw.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Schwiizerdütsch' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- De Teil vom Programm isch nonig fertig. Bitte chum zumene spötere Ziitpunkt wider diff --git a/static/locales/he.yaml b/static/locales/he.yaml index 2f88b67fc..b9a7daa28 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'עברית' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- החלק הזה ביישומון עדיין לא מוכן. מזמינים אותך לשוב ולבדוק בהמשך כשנתקדם. diff --git a/static/locales/hi.yaml b/static/locales/hi.yaml index 240dbb83f..707c61dd4 100644 --- a/static/locales/hi.yaml +++ b/static/locales/hi.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'English (US)' -FreeTube: 'फ्रीट्यूब' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ऐप का यह हिस्सा अभी तैयार नहीं है। बाद में वापस आएँ जब प्रगति हुई हो diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index f2aa89c7a..1706e3b94 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Hrvatski' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ovaj dio programa još nije gotov. Navrati kasnije. diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index dd8796701..e1d8087e1 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Magyar' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Az alkalmazás ezen része még nem áll készen. Térjen vissza később amikor előrelépés diff --git a/static/locales/id.yaml b/static/locales/id.yaml index b471e1b32..1d0c8b40d 100644 --- a/static/locales/id.yaml +++ b/static/locales/id.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Bahasa Indonesia' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Bagian dari aplikasi ini belum disiapkan. Kembali lagi nanti saat kemajuan telah diff --git a/static/locales/is.yaml b/static/locales/is.yaml index 5434496d6..ca5b15958 100644 --- a/static/locales/is.yaml +++ b/static/locales/is.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Íslenska' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Þessi hluti forritsins er ekki tilbúinn. Skoðaðu þetta seinna þegar meira hefur diff --git a/static/locales/it.yaml b/static/locales/it.yaml index e32e30e45..f11c05836 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Italiano' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Questa parte dell'app non è ancora pronta. Torna più tardi quando saranno stati diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index f851625cb..762cd09f2 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- アプリのこの部分は未完成です。完成後に実行してください。 @@ -110,7 +109,7 @@ Playlists: '再生リスト' User Playlists: Your Playlists: 'あなたの再生リスト' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックします - Playlist Message: + Playlist Message: このページは、完全に動作する動画リストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」の動画リストに移動します。 Search bar placeholder: 動画リスト内の検索 Empty Search Message: この再生リストに、検索に一致する動画はありません @@ -469,7 +468,7 @@ Settings: Experimental Settings: Replace HTTP Cache: HTTP キャッシュの置換 Experimental Settings: 実験中の設定 - Warning: + Warning: これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください! Password Settings: Password Settings: パスワード設定 diff --git a/static/locales/ka.yaml b/static/locales/ka.yaml index e5c0b9f5e..3cee0eead 100644 --- a/static/locales/ka.yaml +++ b/static/locales/ka.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ქართული ენა' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- აპლიკაციის ეს ნაწილი ჯერ არ არის მზად. გთხოვთ, შეამოწმოთ მოგვიანებით, როდესაც იქნება diff --git a/static/locales/km.yaml b/static/locales/km.yaml index 8e3988d77..6c2106edc 100644 --- a/static/locales/km.yaml +++ b/static/locales/km.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ភាសាខ្មែរ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ផ្នែកនេះនៃកម្មវិធីមិនទាន់រួចរាល់នៅឡើយទេ។ ត្រលប់មកវិញនៅពេលក្រោយ ពេលដែលវឌ្ឍនភាពត្រូវបានបង្កើតឡើង។ diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml index 48ab70bc0..0b950b3cf 100644 --- a/static/locales/ko.yaml +++ b/static/locales/ko.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: '한국어' -FreeTube: '프리튜브' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 아직 구현 되지 않은 기능입니다. 개발이 완료된 후 다시 시도해주세요. diff --git a/static/locales/ku.yaml b/static/locales/ku.yaml index 1879548c3..a0278df86 100644 --- a/static/locales/ku.yaml +++ b/static/locales/ku.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'کوردی ناوەڕاست' -FreeTube: 'فریتیوب' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ئە بەشە لە ئەپلیکەیشنەکە هێشتا بەردەست نییە. لە کاتێکی دواتردا وەرەوە کە پێشکەوتنێک diff --git a/static/locales/la.yaml b/static/locales/la.yaml index ae7803694..e4b20b5a2 100644 --- a/static/locales/la.yaml +++ b/static/locales/la.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Latina' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Haec programmatis pars perfecta non est. Remea cum in hac profectum sit. diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml index 47fd7d1ba..0fb779ba8 100644 --- a/static/locales/lt.yaml +++ b/static/locales/lt.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'lietuvių' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ši programėlės dalis dar neparengta. Grįžkite vėliau, kai bus padaryta pažanga. diff --git a/static/locales/lv.yaml b/static/locales/lv.yaml index 130bb3cbf..56b1b16e8 100644 --- a/static/locales/lv.yaml +++ b/static/locales/lv.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Latviešu' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': > diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml index 86ec5a9de..324f3a649 100644 --- a/static/locales/nb_NO.yaml +++ b/static/locales/nb_NO.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Norsk bokmål' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Denne delen av programmet er ikke klart enda. Kom tilbake senere når ting er i orden. diff --git a/static/locales/ne.yaml b/static/locales/ne.yaml index 9a8ad74bd..88cb5e274 100644 --- a/static/locales/ne.yaml +++ b/static/locales/ne.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'नेपाली' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- एपको यो भाग अझै तयार भएको छैन। केहि प्रगति भएपछि आउनु होला। diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 5c179f0bd..bf0d1cf97 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Nederlands' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Dit gedeelte van de app is nog niet klaar. Kom later terug als er vooruitgang is diff --git a/static/locales/nn.yaml b/static/locales/nn.yaml index 8e454d553..64abdb85a 100644 --- a/static/locales/nn.yaml +++ b/static/locales/nn.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Norsk nynorsk' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Denne delen av programmet er ikkje klar enda. Ver venleg og kom tilbake på eit seinare diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 691846548..d2616d712 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ta część aplikacji nie jest jeszcze gotowa. Wróć później, gdy zostaną poczynione diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 4e1d89cc5..cdb6e7044 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte do aplicativo ainda não está pronta. Volte mais tarde quando o progresso diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml index 679ca1b77..39f6efdfb 100644 --- a/static/locales/pt-PT.yaml +++ b/static/locales/pt-PT.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: Português (PT) -FreeTube: FreeTube # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte da aplicação ainda não está pronta. Volte mais tarde quando já houver diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 67357a739..024a47434 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Português' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Esta parte da aplicação ainda não está pronta. Volte mais tarde quando já houver diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 652aad2d9..b862c522a 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'română' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Această parte a aplicației nu este gata încă. Revino mai târziu pentru modificări. diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 12f65982b..440dff5f2 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Эта часть приложения ещё не готова. Вернитесь позже, когда появится новая версия. diff --git a/static/locales/sat.yaml b/static/locales/sat.yaml index 22219df44..a8be0f7a5 100644 --- a/static/locales/sat.yaml +++ b/static/locales/sat.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ᱥᱟᱱᱛᱟᱲᱤ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- ᱮᱯᱯ ᱨᱮᱭᱟᱜ ᱱᱚᱶᱟ ᱡᱟᱭᱜᱟ ᱵᱟᱝ ᱛᱮᱭᱟᱨ ᱡᱩᱛ ᱠᱟᱱᱟ ᱾ ᱠᱟᱹᱢᱤ ᱪᱟᱵᱟ ᱠᱟᱛᱮ ᱦᱟᱹᱡᱩᱜᱽ ᱢᱮᱸ ᱾ diff --git a/static/locales/si.yaml b/static/locales/si.yaml index b2a4be309..c6edfc65b 100644 --- a/static/locales/si.yaml +++ b/static/locales/si.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'සිංහල' -FreeTube: 'ෆ්‍රීටියුබ්' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- යෙදුමේ මෙම කොටස තවම සූදානම් නැත. ප්‍රගතියක් ලබා ඇති පසු නැවත එන්න. diff --git a/static/locales/sk.yaml b/static/locales/sk.yaml index 1882ad076..82bb373cc 100644 --- a/static/locales/sk.yaml +++ b/static/locales/sk.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Táto časť aplikácie ešte nie je dokončená. Vráťte sa neskôr keď na nej spravíme diff --git a/static/locales/sl.yaml b/static/locales/sl.yaml index 01fbe4264..c7efdf8aa 100644 --- a/static/locales/sl.yaml +++ b/static/locales/sl.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'slovenščina' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ta del programa še ni pripravljen za uporabo. Prosimo, pridite nazaj kasneje, ko diff --git a/static/locales/sm.yaml b/static/locales/sm.yaml index e80aadef6..db4c9635e 100644 --- a/static/locales/sm.yaml +++ b/static/locales/sm.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Gagana Samoa' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- E le saauni le vaega o le polokalama lenei. Fa'amolemole toe fo'i mai afea na fai diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index 0004b8f0d..130661427 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Српски' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Овај део апликације још није спреман. Вратите се касније када буде постигнут напредак. diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml index 1f8c8fac0..2baa75e85 100644 --- a/static/locales/sv.yaml +++ b/static/locales/sv.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Svenska' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Den här delen av appen är inte klar än. Kom tillbaka senare när framsteg har gjorts. diff --git a/static/locales/ti.yaml b/static/locales/ti.yaml index 4de64898d..d45365585 100644 --- a/static/locales/ti.yaml +++ b/static/locales/ti.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'ትግርኛ' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- እዚ ኽፋል .app ምሉእ ኣይኰነን ። diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 2f83cfcf7..9ba2f91d4 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Türkçe' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Uygulamanın bu bölümü henüz hazır değil. Tamamlanınca geri gelin. diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index a69e6c904..5d67ca88c 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'Українська' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Ця частина застосунка ще не готова. Поверніться пізніше. diff --git a/static/locales/ur.yaml b/static/locales/ur.yaml index cd84b2405..77919b4b8 100644 --- a/static/locales/ur.yaml +++ b/static/locales/ur.yaml @@ -1,6 +1,5 @@ # Put the name of your locale in the same language Locale Name: 'اردو' -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 'ایپ کا یہ حصہ ابھی تک تیار نہیں ہے۔ جب پیش رفت ہو جائے تو بعد میں واپس آئیں۔' diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml index b84a3936b..fccebbbc9 100644 --- a/static/locales/vi.yaml +++ b/static/locales/vi.yaml @@ -1,5 +1,4 @@ Locale Name: Tiếng Việt -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- Phần này của app vẫn chưa sẵn sàng. Quay lại sau khi quá trình đã được thực hiện. diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 52b2291b0..376ee1e8c 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 应用此部分尚未完成。有了进展再来。 diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index daae2fb45..6173a116d 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -1,4 +1,3 @@ -FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History 'This part of the app is not ready yet. Come back later when progress has been made.': >- 此功能尚未製作完成。有更新再來喔。 diff --git a/yarn.lock b/yarn.lock index bfb7a7bf7..746b1928b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1032,6 +1032,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.14.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" + integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.6", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -1182,6 +1189,21 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint/eslintrc@^1.2.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1257,6 +1279,48 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== +"@intlify/core-base@^9.1.9": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.10.1.tgz#e61d507d35beb0c69f9c94566313f9520c25a84a" + integrity sha512-0+Wtjj04GIyglh5KKiNjRwgjpHrhqqGZhaKY/QVjjogWKZq5WHROrTi84pNVsRN18QynyPmjtsVUWqFKPQ45xQ== + dependencies: + "@intlify/message-compiler" "9.10.1" + "@intlify/shared" "9.10.1" + +"@intlify/eslint-plugin-vue-i18n@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-2.0.0.tgz#7308327452742c07e4aef8735f6a4b17cefd58f5" + integrity sha512-ECBD0TvQNa56XKyuM6FPIGAAl7MP6ODcgjBQJrzucNxcTb8fYTWmZ+xgBuvmvAtA0iE0D4Wp18UMild2N0bGyw== + dependencies: + "@eslint/eslintrc" "^1.2.0" + "@intlify/core-base" "^9.1.9" + "@intlify/message-compiler" "^9.1.9" + debug "^4.3.1" + glob "^8.0.0" + ignore "^5.0.5" + is-language-code "^3.1.0" + js-yaml "^4.0.0" + json5 "^2.1.3" + jsonc-eslint-parser "^2.0.0" + lodash "^4.17.11" + parse5 "^7.0.0" + semver "^7.3.4" + vue-eslint-parser "^9.0.0" + yaml-eslint-parser "^1.0.0" + +"@intlify/message-compiler@9.10.1", "@intlify/message-compiler@^9.1.9": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.10.1.tgz#d70c9ec211dab67d50a42ad1fb782c0e02f89c42" + integrity sha512-b68UTmRhgZfswJZI7VAgW6BXZK5JOpoi5swMLGr4j6ss2XbFY13kiw+Hu+xYAfulMPSapcHzdWHnq21VGnMCnA== + dependencies: + "@intlify/shared" "9.10.1" + source-map-js "^1.0.2" + +"@intlify/shared@9.10.1": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.10.1.tgz#024ad6dd4ee9581962437570b3dc25516c82f4e9" + integrity sha512-liyH3UMoglHBUn70iCYcy9CQlInx/lp50W2aeSxqqrvmG+LDj/Jj7tBJhBoQL4fECkldGhbmW0g2ommHfL6Wmw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -3551,6 +3615,11 @@ entities@^4.2.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -3976,7 +4045,7 @@ eslint@^8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.0.0, espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: +espree@^9.0.0, espree@^9.3.1, espree@^9.4.0, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -4551,6 +4620,17 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-agent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -4948,7 +5028,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: +ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== @@ -5187,6 +5267,13 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" +is-language-code@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-language-code/-/is-language-code-3.1.0.tgz#b2386b49227e7010636f16d0c2c681ca40136ab5" + integrity sha512-zJdQ3QTeLye+iphMeK3wks+vXSRFKh68/Pnlw7aOfApFSEIOhYa8P9vwwa6QrImNNBMJTiL1PpYF0f4BxDuEgA== + dependencies: + "@babel/runtime" "^7.14.0" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -5427,7 +5514,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^4.1.0: +js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -5508,11 +5595,21 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.0, json5@^2.2.3: +json5@^2.1.3, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-eslint-parser@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" + integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + jsonc-eslint-parser@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.1.0.tgz#4c126b530aa583d85308d0b3041ff81ce402bbb2" @@ -5752,7 +5849,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6399,6 +6496,13 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7072,6 +7176,11 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" @@ -7435,7 +7544,7 @@ semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.2, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -7650,7 +7759,7 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -8565,7 +8674,7 @@ vue-devtools@^5.1.4: resolved "https://registry.yarnpkg.com/vue-devtools/-/vue-devtools-5.1.4.tgz#265a7458ade2affb291739176964256b597fa302" integrity sha512-EBAEXvAHUinsPzoSiElps0JgtLXUnJXKIJbP6nfdz/R63VdKBMfJ34/rFip+4iT7iMbVS5lA4W6N1jq4Hj4LCg== -vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2: +vue-eslint-parser@^9.0.0, vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.4.2: version "9.4.2" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz#02ffcce82042b082292f2d1672514615f0d95b6d" integrity sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ== @@ -8906,7 +9015,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2: +yaml-eslint-parser@^1.0.0, yaml-eslint-parser@^1.2.1, yaml-eslint-parser@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz#1a9673ebe254328cfc2fa99f297f6d8c9364ccd8" integrity sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg== From 4e1486d3e5d71463b0e5bd386f4e8946d5697eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sun, 7 Apr 2024 15:38:55 +0000 Subject: [PATCH 10/45] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 75.1% (616 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nb_NO/ --- static/locales/nb_NO.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml index 324f3a649..3f9e34f16 100644 --- a/static/locales/nb_NO.yaml +++ b/static/locales/nb_NO.yaml @@ -967,3 +967,4 @@ Hashtag: Hashtag: Emneknagg This hashtag does not currently have any videos: Denne emneknaggen har ingen videoer enda +checkmark: ✓ From 0dac070b6fc031b1322d50495edd00aa38b815de Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Sun, 7 Apr 2024 16:50:29 +0000 Subject: [PATCH 11/45] Translated using Weblate (Italian) Currently translated at 100.0% (820 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index f11c05836..43beae65d 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -1221,3 +1221,5 @@ Age Restricted: This video is age restricted: Questo video è soggetto a limiti di età This channel is age restricted: Questo canale è soggetto a limiti di età Close Banner: Chiudi banner +checkmark: ✓ +Display Label: '{label}: {value}' From 77ca07a7d3f91862ac13c69a048f500a7da4a5cc Mon Sep 17 00:00:00 2001 From: summoner001 Date: Sun, 7 Apr 2024 15:02:48 +0000 Subject: [PATCH 12/45] Translated using Weblate (Hungarian) Currently translated at 100.0% (820 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index e1d8087e1..49551d200 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -1210,3 +1210,5 @@ Close Banner: Banner bezárása Age Restricted: This channel is age restricted: Ez a csatorna korhatáros This video is age restricted: Ez a videó korhatáros +Display Label: '{label}: {value}' +checkmark: ✓ From 8d5dbe9efa642019662d181ecab7a48ad0b72710 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sun, 7 Apr 2024 15:28:05 +0000 Subject: [PATCH 13/45] Translated using Weblate (Czech) Currently translated at 100.0% (820 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index 49bc59576..ce5d2be96 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -1172,3 +1172,5 @@ Close Banner: Zavřít panel Age Restricted: This channel is age restricted: Tento kanál je omezen věkem This video is age restricted: Toto video je omezeno věkem +checkmark: ✓ +Display Label: '{label}: {value}' From 548b51b11e43c279502ec98dcd911701c2e5aefe Mon Sep 17 00:00:00 2001 From: Tixa El Nou Date: Sun, 7 Apr 2024 17:22:24 +0000 Subject: [PATCH 14/45] Translated using Weblate (Spanish (Argentina)) Currently translated at 45.7% (375 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es_AR/ --- static/locales/es_AR.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml index a9bc19d8e..dcde36160 100644 --- a/static/locales/es_AR.yaml +++ b/static/locales/es_AR.yaml @@ -110,6 +110,11 @@ User Playlists: Search bar placeholder: Buscar en la Lista de Reproducción Empty Search Message: No hay videos en esta lista de reproducción que coincidan con tu búsqueda + This playlist currently has no videos.: Esta lista de reproducción no tiene videos. + Playlists with Matching Videos: Listas de reproducción con videos repetidos + Create New Playlist: Crear nueva lista de reproducción + Add to Favorites: Añadir a {playlistName} + Add to Playlist: Añadir a la lista de reproducción History: # On History Page History: 'Historial' @@ -488,3 +493,5 @@ Tooltips: Distraction Free Settings: Hide Subscriptions Live: Esta configuración se reemplaza por la configuración «{appWideSetting}» de toda la aplicación, en la sección «{subsection}» de «{settingsSection}» +Go to page: Ir a {page} +Close Banner: Cerrar banner From 32027d1dc6edcf4923467b4cc2af3916602707b7 Mon Sep 17 00:00:00 2001 From: Tixa El Nou Date: Sun, 7 Apr 2024 17:18:57 +0000 Subject: [PATCH 15/45] Translated using Weblate (Spanish) Currently translated at 100.0% (820 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index cd8431634..05f841d1c 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -1218,3 +1218,5 @@ Close Banner: Cerrar el banner Age Restricted: This channel is age restricted: Este canal está restringido por edad This video is age restricted: Este vídeo está restringido por edad +checkmark: ✓ +Display Label: '{label}: {value}' From 5ca9b0618637305b63a22943256469b0cfe72a15 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sun, 7 Apr 2024 23:39:55 +0200 Subject: [PATCH 16/45] Update targets in babelrc (#4893) --- .babelrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.babelrc b/.babelrc index abf4798b2..bca0e3c2c 100644 --- a/.babelrc +++ b/.babelrc @@ -4,8 +4,8 @@ "@babel/env", { "targets": { - "chrome": "106", - "node": "16.16.0" + "chrome": "122", + "node": "20.9.0" } } ] From 86f24f33e8efbd804cef6850f2593f796a1e1ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 7 Apr 2024 20:36:34 +0000 Subject: [PATCH 17/45] Translated using Weblate (Turkish) Currently translated at 100.0% (820 of 820 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 9ba2f91d4..ab7d12197 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -1213,3 +1213,5 @@ Close Banner: Afişi Kapat Age Restricted: This video is age restricted: Bu videoda yaş sınırlaması var This channel is age restricted: Bu kanalda yaş sınırlaması var +Display Label: '{label}: {value}' +checkmark: ✓ From f7206ec7e85567bb4d24651123aa32a628736b93 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 8 Apr 2024 03:31:20 +0200 Subject: [PATCH 18/45] Use blob URLs for storyboards instead of writing them to the file system (#4891) --- package.json | 2 +- .../privacy-settings/privacy-settings.js | 11 ---- .../privacy-settings/privacy-settings.vue | 9 --- src/renderer/store/modules/settings.js | 1 - src/renderer/views/Watch/Watch.js | 60 +++---------------- static/locales/ar.yaml | 4 -- static/locales/be.yaml | 3 - static/locales/bg.yaml | 5 -- static/locales/ca.yaml | 2 - static/locales/ckb.yaml | 3 - static/locales/cs.yaml | 4 -- static/locales/cy.yaml | 3 - static/locales/da.yaml | 4 -- static/locales/de-DE.yaml | 5 -- static/locales/el.yaml | 5 -- static/locales/en-US.yaml | 4 -- static/locales/en_GB.yaml | 4 -- static/locales/es-MX.yaml | 4 -- static/locales/es.yaml | 6 -- static/locales/es_AR.yaml | 1 - static/locales/et.yaml | 4 -- static/locales/eu.yaml | 5 -- static/locales/fa.yaml | 5 -- static/locales/fi.yaml | 4 -- static/locales/fr-FR.yaml | 6 -- static/locales/gl.yaml | 6 -- static/locales/he.yaml | 4 -- static/locales/hr.yaml | 6 -- static/locales/hu.yaml | 4 -- static/locales/id.yaml | 4 -- static/locales/is.yaml | 4 -- static/locales/it.yaml | 6 -- static/locales/ja.yaml | 3 - static/locales/ko.yaml | 4 -- static/locales/lt.yaml | 5 -- static/locales/lv.yaml | 3 - static/locales/nb_NO.yaml | 4 -- static/locales/nl.yaml | 6 -- static/locales/nn.yaml | 4 -- static/locales/pl.yaml | 4 -- static/locales/pt-BR.yaml | 6 -- static/locales/pt-PT.yaml | 5 -- static/locales/pt.yaml | 5 -- static/locales/ro.yaml | 4 -- static/locales/ru.yaml | 5 -- static/locales/sk.yaml | 4 -- static/locales/sl.yaml | 1 - static/locales/sm.yaml | 3 - static/locales/sr.yaml | 5 -- static/locales/sv.yaml | 4 -- static/locales/tr.yaml | 5 -- static/locales/uk.yaml | 4 -- static/locales/ur.yaml | 3 - static/locales/vi.yaml | 4 -- static/locales/zh-CN.yaml | 3 - static/locales/zh-TW.yaml | 3 - 56 files changed, 10 insertions(+), 285 deletions(-) diff --git a/package.json b/package.json index 252c2d5a7..e90cc9348 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "build-release": "node _scripts/build.js", "build-release:arm64": "node _scripts/build.js arm64", "build-release:arm32": "node _scripts/build.js arm32", - "clean": "rimraf build/ static/dashFiles/ dist/ static/storyboards/", + "clean": "rimraf build/ dist/", "debug": "run-s rebuild:electron debug-runner", "debug-runner": "node _scripts/dev-runner.js --remote-debug", "dev": "run-s rebuild:electron dev-runner", diff --git a/src/renderer/components/privacy-settings/privacy-settings.js b/src/renderer/components/privacy-settings/privacy-settings.js index 8658a42d9..94ec93d8f 100644 --- a/src/renderer/components/privacy-settings/privacy-settings.js +++ b/src/renderer/components/privacy-settings/privacy-settings.js @@ -39,9 +39,6 @@ export default defineComponent({ saveVideoHistoryWithLastViewedPlaylist: function () { return this.$store.getters.getSaveVideoHistoryWithLastViewedPlaylist }, - removeVideoMetaFiles: function () { - return this.$store.getters.getRemoveVideoMetaFiles - }, profileList: function () { return this.$store.getters.getProfileList @@ -74,13 +71,6 @@ export default defineComponent({ this.updateRememberHistory(value) }, - handleVideoMetaFiles: function (value) { - if (!value) { - this.updateRemoveVideoMetaFiles(false) - } - this.updateRemoveVideoMetaFiles(value) - }, - handleRemoveHistory: function (option) { this.showRemoveHistoryPrompt = false @@ -126,7 +116,6 @@ export default defineComponent({ ...mapActions([ 'updateRememberHistory', - 'updateRemoveVideoMetaFiles', 'removeAllHistory', 'updateSaveWatchedProgress', 'updateSaveVideoHistoryWithLastViewedPlaylist', diff --git a/src/renderer/components/privacy-settings/privacy-settings.vue b/src/renderer/components/privacy-settings/privacy-settings.vue index 43ca939ad..53f944777 100644 --- a/src/renderer/components/privacy-settings/privacy-settings.vue +++ b/src/renderer/components/privacy-settings/privacy-settings.vue @@ -29,15 +29,6 @@ @change="updateSaveVideoHistoryWithLastViewedPlaylist" /> -
- -

diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index e510dbea0..fcd191079 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -240,7 +240,6 @@ const state = { proxyVideos: !process.env.IS_ELECTRON, region: 'US', rememberHistory: true, - removeVideoMetaFiles: true, saveWatchedProgress: true, saveVideoHistoryWithLastViewedPlaylist: true, showFamilyFriendlyOnly: false, diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index ab9594f25..17d3443b7 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -1,6 +1,5 @@ import { defineComponent } from 'vue' import { mapActions } from 'vuex' -import fs from 'fs/promises' import FtLoader from '../../components/ft-loader/ft-loader.vue' import FtVideoPlayer from '../../components/ft-video-player/ft-video-player.vue' import WatchVideoInfo from '../../components/watch-video-info/watch-video-info.vue' @@ -12,14 +11,12 @@ import WatchVideoPlaylist from '../../components/watch-video-playlist/watch-vide import WatchVideoRecommendations from '../../components/watch-video-recommendations/watch-video-recommendations.vue' import FtAgeRestricted from '../../components/ft-age-restricted/ft-age-restricted.vue' import packageDetails from '../../../../package.json' -import { pathExists } from '../../helpers/filesystem' import { buildVTTFileLocally, copyToClipboard, formatDurationAsTimestamp, formatNumber, getFormatsFromHLSManifest, - getUserDataPath, showToast } from '../../helpers/utils' import { @@ -141,9 +138,6 @@ export default defineComponent({ rememberHistory: function () { return this.$store.getters.getRememberHistory }, - removeVideoMetaFiles: function () { - return this.$store.getters.getRemoveVideoMetaFiles - }, saveWatchedProgress: function () { return this.$store.getters.getSaveWatchedProgress }, @@ -703,7 +697,7 @@ export default defineComponent({ } if (result.storyboards?.type === 'PlayerStoryboardSpec') { - await this.createLocalStoryboardUrls(result.storyboards.boards.at(-1)) + this.createLocalStoryboardUrls(result.storyboards.boards.at(-1)) } } @@ -1400,9 +1394,7 @@ export default defineComponent({ this.playNextCountDownIntervalId = setInterval(showCountDownMessage, 1000) }, - handleRouteChange: async function (videoId) { - // if the user navigates to another video, the ipc call for the userdata path - // takes long enough for the video id to have already changed to the new one + handleRouteChange: function (videoId) { // receiving it as an arg instead of accessing it ourselves means we always have the right one clearTimeout(this.playNextTimeout) @@ -1433,21 +1425,9 @@ export default defineComponent({ } } - if (process.env.IS_ELECTRON && this.removeVideoMetaFiles) { - if (process.env.NODE_ENV === 'development') { - const vttFileLocation = `static/storyboards/${videoId}.vtt` - // only delete the file it actually exists - if (await pathExists(vttFileLocation)) { - await fs.rm(vttFileLocation) - } - } else { - const userData = await getUserDataPath() - const vttFileLocation = `${userData}/storyboards/${videoId}.vtt` - - if (await pathExists(vttFileLocation)) { - await fs.rm(vttFileLocation) - } - } + if (this.videoStoryboardSrc.startsWith('blob:')) { + URL.revokeObjectURL(this.videoStoryboardSrc) + this.videoStoryboardSrc = '' } }, @@ -1612,36 +1592,14 @@ export default defineComponent({ }) }, - createLocalStoryboardUrls: async function (storyboardInfo) { + createLocalStoryboardUrls: function (storyboardInfo) { const results = buildVTTFileLocally(storyboardInfo, this.videoLengthSeconds) - const userData = await getUserDataPath() - let fileLocation - let uriSchema - // Dev mode doesn't have access to the file:// schema, so we access - // storyboards differently when run in dev - if (process.env.NODE_ENV === 'development') { - fileLocation = `static/storyboards/${this.videoId}.vtt` - uriSchema = `storyboards/${this.videoId}.vtt` - // if the location does not exist, writeFile will not create the directory, so we have to do that manually - if (!(await pathExists('static/storyboards/'))) { - fs.mkdir('static/storyboards/') - } else if (await pathExists(fileLocation)) { - await fs.rm(fileLocation) - } + // after the player migration, switch to using a data URI, as those don't need to be revoked - await fs.writeFile(fileLocation, results) - } else { - if (!(await pathExists(`${userData}/storyboards/`))) { - await fs.mkdir(`${userData}/storyboards/`) - } - fileLocation = `${userData}/storyboards/${this.videoId}.vtt` - uriSchema = `file://${fileLocation}` + const blob = new Blob([results], { type: 'text/vtt;charset=UTF-8' }) - await fs.writeFile(fileLocation, results) - } - - this.videoStoryboardSrc = uriSchema + this.videoStoryboardSrc = URL.createObjectURL(blob) }, tryAddingTranslatedLocaleCaption: function (captionTracks, locale, baseUrl) { diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 04bda7c23..064a068bf 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -398,7 +398,6 @@ Settings: أنت متأكد أنك تريد إزالة جميع الاشتراكات والملفات الشخصية؟ لا يمكن التراجع عن هذا. Remove All Subscriptions / Profiles: إزالة جميع الاشتراكات \ الملفات الشخصية - Automatically Remove Video Meta Files: إزالة ملفات تعريف الفيديو تلقائيًا Save Watched Videos With Last Viewed Playlist: حفظ مقاطع الفيديو التي تمت مشاهدتها مع آخر قائمة تشغيل تم عرضها All playlists have been removed: تمت إزالة جميع قوائم التشغيل @@ -1067,9 +1066,6 @@ Tooltips: Allow DASH AV1 formats: قد تبدو تنسيقات DASH AV1 أفضل من تنسيقات DASH H.264. تتطلب تنسيقات DASH AV1 مزيدا من الطاقة للتشغيل! وهي غير متوفرة في جميع مقاطع الفيديو ، وفي هذه الحالات سيستخدم المشغل تنسيقات DASH H.264 بدلا من ذلك. - Privacy Settings: - Remove Video Meta Files: عندما يمكن، يحذف Freetube تلقائيًا ملفات التعريف التي - تم إنشاؤها أثناء تشغيل الفيديو ، عندما تكون صفحة المشاهدة مغلقة. Subscription Settings: Fetch Feeds from RSS: عند تفعيلها، سوف يستخدم فريتيوب طريقة RSS بدلًا من طريقته المعتادة لجلب صفحة اشتراكاتك. طريقة RSS أسرع وتتخطى حجب الآي بي IP، لكنها لا diff --git a/static/locales/be.yaml b/static/locales/be.yaml index 22c5ef58c..8eb66ff62 100644 --- a/static/locales/be.yaml +++ b/static/locales/be.yaml @@ -306,7 +306,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -801,8 +800,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/bg.yaml b/static/locales/bg.yaml index 622b54461..c05dc3b1b 100644 --- a/static/locales/bg.yaml +++ b/static/locales/bg.yaml @@ -414,7 +414,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Сигурни ли сте, че искате да премахнете всички абонаменти и профили? Това не може да бъде възстановено.' - Automatically Remove Video Meta Files: Автоматично премахване на видео метафайловете Save Watched Videos With Last Viewed Playlist: Запазване на гледани видеа с последно гледан плейлист Remove All Playlists: Премахване на всички плейлисти @@ -1098,10 +1097,6 @@ Tooltips: External Link Handling: "Избор на поведението по подразбиране, когато щракнете върху връзка, която не може да бъде отворена във FreeTube.\nПо подразбиране FreeTube ще отвори връзката в браузъра по подразбиране.\n" - Privacy Settings: - Remove Video Meta Files: Когато страницата за гледане бъде затворена, FreeTube - автоматично ще изтрива метафайловете, създадени по време на възпроизвеждане - на видеото. External Player Settings: Custom External Player Arguments: Всички персонализирани аргументи от командния ред, разделени с точка и запетая (";"), които искате да бъдат предадени на външния diff --git a/static/locales/ca.yaml b/static/locales/ca.yaml index f3946d460..4b1c91366 100644 --- a/static/locales/ca.yaml +++ b/static/locales/ca.yaml @@ -265,8 +265,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Esteu segur que voleu esborrar totes les subscripcions i perfils? Aquesta acció no es pot desfer.' - Automatically Remove Video Meta Files: Suprimeix automàticament les metadades - dels vídeos Subscription Settings: Subscription Settings: 'Configuració de les subscripcions' Hide Videos on Watch: 'Oculta els vídeos visualitzats' diff --git a/static/locales/ckb.yaml b/static/locales/ckb.yaml index f9461f790..a3a269e5b 100644 --- a/static/locales/ckb.yaml +++ b/static/locales/ckb.yaml @@ -310,7 +310,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -817,8 +816,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index ce5d2be96..e257e56b2 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -410,7 +410,6 @@ Settings: Remove All Subscriptions / Profiles: 'Odstranit všechny odběry / profily' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Opravdu chcete odstranit všechny odběry a profily? Tato akce je nevratná.' - Automatically Remove Video Meta Files: Automaticky odstranit meta soubory videa Save Watched Videos With Last Viewed Playlist: Uložit zhlédnutá videa s naposledy zobrazeným playlistem All playlists have been removed: Všechny playlisty byly odstraněny @@ -1056,9 +1055,6 @@ Tooltips: # Toast Messages Fetch Automatically: Při povolení tohoto nastavení bude FreeTube automaticky načítat vaše odběry při otevření nového okna a při přepínání profilů. - Privacy Settings: - Remove Video Meta Files: Pokud je povoleno, FreeTube automaticky odstraní meta - soubory vytvořené během přehrávání videa, když se stránka sledování zavře. External Player Settings: Ignore Warnings: Potlačuje varování, kdy současný externí přehrávač nepodporuje aktuální akci (např. obrácení seznamů skladeb apod.). diff --git a/static/locales/cy.yaml b/static/locales/cy.yaml index d5a742592..d4b3349b4 100644 --- a/static/locales/cy.yaml +++ b/static/locales/cy.yaml @@ -313,7 +313,6 @@ Settings: Remember History: 'Cadw Hanes' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -819,8 +818,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/da.yaml b/static/locales/da.yaml index 9af1a44a0..690b45739 100644 --- a/static/locales/da.yaml +++ b/static/locales/da.yaml @@ -382,7 +382,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Er du sikker på, at du vil fjerne alle abonnementer og profiler? Dette kan ikke fortrydes.' - Automatically Remove Video Meta Files: Fjern Automatisk Video Metafiler All playlists have been removed: Alle playlister blev fjernet Are you sure you want to remove all your playlists?: Er du sikker på, at du vil fjerne alle dine playlister? @@ -1009,9 +1008,6 @@ Tooltips: Advarsel: Invidious-indstillinger har ingen effekt på eksterne afspillere.' Ignore Warnings: Undertryk advarsler for når den eksterne afspiller ikke understøtter den gældende handling (fx vende playlister om, etc.). - Privacy Settings: - Remove Video Meta Files: Når det er aktiveret, sletter FreeTube automatisk metafiler - oprettet under videoafspilning, når siden lukkes. Distraction Free Settings: Hide Channels: Indtast et kanal-ID for at skjule alle videoer, playlister og selve kanalen fra at blive vist i søgning, trending, mest populære og anbefalet. Det diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index ef8adc699..fd7209d05 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -460,7 +460,6 @@ Settings: du sicher, dass du alle Abos und Profile löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden. Remove All Subscriptions / Profiles: Alle Abos / Profile entfernen - Automatically Remove Video Meta Files: Video-Metadateien automatisch entfernen Save Watched Videos With Last Viewed Playlist: Angesehene Videos mit der zuletzt angesehenen Wiedergabeliste speichern Remove All Playlists: Alle Wiedergabelisten entfernen @@ -1139,10 +1138,6 @@ Tooltips: Die DASH AV1-Formate benötigen mehr Leistung für die Wiedergabe! Sie sind nicht bei allen Videos verfügbar. In diesen Fällen verwendet der Abspieler stattdessen die DASH H.264-Formate. - Privacy Settings: - Remove Video Meta Files: Wenn aktiviert, löscht FreeTube automatisch die während - der Videowiedergabe erstellten Metadateien, wenn die Abspielseite geschlossen - wird. External Player Settings: Custom External Player Arguments: Alle benutzerdefinierten Befehlszeilenargumente, getrennt durch Semikolon (';'), die an den externen Abspieler übergeben werden diff --git a/static/locales/el.yaml b/static/locales/el.yaml index 9cef9b282..4ff90643e 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -322,7 +322,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Είστε βέβαιοι ότι θέλετε να καταργήσετε όλες τις συνδρομές και τα προφίλ; Αυτό δεν μπορεί να αναιρεθεί.' - Automatically Remove Video Meta Files: Αυτόματη αφαίρεση μετα-αρχείων βίντεο Save Watched Videos With Last Viewed Playlist: Αποθήκευση Βίντεο που Παρακολουθήσατε Με τη Λίστα Αναπαραγωγής Τελευταίας Προβολής Subscription Settings: @@ -1018,10 +1017,6 @@ Tooltips: σε έναν σύνδεσμο, ο οποίος δεν μπορεί να ανοίξει στο FreeTube.\nΑπό προεπιλογή, το FreeTube θα ανοίξει τον σύνδεσμο που έχει πατηθεί στο προεπιλεγμένο πρόγραμμα περιήγησης.\n" - Privacy Settings: - Remove Video Meta Files: Όταν είναι ενεργοποιημένο, το FreeTube διαγράφει αυτόματα - τα μετα-αρχεία που δημιουργήθηκαν κατά την αναπαραγωγή βίντεο, όταν η σελίδα - παρακολούθησης είναι κλειστή. External Player Settings: Custom External Player Executable: Από προεπιλογή, το FreeTube θα υποθέσει ότι το επιλεγμένο εξωτερικό πρόγραμμα αναπαραγωγής μπορεί να βρεθεί μέσω της μεταβλητής diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 19198f8b4..75eef565a 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -412,7 +412,6 @@ Settings: Remember History: Remember History Save Watched Progress: Save Watched Progress Save Watched Videos With Last Viewed Playlist: Save Watched Videos With Last Viewed Playlist - Automatically Remove Video Meta Files: Automatically Remove Video Meta Files Clear Search Cache: Clear Search Cache Are you sure you want to clear out your search cache?: Are you sure you want to clear out your search cache? @@ -1002,9 +1001,6 @@ Tooltips: but doesn't provide certain information like video duration or live status Fetch Automatically: When enabled, FreeTube will automatically fetch your subscription feed when a new window is opened and when switching profile. - Privacy Settings: - Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files created during video playback, - when the watch page is closed. Experimental Settings: Replace HTTP Cache: Disables Electron's disk based HTTP cache and enables a custom in-memory image cache. Will lead to increased RAM usage. SponsorBlock Settings: diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index d189a8481..1c9d112fc 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -416,7 +416,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Are you sure you want to remove all subscriptions and profiles? This cannot be undone.' - Automatically Remove Video Meta Files: Automatically Remove Video Meta Files Save Watched Videos With Last Viewed Playlist: Save Watched Videos With Last Viewed Playlist Remove All Playlists: Remove all playlists @@ -1083,9 +1082,6 @@ Tooltips: Custom External Player Arguments: Any custom command line arguments, separated by semicolons (';'), you want to be passed to the external player. DefaultCustomArgumentsTemplate: '(Default: ‘{defaultCustomArguments}’)' - Privacy Settings: - Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files - created during video playback, when the watch page is closed. Experimental Settings: Replace HTTP Cache: Disables Electron's disk-based HTTP cache and enables a custom in-memory image cache. Will lead to increased RAM usage. diff --git a/static/locales/es-MX.yaml b/static/locales/es-MX.yaml index 1c20341fe..ef30b4b58 100644 --- a/static/locales/es-MX.yaml +++ b/static/locales/es-MX.yaml @@ -289,7 +289,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: ¿Estás seguro de que deseas eliminar todos los suscripciones y perfiles? Esto no puede ser deshecho. - Automatically Remove Video Meta Files: Borrar automáticamente metadatos del video Data Settings: How do I import my subscriptions?: ¿Cómo puedo importar mis suscripciones? Export History: Exportar Historia @@ -795,9 +794,6 @@ Tooltips: presionada la tecla Ctrl (tecla Comando en Mac) y haga clic izquierdo para reestablecer la velocidad de reproducción predeterminada (que es de 1x, a menos que la haya cambiado en configuración). - Privacy Settings: - Remove Video Meta Files: Si se habilita, FreeTube borrará automáticamente los - metadatos creados al abrir el video, una vez que la ventana se cierre. Subscription Settings: Fetch Feeds from RSS: Si se habilita, FreeTube usará RSS en lugar del método predeterminado para recibir videos de sus suscripciones. RSS es más rápido y previene que bloqueen diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 05f841d1c..37becae32 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -412,8 +412,6 @@ Settings: Remove All Subscriptions / Profiles: 'Borrar todas las suscripciones/perfiles' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '¿Confirma que quieres borrar todas las suscripciones y perfiles? Esta operación es irreversible.' - Automatically Remove Video Meta Files: Eliminar automáticamente los metadatos - de vídeos Save Watched Videos With Last Viewed Playlist: Guardar vídeos vistos con la última lista de reproducción vista All playlists have been removed: Se han eliminado todas las listas de reproducción @@ -1112,10 +1110,6 @@ Tooltips: External Link Handling: "Elija el comportamiento por defecto cuando se hace clic en un enlace que no se pueda abrirse en FreeTube. \nPor defecto, FreeTube abrirá el enlace en el que se hizo clic en su navegador predeterminado.\n" - Privacy Settings: - Remove Video Meta Files: Cuando se active, FreeTube eliminará automáticamente - meta-archivos creados durante la reproducción del vídeo una vez se cierre la - página de visualizado. External Player Settings: Custom External Player Executable: Por defecto, FreeTube buscará el reproductor externo seleccionado mediante la variable de entorno PATH, de no encontrarlo, diff --git a/static/locales/es_AR.yaml b/static/locales/es_AR.yaml index dcde36160..3a4908e12 100644 --- a/static/locales/es_AR.yaml +++ b/static/locales/es_AR.yaml @@ -300,7 +300,6 @@ Settings: Remove All Subscriptions / Profiles: 'Remover todas las suscripciones / perfiles' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '¿Realmente querés remover todas las suscripciones y perfiles? Esta acción no puede deshacerse.' - Automatically Remove Video Meta Files: Borrar automáticamente metadatos del video Save Watched Videos With Last Viewed Playlist: Guardar videos vistos con la última lista de reproducción vista Subscription Settings: diff --git a/static/locales/et.yaml b/static/locales/et.yaml index bd045a8e3..166aa79e3 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -408,7 +408,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Kas sa oled kindel, et soovid kustutada kõik tellimused/profiilid? Seda tegevust ei saa tagasi pöörata.' - Automatically Remove Video Meta Files: Kustuta videote metateave automaatselt Save Watched Videos With Last Viewed Playlist: Salvesta vaadatud videod viimati vaadatud videote esitusloendisse All playlists have been removed: Kõik esitusloendid on eemaldatud @@ -1013,9 +1012,6 @@ Tooltips: IP-aadressi blokeerimise, kuid ei sisalda video kestust ja otseesituse olekut Fetch Automatically: Kui see valik on kasutusel, siis FreeTube automaatselt laadib uue akna avamisel ja profiili vahetamisel sinu tellimuste loendi. - Privacy Settings: - Remove Video Meta Files: Selle valiku kasutamisel FreeTube automaatselt kustutab - peale video esitamist kogu metateabe. General Settings: Region for Trending: Piirkond, mille alusel kuvame hetkel menukad ehk populaarsust koguvad videod. diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index b73de1da6..eec7a47a5 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -399,7 +399,6 @@ Settings: Privacy Settings: 'Pribatutasunari buruzko ezarpenak' Remember History: 'Historikoa oroitu' Save Watched Progress: 'Ikusitakoaren progresioa gorde' - Automatically Remove Video Meta Files: 'Bideo metafitxategiak ezabatu automatikoki' Clear Search Cache: 'Bilaketen cachea ezabatu' Are you sure you want to clear out your search cache?: 'Ziur al zaude bilaketa-cachea garbitu nahi duzula?' @@ -1018,10 +1017,6 @@ Tooltips: bideoaren iraupenaren informaziorik ez du ematen, besteak beste' Fetch Automatically: Gaituta dagoenean, FreeTubek automatikoki eskuratuko du zure harpidetza-jarioa leiho berri bat irekitzen denean eta profila aldatzean. - Privacy Settings: - Remove Video Meta Files: 'Gaituta dagoenean, FreeTube-k automatikoki ezabatzen - ditu bideoen erreprodukzioan sortutako metafitxategiak, bistaratze orria ixten - denean.' # Toast Messages External Player Settings: diff --git a/static/locales/fa.yaml b/static/locales/fa.yaml index fa1f0ef13..b96647d65 100644 --- a/static/locales/fa.yaml +++ b/static/locales/fa.yaml @@ -289,8 +289,6 @@ Settings: Privacy Settings: 'تنظیمات امنیتی' Remember History: 'حفظ تاریخچه' Save Watched Progress: 'ذخیره ویدیو های دیده شده' - Automatically Remove Video Meta Files: 'به صورت خودکار متا فایل های ویدیو را حذف - کردن' Clear Search Cache: 'پاک کردن کش جستجو' Are you sure you want to clear out your search cache?: 'آیا مطمئن هستید که میخواهید کش جستجویتان را پاک کنید؟' @@ -701,9 +699,6 @@ Tooltips: نمی دهد Fetch Automatically: هنگامی که فعال باشد، FreeTube به طور خودکار فید اشتراک شما را هنگام باز شدن یک پنجره جدید و هنگام تغییر نمایه دریافت می کند. - Privacy Settings: - Remove Video Meta Files: هنگامی که FreeTube فعال باشد، به طور خودکار فایل های - متا ایجاد شده در حین پخش ویدیو را حذف می کند، زمانی که صفحه تماشا بسته می شود. External Player Settings: Custom External Player Executable: به طور پیش فرض، FreeTube فرض می کند که پخش کننده خارجی انتخاب شده را می توان از طریق متغیر محیطی PATH پیدا کرد. در صورت diff --git a/static/locales/fi.yaml b/static/locales/fi.yaml index 80ee202ed..cbe0b3a78 100644 --- a/static/locales/fi.yaml +++ b/static/locales/fi.yaml @@ -408,7 +408,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Haluatko cvarmasti poistaa kaikki tilaukset ja profiilit. Tätä toimintoa ei voi perua. Remove All Subscriptions / Profiles: Poista kaikki tilaukset / profiilit - Automatically Remove Video Meta Files: Poista videoiden metadata automaattisesti Save Watched Videos With Last Viewed Playlist: Tallenna katsotut videot viimeksi katsotulla soittolistalla Remove All Playlists: Poista kaikki soittolistat @@ -1020,9 +1019,6 @@ Tooltips: H.264 formaatit. DASH AV1 formaatit vaativat enemmän tehoa toistamiseen! Ne eivät ole käytettävissä kaikissa videoissa ja näissä tapauksissa soitin käyttää sen sijaan DASH H.264 formaatteja. - Privacy Settings: - Remove Video Meta Files: Kun tämä on kytkettynä päälle, FreeTube poistaa automaattisesti - meta-tiedostot jotka luotiin videon toiston aikana, katselusivu suljettaessa. External Player Settings: Custom External Player Arguments: Kaikki ne omavalintaiset komentorivin määreet, puolipisteillä eroteltuina (';'), jotka haluat siirtää eteenpäin ulkoiselle diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index cd30a8601..8f0faf408 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -470,8 +470,6 @@ Settings: sûr(e) de vouloir supprimer tous les abonnements et les profils ? Cette action est définitive. Remove All Subscriptions / Profiles: Supprimer tous les Abonnements / Profils - Automatically Remove Video Meta Files: Supprimer automatiquement les métafichiers - vidéo Save Watched Videos With Last Viewed Playlist: Sauvegarder les vidéos regardées avec la dernière liste de lecture vue All playlists have been removed: Toutes les listes de lecture ont été supprimées @@ -1158,10 +1156,6 @@ Tooltips: External Link Handling: "Choisissez le comportement par défaut quand on clique sur un lien qui ne peut être ouvert dans FreeTube.\nPar défaut, FreeTube ouvrira le lien dans votre navigateur par défaut.\n" - Privacy Settings: - Remove Video Meta Files: Lorsqu'il est activé, FreeTube supprime automatiquement - les MétaFichiers créés pendant la lecture de la vidéo, dès que la page de la - vidéo est quittée. External Player Settings: Custom External Player Arguments: Tous les arguments de ligne de commande personnalisés, séparés par des points-virgules (';'), que vous souhaitez transmettre au lecteur diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index ecbe3ae15..a0c694502 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -304,8 +304,6 @@ Settings: Remove All Subscriptions / Profiles: 'Limpar tódalas subscricións / perfís' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Estás seguro de querer limpar tódalas subscricións e perfís? Esta acción é irreversible.' - Automatically Remove Video Meta Files: Elimina automaticamente os ficheiros meta - de vídeo Save Watched Videos With Last Viewed Playlist: Gardalos vídeos vistos coa última lista de reprodución vista Subscription Settings: @@ -882,10 +880,6 @@ Tooltips: # Toast Messages Fetch Automatically: Cando estea activado, FreeTube buscará automaticamente o teu feed da subscrición, cando se abra unha nova ventá e cando cambies de perfil. - Privacy Settings: - Remove Video Meta Files: Cando está activado, FreeTube elimina automaticamente - os ficheiros meta creados durante a reprodución de vídeo cando a páxina de visualización - está pechada. External Player Settings: Custom External Player Arguments: Calquera argumento de liña de comandos personalizado, separado por puntos e coma (';'), que desexa que se pase ao reprodutor externo. diff --git a/static/locales/he.yaml b/static/locales/he.yaml index b9a7daa28..29fcd35a3 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -306,7 +306,6 @@ Settings: Remove All Subscriptions / Profiles: 'למחק את כל המינויים / פרופילים' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'למחוק כל את המינויים והפרופילים? זופעולה בלתי הפיכה.' - Automatically Remove Video Meta Files: להסיר אוטומטית קובצי נתוני על של הסרטון Save Watched Videos With Last Viewed Playlist: לשמור את הסרטונים שנצפו עם רשימת הנגינה לאחרונים שנצפו Subscription Settings: @@ -942,9 +941,6 @@ Tooltips: נגיש דרך משתנה הסביבה PATH. במקרה הצורך, ניתן להגדיר כאן נתיב משלך. Custom External Player Arguments: הארגומנטים משלך לשורת הפקודה שיועברו לנגן החיצוני, מופרדים בפסיקים (‚;’). - Privacy Settings: - Remove Video Meta Files: כאשר אפשרות זו מופעלת, FreeTube מוחק באופן אוטומטי קובצי - על שנוצרים במהלך ניגון סרטון, לאחר סגירת עמוד הצפייה. Experimental Settings: Replace HTTP Cache: משבית את מטמון ה־HTTP מבוסס הכונן ומפעיל מטמון תמונות מותאם אישית בזיכרון. יגדיל את צריכת הזיכרון (RAM). diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 1706e3b94..1bcb4c36b 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -400,8 +400,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Stvarno želiš ukloniti sve pretplate i profile? Ovo je nepovratna radnja. Remove All Subscriptions / Profiles: Ukloni sve pretplate/profile - Automatically Remove Video Meta Files: Automatski ukloni datoteke metapodataka - videa Save Watched Videos With Last Viewed Playlist: Spremi gledana videa sa zadnjim gledanom zbirkom Remove All Playlists: Ukloni sve zbirke @@ -1094,10 +1092,6 @@ Tooltips: ili stanja „uživo” Fetch Automatically: Kada je aktivirano, FreeTube će automatski dohvatiti feed tvoje pretplate kada se otvori novi prozor i prilikom mijenjanja profila. - Privacy Settings: - Remove Video Meta Files: Kada je aktivirano, FreeTube automatski uklanja datoteke - metapodataka koji su stvoreni tijekom reprodukcije videa, kad se zatvori stranica - gledanja. External Player Settings: External Player: Biranjem vanjskog playera prikazat će se ikona, za otvaranje videa (zbirka, ako je podržana) u vanjskom playeru, na minijaturi. Upozorenje, diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 49551d200..78ef6b5d4 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -421,7 +421,6 @@ Settings: Remove All Subscriptions / Profiles: 'Összes feliratkozás és profil eltávolítása' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Biztosan törli az összes feliratkozást és profilt? A művelet nem vonható vissza.' - Automatically Remove Video Meta Files: Videó-metafájlok automatikus eltávolítása Save Watched Videos With Last Viewed Playlist: Megtekintett videók mentése az utoljára megtekintett lejátszási listával All playlists have been removed: Minden lejátszási lista eltávolításra került @@ -1108,9 +1107,6 @@ Tooltips: H.264 formátumok. A DASH AV1 formátumok több energiát igényelnek a lejátszáshoz! Nem minden videónál érhetők el, ilyenkor a lejátszó a DASH H.264 formátumot használja helyette. - Privacy Settings: - Remove Video Meta Files: Ha engedélyezve van, a FreeTube automatikusan törli a - videolejátszás során létrehozott metafájlokat, amikor a nézőlapot bezárják. External Player Settings: Custom External Player Executable: Alapértelmezés szerint a FreeTube feltételezi, hogy a kiválasztott külső lejátszó megtalálható a PATH (ÚTVONAL) környezeti diff --git a/static/locales/id.yaml b/static/locales/id.yaml index 1d0c8b40d..9f5bca8ba 100644 --- a/static/locales/id.yaml +++ b/static/locales/id.yaml @@ -279,7 +279,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Apakah Anda yakin ingin menghapus semua langganan dan profil? Tindakan ini tidak bisa diurungkan.' - Automatically Remove Video Meta Files: Secara Otomatis Hapus File Meta Video Subscription Settings: Subscription Settings: 'Pengaturan Langganan' Hide Videos on Watch: 'Sembunyikan Video saat Menonton' @@ -808,9 +807,6 @@ Tooltips: External Link Handling: "Pilih perilaku default ketika tautan, yang tidak dapat dibuka di FreeTube, diklik.\nSecara default FreeTube akan membuka tautan yang diklik dengan browser default Anda.\n" - Privacy Settings: - Remove Video Meta Files: Saat diaktifkan, FreeTube secara otomatis menghapus file - meta yang dibuat selama pemutaran video, saat halaman tonton ditutup. External Player Settings: Custom External Player Arguments: Semua argumen perintah khusus, dipisahkan dengan titik koma (';'), yang Anda ingin gunakan dengan pemutar eksternal. diff --git a/static/locales/is.yaml b/static/locales/is.yaml index ca5b15958..943454280 100644 --- a/static/locales/is.yaml +++ b/static/locales/is.yaml @@ -415,7 +415,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Ertu viss um að þú viljir fjarlægja allar áskriftir og notkunarsnið? Ekki er hægt að afturkalla þetta.' - Automatically Remove Video Meta Files: Sjálfvirkt fjarlægja lýsigögn úr myndskeiðaskrám Save Watched Videos With Last Viewed Playlist: Vista myndskeið sem horft var á með síðast notaða spilunarlista Remove All Playlists: Fjarlægja alla spilunarlista @@ -1026,9 +1025,6 @@ Tooltips: # Toast Messages Fetch Automatically: Þegar þetta er virkt, mun FreeTube sækja sjálfkrafa áskriftarstreymin þín þegar nýr gluggi er opnaður og þegar skipt er um notkunarsnið. - Privacy Settings: - Remove Video Meta Files: Þegar þetta er virkt, eyðir FreeTube sjálfkrafa lýsigagnaskrám - sem útbúnar eru við afspilun, þegar skoðunarsíðunni er lokað. External Player Settings: Custom External Player Arguments: Öll sérsniðin skipanaviðföng og rofar, aðskilin með semíkommum (';'), sem beina á til utanaðkomandi spilarans. diff --git a/static/locales/it.yaml b/static/locales/it.yaml index 43beae65d..89abfd207 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -411,8 +411,6 @@ Settings: sicuro di volere eliminare tutte le iscrizioni e i profili? L'operazione non può essere annullata. Remove All Subscriptions / Profiles: Elimina tutte le iscrizioni e i profili - Automatically Remove Video Meta Files: Rimuovi automaticamente i metafile dai - video Save Watched Videos With Last Viewed Playlist: Salva i video guardati con l'ultima playlist vista All playlists have been removed: Tutte le playlist sono state rimosse @@ -1134,10 +1132,6 @@ Tooltips: Ignore Default Arguments: Non inviare argomenti predefiniti al lettore esterno oltre all'URL del video (ad esempio velocità di riproduzione, URL della playlist, ecc.). Gli argomenti personalizzati verranno comunque trasmessi. - Privacy Settings: - Remove Video Meta Files: Se abilitato, quando chiuderai la pagina di riproduzione - , FreeTube eliminerà automaticamente i metafile creati durante la visione del - video . Experimental Settings: Replace HTTP Cache: Disabilita la cache HTTP basata su disco Electron e abilita una cache di immagini in memoria personalizzata. Comporta un aumento dell'uso diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index 762cd09f2..943362756 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -331,7 +331,6 @@ Settings: Privacy Settings: 個人情報の設定 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: すべての登録チャンネルとプロファイルを削除しますか?元に戻せません。 Remove All Subscriptions / Profiles: 登録とプロファイルをすべて削除 - Automatically Remove Video Meta Files: 動画のメタファイルの自動削除 Save Watched Videos With Last Viewed Playlist: 「最後に再生した」リストで視聴済み動画を保存 Data Settings: How do I import my subscriptions?: 私の登録情報を取り込むにはどうしたらいいですか? @@ -881,8 +880,6 @@ Tooltips: Region for Trending: 急上昇の地域設定では、急上昇動画を表示する国を選択できます。 External Link Handling: "FreeTube で開けないリンクをクリックしたときのデフォルトの動作を選択します。\nデフォルトでは、FreeTube はクリックしたリンクをデフォルトのブラウザで開きます。\n" - Privacy Settings: - Remove Video Meta Files: 有効にすると、FreeTube は動画再生中に作成したメタファイルを、再生ページを閉じるときに自動的に削除します。 External Player Settings: Custom External Player Arguments: '";"、セミコロンで区切られたカスタム コマンド ライン引数を外部プレーヤーに渡します。' Ignore Warnings: 現在の外部プレーヤーが、現在のアクションに未対応の場合(動画リストの反転など)に警告を抑制します。 diff --git a/static/locales/ko.yaml b/static/locales/ko.yaml index 0b950b3cf..4fd3d4d10 100644 --- a/static/locales/ko.yaml +++ b/static/locales/ko.yaml @@ -285,7 +285,6 @@ Settings: Remove All Subscriptions / Profiles: '모든 구독채널과 프로필 삭제' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '정말로 모든 구독채널과 프로필을 삭제하시겠습니까? 삭제하면 복구가되지않습니다.' - Automatically Remove Video Meta Files: 비디오 메타 파일 자동 제거 Subscription Settings: Subscription Settings: '구독 설정' Hide Videos on Watch: '시청한 동영상 숨기기' @@ -751,9 +750,6 @@ Tooltips: Ignore Warnings: '현재 외부 플레이어가 현재 작업을 지원하지 않는 경우(예: 재생 목록 반전 등) 경고를 표시하지 않습니다.' Custom External Player Arguments: 외부 플레이어로 전달되기를 원하는사용자 지정 명령줄 인수는 세미콜론(';')으로 구분됩니다. - Privacy Settings: - Remove Video Meta Files: 활성화되면 FreeTube는 보기 페이지가 닫힐 때 비디오 재생 중에 생성된 메타 파일을 자동으로 - 삭제합니다. Distraction Free Settings: Hide Channels: 채널 이름이나 채널 ID를 입력해 해당 채널의 영상이나 재생목록, 채널 자체가 검색이나 인기 영상에 나타나지 않도록 합니다. 입력되는 채널 이름은 완전히 일치해야하며, 대소문자를 구별합니다. diff --git a/static/locales/lt.yaml b/static/locales/lt.yaml index 0fb779ba8..e51e8028a 100644 --- a/static/locales/lt.yaml +++ b/static/locales/lt.yaml @@ -310,8 +310,6 @@ Settings: Privacy Settings: 'Privatumo nustatymai' Remember History: 'Įsiminti istoriją' Save Watched Progress: 'Išsaugoti peržiūros progresą' - Automatically Remove Video Meta Files: 'Automatiškai pašalinti vaizdo įrašų meta - failus' Clear Search Cache: 'Išvalyti paieškos talpyklą' Are you sure you want to clear out your search cache?: 'Ar tikrai norite išvalyti paieškos talpyklą?' @@ -831,9 +829,6 @@ Tooltips: trukmės ar tiesioginės transliacijos būsenos' Fetch Automatically: Kai ši funkcija įjungta, FreeTube automatiškai įkels naują turinį iš prenumeratų, kai atidaromas naujas langas ir perjungiamas profilis. - Privacy Settings: - Remove Video Meta Files: 'Įjungus FreeTube, uždarius žiūrėjimo puslapį, automatiškai - ištrinami meta failai, sukurti vaizdo atkūrimo metu.' # Toast Messages Experimental Settings: diff --git a/static/locales/lv.yaml b/static/locales/lv.yaml index 56b1b16e8..3bb50c420 100644 --- a/static/locales/lv.yaml +++ b/static/locales/lv.yaml @@ -308,7 +308,6 @@ Settings: Remember History: 'Atcerēties vēsturi' Save Watched Progress: 'Saglabāt skatīto attīstību' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: 'Automātiski noņemt video metadatus' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -816,8 +815,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/nb_NO.yaml b/static/locales/nb_NO.yaml index 3f9e34f16..f6dc91f41 100644 --- a/static/locales/nb_NO.yaml +++ b/static/locales/nb_NO.yaml @@ -294,7 +294,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Er du sikker på at du vil fjerne alle abonnementer og profiler? Dette kan ikke angres. - Automatically Remove Video Meta Files: Fjern metadata automatisk fra videoer Save Watched Videos With Last Viewed Playlist: Lagre sette videoer med sist sette spilleliste Subscription Settings: @@ -887,9 +886,6 @@ Tooltips: Allow DASH AV1 formats: DASH AV1-formater kan ha bedre kvalitet enn DASH H.264 -formater. DASH AV1-formater krever dog mer regnekraft for avspilling. Ikke tilgjengelig for alle videoer, og i sådant fall bruker avspilleren DASH H.264-formater. - Privacy Settings: - Remove Video Meta Files: Hvis denne instillingen er på, vil FreeTube automatisk - slette metadata generert under videoavspilling når du lukker avspillingsiden. External Player Settings: Custom External Player Arguments: Alle egendefinerte kommandolinjeargumenter, semikoloninndelt («;») du ønsker å sende til den eksterne avspilleren. diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index bf0d1cf97..287aa130a 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -408,8 +408,6 @@ Settings: u zeker dat u alle abonnementen en profielen wil verwijderen? Dit kan niet ongedaan worden gemaakt. Remove All Subscriptions / Profiles: Verwijder alle abonnementen / profielen - Automatically Remove Video Meta Files: Bestanden met metadata van video's automatisch - verwijderen Save Watched Videos With Last Viewed Playlist: Houd bekeken video's bij met de afspeellijst ‘Laatst bekeken’ Remove All Playlists: Alle afspeel­lijsten verwijderen @@ -1107,10 +1105,6 @@ Tooltips: External Link Handling: "Kies het standaard gedrag voor wanneer een link dat niet kan worden geopend in FreeTube is aangeklikt.\nStandaard zal FreeTube de aangeklikte link openen in je standaardbrowser.\n" - Privacy Settings: - Remove Video Meta Files: Wanneer ingeschakeld zal FreeTube automatisch meta bestanden - die worden gecreëerd tijdens het afspelen van video's verwijderen zodra de pagina - wordt gesloten. External Player Settings: Custom External Player Arguments: Aangepaste opdrachtregelargumenten, gescheiden door puntkomma's (';'), die je wil doorgeven aan de externe videospeler. diff --git a/static/locales/nn.yaml b/static/locales/nn.yaml index 64abdb85a..f08b5d593 100644 --- a/static/locales/nn.yaml +++ b/static/locales/nn.yaml @@ -297,7 +297,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Er du sikker på at du vil fjerne alle abonnentar og profil? Dette kan ikkje bli ugjort.' - Automatically Remove Video Meta Files: Fjern metadata automatisk frå videoar Subscription Settings: Subscription Settings: 'Abonnementinnstillingar' Hide Videos on Watch: 'Skjul sette videoar' @@ -797,9 +796,6 @@ Tooltips: # Toast Messages Fetch Automatically: Om dette alternativet er aktivert, vil FreeTube automatisk hente abonnementfeeden din når eit nytt vindauge opnast og når du bytter profil. - Privacy Settings: - Remove Video Meta Files: Viss denne innstillinga er på, vil FreeTube automatisk - slette metadata generert under videoavspeling når du lukker avspelingsida. External Player Settings: DefaultCustomArgumentsTemplate: "(Standard: '{defaultCustomArguments}')" Custom External Player Executable: Som standard vil FreeTube anta at den valte diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index d2616d712..c627b6ae7 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -453,7 +453,6 @@ Settings: jesteś pewny/a, że chcesz usunąć wszystkie subskrypcje i profile? Nie będzie można tego cofnąć. Remove All Subscriptions / Profiles: Usuń wszystkie subskrypcje / profile - Automatically Remove Video Meta Files: Automatycznie usuwaj pliki metadanych filmu Save Watched Videos With Last Viewed Playlist: Zapisuj do historii film wraz z ostatnią odtwarzaną playlistą, która go zawierała All playlists have been removed: Wszystkie playlisty zostały usunięte @@ -1120,9 +1119,6 @@ Tooltips: H.264 DASH. Dekodowanie formatu AV1 DASH wymaga większej mocy obliczeniowej. W filmach, dla których ten format nie jest dostępny, zostanie użyty format H.264 DASH. - Privacy Settings: - Remove Video Meta Files: Po włączeniu FreeTube automatycznie usunie pliki metadanych - utworzone podczas odtwarzania filmu, gdy strona odtwarzacza zostanie zamknięta. External Player Settings: Ignore Warnings: Nie pokazuj ostrzeżeń o nieobsługiwanych akcjach przez zewnętrzny odtwarzacz (n.p. odwracanie playlist, itp.). diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index cdb6e7044..970649745 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -450,8 +450,6 @@ Settings: certeza de que deseja remover todas as inscrições e perfis? Isto não pode ser desfeito. Remove All Subscriptions / Profiles: Remover todas as inscrições ou perfis - Automatically Remove Video Meta Files: Remover automaticamente os metarquivos - de vídeo Save Watched Videos With Last Viewed Playlist: Salvar vídeos assistidos com a última playlist visualizada All playlists have been removed: Todas as playlists foram removidas @@ -1114,10 +1112,6 @@ Tooltips: External Link Handling: "Escolha o comportamento padrão quando um link que não pode ser aberto no FreeTube for clicado.\nPor padrão, o FreeTube abrirá o link clicado em seu navegador padrão.\n" - Privacy Settings: - Remove Video Meta Files: Quando ativado, o FreeTube exclui automaticamente os - metarquivos criados durante a reprodução do vídeo quando a página de exibição - é fechada. External Player Settings: Custom External Player Arguments: Quaisquer argumentos de linha de comando personalizados, separados por ponto e vírgula (';'), você deseja que seja passado para o player diff --git a/static/locales/pt-PT.yaml b/static/locales/pt-PT.yaml index 39f6efdfb..1d91532b3 100644 --- a/static/locales/pt-PT.yaml +++ b/static/locales/pt-PT.yaml @@ -400,8 +400,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Tem a certeza de que pretende remover todas as suas subscrições e perfis? Esta ação não pode ser revertida. - Automatically Remove Video Meta Files: Remover automaticamente os meta-ficheiros - dos vídeos Save Watched Videos With Last Viewed Playlist: Guardar os vídeos vistos com a última lista de reprodução vista Remove All Playlists: Remover todas as listas de reprodução @@ -1003,9 +1001,6 @@ Tooltips: # Toast Messages Fetch Automatically: Se ativa, FreeTube irá obter automaticamente as subscrições ao abrir uma nova janela e/ou quando mudar de perfil. - Privacy Settings: - Remove Video Meta Files: Se ativa, ao fechar uma página, FreeTube apagará automaticamente - os meta-ficheiros criados durante a reprodução de um vídeo. External Player Settings: Custom External Player Arguments: Quaisquer argumentos de linha de comando, separados por ponto e vírgula (';'), que quiser passar ao reprodutor externo. diff --git a/static/locales/pt.yaml b/static/locales/pt.yaml index 024a47434..f4c961846 100644 --- a/static/locales/pt.yaml +++ b/static/locales/pt.yaml @@ -410,8 +410,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tem a certeza de que pretende remover todas as suas subscrições e perfis? Esta ação não pode ser revertida.' - Automatically Remove Video Meta Files: Remover automaticamente os meta-ficheiros - dos vídeos Save Watched Videos With Last Viewed Playlist: Guardar os vídeos vistos com a última lista de reprodução vista Remove All Playlists: Remover todas as listas de reprodução @@ -1072,9 +1070,6 @@ This video is unavailable because of missing formats. This can happen due to cou vídeo não está disponível porque faltam formatos. Isto pode acontecer devido à indisponibilidade no seu país. Tooltips: - Privacy Settings: - Remove Video Meta Files: Se ativa, ao fechar uma página, FreeTube apagará automaticamente - os meta-ficheiros criados durante a reprodução de um vídeo. Subscription Settings: Fetch Feeds from RSS: Se ativa, FreeTube irá obter as subscrições através de RSS em vez do método normal. O formato RSS é mais rápido e não é bloqueado pelo diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index b862c522a..2779c7de8 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -316,7 +316,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Sunteți sigur că doriți să eliminați toate abonamentele și profilurile? Acest lucru nu poate fi anulat.' - Automatically Remove Video Meta Files: Îndepărtați automat fișierele meta video Save Watched Videos With Last Viewed Playlist: Salvați videoclipurile vizionate cu ultima listă de redare vizualizată Subscription Settings: @@ -892,9 +891,6 @@ Hashtags have not yet been implemented, try again later: Hashtag-urile nu au fos Unknown YouTube url type, cannot be opened in app: Tip url YouTube necunoscut, nu poate fi deschis în aplicație Tooltips: - Privacy Settings: - Remove Video Meta Files: Atunci când este activat, FreeTube șterge automat fișierele - meta create în timpul redării video, atunci când pagina de vizionare este închisă. Subscription Settings: Fetch Feeds from RSS: Atunci când este activată, FreeTube va utiliza RSS în locul metodei implicite pentru a prelua feed-ul de abonament. RSS este mai rapid și diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index 440dff5f2..b5a31e62e 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -427,7 +427,6 @@ Settings: Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Выполнить удаление всех подписок и учётных записей? Невозможно отменить. Remove All Subscriptions / Profiles: Удалить все подписки/профили - Automatically Remove Video Meta Files: Автоудаление метафайлов видео Save Watched Videos With Last Viewed Playlist: Сохранить просмотренные видео с последней просмотренной подборкой Are you sure you want to remove all your playlists?: Ты действительно хочешь удалить @@ -1084,10 +1083,6 @@ Tooltips: H.264. Форматы DASH AV1 требуют большей производительности для воспроизведения! Они доступны не для всех видео. Если они будут недоступны, тогда проигрыватель будет использовать форматы DASH H.264. - Privacy Settings: - Remove Video Meta Files: Если эта настройка включена, FreeTube автоматически удаляет - метаданные, созданные во время воспроизведения видео, когда страница просмотра - закрывается. External Player Settings: Custom External Player Arguments: Любые пользовательские аргументы командной строки, разделенные точкой с запятой (';'), которые вы хотите передать внешнему проигрывателю. diff --git a/static/locales/sk.yaml b/static/locales/sk.yaml index 82bb373cc..3fc5c2e47 100644 --- a/static/locales/sk.yaml +++ b/static/locales/sk.yaml @@ -328,7 +328,6 @@ Settings: Are you sure you want to remove your entire watch history?: Naozaj chcete odstrániť celú históriu pozerania? Search cache has been cleared: Vyrovnávacia pamäť vyhľadávania bola vymazaná - Automatically Remove Video Meta Files: Automaticky Odstrániť Metasúbory Videa The app needs to restart for changes to take effect. Restart and apply change?: Aplikácia požaduje reštart, aby sa zmeny prejavili. Reštartovať a aplikovať zmeny? Proxy Settings: @@ -700,9 +699,6 @@ Tooltips: External Link Handling: "Vyberte predvolené správanie pri kliknutí na odkaz, ktorý nemožno otvoriť vo FreeTube.\nV predvolenom nastavení FreeTube otvorí odkaz, na ktorý ste klikli, vo vašom predvolenom prehliadači.\n" - Privacy Settings: - Remove Video Meta Files: Ak je povolené, FreeTube po zatvorení stránky prezerania - automaticky odstráni metasúbory vytvorené počas prehrávania videa. External Player Settings: DefaultCustomArgumentsTemplate: "(Predvolené: '{defaultCustomArguments}')" External Player: Po výbere externého prehrávača sa na miniatúre zobrazí ikona diff --git a/static/locales/sl.yaml b/static/locales/sl.yaml index c7efdf8aa..64416d0fa 100644 --- a/static/locales/sl.yaml +++ b/static/locales/sl.yaml @@ -296,7 +296,6 @@ Settings: mogoče razveljaviti.' Save Watched Videos With Last Viewed Playlist: Shrani gledane videoposnetke z nazadnje ogledanim seznamom predvajanja - Automatically Remove Video Meta Files: Samodejno izbriši meta datoteke videoposnetkov Subscription Settings: Subscription Settings: 'Nastavitve naročnin' Hide Videos on Watch: 'Skrij gledane videoposnetke' diff --git a/static/locales/sm.yaml b/static/locales/sm.yaml index db4c9635e..871440bfe 100644 --- a/static/locales/sm.yaml +++ b/static/locales/sm.yaml @@ -307,7 +307,6 @@ Settings: Remember History: '' Save Watched Progress: '' Save Watched Videos With Last Viewed Playlist: '' - Automatically Remove Video Meta Files: '' Clear Search Cache: '' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' @@ -802,8 +801,6 @@ Tooltips: Subscription Settings: Fetch Feeds from RSS: '' Fetch Automatically: '' - Privacy Settings: - Remove Video Meta Files: '' Experimental Settings: Replace HTTP Cache: '' SponsorBlock Settings: diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index 130661427..cc5dcb1b8 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -418,8 +418,6 @@ Settings: Remove All Subscriptions / Profiles: 'Уклони сва праћења/профиле' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Желите ли заиста да уклоните сва праћења и профиле? Ово се не може поништити.' - Automatically Remove Video Meta Files: Аутоматски уклони мета фајлове за видео - снимак Save Watched Videos With Last Viewed Playlist: Сачувај одгледане видео снимке са последње гледане плејлисте All playlists have been removed: Све плејлисте су уклоњене @@ -939,9 +937,6 @@ Tooltips: разликује велика и мала слова) да бисте сакрили све видео снимке и плејлисте чији их оригинални наслови садрже у целом FreeTube-у, искључујући само историју, ваше плејлисте и видео снимке унутар плејлиста. - Privacy Settings: - Remove Video Meta Files: Када је омогућено, FreeTube аутоматски брише мета фајлове - направљене током репродукције видео снимка, када се страница гледања затвори. Player Settings: Allow DASH AV1 formats: DASH AV1 формати могу изгледати боље од DASH H.264 формата. DASH AV1 формати захтевају више снаге за репродукцију! Они нису доступни на diff --git a/static/locales/sv.yaml b/static/locales/sv.yaml index 2baa75e85..784b28a7c 100644 --- a/static/locales/sv.yaml +++ b/static/locales/sv.yaml @@ -330,7 +330,6 @@ Settings: Remove All Subscriptions / Profiles: 'Ta bort alla prenumerationer och profiler' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Vill du verkligen ta bort alla prenumerationer och profiler? Detta kan inte ångras.' - Automatically Remove Video Meta Files: Ta automatiskt bort videons metafiler Save Watched Videos With Last Viewed Playlist: Spara sedda vidoer till Senast tittade spellista Subscription Settings: @@ -977,9 +976,6 @@ Tooltips: External Link Handling: "Välj standardförfarande när en länk klickas, som inte kan öppnas i FreeTube är. \nStandard är att FreeTube kommer öppna länken i din standardwebbläsare.\n" - Privacy Settings: - Remove Video Meta Files: Om vald, kommer FreeTube automatiskt att kasta metadata - filer som skapades under uppspelning, när sidan stängs. External Player Settings: Custom External Player Arguments: Alla anpassade kommandoradsargument, åtskilda av semikolon (';'), ska skickas till den externa spelaren. diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index ab7d12197..0aea069ae 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -411,8 +411,6 @@ Settings: Remove All Subscriptions / Profiles: 'Tüm Abonelikler/Profilleri Temizle' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Tüm abonelikler/profilleri temizlemek istediğinizden emin misiniz? Geri alınamaz.' - Automatically Remove Video Meta Files: Video Meta Dosyalarını Otomatik Olarak - Kaldır Save Watched Videos With Last Viewed Playlist: İzlenen Videoları Son Görüntülenen Oynatma Listesiyle Kaydet All playlists have been removed: Tüm oynatma listeleri kaldırıldı @@ -1106,9 +1104,6 @@ Tooltips: External Link Handling: "FreeTube'da açılamayan bir bağlantı tıklandığında öntanımlı davranışı seçin.\nÖntanımlı olarak FreeTube, tıklanan bağlantıyı öntanımlı tarayıcınızda açacaktır.\n" - Privacy Settings: - Remove Video Meta Files: Etkinleştirildiğinde, izleme sayfası kapatıldığında video - oynatma sırasında oluşturulan meta dosyaları otomatik olarak silinir. External Player Settings: Custom External Player Arguments: Harici oynatıcıya iletmek isteyeceğiniz, noktalı virgülle (';') ayrılmış özel komut satırı argümanları. diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index 5d67ca88c..7c691b993 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -340,7 +340,6 @@ Settings: Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Справді хочете вилучити всі підписки та профілі? Цю дію не можна скасувати.' - Automatically Remove Video Meta Files: Автоматично вилучати метафайли відео Save Watched Videos With Last Viewed Playlist: Зберегти переглянуті відео у список відтворення, який ви переглядали останнім часом Subscription Settings: @@ -921,9 +920,6 @@ Tooltips: # Toast Messages Fetch Automatically: Якщо увімкнено, FreeTube автоматично отримуватиме вашу стрічку підписок під час відкриття нового вікна та за перемикання профілю. - Privacy Settings: - Remove Video Meta Files: Якщо увімкнено, FreeTube автоматично видаляє метафайли, - створені під час відтворення відео, коли сторінку перегляду закрито. External Player Settings: Custom External Player Arguments: Будь-які нетипові аргументи командного рядка розділяються (';') крапкою з комою, ви бажаєте, щоб вас було перенаправлено diff --git a/static/locales/ur.yaml b/static/locales/ur.yaml index 77919b4b8..0c4030bfd 100644 --- a/static/locales/ur.yaml +++ b/static/locales/ur.yaml @@ -200,9 +200,6 @@ Tooltips: کرے گا۔ آپ کی سبسکرپشن فیڈ حاصل کرنے کا طریقہ۔ آر ایس ایس تیز ہے اور آئی پی کو بلاک کرنے سے روکتا ہے، لیکن کچھ معلومات فراہم نہیں کرتا ہے جیسے ویڈیو کا دورانیہ یا لائیو اسٹیٹس' - Privacy Settings: - Remove Video Meta Files: 'فعال ہونے پر، FreeTube ویڈیو پلے بیک کے دوران بنائی - گئی میٹا فائلوں کو خود بخود حذف کر دیتا ہے، جب دیکھنے کا صفحہ بند ہوتا ہے۔' # Toast Messages This video is unavailable because of missing formats. This can happen due to country unavailability.: 'یہ diff --git a/static/locales/vi.yaml b/static/locales/vi.yaml index fccebbbc9..1ea7a3b42 100644 --- a/static/locales/vi.yaml +++ b/static/locales/vi.yaml @@ -541,7 +541,6 @@ Settings: Save Watched Progress: Lưu quá trình xem Remember History: Nhớ lịch sử Privacy Settings: Cài đặt quyền riêng tư - Automatically Remove Video Meta Files: Tự động xóa các tệp meta video Remove All Playlists: Xóa tất cả danh sách phát Are you sure you want to remove all your playlists?: Bạn có chắc muốn xóa tất cả các danh sách phát không? @@ -1111,9 +1110,6 @@ Tooltips: hoặc trạng thái phát trực tiếp Fetch Automatically: Khi được bật, FreeTube sẽ tự động tìm nạp nguồn cấp dữ liệu đăng ký của bạn khi cửa sổ mới được mở và khi chuyển đổi hồ sơ. - Privacy Settings: - Remove Video Meta Files: Khi được bật lên, FreeTube sẽ tự động xóa các tệp meta - được tạo trong quá trình phát lại video, khi trang xem bị đóng. Distraction Free Settings: Hide Channels: Nhập tên kênh hoặc ID kênh để ẩn tất cả video, danh sách phát và chính kênh đó khỏi xuất hiện trong tìm kiếm, xu hướng, phổ biến nhất và được diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 376ee1e8c..21e1fd50f 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -402,7 +402,6 @@ Settings: Clear Search Cache: 清除搜索缓存 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您确定您想移除所有订阅和配置文件吗?这无法撤销。 Remove All Subscriptions / Profiles: 移除所有订阅 / 配置文件 - Automatically Remove Video Meta Files: 自动删除硬盘元数据文件 Save Watched Videos With Last Viewed Playlist: 记住上次看过的播放列表中看过的视频 ID All playlists have been removed: 已删除所有播放列表 Remove All Playlists: 删除所有播放列表 @@ -978,8 +977,6 @@ Tooltips: DefaultCustomArgumentsTemplate: "(默认: '{defaultCustomArguments}')" Custom External Player Arguments: 任何你希望传递给外部播放器的用分号(';')分隔的自定义命令行参数。 Ignore Default Arguments: 不要向外部播放器发送除视频 URL 外的任何默认变量(如播放速度、播放列表 URL 等)。自定义变量仍将被传递。 - Privacy Settings: - Remove Video Meta Files: 启用后,当观看页面关闭时,FreeTube 会自动删除在视频播放时创建的元文件。 Experimental Settings: Replace HTTP Cache: 禁用 Electron 基于磁盘的 HTTP 缓存,启用自定义内存中图像缓存。会增加内存的使用。 Distraction Free Settings: diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 6173a116d..7861b195e 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -404,7 +404,6 @@ Settings: Privacy Settings: 隱私設定 Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 您確定要移除所有訂閱與設定檔嗎嗎? 注意:這無法復原。 Remove All Subscriptions / Profiles: 移除所有訂閱/設定檔 - Automatically Remove Video Meta Files: 自動刪除影片元檔案 Save Watched Videos With Last Viewed Playlist: 使用上次觀看的播放清單儲存觀看的影片 Remove All Playlists: 移除所有播放清單 All playlists have been removed: 所有播放清單已被移除 @@ -982,8 +981,6 @@ Tooltips: API 需要 Invidious 伺服器才能連線。 Region for Trending: 熱門影片區域可以讓您選擇想要顯示哪個國家的熱門影片。 External Link Handling: "選擇點擊後無法在 FreeTube 中開啟連結時的預設行為。\n預設情況下 FreeTube 將會在您的預設瀏覽器中開啟點擊的連結。\n" - Privacy Settings: - Remove Video Meta Files: 如果啟用,FreeTube會在關閉觀看頁面時,自動刪除影片播放過程中建立的暫存檔案。 External Player Settings: Custom External Player Arguments: 任何您想要傳遞給外部播放程式的自訂命令列參數,以半形冒號分隔 (';')。 Ignore Warnings: 當目前的外部播放程式不支援目前動作時(例如反向播放清單等等),消除警告。 From ab60eb264aac649db73f107faf9bee8e4d9931e2 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 8 Apr 2024 05:00:07 +0200 Subject: [PATCH 19/45] Ask the main process, instead of the file system whether the replace HTTP cache setting is enabled (#4894) --- src/constants.js | 5 ++- src/main/index.js | 26 +++++++++++++-- .../experimental-settings.js | 33 +++++++------------ 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/constants.js b/src/constants.js index b281fb168..322472503 100644 --- a/src/constants.js +++ b/src/constants.js @@ -23,7 +23,10 @@ const IpcChannels = { SYNC_SETTINGS: 'sync-settings', SYNC_HISTORY: 'sync-history', SYNC_PROFILES: 'sync-profiles', - SYNC_PLAYLISTS: 'sync-playlists' + SYNC_PLAYLISTS: 'sync-playlists', + + GET_REPLACE_HTTP_CACHE: 'get-replace-http-cache', + TOGGLE_REPLACE_HTTP_CACHE: 'toggle-replace-http-cache' } const DBActions = { diff --git a/src/main/index.js b/src/main/index.js index 51f8b7d56..aa3b241a3 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -10,6 +10,7 @@ import { IpcChannels, DBActions, SyncEvents } from '../constants' import baseHandlers from '../datastores/handlers/base' import { extractExpiryTimestamp, ImageCache } from './ImageCache' import { existsSync } from 'fs' +import asyncFs from 'fs/promises' import packageDetails from '../../package.json' @@ -177,7 +178,8 @@ function runApp() { // command line switches need to be added before the app ready event first // that means we can't use the normal settings system as that is asynchronous, // doing it synchronously ensures that we add it before the event fires - const replaceHttpCache = existsSync(`${app.getPath('userData')}/experiment-replace-http-cache`) + const REPLACE_HTTP_CACHE_PATH = `${app.getPath('userData')}/experiment-replace-http-cache` + const replaceHttpCache = existsSync(REPLACE_HTTP_CACHE_PATH) if (replaceHttpCache) { // the http cache causes excessive disk usage during video playback // we've got a custom image cache to make up for disabling the http cache @@ -662,7 +664,7 @@ function runApp() { } }) - ipcMain.once('relaunchRequest', () => { + function relaunch() { if (process.env.NODE_ENV === 'development') { app.exit(parseInt(process.env.FREETUBE_RELAUNCH_EXIT_CODE)) return @@ -693,6 +695,10 @@ function runApp() { } app.quit() + } + + ipcMain.once('relaunchRequest', () => { + relaunch() }) nativeTheme.on('updated', () => { @@ -780,6 +786,22 @@ function runApp() { child.unref() }) + ipcMain.handle(IpcChannels.GET_REPLACE_HTTP_CACHE, () => { + return replaceHttpCache + }) + + ipcMain.once(IpcChannels.TOGGLE_REPLACE_HTTP_CACHE, async () => { + if (replaceHttpCache) { + await asyncFs.rm(REPLACE_HTTP_CACHE_PATH) + } else { + // create an empty file + const handle = await asyncFs.open(REPLACE_HTTP_CACHE_PATH, 'w') + await handle.close() + } + + relaunch() + }) + // ************************************************* // // DB related IPC calls // *********** // diff --git a/src/renderer/components/experimental-settings/experimental-settings.js b/src/renderer/components/experimental-settings/experimental-settings.js index b4d5e8923..1c313c866 100644 --- a/src/renderer/components/experimental-settings/experimental-settings.js +++ b/src/renderer/components/experimental-settings/experimental-settings.js @@ -1,11 +1,9 @@ -import fs from 'fs/promises' import { defineComponent } from 'vue' import FtSettingsSection from '../ft-settings-section/ft-settings-section.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue' import FtPrompt from '../ft-prompt/ft-prompt.vue' -import { pathExists } from '../../helpers/filesystem' -import { getUserDataPath } from '../../helpers/utils' +import { IpcChannels } from '../../../constants' export default defineComponent({ name: 'ExperimentalSettings', @@ -19,19 +17,16 @@ export default defineComponent({ return { replaceHttpCacheLoading: true, replaceHttpCache: false, - replaceHttpCachePath: '', showRestartPrompt: false } }, - mounted: function () { - getUserDataPath().then((userData) => { - this.replaceHttpCachePath = `${userData}/experiment-replace-http-cache` + mounted: async function () { + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + this.replaceHttpCache = await ipcRenderer.invoke(IpcChannels.GET_REPLACE_HTTP_CACHE) + } - pathExists(this.replaceHttpCachePath).then((exists) => { - this.replaceHttpCache = exists - this.replaceHttpCacheLoading = false - }) - }) + this.replaceHttpCacheLoading = false }, methods: { handleRestartPrompt: function (value) { @@ -39,7 +34,7 @@ export default defineComponent({ this.showRestartPrompt = true }, - handleReplaceHttpCache: async function (value) { + handleReplaceHttpCache: function (value) { this.showRestartPrompt = false if (value === null || value === 'no') { @@ -47,16 +42,10 @@ export default defineComponent({ return } - if (this.replaceHttpCache) { - // create an empty file - const handle = await fs.open(this.replaceHttpCachePath, 'w') - await handle.close() - } else { - await fs.rm(this.replaceHttpCachePath) + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + ipcRenderer.send(IpcChannels.TOGGLE_REPLACE_HTTP_CACHE) } - - const { ipcRenderer } = require('electron') - ipcRenderer.send('relaunchRequest') } } }) From 2cc44753c175338f5870812747eae3d4907dd640 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 8 Apr 2024 02:37:27 +0000 Subject: [PATCH 20/45] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 7861b195e..863a6f341 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -1050,3 +1050,5 @@ Close Banner: 關閉橫幅 Age Restricted: This channel is age restricted: 此頻道有年齡限制 This video is age restricted: 此影片有年齡限制 +checkmark: ✓ +Display Label: '{label}:{value}' From 00fabf191b89c3371dba13803c3453b13314a530 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 07:04:21 -0400 Subject: [PATCH 21/45] Bump electron from 29.1.6 to 29.2.0 (#4903) Bumps [electron](https://github.com/electron/electron) from 29.1.6 to 29.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/v29.1.6...v29.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 e90cc9348..12f50b1ee 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "copy-webpack-plugin": "^12.0.2", "css-loader": "^6.10.0", "css-minimizer-webpack-plugin": "^6.0.0", - "electron": "^29.1.6", + "electron": "^29.2.0", "electron-builder": "^24.13.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", diff --git a/yarn.lock b/yarn.lock index 746b1928b..cc28256a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3556,10 +3556,10 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46" integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg== -electron@^29.1.6: - version "29.1.6" - resolved "https://registry.yarnpkg.com/electron/-/electron-29.1.6.tgz#3804545a7570e88717f01e02ec871c667c55e596" - integrity sha512-UIYfpHR9gRBFKHyejHuXUVQ7nNzZRnoPVOHlijkvqR+DSLwgJ2ZcVVt0LNduNeO8PhPkY1+6kHonL52OTC1cOw== +electron@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-29.2.0.tgz#98e9d45dcebda124fb0bd1ff20fc509ec692101c" + integrity sha512-ALKrCN52RG4g9prx4DriXSPnY5WoiyRUCNp7zEVQuoiNOpHTNqMMpRidQAHzntV4hajF1LMWHVoBkwqIs1jHhg== dependencies: "@electron/get" "^2.0.0" "@types/node" "^20.9.0" From b51c3663b5de2997a4dcb2fdfe158e02df57b47b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 07:05:35 -0400 Subject: [PATCH 22/45] Bump the fortawesome group with 3 updates (#4902) Bumps the fortawesome group with 3 updates: [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome), [@fortawesome/free-brands-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.1 to 6.5.2 - [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.1...6.5.2) Updates `@fortawesome/free-brands-svg-icons` from 6.5.1 to 6.5.2 - [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.1...6.5.2) Updates `@fortawesome/free-solid-svg-icons` from 6.5.1 to 6.5.2 - [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.1...6.5.2) --- updated-dependencies: - dependency-name: "@fortawesome/fontawesome-svg-core" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: fortawesome - dependency-name: "@fortawesome/free-brands-svg-icons" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: fortawesome - dependency-name: "@fortawesome/free-solid-svg-icons" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: fortawesome ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 6 +++--- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 12f50b1ee..dedeb4567 100644 --- a/package.json +++ b/package.json @@ -53,9 +53,9 @@ "ci": "yarn install --silent --frozen-lockfile" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.5.1", - "@fortawesome/free-brands-svg-icons": "^6.5.1", - "@fortawesome/free-solid-svg-icons": "^6.5.1", + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/vue-fontawesome": "^2.0.10", "@seald-io/nedb": "^4.0.4", "@silvermine/videojs-quality-selector": "^1.3.1", diff --git a/yarn.lock b/yarn.lock index cc28256a3..95c78c704 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1229,31 +1229,31 @@ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== -"@fortawesome/fontawesome-common-types@6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz#fdb1ec4952b689f5f7aa0bffe46180bb35490032" - integrity sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A== +"@fortawesome/fontawesome-common-types@6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz#eaf2f5699f73cef198454ebc0c414e3688898179" + integrity sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw== -"@fortawesome/fontawesome-svg-core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz#9d56d46bddad78a7ebb2043a97957039fcebcf0a" - integrity sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ== +"@fortawesome/fontawesome-svg-core@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz#4b42de71e196039b0d5ccf88559b8044e3296c21" + integrity sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" -"@fortawesome/free-brands-svg-icons@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.1.tgz#e948cc02404277cb8ad40fe3573ca75f2830e876" - integrity sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg== +"@fortawesome/free-brands-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz#bfca0cebd2c4713dc93244e1fa8b384f1f023587" + integrity sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" -"@fortawesome/free-solid-svg-icons@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz#737b8d787debe88b400ab7528f47be333031274a" - integrity sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ== +"@fortawesome/free-solid-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz#9b40b077b27400a5e9fcbf2d15b986c7be69e9ca" + integrity sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw== dependencies: - "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/fontawesome-common-types" "6.5.2" "@fortawesome/vue-fontawesome@^2.0.10": version "2.0.10" From 5425a50de41e93d048269b8b4902ef9ee794a377 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 08:03:54 -0400 Subject: [PATCH 23/45] Bump the babel group with 2 updates (#4900) 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.3 to 7.24.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.24.4/packages/babel-core) Updates `@babel/preset-env` from 7.24.3 to 7.24.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.24.4/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/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 | 102 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index dedeb4567..8f682477d 100644 --- a/package.json +++ b/package.json @@ -80,10 +80,10 @@ "youtubei.js": "^9.2.0" }, "devDependencies": { - "@babel/core": "^7.24.3", + "@babel/core": "^7.24.4", "@babel/eslint-parser": "^7.24.1", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.24.3", + "@babel/preset-env": "^7.24.4", "@double-great/stylelint-a11y": "^3.0.2", "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", diff --git a/yarn.lock b/yarn.lock index 95c78c704..4ba555294 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,23 +28,23 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" - integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" - integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== +"@babel/core@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.1" + "@babel/generator" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.1" - "@babel/parser" "^7.24.1" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" "@babel/template" "^7.24.0" "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" @@ -63,10 +63,10 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" - integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== +"@babel/generator@^7.24.1", "@babel/generator@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== dependencies: "@babel/types" "^7.24.0" "@jridgewell/gen-mapping" "^0.3.5" @@ -133,6 +133,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" + integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" @@ -350,10 +365,10 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" - integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== +"@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== dependencies: "@babel/template" "^7.24.0" "@babel/traverse" "^7.24.1" @@ -369,10 +384,18 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" - integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== +"@babel/parser@^7.23.5", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" + integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": version "7.24.1" @@ -571,10 +594,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-block-scoping@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f" - integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw== +"@babel/plugin-transform-block-scoping@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" + integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== dependencies: "@babel/helper-plugin-utils" "^7.24.0" @@ -586,12 +609,12 @@ "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-class-static-block@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6" - integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA== +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.4" "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -925,15 +948,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/preset-env@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3" - integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA== +"@babel/preset-env@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" + integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== dependencies: - "@babel/compat-data" "^7.24.1" + "@babel/compat-data" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-plugin-utils" "^7.24.0" "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" @@ -960,9 +984,9 @@ "@babel/plugin-transform-async-generator-functions" "^7.24.3" "@babel/plugin-transform-async-to-generator" "^7.24.1" "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.4" "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" "@babel/plugin-transform-classes" "^7.24.1" "@babel/plugin-transform-computed-properties" "^7.24.1" "@babel/plugin-transform-destructuring" "^7.24.1" From 8ef97e5b20e200a5cd644fca03ac0834acca81e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 08:04:14 -0400 Subject: [PATCH 24/45] Bump lefthook from 1.6.7 to 1.6.8 (#4904) Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.6.7 to 1.6.8. - [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.6.7...v1.6.8) --- 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 | 88 ++++++++++++++++++++++++++-------------------------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index 8f682477d..0d5eb09be 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "html-webpack-plugin": "^5.6.0", "js-yaml": "^4.1.0", "json-minimizer-webpack-plugin": "^5.0.0", - "lefthook": "^1.6.7", + "lefthook": "^1.6.8", "mini-css-extract-plugin": "^2.8.1", "npm-run-all": "^4.1.5", "postcss": "^8.4.38", diff --git a/yarn.lock b/yarn.lock index 4ba555294..cb502fbe9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5717,59 +5717,59 @@ lazy-val@^1.0.4, lazy-val@^1.0.5: resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lefthook-darwin-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.7.tgz#24fd8600a483e6d88ff504ad6097ac9146b74552" - integrity sha512-/Li1ssZd8WYpBMq2Aqs7AZGWtKpJQJkWkfrEzT6ke7gjNngBurRkVJcEpoiRJpzhk6J+HZTk3Pimh8XaYI0KHw== +lefthook-darwin-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.8.tgz#ce7225a8589fb17f1ec130cb7097b26e2cd2b40a" + integrity sha512-L7iZVANp92MsYHRlpOlItXWGS6QL0w1E6T5GO00SGVoVPClA+Tkt26BFPhLZKa3pMbSHEhGTHeBMWJZ2Un/TnQ== -lefthook-darwin-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.7.tgz#a4a7cf916e1e251026dcb8644155d1e65d5fb8cb" - integrity sha512-ZKRUFea0j/pco3NoypOHlzmSaYx5UYq47qywiqMUDmXz/38sjRlt8apKSNS3rlsPyPw+9g1c+pWwi+mQiHOnDg== +lefthook-darwin-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.8.tgz#534cc97c0eaa1febca9fb5be6e6793da5d10a20f" + integrity sha512-BhYwl1CBi0eKKfsD9Bd6a6wmmaLHaZEBS5PlGc0h8hRWxC+CmBZyR0VDqXli9yxmgraI6psehM+w1v7RkP5pSg== -lefthook-freebsd-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.7.tgz#89417428f50ff6eaa5114356758b6a9605442b35" - integrity sha512-kY1/+SqxGg4xyKCXOZG9tSmBSHr1m7IoGy4G4FlbmLcZeq4n1JUlhPz/05rbIemR7HXOwA5CAGyjooxT4hNfyw== +lefthook-freebsd-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.8.tgz#bd32db03d72fb4df197c93e2759d4ef9a902255a" + integrity sha512-pr86NVKUOiK0MwW2UZRLiDlYLV8XaqxKWRltVut4W78Ywb0PNTb3k4LVeMwfXiNqEgD8gug9vE8aZY1U3D2HMA== -lefthook-freebsd-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.7.tgz#9fd69a1d7b4b9622c01f6ccbb9e2db9a510c07c6" - integrity sha512-rC9/G6WPKWyxNB68HsUxngOdcTAHTux04LgDgC0j6OOFgpo8cEYHSNTHv4ERz79FxCPBmNe4Cg+mIXHYg8b8RQ== +lefthook-freebsd-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.8.tgz#171c1c829cde0f7f27943cb483254b078b50b632" + integrity sha512-pyzYRCHf6jSWoZJG22kE7KFbHQ1B6sHcxXP9o/Y5H8T/sHUxO03GEtdrGwyijMP0EJYb1vMfVWYY5WbWfg6SPg== -lefthook-linux-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.7.tgz#2c7663ed6363751fa264d1e54322b1dd05dc1970" - integrity sha512-3MAfA/cAgA7716C04XkSoyfMDXkOZDx9k2BkZdOwt35TBjxz6fkinYeeOvszGBSfeOFNQHIYYFgHazEaFVzrjQ== +lefthook-linux-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.8.tgz#91441885e12d8da096bffa14ef3eaccc5dde0c36" + integrity sha512-1VsEnfxWhs8YLMUnlYdbLBLldJrqJi/G2Isrvx0KBBu/nILxMmNa5GIQo8uqeeufmi/WVc8g3xgJtPxSp3NXnw== -lefthook-linux-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.7.tgz#a3a24f465487f9cbf1df5ca2a2ce59e93f0e7329" - integrity sha512-VzgNM0bJyzakrhjFZbTYrwli0L6bY1bk6SKhyFAYToH8/rI6pjlinSgu1VTAamXhxmA7YaRB8/5OJEjhvb0aKg== +lefthook-linux-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.8.tgz#aa3baa4581251dc508a109ebe470888f3a3e0b32" + integrity sha512-0e4GSPBhJkngO4qAX5bqJLYTftrBfulLiwbsWX6hx4SWFY3kFpCLtAYD8zfvfQaAfwb9Ieut2XnqcE9mNfI9+Q== -lefthook-windows-arm64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.7.tgz#018479d901b00d2f5c4374bc2d137d972ab185de" - integrity sha512-naV4612JbrOCRZSWVS0Y1BzREHDLyCWC9eHqDG8XTGC1NJ/vM3ip2j9hHHF/GPSceazs82Tog2rSpJ9q8JZ0IQ== +lefthook-windows-arm64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.8.tgz#6d3b98570bb93c3742d5fa42fc5ba04417eddb99" + integrity sha512-bVYRF4mBcT2T5/uN5pJpk9jqvik8JLtgRL+BxTKPshuVFO2nJczgdX1lWRnveGyz84DHwYgu+GwYl7PLjGU28A== -lefthook-windows-x64@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.7.tgz#240c55e3aac9425a55b1b9fd7f162bcc0a231e45" - integrity sha512-U0jwO5CTya9yo1G+946ULBhH3Nl6j+WOqYz7rWJQIIFNe0mvethmAv+aLKMNrAWgOZ+gX0A7++cqdUOl9LoVwQ== +lefthook-windows-x64@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.8.tgz#7f484559becb43237d8be8d83ea87f53cbaaebfa" + integrity sha512-cT3ZopXAFyEsfkRf+wRwINBPWUMYi2Wba59BqN8JU/Tfuuv7Of2e51u+VTsHMR+8+JdEt3A8Kl20xw24E8ccAg== -lefthook@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.7.tgz#e6cbb0b2e7bc0110df64ea78eb354993c0990147" - integrity sha512-glQisTn0oMXfWv58MBE54wOPez8T06dqcEGrfz73RlvOi/kvbu59oockEvMYs4RfvowQirF0ncp+JHWJbDMRgQ== +lefthook@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.8.tgz#d0f3a76c626d8945179dcb201c0756ec66be5e69" + integrity sha512-h+5S3FLhErIrVTz+uLaysS0kATlzCW8Wa1DUqpu0rYsimsEk/TrP9cMnTVd0UKq3Ks2ooq5pCUmnipJy5zl1VQ== optionalDependencies: - lefthook-darwin-arm64 "1.6.7" - lefthook-darwin-x64 "1.6.7" - lefthook-freebsd-arm64 "1.6.7" - lefthook-freebsd-x64 "1.6.7" - lefthook-linux-arm64 "1.6.7" - lefthook-linux-x64 "1.6.7" - lefthook-windows-arm64 "1.6.7" - lefthook-windows-x64 "1.6.7" + lefthook-darwin-arm64 "1.6.8" + lefthook-darwin-x64 "1.6.8" + lefthook-freebsd-arm64 "1.6.8" + lefthook-freebsd-x64 "1.6.8" + lefthook-linux-arm64 "1.6.8" + lefthook-linux-x64 "1.6.8" + lefthook-windows-arm64 "1.6.8" + lefthook-windows-x64 "1.6.8" levn@^0.4.1: version "0.4.1" From 7e20b4942060618f623e1923b071ec830346931f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 08:07:22 -0400 Subject: [PATCH 25/45] Bump sass from 1.72.0 to 1.74.1 (#4906) Bumps [sass](https://github.com/sass/dart-sass) from 1.72.0 to 1.74.1. - [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.72.0...1.74.1) --- updated-dependencies: - dependency-name: sass 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 0d5eb09be..48399c889 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "postcss-scss": "^4.0.9", "prettier": "^2.8.8", "rimraf": "^5.0.5", - "sass": "^1.72.0", + "sass": "^1.74.1", "sass-loader": "^14.1.1", "stylelint": "^16.3.1", "stylelint-config-sass-guidelines": "^11.1.0", diff --git a/yarn.lock b/yarn.lock index cb502fbe9..a9b0c92e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7507,10 +7507,10 @@ sass-loader@^14.1.1: dependencies: neo-async "^2.6.2" -sass@^1.72.0: - version "1.72.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" - integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== +sass@^1.74.1: + version "1.74.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.74.1.tgz#686fc227d3707dd25cb2925e1db8e4562be29319" + integrity sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 86fb75bc08bb92145ec5c192db5e40a9ac1f1dfc Mon Sep 17 00:00:00 2001 From: Jose Delvani Date: Mon, 8 Apr 2024 15:33:13 +0000 Subject: [PATCH 26/45] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 970649745..405a77063 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -1209,3 +1209,5 @@ Close Banner: Fechar Banner Age Restricted: This channel is age restricted: Este canal tem restrição de idade This video is age restricted: Este vídeo tem restrição de idade +checkmark: ✓ +Display Label: '{label}: {value}' From 97926d8c82dac0c2d6837bcb63370772c2bef6a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:51:43 +0000 Subject: [PATCH 27/45] Bump css-loader from 6.10.0 to 7.0.0 (#4905) Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.10.0 to 7.0.0. - [Release notes](https://github.com/webpack-contrib/css-loader/releases) - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.10.0...v7.0.0) --- updated-dependencies: - dependency-name: css-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 | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 48399c889..052bd7086 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@intlify/eslint-plugin-vue-i18n": "^2.0.0", "babel-loader": "^9.1.3", "copy-webpack-plugin": "^12.0.2", - "css-loader": "^6.10.0", + "css-loader": "^7.0.0", "css-minimizer-webpack-plugin": "^6.0.0", "electron": "^29.2.0", "electron-builder": "^24.13.3", diff --git a/yarn.lock b/yarn.lock index a9b0c92e1..e18bfbc47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3066,16 +3066,16 @@ css-functions-list@^3.2.1: resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.1.tgz#2eb205d8ce9f9ce74c5c1d7490b66b77c45ce3ea" integrity sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ== -css-loader@^6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== +css-loader@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.0.0.tgz#3456a621ce51f9dfd12b9674bfc7527c5e1821db" + integrity sha512-WrO4FVoamxt5zY9CauZjoJgXRi/LZKIk+Ta7YvpSGr5r/eMYPNp5/T9ODlMe4/1rF5DYlycG1avhV4g3A/tiAw== dependencies: icss-utils "^5.1.0" postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" semver "^7.5.4" @@ -6797,24 +6797,24 @@ postcss-minify-selectors@^6.0.2: dependencies: postcss-selector-parser "^6.0.15" -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" - integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" - integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: postcss-selector-parser "^6.0.4" From ae027f1c90f6fc8db5f4bc25bb15485e4ea9e052 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 9 Apr 2024 03:16:51 +0200 Subject: [PATCH 28/45] Fix window title displaying null while loading a video or channel (#4913) --- src/renderer/App.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/renderer/App.js b/src/renderer/App.js index 380655809..cec35685d 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -78,14 +78,13 @@ export default defineComponent({ return this.$store.getters.getShowCreatePlaylistPrompt }, windowTitle: function () { - const routeName = this.$route.name - if (routeName !== 'channel' && routeName !== 'watch' && routeName !== 'hashtag') { - let title = - this.$route.meta.path === '/home' - ? packageDetails.productName - : `${translateWindowTitle(this.$route.meta.title, this.$i18n)} - ${packageDetails.productName}` + const routePath = this.$route.path + if (!routePath.startsWith('/channel/') && !routePath.startsWith('/watch/') && !routePath.startsWith('/hashtag/')) { + let title = translateWindowTitle(this.$route.meta.title, this.$i18n) if (!title) { title = packageDetails.productName + } else { + title = `${title} - ${packageDetails.productName}` } return title } else { From 4b509f0edd05fcee5060358dbb2cba47698e6da3 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 9 Apr 2024 03:26:03 +0200 Subject: [PATCH 29/45] Fix incorrect published dates in the channel search with the Invidious API (#4912) --- src/renderer/views/Channel/Channel.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index b41e43fb6..1c6953c2b 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -1916,6 +1916,7 @@ export default defineComponent({ } invidiousAPICall(payload).then((response) => { + setPublishedTimestampsInvidious(response.filter(item => item.type === 'video')) if (this.hideChannelPlaylists) { this.searchResults = this.searchResults.concat(response.filter(item => item.type !== 'playlist')) } else { From 2a0af884c192155dec0f4f6c1ca1bc9c5c8e6076 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, 9 Apr 2024 01:22:15 +0000 Subject: [PATCH 30/45] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (818 of 818 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 21e1fd50f..2e5be9357 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -1040,3 +1040,5 @@ Close Banner: 关闭横幅 Age Restricted: This video is age restricted: 此视频有年龄限制 This channel is age restricted: 此频道有年龄限制 +checkmark: ✓ +Display Label: '{label}: {value}' From c7c40d7863488d732df46635015ee87edfb87307 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Tue, 9 Apr 2024 04:09:58 +0000 Subject: [PATCH 31/45] Translated using Weblate (Arabic) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 064a068bf..182f781fd 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -1170,3 +1170,5 @@ Age Restricted: This channel is age restricted: هذه القناة مقيدة بالعمر This video is age restricted: هذا الفيديو مقيد بالفئة العمرية Close Banner: إغلاق الشعار +checkmark: ✓ +Display Label: '{label}: {value}' From 490c51fe59b1430fb7338b643d000727d2be953f Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:22:39 +0200 Subject: [PATCH 32/45] Workaround YouTube returning empty pages on the channel live tab (#4914) --- src/renderer/helpers/api/local.js | 13 +++++++++++-- src/renderer/views/Channel/Channel.js | 11 ++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index dcc70ec77..7fbc5b229 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -331,7 +331,7 @@ export async function getLocalChannelLiveStreams(id) { // it has some empty fields in the protobuf but it doesn't work if you remove them) })) - const liveStreamsTab = new YT.Channel(null, response) + let liveStreamsTab = new YT.Channel(innertube.actions, response) const { id: channelId = id, name, thumbnailUrl } = parseLocalChannelHeader(liveStreamsTab) let videos @@ -339,7 +339,16 @@ export async function getLocalChannelLiveStreams(id) { // if the channel doesn't have a live tab, YouTube returns the home tab instead // so we need to check that we got the right tab if (liveStreamsTab.current_tab?.endpoint.metadata.url?.endsWith('/streams')) { - videos = parseLocalChannelVideos(liveStreamsTab.videos, channelId, name) + // work around YouTube bug where it will return a bunch of responses with only continuations in them + // e.g. https://www.youtube.com/@TWLIVES/streams + + let tempVideos = liveStreamsTab.videos + while (tempVideos.length === 0 && liveStreamsTab.has_continuation) { + liveStreamsTab = await liveStreamsTab.getContinuation() + tempVideos = liveStreamsTab.videos + } + + videos = parseLocalChannelVideos(tempVideos, channelId, name) } else { videos = [] } diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 1c6953c2b..3ed47caa0 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -902,7 +902,16 @@ export default defineComponent({ return } - this.latestLive = parseLocalChannelVideos(liveTab.videos, this.id, this.channelName) + // work around YouTube bug where it will return a bunch of responses with only continuations in them + // e.g. https://www.youtube.com/@TWLIVES/streams + + let videos = liveTab.videos + while (videos.length === 0 && liveTab.has_continuation) { + liveTab = await liveTab.getContinuation() + videos = liveTab.videos + } + + this.latestLive = parseLocalChannelVideos(videos, this.id, this.channelName) this.liveContinuationData = liveTab.has_continuation ? liveTab : null this.isElementListLoading = false From ec896d486fb59f13e8c780e184abec6be9ae31f2 Mon Sep 17 00:00:00 2001 From: Ettore Atalan Date: Tue, 9 Apr 2024 17:36:26 +0000 Subject: [PATCH 33/45] Translated using Weblate (German) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index fd7209d05..217c6772b 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -1243,3 +1243,5 @@ Close Banner: Banner schließen Age Restricted: This channel is age restricted: Dieser Kanal ist altersbeschränkt This video is age restricted: Dieses Video ist altersbeschränkt +Display Label: '{label}: {value}' +checkmark: ✓ From 101ed85fce8a5019a0fc30451158f2fec93b6501 Mon Sep 17 00:00:00 2001 From: Ophiushi <41908476+ishi-sama@users.noreply.github.com> Date: Tue, 9 Apr 2024 17:18:26 +0000 Subject: [PATCH 34/45] Translated using Weblate (French) Currently translated at 100.0% (818 of 818 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 8f0faf408..c7941965d 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -1264,3 +1264,4 @@ Age Restricted: Close Banner: Fermer la bannière # French is the only language that should change this (they have a space before the colon) Display Label: '{label} : {value}' +checkmark: ✓ From ff9c9e8a7be5f646a51fb36df8ff0b62f3ae1d30 Mon Sep 17 00:00:00 2001 From: Philip Goto Date: Tue, 9 Apr 2024 20:11:43 +0000 Subject: [PATCH 35/45] Translated using Weblate (Dutch) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 287aa130a..fa04a58a3 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -1204,3 +1204,5 @@ Age Restricted: This video is age restricted: Deze video heeft een leeftijds­beperking Trimmed input must be at least N characters long: Bij­gesneden invoer moet minimaal 1 teken lang zijn | Bij­gesneden invoer moet minimaal {length} tekens lang zijn +checkmark: ✓ +Display Label: '{label}: {value}' From bf4c82654c893d6f4f824ee7c3501d43eedc9636 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 10 Apr 2024 13:10:30 -0400 Subject: [PATCH 36/45] Update references of `FreeTubeCordova` to `FreeTubeAndroid` (#4922) * Update reference of `FreeTubeCordova` to `FreeTubeAndroid` * Update reference of `FreeTubeCordova` in bug report template && issue labeler --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/issue-labeler.yml | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 3ee6b6eaf..aef914ee3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -92,7 +92,7 @@ body: - Portable - .rpm - .zip - - .apk (Android, FreeTubeCordova Unofficial) + - .apk (FreeTubeAndroid Unofficial) - AUR (Unofficial) - Chocolatey (Unofficial) - Homebrew (Unofficial) diff --git a/.github/issue-labeler.yml b/.github/issue-labeler.yml index 1d08f2788..38178571e 100644 --- a/.github/issue-labeler.yml +++ b/.github/issue-labeler.yml @@ -2,7 +2,7 @@ - '(visual bug)' 'B: Unofficial Download': - - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(Android, FreeTubeCordova Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' + - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(FreeTubeAndroid Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' 'B: keyboard control': - '(keyboard control not working)' diff --git a/README.md b/README.md index 5a43ba89c..196960948 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ The first build with a green check mark is the latest build. * Chocolatey: [Download](https://chocolatey.org/packages/freetube/) -* FreeTubeCordova (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeCordova/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeCordova) +* FreeTubeAndroid (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeAndroid/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeAndroid) * Homebrew Formulae (Mac only): [Download](https://formulae.brew.sh/cask/freetube) From f9204c08dfcc8f483cd491f47367f157c6970eea Mon Sep 17 00:00:00 2001 From: NicolaeFericitu Date: Wed, 10 Apr 2024 17:16:16 +0000 Subject: [PATCH 37/45] Translated using Weblate (Romanian) Currently translated at 90.9% (744 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/ --- static/locales/ro.yaml | 50 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 2779c7de8..555e78d9b 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -50,7 +50,7 @@ A new blog is now available, {blogTitle}. Click to view more: 'Un nou blog este disponibil, {blogTitle}. Click to view more' # Search Bar -Search / Go to URL: 'Căutare / Întrodu la URL' +Search / Go to URL: 'Căutare / Accesați URL-ul' # In Filter Button Search Filters: Search Filters: 'Filtre de căutare' @@ -129,8 +129,48 @@ User Playlists: Aceasta enumeră doar videoclipurile pe care le-ați salvat sau le-ați favorizat. Când lucrările vor fi finalizate, toate videoclipurile care se află în prezent aici vor fi migrate într-o listă de redare "Favorite". - Search bar placeholder: Caută în Listă De Redare + Search bar placeholder: Căutați liste de redare Empty Search Message: Nu sunt videoclipuri pentru căutarea ta + Move Video Down: Mutați video în jos + Enable Quick Bookmark With This Playlist: Activați marcajul rapid cu această listă + de redare + Sort By: + Sort By: Sortează după + NameDescending: Z-A + LatestCreatedFirst: Creat recent + NameAscending: A-Z + LatestUpdatedFirst: Actualizat recent + EarliestCreatedFirst: Cel mai devreme creat + This playlist currently has no videos.: Această listă de redare nu are în prezent + niciun videoclip. + You have no playlists. Click on the create new playlist button to create a new one.: Nu + aveți liste de redare. Faceți clic pe butonul de creare a unei noi liste de redare + pentru a crea una nouă. + Playlists with Matching Videos: Liste de redare cu videoclipuri corespunzătoare + AddVideoPrompt: + Select a playlist to add your N videos to: Selectați o listă de redare la care + să adăugați videoclipul dvs. | Selectați o listă de redare la care să adăugați + videoclipurile {videoCount} + Cancel: Anulare + Edit Playlist Info: Editați informațiile despre lista de redare + Copy Playlist: Copiați lista de redare + Remove Watched Videos: Eliminați videoclipurile vizionate + Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Sunteți + sigur că doriți să eliminați toate videoclipurile vizionate din această listă + de redare? Acest lucru nu poate fi anulat. + Create New Playlist: Creați o nouă listă de redare + Add to Playlist: Adăugați la lista de redare + Add to Favorites: Adaugă la {playlistName} + Remove from Favorites: Eliminați din {playlistName} + Move Video Up: Mutați video în sus + Remove from Playlist: Eliminați din lista de redare + Playlist Name: Numele listei de redare + Playlist Description: Descrierea listei de redare + Save Changes: Salvați modificările + Disable Quick Bookmark: Dezactivați marcajul rapid + Delete Playlist: Ștergeți lista de redare + Are you sure you want to delete this playlist? This cannot be undone: Sunteți sigur + că doriți să ștergeți această listă de redare? Acest lucru nu poate fi anulat. History: # On History Page History: 'Istoric' @@ -405,8 +445,8 @@ Settings: Hide Live Streams: Ascunde stream-urile live Hide Sharing Actions: Ascunde butoanele de sharing Hide Chapters: Ascundeți capitolele - Display Titles Without Excessive Capitalisation: Afișați titluri fără majuscule - excesive + Display Titles Without Excessive Capitalisation: Afișați titlurile fără majuscule + și semne de punctuație excesive Sections: Subscriptions Page: Pagina de abonamente Side Bar: Bară laterală @@ -422,7 +462,7 @@ Settings: Hide Channel Community: Ascunde comunitatea canalului Hide Channel Shorts: Ascundeți canalul Shorts Hide Featured Channels: Ascundeți canalele recomandate - Hide Channels Placeholder: Numele canalului sau ID-ul + Hide Channels Placeholder: ID-ul canalului Hide Channel Playlists: Ascunde playlisturile canalului Hide Upcoming Premieres: Ascundeți premierele viitoare Blur Thumbnails: Estomparea miniaturilor From 3d226b4ec6ec4a53531dd2cedb337c65382c435d Mon Sep 17 00:00:00 2001 From: NEXI Date: Wed, 10 Apr 2024 21:27:04 +0000 Subject: [PATCH 38/45] Translated using Weblate (Serbian) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/ --- static/locales/sr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index cc5dcb1b8..291aac79c 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -1116,3 +1116,5 @@ Close Banner: Затвори банер Age Restricted: This channel is age restricted: Овај канал је ограничен према узрасту This video is age restricted: Овај видео снимак је ограничен према узрасту +Display Label: '{label}: {value}' +checkmark: ✓ From 1dde53327018e163ea51050ca448f26195f8b125 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 11 Apr 2024 04:24:25 -0400 Subject: [PATCH 39/45] Use more generic icon for `Quick bookmark` feature (#4885) * Use `bookmark` icon for `Quick bookmark` feature * Make bookmark icon primary colour * Remove colour from fa-bookmark * Make thumbnail icons fully visible instead of only 85% visible * Make thumbnail icons very slightly larger * Revert size change of bookmark icon and playlist add icon * Revert `$thumbnail-overlay-opacity` and change icon opacity directly --- src/renderer/components/ft-list-video/ft-list-video.vue | 2 +- src/renderer/components/watch-video-info/watch-video-info.vue | 2 +- src/renderer/main.js | 2 -- src/renderer/scss-partials/_ft-list-item.scss | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/renderer/components/ft-list-video/ft-list-video.vue b/src/renderer/components/ft-list-video/ft-list-video.vue index 391ff3c1f..868f90e0c 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.vue +++ b/src/renderer/components/ft-list-video/ft-list-video.vue @@ -58,7 +58,7 @@ es -> en-US + es_AR: ['es'], + // es-MX -> es -> en-US + 'es-MX': ['es'], + // pt-BR -> pt -> en-US + 'pt-BR': ['pt'], + // pt-PT -> pt -> en-US + 'pt-PT': ['pt'], + // any -> en-US + default: ['en-US'], + } }) export async function loadLocale(locale) { @@ -18,6 +31,7 @@ export async function loadLocale(locale) { } if (!activeLocales.includes(locale)) { console.error(`Unable to load unknown locale: "${locale}"`) + return } // locales are only compressed in our production Electron builds @@ -45,6 +59,4 @@ export async function loadLocale(locale) { } } -loadLocale('en-US') - export default i18n diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index fcd191079..1f2fc9ee7 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -352,7 +352,34 @@ const stateWithSideEffects = { } } - await loadLocale(targetLocale) + const loadPromises = [] + + if (targetLocale !== defaultLocale) { + // "en-US" is used as a fallback for missing strings in other locales + loadPromises.push( + loadLocale(defaultLocale) + ) + } + + // "es" is used as a fallback for "es_AR" and "es-MX" + if (targetLocale === 'es_AR' || targetLocale === 'es-MX') { + loadPromises.push( + loadLocale('es') + ) + } + + // "pt" is used as a fallback for "pt-PT" and "pt-BR" + if (targetLocale === 'pt-PT' || targetLocale === 'pt-BR') { + loadPromises.push( + loadLocale('pt') + ) + } + + loadPromises.push( + loadLocale(targetLocale) + ) + + await Promise.allSettled(loadPromises) i18n.locale = targetLocale await dispatch('getRegionData', { From 2d51419797a8bd990f8165524bc5083e60e39ab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:12:57 +0000 Subject: [PATCH 41/45] Bump tar from 6.1.15 to 6.2.1 (#4926) Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.15 to 6.2.1. - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v6.1.15...v6.2.1) --- updated-dependencies: - dependency-name: tar 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 e18bfbc47..37d3da3c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8204,9 +8204,9 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^6.1.12: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" From d6e5439b671cf25f5a0ed2bc39b974cb406c0544 Mon Sep 17 00:00:00 2001 From: Jason <84899178+jasonhenriquez@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:46:33 +0000 Subject: [PATCH 42/45] Add back author search in video playlist searching (#4919) * Add back author search in video playlist searching Reuses previous paradigm (the paradigm currently in place in History.js). This was the pre-existing behavior before the Playlist PR. See https://github.com/FreeTubeApp/FreeTube/blob/5c8d49bf51dde8ffd8c8d291dce3e5ff27b0d9fb/src/renderer/views/UserPlaylists/UserPlaylists.js#L98-L103. * Update title/author search handling to not fail if only one of the base values is invalid * Add author-searching to 'Find playlist with video' results --- .../ft-playlist-add-video-prompt.js | 2 +- src/renderer/views/History/History.js | 10 ++++++---- src/renderer/views/Playlist/Playlist.js | 8 +++++++- src/renderer/views/UserPlaylists/UserPlaylists.js | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js index 4f5a944e4..ed9c0fbf1 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js @@ -119,7 +119,7 @@ export default defineComponent({ if (typeof (playlist.playlistName) !== 'string') { return false } if (this.doSearchPlaylistsWithMatchingVideos) { - if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.processedQuery))) { + if (playlist.videos.some((v) => v.author.toLowerCase().includes(this.processedQuery) || v.title.toLowerCase().includes(this.processedQuery))) { return true } } diff --git a/src/renderer/views/History/History.js b/src/renderer/views/History/History.js index ffa871ea2..0a494d7c5 100644 --- a/src/renderer/views/History/History.js +++ b/src/renderer/views/History/History.js @@ -93,11 +93,13 @@ export default defineComponent({ } else { const lowerCaseQuery = this.query.toLowerCase() const filteredQuery = this.historyCacheSorted.filter((video) => { - if (typeof (video.title) !== 'string' || typeof (video.author) !== 'string') { - return false - } else { - return video.title.toLowerCase().includes(lowerCaseQuery) || video.author.toLowerCase().includes(lowerCaseQuery) + if (typeof (video.title) === 'string' && video.title.toLowerCase().includes(lowerCaseQuery)) { + return true + } else if (typeof (video.author) === 'string' && video.author.toLowerCase().includes(lowerCaseQuery)) { + return true } + + return false }).sort((a, b) => { return b.timeWatched - a.timeWatched }) diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 936f96abe..73183f381 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -142,7 +142,13 @@ export default defineComponent({ if (this.processedVideoSearchQuery === '') { return this.playlistItems } return this.playlistItems.filter((v) => { - return v.title.toLowerCase().includes(this.processedVideoSearchQuery) + if (typeof (v.title) === 'string' && v.title.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } else if (typeof (v.author) === 'string' && v.author.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } + + return false }) }, visiblePlaylistItems: function () { diff --git a/src/renderer/views/UserPlaylists/UserPlaylists.js b/src/renderer/views/UserPlaylists/UserPlaylists.js index e4d7f3f28..1be2a9bdc 100644 --- a/src/renderer/views/UserPlaylists/UserPlaylists.js +++ b/src/renderer/views/UserPlaylists/UserPlaylists.js @@ -223,7 +223,7 @@ export default defineComponent({ if (typeof (playlist.playlistName) !== 'string') { return false } if (this.doSearchPlaylistsWithMatchingVideos) { - if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.lowerCaseQuery))) { + if (playlist.videos.some((v) => v.author.toLowerCase().includes(this.lowerCaseQuery) || v.title.toLowerCase().includes(this.lowerCaseQuery))) { return true } } From f5f87d3c32d4cfbcf36e064a09d11f5133e72790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 11 Apr 2024 13:16:55 +0000 Subject: [PATCH 43/45] Translated using Weblate (Estonian) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 166aa79e3..f0fe96b12 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -1123,3 +1123,5 @@ Age Restricted: This channel is age restricted: Kanali vaatamisel on vanusepiirang This video is age restricted: Video vaatamisel on vanusepiirang Close Banner: Sulge rekaampilt +checkmark: ✓ +Display Label: '{label}: {value}' From 3756dfc6650557bb1e1da04ab3f35b5d76268a62 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:53:12 -0400 Subject: [PATCH 44/45] Add `pack` to linter workflow so it's easier to prevent errors when merging some PRs (#4927) --- .github/workflows/linter.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index a213b4b1c..a10f2f3e2 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -25,3 +25,5 @@ jobs: cache: "yarn" - run: yarn run ci - run: yarn run lint + # let's verify that webpack is able to package the project + - run: yarn run pack From 559671fd24e5e1a4420e3bbb97c8ab2da6f43f1b Mon Sep 17 00:00:00 2001 From: WaldiS Date: Thu, 11 Apr 2024 18:35:54 +0000 Subject: [PATCH 45/45] Translated using Weblate (Polish) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index c627b6ae7..355170d1d 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -1220,3 +1220,5 @@ Age Restricted: This video is age restricted: Ten film ma ograniczenie wiekowe This channel is age restricted: Ten kanał ma ograniczenie wiekowe Close Banner: Zamknij Baner +checkmark: ✓ +Display Label: '{label}: {value}'