diff --git a/src-tauri/src/commands/lyrics.rs b/src-tauri/src/commands/lyrics.rs index 6746273..03e33eb 100644 --- a/src-tauri/src/commands/lyrics.rs +++ b/src-tauri/src/commands/lyrics.rs @@ -696,6 +696,21 @@ async fn run_prefetch( let mut misses = 0u32; let mut failed = 0u32; + // Emit an initial frame so the UI can show the total — and explicitly + // surface the "nothing to do" case (total == 0) which otherwise looks + // like the button does nothing. + let _ = app.emit( + "lyrics:prefetch-progress", + LyricsPrefetchProgress { + processed: 0, + total, + hits: 0, + misses: 0, + failed: 0, + current_title: None, + }, + ); + let client = LrclibClient::new(); let mut cancelled = false; diff --git a/src/components/views/AboutView.tsx b/src/components/views/AboutView.tsx index 3a53253..161b6a7 100644 --- a/src/components/views/AboutView.tsx +++ b/src/components/views/AboutView.tsx @@ -313,7 +313,7 @@ export function AboutView({ onNavigate }: AboutViewProps) {
- +
diff --git a/src/components/views/LibraryView.tsx b/src/components/views/LibraryView.tsx index 53cd718..73a83ec 100644 --- a/src/components/views/LibraryView.tsx +++ b/src/components/views/LibraryView.tsx @@ -31,7 +31,6 @@ import { useTranslation } from "react-i18next"; import type { LibraryTab } from "../../types"; import { Tab } from "../common/Tab"; import { EmptyState } from "../common/EmptyState"; -import { UploadIcon } from "../common/Icons"; import { Artwork } from "../common/Artwork"; import { AlbumLink } from "../common/AlbumLink"; import { ArtistLink } from "../common/ArtistLink"; @@ -717,15 +716,11 @@ export function LibraryView({ className="py-20" >
-
+ ) : lyricsResultMsg ? ( +
+ {lyricsResultMsg} +
) : (
{t("settings.lyricsPrefetch.subtitle")} diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index 340ee0c..1b7619b 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -1244,6 +1244,9 @@ "lyricsPrefetch": { "title": "تحميل كلمات الأغاني مسبقًا", "subtitle": "تنزيل كلمات الأغاني للمكتبة بأكملها للاستخدام دون اتصال", + "result": "تم تزامن {{hits}}، لم يتم العثور على {{misses}}، فشل {{failed}}", + "offline": "وضع عدم الاتصال مفعّل", + "failed": "فشل التحميل المسبق", "action": "تحميل مسبق", "progress": "تم معالجة {{current}}/{{total}} · {{hits}} عُثر عليها" }, diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 9d35bc9..af42e69 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Songtexte vorab laden", "subtitle": "Songtexte der gesamten Bibliothek für Offline-Nutzung herunterladen", + "result": "{{hits}} synchronisiert, {{misses}} nicht gefunden, {{failed}} fehlgeschlagen", + "offline": "Offlinemodus aktiviert", + "failed": "Vorabladen fehlgeschlagen", "action": "Vorab laden", "progress": "{{current}}/{{total}} verarbeitet · {{hits}} gefunden" }, diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 4e83972..b22305a 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -1294,6 +1294,9 @@ "lyricsPrefetch": { "title": "Prefetch lyrics", "subtitle": "Download lyrics for the entire library for offline use", + "result": "{{hits}} synced, {{misses}} not found, {{failed}} failed", + "offline": "Offline mode is enabled", + "failed": "Prefetch failed", "action": "Prefetch", "progress": "{{current}}/{{total}} processed · {{hits}} found" }, diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index a5efd93..8b79a58 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Precargar letras", "subtitle": "Descargar las letras de toda la biblioteca para uso sin conexión", + "result": "{{hits}} sincronizadas, {{misses}} no encontradas, {{failed}} fallidas", + "offline": "Modo sin conexión activado", + "failed": "Error al precargar", "action": "Precargar", "progress": "{{current}}/{{total}} procesadas · {{hits}} encontradas" }, diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index f3809fb..9704fa2 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -1318,6 +1318,9 @@ "lyricsPrefetch": { "title": "Préchargement des paroles", "subtitle": "Télécharger les paroles de toute la bibliothèque pour usage hors-ligne", + "result": "{{hits}} synchronisées, {{misses}} introuvables, {{failed}} échecs", + "offline": "Mode hors-ligne activé", + "failed": "Échec du préchargement", "action": "Précharger", "progress": "{{current}}/{{total}} traités · {{hits}} trouvés" }, diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json index 8631aa1..37d8136 100644 --- a/src/i18n/locales/hi.json +++ b/src/i18n/locales/hi.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "बोल पहले से लोड करें", "subtitle": "ऑफ़लाइन उपयोग के लिए पूरी लाइब्रेरी के बोल डाउनलोड करें", + "result": "{{hits}} सिंक्ड, {{misses}} नहीं मिलीं, {{failed}} विफल", + "offline": "ऑफ़लाइन मोड सक्षम है", + "failed": "प्रीफ़ेच विफल", "action": "पहले से लोड करें", "progress": "{{current}}/{{total}} संसाधित · {{hits}} मिले" }, diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index c5599f0..29316ad 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "Pramuat lirik", "subtitle": "Unduh lirik untuk seluruh pustaka untuk penggunaan offline", + "result": "{{hits}} disinkronkan, {{misses}} tidak ditemukan, {{failed}} gagal", + "offline": "Mode luring diaktifkan", + "failed": "Pra-pemuatan gagal", "action": "Pramuat", "progress": "{{current}}/{{total}} diproses · {{hits}} ditemukan" }, diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index db37f8c..22ffb6f 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Precarica i testi", "subtitle": "Scarica i testi dell’intera libreria per l’uso offline", + "result": "{{hits}} sincronizzati, {{misses}} non trovati, {{failed}} falliti", + "offline": "Modalità offline attiva", + "failed": "Precaricamento non riuscito", "action": "Precarica", "progress": "{{current}}/{{total}} elaborati · {{hits}} trovati" }, diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 11b5d87..dc2494b 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "歌詞を事前取得", "subtitle": "オフライン利用のためライブラリ全体の歌詞をダウンロードします", + "result": "{{hits}} 件同期、{{misses}} 件見つからず、{{failed}} 件失敗", + "offline": "オフラインモードが有効です", + "failed": "プリフェッチに失敗しました", "action": "事前取得", "progress": "{{current}}/{{total}} 処理済み · {{hits}} 件取得" }, diff --git a/src/i18n/locales/kr.json b/src/i18n/locales/kr.json index 63dfc36..9366696 100644 --- a/src/i18n/locales/kr.json +++ b/src/i18n/locales/kr.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "가사 미리 가져오기", "subtitle": "오프라인 사용을 위해 전체 라이브러리의 가사를 다운로드합니다", + "result": "{{hits}}개 동기화, {{misses}}개 없음, {{failed}}개 실패", + "offline": "오프라인 모드가 활성화됨", + "failed": "미리 가져오기 실패", "action": "미리 가져오기", "progress": "{{current}}/{{total}} 처리됨 · {{hits}}곡 찾음" }, diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 0d6aa4f..d695f80 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Songteksten vooraf ophalen", "subtitle": "Songteksten van de hele bibliotheek downloaden voor offline gebruik", + "result": "{{hits}} gesynchroniseerd, {{misses}} niet gevonden, {{failed}} mislukt", + "offline": "Offlinemodus is ingeschakeld", + "failed": "Vooraf laden mislukt", "action": "Vooraf ophalen", "progress": "{{current}}/{{total}} verwerkt · {{hits}} gevonden" }, diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index d518a0e..5457c3e 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Pré-carregar letras", "subtitle": "Baixar as letras de toda a biblioteca para uso offline", + "result": "{{hits}} sincronizadas, {{misses}} não encontradas, {{failed}} falharam", + "offline": "Modo offline ativado", + "failed": "Pré-carregamento falhou", "action": "Pré-carregar", "progress": "{{current}}/{{total}} processadas · {{hits}} encontradas" }, diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 3d5c929..433b160 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -1240,6 +1240,9 @@ "lyricsPrefetch": { "title": "Pré-carregar letras", "subtitle": "Baixar as letras de toda a biblioteca para uso offline", + "result": "{{hits}} sincronizadas, {{misses}} não encontradas, {{failed}} falhadas", + "offline": "Modo offline ativado", + "failed": "Pré-carregamento falhou", "action": "Pré-carregar", "progress": "{{current}}/{{total}} processadas · {{hits}} encontradas" }, diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 57b2fa4..24f7727 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -1242,6 +1242,9 @@ "lyricsPrefetch": { "title": "Предзагрузка текстов", "subtitle": "Скачать тексты для всей библиотеки для офлайн-использования", + "result": "Синхронизировано: {{hits}}, не найдено: {{misses}}, ошибок: {{failed}}", + "offline": "Включен офлайн-режим", + "failed": "Не удалось предзагрузить", "action": "Предзагрузить", "progress": "{{current}}/{{total}} обработано · {{hits}} найдено" }, diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 4207dc3..d17db9b 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "Şarkı sözlerini önceden yükle", "subtitle": "Çevrimdışı kullanım için tüm kütüphanenin şarkı sözlerini indir", + "result": "{{hits}} eşitlendi, {{misses}} bulunamadı, {{failed}} başarısız", + "offline": "Çevrimdışı modu etkin", + "failed": "Önbelleğe alma başarısız", "action": "Önceden yükle", "progress": "{{current}}/{{total}} işlendi · {{hits}} bulundu" }, diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index 08b2620..bf1fd06 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "预取歌词", "subtitle": "为整个曲库下载歌词以供离线使用", + "result": "已同步 {{hits}},未找到 {{misses}},失败 {{failed}}", + "offline": "已启用离线模式", + "failed": "预加载失败", "action": "预取", "progress": "已处理 {{current}}/{{total}} · 找到 {{hits}}" }, diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index efd219e..1149b17 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json @@ -1239,6 +1239,9 @@ "lyricsPrefetch": { "title": "預先擷取歌詞", "subtitle": "為整個曲庫下載歌詞以供離線使用", + "result": "已同步 {{hits}},找不到 {{misses}},失敗 {{failed}}", + "offline": "已啟用離線模式", + "failed": "預先載入失敗", "action": "預先擷取", "progress": "已處理 {{current}}/{{total}} · 找到 {{hits}}" },