diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index ee90fd36..9a6c6921 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -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 diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 0bfd1668..e3544a68 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -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 => diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 47568ee4..54da7258 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -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'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 9170226d..539ef1e0 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -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 => diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 863b004e..7c0dde3f 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -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 => diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index e0efff99..7a4a4d00 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -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'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index d4d5d7c6..1c0d1e5d 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -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 => diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 1a58fc8a..c2ac4cbd 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -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 => diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 6ac01499..604a69df 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -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 => diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 05900e79..9fe5dad0 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -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 => diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index 1b9d278d..329300c1 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -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 => diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index f8b8bfff..bd214764 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -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 => diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 5de4dc03..464ca826 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -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" }, diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 1e4c2214..186e7dff 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -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" }, diff --git a/lib/l10n/arb/app_es.arb b/lib/l10n/arb/app_es.arb index 46088232..0913a72e 100644 --- a/lib/l10n/arb/app_es.arb +++ b/lib/l10n/arb/app_es.arb @@ -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" }, diff --git a/lib/l10n/arb/app_es_ES.arb b/lib/l10n/arb/app_es_ES.arb index a0cbbd5e..a2744408 100644 --- a/lib/l10n/arb/app_es_ES.arb +++ b/lib/l10n/arb/app_es_ES.arb @@ -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" }, diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index 54902c54..46a1cbe8 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -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" }, diff --git a/lib/l10n/arb/app_id.arb b/lib/l10n/arb/app_id.arb index 33149945..aa47fc0c 100644 --- a/lib/l10n/arb/app_id.arb +++ b/lib/l10n/arb/app_id.arb @@ -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", diff --git a/lib/l10n/arb/app_ja.arb b/lib/l10n/arb/app_ja.arb index a82497b6..3a696f5a 100644 --- a/lib/l10n/arb/app_ja.arb +++ b/lib/l10n/arb/app_ja.arb @@ -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" }, diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index d687b555..6ca17306 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -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" }, diff --git a/lib/l10n/arb/app_pt.arb b/lib/l10n/arb/app_pt.arb index c4e97cd1..e697a029 100644 --- a/lib/l10n/arb/app_pt.arb +++ b/lib/l10n/arb/app_pt.arb @@ -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" }, diff --git a/lib/l10n/arb/app_pt_PT.arb b/lib/l10n/arb/app_pt_PT.arb index 5802990f..1ddf2329 100644 --- a/lib/l10n/arb/app_pt_PT.arb +++ b/lib/l10n/arb/app_pt_PT.arb @@ -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" }, diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index 2ce23872..957cc666 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -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" }, diff --git a/lib/l10n/arb/app_tr.arb b/lib/l10n/arb/app_tr.arb index 80f80062..2ba88039 100644 --- a/lib/l10n/arb/app_tr.arb +++ b/lib/l10n/arb/app_tr.arb @@ -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" }, diff --git a/lib/l10n/arb/app_uk.arb b/lib/l10n/arb/app_uk.arb index 5c27b5df..75e6024f 100644 --- a/lib/l10n/arb/app_uk.arb +++ b/lib/l10n/arb/app_uk.arb @@ -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" }, diff --git a/lib/screens/queue_tab_item_widgets.dart b/lib/screens/queue_tab_item_widgets.dart index 3de30c49..fce840bc 100644 --- a/lib/screens/queue_tab_item_widgets.dart +++ b/lib/screens/queue_tab_item_widgets.dart @@ -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( diff --git a/lib/screens/tutorial_screen.dart b/lib/screens/tutorial_screen.dart index edac4cf3..0b604b1a 100644 --- a/lib/screens/tutorial_screen.dart +++ b/lib/screens/tutorial_screen.dart @@ -146,9 +146,9 @@ class _TutorialScreenState extends ConsumerState { 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 { 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 { Icons.add_circle_outline_rounded, l10n.tutorialExtensionsTip2, ), - (Icons.lyrics_rounded, l10n.tutorialExtensionsTip3), + (Icons.sync_rounded, l10n.tutorialExtensionsTip3), ]), ), _TutorialPage( diff --git a/lib/widgets/track_card.dart b/lib/widgets/track_card.dart index 38f67505..e04e3a88 100644 --- a/lib/widgets/track_card.dart +++ b/lib/widgets/track_card.dart @@ -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 diff --git a/test/design_system_test.dart b/test/design_system_test.dart index 6ad8a100..4253ca2a 100644 --- a/test/design_system_test.dart +++ b/test/design_system_test.dart @@ -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', () { diff --git a/test/tutorial_copy_test.dart b/test/tutorial_copy_test.dart new file mode 100644 index 00000000..7d307b9d --- /dev/null +++ b/test/tutorial_copy_test.dart @@ -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')); + }); + }); +}