feat(l10n): merge Crowdin updates, enable Korean at 98%

Merge origin/l10n_main (PR #428) with a per-key three-way resolution:
Crowdin values win only where main did not change the key since the
last sync, so the unused-key removal, store->repo wording sweep, and
ICU plural fixes survive. Korean is restored at 98% completion and
mapped again in crowdin.yml and both language pickers; ar/hi/nl/zh-CN/
zh-TW stay dropped (37% and below).
This commit is contained in:
zarzet
2026-07-26 18:12:25 +07:00
26 changed files with 12292 additions and 183 deletions
+2 -1
View File
@@ -6,7 +6,7 @@ files:
# Keys MUST be the project's Crowdin language ids; values are the
# %locale% suffix used in app_%locale%.arb (underscores so Flutter
# gen-l10n parses them — hyphenated filenames break gen-l10n).
# Locales below the 70% translation threshold (ar, hi, ko, nl,
# Locales below the 70% translation threshold (ar, hi, nl,
# zh-CN, zh-TW) are unmapped so `crowdin pull` doesn't recreate
# their arb files; re-add a mapping line when one qualifies.
de: de
@@ -14,6 +14,7 @@ files:
fr: fr
id: id
ja: ja
ko: ko
pt-PT: pt_PT
ru: ru
tr: tr
+17
View File
@@ -11,6 +11,7 @@ import 'app_localizations_es.dart';
import 'app_localizations_fr.dart';
import 'app_localizations_id.dart';
import 'app_localizations_ja.dart';
import 'app_localizations_ko.dart';
import 'app_localizations_pt.dart';
import 'app_localizations_ru.dart';
import 'app_localizations_tr.dart';
@@ -109,6 +110,7 @@ abstract class AppLocalizations {
Locale('fr'),
Locale('id'),
Locale('ja'),
Locale('ko'),
Locale('pt'),
Locale('pt', 'PT'),
Locale('ru'),
@@ -1256,6 +1258,18 @@ abstract class AppLocalizations {
/// **'Export failed'**
String get collectionExportM3uFailed;
/// Track option and sheet title listing streaming platforms where the track can be opened
///
/// In en, this message translates to:
/// **'Open on...'**
String get trackOpenOn;
/// Shown in the Open on sheet when song.link returns no links
///
/// In en, this message translates to:
/// **'No platform links found for this track.'**
String get trackOpenOnNoLinks;
/// Snackbar - track added to download queue
///
/// In en, this message translates to:
@@ -7682,6 +7696,7 @@ class _AppLocalizationsDelegate
'fr',
'id',
'ja',
'ko',
'pt',
'ru',
'tr',
@@ -7727,6 +7742,8 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
return AppLocalizationsId();
case 'ja':
return AppLocalizationsJa();
case 'ko':
return AppLocalizationsKo();
case 'pt':
return AppLocalizationsPt();
case 'ru':
+18 -12
View File
@@ -563,10 +563,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get dialogDownload => 'Herunterladen';
@override
String get previewPlay => 'Play preview';
String get previewPlay => 'Vorschau abspielen';
@override
String get previewStop => 'Stop preview';
String get previewStop => 'Vorschau stoppen';
@override
String get previewUnavailable => 'Preview unavailable';
@@ -653,6 +653,12 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return '\"$trackName\" hinzugefügt';
@@ -966,7 +972,7 @@ class AppLocalizationsDe extends AppLocalizations {
'Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.';
@override
String get logTitle => 'Logs';
String get logTitle => 'Protokolle';
@override
String get logCopied => 'Logs in Zwischenablage kopiert';
@@ -2912,7 +2918,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get backupContentsTitle => 'Backup contents';
@override
String get backupContentsSettings => 'App settings';
String get backupContentsSettings => 'Appeinstellungen';
@override
String backupContentsHistory(int count) {
@@ -3455,7 +3461,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get audioAnalysisAnalyzing => 'Audio wird analysiert...';
@override
String get audioAnalysisSampleRate => 'Sample Rate';
String get audioAnalysisSampleRate => 'Abtastrate';
@override
String get audioAnalysisCodec => 'Codec';
@@ -4361,7 +4367,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get artistReleases => 'Releases';
@override
String get editMetadataSelectNone => 'None';
String get editMetadataSelectNone => 'Keine';
@override
String queueRetryAllFailed(int count) {
@@ -4424,7 +4430,7 @@ class AppLocalizationsDe extends AppLocalizations {
'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.';
@override
String get nowPlayingTitle => 'Now Playing';
String get nowPlayingTitle => 'Jetzt läuft';
@override
String get nowPlayingNothingPlaying => 'Nothing is playing';
@@ -4529,7 +4535,7 @@ class AppLocalizationsDe extends AppLocalizations {
'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius';
@override
String get snackbarPlayingNext => 'Playing next';
String get snackbarPlayingNext => 'Als nächstes';
@override
String get snackbarAddedToQueueGeneric => 'Added to queue';
@@ -4577,7 +4583,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get trackConvertResampler => 'Resampler';
@override
String get trackConvertDitherNone => 'None';
String get trackConvertDitherNone => 'Keine';
@override
String get trackConvertDitherTriangular => 'TPDF';
@@ -4648,10 +4654,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get regionCountryJP => 'Japan';
@override
String get regionCountryKR => 'South Korea';
String get regionCountryKR => 'Südkorea';
@override
String get regionCountryIN => 'India';
String get regionCountryIN => 'Indien';
@override
String get regionCountryID => 'Indonesia';
@@ -4705,7 +4711,7 @@ class AppLocalizationsDe extends AppLocalizations {
'If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.';
@override
String get extensionVerificationClose => 'Close';
String get extensionVerificationClose => 'Schließen';
@override
String get extensionVerificationCopyLink => 'Copy link';
+6
View File
@@ -645,6 +645,12 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Added \"$trackName\" to queue';
+130
View File
@@ -645,6 +645,12 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Added \"$trackName\" to queue';
@@ -5555,6 +5561,14 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
@override
String get updateNewVersionReady => 'Una nueva versión está lista';
@override
String get updateRequiredTitle => 'Update required';
@override
String updateRequiredNotice(int count) {
return 'This version is $count releases behind and is no longer supported. Update to keep using the app.';
}
@override
String get updateCurrent => 'Actual';
@@ -6201,6 +6215,13 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
@override
String get appearanceAmoledDarkSubtitle => 'Fondo negro puro';
@override
String get appearanceHeroAnimations => 'Hero animations';
@override
String get appearanceHeroAnimationsSubtitle =>
'Fly covers between screens, e.g. when opening the player';
@override
String get queueClearAll => 'Eliminar todo';
@@ -6228,6 +6249,21 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
String get settingsDownloadNetworkSubtitle =>
'Elegir qué red usar para descargas. Cuando se establece en Wi-Fi solamente, las descargas se detendrán en los datos móviles.';
@override
String get settingsConcurrentDownloads => 'Concurrent downloads';
@override
String get settingsConcurrentDownloadsSubtitle =>
'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.';
@override
String get concurrentDownloadsOne => '1 track at a time';
@override
String concurrentDownloadsCount(int count) {
return 'Up to $count tracks at once';
}
@override
String get albumFolderArtistAlbum => 'Artista / Álbum';
@@ -6857,6 +6893,20 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
String get cacheLibraryCoverDesc =>
'Portada extraída de archivos locales. Se extraerá de nuevo en el próximo escaneo.';
@override
String get libraryPlaybackNormalization => 'Volume normalization';
@override
String get libraryPlaybackNormalizationSubtitle =>
'Even out loudness between tracks using their ReplayGain or R128 tags, when present';
@override
String get cacheAudioAnalysis => 'Audio analysis cache';
@override
String get cacheAudioAnalysisDesc =>
'Saved spectrograms and analysis results. Will re-analyze on next open.';
@override
String get cacheExploreFeed => 'Explorar caché de inicio';
@@ -7031,6 +7081,13 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
@override
String get trackConvertBitrate => 'Tasa de bits';
@override
String get trackConvertKeepOriginal => 'Keep original file';
@override
String get trackConvertKeepOriginalDescription =>
'Add the converted file as a separate library entry';
@override
String get trackConvertConfirmTitle => 'Confirmar conversión';
@@ -7051,6 +7108,14 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
return 'Convertir de $sourceFormat a $targetFormat? \n(Sin pérdidas)\n\nEl archivo original será eliminado después de la conversión.';
}
@override
String trackConvertConfirmKeepOriginal(
String sourceFormat,
String targetFormat,
) {
return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.';
}
@override
String get trackConvertLosslessHint =>
'Conversión sin pérdidas — sin pérdida de calidad';
@@ -7337,6 +7402,17 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
return '¿Convertir $count $_temp0 a $format? (Sin pérdida — no hay pérdida de calidad)\n\nLos archivos originales se eliminarán después de la conversión.';
}
@override
String selectionBatchConvertConfirmKeepOriginal(int count, String format) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.';
}
@override
String selectionBatchConvertSuccess(int success, int total, String format) {
return 'Se convirtieron $success de $total pistas a $format';
@@ -7665,6 +7741,24 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
String get storageModeSafSubtitle =>
'Escoge cualquier carpeta, incluyendo la tarjeta SD';
@override
String get downloadFolderAccessLostTitle => 'Download folder access lost';
@override
String get downloadFolderAccessLostSubtitle =>
'Downloads will fail until you re-select the folder';
@override
String get downloadFolderReselect => 'Re-select folder';
@override
String get downloadErrorSafPermissionLost =>
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
@override
String get downloadErrorFolderAccessLost =>
'Download folder access lost. Please re-select your download folder in Settings.';
@override
String downloadFilenameDescription(
Object album,
@@ -8175,6 +8269,13 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
return 'Downloads Finished ($completed done, $failed failed)';
}
@override
String get notifVerificationRequiredTitle => 'Verification required';
@override
String get notifVerificationRequiredBody =>
'Open the app to complete verification and resume downloads';
@override
String get notifAllDownloadsComplete => 'Todas las descargas completadas';
@@ -8551,10 +8652,24 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
String get downloadDeduplicationEnabled =>
'Las pistas previamente descargadas se omitirán';
@override
String get downloadDeduplicationWithQualityVariants =>
'Existing files at the selected quality will be skipped';
@override
String get downloadDeduplicationDisabled =>
'Todas las pistas se descargarán independientemente del historial';
@override
String get downloadQualityVariants => 'Allow different quality versions';
@override
String get downloadQualityVariantsDescription =>
'Add the selected quality to the filename and keep each version in download history';
@override
String get trackOptionDownloadQualityVariant => 'Download another quality';
@override
String get downloadFallbackExtensions => 'Reslpado de extensiones';
@@ -8683,6 +8798,21 @@ class AppLocalizationsEsEs extends AppLocalizationsEs {
@override
String get queueDownloadStarting => 'Comenzando...';
@override
String get queueCheckingDownloadSession => 'Checking download session...';
@override
String get queueResolvingDownloadMetadata => 'Resolving track metadata...';
@override
String get queueResolvingDownloadStream => 'Preparing audio stream...';
@override
String get queueWaitingForVerification => 'Waiting for verification...';
@override
String get queueResumingAfterVerification => 'Resuming after verification...';
@override
String get a11ySelectTrack => 'Seleccionar pista';
+45 -34
View File
@@ -661,6 +661,12 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Ajout de « $trackName » à la file d\'attente';
@@ -917,11 +923,11 @@ class AppLocalizationsFr extends AppLocalizations {
String get updateNewVersionReady => 'Une nouvelle version est disponible';
@override
String get updateRequiredTitle => 'Update required';
String get updateRequiredTitle => 'Mise à jour requise';
@override
String updateRequiredNotice(int count) {
return 'This version is $count releases behind and is no longer supported. Update to keep using the app.';
return 'Cette version a $count versions de retard et n\'est plus prise en charge. Effectuez la mise à jour pour continuer à utiliser l\'application.';
}
@override
@@ -1582,11 +1588,11 @@ class AppLocalizationsFr extends AppLocalizations {
String get appearanceAmoledDarkSubtitle => 'Fond noir pur';
@override
String get appearanceHeroAnimations => 'Hero animations';
String get appearanceHeroAnimations => 'Animations des héros';
@override
String get appearanceHeroAnimationsSubtitle =>
'Fly covers between screens, e.g. when opening the player';
'Des fenêtres contextuelles apparaissent entre les écrans, par exemple lors de l\'ouverture du lecteur';
@override
String get queueClearAll => 'Tout effacer';
@@ -1617,18 +1623,18 @@ class AppLocalizationsFr extends AppLocalizations {
'Choisissez le réseau à utiliser pour les téléchargements. Si vous sélectionnez « Wi-Fi uniquement », les téléchargements seront interrompus lorsque vous utilisez les données mobiles.';
@override
String get settingsConcurrentDownloads => 'Concurrent downloads';
String get settingsConcurrentDownloads => 'Téléchargements simultanés';
@override
String get settingsConcurrentDownloadsSubtitle =>
'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.';
'Le téléchargement simultané de plusieurs titres est plus rapide, mais certains fournisseurs peuvent limiter le débit des requêtes parallèles.';
@override
String get concurrentDownloadsOne => '1 track at a time';
String get concurrentDownloadsOne => '1 titre à la fois';
@override
String concurrentDownloadsCount(int count) {
return 'Up to $count tracks at once';
return 'Jusqu\'à $count titres à la fois';
}
@override
@@ -2265,18 +2271,18 @@ class AppLocalizationsFr extends AppLocalizations {
'Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.';
@override
String get libraryPlaybackNormalization => 'Volume normalization';
String get libraryPlaybackNormalization => 'Normalisation du volume';
@override
String get libraryPlaybackNormalizationSubtitle =>
'Even out loudness between tracks using their ReplayGain or R128 tags, when present';
'Équilibrer le volume entre les morceaux à l\'aide des balises ReplayGain ou R128, lorsqu\'elles sont présentes';
@override
String get cacheAudioAnalysis => 'Audio analysis cache';
String get cacheAudioAnalysis => 'Cache d\'analyse audio';
@override
String get cacheAudioAnalysisDesc =>
'Saved spectrograms and analysis results. Will re-analyze on next open.';
'Spectrogrammes et résultats d\'analyse enregistrés. Réanalyse prévue lors de la prochaine ouverture.';
@override
String get cacheExploreFeed => 'Explorer le cache des flux';
@@ -2454,11 +2460,11 @@ class AppLocalizationsFr extends AppLocalizations {
String get trackConvertBitrate => 'Débit binaire';
@override
String get trackConvertKeepOriginal => 'Keep original file';
String get trackConvertKeepOriginal => 'Conserver le fichier d\'origine';
@override
String get trackConvertKeepOriginalDescription =>
'Add the converted file as a separate library entry';
'Ajoutez le fichier converti en tant qu\'entrée distincte dans la bibliothèque';
@override
String get trackConvertConfirmTitle => 'Confirmer la conversion';
@@ -2485,7 +2491,7 @@ class AppLocalizationsFr extends AppLocalizations {
String sourceFormat,
String targetFormat,
) {
return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.';
return 'Convertir du format $sourceFormat au format $targetFormat ?\n\nLe fichier d\'origine sera conservé et le fichier converti sera ajouté en tant qu\'entrée distincte dans la bibliothèque.';
}
@override
@@ -2780,10 +2786,10 @@ class AppLocalizationsFr extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
other: 'titres',
one: 'titre',
);
return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.';
return 'Convertir $count $_temp0 au format $format ?\n\nLes fichiers d\'origine seront conservés et les fichiers convertis seront ajoutés sous forme d\'entrées distinctes dans la bibliothèque.';
}
@override
@@ -3117,22 +3123,23 @@ class AppLocalizationsFr extends AppLocalizations {
'Choisissez n\'importe quel dossier, y compris la carte SD';
@override
String get downloadFolderAccessLostTitle => 'Download folder access lost';
String get downloadFolderAccessLostTitle =>
'Accès au dossier de téléchargement perdu';
@override
String get downloadFolderAccessLostSubtitle =>
'Downloads will fail until you re-select the folder';
'Les téléchargements échoueront tant que vous n\'aurez pas resélectionné le dossier';
@override
String get downloadFolderReselect => 'Re-select folder';
String get downloadFolderReselect => 'Sélectionner à nouveau le dossier';
@override
String get downloadErrorSafPermissionLost =>
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
'Autorisation SAF non valide ou révoquée. Veuillez reconfigurer l\'emplacement de téléchargement dans les Paramètres.';
@override
String get downloadErrorFolderAccessLost =>
'Download folder access lost. Please re-select your download folder in Settings.';
'Accès au dossier de téléchargement perdu. Veuillez sélectionner à nouveau votre dossier de téléchargement dans les Paramètres.';
@override
String downloadFilenameDescription(
@@ -3656,11 +3663,11 @@ class AppLocalizationsFr extends AppLocalizations {
}
@override
String get notifVerificationRequiredTitle => 'Verification required';
String get notifVerificationRequiredTitle => 'Vérification requise';
@override
String get notifVerificationRequiredBody =>
'Open the app to complete verification and resume downloads';
'Ouvrez l\'application pour terminer la vérification et reprendre les téléchargements';
@override
String get notifAllDownloadsComplete =>
@@ -4052,21 +4059,23 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get downloadDeduplicationWithQualityVariants =>
'Existing files at the selected quality will be skipped';
'Les fichiers existants correspondant à la qualité sélectionnée seront ignorés';
@override
String get downloadDeduplicationDisabled =>
'Tous les morceaux seront téléchargés, quel que soit l\'historique';
@override
String get downloadQualityVariants => 'Allow different quality versions';
String get downloadQualityVariants =>
'Autoriser différentes versions de qualité';
@override
String get downloadQualityVariantsDescription =>
'Add the selected quality to the filename and keep each version in download history';
'Ajouter la qualité sélectionnée au nom du fichier et conserver chaque version dans l\'historique des téléchargements';
@override
String get trackOptionDownloadQualityVariant => 'Download another quality';
String get trackOptionDownloadQualityVariant =>
'Télécharger une autre version de qualité';
@override
String get downloadFallbackExtensions => 'Extensions de secours';
@@ -4199,19 +4208,21 @@ class AppLocalizationsFr extends AppLocalizations {
String get queueDownloadStarting => 'C\'est parti...';
@override
String get queueCheckingDownloadSession => 'Checking download session...';
String get queueCheckingDownloadSession =>
'Vérification de la session de téléchargement...';
@override
String get queueResolvingDownloadMetadata => 'Resolving track metadata...';
String get queueResolvingDownloadMetadata =>
'Récupération des métadonnées du morceau...';
@override
String get queueResolvingDownloadStream => 'Preparing audio stream...';
String get queueResolvingDownloadStream => 'Préparation du flux audio...';
@override
String get queueWaitingForVerification => 'Waiting for verification...';
String get queueWaitingForVerification => 'En attente de vérification...';
@override
String get queueResumingAfterVerification => 'Resuming after verification...';
String get queueResumingAfterVerification => 'Reprise après vérification...';
@override
String get a11ySelectTrack => 'Sélectionner une piste';
+8 -2
View File
@@ -110,7 +110,7 @@ class AppLocalizationsId extends AppLocalizations {
'Gunakan warna dari wallpaper Anda';
@override
String get appearanceHistoryView => 'Tampilan Riwayat';
String get appearanceHistoryView => 'Gaya Tampilan Histori';
@override
String get appearanceHistoryViewList => 'Daftar';
@@ -138,7 +138,7 @@ class AppLocalizationsId extends AppLocalizations {
'Pilih tab mana yang terbuka terlebih dahulu untuk hasil pencarian baru.';
@override
String get optionsAutoFallback => 'Cadangan Otomatis';
String get optionsAutoFallback => 'Layanan Cadangan';
@override
String get optionsAutoFallbackSubtitle =>
@@ -647,6 +647,12 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Menambahkan \"$trackName\" ke antrian';
+6
View File
@@ -642,6 +642,12 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return '$trackName」をキューに追加しました';
File diff suppressed because it is too large Load Diff
+138 -7
View File
@@ -645,6 +645,12 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Added \"$trackName\" to queue';
@@ -5554,6 +5560,14 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
@override
String get updateNewVersionReady => 'Uma nova versão está pronta';
@override
String get updateRequiredTitle => 'Update required';
@override
String updateRequiredNotice(int count) {
return 'This version is $count releases behind and is no longer supported. Update to keep using the app.';
}
@override
String get updateCurrent => 'Atual';
@@ -6195,6 +6209,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
@override
String get appearanceAmoledDarkSubtitle => 'Fundo preto puro';
@override
String get appearanceHeroAnimations => 'Hero animations';
@override
String get appearanceHeroAnimationsSubtitle =>
'Fly covers between screens, e.g. when opening the player';
@override
String get queueClearAll => 'Limpar Tudo';
@@ -6222,6 +6243,21 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
String get settingsDownloadNetworkSubtitle =>
'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.';
@override
String get settingsConcurrentDownloads => 'Concurrent downloads';
@override
String get settingsConcurrentDownloadsSubtitle =>
'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.';
@override
String get concurrentDownloadsOne => '1 track at a time';
@override
String concurrentDownloadsCount(int count) {
return 'Up to $count tracks at once';
}
@override
String get albumFolderArtistAlbum => 'Artista / Álbum';
@@ -6843,6 +6879,20 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
String get cacheLibraryCoverDesc =>
'Cover art extracted from local music files. Will re-extract on next scan.';
@override
String get libraryPlaybackNormalization => 'Volume normalization';
@override
String get libraryPlaybackNormalizationSubtitle =>
'Even out loudness between tracks using their ReplayGain or R128 tags, when present';
@override
String get cacheAudioAnalysis => 'Audio analysis cache';
@override
String get cacheAudioAnalysisDesc =>
'Saved spectrograms and analysis results. Will re-analyze on next open.';
@override
String get cacheExploreFeed => 'Explore feed cache';
@@ -7016,6 +7066,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
@override
String get trackConvertBitrate => 'Bitrate';
@override
String get trackConvertKeepOriginal => 'Keep original file';
@override
String get trackConvertKeepOriginalDescription =>
'Add the converted file as a separate library entry';
@override
String get trackConvertConfirmTitle => 'Confirm Conversion';
@@ -7036,6 +7093,14 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
return 'Convert from $sourceFormat to $targetFormat? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.';
}
@override
String trackConvertConfirmKeepOriginal(
String sourceFormat,
String targetFormat,
) {
return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.';
}
@override
String get trackConvertLosslessHint =>
'Lossless conversion — no quality loss';
@@ -7192,11 +7257,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
'Tap the heart on an artist page to keep them here';
@override
String get collectionPlaylistEmptyTitle => 'Playlist is empty';
String get collectionPlaylistEmptyTitle => 'A lista de reprodução está vazia';
@override
String get collectionPlaylistEmptySubtitle =>
'Long-press + on any track to add it here';
String get collectionPlaylistEmptySubtitle => '';
@override
String get collectionRemoveFromPlaylist => 'Remove from playlist';
@@ -7315,6 +7379,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
return 'Convert $count $_temp0 to $format? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.';
}
@override
String selectionBatchConvertConfirmKeepOriginal(int count, String format) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.';
}
@override
String selectionBatchConvertSuccess(int success, int total, String format) {
return 'Converted $success of $total tracks to $format';
@@ -7628,10 +7703,29 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
'Saves to Music/SpotiFLAC by default';
@override
String get storageModeSaf => 'Custom Folder (SAF)';
String get storageModeSaf => '';
@override
String get storageModeSafSubtitle => 'Pick any folder, including SD card';
String get storageModeSafSubtitle =>
'Escolha qualquer pasta, incluindo o cartão SD';
@override
String get downloadFolderAccessLostTitle => 'Download folder access lost';
@override
String get downloadFolderAccessLostSubtitle =>
'Downloads will fail until you re-select the folder';
@override
String get downloadFolderReselect => 'Re-select folder';
@override
String get downloadErrorSafPermissionLost =>
'SAF permission invalid or revoked. Please reconfigure download location in Settings.';
@override
String get downloadErrorFolderAccessLost =>
'Download folder access lost. Please re-select your download folder in Settings.';
@override
String downloadFilenameDescription(
@@ -8140,6 +8234,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
return 'Downloads Finished ($completed done, $failed failed)';
}
@override
String get notifVerificationRequiredTitle => 'Verification required';
@override
String get notifVerificationRequiredBody =>
'Open the app to complete verification and resume downloads';
@override
String get notifAllDownloadsComplete => 'All Downloads Complete';
@@ -8224,10 +8325,11 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
String get notifLibraryScanFailed => 'Library scan failed';
@override
String get notifLibraryScanCancelled => 'Library scan cancelled';
String get notifLibraryScanCancelled =>
'Escaneamento de biblioteca cancelado';
@override
String get notifLibraryScanStopped => 'Scan stopped before completion.';
String get notifLibraryScanStopped => '';
@override
String notifDownloadingUpdate(String version) {
@@ -8515,10 +8617,24 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
String get downloadDeduplicationEnabled =>
'Already-downloaded tracks will be skipped';
@override
String get downloadDeduplicationWithQualityVariants =>
'Existing files at the selected quality will be skipped';
@override
String get downloadDeduplicationDisabled =>
'All tracks will be downloaded regardless of history';
@override
String get downloadQualityVariants => 'Allow different quality versions';
@override
String get downloadQualityVariantsDescription =>
'Add the selected quality to the filename and keep each version in download history';
@override
String get trackOptionDownloadQualityVariant => 'Download another quality';
@override
String get downloadFallbackExtensions => 'Fallback Extensions';
@@ -8647,6 +8763,21 @@ class AppLocalizationsPtPt extends AppLocalizationsPt {
@override
String get queueDownloadStarting => 'Starting...';
@override
String get queueCheckingDownloadSession => 'Checking download session...';
@override
String get queueResolvingDownloadMetadata => 'Resolving track metadata...';
@override
String get queueResolvingDownloadStream => 'Preparing audio stream...';
@override
String get queueWaitingForVerification => 'Waiting for verification...';
@override
String get queueResumingAfterVerification => 'Resuming after verification...';
@override
String get a11ySelectTrack => 'Select track';
+6
View File
@@ -649,6 +649,12 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return '\"$trackName\" добавлен в очередь';
+6
View File
@@ -651,6 +651,12 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return '\"$trackName\" kuyruğa eklendi';
+6
View File
@@ -652,6 +652,12 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get collectionExportM3uFailed => 'Export failed';
@override
String get trackOpenOn => 'Open on...';
@override
String get trackOpenOnNoLinks => 'No platform links found for this track.';
@override
String snackbarAddedToQueue(String trackName) {
return 'Додано \"$trackName\" до черги';
+163 -24
View File
@@ -23,7 +23,7 @@
"@cacheCleanupUnused": {
"description": "Action title for cleaning unused entries"
},
"trackConvertDitherNone": "None",
"trackConvertDitherNone": "Keine",
"@trackConvertDitherNone": {
"description": "Lossless conversion dither option with no dithering applied"
},
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Erweiterung installieren",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Erweiterungs-Repo",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} aus dem Download-Verlauf (von der Liste ausgeschlossen)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Herunterladen",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -775,7 +775,7 @@
"@audioAnalysisRescanning": {
"description": "Loading text while audio is being re-analyzed after an explicit refresh"
},
"logTitle": "Logs",
"logTitle": "Protokolle",
"@logTitle": {
"description": "Logs screen title"
},
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Metadaten",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Utility",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Zu \"{playlistName} \" hinzugefügt",
"@collectionAddedToPlaylist": {
@@ -2919,7 +2919,7 @@
"description": "Status label when primary-artist-only folder naming is enabled"
},
"lyricsProvidersDiscardContent": "Ungespeicherte Änderungen die verloren gehen.",
"previewStop": "Stop preview",
"previewStop": "Vorschau stoppen",
"@previewStop": {
"description": "Tooltip for the button that stops the playing track preview snippet"
},
@@ -3205,7 +3205,7 @@
},
"trackConvertOriginal": "Original",
"sectionLyricsProviderOptions": "Anbieter-Optionen",
"nowPlayingTitle": "Now Playing",
"nowPlayingTitle": "Jetzt läuft",
"@nowPlayingTitle": {
"description": "Title for the now playing screen"
},
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "App",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKIERUNG ERKANNT",
"storeFilterIntegration": "Integration",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Erweiterungs-Repo",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Bibliothek geleert",
"@libraryCleared": {
@@ -3586,7 +3586,7 @@
"@searchSortTitle": {
"description": "Bottom sheet title for search sort options"
},
"editMetadataSelectNone": "None",
"editMetadataSelectNone": "Keine",
"@historyFilterSingles": {
"description": "Filter chip - show singles only"
},
@@ -3705,7 +3705,7 @@
"description": "Dialog title for default folder"
},
"optionsArtistTagModeSplitVorbisSubtitle": "Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.",
"snackbarPlayingNext": "Playing next",
"snackbarPlayingNext": "Als nächstes",
"@snackbarPlayingNext": {
"description": "Snackbar when a track is inserted as the next queue item"
},
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Post-processing",
"@searchTracks": {
@@ -4348,7 +4348,7 @@
"description": "Snackbar when no selected tracks support conversion"
},
"extensionHealthDegraded": "Eingeschränkt",
"regionCountryKR": "South Korea",
"regionCountryKR": "Südkorea",
"@regionCountryKR": {
"description": "Country name for SongLink region picker"
},
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Aktuelles Repository:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Ordner benannt nach dem Tag des Künstlers",
"storeSearch": "Erweiterungen suchen...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Telegram Community",
"lyricsModeBoth": "Beides",
@@ -4792,7 +4792,7 @@
}
},
"dialogRemove": "Entfernen",
"extensionVerificationClose": "Close",
"extensionVerificationClose": "Schließen",
"bulkDownloadPlaylistsButton": "Lade {count} {count, plural, =1{Playlist} other{Playlists}} herunter",
"@bulkDownloadPlaylistsButton": {
"description": "Button label for bulk downloading selected playlists",
@@ -4979,7 +4979,7 @@
"description": "Button text to start CUE splitting"
},
"appearanceHistoryView": "Verlaufsansicht",
"audioAnalysisSampleRate": "Sample Rate",
"audioAnalysisSampleRate": "Abtastrate",
"@settingsCache": {
"description": "Settings menu item - cache management"
},
@@ -5585,7 +5585,7 @@
"homeAlbumInfoUnavailable": "Albuminfo nicht verfügbar",
"settingsLyrics": "Lyrics",
"extensionVerificationBrowserExternal": "External",
"regionCountryIN": "India",
"regionCountryIN": "Indien",
"extensionHealthUnknown": "Unbekannt",
"backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}",
"settingsAutoExportFailed": "Auto-Export fehlgeschlagener Downloads",
@@ -5733,7 +5733,7 @@
"@noTracksFoundForAlbum": {
"description": "Empty state message when an album has no tracks"
},
"previewPlay": "Play preview",
"previewPlay": "Vorschau abspielen",
"setupPermissionRequiredMessage": "{permissionType}-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.",
"aboutVersion": "Version",
"qualityHiResFlacSubtitle": "24-Bit / bis 96kHz",
@@ -5791,7 +5791,7 @@
"libraryFilterTitle": "Filter",
"cleanupOrphanedDownloadsResult": "Entfernte {count} verwaiste Einträge aus dem Verlauf",
"extensionHooksAvailable": "{count} Hook(s) verfügbar",
"backupContentsSettings": "App settings",
"backupContentsSettings": "Appeinstellungen",
"trackLyricsEmbedded": "Lyrics erfolgreich eingebettet",
"optionsUpdateChannelPreview": "Vorschau-Versionen erhalten",
"collectionAddedToFavoriteArtists": "\"{artistName}\" zu Lieblingskünstlern hinzugefügt",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Wähle den Dienst für die Suche von Titel",
"albumFolderAlbumOnly": "Nur Alben",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "In Titel aufteilen"
"cueSplitButton": "In Titel aufteilen",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+151 -12
View File
@@ -19,7 +19,7 @@
},
"navStore": "Repositorio",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"homeTitle": "Inicio",
"@homeTitle": {
@@ -282,11 +282,11 @@
},
"optionsExtensionStore": "Repositorio de extensiones",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"optionsExtensionStoreSubtitle": "Mostrar la pestaña del repositorio en la navegación",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"optionsCheckUpdates": "Buscar actualizaciones",
"@optionsCheckUpdates": {
@@ -355,11 +355,11 @@
},
"storeTitle": "Repositorio de extensiones",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"storeSearch": "Buscar extensiones...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"storeInstall": "Instalar",
"@storeInstall": {
@@ -1604,27 +1604,27 @@
},
"storeFilterAll": "Todo",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"storeFilterMetadata": "Información",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"storeFilterDownload": "Descargar",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"storeFilterUtility": "Utilidad",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"storeFilterLyrics": "Letras",
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"storeFilterIntegration": "Integración",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"storeClearFilters": "Limpiar filtros",
"@storeClearFilters": {
@@ -5883,5 +5883,144 @@
"extensionVerificationOpenBrowser": "Open browser",
"@extensionVerificationOpenBrowser": {
"description": "Button to open the extension verification URL in a browser"
}
},
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+151 -12
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Installer l'extension",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Référentiel d'extensions",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} dans l'historique des téléchargements (exclu de la liste)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Télécharger",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Métadonnées",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copier le lien",
"errorRateLimitedMessage": "Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Utilitaire",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Ajouté à « {playlistName} »",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Lecture",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Application",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "BLOCAGE PAR LE FAI DÉTECTÉ",
"storeFilterIntegration": "Intégration",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Répertoire des extensions",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Bibliothèque vidée",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "La plus grande base de données de paroles (multilingue)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Post-traitement",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Dépôt actuel :",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Dossier nommé d'après la balise « Artiste » de la piste",
"storeSearch": "Recherche d'extensions...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Communauté Telegram",
"lyricsModeBoth": "Les deux",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux",
"albumFolderAlbumOnly": "Album uniquement",
"nowPlayingOpenInExternalPlayer": "Ouvrir dans un lecteur externe",
"cueSplitButton": "Diviser en pistes"
"cueSplitButton": "Diviser en pistes",
"updateRequiredTitle": "Mise à jour requise",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "Cette version a {count} versions de retard et n'est plus prise en charge. Effectuez la mise à jour pour continuer à utiliser l'application.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Animations des héros",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Des fenêtres contextuelles apparaissent entre les écrans, par exemple lors de l'ouverture du lecteur",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Téléchargements simultanés",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Le téléchargement simultané de plusieurs titres est plus rapide, mais certains fournisseurs peuvent limiter le débit des requêtes parallèles.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 titre à la fois",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Jusqu'à {count} titres à la fois",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Normalisation du volume",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Équilibrer le volume entre les morceaux à l'aide des balises ReplayGain ou R128, lorsqu'elles sont présentes",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Cache d'analyse audio",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Spectrogrammes et résultats d'analyse enregistrés. Réanalyse prévue lors de la prochaine ouverture.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Conserver le fichier d'origine",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Ajoutez le fichier converti en tant qu'entrée distincte dans la bibliothèque",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convertir du format {sourceFormat} au format {targetFormat} ?\n\nLe fichier d'origine sera conservé et le fichier converti sera ajouté en tant qu'entrée distincte dans la bibliothèque.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} ?\n\nLes fichiers d'origine seront conservés et les fichiers convertis seront ajoutés sous forme d'entrées distinctes dans la bibliothèque.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Accès au dossier de téléchargement perdu",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Les téléchargements échoueront tant que vous n'aurez pas resélectionné le dossier",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Sélectionner à nouveau le dossier",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "Autorisation SAF non valide ou révoquée. Veuillez reconfigurer l'emplacement de téléchargement dans les Paramètres.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Accès au dossier de téléchargement perdu. Veuillez sélectionner à nouveau votre dossier de téléchargement dans les Paramètres.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Vérification requise",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Ouvrez l'application pour terminer la vérification et reprendre les téléchargements",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Les fichiers existants correspondant à la qualité sélectionnée seront ignorés",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Autoriser différentes versions de qualité",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Ajouter la qualité sélectionnée au nom du fichier et conserver chaque version dans l'historique des téléchargements",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Télécharger une autre version de qualité",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Vérification de la session de téléchargement...",
"queueResolvingDownloadMetadata": "Récupération des métadonnées du morceau...",
"queueResolvingDownloadStream": "Préparation du flux audio...",
"queueWaitingForVerification": "En attente de vérification...",
"queueResumingAfterVerification": "Reprise après vérification..."
}
+99 -13
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Pasang Ekstensi",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Repositori Ekstensi",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Unduhan",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Metadata",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Utilitas",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Added to \"{playlistName}\"",
"@collectionAddedToPlaylist": {
@@ -1808,7 +1808,7 @@
"@regionCountryDE": {
"description": "Country name for SongLink region picker"
},
"optionsAutoFallback": "Cadangan Otomatis",
"optionsAutoFallback": "Layanan Cadangan",
"@optionsAutoFallback": {
"description": "Auto-retry with other services"
},
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Aplikasi",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "Integrasi",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Repositori Ekstensi",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Library cleared",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Pasca-Pemrosesan",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Repositori saat ini:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag",
"storeSearch": "Cari ekstensi...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Komunitas Telegram",
"lyricsModeBoth": "Keduanya",
@@ -4978,7 +4978,7 @@
"@cueSplitButton": {
"description": "Button text to start CUE splitting"
},
"appearanceHistoryView": "Tampilan Riwayat",
"appearanceHistoryView": "Gaya Tampilan Histori",
"audioAnalysisSampleRate": "Sample Rate",
"@settingsCache": {
"description": "Settings menu item - cache management"
@@ -5936,5 +5936,91 @@
"downloadDeduplicationWithQualityVariants": "File yang sudah ada pada kualitas yang dipilih akan dilewati",
"@downloadDeduplicationWithQualityVariants": {
"description": "Subtitle deduplikasi ketika versi kualitas terpisah diizinkan"
},
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
}
}
+151 -12
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "拡張をインストール",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Extension Repo",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "ダウンロード",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "メタデータ",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "ユーティリティ",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Added to \"{playlistName}\"",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "アプリ",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "統合",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Extension Repo",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Library cleared",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "ポストプロセス",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Current repository:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag",
"storeSearch": "拡張を検索...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Telegram コミュニティ",
"lyricsModeBoth": "両方",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "トラックの検索に使用するサービスを選択してください",
"albumFolderAlbumOnly": "アルバムのみ",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "Split into Tracks"
"cueSplitButton": "Split into Tracks",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
File diff suppressed because it is too large Load Diff
+157 -18
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Instalar Extensão",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Repositório de extensões",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Baixar",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -613,7 +613,7 @@
"@logClearLogsTitle": {
"description": "Clear logs dialog title"
},
"storageModeSafSubtitle": "Pick any folder, including SD card",
"storageModeSafSubtitle": "Escolha qualquer pasta, incluindo o cartão SD",
"@storageModeSafSubtitle": {
"description": "Subtitle for SAF storage mode"
},
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Metadados",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.",
@@ -1575,7 +1575,7 @@
"@artistOptionRemoveFromFavorites": {
"description": "Action label - remove artist from favorite artists"
},
"collectionPlaylistEmptyTitle": "Playlist is empty",
"collectionPlaylistEmptyTitle": "A lista de reprodução está vazia",
"@collectionPlaylistEmptyTitle": {
"description": "Playlist empty state title"
},
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Utilidade",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Added to \"{playlistName}\"",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Aplicativo",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "Integração",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3471,7 +3471,7 @@
"@recentTypeArtist": {
"description": "Recent access item type - artist"
},
"collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here",
"collectionPlaylistEmptySubtitle": "",
"artistCompilations": "Compilações",
"@artistCompilations": {
"description": "Section header for compilations"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Repositório de extensões",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Library cleared",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Pós-Processamento",
"@searchTracks": {
@@ -4167,7 +4167,7 @@
}
}
},
"notifLibraryScanCancelled": "Library scan cancelled",
"notifLibraryScanCancelled": "Escaneamento de biblioteca cancelado",
"@notifLibraryScanCancelled": {
"description": "Notification title when library scan is cancelled by the user"
},
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Repositório atual:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag",
"storeSearch": "Pesquisar extensões...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Comunidade do Telegram",
"lyricsModeBoth": "Ambos",
@@ -5013,7 +5013,7 @@
"@cueSplitNoAudioFile": {
"description": "Error when CUE audio file is missing"
},
"notifLibraryScanStopped": "Scan stopped before completion.",
"notifLibraryScanStopped": "",
"@settingsMetadata": {
"description": "Settings menu item - metadata settings"
},
@@ -5716,7 +5716,7 @@
"logIssueTrackNotFoundLabel": "TRACK NOT FOUND",
"extensionVerificationHelpTitleManual": "Open verification manually",
"dialogDiscard": "Descartar",
"storageModeSaf": "Custom Folder (SAF)",
"storageModeSaf": "",
"errorRateLimited": "Tráfico Limitado (Rate Limited)",
"downloadSelectQuality": "Selecionar Qualidade",
"dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Escolha qual serviço utilizar para pesquisar faixas",
"albumFolderAlbumOnly": "Somente Álbum",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "Split into Tracks"
"cueSplitButton": "Split into Tracks",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+151 -12
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Установить расширение",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Репозиторий расширения",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Скачивание",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Метаданные",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Утилиты",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Приложение",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "Интеграция",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Репозиторий расширения",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Библиотека очищена",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Постобработка",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "Spotify",
"storeRepoDialogCurrent": "Текущий репозиторий:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Папка названная в честь тега Трека Артиста",
"storeSearch": "Поиск расширений...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Сообщество в Telegram",
"lyricsModeBoth": "Оба варианта",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков",
"albumFolderAlbumOnly": "Только альбом",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "Разделить на Треки"
"cueSplitButton": "Разделить на Треки",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+151 -12
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Uzantı Yükle",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Eklenti Deposu",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "İndir",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Meta Veri",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Araç",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "\"{playlistName}\"e eklendi",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Uygulama",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "Entegrasyon",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Uzantı Deposu",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Kütüphane temizlendi",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Son İşlem",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Mevcut depo:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag",
"storeSearch": "Eklenti ara...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Telegram Grubu",
"lyricsModeBoth": "Her ikisi de",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Parça aramak için hangi servisin kullanılacağını seçin",
"albumFolderAlbumOnly": "Yalnızca Albüm",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "Parçalara Ayrılmış"
"cueSplitButton": "Parçalara Ayrılmış",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+151 -12
View File
@@ -143,7 +143,7 @@
"description": "Share button tooltip"
},
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
"description": "Repo filter - lyrics providers"
},
"extensionsInstallButton": "Встановити розширення",
"@extensionsInstallButton": {
@@ -317,7 +317,7 @@
},
"optionsExtensionStore": "Репозиторій розширень",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)",
"@libraryDownloadsHistoryExcluded": {
@@ -459,7 +459,7 @@
},
"storeFilterDownload": "Завантажити",
"@storeFilterDownload": {
"description": "Store filter - download providers"
"description": "Repo filter - download providers"
},
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
@@ -1151,7 +1151,7 @@
},
"storeFilterMetadata": "Метадані",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
"description": "Repo filter - metadata providers"
},
"shareSheetCopyLink": "Copy Link",
"errorRateLimitedMessage": "Забагато запитів. Будь ласка, зачекайте хвилинку, перш ніж шукати знову.",
@@ -1732,7 +1732,7 @@
},
"storeFilterUtility": "Утиліта",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
"description": "Repo filter - utility extensions"
},
"collectionAddedToPlaylist": "Додано до \"{playlistName}\"",
"@collectionAddedToPlaylist": {
@@ -3328,7 +3328,7 @@
},
"libraryPlayback": "Playback",
"@storeFilterAll": {
"description": "Store filter - all extensions"
"description": "Repo filter - all extensions"
},
"aboutApp": "Додаток",
"@aboutApp": {
@@ -3348,7 +3348,7 @@
"logIssueIspBlockingLabel": "ISP BLOCKING DETECTED",
"storeFilterIntegration": "Інтеграція",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
"description": "Repo filter - integrations"
},
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
@@ -3538,7 +3538,7 @@
},
"storeTitle": "Репозиторій розширень",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"libraryCleared": "Бібліотека очищена",
"@libraryCleared": {
@@ -3853,7 +3853,7 @@
},
"lyricsProviderMusixmatchDesc": "Найбільша база даних текстів пісень (багатомовна)",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"extensionPostProcessing": "Післяобробка",
"@searchTracks": {
@@ -4444,7 +4444,7 @@
"appName": "SpotiFLAC Mobile",
"storeRepoDialogCurrent": "Поточний репозиторій:",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"@trackLyrics": {
"description": "Tab title - lyrics"
@@ -4557,7 +4557,7 @@
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag",
"storeSearch": "Розширення пошуку...",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"aboutTelegramChat": "Telegram Спільнота",
"lyricsModeBoth": "Обидва",
@@ -5883,5 +5883,144 @@
"extensionsSearchProviderDescription": "Виберіть, який сервіс використовувати для пошуку треків",
"albumFolderAlbumOnly": "Тільки альбом",
"nowPlayingOpenInExternalPlayer": "Open in external player",
"cueSplitButton": "Розділити на треки"
"cueSplitButton": "Розділити на треки",
"updateRequiredTitle": "Update required",
"@updateRequiredTitle": {
"description": "Title of the mandatory update dialog shown when the installed version is too old"
},
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
"@updateRequiredNotice": {
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
"placeholders": {
"count": {
"type": "int"
}
}
},
"appearanceHeroAnimations": "Hero animations",
"@appearanceHeroAnimations": {
"description": "Toggle for shared-element (Hero) transitions"
},
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
"@appearanceHeroAnimationsSubtitle": {
"description": "Subtitle for the Hero animations toggle"
},
"settingsConcurrentDownloads": "Concurrent downloads",
"@settingsConcurrentDownloads": {
"description": "Setting title - how many tracks download at the same time"
},
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
"@settingsConcurrentDownloadsSubtitle": {
"description": "Subtitle explaining the concurrent downloads picker"
},
"concurrentDownloadsOne": "1 track at a time",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "Up to {count} tracks at once",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryPlaybackNormalization": "Volume normalization",
"@libraryPlaybackNormalization": {
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"trackConvertKeepOriginal": "Keep original file",
"@trackConvertKeepOriginal": {
"description": "Toggle to preserve the source file during conversion"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
"@trackConvertConfirmKeepOriginal": {
"description": "Confirmation message when the source file will be preserved",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
"@selectionBatchConvertConfirmKeepOriginal": {
"description": "Batch conversion confirmation when source files will be preserved",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadFolderAccessLostTitle": "Download folder access lost",
"@downloadFolderAccessLostTitle": {
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"notifVerificationRequiredTitle": "Verification required",
"@notifVerificationRequiredTitle": {
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
"@downloadDeduplicationWithQualityVariants": {
"description": "Deduplication subtitle when separate quality versions are allowed"
},
"downloadQualityVariants": "Allow different quality versions",
"@downloadQualityVariants": {
"description": "Setting to retain multiple quality versions of the same track"
},
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
"@downloadQualityVariantsDescription": {
"description": "Description for retaining multiple quality versions"
},
"trackOptionDownloadQualityVariant": "Download another quality",
"@trackOptionDownloadQualityVariant": {
"description": "Track menu action to download another quality version"
},
"queueCheckingDownloadSession": "Checking download session...",
"queueResolvingDownloadMetadata": "Resolving track metadata...",
"queueResolvingDownloadStream": "Preparing audio stream...",
"queueWaitingForVerification": "Waiting for verification...",
"queueResumingAfterVerification": "Resuming after verification..."
}
+2
View File
@@ -14,6 +14,7 @@ const int translationThreshold = 70;
/// Only these languages will be available in the app.
const List<Locale> filteredSupportedLocales = <Locale>[
Locale('en'),
Locale('ko'),
Locale('fr'),
Locale('es', 'ES'),
Locale('de'),
@@ -28,6 +29,7 @@ const List<Locale> filteredSupportedLocales = <Locale>[
/// Set of locale codes for quick lookup.
const Set<String> filteredLocaleCodes = <String>{
'en',
'ko',
'fr',
'es_ES',
'de',
@@ -694,6 +694,7 @@ class _LanguageSelector extends StatelessWidget {
('es_ES', 'Español (España)', Icons.language),
('fr', 'Français', Icons.language),
('ja', '日本語', Icons.language),
('ko', '한국어', Icons.language),
('pt', 'Português', Icons.language),
('pt_PT', 'Português (Brasil)', Icons.language),
('ru', 'Русский', Icons.language),
+1
View File
@@ -710,6 +710,7 @@ class _SetupScreenState extends ConsumerState<SetupScreen> {
('es_ES', 'Español (España)', Icons.language),
('fr', 'Français', Icons.language),
('ja', '日本語', Icons.language),
('ko', '한국어', Icons.language),
('pt', 'Português', Icons.language),
('pt_PT', 'Português (Brasil)', Icons.language),
('ru', 'Русский', Icons.language),