From 627ab3797eabba599ec6ea6130a223f203de860c Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Thu, 24 Sep 2026 03:09:42 +0700 Subject: [PATCH] New translations app_en.arb (Russian) [ci skip] --- lib/l10n/arb/app_ru.arb | 152 ++++++++++++++++++++-------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index db923ce1..6ba2dfc0 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -1838,7 +1838,7 @@ "@storeNewRepoUrlLabel": { "description": "Label for the new repository URL field inside the dialog" }, - "storeLoadError": "Failed to load repository", + "storeLoadError": "Не удалось загрузить репозиторий", "@storeLoadError": { "description": "Error heading when the store cannot be loaded" }, @@ -4458,7 +4458,7 @@ "@downloadMusixmatchLanguage": { "description": "Setting for Musixmatch lyrics translation language" }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", + "downloadMusixmatchLanguageAuto": "Авто (оригинальный язык)", "@downloadMusixmatchLanguageAuto": { "description": "Subtitle when no language is set" }, @@ -4498,7 +4498,7 @@ "@downloadNetworkAnySubtitle": { "description": "Subtitle for any-network option in picker" }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "downloadNetworkWifiOnlySubtitle": "Пауза загрузки на мобильных данных", "@downloadNetworkWifiOnlySubtitle": { "description": "Subtitle for WiFi-only option in picker" }, @@ -4552,19 +4552,19 @@ } } }, - "editMetadataAutoFill": "Auto-fill from online", + "editMetadataAutoFill": "Автозаполнение из сети", "@editMetadataAutoFill": { "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "editMetadataAutoFillDesc": "Выберите расширение метаданных, выберите поля, а затем проверьте их перед применением", "@editMetadataAutoFillDesc": { "description": "Description for the auto-fill section" }, - "editMetadataAutoFillSource": "Metadata source", + "editMetadataAutoFillSource": "Источник метаданных", "@editMetadataAutoFillSource": { "description": "Label for the metadata extension selector in online auto-fill" }, - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "editMetadataAutoFillSourceAutomatic": "Автоматически (приоритет провайдера)", "@editMetadataAutoFillSourceAutomatic": { "description": "Automatic source option that follows configured metadata provider priority" }, @@ -4790,11 +4790,11 @@ "@audioAnalysisCodec": { "description": "Audio codec metric label" }, - "audioAnalysisContainer": "Container", + "audioAnalysisContainer": "Контейнер", "@audioAnalysisContainer": { "description": "Audio container metric label" }, - "audioAnalysisDecodedFormat": "Decoded Format", + "audioAnalysisDecodedFormat": "Декодированный формат", "@audioAnalysisDecodedFormat": { "description": "Decoded sample format metric label" }, @@ -4822,7 +4822,7 @@ "@audioAnalysisDynamicRange": { "description": "Dynamic range metric label" }, - "audioAnalysisPeak": "Peak", + "audioAnalysisPeak": "Пик", "@audioAnalysisPeak": { "description": "Peak amplitude metric label" }, @@ -4834,7 +4834,7 @@ "@audioAnalysisLufs": { "description": "Integrated loudness metric label" }, - "audioAnalysisTruePeak": "True Peak", + "audioAnalysisTruePeak": "Реальный пик", "@audioAnalysisTruePeak": { "description": "True peak metric label" }, @@ -4854,7 +4854,7 @@ "@audioAnalysisCutoffNotDetected": { "description": "Displayed when no reliable broadband spectral cutoff can be detected" }, - "audioAnalysisChannelStats": "Per-channel Stats", + "audioAnalysisChannelStats": "Статистика по каналам", "@audioAnalysisChannelStats": { "description": "Per-channel audio analysis section label" }, @@ -4862,11 +4862,11 @@ "@audioAnalysisSamples": { "description": "Total samples metric label" }, - "audioAnalysisRescan": "Re-analyze", + "audioAnalysisRescan": "Переанализировать", "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, - "audioAnalysisRescanning": "Re-analyzing audio...", + "audioAnalysisRescanning": "Переанализ аудио...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" }, @@ -4886,7 +4886,7 @@ "@extensionsHomeFeedAutoSubtitle": { "description": "Extensions page - subtitle for auto home feed option" }, - "extensionsHomeFeedOff": "Off", + "extensionsHomeFeedOff": "Выкл.", "@extensionsHomeFeedOff": { "description": "Extensions page - home feed provider option: off" }, @@ -4924,7 +4924,7 @@ "@cancelDownloadKeep": { "description": "Dialog button - keep the active download (do not cancel)" }, - "queueCancelledTitle": "Download cancelled", + "queueCancelledTitle": "Загрузка отменена", "@queueCancelledTitle": { "description": "Dialog title when opening a cancelled queue item" }, @@ -4949,7 +4949,7 @@ } } }, - "notifDownloadingTrack": "Downloading {trackName}", + "notifDownloadingTrack": "Загрузка {trackName}", "@notifDownloadingTrack": { "description": "Notification title while downloading a track", "placeholders": { @@ -5015,7 +5015,7 @@ } } }, - "notifVerificationRequiredTitle": "Verification required", + "notifVerificationRequiredTitle": "Требуется верификация", "@notifVerificationRequiredTitle": { "description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background" }, @@ -5048,7 +5048,7 @@ } } }, - "notifDownloadsCanceledTitle": "Downloads canceled", + "notifDownloadsCanceledTitle": "Загрузка отменена", "@notifDownloadsCanceledTitle": { "description": "Notification title when downloads are canceled by the user" }, @@ -5065,7 +5065,7 @@ "@notifScanningLibrary": { "description": "Notification title while scanning local library" }, - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлов • {percentage}%", "@notifLibraryScanProgressWithTotal": { "description": "Notification body for library scan progress when total is known", "placeholders": { @@ -5080,7 +5080,7 @@ } } }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "notifLibraryScanProgressNoTotal": "{scanned} файлов отсканировано • {percentage}%", "@notifLibraryScanProgressNoTotal": { "description": "Notification body for library scan progress when total is unknown", "placeholders": { @@ -5135,7 +5135,7 @@ "@notifLibraryScanStopped": { "description": "Notification body when library scan is cancelled" }, - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "notifDownloadingUpdate": "Скачивание SpotiFLAC Mobile v{version}", "@notifDownloadingUpdate": { "description": "Notification title while downloading an app update", "placeholders": { @@ -5163,7 +5163,7 @@ "@notifUpdateReady": { "description": "Notification title when app update download is complete" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} скачана. Нажмите, чтобы установить.", "@notifUpdateReadyBody": { "description": "Notification body when app update is ready to install", "placeholders": { @@ -5180,15 +5180,15 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "searchTracks": "Tracks", + "searchTracks": "Треки", "@searchTracks": { "description": "Search filter label - tracks" }, - "homeSearchHintDefault": "Paste supported URL or search...", + "homeSearchHintDefault": "Вставьте URL или найдите...", "@homeSearchHintDefault": { "description": "Default placeholder for the main search field on Home" }, - "homeSearchHintProvider": "Search with {providerName}...", + "homeSearchHintProvider": "Поиск с{providerName}...", "@homeSearchHintProvider": { "description": "Placeholder for the main search field when a provider is selected", "placeholders": { @@ -5197,7 +5197,7 @@ } } }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "homeImportCsvTooltip": "Импорт плейлистов (CSV, M3U)", "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV or M3U playlist file into Home search" }, @@ -5205,27 +5205,27 @@ "@homeChangeSearchProviderTooltip": { "description": "Tooltip for the Home search provider picker" }, - "actionPaste": "Paste", + "actionPaste": "Вставить", "@actionPaste": { "description": "Generic action - paste from clipboard" }, - "tutorialSearchHint": "Paste or search...", + "tutorialSearchHint": "Вставьте или найдите...", "@tutorialSearchHint": { "description": "Placeholder shown in the tutorial search demo" }, - "tutorialDownloadCompletedSemantics": "Download completed", + "tutorialDownloadCompletedSemantics": "Загрузка завершена", "@tutorialDownloadCompletedSemantics": { "description": "Accessibility label for completed download state in tutorial demo" }, - "tutorialDownloadInProgressSemantics": "Download in progress", + "tutorialDownloadInProgressSemantics": "Идёт загрузка", "@tutorialDownloadInProgressSemantics": { "description": "Accessibility label for active download state in tutorial demo" }, - "tutorialStartDownloadSemantics": "Start download", + "tutorialStartDownloadSemantics": "Начать загрузку", "@tutorialStartDownloadSemantics": { "description": "Accessibility label for idle download button in tutorial demo" }, - "optionsEmbedMetadata": "Embed Metadata", + "optionsEmbedMetadata": "Встроить метаданные", "@optionsEmbedMetadata": { "description": "Settings toggle title for writing metadata into downloaded files" }, @@ -5241,7 +5241,7 @@ "@trackCoverNoEmbeddedArt": { "description": "Message shown when a track file has no embedded cover art" }, - "trackCoverReplace": "Replace Cover", + "trackCoverReplace": "Заменить обложку", "@trackCoverReplace": { "description": "Button label for replacing selected cover art" }, @@ -5342,11 +5342,11 @@ "@queueCheckingDownloadedFile": { "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." }, - "queueDownloadCompleted": "Download completed", + "queueDownloadCompleted": "Загрузка завершена", "@queueDownloadCompleted": { "description": "Accessibility label for completed download state in queue" }, - "queueRateLimitTitle": "Service rate limited", + "queueRateLimitTitle": "Уровень обслуживания ограничен", "@queueRateLimitTitle": { "description": "Title shown on a failed queue item when the download service rate limits requests" }, @@ -5440,11 +5440,11 @@ } } }, - "extensionDetailsTags": "Tags", + "extensionDetailsTags": "Теги", "@extensionDetailsTags": { "description": "Section title for extension tags" }, - "extensionDetailsInformation": "Information", + "extensionDetailsInformation": "Инофрмация", "@extensionDetailsInformation": { "description": "Section title for extension metadata information" }, @@ -5496,7 +5496,7 @@ } } }, - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "a11yOpenAlbumByArtistTrackCount": "Открыть альбом {albumName} от {artistName}, {trackCount} {trackCount, plural, one{трек} few{трека} other{треков}}", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5511,7 +5511,7 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", + "a11yTrackByArtist": "{trackName} от {artistName}", "@a11yTrackByArtist": { "description": "Accessibility label for a queue or list track item", "placeholders": { @@ -5523,7 +5523,7 @@ } } }, - "a11ySelectAlbum": "Select album {albumName}", + "a11ySelectAlbum": "Выбрать альбом {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", "placeholders": { @@ -5532,7 +5532,7 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", + "a11yOpenAlbum": "Открыть альбом {albumName}", "@a11yOpenAlbum": { "description": "Accessibility label for opening an album", "placeholders": { @@ -5541,7 +5541,7 @@ } } }, - "settingsFiles": "Files & Folders", + "settingsFiles": "Файлы и папки", "@settingsFiles": { "description": "Settings menu item - file and folder settings" }, @@ -5557,7 +5557,7 @@ "@settingsMetadataSubtitle": { "description": "Subtitle for metadata settings" }, - "settingsLyrics": "Lyrics", + "settingsLyrics": "Тексты песен", "@settingsLyrics": { "description": "Settings menu item - lyrics settings" }, @@ -5573,7 +5573,7 @@ "@settingsAppSubtitle": { "description": "Subtitle for app settings" }, - "sectionMetadataProviders": "Providers", + "sectionMetadataProviders": "Провайдеры", "@sectionMetadataProviders": { "description": "Settings section header for metadata providers" }, @@ -5585,7 +5585,7 @@ "@sectionLyricsProviderOptions": { "description": "Settings section header for per-provider lyrics options" }, - "metadataProvidersTitle": "Metadata Provider Priority", + "metadataProvidersTitle": "Приоритет провайдера метаданных", "@metadataProvidersTitle": { "description": "Settings item title for metadata provider order" }, @@ -5645,11 +5645,11 @@ "@editMetadataFieldComposer": { "description": "Label for composer field in the edit metadata sheet" }, - "editMetadataFieldComment": "Comment", + "editMetadataFieldComment": "Комментарий", "@editMetadataFieldComment": { "description": "Label for comment field in the edit metadata sheet" }, - "trackAlbumType": "Release Type", + "trackAlbumType": "Тип Релиза", "@trackAlbumType": { "description": "Label for an album or release type metadata value" }, @@ -5697,7 +5697,7 @@ "@libraryFilterMetadataIncorrectIsrcFormat": { "description": "Filter option - items with an invalid ISRC format" }, - "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "libraryFilterMetadataMissingIsrc": "Отсутствует ISRC", "@libraryFilterMetadataMissingIsrc": { "description": "Filter option - items without any ISRC tag" }, @@ -5705,7 +5705,7 @@ "@libraryFilterMetadataMissingLabel": { "description": "Filter option - items missing record label" }, - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "collectionDeletePlaylistsMessage": "Удалить {count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}?", "@collectionDeletePlaylistsMessage": { "description": "Confirmation message for deleting selected playlists", "placeholders": { @@ -5714,7 +5714,7 @@ } } }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "collectionPlaylistsDeleted": "{count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}", "@collectionPlaylistsDeleted": { "description": "Snackbar after deleting selected playlists", "placeholders": { @@ -5723,7 +5723,7 @@ } } }, - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "collectionAddedTracksToPlaylist": "Добавлено {count} {count, plural, =1{трек} few{трека} other{треков}} в {playlistName}", "@collectionAddedTracksToPlaylist": { "description": "Snackbar after adding multiple tracks to a playlist", "placeholders": { @@ -5735,7 +5735,7 @@ } } }, - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "collectionAddedTracksToPlaylistWithExisting": "Добавлено: {count} {count, plural, =1{трек} few{трека} other{треков}} в {playlistName} ({alreadyCount} уже в плейлисте)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", "placeholders": { @@ -5759,7 +5759,7 @@ } } }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "trackReEnrichSuccessWithFailures": "Метаданные успешно дополнены ({successCount}/{total}). Ошибок: {failedCount}", "@trackReEnrichSuccessWithFailures": { "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", "placeholders": { @@ -5893,7 +5893,7 @@ "@downloadNativeWorkerSubtitle": { "description": "Setting subtitle for Android native download worker" }, - "extensionServiceStatus": "Service Status", + "extensionServiceStatus": "Состояние сервисов", "@extensionServiceStatus": { "description": "Extension detail section header for service status" }, @@ -5964,7 +5964,7 @@ "@extensionHealthNotConfigured": { "description": "Extension service health status - not configured" }, - "extensionHealthUnknown": "Unknown", + "extensionHealthUnknown": "Неизвестно", "@extensionHealthUnknown": { "description": "Extension service health status - unknown" }, @@ -6069,7 +6069,7 @@ "@storeCategoryIntegration": { "description": "Store extension category - integration" }, - "artistReleases": "Releases", + "artistReleases": "Релизы", "@artistReleases": { "description": "Section header for all artist releases" }, @@ -6077,7 +6077,7 @@ "@editMetadataSelectNone": { "description": "Button to clear selected fields for auto-fill" }, - "queueRetryAllFailed": "Retry {count} failed", + "queueRetryAllFailed": "Попытка {count} неудачна", "@queueRetryAllFailed": { "description": "Button to retry every failed download in the queue", "placeholders": { @@ -6086,7 +6086,7 @@ } } }, - "settingsSaveDownloadHistory": "Save download history", + "settingsSaveDownloadHistory": "Сохранить историю загрузок", "@settingsSaveDownloadHistory": { "description": "Settings switch title for storing completed downloads in history" }, @@ -6102,7 +6102,7 @@ "@dialogDisableHistoryMessage": { "description": "Confirmation dialog message shown before disabling download history" }, - "dialogDisableAndClear": "Turn off and clear", + "dialogDisableAndClear": "Выключить и очистить", "@dialogDisableAndClear": { "description": "Confirmation action to disable download history and clear existing entries" }, @@ -6118,11 +6118,11 @@ "@shareSheetNotFound": { "description": "Cross-service share sheet row subtitle when a service has no match" }, - "shareSheetCopyLink": "Copy Link", + "shareSheetCopyLink": "Копировать ссылку", "@shareSheetCopyLink": { "description": "Tooltip for copying a cross-service link" }, - "shareSheetLinkCopied": "{service} link copied", + "shareSheetLinkCopied": "{service} ссылка скопирована", "@shareSheetLinkCopied": { "description": "Snackbar after copying a cross-service link", "placeholders": { @@ -6153,15 +6153,15 @@ "@libraryBuiltInPlayerInfo": { "description": "Info note explaining the built-in player is for previews only" }, - "nowPlayingTitle": "Now Playing", + "nowPlayingTitle": "Сейчас играет", "@nowPlayingTitle": { "description": "Title for the now playing screen" }, - "nowPlayingNothingPlaying": "Nothing is playing", + "nowPlayingNothingPlaying": "Ничего не играет", "@nowPlayingNothingPlaying": { "description": "Empty state when no track is currently playing" }, - "nowPlayingMinimize": "Minimize", + "nowPlayingMinimize": "Свернуть", "@nowPlayingMinimize": { "description": "Tooltip for minimizing the now playing screen" }, @@ -6169,11 +6169,11 @@ "@nowPlayingUpNext": { "description": "Title for the playback queue sheet" }, - "nowPlayingPreviousTrack": "Previous track", + "nowPlayingPreviousTrack": "Предыдущий трек", "@nowPlayingPreviousTrack": { "description": "Tooltip for the previous-track playback control" }, - "nowPlayingNextTrack": "Next track", + "nowPlayingNextTrack": "Следующий трек", "@nowPlayingNextTrack": { "description": "Tooltip for the next-track playback control" }, @@ -6261,11 +6261,11 @@ "@nowPlayingShuffleLibrary": { "description": "Button label to shuffle and play the entire local library" }, - "nowPlayingQueueEmpty": "Queue is empty", + "nowPlayingQueueEmpty": "Очередь пуста", "@nowPlayingQueueEmpty": { "description": "Empty state when the playback queue has no items" }, - "nowPlayingNoMetadata": "No metadata available", + "nowPlayingNoMetadata": "Метаданные не доступны", "@nowPlayingNoMetadata": { "description": "Empty state when track metadata cannot be loaded" }, @@ -6273,7 +6273,7 @@ "@announcementUnableToOpenLink": { "description": "Snackbar shown when an announcement CTA link cannot be opened" }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "trackConvertLosslessOutputWithCap": "Lossless-вывод с ограничением {quality}", "@trackConvertLosslessOutputWithCap": { "description": "Hint shown when lossless conversion will cap bit depth or sample rate", "placeholders": { @@ -6350,11 +6350,11 @@ "@snackbarPlayingNext": { "description": "Snackbar when a track is inserted as the next queue item" }, - "snackbarAddedToQueueGeneric": "Added to queue", + "snackbarAddedToQueueGeneric": "Добавлено в очередь", "@snackbarAddedToQueueGeneric": { "description": "Snackbar when a track is added to the playback queue without naming it" }, - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "selectionDeletePlaylistsCount": "Удалить {count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}", "@selectionDeletePlaylistsCount": { "description": "Button label for deleting multiple selected playlists", "placeholders": { @@ -6383,11 +6383,11 @@ "@downloadAlbumArtistMetadataFull": { "description": "Status label when album-artist folder filtering uses full metadata" }, - "trackConvertOriginal": "Original", + "trackConvertOriginal": "Оригинал", "@trackConvertOriginal": { "description": "Label for keeping original bit depth or sample rate during conversion" }, - "trackConvertOriginalQuality": "Original quality", + "trackConvertOriginalQuality": "Исходное качество", "@trackConvertOriginalQuality": { "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" }, @@ -6395,11 +6395,11 @@ "@trackConvertLosslessSuffix": { "description": "Suffix used in converted lossless quality labels" }, - "trackConvertDithering": "Dithering", + "trackConvertDithering": "Дизеринг", "@trackConvertDithering": { "description": "Section label for lossless conversion dithering options" }, - "trackConvertResampler": "Resampler", + "trackConvertResampler": "Ресемплер", "@trackConvertResampler": { "description": "Section label for lossless conversion resampler options" },