fix(ui): update tutorial copy and library play button

This commit is contained in:
zarzet
2026-08-18 19:49:41 +07:00
parent a7423b7f89
commit 2cb5993d6e
30 changed files with 297 additions and 172 deletions
+17 -17
View File
@@ -961,7 +961,7 @@ abstract class AppLocalizations {
/// App tagline in setup
///
/// In en, this message translates to:
/// **'Download Spotify tracks in FLAC'**
/// **'Download music in lossless and Hi-Res quality'**
String get setupDownloadInFlac;
/// Success message for storage permission
@@ -3799,25 +3799,25 @@ abstract class AppLocalizations {
/// Tutorial welcome page description
///
/// In en, this message translates to:
/// **'Let\'s learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.'**
/// **'Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.'**
String get tutorialWelcomeDesc;
/// Tutorial welcome tip 1
///
/// In en, this message translates to:
/// **'Search music or paste a link from any source your installed extensions support'**
/// **'Search with an installed extension or paste a supported music link'**
String get tutorialWelcomeTip1;
/// Tutorial welcome tip 2
///
/// In en, this message translates to:
/// **'Get FLAC quality audio from installed download extensions'**
/// **'Choose from the audio qualities offered by your download provider'**
String get tutorialWelcomeTip2;
/// Tutorial welcome tip 3
///
/// In en, this message translates to:
/// **'Automatic metadata, cover art, and lyrics embedding'**
/// **'Embed metadata, cover art, lyrics, and release information automatically'**
String get tutorialWelcomeTip3;
/// Tutorial search page title
@@ -3829,7 +3829,7 @@ abstract class AppLocalizations {
/// Tutorial search page description
///
/// In en, this message translates to:
/// **'There are two easy ways to find music you want to download.'**
/// **'Search with your selected extension or paste a supported music link.'**
String get tutorialSearchDesc;
/// Tutorial download page title
@@ -3841,7 +3841,7 @@ abstract class AppLocalizations {
/// Tutorial download page description
///
/// In en, this message translates to:
/// **'Downloading music is simple and fast. Here\'s how it works.'**
/// **'Pick an available quality, start the download, and follow its progress in the queue.'**
String get tutorialDownloadDesc;
/// Tutorial library page title
@@ -3853,25 +3853,25 @@ abstract class AppLocalizations {
/// Tutorial library page description
///
/// In en, this message translates to:
/// **'All your downloaded music is organized in the Library tab.'**
/// **'Downloaded and locally scanned music is organized in your Library.'**
String get tutorialLibraryDesc;
/// Tutorial library tip 1
///
/// In en, this message translates to:
/// **'View download progress and queue in the Library tab'**
/// **'Manage active, pending, and completed downloads from the Library queue'**
String get tutorialLibraryTip1;
/// Tutorial library tip 2
///
/// In en, this message translates to:
/// **'Tap any track to play it with your music player'**
/// **'Tap a track to play it with the built-in player'**
String get tutorialLibraryTip2;
/// Tutorial library tip 3
///
/// In en, this message translates to:
/// **'Switch between list and grid view for better browsing'**
/// **'Browse tracks, albums, and playlists in list or grid views'**
String get tutorialLibraryTip3;
/// Tutorial extensions page title
@@ -3883,7 +3883,7 @@ abstract class AppLocalizations {
/// Tutorial extensions page description
///
/// In en, this message translates to:
/// **'Extend the app\'s capabilities with community extensions.'**
/// **'Extensions add search, download, metadata, lyrics, and other integrations.'**
String get tutorialExtensionsDesc;
/// Tutorial extensions tip 1
@@ -3895,13 +3895,13 @@ abstract class AppLocalizations {
/// Tutorial extensions tip 2
///
/// In en, this message translates to:
/// **'Add new download providers or search sources'**
/// **'Choose providers for search, downloads, metadata, and fallbacks'**
String get tutorialExtensionsTip2;
/// Tutorial extensions tip 3
///
/// In en, this message translates to:
/// **'Get lyrics, enhanced metadata, and more features'**
/// **'Connect accounts when required and keep extensions up to date'**
String get tutorialExtensionsTip3;
/// Tutorial settings page title
@@ -3913,7 +3913,7 @@ abstract class AppLocalizations {
/// Tutorial settings page description
///
/// In en, this message translates to:
/// **'Personalize the app in Settings to match your preferences.'**
/// **'Fine-tune downloads, playback, Library behavior, appearance, and storage.'**
String get tutorialSettingsDesc;
/// Tutorial settings tip 1
@@ -3925,7 +3925,7 @@ abstract class AppLocalizations {
/// Tutorial settings tip 2
///
/// In en, this message translates to:
/// **'Set default audio quality and format preferences'**
/// **'Set quality, concurrency, filenames, and conversion preferences'**
String get tutorialSettingsTip2;
/// Tutorial settings tip 3
@@ -3937,7 +3937,7 @@ abstract class AppLocalizations {
/// Tutorial completion message
///
/// In en, this message translates to:
/// **'You\'re all set! Start downloading your favorite music now.'**
/// **'You\'re ready. Select your extensions, then search or paste a supported link.'**
String get tutorialReadyMessage;
/// Button to force a complete rescan of library
+4 -3
View File
@@ -479,7 +479,8 @@ class AppLocalizationsDe extends AppLocalizations {
'iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.';
@override
String get setupDownloadInFlac => 'Spotify Titel in FLAC herunterladen';
String get setupDownloadInFlac =>
'Musik in verlustfreier und Hi-Res-Qualität herunterladen';
@override
String get setupStorageGranted => 'Speicherberechtigung erlaubt!';
@@ -2142,7 +2143,7 @@ class AppLocalizationsDe extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Willkommen bei SpotiFLAC!';
String get tutorialWelcomeTitle => 'Willkommen bei SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -2150,7 +2151,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Lade Musik von Spotify, Deezer herunter oder jeden unterstützten Link einfügen';
'Mit einer installierten Erweiterung suchen oder einen unterstützten Link einfügen';
@override
String get tutorialWelcomeTip2 =>
+18 -17
View File
@@ -472,7 +472,8 @@ class AppLocalizationsEn extends AppLocalizations {
'iCloud Drive is not supported. Please use the app Documents folder.';
@override
String get setupDownloadInFlac => 'Download Spotify tracks in FLAC';
String get setupDownloadInFlac =>
'Download music in lossless and Hi-Res quality';
@override
String get setupStorageGranted => 'Storage Permission Granted!';
@@ -2120,59 +2121,59 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get tutorialWelcomeDesc =>
'Let\'s learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.';
'Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.';
@override
String get tutorialWelcomeTip1 =>
'Search music or paste a link from any source your installed extensions support';
'Search with an installed extension or paste a supported music link';
@override
String get tutorialWelcomeTip2 =>
'Get FLAC quality audio from installed download extensions';
'Choose from the audio qualities offered by your download provider';
@override
String get tutorialWelcomeTip3 =>
'Automatic metadata, cover art, and lyrics embedding';
'Embed metadata, cover art, lyrics, and release information automatically';
@override
String get tutorialSearchTitle => 'Finding Music';
@override
String get tutorialSearchDesc =>
'There are two easy ways to find music you want to download.';
'Search with your selected extension or paste a supported music link.';
@override
String get tutorialDownloadTitle => 'Downloading Music';
@override
String get tutorialDownloadDesc =>
'Downloading music is simple and fast. Here\'s how it works.';
'Pick an available quality, start the download, and follow its progress in the queue.';
@override
String get tutorialLibraryTitle => 'Your Library';
@override
String get tutorialLibraryDesc =>
'All your downloaded music is organized in the Library tab.';
'Downloaded and locally scanned music is organized in your Library.';
@override
String get tutorialLibraryTip1 =>
'View download progress and queue in the Library tab';
'Manage active, pending, and completed downloads from the Library queue';
@override
String get tutorialLibraryTip2 =>
'Tap any track to play it with your music player';
'Tap a track to play it with the built-in player';
@override
String get tutorialLibraryTip3 =>
'Switch between list and grid view for better browsing';
'Browse tracks, albums, and playlists in list or grid views';
@override
String get tutorialExtensionsTitle => 'Extensions';
@override
String get tutorialExtensionsDesc =>
'Extend the app\'s capabilities with community extensions.';
'Extensions add search, download, metadata, lyrics, and other integrations.';
@override
String get tutorialExtensionsTip1 =>
@@ -2180,18 +2181,18 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get tutorialExtensionsTip2 =>
'Add new download providers or search sources';
'Choose providers for search, downloads, metadata, and fallbacks';
@override
String get tutorialExtensionsTip3 =>
'Get lyrics, enhanced metadata, and more features';
'Connect accounts when required and keep extensions up to date';
@override
String get tutorialSettingsTitle => 'Customize Your Experience';
@override
String get tutorialSettingsDesc =>
'Personalize the app in Settings to match your preferences.';
'Fine-tune downloads, playback, Library behavior, appearance, and storage.';
@override
String get tutorialSettingsTip1 =>
@@ -2199,14 +2200,14 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get tutorialSettingsTip2 =>
'Set default audio quality and format preferences';
'Set quality, concurrency, filenames, and conversion preferences';
@override
String get tutorialSettingsTip3 => 'Customize app theme and appearance';
@override
String get tutorialReadyMessage =>
'You\'re all set! Start downloading your favorite music now.';
'You\'re ready. Select your extensions, then search or paste a supported link.';
@override
String get libraryForceFullScan => 'Force Full Scan';
+10 -6
View File
@@ -472,7 +472,8 @@ class AppLocalizationsEs extends AppLocalizations {
'iCloud Drive is not supported. Please use the app Documents folder.';
@override
String get setupDownloadInFlac => 'Download Spotify tracks in FLAC';
String get setupDownloadInFlac =>
'Descarga música con calidad sin pérdida y Hi-Res';
@override
String get setupStorageGranted => 'Storage Permission Granted!';
@@ -2116,7 +2117,8 @@ class AppLocalizationsEs extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!';
String get tutorialWelcomeTitle =>
'¡Te damos la bienvenida a SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -2124,7 +2126,7 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Download music from Spotify, Deezer, or paste any supported URL';
'Busca con una extensión instalada o pega un enlace compatible';
@override
String get tutorialWelcomeTip2 =>
@@ -5418,7 +5420,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
'iCloud Drive no es compatible. Utilice la carpeta Documentos de la aplicación.';
@override
String get setupDownloadInFlac => 'Descargar pistas de Spotify en FLAC';
String get setupDownloadInFlac =>
'Descarga música con calidad sin pérdida y Hi-Res';
@override
String get setupStorageGranted => '¡Permiso de almacenamiento concedido!';
@@ -6997,7 +7000,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
}
@override
String get tutorialWelcomeTitle => '¡Bienvenido a SpotiFLAC!';
String get tutorialWelcomeTitle =>
'¡Te damos la bienvenida a SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -7005,7 +7009,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
@override
String get tutorialWelcomeTip1 =>
'Descarga música de Spotify, Deezer, o pega cualquier URL soportada';
'Busca con una extensión instalada o pega un enlace compatible';
@override
String get tutorialWelcomeTip2 =>
+3 -3
View File
@@ -487,7 +487,7 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get setupDownloadInFlac =>
'Télécharger des morceaux Spotify au format FLAC';
'Téléchargez de la musique en qualité sans perte et Hi-Res';
@override
String get setupStorageGranted => 'Autorisation de stockage accordée !';
@@ -2170,7 +2170,7 @@ class AppLocalizationsFr extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Bienvenue sur SpotiFLAC !';
String get tutorialWelcomeTitle => 'Bienvenue dans SpotiFLAC Mobile !';
@override
String get tutorialWelcomeDesc =>
@@ -2178,7 +2178,7 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Téléchargez de la musique depuis Spotify ou Deezer, ou collez n\'importe quelle URL prise en charge';
'Recherchez avec une extension installée ou collez un lien compatible';
@override
String get tutorialWelcomeTip2 =>
+22 -21
View File
@@ -474,7 +474,8 @@ class AppLocalizationsId extends AppLocalizations {
'iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.';
@override
String get setupDownloadInFlac => 'Unduh lagu Spotify dalam format FLAC';
String get setupDownloadInFlac =>
'Unduh musik dalam kualitas lossless dan Hi-Res';
@override
String get setupStorageGranted => 'Izin Penyimpanan Diberikan!';
@@ -2125,97 +2126,97 @@ class AppLocalizationsId extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Selamat Datang di SpotiFLAC!';
String get tutorialWelcomeTitle => 'Selamat Datang di SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
'Mari kita pelajari cara mengunduh musik favorit Anda dalam kualitas lossless. Tutorial singkat ini akan menunjukkan dasar-dasarnya.';
'Pelajari cara menemukan musik dengan extension, memilih kualitas, dan mengelola unduhan di SpotiFLAC Mobile.';
@override
String get tutorialWelcomeTip1 =>
'Unduh musik dari Spotify, Deezer, atau tempel URL yang didukung';
'Cari dengan extension terpasang atau tempel tautan musik yang didukung';
@override
String get tutorialWelcomeTip2 =>
'Get FLAC quality audio from installed download extensions';
'Pilih kualitas audio yang disediakan oleh provider unduhan';
@override
String get tutorialWelcomeTip3 =>
'Penyematan metadata, sampul album, dan lirik secara otomatis';
'Sematkan metadata, sampul, lirik, dan informasi rilisan secara otomatis';
@override
String get tutorialSearchTitle => 'Menemukan Musik';
@override
String get tutorialSearchDesc =>
'Ada dua cara mudah untuk menemukan musik yang ingin Anda unduh.';
'Cari dengan extension pilihan Anda atau tempel tautan musik yang didukung.';
@override
String get tutorialDownloadTitle => 'Mengunduh Musik';
@override
String get tutorialDownloadDesc =>
'Mengunduh musik itu mudah dan cepat. Begini cara kerjanya.';
'Pilih kualitas yang tersedia, mulai unduhan, lalu pantau progresnya dalam antrean.';
@override
String get tutorialLibraryTitle => 'Perpustakaan Anda';
@override
String get tutorialLibraryDesc =>
'Semua musik yang Anda unduh tersusun rapi di tab Perpustakaan.';
'Musik yang diunduh dan dipindai dari perangkat tersusun rapi di Perpustakaan.';
@override
String get tutorialLibraryTip1 =>
'View download progress and queue in the Library tab';
'Kelola unduhan aktif, tertunda, dan selesai dari antrean Perpustakaan';
@override
String get tutorialLibraryTip2 =>
'Tap any track to play it with your music player';
'Ketuk lagu untuk memutarnya dengan pemutar bawaan';
@override
String get tutorialLibraryTip3 =>
'Switch between list and grid view for better browsing';
'Telusuri lagu, album, dan playlist dalam tampilan daftar atau grid';
@override
String get tutorialExtensionsTitle => 'Extensions';
@override
String get tutorialExtensionsDesc =>
'Extend the app\'s capabilities with community extensions.';
'Extension menambahkan pencarian, unduhan, metadata, lirik, dan integrasi lainnya.';
@override
String get tutorialExtensionsTip1 =>
'Browse the Repo tab to discover useful extensions';
'Telusuri tab Repo untuk menemukan extension yang berguna';
@override
String get tutorialExtensionsTip2 =>
'Add new download providers or search sources';
'Pilih provider untuk pencarian, unduhan, metadata, dan fallback';
@override
String get tutorialExtensionsTip3 =>
'Get lyrics, enhanced metadata, and more features';
'Hubungkan akun jika diperlukan dan selalu perbarui extension';
@override
String get tutorialSettingsTitle => 'Customize Your Experience';
@override
String get tutorialSettingsDesc =>
'Personalize the app in Settings to match your preferences.';
'Sesuaikan unduhan, pemutaran, perilaku Perpustakaan, tampilan, dan penyimpanan.';
@override
String get tutorialSettingsTip1 =>
'Change download location and folder organization';
'Ubah lokasi unduhan dan pengaturan folder';
@override
String get tutorialSettingsTip2 =>
'Set default audio quality and format preferences';
'Atur kualitas, unduhan bersamaan, nama berkas, dan konversi';
@override
String get tutorialSettingsTip3 => 'Customize app theme and appearance';
String get tutorialSettingsTip3 => 'Sesuaikan tema dan tampilan aplikasi';
@override
String get tutorialReadyMessage =>
'You\'re all set! Start downloading your favorite music now.';
'Semua siap. Pilih extension, lalu cari musik atau tempel tautan yang didukung.';
@override
String get libraryForceFullScan => 'Force Full Scan';
+3 -4
View File
@@ -469,7 +469,7 @@ class AppLocalizationsJa extends AppLocalizations {
'iCloud Drive is not supported. Please use the app Documents folder.';
@override
String get setupDownloadInFlac => 'Spotify のトラックを FLAC でダウンロード';
String get setupDownloadInFlac => 'ロスレス/ハイレゾ音質で音楽をダウンロード';
@override
String get setupStorageGranted => 'ストレージの権限が許可されました!';
@@ -2105,15 +2105,14 @@ class AppLocalizationsJa extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'SpotiFLAC へようこそ!';
String get tutorialWelcomeTitle => 'SpotiFLAC Mobile へようこそ!';
@override
String get tutorialWelcomeDesc =>
'Let\'s learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.';
@override
String get tutorialWelcomeTip1 =>
'Download music from Spotify, Deezer, or paste any supported URL';
String get tutorialWelcomeTip1 => 'インストール済みの拡張機能で検索するか、対応リンクを貼り付けます';
@override
String get tutorialWelcomeTip2 =>
+3 -4
View File
@@ -458,7 +458,7 @@ class AppLocalizationsKo extends AppLocalizations {
'iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요';
@override
String get setupDownloadInFlac => 'Spotify 음악을 FLAC 형식으로 다운로드하세요';
String get setupDownloadInFlac => '무손실 및 Hi-Res 음질로 음악을 다운로드하세요';
@override
String get setupStorageGranted => '저장소 접근 권한이 부여되었습니다!';
@@ -2074,15 +2074,14 @@ class AppLocalizationsKo extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'SpotiFLAC에 오신 것을 환영합니다!';
String get tutorialWelcomeTitle => 'SpotiFLAC Mobile에 오신 것을 환영합니다!';
@override
String get tutorialWelcomeDesc =>
'좋아하는 음악을 무손실 음질로 다운로드하는 방법을 알아보겠습니다. 이 간단한 튜토리얼은 기본 사항을 보여줍니다';
@override
String get tutorialWelcomeTip1 =>
'Spotify, Deezer 또는 지원되는 URL에서 음악을 다운로드할 수 있습니다';
String get tutorialWelcomeTip1 => '설치된 확장 프로그램으로 검색하거나 지원되는 링크를 붙여넣으세요';
@override
String get tutorialWelcomeTip2 =>
+8 -6
View File
@@ -472,7 +472,8 @@ class AppLocalizationsPt extends AppLocalizations {
'iCloud Drive is not supported. Please use the app Documents folder.';
@override
String get setupDownloadInFlac => 'Download Spotify tracks in FLAC';
String get setupDownloadInFlac =>
'Baixe músicas com qualidade sem perdas e Hi-Res';
@override
String get setupStorageGranted => 'Storage Permission Granted!';
@@ -2116,7 +2117,7 @@ class AppLocalizationsPt extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!';
String get tutorialWelcomeTitle => 'Boas-vindas ao SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -2124,7 +2125,7 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Download music from Spotify, Deezer, or paste any supported URL';
'Pesquise com uma extensão instalada ou cole um link compatível';
@override
String get tutorialWelcomeTip2 =>
@@ -5418,7 +5419,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
'O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.';
@override
String get setupDownloadInFlac => 'Baixar faixas do Spotify em FLAC';
String get setupDownloadInFlac =>
'Baixe músicas com qualidade sem perdas e Hi-Res';
@override
String get setupStorageGranted => 'Permissão de Armazenamento Concedida!';
@@ -6986,7 +6988,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
}
@override
String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!';
String get tutorialWelcomeTitle => 'Boas-vindas ao SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -6994,7 +6996,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
@override
String get tutorialWelcomeTip1 =>
'Download music from Spotify, Deezer, or paste any supported URL';
'Pesquise com uma extensão instalada ou cole um link compatível';
@override
String get tutorialWelcomeTip2 =>
+4 -3
View File
@@ -475,7 +475,8 @@ class AppLocalizationsRu extends AppLocalizations {
'iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.';
@override
String get setupDownloadInFlac => 'Скачать Spotify треки во FLAC';
String get setupDownloadInFlac =>
'Скачивайте музыку в качестве Lossless и Hi-Res';
@override
String get setupStorageGranted => 'Доступ к хранилищу предоставлен!';
@@ -2144,7 +2145,7 @@ class AppLocalizationsRu extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Добро пожаловать в SpotiFLAC!';
String get tutorialWelcomeTitle => 'Добро пожаловать в SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -2152,7 +2153,7 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL';
'Ищите через установленное расширение или вставьте поддерживаемую ссылку';
@override
String get tutorialWelcomeTip2 =>
+4 -3
View File
@@ -478,7 +478,8 @@ class AppLocalizationsTr extends AppLocalizations {
'iCloud Drive desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.';
@override
String get setupDownloadInFlac => 'Spotify şarkılarını FLAC olarak indirin';
String get setupDownloadInFlac =>
'Müziği kayıpsız ve Hi-Res kalitesinde indirin';
@override
String get setupStorageGranted => 'Depolama İzni Verildi!';
@@ -2140,7 +2141,7 @@ class AppLocalizationsTr extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'SpotiFLAC\'e hoş geldiniz!';
String get tutorialWelcomeTitle => 'SpotiFLAC Mobile\'a hoş geldiniz!';
@override
String get tutorialWelcomeDesc =>
@@ -2148,7 +2149,7 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Spotify, Deezer\'dan müzik indirin veya desteklenen herhangi bir URL\'yi yapıştırın';
'Yüklü bir uzantıyla arama yapın veya desteklenen bir bağlantı yapıştırın';
@override
String get tutorialWelcomeTip2 =>
+4 -3
View File
@@ -479,7 +479,8 @@ class AppLocalizationsUk extends AppLocalizations {
'iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.';
@override
String get setupDownloadInFlac => 'Завантажити треки Spotify у форматі FLAC';
String get setupDownloadInFlac =>
'Завантажуйте музику в якості Lossless та Hi-Res';
@override
String get setupStorageGranted => 'Дозвіл на зберігання надано!';
@@ -2147,7 +2148,7 @@ class AppLocalizationsUk extends AppLocalizations {
}
@override
String get tutorialWelcomeTitle => 'Ласкаво просимо до SpotiFLAC!';
String get tutorialWelcomeTitle => 'Ласкаво просимо до SpotiFLAC Mobile!';
@override
String get tutorialWelcomeDesc =>
@@ -2155,7 +2156,7 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get tutorialWelcomeTip1 =>
'Завантажуйте музику зі Spotify, Deezer або вставляйте будь-яку підтримувану URL-адресу';
'Шукайте за допомогою встановленого розширення або вставте підтримуване посилання';
@override
String get tutorialWelcomeTip2 =>
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Spotify Titel in FLAC herunterladen",
"setupDownloadInFlac": "Musik in verlustfreier und Hi-Res-Qualität herunterladen",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Willkommen bei SpotiFLAC!",
"tutorialWelcomeTitle": "Willkommen bei SpotiFLAC Mobile!",
"a11ySelectAlbum": "Wähle Album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Lade Musik von Spotify, Deezer herunter oder jeden unterstützten Link einfügen",
"tutorialWelcomeTip1": "Mit einer installierten Erweiterung suchen oder einen unterstützten Link einfügen",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+17 -17
View File
@@ -606,7 +606,7 @@
"@setupIcloudNotSupported": {
"description": "Error when user selects iCloud Drive on iOS"
},
"setupDownloadInFlac": "Download Spotify tracks in FLAC",
"setupDownloadInFlac": "Download music in lossless and Hi-Res quality",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -2799,19 +2799,19 @@
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
"tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.",
"tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.",
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Search music or paste a link from any source your installed extensions support",
"tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
"tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions",
"tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider",
"@tutorialWelcomeTip2": {
"description": "Tutorial welcome tip 2"
},
"tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding",
"tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically",
"@tutorialWelcomeTip3": {
"description": "Tutorial welcome tip 3"
},
@@ -2819,7 +2819,7 @@
"@tutorialSearchTitle": {
"description": "Tutorial search page title"
},
"tutorialSearchDesc": "There are two easy ways to find music you want to download.",
"tutorialSearchDesc": "Search with your selected extension or paste a supported music link.",
"@tutorialSearchDesc": {
"description": "Tutorial search page description"
},
@@ -2827,7 +2827,7 @@
"@tutorialDownloadTitle": {
"description": "Tutorial download page title"
},
"tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.",
"tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.",
"@tutorialDownloadDesc": {
"description": "Tutorial download page description"
},
@@ -2835,19 +2835,19 @@
"@tutorialLibraryTitle": {
"description": "Tutorial library page title"
},
"tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.",
"tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.",
"@tutorialLibraryDesc": {
"description": "Tutorial library page description"
},
"tutorialLibraryTip1": "View download progress and queue in the Library tab",
"tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue",
"@tutorialLibraryTip1": {
"description": "Tutorial library tip 1"
},
"tutorialLibraryTip2": "Tap any track to play it with your music player",
"tutorialLibraryTip2": "Tap a track to play it with the built-in player",
"@tutorialLibraryTip2": {
"description": "Tutorial library tip 2"
},
"tutorialLibraryTip3": "Switch between list and grid view for better browsing",
"tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views",
"@tutorialLibraryTip3": {
"description": "Tutorial library tip 3"
},
@@ -2855,7 +2855,7 @@
"@tutorialExtensionsTitle": {
"description": "Tutorial extensions page title"
},
"tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.",
"tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.",
"@tutorialExtensionsDesc": {
"description": "Tutorial extensions page description"
},
@@ -2863,11 +2863,11 @@
"@tutorialExtensionsTip1": {
"description": "Tutorial extensions tip 1"
},
"tutorialExtensionsTip2": "Add new download providers or search sources",
"tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks",
"@tutorialExtensionsTip2": {
"description": "Tutorial extensions tip 2"
},
"tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features",
"tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date",
"@tutorialExtensionsTip3": {
"description": "Tutorial extensions tip 3"
},
@@ -2875,7 +2875,7 @@
"@tutorialSettingsTitle": {
"description": "Tutorial settings page title"
},
"tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.",
"tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.",
"@tutorialSettingsDesc": {
"description": "Tutorial settings page description"
},
@@ -2883,7 +2883,7 @@
"@tutorialSettingsTip1": {
"description": "Tutorial settings tip 1"
},
"tutorialSettingsTip2": "Set default audio quality and format preferences",
"tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences",
"@tutorialSettingsTip2": {
"description": "Tutorial settings tip 2"
},
@@ -2891,7 +2891,7 @@
"@tutorialSettingsTip3": {
"description": "Tutorial settings tip 3"
},
"tutorialReadyMessage": "You're all set! Start downloading your favorite music now.",
"tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.",
"@tutorialReadyMessage": {
"description": "Tutorial completion message"
},
+3 -3
View File
@@ -438,7 +438,7 @@
"@setupIosEmptyFolderWarning": {
"description": "iOS folder selection warning"
},
"setupDownloadInFlac": "Download Spotify tracks in FLAC",
"setupDownloadInFlac": "Descarga música con calidad sin pérdida y Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -2514,7 +2514,7 @@
}
}
},
"tutorialWelcomeTitle": "Welcome to SpotiFLAC!",
"tutorialWelcomeTitle": "¡Te damos la bienvenida a SpotiFLAC Mobile!",
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
@@ -2522,7 +2522,7 @@
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL",
"tutorialWelcomeTip1": "Busca con una extensión instalada o pega un enlace compatible",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -606,7 +606,7 @@
"@setupIcloudNotSupported": {
"description": "Error when user selects iCloud Drive on iOS"
},
"setupDownloadInFlac": "Descargar pistas de Spotify en FLAC",
"setupDownloadInFlac": "Descarga música con calidad sin pérdida y Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -2636,7 +2636,7 @@
}
}
},
"tutorialWelcomeTitle": "¡Bienvenido a SpotiFLAC!",
"tutorialWelcomeTitle": "¡Te damos la bienvenida a SpotiFLAC Mobile!",
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
@@ -2644,7 +2644,7 @@
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Descarga música de Spotify, Deezer, o pega cualquier URL soportada",
"tutorialWelcomeTip1": "Busca con una extensión instalada o pega un enlace compatible",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Télécharger des morceaux Spotify au format FLAC",
"setupDownloadInFlac": "Téléchargez de la musique en qualité sans perte et Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Bienvenue sur SpotiFLAC !",
"tutorialWelcomeTitle": "Bienvenue dans SpotiFLAC Mobile !",
"a11ySelectAlbum": "Sélectionnez l'album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Téléchargez de la musique depuis Spotify ou Deezer, ou collez n'importe quelle URL prise en charge",
"tutorialWelcomeTip1": "Recherchez avec une extension installée ou collez un lien compatible",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+21 -21
View File
@@ -382,7 +382,7 @@
"@trackReEnrichFieldCover": {
"description": "Checkbox label for cover art field in re-enrich"
},
"tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features",
"tutorialExtensionsTip3": "Hubungkan akun jika diperlukan dan selalu perbarui extension",
"@tutorialExtensionsTip3": {
"description": "Tutorial extensions tip 3"
},
@@ -1456,7 +1456,7 @@
"@replayGainBatchConfirmTitle": {
"description": "Title of the batch ReplayGain confirmation dialog"
},
"tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions",
"tutorialExtensionsTip1": "Telusuri tab Repo untuk menemukan extension yang berguna",
"@tutorialExtensionsTip1": {
"description": "Tutorial extensions tip 1"
},
@@ -1554,7 +1554,7 @@
"@searchSortTitleZA": {
"description": "Sort option - title descending"
},
"tutorialLibraryTip2": "Tap any track to play it with your music player",
"tutorialLibraryTip2": "Ketuk lagu untuk memutarnya dengan pemutar bawaan",
"@tutorialLibraryTip2": {
"description": "Tutorial library tip 2"
},
@@ -1933,7 +1933,7 @@
"@dialogClearHistoryTitle": {
"description": "Dialog title - clear download history"
},
"tutorialSettingsTip1": "Change download location and folder organization",
"tutorialSettingsTip1": "Ubah lokasi unduhan dan pengaturan folder",
"@tutorialSettingsTip1": {
"description": "Tutorial settings tip 1"
},
@@ -2294,7 +2294,7 @@
"@nowPlayingNothingPlaying": {
"description": "Empty state when no track is currently playing"
},
"tutorialDownloadDesc": "Mengunduh musik itu mudah dan cepat. Begini cara kerjanya.",
"tutorialDownloadDesc": "Pilih kualitas yang tersedia, mulai unduhan, lalu pantau progresnya dalam antrean.",
"@tutorialDownloadDesc": {
"description": "Tutorial download page description"
},
@@ -2934,7 +2934,7 @@
}
},
"dialogDisableHistoryTitle": "Turn off download history?",
"tutorialWelcomeTip3": "Penyematan metadata, sampul album, dan lirik secara otomatis",
"tutorialWelcomeTip3": "Sematkan metadata, sampul, lirik, dan informasi rilisan secara otomatis",
"@tutorialWelcomeTip3": {
"description": "Tutorial welcome tip 3"
},
@@ -3459,7 +3459,7 @@
"@dialogDelete": {
"description": "Dialog button - delete item"
},
"tutorialLibraryDesc": "Semua musik yang Anda unduh tersusun rapi di tab Perpustakaan.",
"tutorialLibraryDesc": "Musik yang diunduh dan dipindai dari perangkat tersusun rapi di Perpustakaan.",
"@tutorialLibraryDesc": {
"description": "Tutorial library page description"
},
@@ -3573,7 +3573,7 @@
},
"libraryFilterMetadataMissingAlbumArtist": "Missing album artist",
"audioAnalysisNoClipping": "No clipping",
"tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.",
"tutorialSettingsDesc": "Sesuaikan unduhan, pemutaran, perilaku Perpustakaan, tampilan, dan penyimpanan.",
"@tutorialSettingsDesc": {
"description": "Tutorial settings page description"
},
@@ -3629,7 +3629,7 @@
"@dialogClearAll": {
"description": "Dialog title - clear all items"
},
"tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.",
"tutorialExtensionsDesc": "Extension menambahkan pencarian, unduhan, metadata, lirik, dan integrasi lainnya.",
"@tutorialExtensionsDesc": {
"description": "Tutorial extensions page description"
},
@@ -3773,7 +3773,7 @@
"@editMetadataAutoFillFetch": {
"description": "Button label to fetch online metadata and fill selected fields"
},
"tutorialSearchDesc": "Ada dua cara mudah untuk menemukan musik yang ingin Anda unduh.",
"tutorialSearchDesc": "Cari dengan extension pilihan Anda atau tempel tautan musik yang didukung.",
"@sectionService": {
"description": "Settings section header"
},
@@ -4012,7 +4012,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC",
"setupDownloadInFlac": "Unduh musik dalam kualitas lossless dan Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -4881,7 +4881,7 @@
"@channelStable": {
"description": "Update channel - stable releases"
},
"tutorialSettingsTip3": "Customize app theme and appearance",
"tutorialSettingsTip3": "Sesuaikan tema dan tampilan aplikasi",
"setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files",
"a11yPlayTrackByArtist": "Play {trackName} by {artistName}",
"@a11yPlayTrackByArtist": {
@@ -5023,8 +5023,8 @@
}
},
"setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.",
"tutorialReadyMessage": "You're all set! Start downloading your favorite music now.",
"tutorialLibraryTip3": "Switch between list and grid view for better browsing",
"tutorialReadyMessage": "Semua siap. Pilih extension, lalu cari musik atau tempel tautan yang didukung.",
"tutorialLibraryTip3": "Telusuri lagu, album, dan playlist dalam tampilan daftar atau grid",
"selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}",
"appearanceThemeLight": "Terang",
"queueEmptyHistorySubtitle": "Downloaded tracks will appear here",
@@ -5184,11 +5184,11 @@
"description": "Chip label for date field in auto-fill selector"
},
"downloadUsePrimaryArtistOnly": "Hanya artis utama untuk folder",
"tutorialExtensionsTip2": "Add new download providers or search sources",
"tutorialExtensionsTip2": "Pilih provider untuk pencarian, unduhan, metadata, dan fallback",
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Selamat Datang di SpotiFLAC!",
"tutorialWelcomeTitle": "Selamat Datang di SpotiFLAC Mobile!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5443,7 +5443,7 @@
"actionSelectAll": "Pilih Semua",
"settingsDownloadNetworkSubtitle": "Pilih jaringan mana yang akan digunakan untuk mengunduh. Jika diatur ke Hanya WiFi, unduhan akan berhenti sementara dan menggunakan data seluler.",
"downloadFolderOrganization": "Organisasi Folder",
"tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions",
"tutorialWelcomeTip2": "Pilih kualitas audio yang disediakan oleh provider unduhan",
"@tutorialWelcomeTip2": {
"description": "Tutorial welcome tip 2"
},
@@ -5499,7 +5499,7 @@
"description": "Subtitle when all files access is enabled"
},
"extensionsSearchProvider": "Provider Pencarian",
"tutorialWelcomeDesc": "Mari kita pelajari cara mengunduh musik favorit Anda dalam kualitas lossless. Tutorial singkat ini akan menunjukkan dasar-dasarnya.",
"tutorialWelcomeDesc": "Pelajari cara menemukan musik dengan extension, memilih kualitas, dan mengelola unduhan di SpotiFLAC Mobile.",
"selectionBatchConvertConfirmTitle": "Batch Convert",
"extensionMetadataProvider": "Provider Metadata",
"queueDownloadedFileMissing": "Downloaded file missing",
@@ -5507,7 +5507,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Unduh musik dari Spotify, Deezer, atau tempel URL yang didukung",
"tutorialWelcomeTip1": "Cari dengan extension terpasang atau tempel tautan musik yang didukung",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
@@ -5639,7 +5639,7 @@
"description": "Snackbar - lyrics saved to file"
},
"editMetadataFieldDiscTotal": "Disc Total",
"tutorialLibraryTip1": "View download progress and queue in the Library tab",
"tutorialLibraryTip1": "Kelola unduhan aktif, tertunda, dan selesai dari antrean Perpustakaan",
"playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}",
"downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder",
"@downloadFallbackExtensionsSubtitle": {
@@ -5911,7 +5911,7 @@
"extensionServiceStatus": "Service Status",
"dateWeeksAgo": "{count} minggu lalu",
"historyFilterSingles": "Single",
"tutorialSettingsTip2": "Set default audio quality and format preferences",
"tutorialSettingsTip2": "Atur kualitas, unduhan bersamaan, nama berkas, dan konversi",
"trackLyricsSaved": "Lyrics saved to {fileName}",
"cacheClearAllConfirmTitle": "Clear all cache?",
"noTracksFoundForAlbum": "No tracks found for this album",
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Spotify のトラックを FLAC でダウンロード",
"setupDownloadInFlac": "ロスレス/ハイレゾ音質で音楽をダウンロード",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "SpotiFLAC へようこそ!",
"tutorialWelcomeTitle": "SpotiFLAC Mobile へようこそ!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL",
"tutorialWelcomeTip1": "インストール済みの拡張機能で検索するか、対応リンクを貼り付けます",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -606,7 +606,7 @@
"@setupIcloudNotSupported": {
"description": "Error when user selects iCloud Drive on iOS"
},
"setupDownloadInFlac": "Spotify 음악을 FLAC 형식으로 다운로드하세요",
"setupDownloadInFlac": "무손실 및 Hi-Res 음질로 음악을 다운로드하세요",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -2678,7 +2678,7 @@
}
}
},
"tutorialWelcomeTitle": "SpotiFLAC에 오신 것을 환영합니다!",
"tutorialWelcomeTitle": "SpotiFLAC Mobile에 오신 것을 환영합니다!",
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
@@ -2686,7 +2686,7 @@
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Spotify, Deezer 또는 지원되는 URL에서 음악을 다운로드할 수 있습니다",
"tutorialWelcomeTip1": "설치된 확장 프로그램으로 검색하거나 지원되는 링크를 붙여넣으세요",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -438,7 +438,7 @@
"@setupIosEmptyFolderWarning": {
"description": "iOS folder selection warning"
},
"setupDownloadInFlac": "Download Spotify tracks in FLAC",
"setupDownloadInFlac": "Baixe músicas com qualidade sem perdas e Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -2514,7 +2514,7 @@
}
}
},
"tutorialWelcomeTitle": "Welcome to SpotiFLAC!",
"tutorialWelcomeTitle": "Boas-vindas ao SpotiFLAC Mobile!",
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
@@ -2522,7 +2522,7 @@
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL",
"tutorialWelcomeTip1": "Pesquise com uma extensão instalada ou cole um link compatível",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Baixar faixas do Spotify em FLAC",
"setupDownloadInFlac": "Baixe músicas com qualidade sem perdas e Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Welcome to SpotiFLAC!",
"tutorialWelcomeTitle": "Boas-vindas ao SpotiFLAC Mobile!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL",
"tutorialWelcomeTip1": "Pesquise com uma extensão instalada ou cole um link compatível",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Скачать Spotify треки во FLAC",
"setupDownloadInFlac": "Скачивайте музыку в качестве Lossless и Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC!",
"tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC Mobile!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL",
"tutorialWelcomeTip1": "Ищите через установленное расширение или вставьте поддерживаемую ссылку",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Spotify şarkılarını FLAC olarak indirin",
"setupDownloadInFlac": "Müziği kayıpsız ve Hi-Res kalitesinde indirin",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "SpotiFLAC'e hoş geldiniz!",
"tutorialWelcomeTitle": "SpotiFLAC Mobile'a hoş geldiniz!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Spotify, Deezer'dan müzik indirin veya desteklenen herhangi bir URL'yi yapıştırın",
"tutorialWelcomeTip1": "Yüklü bir uzantıyla arama yapın veya desteklenen bir bağlantı yapıştırın",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+3 -3
View File
@@ -3948,7 +3948,7 @@
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"setupDownloadInFlac": "Завантажити треки Spotify у форматі FLAC",
"setupDownloadInFlac": "Завантажуйте музику в якості Lossless та Hi-Res",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
@@ -5082,7 +5082,7 @@
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"tutorialWelcomeTitle": "Ласкаво просимо до SpotiFLAC!",
"tutorialWelcomeTitle": "Ласкаво просимо до SpotiFLAC Mobile!",
"a11ySelectAlbum": "Select album {albumName}",
"@a11ySelectAlbum": {
"description": "Accessibility label for selecting an album",
@@ -5396,7 +5396,7 @@
"@downloadAppleQqMultiPerson": {
"description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music"
},
"tutorialWelcomeTip1": "Завантажуйте музику зі Spotify, Deezer або вставляйте будь-яку підтримувану URL-адресу",
"tutorialWelcomeTip1": "Шукайте за допомогою встановленого розширення або вставте підтримуване посилання",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
+1 -7
View File
@@ -1063,18 +1063,12 @@ extension _QueueTabItemWidgets on _QueueTabState {
valueListenable: fileExistsListenable,
builder: (context, fileExists, child) {
if (fileExists) {
return IconButton.filled(
return TrackGridPlayButton(
tooltip: context.l10n.a11yPlayTrackByArtist(
item.trackName,
item.artistName,
),
onPressed: () => _playLibraryItem(item, libraryItems),
iconSize: 18,
icon: const Icon(Icons.play_arrow),
style: IconButton.styleFrom(
minimumSize: Size.square(context.tokens.minTouchTarget),
padding: EdgeInsets.zero,
),
);
}
return Tooltip(
+4 -4
View File
@@ -146,9 +146,9 @@ class _TutorialScreenState extends ConsumerState<TutorialScreen> {
title: l10n.tutorialWelcomeTitle,
description: l10n.tutorialWelcomeDesc,
content: _buildFeatureList(context, [
(Icons.music_note_rounded, l10n.tutorialWelcomeTip1),
(Icons.travel_explore_rounded, l10n.tutorialWelcomeTip1),
(Icons.high_quality_rounded, l10n.tutorialWelcomeTip2),
(Icons.download_rounded, l10n.tutorialWelcomeTip3),
(Icons.auto_awesome_rounded, l10n.tutorialWelcomeTip3),
]),
),
_TutorialPage(
@@ -174,7 +174,7 @@ class _TutorialScreenState extends ConsumerState<TutorialScreen> {
title: l10n.tutorialLibraryTitle,
description: l10n.tutorialLibraryDesc,
content: _buildFeatureList(context, [
(Icons.offline_pin_rounded, l10n.tutorialLibraryTip1),
(Icons.downloading_rounded, l10n.tutorialLibraryTip1),
(Icons.play_circle_fill, l10n.tutorialLibraryTip2),
(Icons.grid_view_rounded, l10n.tutorialLibraryTip3),
]),
@@ -191,7 +191,7 @@ class _TutorialScreenState extends ConsumerState<TutorialScreen> {
Icons.add_circle_outline_rounded,
l10n.tutorialExtensionsTip2,
),
(Icons.lyrics_rounded, l10n.tutorialExtensionsTip3),
(Icons.sync_rounded, l10n.tutorialExtensionsTip3),
]),
),
_TutorialPage(
+44
View File
@@ -269,6 +269,50 @@ class TrackGridCard extends StatelessWidget {
}
}
/// Compact play affordance for a track cover with a full-size touch target.
///
/// The visible circle intentionally stays smaller than its hit box so it does
/// not obscure the artwork while remaining accessible to touch users.
class TrackGridPlayButton extends StatelessWidget {
const TrackGridPlayButton({
super.key,
required this.tooltip,
required this.onPressed,
});
static const double visualDiameter = 36;
final String tooltip;
final VoidCallback onPressed;
@override
Widget build(BuildContext context) {
final tokens = context.tokens;
final colorScheme = Theme.of(context).colorScheme;
return IconButton(
tooltip: tooltip,
onPressed: onPressed,
padding: EdgeInsets.zero,
alignment: Alignment.bottomRight,
style: IconButton.styleFrom(
minimumSize: Size.square(tokens.minTouchTarget),
padding: EdgeInsets.zero,
),
icon: Container(
width: visualDiameter,
height: visualDiameter,
alignment: Alignment.center,
decoration: BoxDecoration(
color: colorScheme.primary,
shape: BoxShape.circle,
),
child: Icon(Icons.play_arrow, size: 18, color: colorScheme.onPrimary),
),
);
}
}
/// Square artwork placeholder shared by every track row and grid cell.
///
/// The `Container` + `surfaceContainerHighest` + `music_note` combination was
+36
View File
@@ -581,6 +581,42 @@ void main() {
await tester.tap(find.byType(InkWell));
expect(taps, 1);
});
testWidgets('grid play action keeps a compact visual and 48dp hit box', (
tester,
) async {
var taps = 0;
await tester.pumpWidget(
host(
Align(
child: TrackGridPlayButton(
tooltip: 'Play Song by Artist',
onPressed: () => taps++,
),
),
),
);
final action = find.byType(TrackGridPlayButton);
final button = find.descendant(
of: action,
matching: find.byType(IconButton),
);
final visual = find.descendant(
of: action,
matching: find.byType(Container),
);
expect(tester.getSize(button), const Size.square(48));
expect(
tester.getSize(visual),
const Size.square(TrackGridPlayButton.visualDiameter),
);
expect(tester.getBottomRight(visual), tester.getBottomRight(button));
await tester.tap(button);
expect(taps, 1);
});
});
group('selection bar', () {
+41
View File
@@ -0,0 +1,41 @@
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:spotiflac_android/l10n/app_localizations.dart';
void main() {
group('setup and tutorial copy', () {
test('uses the current app name and extension-based workflow', () {
for (final locale in AppLocalizations.supportedLocales) {
final strings = lookupAppLocalizations(locale);
final setupTagline = strings.setupDownloadInFlac.toLowerCase();
final firstTip = strings.tutorialWelcomeTip1.toLowerCase();
expect(
strings.tutorialWelcomeTitle,
contains('SpotiFLAC Mobile'),
reason: 'Unexpected app name for $locale',
);
expect(
setupTagline,
isNot(contains('spotify')),
reason: 'Provider-specific setup tagline for $locale',
);
expect(
firstTip,
isNot(anyOf(contains('spotify'), contains('deezer'))),
reason: 'Provider-specific tutorial tip for $locale',
);
}
});
test('English and Indonesian describe the current feature set', () {
final english = lookupAppLocalizations(const Locale('en'));
final indonesian = lookupAppLocalizations(const Locale('id'));
expect(english.tutorialWelcomeDesc, contains('extensions'));
expect(english.tutorialLibraryTip2, contains('built-in player'));
expect(indonesian.tutorialWelcomeDesc, contains('extension'));
expect(indonesian.tutorialLibraryTip2, contains('pemutar bawaan'));
});
});
}