From a4f7360336005e633916f8dffe057ba3615ebf60 Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sat, 25 Jul 2026 10:12:38 +0700 Subject: [PATCH] New translations app_en.arb (Korean) [ci skip] --- lib/l10n/arb/app_ko.arb | 474 +++++++++++++--------------------------- 1 file changed, 146 insertions(+), 328 deletions(-) diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index 4990b89b..c9372153 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -19,7 +19,7 @@ }, "navStore": "레포", "@navStore": { - "description": "Bottom navigation - Extension store tab" + "description": "Bottom navigation - Extension repo tab" }, "homeTitle": "홈", "@homeTitle": { @@ -73,10 +73,6 @@ "@settingsAppearance": { "description": "Settings section - visual customization" }, - "settingsOptions": "옵션", - "@settingsOptions": { - "description": "Settings section - app options" - }, "settingsExtensions": "확장 프로그램", "@settingsExtensions": { "description": "Settings section - extension management" @@ -145,10 +141,6 @@ "@appearanceHistoryViewGrid": { "description": "Grid layout option" }, - "optionsTitle": "옵션", - "@optionsTitle": { - "description": "Options settings page title" - }, "optionsPrimaryProvider": "기본 제공자", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -174,10 +166,6 @@ "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsSwitchBack": "확장 프로그램에서 기본 검색 제공자로 전환하려면 기본 검색 제공자를 선택하세요", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, "optionsAutoFallback": "자동 대체", "@optionsAutoFallback": { "description": "Auto-retry with other services" @@ -186,18 +174,6 @@ "@optionsAutoFallbackSubtitle": { "description": "Subtitle for auto fallback" }, - "optionsUseExtensionProviders": "확장 프로그램 사용", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "확장 프로그램 제공자가 활성화됨", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "확장 프로그램 제공자가 필요함", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, "optionsEmbedLyrics": "가사 삽입", "@optionsEmbedLyrics": { "description": "Embed lyrics in audio files" @@ -230,10 +206,6 @@ "@trackReplayGain": { "description": "Three-dot menu option to scan loudness and write ReplayGain tags" }, - "trackReplayGainSubtitle": "음량 분석 및 리플레이게인 태그 작성", - "@trackReplayGainSubtitle": { - "description": "Subtitle for the rescan ReplayGain menu option" - }, "trackReplayGainScanning": "음량을 분석하는 중...", "@trackReplayGainScanning": { "description": "Snackbar/progress message while scanning ReplayGain for a single track" @@ -310,11 +282,11 @@ }, "optionsExtensionStore": "확장 프로그램 레포", "@optionsExtensionStore": { - "description": "Show/hide store tab" + "description": "Show/hide repo tab" }, "optionsExtensionStoreSubtitle": "하단바에서 레포 탭 표시", "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" + "description": "Subtitle for extension repo toggle" }, "optionsCheckUpdates": "업데이트 확인", "@optionsCheckUpdates": { @@ -360,31 +332,6 @@ "@optionsDetailedLoggingOff": { "description": "Status when logging disabled" }, - "optionsSpotifyCredentials": "Spotify 자격 증명", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "클라이언트 ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "필수 - 탭하여 설정", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify는 사용자 고유의 API 자격 증명을 요구합니다. 'developer.spotify.com'에서 무료로 발급받으세요", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify API 변경으로 인해 Spotify 검색 기능은 2026년 3월 3일부터 더 이상 지원되지 않습니다. Deezer로 전환해 주세요", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, "extensionsTitle": "확장 프로그램", "@extensionsTitle": { "description": "Extensions page title" @@ -402,26 +349,17 @@ } } }, - "extensionsAuthor": "작성자: {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, "extensionsUninstall": "제거", "@extensionsUninstall": { "description": "Uninstall extension button" }, "storeTitle": "확장 프로그램 레포", "@storeTitle": { - "description": "Store screen title" + "description": "Repo screen title" }, "storeSearch": "확장 프로그램 검색...", "@storeSearch": { - "description": "Store search placeholder" + "description": "Repo search placeholder" }, "storeInstall": "설치", "@storeInstall": { @@ -912,14 +850,6 @@ "@snackbarHistoryCleared": { "description": "Snackbar - history deleted" }, - "snackbarCredentialsSaved": "자격 증명이 저장됨", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "자격 증명이 삭제됨", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, "snackbarDeletedTracks": "{count} 개의 {count, plural, =1{트랙} other{트랙}}이 제거됨", "@snackbarDeletedTracks": { "description": "Snackbar - tracks deleted", @@ -938,10 +868,6 @@ } } }, - "snackbarFillAllFields": "모든 항목을 입력해 주세요", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, "snackbarViewQueue": "다운로드 목록 보기", "@snackbarViewQueue": { "description": "Snackbar action - view download queue" @@ -1055,14 +981,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionRemoveCredentials": "자격 증명 제거", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "자격 증명 저장", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, "selectionSelected": "{count} 개 선택됨", "@selectionSelected": { "description": "Selection count indicator", @@ -1236,6 +1154,19 @@ "@updateNewVersionReady": { "description": "Update subtitle" }, + "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" + } + } + }, "updateCurrent": "현재 버전", "@updateCurrent": { "description": "Label for current version" @@ -1272,10 +1203,6 @@ "@providerPriorityInfo": { "description": "Info tip about fallback behavior" }, - "providerPriorityFallbackExtensionsTitle": "확장 프로그램 대체", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, "providerPriorityFallbackExtensionsDescription": "자동 대체 중에 사용할 수 있는 설치된 다운로드 확장 프로그램을 선택하세요", "@providerPriorityFallbackExtensionsDescription": { "description": "Section description for extension fallback selection" @@ -1284,10 +1211,6 @@ "@providerPriorityFallbackExtensionsHint": { "description": "Hint below the extension fallback selection list" }, - "providerBuiltIn": "레거시", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, "providerExtension": "확장 프로그램", "@providerExtension": { "description": "Label for extension-provided providers" @@ -1304,14 +1227,6 @@ "@metadataProviderPriorityInfo": { "description": "Info tip about rate limits" }, - "metadataNoRateLimits": "사용 제한 없음", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "사용 제한이 있을 수 있음", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, "logTitle": "로그", "@logTitle": { "description": "Logs screen title" @@ -1378,30 +1293,6 @@ } } }, - "credentialsTitle": "Spotify 자격 증명", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Spotify 애플리케이션 할당량을 사용하려면 클라이언트 ID와 비밀키를 입력하세요", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "클라이언트 ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "클라이언트 ID를 붙여넣으세요", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "클라이언트 비밀키", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "클라이언트 비밀키를 붙여넣으세요", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, "channelStable": "안정", "@channelStable": { "description": "Update channel - stable releases" @@ -1510,10 +1401,6 @@ "@settingsDownloadSubtitle": { "description": "Download settings description" }, - "settingsOptionsSubtitle": "대체, 메타데이터, 가사, 표지 이미지", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, "settingsExtensionsSubtitle": "다운로드 제공자 관리", "@settingsExtensionsSubtitle": { "description": "Extensions settings description" @@ -1730,27 +1617,27 @@ }, "storeFilterAll": "모두", "@storeFilterAll": { - "description": "Store filter - all extensions" + "description": "Repo filter - all extensions" }, "storeFilterMetadata": "메타데이터", "@storeFilterMetadata": { - "description": "Store filter - metadata providers" + "description": "Repo filter - metadata providers" }, "storeFilterDownload": "다운로드", "@storeFilterDownload": { - "description": "Store filter - download providers" + "description": "Repo filter - download providers" }, "storeFilterUtility": "유틸리티", "@storeFilterUtility": { - "description": "Store filter - utility extensions" + "description": "Repo filter - utility extensions" }, "storeFilterLyrics": "가사", "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" + "description": "Repo filter - lyrics providers" }, "storeFilterIntegration": "연동", "@storeFilterIntegration": { - "description": "Store filter - integrations" + "description": "Repo filter - integrations" }, "storeClearFilters": "필터 지우기", "@storeClearFilters": { @@ -1772,10 +1659,6 @@ "@storeRepoUrlHint": { "description": "Hint/placeholder for the repository URL input field" }, - "storeRepoUrlHelper": "예시: https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, "storeAddRepoButton": "레포지토리 추가", "@storeAddRepoButton": { "description": "Button to submit a new repository URL" @@ -1808,18 +1691,6 @@ "@storeEmptyNoResults": { "description": "Message when search/filter returns no results" }, - "extensionDefaultProvider": "기본 검색", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "기본 메타데이터 검색 사용", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "작성자", - "@extensionAuthor": { - "description": "Extension detail - author" - }, "extensionId": "ID", "@extensionId": { "description": "Extension detail - unique ID" @@ -2087,10 +1958,6 @@ "@downloadLossyOpus128Subtitle": { "description": "Subtitle for Opus 128kbps lossy option" }, - "qualityNote": "실제 음질은 서비스의 트랙 가용성에 따라 달라집니다", - "@qualityNote": { - "description": "Note about quality availability" - }, "downloadAskBeforeDownload": "다운로드 전 확인", "@downloadAskBeforeDownload": { "description": "Setting - show quality picker" @@ -2143,6 +2010,14 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, + "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" + }, "queueClearAll": "모두 지우기", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2175,6 +2050,27 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, + "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" + } + } + }, "albumFolderArtistAlbum": "아티스트 / 앨범", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2245,10 +2141,6 @@ } } }, - "downloadedAlbumAllSelected": "모든 트랙 선택됨", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, "downloadedAlbumTapToSelect": "트랙을 탭하여 선택하세요", "@downloadedAlbumTapToSelect": { "description": "Selection hint" @@ -2976,6 +2868,22 @@ "@cacheLibraryCoverDesc": { "description": "Description of what library cover cache contains" }, + "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" + }, "cacheExploreFeed": "탐색 피드 캐시", "@cacheExploreFeed": { "description": "Cache item title for explore home feed cache" @@ -3092,18 +3000,10 @@ "@trackSaveCoverArt": { "description": "Menu action - save album cover art as file" }, - "trackSaveCoverArtSubtitle": "표지 이미지를 .jpg 파일로 저장", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, "trackSaveLyrics": "가사 (.lrc) 저장", "@trackSaveLyrics": { "description": "Menu action - save lyrics as .lrc file" }, - "trackSaveLyricsSubtitle": "가사를 .Irc 파일로 가져와서 저장", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, "trackSaveLyricsProgress": "가사를 저장하는 중...", "@trackSaveLyricsProgress": { "description": "Snackbar while saving lyrics to file" @@ -3116,10 +3016,6 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, - "trackReEnrichFieldsTitle": "업데이트할 필드", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, "trackReEnrichFieldCover": "표지 이미지", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3203,18 +3099,6 @@ } } }, - "queueFlacFindingProgress": "FLAC 일치 항목을 찾는 중... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, "queueFlacNoReliableMatches": "선택한 항목에 대한 신뢰할 수 있는 온라인 일치 항목을 찾을 수 없음", "@queueFlacNoReliableMatches": { "description": "Snackbar when no safe FLAC redownload matches were found" @@ -3244,10 +3128,6 @@ "@trackConvertFormat": { "description": "Menu item - convert audio format" }, - "trackConvertFormatSubtitle": "AAC/M4A, MP3, Opus, ALAC 또는 FLAC으로 변환", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, "trackConvertTitle": "오디오 변환", "@trackConvertTitle": { "description": "Title of convert bottom sheet" @@ -3260,6 +3140,14 @@ "@trackConvertBitrate": { "description": "Label for bitrate selection" }, + "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" + }, "trackConvertConfirmTitle": "변환 확인", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" @@ -3291,6 +3179,18 @@ } } }, + "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" + } + } + }, "trackConvertLosslessHint": "무손실 변환 — 음질 손실 없음", "@trackConvertLosslessHint": { "description": "Hint shown when converting between lossless formats" @@ -3316,10 +3216,6 @@ "@cueSplitTitle": { "description": "Title for CUE split bottom sheet" }, - "cueSplitSubtitle": "CUE+FLAC을 개별 트랙으로 분할", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, "cueSplitAlbum": "앨범: {album}", "@cueSplitAlbum": { "description": "Album name in CUE split sheet", @@ -3416,10 +3312,6 @@ "@collectionFavoriteArtists": { "description": "Custom folder for favorite artists" }, - "collectionPlaylists": "재생목록", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, "collectionPlaylist": "재생목록", "@collectionPlaylist": { "description": "Single playlist label" @@ -3436,10 +3328,6 @@ "@collectionNoPlaylistsYet": { "description": "Empty state title when user has no playlists" }, - "collectionNoPlaylistsSubtitle": "트랙 분류를 시작하려면 재생목록을 만드세요", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, "collectionPlaylistTracks": "{count, plural, =1{1 개의 트랙} other{{count} 개의 트랙}}", "@collectionPlaylistTracks": { "description": "Track count label for custom playlists", @@ -3476,10 +3364,6 @@ } } }, - "collectionPlaylistCreated": "재생목록 만들기 완료", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, "collectionPlaylistNameHint": "재생목록 이름", "@collectionPlaylistNameHint": { "description": "Hint text for playlist name input" @@ -3496,19 +3380,6 @@ "@collectionDeletePlaylist": { "description": "Action to delete playlist" }, - "collectionDeletePlaylistMessage": "''{playlistName}''과 그 안에 있는 모든 트랙을 삭제하시겠습니까?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "재생목록 삭제 완료", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, "collectionPlaylistRenamed": "재생목록 이름 변경 완료", "@collectionPlaylistRenamed": { "description": "Snackbar after renaming playlist" @@ -3553,15 +3424,6 @@ "@collectionRemoveFromFolder": { "description": "Tooltip for removing track from wishlist/loved folder" }, - "collectionRemoved": "''{trackName}'' 제거 완료", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, "collectionAddedToLoved": "''{trackName}''이 '좋아요 표시한 음악'에 추가됨", "@collectionAddedToLoved": { "description": "Snackbar after adding track to loved folder", @@ -3705,15 +3567,15 @@ } } }, - "selectionBatchConvertProgress": "{total} 개 중 {current} 개를 변환하는 중...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "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": { - "current": { + "count": { "type": "int" }, - "total": { - "type": "int" + "format": { + "type": "String" } } }, @@ -3879,10 +3741,6 @@ "@backupImportButton": { "description": "Button to pick a backup file to restore" }, - "backupCreating": "백업을 만드는 중...", - "@backupCreating": { - "description": "Progress text while a backup is being created" - }, "backupCreated": "백업 만들기 완료", "@backupCreated": { "description": "Snackbar after a backup file is created" @@ -3891,10 +3749,6 @@ "@backupCreateFailed": { "description": "Snackbar when backup creation fails" }, - "backupEmpty": "아직 백업할 내용이 없습니다", - "@backupEmpty": { - "description": "Snackbar when there is no data to back up" - }, "backupRestoreConfirmTitle": "이 백업을 복원하시겠습니까?", "@backupRestoreConfirmTitle": { "description": "Confirmation dialog title before restoring a backup" @@ -3907,10 +3761,6 @@ "@backupRestoreConfirmButton": { "description": "Confirm button to proceed with restore" }, - "backupRestoring": "백업을 복원하는 중...", - "@backupRestoring": { - "description": "Progress text while restoring a backup" - }, "backupRestored": "백업 복원 성공", "@backupRestored": { "description": "Snackbar after a successful restore" @@ -3997,7 +3847,7 @@ "@backupIncludeSecretsDescription": { "description": "Explanation for the include-credentials toggle" }, - "backupExtensionsRestoreFailed": "{count} 개의 {count, plural, =1{확장 프로그램} other{확장 프로그램}}을 다시 설치할 수 없습니다. 스토어에서 수동으로 설치하세요", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the repo.", "@backupExtensionsRestoreFailed": { "description": "Snackbar/hint when some extensions failed to reinstall during restore", "placeholders": { @@ -4110,6 +3960,26 @@ "@storageModeSafSubtitle": { "description": "Subtitle for SAF storage mode" }, + "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" + }, "downloadFilenameDescription": "''{artist}'', ''{title}'', ''{album}'', ''{track}'', ''{year}'', ''{date}'', ''{disc}''를 자리표시자로 사용하세요", "@downloadFilenameDescription": { "description": "Description shown in filename format editor" @@ -4178,10 +4048,6 @@ "@downloadSelectServiceToEnable": { "description": "Subtitle when quality picker is disabled due to extension service" }, - "downloadSelectTidalQobuz": "음질을 선택하려면 음질 옵션이 있는 제공자를 선택하세요", - "@downloadSelectTidalQobuz": { - "description": "Legacy info shown when a provider does not expose quality options" - }, "downloadEmbedLyricsDisabled": "먼저 메타데이터 삽입을 활성화하세요", "@downloadEmbedLyricsDisabled": { "description": "Subtitle when lyrics embedding is blocked by metadata toggle" @@ -4430,10 +4296,6 @@ } } }, - "queueDownloadedHeader": "다운로드됨", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, "queueFilteringIndicator": "필터링하는 중...", "@queueFilteringIndicator": { "description": "Shown while filter results are being computed" @@ -4588,15 +4450,6 @@ "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" }, - "extensionsSearchWith": "{providerName}으로 검색", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, "extensionsHomeFeedProvider": "홈 피드 제공자", "@extensionsHomeFeedProvider": { "description": "Extensions page - label for home feed provider selector" @@ -4634,14 +4487,6 @@ "@extensionsNoHomeFeedExtensions": { "description": "Extensions page - shown when no installed extension has home feed" }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, "cancelDownloadTitle": "다운로드를 취소하시겠습니까?", "@cancelDownloadTitle": { "description": "Dialog title when confirming cancellation of an active download" @@ -4676,34 +4521,6 @@ } } }, - "errorLoadAlbum": "앨범 불러오기 실패", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" - }, - "errorLoadPlaylist": "재생목록 불러오기 실패", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" - }, - "errorLoadArtist": "아티스트 불러오기 실패", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" - }, - "notifChannelDownloadName": "다운로드 진행률", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "트랙 다운로드 진행률 표시", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "라이브러리 스캔", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "로컬 라이브러리 스캔 진행률을 표시합니다", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, "notifDownloadingTrack": "''{trackName}''를 다운로드하는 중", "@notifDownloadingTrack": { "description": "Notification title while downloading a track", @@ -4770,6 +4587,14 @@ } } }, + "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" + }, "notifAllDownloadsComplete": "모든 다운로드 완료", "@notifAllDownloadsComplete": { "description": "Notification title when all downloads finish successfully" @@ -4956,14 +4781,6 @@ "@actionPaste": { "description": "Generic action - paste from clipboard" }, - "searchTracksHint": "트랙 검색...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "트랙 검색", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, "tutorialSearchHint": "붙여넣기 또는 검색...", "@tutorialSearchHint": { "description": "Placeholder shown in the tutorial search demo" @@ -4992,14 +4809,6 @@ "@optionsEmbedMetadataSubtitleOff": { "description": "Subtitle when metadata embedding is disabled" }, - "optionsMaxQualityCoverSubtitleDisabled": "메타데이터 삽입이 꺼져 있을 때 비활성화됨", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, "trackCoverNoEmbeddedArt": "내장된 표지 이미지가 없음", "@trackCoverNoEmbeddedArt": { "description": "Message shown when a track file has no embedded cover art" @@ -5239,14 +5048,6 @@ } } }, - "optionsDefaultSearchTabAlbums": "앨범", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "트랙", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, "settingsFiles": "파일 & 폴더", "@settingsFiles": { "description": "Settings menu item - file and folder settings" @@ -5307,10 +5108,26 @@ "@downloadDeduplicationEnabled": { "description": "Subtitle when deduplication is on" }, + "downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped", + "@downloadDeduplicationWithQualityVariants": { + "description": "Deduplication subtitle when separate quality versions are allowed" + }, "downloadDeduplicationDisabled": "기록과 관계없이 모든 트랙이 다운로드됩니다", "@downloadDeduplicationDisabled": { "description": "Subtitle when deduplication is off" }, + "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" + }, "downloadFallbackExtensions": "대체 확장 프로그램", "@downloadFallbackExtensions": { "description": "Settings item for configuring fallback extension providers" @@ -5451,6 +5268,11 @@ } }, "queueDownloadStarting": "시작하는 중...", + "queueCheckingDownloadSession": "Checking download session...", + "queueResolvingDownloadMetadata": "Resolving track metadata...", + "queueResolvingDownloadStream": "Preparing audio stream...", + "queueWaitingForVerification": "Waiting for verification...", + "queueResumingAfterVerification": "Resuming after verification...", "@queueDownloadStarting": { "description": "Queue status before download progress is available" }, @@ -5539,7 +5361,7 @@ "@downloadNativeWorker": { "description": "Setting title for Android native download worker" }, - "downloadNativeWorkerSubtitle": "확장 프로그램용 베타 Android 서비스 워커", + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", "@downloadNativeWorkerSubtitle": { "description": "Setting subtitle for Android native download worker" }, @@ -5699,10 +5521,6 @@ "@errorInvalidFolderSelected": { "description": "Error when the selected folder is invalid" }, - "errorCouldNotKeepFolderAccess": "선택한 폴더에 대한 접근 권한을 유지할 수 없습니다", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, "storeAnyVersion": "모든", "@storeAnyVersion": { "description": "Store detail value when any app version is accepted"