{
  "subtitlePrimary": "Your subscriptions, zero noise.",
  "subtitleSecondary": "No Algorithm, just your favorite channels.",
  "subscriptions": "Subscriptions",
  "showSubscriptions": "Show subscriptions",
  "hideSubscriptions": "Hide subscriptions",
  "filters": "Filters",
  "themeLabel": "Theme: {mode} {icon}",
  "themeLight": "Light",
  "themeDark": "Dark",
  "importSubscriptions": "Import subscriptions",
  "importChannels": "Update channels",
  "signOut": "Logout",
  "signInWithGoogle": "Sign in with Google",
  "signedInAs": "Signed in as {name}",
  "notSignedIn": "Not signed in",
  "securityReminderMissingTotpOrPasskey": "Protect your account: enable a passkey or TOTP code from My account.",
  "deviceLabel": "Device: {device}",
  "hide": "Hide",
  "menu": "Menu",
  "searchPlaceholder": "Search videos",
  "searchAriaLabel": "Search videos",
  "searchChannelsLabel": "Search channels",
  "searchChannelsPlaceholder": "Search channel",
  "searchChannelsAriaLabel": "Search channel",
  "clearChannelSearch": "Clear channel search",
  "unwatched": "Unwatched",
  "lastMonth": "Last month",
  "refresh": "Refresh videos",
  "continueWatching": "Continue watching",
  "showContinueWatching": "Show continue watching",
  "hideContinueWatching": "Hide continue watching",
  "videos": "Videos",
  "videosRecent30Days": "Videos (< 7 days)",
  "shorts": "Shorts",
  "shortsRecent30Days": "Shorts (< 7 days)",
  "olderVideosShorts": "Videos & Shorts (> 7 days)",
  "watchedVideos": "Watched videos",
  "showWatchedVideos": "Show watched videos",
  "hideWatchedVideos": "Hide watched videos",
  "lastUpdatedNone": "Last updated: not yet.",
  "lastUpdatedRelative": "Last updated {relative}.",
  "lastUpdatedAbsolute": "Last updated {date}.",
  "searchResults": "Search results for \"{query}\"",
  "clear": "Clear",
  "statusSignInGoogle": "Sign in with Google to continue.",
  "statusSignInGoogleOrPasskey": "Sign in with Google or a passkey to continue.",
  "statusSignInGoogleOrCode": "Sign in with Google or a device code to continue.",
  "statusSignInGoogleOrPasskeyOrCode": "Sign in with Google, a passkey, or a device code to continue.",
  "statusSelectUser": "Select a user to continue.",
  "statusSelectUserOrPasskey": "Select a user or use a passkey to continue.",
  "statusSelectUserOrCode": "Select a user or use a device code to continue.",
  "statusSelectUserPasskeyOrCode": "Select a user, use a passkey, or use a device code to continue.",
  "googleSignInFailed": "Google sign-in failed. Please try again.",
  "googleLoginUnavailable": "Google login not available.",
  "signInWithDeviceCode": "Code",
  "approveDeviceCode": "Approve device code",
  "pairingLoginTitle": "Sign in with device code",
  "pairingLoginDescription": "Use a device code when another signed-in device is nearby to approve this sign-in.",
  "pairingCodeLabel": "Device code",
  "pairingCodeRequired": "Enter the device code.",
  "pairingCodeStarting": "Generating device code...",
  "pairingCodeWaiting": "Waiting for approval from another signed-in device.",
  "pairingCodeApproved": "Approved. Finishing sign-in...",
  "generateNewDeviceCode": "Generate new code",
  "unableStartDeviceCode": "Unable to generate a device code.",
  "unableClaimDeviceCode": "Unable to finish sign-in with this device code.",
  "deviceCodeSignInSuccess": "Signed in with device code.",
  "pairingApproveTitle": "Approve device sign-in",
  "pairingApproveDescription": "Enter the device code shown on the TV or secondary device you want to sign in.",
  "approvingDeviceCode": "Approving device code...",
  "unableApproveDeviceCode": "Unable to approve this device code.",
  "deviceCodeApprovedSuccess": "Device code approved.",
  "signInWithPasskey": "Passkey",
  "signingInWithPasskey": "Signing in with passkey...",
  "unableSignInWithPasskey": "Unable to sign in with passkey.",
  "passkeySignInSuccess": "Signed in with passkey.",
  "unableToLoadAccounts": "Unable to load Google accounts.",
  "unableSwitchAccount": "Unable to switch Google account.",
  "managePasskeys": "Manage passkeys",
  "manageMfa": "Manage MFA",
  "adminPanel": "Administration",
  "adminObservability": "Admin observability",
  "adminObservabilityDescription": "Inspect process-local SQLite metrics and toggle detailed write capture for this backend node.",
  "adminSecuritySettings": "Security settings",
  "adminPasswordPolicyDescription": "Choose how strict local account passwords must be for this installation.",
  "adminRefreshScheduleDescription": "Configure the global scheduled refresh hours for the whole installation.",
  "adminRefreshScheduleUpdated": "Global schedule saved.",
  "unableSaveAdminRefreshSchedule": "Unable to save the global schedule.",
  "saveScheduleSettings": "Save schedule",
  "saveSecuritySettings": "Save security settings",
  "unableLoadAdminPasswordPolicy": "Unable to load password policy.",
  "unableSaveAdminPasswordPolicy": "Unable to save password policy.",
  "adminPasswordPolicyUpdated": "Password policy updated.",
  "adminUserManagement": "User management",
  "adminUserManagementDescription": "Inspect users, disable accounts, and issue temporary passwords.",
  "adminUserSearchPlaceholder": "Search by username, email, or display name",
  "adminNoUsers": "No users found.",
  "adminUserSummary": "Username: {username} · Active: {status} · Admin: {admin}",
  "adminHasPassword": "Has password",
  "adminNoPassword": "No password",
  "adminMustChangePassword": "Must change password",
  "adminDisableUser": "Disable",
  "adminEnableUser": "Enable",
  "adminResetPassword": "Reset password",
  "adminTemporaryPasswordPlaceholder": "Temporary password",
  "adminTemporaryPasswordRequired": "Enter a temporary password first.",
  "unableLoadAdminUsers": "Could not load admin users.",
  "unableUpdateAdminUser": "Could not update the user.",
  "unableResetAdminPassword": "Could not reset the password.",
  "adminUserUpdated": "User updated.",
  "adminPasswordResetSuccess": "Temporary password saved. The user must change it on next login.",
  "adminRenameUser": "Rename",
  "adminRenameUserPlaceholder": "New username",
  "adminDeleteUser": "Delete",
  "adminDeleteUserConfirm": "Permanently delete user {user}? This cannot be undone.",
  "adminUserDeleted": "User deleted.",
  "refreshAdminObservability": "Refresh metrics",
  "enableAdminObservability": "Enable detailed metrics",
  "disableAdminObservability": "Disable detailed metrics",
  "unableLoadAdminObservability": "Unable to load admin observability.",
  "unableToggleAdminObservability": "Unable to update admin observability.",
  "unableLoadAdminRuntimeState": "Unable to load admin runtime state.",
  "adminObservabilityRefreshed": "Admin observability refreshed.",
  "adminObservabilityUpdated": "Admin observability updated.",
  "adminMetricsEnabled": "Detailed metrics",
  "adminMetricsThreshold": "Slow threshold (ms)",
  "adminMetricsWriteCount": "Writes",
  "adminMetricsWriteAvg": "Avg write (ms)",
  "adminMetricsWriteMax": "Max write (ms)",
  "adminMetricsSlowWrites": "Slow writes",
  "adminMetricsLockErrors": "Lock errors",
  "adminMetricsActiveRefreshes": "Active refreshes",
  "adminRecentWrites": "Recent writes",
  "adminNoRecentWrites": "No recent writes captured yet.",
  "adminRuntimeState": "Sessions and devices",
  "adminRuntimeSessionOpen": "Session open",
  "adminRuntimeSessionClosed": "No active session",
  "adminRuntimeUserSummary": "Devices: {devices} · Active session: {session}",
  "adminNoRuntimeUsers": "No active sessions or devices found.",
  "adminPageEyebrow": "Control center",
  "adminPageTitle": "YTCV MANAGER",
  "adminPageSubtitle": "Inspect the system, manage users, and operate the installation.",
  "adminPageHeaderDescription": "",
  "adminPageNavSummary": "Summary",
  "adminPageNavTimezone": "Timezone",
  "adminPageNavUsers": "Users",
  "adminPageNavSecurity": "Security",
  "adminPageNavLogs": "Logs",
  "adminPageNavRuntime": "Runtime",
  "adminPageNavOperations": "Operations",
  "adminPageRefresh": "Refresh",
  "adminPageOpenLogs": "Open logs",
  "adminPageOpenLibrary": "Open library",
  "adminPageBackToApp": "Back to app",
  "adminPageCreateUser": "Create user",
  "adminPageLoading": "Loading admin data...",
  "adminPageLoaded": "Admin data refreshed.",
  "adminPageLoadError": "Could not load the admin page.",
  "adminPageSummaryTitle": "System summary",
  "adminSummaryUsersTotal": "Users",
  "adminSummaryUsersActive": "Active users",
  "adminSummaryAdmins": "Admins",
  "adminSummaryUsersDisabled": "Disabled users",
  "adminSummaryDevices": "Devices",
  "adminSummaryChannels": "Channels",
  "adminSummaryQuotaUsed": "YouTube tokens / day",
  "adminSummaryRefreshMode": "Video refresh mode",
  "adminSummaryRefreshModeValuehybrid": "Hybrid",
  "adminSummaryRefreshModeValuerss_preferred": "RSS preferred",
  "adminSummaryRefreshModeValueapi_only": "API only",
  "adminSummaryRssIncomplete": "Incomplete RSS videos",
  "adminSummaryFeedErrors": "Channels with feed errors",
  "adminQuotaUsedToday": "Used today",
  "adminQuotaRemainingToday": "Remaining",
  "adminQuotaReservedScheduled": "Global reserve",
  "adminQuotaState": "Quota state",
  "adminQuotaStateActive": "Available",
  "adminQuotaStatePaused": "Paused by YouTube",
  "adminQuotaPausedUntil": "Paused until",
  "adminQuotaResetAppTimezone": "App reset",
  "adminQuotaResetOfficial": "Official Pacific reset",
  "adminSummaryVideos": "Videos",
  "adminSummaryUnclassified": "Unclassified channels",
  "adminSummaryActiveRefreshes": "Active refreshes",
  "adminSummaryRefreshIdle": "Idle",
  "adminSummaryRefreshIdleSub": "Last run available in runtime data",
  "adminSummaryRefreshBusy": "Busy",
  "adminSummaryRefreshBusySub": "{count} refreshes running",
  "adminTimezoneTitle": "Timezone",
  "adminTimezoneDescription": "Global installation timezone. It applies to the scheduler and log time presentation.",
  "adminTimezoneQuotaInfoTitle": "Official token reset",
  "adminTimezoneQuotaInfoDescription": "YouTube resets the official quota at 00:00 Pacific Time. In this installation that means {appReset} ({appTimezone}). Official reference: {officialReset} ({officialTimezone}).",
  "quotaOfficialTimezoneLabel": "Pacific Time",
  "adminTimezoneApply": "Apply",
  "adminTimezoneUpdated": "Timezone updated.",
  "adminTimezoneUpdateError": "Unable to update timezone.",
  "adminVideoRefreshModeTitle": "Video refresh mode",
  "adminVideoRefreshModeDescription": "Controls how new videos are discovered and completed during refresh operations.",
  "adminVideoRefreshModeApply": "Apply mode",
  "adminVideoRefreshModeUpdated": "Video refresh mode updated.",
  "adminVideoRefreshModeUpdateError": "Unable to update the video refresh mode.",
  "adminVideoRefreshModeLabel_hybrid": "Hybrid",
  "adminVideoRefreshModeLabel_rss_preferred": "RSS preferred",
  "adminVideoRefreshModeLabel_api_only": "API only",
  "adminVideoRefreshModeHint_hybrid": "Default. Uses RSS to discover updates and the API only to complete new videos. Falls back to a full API refresh if the feed fails.",
  "adminVideoRefreshModeHint_rss_preferred": "Saves more tokens. Uses RSS to discover updates and the API only to complete new videos.",
  "adminVideoRefreshModeHint_rss_preferred_prefix": "Saves more tokens. Uses RSS to discover updates and the API only to complete new videos.",
  "adminVideoRefreshModeHint_api_only": "Legacy mode. Every channel refresh uses the full YouTube API path and consumes more tokens.",
  "adminVideoRefreshModeWarning_rss_preferred": "If the feed fails, it does not fall back to the full API refresh.",
  "adminVideoRefreshModeConfirm_hybrid": "Apply Hybrid mode: RSS discovery plus targeted API completion for new videos, with full API fallback if the feed fails?",
  "adminVideoRefreshModeConfirm_rss_preferred": "Apply RSS preferred mode: RSS discovery plus targeted API completion for new videos, without full API fallback if the feed fails?",
  "adminVideoRefreshModeConfirm_api_only": "Warning: API only mode will consume more tokens because every channel refresh will use the full YouTube API path. Continue?",
  "adminPasswordPolicyTitle": "Password policy",
  "adminPasswordPolicyLabel_simple": "Simple",
  "adminPasswordPolicyLabel_strong": "Strong",
  "adminPasswordPolicyLabel_unbreakable": "Very strong",
  "adminPasswordPolicyHint_simple": "Simple. Minimum {min} characters. Use letters and numbers.",
  "adminPasswordPolicyHint_strong": "Strong. Minimum {min} characters. Must combine uppercase, lowercase, and numbers.",
  "adminPasswordPolicyHint_unbreakable": "Very strong. Minimum {min} characters. Must combine uppercase, lowercase, numbers, and common symbols like @ # $ & / ( ) * . \" ! ? = · -.",
  "adminRefreshScheduleTitle": "Global scheduled hours",
  "adminRefreshScheduleCurrent": "Active schedule",
  "adminRefreshScheduleLastRun": "Last global run: {value}",
  "adminRefreshScheduleNotRunYet": "No scheduled global update has run yet.",
  "adminPageSecurityMetricsTitle": "Security summary",
  "adminPageUsersWithPassword": "Users with password",
  "adminPageUsersWithTotp": "Users with TOTP",
  "adminPageUsersMustChangePassword": "Pending password changes",
  "adminPageUsersInactive": "Inactive users",
  "adminPageLogsTitle": "Logs",
  "adminLogsLevelsLabel": "Levels",
  "adminLogsLevelAll": "All",
  "adminLogsLevelCritical": "Critical",
  "adminLogsLevelError": "Error",
  "adminLogsLevelWarning": "Warning",
  "adminLogsLevelInfo": "Info",
  "adminLogsLevelDebug": "Debug",
  "adminLogsSearchLabel": "Search",
  "adminLogsSearchPlaceholder": "Search logs",
  "adminLogsTrackingLabel": "Tracking ID",
  "adminLogsApply": "Filter",
  "adminLogsLive": "Live",
  "adminLogsRuntimeTitle": "Runtime",
  "adminLogsApplyLevel": "Apply level",
  "adminLogsLevelUpdated": "Log level updated.",
  "adminLogsLevelUpdatedRestart": "Log level updated. Restart recommended to apply it to all workers.",
  "adminLogsLevelUpdateError": "Unable to update log level.",
  "adminLogsRuntimeLevel": "Level",
  "adminLogsRuntimeConfiguredLevel": "Configured level",
  "adminLogsRuntimeLevelMismatch": "Active level differs, restart to apply",
  "adminLogsRuntimeRotate": "Rotate",
  "adminLogsRuntimeMaxFileSize": "Max file size",
  "adminLogsRuntimeBackupsKept": "Backups kept",
  "adminLogsRuntimeTimestamps": "Log timestamps",
  "adminLogsEnabled": "Enabled",
  "adminLogsDisabled": "Disabled",
  "adminLogsLocalServerTime": "Local server time",
  "adminLogsEntriesTitle": "Entries",
  "adminLogsRecentErrorsTitle": "Recent errors",
  "adminLogsNoRecentErrors": "No recent errors",
  "adminLogsLoadMore": "Load more",
  "adminLogsEntriesCount": "entries",
  "adminLogsReview": "Review",
  "adminLogsLoadError": "Unable to load logs.",
  "adminPageTechnicalTitle": "Technical status",
  "adminTechnicalDescription": "Backend health, active refreshes, and quick access to integrated logs.",
  "adminTechnicalHint": "These metrics describe this backend node. They help detect SQLite lock issues, concurrent refreshes, or detailed capture being enabled.",
  "adminPageOperationsTitle": "System operations",
  "adminPageOperationsDescription": "Use the admin page for operational supervision. Recovery resets still run from stack variables when explicitly enabled.",
  "adminPageRecoveryHint": "Admin recovery keeps the database and user content intact. It only demotes and disables current admins before reopening bootstrap.",
  "adminPageLastSession": "Last session",
  "adminPageBadgeAdmin": "Admin",
  "adminPageBadgeActive": "Active",
  "adminPageBadgeDisabled": "Disabled",
  "adminTableUser": "User",
  "adminTableName": "Name",
  "adminTableAuth": "Auth",
  "adminTableAdmin": "Admin",
  "adminTableTotp": "TOTP",
  "adminTableActive": "Active",
  "adminTableLastSession": "Last session",
  "adminTableDevices": "Devices",
  "adminTableActions": "Actions",
  "dockFilters": "Dock filters",
  "undockFilters": "Undock filters",
  "signInWithTotpOrRecovery": "Sign in with TOTP / recovery code",
  "fallbackLoginTitle": "Sign in with code",
  "fallbackLoginDescription": "Use your username or email together with a TOTP code or a recovery code.",
  "fallbackIdentifierLabel": "Username or email",
  "fallbackIdentifierPlaceholder": "you@example.com",
  "fallbackIdentifierRequired": "Enter your username or email.",
  "fallbackLoginCodeLabel": "Authentication code",
  "fallbackLoginCodePlaceholder": "Enter code",
  "fallbackLoginCodeRequired": "Enter your authentication code.",
  "signInWithTotp": "Sign in with TOTP",
  "signInWithRecoveryCode": "Sign in with recovery code",
  "signingInWithTotp": "Signing in with TOTP...",
  "signingInWithRecoveryCode": "Signing in with recovery code...",
  "unableFallbackLogin": "Unable to sign in with the provided code.",
  "fallbackLoginSuccess": "Signed in with fallback code.",
  "yes": "Yes",
  "no": "No",
  "passkeyModalDescription": "Register a new passkey on this device or remove an existing one.",
  "passkeyLabelField": "Passkey label",
  "passkeyLabelPlaceholder": "e.g. MacBook Pro",
  "registerPasskey": "Register passkey",
  "registeringPasskey": "Registering passkey...",
  "passkeyRegistered": "Passkey registered.",
  "unableRegisterPasskey": "Unable to register passkey.",
  "unableLoadPasskeys": "Unable to load passkeys.",
  "deletePasskey": "Delete passkey",
  "passkeyDeleted": "Passkey deleted.",
  "unableDeletePasskey": "Unable to delete passkey.",
  "noPasskeysYet": "No passkeys registered yet.",
  "unnamedPasskey": "Unnamed passkey",
  "passkeyNotSupported": "Passkeys are not supported in this browser.",
  "mfaModalDescription": "Configure a TOTP authenticator and manage recovery codes for this account.",
  "mfaStatusHeading": "MFA status",
  "mfaEnabledYes": "TOTP is enabled.",
  "mfaEnabledNo": "TOTP is not enabled yet.",
  "mfaPendingYes": "A TOTP setup is pending confirmation.",
  "mfaPendingNo": "No pending TOTP setup.",
  "recoveryCodesRemaining": "Recovery codes remaining: {count}",
  "startTotpSetup": "Start TOTP setup",
  "startingTotpSetup": "Starting TOTP setup...",
  "unableStartTotpSetup": "Unable to start TOTP setup.",
  "totpSecretLabel": "Authenticator secret",
  "totpAppHint": "Add this secret to your authenticator app and enter the current 6-digit code below.",
  "totpCodeLabel": "Authenticator code",
  "totpCodePlaceholder": "123456",
  "totpCodeRequired": "Enter the current authenticator code.",
  "confirmTotpSetup": "Confirm TOTP setup",
  "confirmingTotpSetup": "Confirming TOTP setup...",
  "unableConfirmTotpSetup": "Unable to confirm TOTP setup.",
  "totpSetupStarted": "TOTP setup started.",
  "totpEnabledSuccess": "TOTP enabled.",
  "recoveryCodesHeading": "Recovery codes",
  "regenerateRecoveryCodes": "Regenerate recovery codes",
  "regeneratingRecoveryCodes": "Regenerating recovery codes...",
  "unableRegenerateRecoveryCodes": "Unable to regenerate recovery codes.",
  "recoveryCodesRegenerated": "Recovery codes regenerated.",
  "unableLoadMfaStatus": "Unable to load MFA status.",
  "completeMfaChallenge": "Complete MFA",
  "mfaChallengeRequired": "Complete MFA to continue.",
  "mfaChallengeDescription": "Enter a TOTP code or use a recovery code to finish signing in.",
  "mfaChallengeForUser": "Complete MFA for {user}. Enter a TOTP code or use a recovery code to continue.",
  "verifyTotpCode": "Verify TOTP code",
  "useRecoveryCode": "Use recovery code",
  "verifyingTotpCode": "Verifying TOTP code...",
  "verifyingRecoveryCode": "Verifying recovery code...",
  "unableVerifyMfaChallenge": "Unable to complete MFA challenge.",
  "mfaChallengeCompleted": "MFA challenge completed.",
  "switchUser": "Switch user",
  "switchAccount": "Switch account",
  "accountSwitcherTitle": "Switch account",
  "accountSwitcherDescription": "Choose one of the users available on this device or use Other account to go to the normal login.",
  "addGoogleAccount": "Add Google account",
  "otherAccount": "Other account",
  "noGoogleAccountsYet": "No users available on this device yet.",
  "currentAccountLabel": "Current",
  "newUser": "New user",
  "selectUser": "Select user",
  "noUsersYet": "No users yet",
  "createUserTitle": "Create user",
  "createUserDescription": "Choose a username to start your session.",
  "usernameLabel": "Username",
  "createAndSignIn": "Create and sign in",
  "cancel": "Cancel",
  "confirm": "Confirm",
  "confirmTitle": "Please confirm",
  "confirmDeviceTitle": "Confirm your device",
  "confirmDeviceMessage": "We detected you're using a {device}. Is this correct?",
  "confirmDeviceLegend": "Choose device type",
  "unableConfirmDeviceType": "Unable to save device type.",
  "deviceTypeTv": "TV",
  "deviceTypeTablet": "TABLET",
  "deviceTypeMobile": "MOBILE",
  "deviceTypeDesktop": "DESKTOP",
  "apiClientNotReady": "API client not ready.",
  "unableToLoadUsers": "Unable to load users.",
  "usernameRequired": "Username is required.",
  "usernameInvalid": "Use only letters and numbers.",
  "unableCreateUser": "Unable to create user.",
  "signingIn": "Signing in...",
  "signInFailed": "Sign-in failed.",
  "unableVerifySession": "Unable to verify session.",
  "refreshInProgress": "Refreshing channels and videos from YouTube",
  "refreshProgressChannels": "Refreshing channels and videos from YouTube",
  "refreshProgressWaiting": "Preparing refresh...",
  "refreshProgressRunning": "Refreshing channels and videos from YouTube",
  "refreshProgressDone": "Refresh complete. {count} new videos.",
  "refreshProgressError": "Refresh stopped before completion.",
  "refreshProgressCooldown": "Please wait a bit before updating again. Try again in about {minutes} min.",
  "refreshProgressAlreadyRunning": "A refresh is already running.",
  "refreshProgressGlobalRunning": "A global update is running right now. When it finishes, your videos will be up to date.",
  "updateAvailableReload": "New updates!",
  "updateAvailableClick": "Click to load the new version.",
  "updateAvailableReloading": "Loading the new version...",
  "headerContextOverviewEyebrow": "Global overview",
  "headerContextOverviewTitle": "Your library",
  "headerContextOverviewDescription": "{count} subscriptions ready to browse.",
  "headerContextOverviewEmpty": "Import your subscriptions to fill the library.",
  "headerContextChannelEyebrow": "Selected channel",
  "headerContextChannelFallback": "No channel description yet.",
  "headerMetricSubscriptions": "Subscriptions",
  "headerMetricUnwatched": "Unwatched",
  "headerMetricUpdated": "Updated",
  "headerMetricUnclassified": "Unclassified",
  "headerMetricCategory": "Category",
  "headerMetricRecent": "7 days",
  "headerMetricNone": "No data",
  "importFailed": "Subscriptions imported. Refresh videos failed.",
  "noSubscriptions": "No subscriptions yet.",
  "noChannelsMatch": "No channels match the current filters.",
  "noChannelsSearchMatch": "No channels match this search.",
  "loadingChannels": "Loading channels...",
  "loadingContent": "Loading...",
  "loadingVideos": "Loading videos...",
  "loadingShorts": "Loading shorts...",
  "loadingOlder": "Loading older videos...",
  "loadingWatched": "Loading watched videos...",
  "allChannels": "All",
  "noVideosToDisplay": "No videos to display yet.",
  "channelThumbnailAlt": "Channel thumbnail",
  "unknownChannel": "Unknown",
  "unableRefreshVideos": "Unable to refresh videos.",
  "refreshCooldownActive": "Please wait a bit before updating again. You can try again in about {minutes} min.",
  "refreshAlreadyRunning": "A refresh is already running.",
  "refreshProgressScheduledPriority": "Refresh is not available right now. The scheduled update has priority.",
  "refreshScheduledPriority": "Refresh is not available right now. The scheduled update has priority.",
  "refreshGlobalRunning": "A global update is running right now. When it finishes, your videos will be up to date.",
  "refreshProgressQuotaExhausted": "YouTube quota is exhausted. Updates are paused until the next official reset.",
  "refreshQuotaExhausted": "YouTube quota is exhausted. Updates are paused until the next official reset.",
  "newVideosFound": "{count} new videos found.",
  "importingSubscriptions": "Importing subscriptions...",
  "importingSubscriptionsProgress": "Importing subscriptions ({processed}/{total})...",
  "importingSubscriptionsProgressPartial": "Importing subscriptions ({processed})...",
  "unableImportSubscriptions": "Unable to import subscriptions.",
  "importSummary": "Imported {subscriptions} subscriptions, {channels} channels, {videos} videos.",
  "allSubscriptionsUpToDate": "All subscriptions are up to date.",
  "signInBeforeImport": "Sign in before importing subscriptions.",
  "missingConfig": "Missing APP_CONFIG.",
  "viewOnGitHub": "View project on GitHub",
  "scrollLeft": "Scroll left",
  "scrollRight": "Scroll right",
  "videoCarousel": "Video carousel",
  "nowPlaying": "Now playing",
  "nowPlayingChannel": "Now playing from {channel}",
  "openOnYouTube": "Open on YouTube",
  "copyVideoUrl": "Copy URL",
  "copiedToClipboard": "Copied!",
  "markWatched": "Mark watched",
  "removeFromContinueWatching": "Remove from Continue watching",
  "addToContinueWatching": "Add to Continue watching",
  "saveForLater": "Watch later",
  "skipContinueWatching": "Do not add",
  "savingContinueWatching": "Saving...",
  "showMore": "Show more",
  "showLess": "Show less",
  "playerActionsLabel": "Actions",
  "untitledVideo": "Untitled video",
  "watchedBadge": "Watched",
  "playerCloseConfirmMessage": "You haven't finished this video. What would you like to do?",
  "playerContinueLater": "Continue later",
  "playerSaveToContinueWatchingMessage": "You watched a meaningful part of this video. Add it to Continue watching?",
  "timeJustNow": "just now",
  "timeAgo": "{count} {unit} ago",
  "timeYear": "year",
  "timeYearPlural": "years",
  "timeMonth": "month",
  "timeMonthPlural": "months",
  "timeWeek": "week",
  "timeWeekPlural": "weeks",
  "timeDay": "day",
  "timeDayPlural": "days",
  "timeHour": "hour",
  "timeHourPlural": "hours",
  "timeMinute": "minute",
  "timeMinutePlural": "minutes",
  "timeSecond": "second",
  "timeSecondPlural": "seconds",
  "modalMessageTitle": "Message",
  "modalClose": "Close",
  "modalOk": "OK",
  "subscriptionsAria": "Subscribed channels",
  "filtersAria": "Video filters",
  "signedInAsPrefix": "Signed in as",
  "searchLabel": "Search",
  "close": "Close",
  "openMenu": "Open menu",
  "menuLabel": "App menu",
  "menuSectionAccount": "Account",
  "menuSectionChannels": "Channels",
  "menuSectionViewing": "Viewing",
  "menuSectionSystem": "System",
  "menuGestorLabel": "Manager",
  "mobileNavigationLabel": "Mobile navigation",
  "mobileTabHome": "Home",
  "mobileTabChannels": "Channels",
  "mobileTabCategories": "Categories",
  "mobileTabSettings": "Settings",
  "mobileSettingsTitle": "Settings",
  "mobileSettingsHeroTitle": "Ready on this screen",
  "mobileSettingsHeroGuest": "Sign in to sync channels, progress, and preferences.",
  "mobileSettingsHeroSignedIn": "Signed in as {name}. Shortcuts below open your account, content, and display controls.",
  "mobileSettingsStatusLabel": "Status",
  "mobileSettingsVersionLabel": "Version",
  "mobileSettingsAccountCopy": "Profile and session",
  "mobileSettingsChannelsCopy": "Import and refresh",
  "mobileSettingsViewingCopy": "Filters and appearance",
  "mobileSettingsSystemCopy": "Language and tools",
  "mobileChannelsCount": "{count} channels",
  "mobileChannelNoRecentVideo": "No recent video",
  "tvQuickActionsLabel": "TV quick actions",
  "reportIssue": "Report issue",
  "categoryGuideLabel": "Category guide",
  "deviceTypeMenuLabel": "Device type",
  "displayModeMenuLabel": "Display setup",
  "displaySetupTitle": "Display setup",
  "displaySetupDescription": "Choose the device type and frontend layout for this device.",
  "displayModeTitle": "Display mode",
  "displayModeDescription": "Choose how this device should render the app. TV mode can also store a larger UI scale.",
  "displayModeLegend": "Preferred layout mode",
  "displayModePhone": "Phone",
  "displayModeDesktopTablet": "Desktop / Tablet",
  "displayModeTv": "TV",
  "tvScaleLabel": "TV scale",
  "tvScaleRecommendationLabel": "Recommended TV scale",
  "tvScaleRecommendationValue": "Recommended scale: {scale}",
  "useRecommendedTvScale": "Use recommended scale",
  "tvAdvanced": "Advanced TV",
  "tvScalePreviewTitle": "TV preview",
  "tvScalePreviewBody": "This preview shows how text and spacing will feel from the sofa.",
  "tvScalePreviewMeta": "Use a larger scale for longer viewing distances.",
  "tvScalePreviewMetaValue": "Active scale: {scale}",
  "tvScreenSizeLabel": "Screen size (inches)",
  "tvViewingDistanceLabel": "Viewing distance (m)",
  "categoryGuideTitle": "How categories work",
  "categoryGuideIntro": "We automatically organize channels into themes so you can browse faster.",
  "categoryGuideStep1": "Auto: we use channel metadata, YouTube video categories, and recent video text.",
  "categoryGuideStep2": "Manual: click the small icon next to a channel to change its theme.",
  "categoryGuideStep3": "Your choice wins: manual changes are kept.",
  "categoryGuideStep4": "Use \"Reclassify channels\" if you want the system to try again.",
  "reclassifyChannels": "Reclassify channels",
  "reclassifying": "Reclassifying...",
  "reclassifyConfirmMessage": "All channels will be reclassified. This can take a while. Do you want to continue?",
  "reclassifyError": "Unable to reclassify channels.",
  "autoUpdatesLabel": "Auto updates",
  "presetTitle": "Content preset",
  "scheduleTitle": "Update schedule",
  "quotaTitle": "Quota",
  "scheduleHint": "At least one update per day is required.",
  "timezone": "Timezone",
  "quotaHint": "We show a local estimate of the real YouTube quota usage.",
  "quotaHintDetailed": "The official YouTube quota resets at {appReset} ({appTimezone}) in this app. Official reference: {officialReset} ({officialTimezone}).",
  "quotaStatus": "Used {used} of {dailyLimit} today.",
  "quotaStatusPaused": "Used {used} of {dailyLimit} today. Quota is paused until {pausedUntil}.",
  "backfillRunning": "Backfill is running. Scheduled updates are paused.",
  "settingsConfirm1": "This change may consume quota. Continue?",
  "settingsConfirm2": "Are you sure you want to apply these settings?",
  "settingsSaved": "Settings saved.",
  "settingsSaveFailed": "Unable to save settings.",
  "cancel": "Cancel",
  "save": "Save",
  "off": "Off",
  "presetLabelMinimal": "Minimal",
  "presetLabelStandard": "Standard",
  "presetLabelRich": "Rich",
  "presetDescMinimal": "Less content, lower quota usage.",
  "presetDescStandard": "Balanced and recommended.",
  "presetDescRich": "More content, higher quota usage.",
  "scheduleSlot": "Update {index}",

  "loginPageTitle": "Sign in",
  "gestorLoginTitle": "Sign in MANAGER",
  "loginUsername": "Username",
  "loginPassword": "Password",
  "loginSubmit": "Sign in",
  "loginSigningIn": "Signing in...",
  "loginOrDivider": "or",
  "loginWithGoogle": "Google",
  "loginWithPasskey": "Passkey",
  "loginWithDevice": "Approve with device",
  "loginNoAccount": "First time here?",
  "loginRegisterLink": "Create via Google",
  "loginFailed": "Invalid username or password.",
  "loginLocked": "Account temporarily locked. Try again later.",

  "registerTitle": "Create account",
  "registerUsername": "Username",
  "registerPassword": "Password",
  "registerConfirmPassword": "Confirm password",
  "registerSubmit": "Create account",
  "registerCreating": "Creating account...",
  "registerHaveAccount": "Already have an account?",
  "registerLoginLink": "Sign in",
  "registerUsernameTaken": "Username already taken.",
  "registerPasswordMismatch": "Passwords do not match.",
  "registerPasswordShort": "Password must be at least 8 characters.",
  "registerFailed": "Could not create account.",
  "showPassword": "Show password",
  "hidePassword": "Hide password",

  "setupWizardTitle": "Welcome! Set up your account",
  "setupWizardSubtitle": "You signed in with Google. Customize your local identity.",
  "setupWizardUsernameLabel": "Choose a username",
  "setupWizardUsernameHint": "This is how you sign in locally.",
  "setupWizardPasswordLabel": "Set a password",
  "setupWizardPasswordConfirmLabel": "Confirm password",
  "setupWizardPasswordHint": "Required for local sign-in on LAN devices.",
  "setupWizardSave": "Save and continue",
  "setupWizardSaving": "Saving...",
  "setupWizardError": "Could not save setup. Try again.",
  "adminBootstrapTitle": "Configure administrator",
  "adminBootstrapSubtitle": "This is the first startup. Create the administrator account for this site.",
  "adminBootstrapUsername": "Username",
  "adminBootstrapDisplayName": "Display name",
  "adminBootstrapPassword": "Password",
  "adminBootstrapPasswordConfirm": "Confirm password",
  "adminBootstrapSubmit": "Create administrator",
  "adminBootstrapSubmitting": "Creating...",
  "adminBootstrapError": "Could not create the administrator account.",
  "adminBootstrapAlreadyCompleted": "Administrator bootstrap is already completed.",
  "adminBootstrapFootnote": "Only shown while no administrator account exists.",
  "adminBootstrapCountdown": "Time remaining: {time}",
  "adminBootstrapLocked": "Bootstrap window expired. Restart the application to try again.",
  "deviceFlowTitle": "Sign in with Google",
  "deviceFlowSubtitle": "Authorize this app using your Google account.",
  "deviceFlowInstruction": "Go to the URL below and enter this code:",
  "deviceFlowWaiting": "Waiting for authorization...",
  "deviceFlowStarting": "Starting device flow...",
  "deviceFlowError": "Could not start the device flow. Check your Google configuration.",
  "deviceFlowExpired": "The device code has expired. Please try again.",
  "deviceFlowConfirmTitle": "Confirm Google account",
  "deviceFlowConfirmLinkMsg": "This Google account matches the existing user \"{username}\". Link them?",
  "deviceFlowConfirmLink": "Link account",
  "passwordChangeRequiredTitle": "Change your password",
  "passwordChangeRequiredSubtitle": "Your temporary password must be changed before entering the app.",
  "passwordChangeRequiredSubmit": "Update password",
  "passwordChangeRequiredSubmitting": "Updating...",
  "passwordChangeRequiredError": "Could not update the password. Try again.",
  "onboardingReadyTitle": "We are preparing your library",
  "onboardingReadyDescription": "Your channels, videos, and categories are being updated right now.",
  "onboardingReadyDetail": "Everything will be ready shortly. You can enter now and the library will keep filling in while the process finishes.",
  "onboardingReadyAccept": "Continue",

  "authStatusNeedsSetup": "Finish setting up your account.",

  "myAccount": "My account",
  "accountPanelTitle": "My account",
  "accountTabProfile": "Profile",
  "accountTabPassword": "Password",
  "accountTabPasskeys": "Passkeys",
  "accountTabTotp": "Authenticator",
  "accountTabDevices": "Devices",
  "accountTabYoutube": "YouTube",

  "accountProfileUsername": "Username",
  "accountProfileDisplayName": "Display name",
  "accountProfileEmail": "Email",
  "accountProfileAuthProvider": "Auth provider",
  "accountProfileAuthLocal": "Local",
  "accountProfileAuthGoogle": "Google",
  "accountProfileSave": "Save profile",
  "accountProfileSaved": "Profile updated.",
  "accountProfileUsernameTaken": "Username already taken.",
  "accountProfileUsernameHint": "This is your login username for local and device sign-in.",

  "accountPasswordCurrent": "Current password",
  "accountPasswordNew": "New password",
  "accountPasswordConfirm": "Confirm new password",
  "accountPasswordSave": "Change password",
  "accountPasswordSaving": "Saving...",
  "accountPasswordSuccess": "Password changed.",
  "accountPasswordWrong": "Current password is incorrect.",
  "accountPasswordMismatch": "New passwords do not match.",
  "accountPasswordShort": "Password must be at least 8 characters.",
  "accountPasswordFailed": "Could not change password.",

  "accountPasskeysNone": "No passkeys registered.",
  "accountPasskeyAdded": "Added",
  "accountPasskeyRevoke": "Revoke",
  "accountPasskeyRevoking": "Revoking...",
  "accountPasskeyRevoked": "Passkey removed.",
  "accountPasskeyRevokeFailed": "Could not remove passkey.",
  "accountPasskeyAdd": "Add passkey",
  "accountPasskeyLabelPlaceholder": "Label (optional)",

  "accountTotpEnabled": "Authenticator app is active.",
  "accountTotpDisabled": "Authenticator app is not set up.",
  "accountTotpRecoveryCodes": "Recovery codes remaining: {count}",
  "accountTotpSetup": "Set up authenticator",
  "accountTotpDisable": "Disable authenticator",
  "accountTotpDisableConfirm": "Enter your TOTP code or password to disable.",
  "accountTotpScanQr": "Scan this QR code with your authenticator app, then enter the 6-digit code to confirm.",
  "accountTotpCodeLabel": "6-digit code",
  "accountTotpActivate": "Activate",
  "accountTotpActivating": "Activating...",
  "accountTotpActivated": "Authenticator activated.",
  "accountTotpActivateFailed": "Invalid code. Try again.",
  "accountTotpDisabled2": "Authenticator disabled.",
  "accountTotpDisableFailed": "Could not disable authenticator.",
  "accountTotpRegenerateRecovery": "Regenerate recovery codes",
  "accountTotpRegenerating": "Regenerating...",
  "accountTotpRegenerateSuccess": "New recovery codes:",
  "accountTotpRegenerateFailed": "Could not regenerate codes.",

  "accountDevicesNone": "No devices registered.",
  "accountDeviceThisDevice": "This device",
  "accountDeviceLastUsed": "Last used: {date}",
  "accountDeviceRevoke": "Revoke",
  "accountDeviceManageLabel": "Selected device",
  "accountDeviceSelectPlaceholder": "Select a device",
  "accountDeviceSelectRequired": "Select a device.",
  "accountDeviceNameLabel": "Device name",
  "accountDeviceNamePlaceholder": "e.g. 📺 Living room TV",
  "accountDeviceNameRequired": "Enter a name for the device.",
  "accountDeviceNameSave": "Save name",
  "accountDeviceNameSaving": "Saving...",
  "accountDeviceNameSaved": "Device name saved.",
  "accountDeviceNameSaveFailed": "Could not save the device name.",
  "accountDeviceDeleteSelected": "Remove device",
  "accountDeviceDeleteTitle": "Remove device",
  "accountDeviceDeleteConfirm": "This device will be removed: {device}. Do you want to continue?",
  "accountDeviceRevoking": "Revoking...",
  "accountDeviceRevoked": "Device removed.",
  "accountDeviceRevokeFailed": "Could not remove device.",

  "accountYoutubeLinked": "YouTube account linked.",
  "accountYoutubeNotLinked": "No YouTube account linked.",
  "accountYoutubeLink": "Link YouTube account",
  "accountYoutubeRelink": "Re-link YouTube account",
  "accountYoutubeUnlink": "Unlink YouTube account",
  "accountYoutubeUnlinking": "Unlinking...",
  "accountYoutubeUnlinkSuccess": "YouTube account unlinked.",
  "accountYoutubeUnlinkFailed": "Could not unlink YouTube account.",
  "classifyChannels": "Classify channels",
  "classificationChoiceTitle": "Channel classification",
  "classificationChoiceDescription": "Choose how broad the automatic classification run should be.",
  "classificationModeBasicTitle": "Basic",
  "classificationModeBasicDescription": "Classify only channels that still do not have a usable category. This is the recommended routine option.",
  "classificationModeFullTitle": "Full",
  "classificationModeFullDescription": "Gather recent video evidence and then reevaluate all your channels. It takes longer and is meant to fix weak automatic classifications.",
  "classificationModeFullConfirm": "Warning: high token usage. Are you sure you want to run it?",
  "classificationModeRunningFullEvidence": "Classifying channels full: gathering video evidence...",
  "classificationModeRunningFullProgress": "Enriching... ({count} channels)",
  "classificationProgressFull": "Classifying channels full: {cursor}/{total} channels ({classified} updated)",
  "classificationFullEvidenceSuccess": "{channels} channels enriched with video evidence ({created} new, {updated} updated).",
  "classifyingChannels": "Classifying channels...",
  "classifyEnriching": "Enriching channel metadata...",
  "classifyEvidenceGathering": "Gathering video evidence...",
  "classifyComplete": "{count} channels classified.",
  "classifyNothingToDo": "All channels are already classified.",
  "classifyError": "Classification failed.",
  "reclassifyNothingToDo": "There were no channels to reclassify.",
  "reclassifyComplete": "{count} channels reclassified.",
  "classifyProgress": "Classifying channels basic: {cursor}/{total} ({classified} classified)",
  "mobileComingSoon": "Mobile version coming soon",
  "mobileComingSoonSub": "Use a tablet, desktop, or TV to access the app."
}
