From 346679dc8716dae87373673b9e28c1971f53a319 Mon Sep 17 00:00:00 2001 From: Dragibus Noir Date: Mon, 4 Nov 2024 02:20:07 +0000 Subject: [PATCH 01/70] Translated using Weblate (French) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 8445a32c691bb..4f539c5573e25 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -257,6 +257,9 @@ User Playlists: opération est irréversible. | Êtes-vous sûr(e) de vouloir supprimer {playlistItemCount} vidéos regardées de cette liste de lecture ? Cette opération est irréversible. Remove Duplicate Videos: Supprimer les vidéos en double + The playlist has been successfully exported: La liste de lecture a été exportée + avec succès + Export Playlist: Exporter cette liste de lecture History: # On History Page History: 'Historique' @@ -911,6 +914,12 @@ Video: IP block: YouTube a bloqué votre adresse IP pour le visionnage de vidéos. Veuillez essayer de changer de VPN ou de proxy. Unlisted: Non répertorié + AgeRestricted: Les vidéos soumises à des restrictions d'âge ne peuvent pas être + regardées avec FreeTube car elles nécessitent une connexion Google et l'utilisation + d'un compte YouTube dont l'âge a été vérifié. + MembersOnly: Les vidéos réservées aux membres ne peuvent pas être visionnées avec + FreeTube, car elles nécessitent une connexion Google et une adhésion payante à + la chaîne du vidéaste. Videos: #& Sort By Sort By: From 7278c36299deb7712cde376c09d2da26146b881d Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Mon, 4 Nov 2024 03:02:11 +0000 Subject: [PATCH 02/70] Translated using Weblate (Arabic) Currently translated at 100.0% (880 of 880 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 cb4d91b1d0236..905d142d75a63 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -239,6 +239,8 @@ User Playlists: أنت متأكد أنك تريد إزالة مقطع فيديو مكرر واحد من قائمة التشغيل هذه؟ هذا لا يمكن التراجع عنها. | هل أنت متأكد أنك تريد إزالة {playlistItemCount} من مقاطع الفيديو المكررة من قائمة التشغيل هذه؟ هذا لا يمكن التراجع عنها. + Export Playlist: تصدير قائمة التشغيل هذه + The playlist has been successfully exported: تم تصدير قائمة التشغيل بنجاح History: # On History Page History: 'السجلّ' From c7280d518889d2402194ad4389dde54903e7717a Mon Sep 17 00:00:00 2001 From: Markus Gaugg Date: Mon, 4 Nov 2024 08:03:00 +0000 Subject: [PATCH 03/70] Translated using Weblate (German) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index f3fb1487ed682..b12fa32c194cb 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -256,6 +256,9 @@ User Playlists: möchten? Dies kann nicht rückgängig gemacht werden. | Sind Sie sicher, dass Sie {playlistItemCount} angesehene Videos aus dieser Wiedergabeliste entfernen möchten? Dies kann nicht rückgängig gemacht werden. + Export Playlist: Diese Wiedergabeliste exportieren + The playlist has been successfully exported: Die Wiedergabeliste wurde erfolgreich + exportiert History: # On History Page History: Verlauf From 2236071fe2cc648dfe9812af6fef6d87be92998d Mon Sep 17 00:00:00 2001 From: zone Date: Mon, 4 Nov 2024 07:12:56 +0000 Subject: [PATCH 04/70] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (880 of 880 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 e4b380a98bb65..0e1c5f850a86e 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -214,6 +214,8 @@ User Playlists: 1 个已观看视频吗?此操作无法撤销。 | 你确定要从此播放列表删除 {playlistItemCount} 个已观看视频吗?此操作无法撤销。 Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: 你确定要从此播放列表中删除 1 个重复视频吗?无法撤销删除。| 你确定要从此播放列表中删除 {playlistItemCount} 个重复视频吗?无法撤销删除。 + Export Playlist: 导出播放清单 + The playlist has been successfully exported: 成功导出播放清单 History: # On History Page History: '历史记录' From 19c5ad46c5168cc5f62730277fb6f2a7074ebff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 4 Nov 2024 07:12:30 +0000 Subject: [PATCH 05/70] Translated using Weblate (Estonian) Currently translated at 100.0% (880 of 880 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 c4aadd868620c..ca3d3c8e00111 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -248,6 +248,8 @@ User Playlists: sa oled kindel, et soovid sellest esitusloendist eemaldada 1 vaadatud video? Seda tegevust ei saa tagasi pöörata. | Kas sa oled kindel, et soovid sellest esitusloendist eemaldada {playlistItemCount} vaadatud videot? Seda tegevust ei saa tagasi pöörata. + Export Playlist: Ekspordi see esitusloend + The playlist has been successfully exported: Esitusloendi eksportimine õnnestus History: # On History Page History: 'Ajalugu' From edb597a8f69625e586356e682dbb9785c0d94f7c Mon Sep 17 00:00:00 2001 From: summoner001 Date: Mon, 4 Nov 2024 07:26:58 +0000 Subject: [PATCH 06/70] Translated using Weblate (Hungarian) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index 9850a316516f0..6bf240ba8a585 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -257,6 +257,9 @@ User Playlists: eltávolít 1 megtekintett videót ebből a lejátszási listából? Ez a művelet nem vonható vissza. | Biztosan eltávolít {playlistItemCount} megtekintett videót ebből a lejátszási listából? Ez a művelet nem vonható vissza. + Export Playlist: Ezen lejátszási lista exportálása + The playlist has been successfully exported: A lejátszási lista sikeresen exportálva + lett History: # On History Page History: 'Előzmények' From 1d6d091c65bc89038178cd797e322aa3f876c192 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Mon, 4 Nov 2024 10:13:02 +0000 Subject: [PATCH 07/70] Translated using Weblate (Czech) Currently translated at 100.0% (880 of 880 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 42f669b048eea..8cd515a0a7e09 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -250,6 +250,8 @@ User Playlists: | Opravdu chcete odstranit {playlistItemCount} zhlédnutých videí z tohoto playlistu? Tato akce je nevratná. Remove Duplicate Videos: Odstranit duplicitní videa + Export Playlist: Exportovat tento playlist + The playlist has been successfully exported: Playlist byl úspěšně exportován History: # On History Page History: 'Historie' From 7bda6205790e45d240130b83c9729c3a91e7a998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sveinn=20=C3=AD=20Felli?= Date: Mon, 4 Nov 2024 13:20:24 +0000 Subject: [PATCH 08/70] Translated using Weblate (Icelandic) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/is/ --- static/locales/is.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/is.yaml b/static/locales/is.yaml index c5dadb3e843f4..03f4765fa7d25 100644 --- a/static/locales/is.yaml +++ b/static/locales/is.yaml @@ -253,6 +253,8 @@ User Playlists: viss um að þú viljir fjarlægja 1 áhorft myndskeið af þessum spilunarlista? Þetta er ekki hægt að afturkalla. | Ertu viss um að þú viljir fjarlægja {playlistItemCount} áhorfð myndskeið af þessum spilunarlista? Þetta er ekki hægt að afturkalla. + Export Playlist: Flytja út þennan spilunarlista + The playlist has been successfully exported: Það tókst að flytja út þennan spilunarlista History: # On History Page History: 'Áhorf' From c178c9c339535428984206c097dfab0817955b07 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:12:47 +0100 Subject: [PATCH 09/70] Fix search box crash (#6085) --- src/renderer/components/ft-input/ft-input.js | 4 ---- src/renderer/components/ft-input/ft-input.vue | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/renderer/components/ft-input/ft-input.js b/src/renderer/components/ft-input/ft-input.js index 4df5666757fc7..7a3aa07150fe7 100644 --- a/src/renderer/components/ft-input/ft-input.js +++ b/src/renderer/components/ft-input/ft-input.js @@ -100,10 +100,6 @@ export default defineComponent({ return this.isSearch && this.barColor }, - idDataList: function () { - return `${this.id}_datalist` - }, - inputDataPresent: function () { return this.inputData.length > 0 }, diff --git a/src/renderer/components/ft-input/ft-input.vue b/src/renderer/components/ft-input/ft-input.vue index cdc0dee0fb833..ea5f5c80d56a0 100644 --- a/src/renderer/components/ft-input/ft-input.vue +++ b/src/renderer/components/ft-input/ft-input.vue @@ -43,7 +43,6 @@ :id="id" ref="input" :value="inputDataDisplayed" - :list="idDataList" class="ft-input" :maxlength="maxlength" :type="inputType" @@ -70,7 +69,6 @@
    Date: Tue, 5 Nov 2024 00:35:37 +0000 Subject: [PATCH 10/70] Translated using Weblate (Italian) Currently translated at 100.0% (880 of 880 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 e93930550ee15..51403d5d2e500 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -249,6 +249,8 @@ User Playlists: sicuro di voler rimuovere 1 video guardato da questa playlist? Questa operazione non può essere annullata. | Vuoi rimuovere {playlistItemCount} video guardati da questa playlist? Questa operazione non può essere annullata. + Export Playlist: Esporta questa playlist + The playlist has been successfully exported: La playlist è stata esportata correttamente History: # On History Page History: 'Cronologia' From 57a0d1338f439168af1d7fb7f5ddd4af3b960f5b Mon Sep 17 00:00:00 2001 From: Riki Shinozaki Date: Wed, 6 Nov 2024 01:24:26 +0000 Subject: [PATCH 11/70] Translated using Weblate (Japanese) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index 8368f8c572440..0342a585842fe 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -215,6 +215,8 @@ User Playlists: Remove Duplicate Videos: 重複した動画を削除 Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: この再生リストから視聴済みの動画を1本削除してもよろしいですか?この操作は元に戻せません。 | この再生リストから視聴済みの {playlistItemCount} 本の動画を削除してもよろしいですか?この操作は元に戻せません。 + The playlist has been successfully exported: 再生リストのエクスポートに成功しました + Export Playlist: この再生リストをエクスポート History: # On History Page History: '履歴' @@ -746,7 +748,7 @@ Video: looping playlists: 再生リストのループ shuffling playlists: シャッフル再生リスト reversing playlists: 再生リストを反転させる - opening specific video in a playlist (falling back to opening the video): 再生リストで特定のビデオを開く + opening specific video in a playlist (falling back to opening the video): 再生リストで特定の動画を開く (ビデオを開く前にフォールバック) opening playlists: 再生リストを開く setting a playback rate: 再生レートの設定 @@ -795,9 +797,9 @@ Video: Show Stats: 統計を表示 IP block: YouTube はあなたのIPアドレスからの動画視聴をブロックしました。別の VPN またはプロキシに切り替えてみてください。 Unlisted: 非公開 - MembersOnly: メンバー限定ビデオはGoogleにログインし、投稿チャンネルに課金する必要があるのでFreeTubeから直接見ることはできません。 - AgeRestricted: - 年齢制限がかかっているビデオはGoogleにログインしておりかつ年齢確認を済ましているYouTubeアカウントが必要なため、FreeTubeから直接見ることはできません。 + MembersOnly: メンバー限定動画は Google にログインし、投稿チャンネルに課金する必要があるので FreeTube から直接見ることはできません。 + AgeRestricted: 年齢制限がかかっている 動画 は Google にログインしておりかつ年齢確認を済ましている YouTube アカウントが必要なため、FreeTube + から直接見ることはできません。 Videos: #& Sort By Sort By: From 499c8ccce08ece0511474a945f157556ebe828b7 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 6 Nov 2024 03:55:58 +0000 Subject: [PATCH 12/70] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (880 of 880 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 1d30cf086788d..678df47992f19 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -212,6 +212,8 @@ User Playlists: 1 個重複的影片嗎?這無法還原。 | 您確定要從此播放清單中刪除 {playlistItemCount} 個重複影片嗎?這無法還原。 Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: 您確定要從此播放清單中刪除 1 個觀看過的影片嗎?這無法還原。 | 您確定要從此播放清單中刪除已觀看的 {playlistItemCount} 個影片嗎?這無法還原。 + Export Playlist: 匯出此播放清單 + The playlist has been successfully exported: 播放清單已成功匯出 History: # On History Page History: '觀看紀錄' From 04461cdc9d3b9d6a2bdf698d8e1eedeffa26a90f Mon Sep 17 00:00:00 2001 From: Dinesh Kumar P Date: Wed, 6 Nov 2024 09:11:09 +0100 Subject: [PATCH 13/70] Added translation using Weblate (Tamil) --- static/locales/ta.yaml | 1046 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1046 insertions(+) create mode 100644 static/locales/ta.yaml diff --git a/static/locales/ta.yaml b/static/locales/ta.yaml new file mode 100644 index 0000000000000..4efb66327be9d --- /dev/null +++ b/static/locales/ta.yaml @@ -0,0 +1,1046 @@ +# Put the name of your locale in the same language +Locale Name: '' +# 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: '' +New Window: '' +Preferences: '' +Quit: '' +Edit: '' +Undo: '' +Redo: '' +Cut: '' +Copy: '' +Paste: '' +Delete: '' +Select all: '' +Reload: '' +Force Reload: '' +Toggle Developer Tools: '' +Actual size: '' +Zoom in: '' +Zoom out: '' +Toggle fullscreen: '' +Window: '' +Minimize: '' +Close: '' +Back: '' +Forward: '' +Open New Window: '' +Go to page: '' +Close Banner: '' + +Version {versionNumber} is now available! Click for more details: '' +Download From Site: '' +A new blog is now available, {blogTitle}. Click to view more: '' +Are you sure you want to open this link?: '' + +# Global +# Anything shared among components / views should be put here +Global: + Videos: '' + Shorts: '' + Live: '' + Community: '' + Counts: + Video Count: '' + Channel Count: '' + Subscriber Count: '' + View Count: '' + Like Count: '' + Comment Count: '' + Watching Count: '' + Input Tags: + Length Requirement: '' + +# Search Bar +Search / Go to URL: '' +Search Bar: + Clear Input: '' +Search character limit: '' +Search Listing: + Label: + 4K: '' + 8K: '' + VR180: '' + 360 Video: '' + Subtitles: '' + New: '' + 3D: '' + # Aria labels + Closed Captions: '' + # In Filter Button +Search Filters: + Search Filters: '' + Sort By: + Sort By: '' + Most Relevant: '' + Rating: '' + Upload Date: '' + View Count: '' + Time: + Time: '' + Any Time: '' + Last Hour: '' + Today: '' + This Week: '' + This Month: '' + This Year: '' + Type: + Type: '' + All Types: '' + Videos: '' + Channels: '' + Movies: '' + #& Playlists + Duration: + Duration: '' + All Durations: '' + Short (< 4 minutes): '' + Medium (4 - 20 minutes): '' + Long (> 20 minutes): '' + Features: + Features: '' + HD: '' + Subtitles: '' + Creative Commons: '' + 3D: '' + Live: '' + 4K: '' + 360 Video: '' + Location: '' + HDR: '' + VR180: '' + # On Search Page + Search Results: '' + Fetching results. Please wait: '' + Fetch more results: '' + There are no more results for this search: '' +# Sidebar +Subscriptions: + # On Subscriptions Page + Subscriptions: '' + # channels that were likely deleted + Error Channels: '' + Latest Subscriptions: '' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' + Disabled Automatic Fetching: '' + Empty Channels: '' + 'Getting Subscriptions. Please wait.': '' + Empty Posts: '' + Load More Videos: '' + Load More Posts: '' + Subscriptions Tabs: '' + All Subscription Tabs Hidden: '' +More: '' +Channels: + Channels: '' + Title: '' + Search bar placeholder: '' + Count: '' + Empty: '' + Unsubscribe Prompt: '' +Trending: + Trending: '' + Default: '' + Music: '' + Gaming: '' + Movies: '' + Trending Tabs: '' +Most Popular: '' +Feed: + Feed Last Updated: '' + Refresh Feed: '' +Playlists: '' +User Playlists: + Your Playlists: '' + You have no playlists. Click on the create new playlist button to create a new one.: '' + Empty Search Message: '' + Search bar placeholder: '' + Playlists with Matching Videos: '' + + This playlist currently has no videos.: '' + + Create New Playlist: '' + + Add to Playlist: '' + Add to Favorites: '' + Remove from Favorites: '' + + Move Video Up: '' + Move Video Down: '' + Remove from Playlist: '' + + Playlist Name: '' + Playlist Description: '' + + Save Changes: '' + Cancel: '' + Edit Playlist Info: '' + Copy Playlist: '' + Remove Duplicate Videos: '' + Remove Watched Videos: '' + Enable Quick Bookmark With This Playlist: '' + Quick Bookmark Enabled: '' + Export Playlist: '' + The playlist has been successfully exported: '' + Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: '' + Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: '' + Delete Playlist: '' + Cannot delete the quick bookmark target playlist.: '' + Are you sure you want to delete this playlist? This cannot be undone: '' + + Sort By: + Sort By: '' + + NameAscending: '' + NameDescending: '' + + LatestCreatedFirst: '' + EarliestCreatedFirst: '' + + LatestUpdatedFirst: '' + EarliestUpdatedFirst: '' + + LatestPlayedFirst: '' + EarliestPlayedFirst: '' + SinglePlaylistView: + Search for Videos: '' + + Toast: + This video cannot be moved up.: '' + This video cannot be moved down.: '' + Video has been removed: '' + There was a problem with removing this video: '' + + This playlist is already being used for quick bookmark.: '' + This playlist is now used for quick bookmark: '' + This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: '' + Reverted to use {oldPlaylistName} for quick bookmark: '' + + Some videos in the playlist are not loaded yet. Click here to copy anyway.: '' + Playlist name cannot be empty. Please input a name.: '' + Playlist has been updated.: '' + There was an issue with updating this playlist.: '' + "{videoCount} video(s) have been removed": "" + There were no videos to remove.: '' + This playlist is protected and cannot be removed.: '' + Playlist {playlistName} has been deleted.: '' + Playlist {playlistName} is the new quick bookmark playlist.: '' + + This playlist does not exist: '' + + This playlist has a video with a duration error: '' + AddVideoPrompt: + Select a playlist to add your N videos to: '' + N playlists selected: '' + Search in Playlists: '' + Allow Adding Duplicate Video(s): '' + Save: '' + + Added {count} Times: '' + "{videoCount}/{totalVideoCount} Videos Will Be Added": '' + "{videoCount}/{totalVideoCount} Videos Already Added": '' + + Toast: + You haven't selected any playlist yet.: '' + "{videoCount} video(s) added to 1 playlist": "" + "{videoCount} video(s) added to {playlistCount} playlists": "" + CreatePlaylistPrompt: + New Playlist Name: '' + Create: '' + + Toast: + There is already a playlist with this name. Please pick a different name.: '' + Playlist {playlistName} has been successfully created.: '' + There was an issue with creating the playlist.: '' +History: + # On History Page + History: '' + Watch History: '' + Your history list is currently empty.: '' + Empty Search Message: '' + Search bar placeholder: "" + Case Sensitive Search: '' +Settings: + # On Settings Page + Settings: '' + Sort Settings Sections (A-Z): '' + Return to Settings Menu: '' + The app needs to restart for changes to take effect. Restart and apply change?: '' + General Settings: + General Settings: '' + Check for Updates: '' + Check for Latest Blog Posts: '' + Fallback to Non-Preferred Backend on Failure: '' + Enable Search Suggestions: '' + Auto Load Next Page: + Label: '' + Tooltip: '' + Default Landing Page: '' + Locale Preference: '' + System Default: '' + Preferred API Backend: + Preferred API Backend: '' + Local API: '' + Invidious API: '' + Video View Type: + Video View Type: '' + Grid: '' + List: '' + Thumbnail Preference: + Thumbnail Preference: '' + Default: '' + Beginning: '' + Middle: '' + End: '' + Hidden: '' + Blur: '' + Current Invidious Instance: '' + The currently set default instance is {instance}: '' + No default instance has been set: '' + Current instance will be randomized on startup: '' + Set Current Instance as Default: '' + Clear Default Instance: '' + View all Invidious instance information: '' + Region for Trending: '' + #! List countries + External Link Handling: + External Link Handling: '' + Open Link: '' + Ask Before Opening Link: '' + No Action: '' + Theme Settings: + Theme Settings: '' + Match Top Bar with Main Color: '' + Expand Side Bar by Default: '' + Disable Smooth Scrolling: '' + UI Scale: '' + Hide Side Bar Labels: '' + Hide FreeTube Header Logo: '' + Base Theme: + Base Theme: '' + Black: '' + Dark: '' + System Default: '' + Light: '' + Dracula: '' + Catppuccin Mocha: '' + Pastel Pink: '' + Hot Pink: '' + Nordic: '' + Solarized Dark: '' + Solarized Light: '' + Main Color Theme: + Main Color Theme: '' + Red: '' + Pink: '' + Purple: '' + Deep Purple: '' + Indigo: '' + Blue: '' + Light Blue: '' + Cyan: '' + Teal: '' + Green: '' + Light Green: '' + Lime: '' + Yellow: '' + Amber: '' + Orange: '' + Deep Orange: '' + Dracula Cyan: '' + Dracula Green: '' + Dracula Orange: '' + Dracula Pink: '' + Dracula Purple: '' + Dracula Red: '' + Dracula Yellow: '' + Catppuccin Mocha Rosewater: '' + Catppuccin Mocha Flamingo: '' + Catppuccin Mocha Pink: '' + Catppuccin Mocha Mauve: '' + Catppuccin Mocha Red: '' + Catppuccin Mocha Maroon: '' + Catppuccin Mocha Peach: '' + Catppuccin Mocha Yellow: '' + Catppuccin Mocha Green: '' + Catppuccin Mocha Teal: '' + Catppuccin Mocha Sky: '' + Catppuccin Mocha Sapphire: '' + Catppuccin Mocha Blue: '' + Catppuccin Mocha Lavender: '' + Solarized Yellow: '' + Solarized Orange: '' + Solarized Red: '' + Solarized Magenta: '' + Solarized Violet: '' + Solarized Blue: '' + Solarized Cyan: '' + Solarized Green: '' + Secondary Color Theme: '' + #* Main Color Theme + Player Settings: + Player Settings: '' + Play Next Video: '' + Turn on Subtitles by Default: '' + Autoplay Videos: '' + Proxy Videos Through Invidious: '' + Autoplay Playlists: '' + Enable Theatre Mode by Default: '' + Scroll Volume Over Video Player: '' + Scroll Playback Rate Over Video Player: '' + Skip by Scrolling Over Video Player: '' + Display Play Button In Video Player: '' + Enter Fullscreen on Display Rotate: '' + Next Video Interval: '' + Fast-Forward / Rewind Interval: '' + Default Volume: '' + Default Playback Rate: '' + Max Video Playback Rate: '' + Video Playback Rate Interval: '' + Default Video Format: + Default Video Format: '' + Dash Formats: '' + Legacy Formats: '' + Audio Formats: '' + Default Quality: + Default Quality: '' + Auto: '' + 144p: '' + 240p: '' + 360p: '' + 480p: '' + 720p: '' + 1080p: '' + 1440p: '' + 4k: '' + 8k: '' + Screenshot: + Enable: '' + Format Label: '' + Quality Label: '' + Ask Path: '' + Folder Label: '' + Folder Button: '' + File Name Label: '' + File Name Tooltip: '' + Error: + Forbidden Characters: '' + Empty File Name: '' + External Player Settings: + External Player Settings: '' + External Player: '' + Ignore Unsupported Action Warnings: '' + Ignore Default Arguments: '' + Custom External Player Executable: '' + Custom External Player Arguments: '' + Players: + None: + Name: '' + Privacy Settings: + Privacy Settings: '' + Remember History: '' + Save Watched Progress: '' + Save Watched Videos With Last Viewed Playlist: '' + Clear Search Cache: '' + Are you sure you want to clear out your search cache?: '' + Search cache has been cleared: '' + Remove Watch History: '' + Are you sure you want to remove your entire watch history?: '' + Watch history has been cleared: '' + Remove All Subscriptions / Profiles: '' + Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' + Remove All Playlists: '' + All playlists have been removed: '' + Are you sure you want to remove all your playlists?: '' + Subscription Settings: + Subscription Settings: '' + Hide Videos on Watch: '' + Fetch Feeds from RSS: '' + Fetch Automatically: '' + Only Show Latest Video for Each Channel: '' + Confirm Before Unsubscribing: '' + Distraction Free Settings: + Distraction Free Settings: '' + Sections: + Side Bar: '' + Subscriptions Page: '' + Channel Page: '' + Watch Page: '' + General: '' + Hide Video Views: '' + Hide Video Likes And Dislikes: '' + Hide Channel Subscribers: '' + Hide Comment Likes: '' + Hide Recommended Videos: '' + Hide Trending Videos: '' + Hide Popular Videos: '' + Hide Playlists: '' + Hide Live Chat: '' + Hide Active Subscriptions: '' + Hide Video Description: '' + Hide Comments: '' + Hide Profile Pictures in Comments: '' + Display Titles Without Excessive Capitalisation: '' + Hide Live Streams: '' + Hide Upcoming Premieres: '' + Hide Sharing Actions: '' + Hide Chapters: '' + Hide Channels: '' + Hide Channels Disabled Message: '' + Hide Channels Placeholder: '' + Hide Channels Invalid: '' + Hide Channels API Error: '' + Hide Channels Already Exists: '' + Hide Featured Channels: '' + Hide Channel Playlists: '' + Hide Channel Community: '' + Hide Channel Shorts: '' + Hide Channel Podcasts: '' + Hide Channel Releases: '' + Hide Videos and Playlists Containing Text: '' + Hide Videos and Playlists Containing Text Placeholder: '' + Hide Subscriptions Videos: '' + Hide Subscriptions Shorts: '' + Hide Subscriptions Live: '' + Hide Subscriptions Community: '' + Data Settings: + Data Settings: '' + Select Import Type: '' + Select Export Type: '' + Import Subscriptions: '' + Subscription File: '' + History File: '' + Playlist File: '' + Export Subscriptions: '' + Export FreeTube: '' + Export YouTube: '' + Export NewPipe: '' + Import History: '' + Export History: '' + Import Playlists: '' + Export Playlists: '' + Export Playlists For Older FreeTube Versions: + Label: '' + # |- = Keep newlines, No newline at end + Tooltip: | + Profile object has insufficient data, skipping item: '' + All subscriptions and profiles have been successfully imported: '' + All subscriptions have been successfully imported: '' + Invalid subscriptions file: '' + Invalid history file: '' + Subscriptions have been successfully exported: '' + History object has insufficient data, skipping item: '' + All watched history has been successfully imported: '' + All watched history has been successfully exported: '' + Playlist insufficient data: '' + All playlists has been successfully imported: '' + All playlists has been successfully exported: '' + Unable to read file: '' + Unable to write file: '' + Unknown data key: '' + How do I import my subscriptions?: '' + Manage Subscriptions: '' + Proxy Settings: + Proxy Settings: '' + Enable Tor / Proxy: '' + Proxy Protocol: '' + Proxy Host: '' + Proxy Port Number: '' + Clicking on Test Proxy will send a request to: '' + Test Proxy: '' + Your Info: '' + Ip: '' + Country: '' + Region: '' + City: '' + Error getting network information. Is your proxy configured properly?: '' + SponsorBlock Settings: + SponsorBlock Settings: '' + Enable SponsorBlock: '' + 'SponsorBlock API Url (Default is https://sponsor.ajay.app)': '' + Notify when sponsor segment is skipped: '' + UseDeArrowTitles: '' + UseDeArrowThumbnails: '' + 'DeArrow Thumbnail Generator API Url (Default is https://dearrow-thumb.ajay.app)': '' + Skip Options: + Skip Option: '' + Auto Skip: '' + Show In Seek Bar: '' + Prompt To Skip: '' + Do Nothing: '' + Category Color: '' + Parental Control Settings: + Parental Control Settings: '' + Hide Unsubscribe Button: '' + Show Family Friendly Only: '' + Hide Search Bar: '' + Download Settings: + Download Settings: '' + Ask Download Path: '' + Choose Path: '' + Download Behavior: '' + Download in app: '' + Open in web browser: '' + Experimental Settings: + Experimental Settings: '' + Warning: '' + Replace HTTP Cache: '' + Password Dialog: + Password: '' + Enter Password To Unlock: '' + Password Incorrect: '' + Unlock: '' + Password Settings: + Password Settings: '' + Set Password To Prevent Access: '' + Set Password: '' + Remove Password: '' +About: + #On About page + About: '' + Beta: '' + Source code: '' + Licensed under the: '' + AGPLv3: '' + Downloads / Changelog: '' + GitHub releases: '' + Help: '' + FreeTube Wiki: '' + FAQ: '' + Discussions: '' + Report a problem: '' + GitHub issues: '' + Please check for duplicates before posting: '' + Website: '' + Blog: '' + Email: '' + Mastodon: '' + Chat on Matrix: '' + Please read the: '' + room rules: '' + Translate: '' + Credits: '' + FreeTube is made possible by: '' + these people and projects: '' + Donate: '' + +Profile: + Profile Settings: '' + Toggle Profile List: '' + Profile Select: '' + Profile Filter: '' + All Channels: '' + Profile Manager: '' + Create New Profile: '' + Edit Profile: '' + Edit Profile Name: '' + Create Profile Name: '' + Profile Name: '' + Color Picker: '' + Custom Color: '' + Profile Preview: '' + Create Profile: '' + Update Profile: '' + Make Default Profile: '' + Delete Profile: '' + Are you sure you want to delete this profile?: '' + All subscriptions will also be deleted.: '' + Profile could not be found: '' + Your profile name cannot be empty: '' + Profile has been created: '' + Profile has been updated: '' + Your default profile has been set to {profile}: '' + Removed {profile} from your profiles: '' + Your default profile has been changed to your primary profile: '' + '{profile} is now the active profile': '' + Subscription List: '' + Other Channels: '' + '{number} selected': '' + Select All: '' + Select None: '' + Delete Selected: '' + Add Selected To Profile: '' + No channel(s) have been selected: '' + ? This is your primary profile. Are you sure you want to delete the selected channels? The + same channels will be deleted in any profile they are found in. + : '' + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '' + Close Profile Dropdown: '' + Open Profile Dropdown: '' +#On Channel Page +Channel: + Subscribe: '' + Unsubscribe: '' + Channel has been removed from your subscriptions: '' + Removed subscription from {count} other channel(s): '' + Added channel to your subscriptions: '' + Search Channel: '' + Your search results have returned 0 results: '' + Sort By: '' + This channel does not exist: '' + This channel does not allow searching: '' + This channel is age-restricted and currently cannot be viewed in FreeTube.: '' + Channel Tabs: '' + Videos: + Videos: '' + This channel does not currently have any videos: '' + Sort Types: + Newest: '' + Oldest: '' + Most Popular: '' + Shorts: + This channel does not currently have any shorts: '' + Live: + Live: '' + This channel does not currently have any live streams: '' + Playlists: + Playlists: '' + This channel does not currently have any playlists: '' + Sort Types: + Last Video Added: '' + Newest: '' + Oldest: '' + Podcasts: + Podcasts: '' + This channel does not currently have any podcasts: '' + Releases: + Releases: '' + This channel does not currently have any releases: '' + About: + About: '' + Channel Description: '' + Tags: + Tags: '' + Search for: '' + Details: '' + Joined: '' + Location: '' + Featured Channels: '' + Community: + This channel currently does not have any posts: '' + votes: '' + View Full Post: '' + Reveal Answers: '' + Hide Answers: '' + Video hidden by FreeTube: '' + Viewing Posts Only Supported By Invidious: '' +Video: + IP block: '' + MembersOnly: '' + AgeRestricted: '' + More Options: '' + Mark As Watched: '' + Remove From History: '' + Video has been marked as watched: '' + Video has been removed from your history: '' + Save Video: '' + Video has been saved: '' + Video has been removed from your saved list: '' + Open in YouTube: '' + Copy YouTube Link: '' + Open YouTube Embedded Player: '' + Copy YouTube Embedded Player Link: '' + Open in Invidious: '' + Copy Invidious Link: '' + Open Channel in YouTube: '' + Copy YouTube Channel Link: '' + Open Channel in Invidious: '' + Copy Invidious Channel Link: '' + Hide Channel: '' + Unhide Channel: '' + Views: '' + Loop Playlist: '' + Shuffle Playlist: '' + Reverse Playlist: '' + Play Next Video: '' + Play Previous Video: '' + Pause on Current Video: '' + Watched: '' + Autoplay: '' + Starting soon, please refresh the page to check again: '' + # As in a Live Video + Premieres on: '' + Premieres: '' + Upcoming: '' + Unlisted: '' + Live: '' + Live Now: '' + Live Chat: '' + Enable Live Chat: '' + Live Chat is currently not supported in this build.: '' + 'Chat is disabled or the Live Stream has ended.': '' + Live chat is enabled. Chat messages will appear here once sent.: '' + 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '' + 'Live Chat is unavailable for this stream. It may have been disabled by the uploader.': '' + Show Super Chat Comment: '' + Scroll to Bottom: '' + Download Video: '' + video only: '' + audio only: '' + Published: + Jan: '' + Feb: '' + Mar: '' + Apr: '' + May: '' + Jun: '' + Jul: '' + Aug: '' + Sep: '' + Oct: '' + Nov: '' + Dec: '' + Second: '' + Seconds: '' + Minute: '' + Minutes: '' + Hour: '' + Hours: '' + Day: '' + Days: '' + Week: '' + Weeks: '' + Month: '' + Months: '' + Year: '' + Years: '' + Ago: '' + Upcoming: '' + In less than a minute: '' + Published on: '' + Streamed on: '' + Started streaming on: '' + Publicationtemplate: '' + Sponsor Block category: + sponsor: '' + intro: '' + outro: '' + self-promotion: '' + interaction: '' + music offtopic: '' + recap: '' + filler: '' + External Player: + OpenInTemplate: '' + video: '' + playlist: '' + OpeningTemplate: '' + UnsupportedActionTemplate: '' + Unsupported Actions: + starting video at offset: '' + setting a playback rate: '' + opening playlists: '' + opening specific video in a playlist (falling back to opening the video): '' + reversing playlists: '' + shuffling playlists: '' + looping playlists: '' + Player: + TranslatedCaptionTemplate: '' + Audio Tracks: '' + Theatre Mode: '' + Exit Theatre Mode: '' + Full Window: '' + Exit Full Window: '' + Take Screenshot: '' + Show Stats: '' + Hide Stats: '' + Stats: + Stats: '' + Video ID: '' + Media Formats: '' + Resolution: '' + Player Dimensions: '' + Bitrate: '' + Volume: '' + Bandwidth: '' + Buffered: '' + Dropped Frames / Total Frames: '' + CodecAudio: '' + CodecsVideoAudio: '' + CodecsVideoAudioNoItags: '' + You appear to be offline: '' + Playback will resume automatically when your connection comes back: '' + Skipped segment: '' +#& Videos +Videos: + #& Sort By + Sort By: + Newest: '' + Oldest: '' + #& Most Popular +#& Playlists +Playlist: + #& About + Playlist: '' + View Full Playlist: '' + Last Updated On: '' + Sort By: + Sort By: '' + DateAddedNewest: '' + DateAddedOldest: '' + AuthorAscending: '' + AuthorDescending: '' + VideoTitleAscending: '' + VideoTitleDescending: '' + VideoDurationAscending: '' + VideoDurationDescending: '' + Custom: '' + +# On Video Watch Page +#* Published +#& Views +Change Format: + Change Media Formats: '' + Use Dash Formats: '' + Use Legacy Formats: '' + Use Audio Formats: '' + Dash formats are not available for this video: '' + Audio formats are not available for this video: '' + Legacy formats are not available for this video: '' +Share: + Share Video: '' + Share Channel: '' + Share Playlist: '' + Include Timestamp: '' + Copy Link: '' + Open Link: '' + Copy Embed: '' + Open Embed: '' + # On Click + Invidious URL copied to clipboard: '' + Invidious Embed URL copied to clipboard: '' + Invidious Channel URL copied to clipboard: '' + YouTube URL copied to clipboard: '' + YouTube Embed URL copied to clipboard: '' + YouTube Channel URL copied to clipboard: '' +Clipboard: + Copy failed: '' + Cannot access clipboard without a secure connection: '' + +Chapters: + Chapters: '' + 'Chapters list visible, current chapter: {chapterName}': '' + 'Chapters list hidden, current chapter: {chapterName}': '' + +Mini Player: '' +Comments: + Comments: '' + Click to View Comments: '' + Getting comment replies, please wait: '' + There are no more comments for this video: '' + Show Comments: '' + Hide Comments: '' + Sort by: '' + Top comments: '' + Newest first: '' + View {replyCount} replies: '' + # Context: View 10 Replies, View 1 Reply, View 1 Reply from Owner, View 2 Replies from Owner and others + View: '' + Hide: '' + Replies: '' + Show More Replies: '' + Reply: '' + From {channelName}: '' + And others: '' + There are no comments available for this video: '' + There are no comments available for this post: '' + Load More Comments: '' + No more comments available: '' + Pinned by: '' + Member: '' + Subscribed: '' + Hearted: '' + +Up Next: '' + +#Tooltips +Tooltips: + General Settings: + Preferred API Backend: '' + Fallback to Non-Preferred Backend on Failure: '' + Thumbnail Preference: '' + Invidious Instance: '' + Region for Trending: '' + External Link Handling: | + Player Settings: + Proxy Videos Through Invidious: '' + Default Video Format: '' + Scroll Playback Rate Over Video Player: '' + Skip by Scrolling Over Video Player: '' + External Player Settings: + External Player: '' + Custom External Player Executable: '' + Ignore Warnings: '' + Ignore Default Arguments: '' + Custom External Player Arguments: '' + DefaultCustomArgumentsTemplate: "" + Distraction Free Settings: + Hide Channels: '' + Hide Subscriptions Live: '' + Hide Videos and Playlists Containing Text: '' + Subscription Settings: + Fetch Feeds from RSS: '' + Fetch Automatically: '' + Experimental Settings: + Replace HTTP Cache: '' + SponsorBlock Settings: + UseDeArrowTitles: '' + UseDeArrowThumbnails: '' + +# Toast Messages +Local API Error (Click to copy): '' +Invidious API Error (Click to copy): '' +Falling back to Invidious API: '' +Falling back to Local API: '' +This video is unavailable because of missing formats. This can happen due to country unavailability.: '' +Unknown YouTube url type, cannot be opened in app: '' +Loop is now disabled: '' +Loop is now enabled: '' +Shuffle is now disabled: '' +Shuffle is now enabled: '' +The playlist has been reversed: '' +Playing Next Video: '' +Playing Previous Video: '' +Playlist will not pause when current video is finished: '' +Playlist will pause when current video is finished: '' +Playing Next Video Interval: '' +Canceled next video autoplay: '' + +Default Invidious instance has been set to {instance}: '' +Default Invidious instance has been cleared: '' +'The playlist has ended. Enable loop to continue playing': '' +Age Restricted: + This channel is age restricted: '' + This video is age restricted: '' +External link opening has been disabled in the general settings: '' +'Blocked opening potentially unsafe URL': '' +Downloading has completed: '' +Starting download: '' +Downloading failed: '' +Screenshot Success: '' +Screenshot Error: '' +Channel Hidden: '' +Channel Unhidden: '' +Trimmed input must be at least N characters long: '' +Tag already exists: '' + +Hashtag: + Hashtag: '' + This hashtag does not currently have any videos: '' +Moments Ago: '' +Yes: '' +No: '' +Ok: '' +Yes, Delete: '' +Yes, Restart: '' +Yes, Open Link: '' +Cancel: '' +# 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: '' From d72be374218ac289099528d7aa5bf981da819ec4 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:59:57 +0100 Subject: [PATCH 14/70] Fix nightly builds by updating package list before installing build dependencies (#6084) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f24a7440e789..cccd90a7479f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -88,7 +88,7 @@ jobs: - name: Install libarchive-tools if: startsWith(matrix.os, 'ubuntu') - run: sudo apt -y install libarchive-tools; echo "Version Number ${{ toJson(job) }} ${{ toJson(needs) }}" + run: sudo apt update; sudo apt -y install libarchive-tools; echo "Version Number ${{ toJson(job) }} ${{ toJson(needs) }}" - name: Build x64 with Node.js ${{ matrix.node-version}} if: contains(matrix.runtime, 'x64') From f49c91fd33aa439d318ba37fe32016565cc68324 Mon Sep 17 00:00:00 2001 From: Florent Date: Wed, 6 Nov 2024 09:18:29 +0000 Subject: [PATCH 15/70] Translated using Weblate (Breton) Currently translated at 80.5% (709 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/br/ --- static/locales/br.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/br.yaml b/static/locales/br.yaml index 93afc73cf894c..9f8197b0724b0 100644 --- a/static/locales/br.yaml +++ b/static/locales/br.yaml @@ -504,7 +504,7 @@ Settings: External Player Settings: 'Lenner diavaez' External Player: 'Lenner diavaez' Ignore Unsupported Action Warnings: '' - Ignore Default Arguments: '' + Ignore Default Arguments: 'Leuskel arguzennoù dre ziouer a-gostez' Custom External Player Executable: '' Custom External Player Arguments: '' Players: From b5af3ca0bd2ad84d39ba61a33b56632e82252ec5 Mon Sep 17 00:00:00 2001 From: Dinesh Kumar P Date: Wed, 6 Nov 2024 08:22:32 +0000 Subject: [PATCH 16/70] Translated using Weblate (Tamil) Currently translated at 2.2% (20 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ta/ --- static/locales/ta.yaml | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/static/locales/ta.yaml b/static/locales/ta.yaml index 4efb66327be9d..46518453b4c84 100644 --- a/static/locales/ta.yaml +++ b/static/locales/ta.yaml @@ -1,27 +1,28 @@ # Put the name of your locale in the same language -Locale Name: '' +Locale Name: 'தமிழ்' # 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.': >- + இந்த பகுதி இன்னும் தயாராக இல்லை. சிறிது நேரம் கழித்து மீண்டும் பார்க்கவும். # Webkit Menu Bar -File: '' -New Window: '' -Preferences: '' -Quit: '' -Edit: '' -Undo: '' -Redo: '' -Cut: '' -Copy: '' -Paste: '' -Delete: '' -Select all: '' -Reload: '' -Force Reload: '' -Toggle Developer Tools: '' -Actual size: '' -Zoom in: '' -Zoom out: '' +File: 'கோப்பு' +New Window: 'புதிய விண்டோ' +Preferences: 'விருப்பத்தேர்வுகள்' +Quit: 'வெளியேறு' +Edit: 'திருத்து' +Undo: 'செயல்தவிர்' +Redo: 'மீண்டும் செய்' +Cut: 'வெட்டு' +Copy: 'நகலெடு' +Paste: 'ஒட்டு' +Delete: 'அழி' +Select all: 'அனைத்தையும் தேர்ந்தெடு' +Reload: 'மீள் ஏற்று' +Force Reload: 'வற்புறுத்தி மீள்ஏற்று' +Toggle Developer Tools: 'டெவலப்பர் கருவிகளை நிலைமாற்று' +Actual size: 'உண்மை அளவு' +Zoom in: 'பெரிதாக்கு' +Zoom out: 'சிறிதாக்கு' Toggle fullscreen: '' Window: '' Minimize: '' From 36aa71d440a783c44153cd0008caf6dbd0be668f Mon Sep 17 00:00:00 2001 From: Kanoero Date: Wed, 6 Nov 2024 19:52:28 +0000 Subject: [PATCH 17/70] Translated using Weblate (Spanish) Currently translated at 100.0% (880 of 880 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 a37c3a9148cf0..4e7ac306c3abb 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -250,6 +250,8 @@ User Playlists: seguro de que deseas eliminar 1 video duplicado de esta lista de reproducción? Esto no se puede deshacer. | ¿Estás seguro de que deseas eliminar {playlistItemCount} videos duplicados de esta lista de reproducción? Esto no se puede deshacer. + Export Playlist: Exportar esta Playlist + The playlist has been successfully exported: La playlist se ha exportado correctamente History: # On History Page History: 'Historial' From b2161611335d676d9a1d1065a93224d9e0f7d5a1 Mon Sep 17 00:00:00 2001 From: Florent Date: Wed, 6 Nov 2024 18:42:16 +0000 Subject: [PATCH 18/70] Translated using Weblate (Breton) Currently translated at 81.0% (713 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/br/ --- static/locales/br.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/static/locales/br.yaml b/static/locales/br.yaml index 9f8197b0724b0..6538e445ed132 100644 --- a/static/locales/br.yaml +++ b/static/locales/br.yaml @@ -314,6 +314,9 @@ User Playlists: {playlistName} gant berzh.' There was an issue with creating the playlist.: 'C''hoarvezet ez eus ur gudenn en ur grouiñ ar roll-videoioù.' + Export Playlist: Ezporzhiañ ar Roll-videoioù + The playlist has been successfully exported: Ezporzhiet eo bet ar roll-videoioù + gant berzh History: # On History Page History: 'Roll istor' @@ -450,8 +453,8 @@ Settings: #* Main Color Theme Player Settings: Player Settings: 'Lenner' - Play Next Video: '' - Turn on Subtitles by Default: '' + Play Next Video: 'Lenn ar video da-heul' + Turn on Subtitles by Default: 'Enaouiñ an istitloù dre ziouer' Autoplay Videos: 'Lenn emgefreek ar videoioù' Proxy Videos Through Invidious: '' Autoplay Playlists: 'Lenn emgefreek ar rolloù-videoioù' From 6d5296dd4cad7a923e5ca54cb1a1ea1172788170 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Thu, 7 Nov 2024 06:31:04 +0800 Subject: [PATCH 19/70] Make playlist import match existing playlist by ID first (#6094) * * Make playlist import match exisitng playlist by ID first * * Update some playlist attribuites too during import for existing playlists --- .../components/data-settings/data-settings.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index e0198e32ea74f..caf61c42256be 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -837,12 +837,12 @@ export default defineComponent({ ] const optionalKeys = [ + '_id', 'description', 'createdAt', ] const ignoredKeys = [ - '_id', 'title', 'type', 'protected', @@ -910,6 +910,10 @@ export default defineComponent({ } const existingPlaylist = this.allPlaylists.find((playlist) => { + if (playlistObject._id != null && playlist._id === playlistObject._id) { + return true + } + return playlist.playlistName === playlistObject.playlistName }) @@ -957,8 +961,13 @@ export default defineComponent({ this.addVideo(payload) } }) - // Update playlist's `lastUpdatedAt` - this.updatePlaylist({ _id: existingPlaylist._id }) + // Update playlist's `lastUpdatedAt` & other attributes + this.updatePlaylist({ + _id: existingPlaylist._id, + // Only these attributes would be updated (besides videos) + playlistName: playlistObject.playlistName, + description: playlistObject.description, + }) }) showToast(this.$t('Settings.Data Settings.All playlists has been successfully imported')) From c1d020d3dfedfbf602487055f933267a702c4f04 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Wed, 6 Nov 2024 23:43:15 +0100 Subject: [PATCH 20/70] Add a polyfill for vue-i18n's `useI18n()` composable (#6042) * Add a polyfill for vue-i18n's useI18n() composable * Address feedback * JSDoc ESLint plugin requires each overload to be in a separate comment block --- _scripts/eslint-rules/plugin.mjs | 11 +++ .../eslint-rules/use-i18n-polyfill-rule.mjs | 62 ++++++++++++ eslint.config.mjs | 6 +- package.json | 4 +- .../ft-shaka-video-player.js | 17 ++-- src/renderer/composables/use-i18n-polyfill.js | 95 +++++++++++++++++++ 6 files changed, 184 insertions(+), 11 deletions(-) create mode 100644 _scripts/eslint-rules/plugin.mjs create mode 100644 _scripts/eslint-rules/use-i18n-polyfill-rule.mjs create mode 100644 src/renderer/composables/use-i18n-polyfill.js diff --git a/_scripts/eslint-rules/plugin.mjs b/_scripts/eslint-rules/plugin.mjs new file mode 100644 index 0000000000000..1baf7ddbe4a37 --- /dev/null +++ b/_scripts/eslint-rules/plugin.mjs @@ -0,0 +1,11 @@ +import useI18nPolyfillRule from './use-i18n-polyfill-rule.mjs' + +export default { + meta: { + name: 'eslint-plugin-freetube', + version: '1.0' + }, + rules: { + 'use-i18n-polyfill': useI18nPolyfillRule + } +} diff --git a/_scripts/eslint-rules/use-i18n-polyfill-rule.mjs b/_scripts/eslint-rules/use-i18n-polyfill-rule.mjs new file mode 100644 index 0000000000000..1d27f74f0f9d1 --- /dev/null +++ b/_scripts/eslint-rules/use-i18n-polyfill-rule.mjs @@ -0,0 +1,62 @@ +import { dirname, relative, resolve } from 'path' + +const polyfillPath = resolve(import.meta.dirname, '../../src/renderer/composables/use-i18n-polyfill') + +function getRelativePolyfillPath(filePath) { + const relativePath = relative(dirname(filePath), polyfillPath).replaceAll('\\', '/') + + if (relativePath[0] !== '.') { + return `./${relativePath}` + } + + return relativePath +} + +/** @type {import('eslint').Rule.RuleModule} */ +export default { + meta: { + type: 'problem', + fixable: 'code' + }, + create(context) { + return { + 'ImportDeclaration[source.value="vue-i18n"]'(node) { + const specifierIndex = node.specifiers.findIndex(specifier => specifier.type === 'ImportSpecifier' && specifier.imported.name === 'useI18n') + + if (specifierIndex !== -1) { + context.report({ + node: node.specifiers.length === 1 ? node : node.specifiers[specifierIndex], + message: "Please use FreeTube's useI18n polyfill, as vue-i18n's useI18n composable does not work when the vue-i18n is in legacy mode, which is needed for components using the Options API.", + fix: context.physicalFilename === '' + ? undefined + : (fixer) => { + const relativePath = getRelativePolyfillPath(context.physicalFilename) + + // If the import only imports `useI18n`, we can just update the source/from text + // Else we need to create a new import for `useI18n` and remove useI18n from the original one + if (node.specifiers.length === 1) { + return fixer.replaceText(node.source, `'${relativePath}'`) + } else { + const specifier = node.specifiers[specifierIndex] + + let specifierText = 'useI18n' + + if (specifier.imported.name !== specifier.local.name) { + specifierText += ` as ${specifier.local.name}` + } + + return [ + fixer.removeRange([ + specifierIndex === 0 ? specifier.start : node.specifiers[specifierIndex - 1].end, + specifierIndex === node.specifiers.length - 1 ? specifier.end : node.specifiers[specifierIndex + 1].start + ]), + fixer.insertTextAfter(node, `\nimport { ${specifierText} } from '${relativePath}'`) + ] + } + } + }) + } + } + } + } +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 29a7e2ecc4a96..b2c2286ea3183 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,6 +11,7 @@ import eslintPluginYml from 'eslint-plugin-yml' import yamlEslintParser from 'yaml-eslint-parser' import neostandard from 'neostandard' import jsdoc from 'eslint-plugin-jsdoc' +import freetube from './_scripts/eslint-rules/plugin.mjs' import activeLocales from './static/locales/activeLocales.json' with { type: 'json' } @@ -42,6 +43,7 @@ export default [ plugins: { unicorn: eslintPluginUnicorn, jsdoc, + freetube, }, languageOptions: { @@ -126,6 +128,8 @@ export default [ 'jsdoc/check-types': 'error', 'jsdoc/no-bad-blocks': 'error', 'jsdoc/no-multi-asterisks': 'error', + + 'freetube/use-i18n-polyfill': 'error', }, }, @@ -220,7 +224,7 @@ export default [ } }, { - files: ['_scripts/*.mjs'], + files: ['_scripts/**/*.mjs'], languageOptions: { globals: { ...globals.node, diff --git a/package.json b/package.json index 5c41d0d72ba98..3c9890f5712a1 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "lint-all": "run-p lint lint-json", "lint": "run-p eslint-lint lint-style", "lint-fix": "run-p eslint-lint-fix lint-style-fix", - "eslint-lint": "eslint --config eslint.config.mjs \"./src/**/*.js\" \"./src/**/*.vue\" \"./static/**/*.js\" \"./_scripts/*.js\" \"./_scripts/*.mjs\"", - "eslint-lint-fix": "eslint --config eslint.config.mjs --fix \"./src/**/*.js\" \"./src/**/*.vue\" \"./static/**/*.js\" \"./_scripts/*.js\" \"./_scripts/*.mjs\"", + "eslint-lint": "eslint --config eslint.config.mjs \"./src/**/*.js\" \"./src/**/*.vue\" \"./static/**/*.js\" \"./_scripts/*.js\" \"_scripts/**/*.mjs\"", + "eslint-lint-fix": "eslint --config eslint.config.mjs --fix \"./src/**/*.js\" \"./src/**/*.vue\" \"./static/**/*.js\" \"./_scripts/*.js\" \"_scripts/**/*.mjs\"", "lint-json": "eslint --config eslint.config.mjs \"./static/**/*.json\"", "lint-style": "stylelint \"**/*.{css,scss}\"", "lint-style-fix": "stylelint --fix \"**/*.{css,scss}\"", diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js index 316a4e66dcf78..45f26b48cf92a 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js @@ -3,10 +3,9 @@ import path from 'path' import { computed, defineComponent, onBeforeUnmount, onMounted, reactive, ref, shallowRef, watch } from 'vue' import shaka from 'shaka-player' +import { useI18n } from '../../composables/use-i18n-polyfill' import store from '../../store/index' -import i18n from '../../i18n/index' - import { IpcChannels } from '../../../constants' import { AudioTrackSelection } from './player-components/AudioTrackSelection' import { FullWindowButton } from './player-components/FullWindowButton' @@ -115,6 +114,8 @@ export default defineComponent({ 'toggle-theatre-mode' ], setup: function (props, { emit, expose }) { + const { locale, t } = useI18n() + /** @type {shaka.Player|null} */ let player = null @@ -993,7 +994,7 @@ export default defineComponent({ events.dispatchEvent(new CustomEvent('localeChanged')) } - watch(() => i18n.locale, setLocale) + watch(locale, setLocale) // #endregion player locales @@ -1502,7 +1503,7 @@ export default defineComponent({ }) } catch (err) { console.error(`Parse failed: ${err.message}`) - showToast(i18n.t('Screenshot Error', { error: err.message })) + showToast(t('Screenshot Error', { error: err.message })) canvas.remove() return } @@ -1567,7 +1568,7 @@ export default defineComponent({ await fs.mkdir(dirPath, { recursive: true }) } catch (err) { console.error(err) - showToast(i18n.t('Screenshot Error', { error: err })) + showToast(t('Screenshot Error', { error: err })) canvas.remove() return } @@ -1581,11 +1582,11 @@ export default defineComponent({ fs.writeFile(filePath, arr) .then(() => { - showToast(i18n.t('Screenshot Success', { filePath })) + showToast(t('Screenshot Success', { filePath })) }) .catch((err) => { console.error(err) - showToast(i18n.t('Screenshot Error', { error: err })) + showToast(t('Screenshot Error', { error: err })) }) }) }, mimeType, imageQuality) @@ -2319,7 +2320,7 @@ export default defineComponent({ player.getNetworkingEngine().registerResponseFilter(responseFilter) } - await setLocale(i18n.locale) + await setLocale(locale.value) // check if the component is already getting destroyed // which is possible because this function runs asynchronously diff --git a/src/renderer/composables/use-i18n-polyfill.js b/src/renderer/composables/use-i18n-polyfill.js new file mode 100644 index 0000000000000..a8b7fa871dc82 --- /dev/null +++ b/src/renderer/composables/use-i18n-polyfill.js @@ -0,0 +1,95 @@ +/* eslint-disable @intlify/vue-i18n/no-dynamic-keys */ +import { computed } from 'vue' + +import i18n from '../i18n/index' + +/** + * Polyfill for vue-i18n's useI18n composable, as it is not available in Vue 2 + * and doesn't work when vue-i18n 9+ (used for Vue 3) is set to `legacy: true`, + * which is needed for Options API components. + * + * Yes, vue-i18n 9 has an `allowComposition` option, + * but it comes with limitations that this polyfill doesn't have and was removed in vue-i18n 10. + * + * @see https://vue-i18n.intlify.dev/guide/migration/vue3#limitations + * @see https://vue-i18n.intlify.dev/guide/migration/breaking10.html#drop-allowcomposition-option + */ +export function useI18n() { + const locale = computed({ + get() { + return i18n.locale + }, + set(locale) { + i18n.locale = locale + } + }) + + return { + locale, + t + } +} + +/** + * @overload + * @param {string} key + * @returns {string} + */ + +/** + * @overload + * @param {string} key + * @param {number} plural + * @returns {string} + */ + +/** + * @overload + * @param {string} key + * @param {unknown[]} list + * @returns {string} + */ + +/** + * @overload + * @param {string} key + * @param {unknown[]} list + * @param {number} plural + * @returns {string} + */ + +/** + * @overload + * @param {string} key + * @param {Record} named + * @returns {string} + */ + +/** + * @overload + * @param {string} key + * @param {Record} named + * @param {number} plural + * @returns {string} + */ + +/** + * @param {string} key + * @param {number | unknown[] | Record | undefined} arg1 + * @param {number | undefined} arg2 + * @returns {string} + */ +function t(key, arg1, arg2) { + // Remove these lines in the Vue 3 migration and pass all args to the `.t()` call + if (typeof arg1 === 'number') { + return i18n.tc(key, arg1) + } else if (typeof arg2 === 'number') { + return i18n.tc(key, arg2, arg1) + } + + if (arg1 != null) { + return i18n.t(key, arg1) + } + + return i18n.t(key) +} From 2fee883493350edec242bc66c45c62b642e0ecaf Mon Sep 17 00:00:00 2001 From: kowih83264 Date: Thu, 7 Nov 2024 00:50:12 +0000 Subject: [PATCH 21/70] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (880 of 880 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 1a991dc70e4a9..2adc0aff519f8 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -242,6 +242,8 @@ User Playlists: certeza de que deseja remover 1 vídeo assistido desta playlist? Isso não pode ser desfeito. | Tem certeza de que deseja remover {playlistItemCount} vídeos assistidos desta playlist? Isso não pode ser desfeito. + The playlist has been successfully exported: Playlist exportada com sucesso + Export Playlist: Exportar esta playlist History: # On History Page History: 'Histórico' From f741b63766cb80952cd9a130b3b4b85628ca78e5 Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Thu, 7 Nov 2024 10:51:12 +0800 Subject: [PATCH 22/70] ! Revert unintended change (#6097) --- src/renderer/views/Watch/Watch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 369b03d6a53b5..1cdbbae3b01aa 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -723,7 +723,7 @@ export default defineComponent({ if (result.storyboards?.type === 'PlayerStoryboardSpec') { /** @type {import('youtubei.js/dist/src/parser/classes/PlayerStoryboardSpec').StoryboardData[]} */ - let source = result.storyboardSpec.boards + let source = result.storyboards.boards if (window.innerWidth < 500) { source = source.filter((board) => board.thumbnail_height <= 90) } From 3ee6f30663f04920e5112e59a4c58999c6376e52 Mon Sep 17 00:00:00 2001 From: Florent Date: Thu, 7 Nov 2024 14:01:10 +0000 Subject: [PATCH 23/70] Translated using Weblate (Breton) Currently translated at 82.2% (724 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/br/ --- static/locales/br.yaml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/static/locales/br.yaml b/static/locales/br.yaml index 6538e445ed132..1a343ba5df7b6 100644 --- a/static/locales/br.yaml +++ b/static/locales/br.yaml @@ -388,7 +388,7 @@ Settings: Disable Smooth Scrolling: 'Diweredekaat an dibunañ flour' UI Scale: 'Skeul an UI' Hide Side Bar Labels: 'Kuzhat tikedennoù ar varrenn gostez' - Hide FreeTube Header Logo: '' + Hide FreeTube Header Logo: 'Kuzhat logo FreeTube an talbenn' Base Theme: Base Theme: 'Tem diazez' Black: 'Du' @@ -449,14 +449,14 @@ Settings: Solarized Blue: 'Glas luc''hahelet' Solarized Cyan: 'Siañ luc''hahelet' Solarized Green: 'Gwer luc''hahelet' - Secondary Color Theme: '' + Secondary Color Theme: 'Liv eilvedel an tem' #* Main Color Theme Player Settings: Player Settings: 'Lenner' Play Next Video: 'Lenn ar video da-heul' Turn on Subtitles by Default: 'Enaouiñ an istitloù dre ziouer' Autoplay Videos: 'Lenn emgefreek ar videoioù' - Proxy Videos Through Invidious: '' + Proxy Videos Through Invidious: 'Proksi video dre Invidious' Autoplay Playlists: 'Lenn emgefreek ar rolloù-videoioù' Enable Theatre Mode by Default: '' Scroll Volume Over Video Player: '' @@ -467,9 +467,9 @@ Settings: Next Video Interval: '' Fast-Forward / Rewind Interval: '' Default Volume: 'Ment ar son dre ziouer' - Default Playback Rate: '' - Max Video Playback Rate: '' - Video Playback Rate Interval: '' + Default Playback Rate: 'Feur lenn dre ziouer' + Max Video Playback Rate: 'Feur lenn uhelañ ar videoioù' + Video Playback Rate Interval: 'Esaouenn feur lenn ar videoioù' Default Video Format: Default Video Format: '' Dash Formats: 'Furmad DASH' @@ -635,11 +635,12 @@ Settings: Manage Subscriptions: 'Merañ ar c''houmanantoù' Proxy Settings: Proxy Settings: 'Proksi' - Enable Tor / Proxy: '' + Enable Tor / Proxy: 'Gweredekaat Tor / Proksi' Proxy Protocol: 'Komenad ar Proksi' Proxy Host: 'Komenad Servijer' - Proxy Port Number: '' - Clicking on Test Proxy will send a request to: '' + Proxy Port Number: 'Niverenn borzh ar Proksi' + Clicking on Test Proxy will send a request to: 'En ur glikañ war Taol-esae Proksi + e vo kaset ur goulenn da' Test Proxy: 'Taol-esae Proksi' Your Info: 'Ho titouroù' Ip: 'IP' @@ -922,7 +923,7 @@ Video: UnsupportedActionTemplate: '' Unsupported Actions: starting video at offset: '' - setting a playback rate: '' + setting a playback rate: 'termenañ ur feur lenn' opening playlists: 'digeriñ rolloù-videoioù' opening specific video in a playlist (falling back to opening the video): '' reversing playlists: 'cheñch tu ar rolloù-videoioù' @@ -953,7 +954,8 @@ Video: CodecsVideoAudio: '' CodecsVideoAudioNoItags: '' You appear to be offline: '' - Playback will resume automatically when your connection comes back: '' + Playback will resume automatically when your connection comes back: 'Kendalc''het + e vo da lenn ent emgefreek pa viot kennasket endro.' Skipped segment: '' #& Videos Unlisted: Anlistennet From c0256fbc38e1236f625572a8ffa9caf5538ddab3 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Thu, 7 Nov 2024 19:46:55 +0000 Subject: [PATCH 24/70] Translated using Weblate (Polish) Currently translated at 100.0% (880 of 880 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index 2229a04ceccc3..c5b71d5b79ab6 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -244,6 +244,9 @@ User Playlists: na pewno chcesz usunąć 1 zduplikowany film z tej listy odtwarzania? Nie można tego cofnąć. | Czy na pewno chcesz usunąć {playlistItemCount} duplikatów wideo z tej listy odtwarzania? Nie można tego cofnąć. + Export Playlist: Eksportuj listę odtwarzania + The playlist has been successfully exported: Lista odtwarzania została pomyślnie + wyeksportowana History: # On History Page History: 'Historia' From 70be7ae84f0b493d887efc857d19650a5ce48700 Mon Sep 17 00:00:00 2001 From: OothecaPickle Date: Thu, 7 Nov 2024 13:54:38 -0800 Subject: [PATCH 25/70] add 'shaka-video-container' to Vue static classes for video container (#6090) --- .../components/ft-shaka-video-player/ft-shaka-video-player.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue index cc74d532546c2..6b2762e4e69c4 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue @@ -1,7 +1,7 @@