diff --git a/fluxer_app/src/features/app/components/layout/GuildsLayout.tsx b/fluxer_app/src/features/app/components/layout/GuildsLayout.tsx index 4a07f0743..694dba63a 100644 --- a/fluxer_app/src/features/app/components/layout/GuildsLayout.tsx +++ b/fluxer_app/src/features/app/components/layout/GuildsLayout.tsx @@ -1278,7 +1278,6 @@ const SKELETON_NAGBAR_ROW_SHAPES: Record = { [NagbarType.LEGACY_PRICE_OPT_IN]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, [NagbarType.GIFT_INVENTORY]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, [NagbarType.DESKTOP_DOWNLOAD]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, - [NagbarType.DESKTOP_UPDATE_READY]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, [NagbarType.GUILD_MEMBERSHIP_CTA]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, [NagbarType.VISIONARY_MFA]: {tone: SkeletonNagbarTone.BRAND, hasActions: true}, [NagbarType.VOICE_SESSION_RESTORE]: {tone: SkeletonNagbarTone.VOICE, hasActions: true}, diff --git a/fluxer_app/src/features/app/components/layout/app_layout/AppLayoutHooks.ts b/fluxer_app/src/features/app/components/layout/app_layout/AppLayoutHooks.ts index 934a1f49c..cb05ff88e 100644 --- a/fluxer_app/src/features/app/components/layout/app_layout/AppLayoutHooks.ts +++ b/fluxer_app/src/features/app/components/layout/app_layout/AppLayoutHooks.ts @@ -12,7 +12,6 @@ import DomainMovedNotice from '@app/features/app/domain_migration/DomainMovedNot import {isClientReconnecting} from '@app/features/app/state/ClientReadiness'; import Initialization from '@app/features/app/state/Initialization'; import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; -import Updater from '@app/features/app/state/Updater'; import Accounts from '@app/features/auth/state/Accounts'; import Authentication from '@app/features/auth/state/Authentication'; import Channels from '@app/features/channel/state/Channels'; @@ -259,7 +258,6 @@ export const useNagbarConditions = (): NagbarConditions => { })(); const canShowSoftwareEncoder = SoftwareEncoderWarning.showWarning; const canShowStreamerMode = StreamerMode.shouldShowNagbar; - const canShowDesktopUpdateReady = Updater.shouldShowUpdateReadyNagbar; const canShowDomainMoved = nagbarState.forceHideDomainMoved ? false : nagbarState.forceDomainMoved @@ -329,7 +327,6 @@ export const useNagbarConditions = (): NagbarConditions => { needsTermsAcceptance, canShowSoftwareEncoder, canShowStreamerMode, - canShowDesktopUpdateReady, canShowDomainMoved, }; }; @@ -462,12 +459,6 @@ export const useActiveNagbars = (conditions: NagbarConditions): Array = observer(({nagbar data-flx="app.app-layout.nagbar-container.desktop-download-nagbar" /> ); - case NagbarType.DESKTOP_UPDATE_READY: - return ( - - ); case NagbarType.GUILD_MEMBERSHIP_CTA: return ( { - const {i18n} = useLingui(); - const version = Updater.updateInfo.native.version; - return ( - - void Updater.applyUpdate()} - data-flx="app.app-layout.nagbars.desktop-update-ready-nagbar.restart-button" - > - {i18n._(RESTART_FLUXER_DESCRIPTOR, {productName: PRODUCT_NAME})} - - } - data-flx="app.app-layout.nagbars.desktop-update-ready-nagbar.nagbar-content" - /> - - ); -}); diff --git a/fluxer_app/src/features/app/state/Updater.ts b/fluxer_app/src/features/app/state/Updater.ts index db711e9b5..c97915479 100644 --- a/fluxer_app/src/features/app/state/Updater.ts +++ b/fluxer_app/src/features/app/state/Updater.ts @@ -2,15 +2,12 @@ import Config from '@app/features/app/config/Config'; import {DESKTOP_DOWNLOAD_URL} from '@app/features/app/config/I18nDisplayConstants'; -import { - shouldShowNativeDesktopUpdateDownloadProgress, - shouldShowNativeDesktopUpdateInApp, -} from '@app/features/app/utils/UpdaterPlatformUtils'; import {WORKER_NAVIGATION_CACHE_PREFIX} from '@app/features/platform/service_worker/WorkerCacheCleanup'; import {getProtectedCacheStorage} from '@app/features/platform/state/ProtectedWebStorage'; import type {UpdaterContext, UpdaterDownloadOption, UpdaterEvent} from '@app/features/platform/types/Electron'; import {Logger} from '@app/features/platform/utils/AppLogger'; import {getClientInfo} from '@app/features/platform/utils/ClientInfo'; +import {flushPendingPersistWrites} from '@app/features/platform/utils/MobXPersistence'; import {initializeStore} from '@app/features/platform/utils/StoreInitialization'; import { downloadWithNative, @@ -20,13 +17,12 @@ import { openExternalUrl, } from '@app/features/ui/utils/NativeUtils'; import { + pushDesktopUpdateAvailableModal, pushDesktopUpdateDownloadFailedModal, - pushDesktopUpdateInstallFailedModal, pushManualUpdateAvailableModal, pushUnsupportedUpdateModal, pushUpdateAvailableModal, pushUpdateCheckFailedModal, - pushUpdateReadyModal, pushUpToDateModal, } from '@app/features/updater/commands/UpdaterModalCommands'; import { @@ -35,7 +31,6 @@ import { getUpdaterMachineStateValue, getUpdaterUpdateType, hasManualNativeDownload, - type NativeDownloadProgress, type NativeUpdateInfo, transitionUpdaterMachineSnapshot, type UpdateInfo, @@ -47,16 +42,9 @@ import { } from '@app/features/updater/state/UpdaterStateMachine'; import {buildLinuxManualUpdateOptions} from '@app/features/updater/utils/LinuxManualUpdateOptions'; import type {UpdaterEvent as NativeUpdaterEvent} from '@app/types/electron.d'; -import type {DesktopPendingModuleUpdate} from '@fluxer/desktop_ipc/src/ModuleContract'; -import {msg} from '@lingui/core/macro'; import {makeAutoObservable, runInAction} from 'mobx'; -export type {NativeDownloadProgress, NativeUpdateInfo, UpdateInfo, UpdaterState, UpdateType, WebUpdateInfo}; - -export const DOWNLOADING_UPDATE_DESCRIPTOR = msg({ - message: 'Downloading desktop update…', - comment: 'Short desktop updater status label.', -}); +export type {NativeUpdateInfo, UpdateInfo, UpdaterState, UpdateType, WebUpdateInfo}; const logger = new Logger('Updater'); const CHECK_INTERVAL_MS = 5 * 60 * 1000; @@ -109,32 +97,15 @@ function normalizeUpdaterEvent(event: NativeUpdaterEvent): UpdaterEvent | null { type: 'available', context, version: event.version ?? null, - downloadSize: event.downloadSize ?? null, - downloadStarted: event.downloadStarted ?? true, downloadUrl: event.downloadUrl, downloadOptions: event.downloadOptions, }; case 'not-available': return {type: 'not-available', context}; case 'downloaded': - return {type: 'downloaded', context, version: event.version ?? null}; + return {type: 'downloaded', context}; case 'progress': - if ( - typeof event.percent !== 'number' || - typeof event.transferred !== 'number' || - typeof event.total !== 'number' || - typeof event.bytesPerSecond !== 'number' - ) { - return null; - } - return { - type: 'progress', - context, - percent: event.percent, - transferred: event.transferred, - total: event.total, - bytesPerSecond: event.bytesPerSecond, - }; + return null; case 'error': return { type: 'error', @@ -164,9 +135,12 @@ class Updater { private backgroundCheckInterval: number | null = null; private backgroundCheckCleanups: Array<() => void> = []; private unsubscribeNativeEvents: (() => void) | null = null; - private unsubscribeModuleUpdates: (() => void) | null = null; - moduleUpdate: DesktopPendingModuleUpdate | null = null; - private updateReadyNagbarDismissedVersion: string | null = null; + private unsubscribeDesktopUpdate: (() => void) | null = null; + private desktopUpdateReported = false; + private olderShellModuleUpdateReady = false; + private olderShellUpdateDownloaded = false; + private olderShellInstallWhenDownloaded = false; + private desktopUpdateStarting = false; private pendingManualDownloadRefreshes = 0; private checkInProgress = false; @@ -184,10 +158,6 @@ class Updater { return this.snapshot.context.updateInfo; } - get downloadProgress(): NativeDownloadProgress | null { - return this.snapshot.context.downloadProgress; - } - get lastCheckedAt(): number | null { return this.snapshot.context.lastCheckedAt; } @@ -215,60 +185,28 @@ class Updater { return this.snapshot.context.manualNativeDownloadInFlight; } + get desktopUpdateAvailable(): boolean { + return this.desktopUpdateReported || this.olderShellModuleUpdateReady || this.olderShellUpdateAvailable; + } + + private get olderShellUpdateAvailable(): boolean { + const electronApi = getElectronAPI(); + if (electronApi == null || electronApi.desktopUpdate != null || electronApi.updaterInstall == null) { + return false; + } + return this.olderShellUpdateDownloaded || (this.updateInfo.native.available && !this.hasManualNativeDownload); + } + get hasUpdate(): boolean { - return this.moduleUpdateReady || this.updateInfo.native.available || this.updateInfo.web.available; - } - - get moduleUpdateReady(): boolean { - return this.moduleUpdate != null; - } - - get nativeUpdatePending(): boolean { - return this.updateInfo.native.available && !this.updateInfo.native.downloaded; - } - - get nativeUpdateReady(): boolean { - return this.updateInfo.native.available && this.updateInfo.native.downloaded; - } - - get shouldShowUpdateReadyNagbar(): boolean { - return ( - this.nativeUpdateReady && - !this.updateInfo.native.installing && - this.updateReadyNagbarDismissedVersion !== this.updateReadyNagbarVersionKey - ); - } - - private get updateReadyNagbarVersionKey(): string { - return this.updateInfo.native.version ?? 'unknown'; - } - - get nativeDownloadInFlight(): boolean { - return this.updateInfo.native.downloading && !this.updateInfo.native.downloaded; - } - - get nativeDownloadProgressSupported(): boolean { - return shouldShowNativeDesktopUpdateDownloadProgress(getElectronAPI()?.platform); + return this.desktopUpdateAvailable || this.updateInfo.native.available || this.updateInfo.web.available; } get hasManualNativeDownload(): boolean { return hasManualNativeDownload(this.snapshot); } - get nativeAwaitingDownload(): boolean { - if (this.hasManualNativeDownload) return false; - return ( - this.updateInfo.native.available && !this.updateInfo.native.downloaded && !this.updateInfo.native.downloading - ); - } - get nativeManualUpdateAvailable(): boolean { - return ( - this.updateInfo.native.available && - !this.updateInfo.native.downloaded && - !this.updateInfo.native.downloading && - this.hasManualNativeDownload - ); + return this.updateInfo.native.available && this.hasManualNativeDownload; } get state(): UpdaterState { @@ -295,7 +233,7 @@ class Updater { } if (this.isNative) { await this.bootstrapNative(); - await this.bootstrapModuleUpdates(); + await this.bootstrapDesktopUpdate(); } this.startBackgroundChecks(); void this.checkForUpdates(false); @@ -315,43 +253,98 @@ class Updater { this.subscribeToNativeEvents(); } - private async bootstrapModuleUpdates(): Promise { + private async bootstrapDesktopUpdate(): Promise { + const electronApi = getElectronAPI(); + const desktopUpdate = electronApi?.desktopUpdate; + if (desktopUpdate == null) { + await this.bootstrapOlderShellModuleUpdate(); + return; + } + this.unsubscribeDesktopUpdate = desktopUpdate.onStateChanged((state) => { + runInAction(() => { + this.desktopUpdateReported = state.available; + }); + }); + await this.refreshDesktopUpdateState(); + } + + private async bootstrapOlderShellModuleUpdate(): Promise { const desktopModules = getElectronAPI()?.desktopModules; const onPendingUpdateChanged = desktopModules?.onPendingUpdateChanged; const pendingUpdate = desktopModules?.pendingUpdate; if (onPendingUpdateChanged == null || pendingUpdate == null) return; - this.unsubscribeModuleUpdates = onPendingUpdateChanged((pending) => { + this.unsubscribeDesktopUpdate = onPendingUpdateChanged((pending) => { runInAction(() => { - this.moduleUpdate = pending; + this.olderShellModuleUpdateReady = pending != null; }); }); try { const pending = await pendingUpdate(); runInAction(() => { - this.moduleUpdate = pending; + this.olderShellModuleUpdateReady = pending != null; }); } catch (error) { logger.warn('Failed to read the pending desktop module update', error); } } - private async applyModuleUpdate(): Promise { - const applyPendingUpdate = getElectronAPI()?.desktopModules?.applyPendingUpdate; - if (applyPendingUpdate == null) return; + private async refreshDesktopUpdateState(): Promise { + const desktopUpdate = getElectronAPI()?.desktopUpdate; + if (desktopUpdate == null) return; try { - await applyPendingUpdate(); + const state = await desktopUpdate.state(); + runInAction(() => { + this.desktopUpdateReported = state.available; + }); } catch (error) { - logger.warn('Failed to apply the pending desktop module update', error); + logger.warn('Failed to read the desktop update state', error); } } + private async startDesktopUpdate(): Promise { + const electronApi = getElectronAPI(); + if (electronApi == null || this.desktopUpdateStarting) return; + this.desktopUpdateStarting = true; + try { + flushPendingPersistWrites(); + if (electronApi.desktopUpdate != null) { + await electronApi.desktopUpdate.start(); + } else if (this.olderShellModuleUpdateReady) { + await electronApi.desktopModules?.applyPendingUpdate?.(); + } else if (this.olderShellUpdateDownloaded) { + await electronApi.updaterInstall?.(); + } else { + this.olderShellInstallWhenDownloaded = true; + await electronApi.updaterDownload?.('user'); + } + } catch (error) { + this.olderShellInstallWhenDownloaded = false; + logger.warn('Failed to start the desktop update', error); + } finally { + this.desktopUpdateStarting = false; + } + } + + private handleOlderShellUpdateDownloaded(): void { + this.olderShellUpdateDownloaded = true; + if (!this.olderShellInstallWhenDownloaded) return; + this.olderShellInstallWhenDownloaded = false; + void getElectronAPI() + ?.updaterInstall?.() + .catch((error: unknown) => { + logger.warn('Failed to install the downloaded desktop update', error); + }); + } + private subscribeToNativeEvents(): void { const electronApi = getElectronAPI(); if (!electronApi) return; this.unsubscribeNativeEvents = electronApi.onUpdaterEvent((event) => { const updaterEvent = normalizeUpdaterEvent(event); if (!updaterEvent) { - logger.warn('Ignored malformed native updater event', {event}); + if (event.type !== 'progress') { + logger.warn('Ignored malformed native updater event', {event}); + } return; } this.handleNativeEvent(updaterEvent); @@ -370,35 +363,17 @@ class Updater { this.pendingManualDownloadRefreshes -= 1; } const isUserCheck = event.context === 'user' && !isManualDownloadRefreshResult; - const isBackgroundOrFocusCheck = event.context === 'background' || event.context === 'focus'; - const shouldSurfaceNativeDesktopUpdate = this.shouldSurfaceNativeDesktopUpdate(); const shouldShowImmediateUserResult = isUserCheck && !this.checkInProgress; switch (event.type) { case 'checking': this.transition({type: 'check.started'}); break; case 'available': { - const downloadStarted = event.downloadStarted ?? true; const manualDownloadOptions = this.resolveManualNativeDownloadOptions(event, event.downloadOptions ?? []); - const manualDownloadUrl = manualDownloadOptions[0]?.url ?? event.downloadUrl ?? null; - if (!shouldSurfaceNativeDesktopUpdate) { - this.transition({ - type: 'native.hidden', - reason: 'platform', - downloadUrl: manualDownloadUrl, - now: Date.now(), - }); - if (isUserCheck) { - pushUnsupportedUpdateModal('platform', manualDownloadUrl ?? DESKTOP_DOWNLOAD_URL); - } - break; - } this.transition({ type: 'native.available', version: event.version ?? null, - downloadSize: event.downloadSize ?? null, - downloadStarted, - downloadUrl: manualDownloadUrl, + downloadUrl: manualDownloadOptions[0]?.url ?? event.downloadUrl ?? null, downloadOptions: manualDownloadOptions, }); if (shouldShowImmediateUserResult) { @@ -408,55 +383,25 @@ class Updater { } case 'not-available': this.transition({type: 'native.notAvailable', now: Date.now()}); - if (isUserCheck && !this.checkInProgress) { + if (shouldShowImmediateUserResult) { this.showCurrentUpdateState(); } break; - case 'error': { - const phase = event.phase ?? 'check'; - if (isBackgroundOrFocusCheck) { - logger.debug('Background update failed silently:', event.message); + case 'downloaded': + this.handleOlderShellUpdateDownloaded(); + break; + case 'error': + this.olderShellInstallWhenDownloaded = false; + if (isUserCheck) { + logger.warn('Update check error:', event.message); } else { - logger.warn(`Update ${phase} error:`, event.message); + logger.debug('Background update check failed silently:', event.message); } this.transition({type: 'native.error'}); if (isUserCheck) { - if (phase === 'download') { - pushDesktopUpdateDownloadFailedModal(); - } else if (phase === 'install') { - pushDesktopUpdateInstallFailedModal(); - } else { - pushUpdateCheckFailedModal(); - } + pushUpdateCheckFailedModal(); } break; - } - case 'downloaded': - if (!shouldSurfaceNativeDesktopUpdate) { - this.transition({ - type: 'native.hidden', - reason: 'platform', - downloadUrl: null, - now: Date.now(), - }); - break; - } - this.transition({type: 'native.downloaded', version: event.version ?? null}); - break; - case 'progress': - if (!shouldSurfaceNativeDesktopUpdate || !this.nativeDownloadProgressSupported) { - break; - } - this.transition({ - type: 'native.progress', - progress: { - percent: event.percent, - transferred: event.transferred, - total: event.total, - bytesPerSecond: event.bytesPerSecond, - }, - }); - break; case 'unsupported': this.transition({ type: 'native.unsupported', @@ -464,7 +409,7 @@ class Updater { downloadUrl: event.downloadUrl ?? null, now: Date.now(), }); - if (isUserCheck) { + if (shouldShowImmediateUserResult) { pushUnsupportedUpdateModal(event.reason ?? 'platform', event.downloadUrl ?? null); } break; @@ -475,7 +420,7 @@ class Updater { event: Extract, options: ReadonlyArray, ): ReadonlyArray { - if ((event.downloadStarted ?? true) || getElectronAPI()?.platform !== 'linux') { + if (getElectronAPI()?.platform !== 'linux') { return options; } return buildLinuxManualUpdateOptions({ @@ -521,15 +466,10 @@ class Updater { private shouldRunNativeCheck(userInitiated: boolean): boolean { if (!this.isNative) return false; if (this.nativeUnsupported && !userInitiated) return false; - if (this.nativeDownloadInFlight || this.updateInfo.native.installing) return false; if (userInitiated) return true; return !this.updateInfo.native.available; } - private shouldSurfaceNativeDesktopUpdate(): boolean { - return shouldShowNativeDesktopUpdateInApp(getElectronAPI()?.platform); - } - async checkForUpdates(force = false, userInitiated = false): Promise { if (this.checkInProgress) { return; @@ -555,6 +495,9 @@ class Updater { if (webResult) { this.transition({type: 'web.checked', available: webResult.available, version: webResult.version}); } + if (userInitiated && shouldCheckNative) { + await this.refreshDesktopUpdateState(); + } if (userInitiated && (!shouldCheckNative || (!this.isChecking && !this.nativeCheckFailed))) { this.showCurrentUpdateState(); } @@ -628,32 +571,8 @@ class Updater { async applyUpdate(): Promise { if (!this.hasUpdate) return; - if (this.moduleUpdateReady) { - await this.applyModuleUpdate(); - return; - } - const electronApi = getElectronAPI(); - if (this.isNative && this.updateInfo.native.downloaded && electronApi) { - if (this.updateInfo.native.installing) { - logger.debug('Install already in progress; ignoring duplicate click.'); - return; - } - this.transition({type: 'native.install.started'}); - logger.info('Installing downloaded native update...'); - try { - await electronApi.updaterInstall(); - } catch (error) { - logger.warn('Native update install failed', error); - this.transition({type: 'native.install.failed'}); - pushDesktopUpdateInstallFailedModal(); - } - return; - } - if (this.isNative && this.nativeAwaitingDownload && electronApi?.updaterDownload) { - await this.startNativeDownload(); - return; - } - if (this.isNative && this.nativeDownloadInFlight) { + if (this.desktopUpdateAvailable) { + await this.startDesktopUpdate(); return; } if (this.isNative && this.nativeUnsupported?.reason === 'managed-package' && !this.updateInfo.web.available) { @@ -683,34 +602,13 @@ class Updater { } } - async startNativeDownload(userInitiated = true): Promise { - const electronApi = getElectronAPI(); - if (!electronApi?.updaterDownload) return; - if (!this.updateInfo.native.available) return; - if (this.updateInfo.native.downloading || this.updateInfo.native.downloaded) return; - this.transition({ - type: 'native.download.started', - progressSupported: this.nativeDownloadProgressSupported, - total: this.updateInfo.native.downloadSize, - }); - try { - await electronApi.updaterDownload(userInitiated ? 'user' : 'background'); - } catch (error) { - logger.warn('Native update download failed', error); - this.transition({type: 'native.download.failed'}); - if (userInitiated) { - pushDesktopUpdateDownloadFailedModal(); - } - } - } - private showCurrentUpdateState(): void { - if (this.nativeManualUpdateAvailable) { - this.showManualNativeUpdateModal(); + if (this.desktopUpdateAvailable) { + pushDesktopUpdateAvailableModal(() => this.startDesktopUpdate()); return; } - if (this.nativeUpdateReady) { - pushUpdateReadyModal(this.updateInfo.native.version, this.applyUpdate); + if (this.nativeManualUpdateAvailable) { + this.showManualNativeUpdateModal(); return; } if (this.hasUpdate) { @@ -816,10 +714,6 @@ class Updater { } } - dismissUpdateReadyNagbar(): void { - this.updateReadyNagbarDismissedVersion = this.updateReadyNagbarVersionKey; - } - reset(): void { this.transition({type: 'reset'}); } @@ -829,11 +723,14 @@ class Updater { this.unsubscribeNativeEvents(); this.unsubscribeNativeEvents = null; } - if (this.unsubscribeModuleUpdates) { - this.unsubscribeModuleUpdates(); - this.unsubscribeModuleUpdates = null; + if (this.unsubscribeDesktopUpdate) { + this.unsubscribeDesktopUpdate(); + this.unsubscribeDesktopUpdate = null; } - this.moduleUpdate = null; + this.desktopUpdateReported = false; + this.olderShellModuleUpdateReady = false; + this.olderShellUpdateDownloaded = false; + this.olderShellInstallWhenDownloaded = false; if (this.backgroundCheckInterval != null) { window.clearInterval(this.backgroundCheckInterval); this.backgroundCheckInterval = null; diff --git a/fluxer_app/src/features/app/utils/UpdaterPlatformUtils.ts b/fluxer_app/src/features/app/utils/UpdaterPlatformUtils.ts deleted file mode 100644 index ab3c9e6ce..000000000 --- a/fluxer_app/src/features/app/utils/UpdaterPlatformUtils.ts +++ /dev/null @@ -1,9 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -export function shouldShowNativeDesktopUpdateInApp(platform: string | null | undefined): boolean { - return platform === 'darwin' || platform === 'win32' || platform === 'linux'; -} - -export function shouldShowNativeDesktopUpdateDownloadProgress(platform: string | null | undefined): boolean { - return platform === 'win32' || platform === 'linux'; -} diff --git a/fluxer_app/src/features/channel/components/ChannelHeader.module.css b/fluxer_app/src/features/channel/components/ChannelHeader.module.css index 99cef154b..925cffbe7 100644 --- a/fluxer_app/src/features/channel/components/ChannelHeader.module.css +++ b/fluxer_app/src/features/channel/components/ChannelHeader.module.css @@ -559,29 +559,11 @@ position: relative; } -.updateIconButtonDisabled { - composes: updateIconButton; - opacity: 0.4; - pointer-events: none; -} - .updateIcon { height: 1.5rem; width: 1.5rem; } -.updateProgress { - position: absolute; - bottom: -0.4rem; - right: -0.6rem; - background: var(--background-tertiary); - color: var(--channel-header-text-primary); - font-size: 0.65rem; - padding: 0 0.25rem; - border-radius: 0.375rem; - border: 0.0625rem solid rgba(255, 255, 255, 0.08); -} - .updateIconError { color: var(--status-danger); } diff --git a/fluxer_app/src/features/channel/components/channel_header_components/UpdaterIcon.tsx b/fluxer_app/src/features/channel/components/channel_header_components/UpdaterIcon.tsx index 6f4c62f7d..1b4d26d49 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/UpdaterIcon.tsx +++ b/fluxer_app/src/features/channel/components/channel_header_components/UpdaterIcon.tsx @@ -1,59 +1,21 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {PRODUCT_NAME} from '@app/features/app/config/I18nDisplayConstants'; -import Updater, { - DOWNLOADING_UPDATE_DESCRIPTOR as DOWNLOADING_UPDATE_STATUS_DESCRIPTOR, -} from '@app/features/app/state/Updater'; +import Updater from '@app/features/app/state/Updater'; import styles from '@app/features/channel/components/ChannelHeader.module.css'; -import {getCachedNumberFormat} from '@app/features/i18n/utils/IntlCache'; import {Platform} from '@app/features/platform/types/Platform'; import FocusRing from '@app/features/ui/focus_ring/FocusRing'; import {Tooltip} from '@app/features/ui/tooltip/Tooltip'; import {msg} from '@lingui/core/macro'; import {useLingui} from '@lingui/react/macro'; -import {ArrowClockwiseIcon, DownloadSimpleIcon} from '@phosphor-icons/react'; +import {ArrowClockwiseIcon} from '@phosphor-icons/react'; import {observer} from 'mobx-react-lite'; -import {useCallback, useMemo} from 'react'; +import {useCallback} from 'react'; -const INSTALLING_UPDATE_DESCRIPTOR = msg({ - message: 'Installing desktop update {version}…', +const UPDATE_AVAILABLE_DESCRIPTOR = msg({ + message: 'Update available', comment: - 'Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional.', -}); -const INSTALLING_UPDATE_2_DESCRIPTOR = msg({ - message: 'Installing desktop update…', - comment: - 'Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional.', -}); -const DOWNLOADING_UPDATE_AT_S_DESCRIPTOR = msg({ - message: 'Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)', - comment: - 'Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second.', -}); -const DOWNLOADING_UPDATE_DESCRIPTOR = msg({ - message: 'Downloading desktop update {version}: {percent}%', - comment: 'Tooltip on the channel header updater icon while downloading a versioned update without throughput info.', -}); -const DOWNLOADING_UPDATE_2_DESCRIPTOR = msg({ - message: 'Downloading desktop update: {percent}%', - comment: 'Tooltip on the channel header updater icon while downloading an update with only percent available.', -}); -const CLICK_TO_DOWNLOAD_UPDATE_DESCRIPTOR = msg({ - message: 'Download desktop update {version} ({formatBytes})', - comment: 'Tooltip on the channel header updater icon prompting download of a versioned update with known size.', -}); -const CLICK_TO_DOWNLOAD_UPDATE_2_DESCRIPTOR = msg({ - message: 'Download desktop update ({formatBytes})', - comment: - 'Tooltip on the channel header updater icon prompting download of an update of known size but unknown version.', -}); -const CLICK_TO_DOWNLOAD_UPDATE_3_DESCRIPTOR = msg({ - message: 'Download desktop update {version}', - comment: 'Tooltip on the channel header updater icon prompting download of a versioned update with unknown size.', -}); -const CLICK_TO_DOWNLOAD_UPDATE_4_DESCRIPTOR = msg({ - message: 'Download desktop update', - comment: 'Tooltip on the channel header updater icon prompting download of an update with no version or size info.', + 'Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update.', }); const CHOOSE_LINUX_PACKAGE_DESCRIPTOR = msg({ message: 'Desktop update {version} available. Choose a Linux package.', @@ -64,21 +26,6 @@ const CHOOSE_LINUX_PACKAGE_2_DESCRIPTOR = msg({ comment: 'Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known.', }); -const CLICK_TO_RESTART_AND_INSTALL_UPDATE_DESCRIPTOR = msg({ - message: 'Restart {productName} to install desktop update {version}', - comment: - 'Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name.', -}); -const CLICK_TO_RESTART_AND_INSTALL_UPDATE_2_DESCRIPTOR = msg({ - message: 'Restart {productName} to install desktop update', - comment: - 'Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name.', -}); -const CLICK_TO_RELOAD_FOR_MODULE_UPDATE_DESCRIPTOR = msg({ - message: 'Reload {productName} to use the updated modules', - comment: - 'Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name.', -}); const CLICK_TO_RELOAD_AND_UPDATE_DESCRIPTOR = msg({ message: 'Reload {productName} to use web update {version}', comment: @@ -90,151 +37,54 @@ const CLICK_TO_RELOAD_AND_UPDATE_2_DESCRIPTOR = msg({ 'Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name.', }); -function formatBytes(locale: string, bytes: number): string { - const units = ['byte', 'kilobyte', 'megabyte', 'gigabyte'] as const; - let value = Number.isFinite(bytes) && bytes > 0 ? bytes : 0; - let unitIndex = 0; - while (value >= 1024 && unitIndex < units.length - 1) { - value /= 1024; - unitIndex++; - } - return getCachedNumberFormat(locale, { - style: 'unit', - unit: units[unitIndex], - unitDisplay: 'narrow', - maximumFractionDigits: value >= 100 || unitIndex === 0 ? 0 : 1, - }).format(value); -} +type UpdaterAffordance = 'desktop' | 'manual' | 'web' | null; -function resolveUpdaterVisibility(): { - readonly hasActionableNativeUpdate: boolean; - readonly hasActionableModuleUpdate: boolean; - readonly hasActionableWebUpdate: boolean; -} { - const hasActionableNativeUpdate = - Platform.isElectron && - (Updater.nativeUpdateReady || - Updater.nativeAwaitingDownload || - Updater.nativeManualUpdateAvailable || - Updater.nativeDownloadInFlight); - const hasActionableModuleUpdate = Platform.isElectron && Updater.moduleUpdateReady && !hasActionableNativeUpdate; - const hasActionableWebUpdate = - !!Updater.updateInfo.web.available && !hasActionableNativeUpdate && !hasActionableModuleUpdate; - return {hasActionableNativeUpdate, hasActionableModuleUpdate, hasActionableWebUpdate}; +function resolveUpdaterAffordance(): UpdaterAffordance { + if (Platform.isElectron && Updater.desktopUpdateAvailable) return 'desktop'; + if (Platform.isElectron && Updater.nativeManualUpdateAvailable) return 'manual'; + if (Updater.updateInfo.web.available) return 'web'; + return null; } export function isUpdaterIconVisible(): boolean { - const {hasActionableNativeUpdate, hasActionableModuleUpdate, hasActionableWebUpdate} = resolveUpdaterVisibility(); - return hasActionableNativeUpdate || hasActionableModuleUpdate || hasActionableWebUpdate; + return resolveUpdaterAffordance() != null; } export const UpdaterIcon = observer(() => { const {i18n} = useLingui(); - const store = Updater; - const {hasActionableNativeUpdate, hasActionableModuleUpdate, hasActionableWebUpdate} = resolveUpdaterVisibility(); - const tooltip = useMemo(() => { - const version = store.displayVersion; - if (hasActionableModuleUpdate) { - return i18n._(CLICK_TO_RELOAD_FOR_MODULE_UPDATE_DESCRIPTOR, {productName: PRODUCT_NAME}); - } - if (Platform.isElectron && store.updateInfo.native.installing) { - return version ? i18n._(INSTALLING_UPDATE_DESCRIPTOR, {version}) : i18n._(INSTALLING_UPDATE_2_DESCRIPTOR); - } - if (Platform.isElectron && store.nativeDownloadInFlight) { - if (!store.nativeDownloadProgressSupported) { - return i18n._(DOWNLOADING_UPDATE_STATUS_DESCRIPTOR); - } - const progress = store.downloadProgress; - const percent = getCachedNumberFormat(i18n.locale).format(progress ? Math.round(progress.percent) : 0); - if (progress && progress.total > 0 && progress.bytesPerSecond > 0) { - return i18n._(DOWNLOADING_UPDATE_AT_S_DESCRIPTOR, { - percent, - formatBytes: formatBytes(i18n.locale, progress.transferred), - formatBytes2: formatBytes(i18n.locale, progress.total), - formatBytes3: formatBytes(i18n.locale, progress.bytesPerSecond), - }); - } - return version - ? i18n._(DOWNLOADING_UPDATE_DESCRIPTOR, {version, percent}) - : i18n._(DOWNLOADING_UPDATE_2_DESCRIPTOR, {percent}); - } - if (Platform.isElectron && (store.nativeAwaitingDownload || store.nativeManualUpdateAvailable)) { - if (store.nativeManualUpdateAvailable && store.nativeManualDownloadOptions.length > 0) { - return version ? i18n._(CHOOSE_LINUX_PACKAGE_DESCRIPTOR, {version}) : i18n._(CHOOSE_LINUX_PACKAGE_2_DESCRIPTOR); - } - const size = store.updateInfo.native.downloadSize; - if (version && size && size > 0) { - return i18n._(CLICK_TO_DOWNLOAD_UPDATE_DESCRIPTOR, {version, formatBytes: formatBytes(i18n.locale, size)}); - } - if (size && size > 0) { - return i18n._(CLICK_TO_DOWNLOAD_UPDATE_2_DESCRIPTOR, {formatBytes: formatBytes(i18n.locale, size)}); - } - return version - ? i18n._(CLICK_TO_DOWNLOAD_UPDATE_3_DESCRIPTOR, {version}) - : i18n._(CLICK_TO_DOWNLOAD_UPDATE_4_DESCRIPTOR); - } - if (Platform.isElectron && store.nativeUpdateReady) { - return version - ? i18n._(CLICK_TO_RESTART_AND_INSTALL_UPDATE_DESCRIPTOR, {version, productName: PRODUCT_NAME}) - : i18n._(CLICK_TO_RESTART_AND_INSTALL_UPDATE_2_DESCRIPTOR, {productName: PRODUCT_NAME}); - } - return version - ? i18n._(CLICK_TO_RELOAD_AND_UPDATE_DESCRIPTOR, {version, productName: PRODUCT_NAME}) - : i18n._(CLICK_TO_RELOAD_AND_UPDATE_2_DESCRIPTOR, {productName: PRODUCT_NAME}); - }, [ - hasActionableModuleUpdate, - store.displayVersion, - store.downloadProgress, - store.nativeAwaitingDownload, - store.nativeDownloadInFlight, - store.nativeDownloadProgressSupported, - store.nativeManualDownloadOptions, - store.nativeManualUpdateAvailable, - store.nativeUpdateReady, - store.updateInfo.native.downloadSize, - store.updateInfo.native.installing, - i18n.locale, - ]); const handleClick = useCallback(() => { - void store.applyUpdate(); - }, [store]); - if (!hasActionableNativeUpdate && !hasActionableModuleUpdate && !hasActionableWebUpdate) { + void Updater.applyUpdate(); + }, []); + const affordance = resolveUpdaterAffordance(); + if (affordance == null) { return null; } - const isInstalling = Platform.isElectron && store.updateInfo.native.installing; - const isDownloading = Platform.isElectron && store.nativeDownloadInFlight; - const buttonClass = isInstalling ? styles.updateIconButtonDisabled : styles.updateIconButton; - const Icon = hasActionableWebUpdate || hasActionableModuleUpdate ? ArrowClockwiseIcon : DownloadSimpleIcon; - const percentLabel = - isDownloading && store.nativeDownloadProgressSupported - ? getCachedNumberFormat(i18n.locale, {style: 'percent', maximumFractionDigits: 0}).format( - (store.downloadProgress?.percent ?? 0) / 100, - ) - : null; + const version = Updater.displayVersion; + let tooltip: string; + if (affordance === 'manual' && Updater.nativeManualDownloadOptions.length > 0) { + tooltip = version ? i18n._(CHOOSE_LINUX_PACKAGE_DESCRIPTOR, {version}) : i18n._(CHOOSE_LINUX_PACKAGE_2_DESCRIPTOR); + } else if (affordance !== 'web') { + tooltip = i18n._(UPDATE_AVAILABLE_DESCRIPTOR); + } else { + tooltip = version + ? i18n._(CLICK_TO_RELOAD_AND_UPDATE_DESCRIPTOR, {version, productName: PRODUCT_NAME}) + : i18n._(CLICK_TO_RELOAD_AND_UPDATE_2_DESCRIPTOR, {productName: PRODUCT_NAME}); + } return ( diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts index 7194f1a2b..02e84ac26 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts @@ -73,26 +73,6 @@ const MEDIA_LOADING_STATE_DESCRIPTOR = msg({ message: 'Media loading state', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -const ANY_UPDATER_READY_DESCRIPTOR = msg({ - message: 'Any updater ready', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const NATIVE_UPDATER_READY_DESCRIPTOR = msg({ - message: 'Native updater ready', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const NATIVE_UPDATE_PROGRESS_DESCRIPTOR = msg({ - message: 'Native update progress', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const WEB_UPDATER_READY_DESCRIPTOR = msg({ - message: 'Web updater ready', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const UPDATER_STATE_DESCRIPTOR = msg({ - message: 'Updater state', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); const SHOW_MYSELF_TYPING_DESCRIPTOR = msg({ message: 'Show myself typing', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', @@ -297,7 +277,6 @@ const formatDeveloperOptionValue = ( case 'mockMatureContentGateReason': case 'mockMatureMediaGateReason': case 'mockTitlebarPlatformOverride': - case 'mockUpdaterState': return String(value).replace(/_/g, ' '); case 'premiumSinceOverride': case 'premiumUntilOverride': @@ -342,16 +321,6 @@ export const getDeveloperOptionLabel = (key: keyof DeveloperOptionsState): Messa return EMBED_SKELETONS_DESCRIPTOR; case 'forceMediaLoading': return MEDIA_LOADING_STATE_DESCRIPTOR; - case 'forceUpdateReady': - return ANY_UPDATER_READY_DESCRIPTOR; - case 'forceNativeUpdateReady': - return NATIVE_UPDATER_READY_DESCRIPTOR; - case 'mockNativeUpdateProgress': - return NATIVE_UPDATE_PROGRESS_DESCRIPTOR; - case 'forceWebUpdateReady': - return WEB_UPDATER_READY_DESCRIPTOR; - case 'mockUpdaterState': - return UPDATER_STATE_DESCRIPTOR; case 'showMyselfTyping': return SHOW_MYSELF_TYPING_DESCRIPTOR; case 'slowAttachmentUpload': diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts index d06d5491c..4b2b4d61b 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts @@ -12,11 +12,6 @@ export const DEFAULT_DEVELOPER_OPTIONS = { forceRenderPlaceholders: false, forceEmbedSkeletons: false, forceMediaLoading: false, - forceUpdateReady: false, - forceNativeUpdateReady: false, - mockNativeUpdateProgress: null, - forceWebUpdateReady: false, - mockUpdaterState: 'none', showMyselfTyping: false, slowAttachmentUpload: false, slowMessageLoad: false, diff --git a/fluxer_app/src/features/devtools/components/DeveloperOptionsToggleGroups.ts b/fluxer_app/src/features/devtools/components/DeveloperOptionsToggleGroups.ts index 46524bf99..6c5373aa6 100644 --- a/fluxer_app/src/features/devtools/components/DeveloperOptionsToggleGroups.ts +++ b/fluxer_app/src/features/devtools/components/DeveloperOptionsToggleGroups.ts @@ -56,10 +56,6 @@ const FORCE_LOADING_SKELETON_DESCRIPTOR = msg({ message: 'Force loading skeleton', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -const FORCE_UPDATE_READY_DESCRIPTOR = msg({ - message: 'Force update ready', - comment: 'Developer option label for simulating an available update.', -}); const SHOW_MYSELF_TYPING_DESCRIPTOR = msg({ message: 'Show myself typing', comment: 'Developer option label for showing the current user as typing.', @@ -161,10 +157,6 @@ export const getToggleGroups = (): Array => [ items: [ {key: 'bypassLoadingSkeleton', label: BYPASS_LOADING_SKELETON_DESCRIPTOR}, {key: 'forceLoadingSkeleton', label: FORCE_LOADING_SKELETON_DESCRIPTOR}, - { - key: 'forceUpdateReady', - label: FORCE_UPDATE_READY_DESCRIPTOR, - }, { key: 'showMyselfTyping', label: SHOW_MYSELF_TYPING_DESCRIPTOR, diff --git a/fluxer_app/src/features/devtools/state/DeveloperOptions.ts b/fluxer_app/src/features/devtools/state/DeveloperOptions.ts index 6f57512c1..9b1b9b4e9 100644 --- a/fluxer_app/src/features/devtools/state/DeveloperOptions.ts +++ b/fluxer_app/src/features/devtools/state/DeveloperOptions.ts @@ -28,11 +28,6 @@ export type DeveloperOptionsState = Readonly<{ forceRenderPlaceholders: boolean; forceEmbedSkeletons: boolean; forceMediaLoading: boolean; - forceUpdateReady: boolean; - forceNativeUpdateReady: boolean; - mockNativeUpdateProgress: number | null; - forceWebUpdateReady: boolean; - mockUpdaterState: 'none' | 'checking' | 'available' | 'downloading' | 'ready' | 'installing' | 'error'; showMyselfTyping: boolean; slowAttachmentUpload: boolean; slowMessageLoad: boolean; @@ -103,11 +98,6 @@ class DeveloperOptions implements DeveloperOptionsState { forceRenderPlaceholders = false; forceEmbedSkeletons = false; forceMediaLoading = false; - forceUpdateReady = false; - forceNativeUpdateReady = false; - mockNativeUpdateProgress: number | null = null; - forceWebUpdateReady = false; - mockUpdaterState: DeveloperOptionsState['mockUpdaterState'] = 'none'; showMyselfTyping = false; slowAttachmentUpload = false; slowMessageLoad = false; @@ -181,11 +171,6 @@ class DeveloperOptions implements DeveloperOptionsState { 'forceRenderPlaceholders', 'forceEmbedSkeletons', 'forceMediaLoading', - 'forceUpdateReady', - 'forceNativeUpdateReady', - 'mockNativeUpdateProgress', - 'forceWebUpdateReady', - 'mockUpdaterState', 'showMyselfTyping', 'slowAttachmentUpload', 'slowMessageLoad', diff --git a/fluxer_app/src/features/i18n/locales/ar/messages.po b/fluxer_app/src/features/i18n/locales/ar/messages.po index ba833d5d8..9aed03cdb 100644 --- a/fluxer_app/src/features/i18n/locales/ar/messages.po +++ b/fluxer_app/src/features/i18n/locales/ar/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# قناة تتابع} other {# قناة تتابع msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, zero {لم يُعثر على أي مجتمع} one {تم العثور على مجتمع واحد} two {تم العثور على مجتمعين} few {تم العثور على # مجتمعات} many {تم العثور على # مجتمعًا} other {تم العثور على # مجتمع}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, zero {# مجتمع غير متاح مؤقتًا بسبب عطل في مكثف التدفق.} one {مجتمع واحد غير متاح مؤقتًا بسبب عطل في مكثف التدفق.} two {مجتمعان غير متاحين مؤقتًا بسبب عطل في مكثف التدفق.} few {# مجتمعات غير متاحة مؤقتًا بسبب عطل في مكثف التدفق.} many {# مجتمعًا غير متاح مؤقتًا بسبب عطل في مكثف التدفق.} other {# مجتمع غير متاح مؤقتًا بسبب عطل في مكثف التدفق.}}" @@ -1884,16 +1884,16 @@ msgstr "لا يمكن لـ {productName} بدء مسار معزول آمن لص msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "لا يمكن لـ {productName} استخدام مشفر الأجهزة هنا، لذا سيستخدم وحدة المعالجة المركزية (CPU)." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "سيقوم {productName} بالإغلاق وتثبيت التحديث ثم إعادة الفتح." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "تعذر على {productName} الوصول إلى خدمة التحديث. يرجى التحقق من اتصالك والمحاولة مرة أخرى." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "تعذر على {productName} إعادة التشغيل لتثبيت التحديث الذي تم تنزيله. حاول مرة أخرى من زر التحديث." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "اسم مضيف، مثل {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "يتوفر تحديث لتطبيق سطح المكتب على Linux. اختر تنسيق الحزمة لهذا النظام وسيحفظه {productName} محليًا." @@ -4597,11 +4597,6 @@ msgstr "الرد على المكالمة الواردة" msgid "Any key" msgstr "أي مفتاح" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "أي محدّث جاهز" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "فقدان حزم الصوت:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "مشغل الصوت" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "معالجة الصوت (صوت مركّز)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "تقدم تشغيل الصوت" @@ -5551,7 +5546,7 @@ msgstr "AV1 (يتطلب التفعيل)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "متاح" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "الحظر" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "العد التنازلي للحاجز" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "الفوترة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "دورة الفوترة" @@ -6867,7 +6862,7 @@ msgstr "لا يمكن تحميل الملفات هنا" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "تم إغلاق الموضوع" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "التحميل السحابي" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "التركيز على مربع الرسالة" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "جاري الضغط" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "تعذّر تغيير سعر اشتراكك" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "تعذّر التحقق من وجود تحديثات" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "تعذر إنشاء مجموعة الاسترداد الخاصة بك. يمكنك إنشاؤها لاحقًا في إعدادات حسابك." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "تعذر قص الصورة" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "تعذّر حذف رسائلك" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "تعذّر تنزيل تحديث تطبيق سطح المكتب" @@ -10841,11 +10836,6 @@ msgstr "تعذر بدء عملية الدفع" msgid "Couldn't start the connection" msgstr "تعذّر بدء الاتصال" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "تعذّر بدء تحديث تطبيق سطح المكتب" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "قص خلفية الدعوة" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "معاينة القص" @@ -11343,12 +11333,12 @@ msgstr "قص لافتة الملف الشخصي" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "الصورة بعد القص كبيرة جدًا. اختر منطقة أصغر أو ملفًا أصغر (الحد الأقصى {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "جاري قص {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "السمع معطّل من قبل المشرفين" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "حزمة DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "تطبيق سطح المكتب" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "تطبيق سطح المكتب محدّث" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "بدء تشغيل سطح المكتب" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "يتوفر تحديث سطح المكتب {version}. اختر حزمة Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "يتوفر تحديث لتطبيق سطح المكتب" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "يتوفر تحديث لتطبيق سطح المكتب. اختر حزمة Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "تحديث سطح المكتب جاهز" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "تم تنزيل إصدار سطح المكتب {version}. أعد تشغيل {productName} لإكمال التثبيت." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "وضع المطور" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "خيار المطور" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "أدوات المطور غير متاحة" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "إصدار التطوير" @@ -13604,26 +13584,6 @@ msgstr "زر التنزيل" msgid "Download desktop app" msgstr "تنزيل تطبيق سطح المكتب" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "تنزيل تحديث تطبيق سطح المكتب" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "تنزيل تحديث تطبيق سطح المكتب ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "تنزيل تحديث تطبيق سطح المكتب {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "تنزيل تحديث تطبيق سطح المكتب {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "تنزيل التصدير" @@ -13688,26 +13648,6 @@ msgstr "قم بتنزيل خرائط المصدر حتى تشير تتبعات msgid "Download video" msgstr "تنزيل الفيديو" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "جارٍ تنزيل تحديث تطبيق سطح المكتب {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "جارٍ تنزيل تحديث تطبيق سطح المكتب: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "جارٍ تنزيل تحديث تطبيق سطح المكتب: {percent}% ({formatBytes} / {formatBytes2} بسرعة {formatBytes3}/ث)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "جارٍ تنزيل تحديث تطبيق سطح المكتب…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "يلزم التحقق من البريد الإلكتروني" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "تم التحقق من البريد الإلكتروني" @@ -15966,7 +15906,7 @@ msgstr "الميزة معطلة مؤقتًا" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "الميزات" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "مفعل قسريًا" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "فرض فشل تحميل الرسائل" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "فرض فشل إرسال الرسائل" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "فرض تحميل منتقي صور GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "فرض هيكل التحميل" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "فرض الوسائط المخصصة للبالغين" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "فرض عدم وجود إذن {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "فرض تحذير بيانات الملف الشخصي" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "فرض هياكل الملف الشخصي" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "فرض الإظهار" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "فرض إظهار إخلاء مسؤولية عنوان URL المخصص" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "فرض إظهار حالة الاتصال الصوتي" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "فرض تفعيل الوضع البطيء" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "فرض نوع رسالة غير معروف" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "فرض جاهزية التحديث" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "إعادة توجيه" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "تقديم {defaultSeekAmount} ثوانٍ" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "جارٍ إنشاء الرمز…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "تراكب الحظر الجغرافي" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "خيارات GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "جارٍ تحميل منتقي صور GIF" @@ -17226,14 +17161,14 @@ msgstr "رموز الهدايا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "مدة الهدية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "مخزون الهدايا" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "لم يتم العثور على الهدية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "تم استرداد الهدية" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "يحتوي على" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "سبق له الشراء" @@ -17892,7 +17827,7 @@ msgstr "قلب" msgid "Hebrew" msgstr "العبرية" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "الارتفاع" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "تثبيت التطبيق الجديد" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "مثبّت" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "الإصدار المثبّت: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "جارٍ تثبيت تحديث سطح المكتب {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "جارٍ تثبيت تحديث سطح المكتب…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "رسم بياني لزمن الاستجابة" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "الافتراضي في Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "حزمة لينكس" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "إدارة اشتراكك" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "تحديث تطبيق سطح المكتب يدويًا" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "المحتوى للبالغين وتحذيرات المحتوى" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "بوابة قنوات المحتوى للبالغين" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "يتوفر التحقق من المحتوى للبالغين حاليًا في المملكة المتحدة فقط." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "بوابة وسائط المحتوى للبالغين" @@ -22888,13 +22813,13 @@ msgstr "كتم" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "كتم الصوت" @@ -23316,16 +23241,6 @@ msgstr "السرد" msgid "Native title bar" msgstr "شريط العنوان الأصلي" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "تقدم التحديث الأصلي" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "المحدّث الأصلي جاهز" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "خطأ في الشبكة" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "الشبكة والأداء" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "لا يمكن للمستخدمين الجدد الانضمام الآن. لا يزال بإمكانك إنشاء حساب أو تسجيل الدخول، ثم إعادة المحاولة باستخدام هذا الرابط لاحقًا." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "إصدار جديد" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "لا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "لا يوجد إذن {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "لا يوجد إذن {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "لا يوجد وصف." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "لا يتوفر تحديث لتطبيق سطح المكتب." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "لا يوجد أي ويب هوك" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "بلاغات داخل التطبيق بلا إرسال فعلي" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "فتح منتقي التاريخ" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "فتح صفحة تنزيل تطبيق سطح المكتب" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "فتح الإعدادات" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "فتح مركز البرامج" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "فتح قائمة المستخدم لـ {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "فتح الفيديو" @@ -26558,9 +26473,9 @@ msgstr "تشغيل التحديد" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "تشغيل الفيديو" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "مزايا Premium معطلة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "تاريخ بدء Premium" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "تمت إعادة تعيين حالة Premium في الواجهة الخلفية." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "نوع Premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "تاريخ انتهاء Premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "جاري التحضير" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "نموذج تخصيص الملف الشخصي" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "تحذير بيانات الملف الشخصي" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "خصوصية الملف الشخصي" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "هياكل تحميل الملف الشخصي" @@ -28223,18 +28138,13 @@ msgstr "إعادة تحميل" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "أعد تحميل {PRODUCT_NAME} لتطبيق تغيير المحرك بالكامل. يتطلب التبديل بين المدقق الإملائي داخل التطبيق ومدقق النظام إعادة تحميل العارض لأن Electron لا يمكنه تبديل المزودين أثناء التشغيل." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "أعد تحميل {productName} لاستخدام الوحدات المحدثة" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "أعد تحميل {productName} لاستخدام التحديث من الويب" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "أعد تحميل {productName} لاستخدام تحديث الويب {version}" @@ -29142,7 +29052,7 @@ msgstr "أُعيد الإرسال" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "إعادة تعيين" @@ -29475,26 +29385,11 @@ msgstr "احترام اختيار المرسل، دون تحذير عند تفع msgid "Restart {appName}" msgstr "إعادة تشغيل {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "إعادة تشغيل {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "أعد تشغيل {productName} لتطبيق هذا التغيير، لأن بيئات سطح المكتب على Linux لا يمكنها إضافة أيقونات علبة النظام أو إزالتها بشكل موثوق أثناء التشغيل." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "أعد تشغيل {productName} لتثبيت تحديث سطح المكتب" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "أعد تشغيل {productName} لتثبيت تحديث سطح المكتب {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "تم إلغاء حظر {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "إرجاع {defaultSeekAmount} ثوانٍ" @@ -29866,7 +29761,7 @@ msgstr "الرومانية" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "تدوير باتجاه عقارب الساعة" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "الصفوف لكل صفحة" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "حزمة RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "إعداد الاستضافة الذاتية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "وضع الاستضافة الذاتية" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "تجاوز وضع الاستضافة الذاتية" @@ -32212,8 +32107,8 @@ msgstr "إظهار مشاركة شاشتي" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "إظهار أنني أكتب" @@ -32675,7 +32570,7 @@ msgstr "تخطي" msgid "Skip \"Mark all as read\" confirmation" msgstr "تخطي تأكيد «وضع علامة على الكل كمقروء»" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "تخطي الاقتصاص" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "تخطي تحذير الروابط الخارجية لجميع النطاقات" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "تجاوز طلب الشبكة عند إرسال بلاغ داخل التطبيق. يستمر المسار إلى شاشة النجاح لتتمكن من تجربة الواجهة، لكن لا يُرسل أي شيء فعليًا إلى فريق السلامة." @@ -32752,8 +32647,8 @@ msgstr "سلوفينيا" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "تحميل بطيء للمرفقات" @@ -32769,29 +32664,29 @@ msgstr "تمهّل، وانتظر لحظة قبل المحاولة مرة أخر #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "تعديل الرسائل ببطء" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "تحميل الرسائل ببطء" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "إرسال الرسائل ببطء" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "تحميل الملف الشخصي ببطء" @@ -32807,7 +32702,7 @@ msgstr "الوضع البطيء · انتظر {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "الوضع البطيء نشط" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "الوضع البطيء مضبوط على {durationLabel}. انتظر قبل إرسال رسالة أخرى." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "المتبقي من الوضع البطيء" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "علبة النظام" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "تثبيت مُدار بواسطة النظام" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "اضغط لإضافة ملاحظة" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "أرشيف tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "ربما حُذف المجتمع الذي تبحث عنه أو ليس لديك صلاحية الوصول إليه." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "تعذر تنزيل تحديث سطح المكتب. حاول مرة أخرى من زر التحديث عندما يصبح اتصالك مستقرًا." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "تم تنزيل تحديث سطح المكتب. أعد تشغيل {productName} لإكمال التثبيت." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "حُفظ الملف الذي تم تنزيله على جهاز الكمبيوتر. ثبّته باستخدام مدير الحزم الذي تستخدمه عادةً." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "لا يمكن التراجع عن هذا الإجراء. سيتم حذف جميع البيانات المرتبطة، بما في ذلك مستخدم البوت، نهائيًا." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "هذه الرسوم المتحركة طويلة جدًا أو كبيرة جدًا بحيث لا يمكن قصها. جرب ملفًا أقصر أو أصغر." @@ -35549,7 +35439,7 @@ msgstr "يطلب هذا البوت إذن المسؤول. لا تمنحه هذا #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "لا يمكن لهذا المتصفح قص ملفات {avifFormatLabel} المتحركة. قم بتحميل ملف GIF أو WebP بدلاً من ذلك." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "وحدة تحكم المتصفح هذه أداة للمطورين." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "متصفحك هذا يعطل WebAssembly، لذا لا يمكن قص الصور المتحركة." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "هذه المحادثة لم تعد متاحة." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "لا يمكن لإصدار سطح المكتب هذا تثبيت التحديثات داخل {productName}. نزّل أحدث مثبّت لسطح المكتب بدلًا من ذلك." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "لا يوفّر سطح المكتب هذا اختصارات على مستوى النظام. لا تزال الاختصارات تعمل عندما تكون نافذة {productName} نشطة." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "لا يمكن لإصدار التطوير هذا تحديث نفسه. نزّل مثبّت سطح المكتب لاختبار عملية التحديث." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "انتهت صلاحية رمز التسليم هذا. أنشئ رمزًا جديدًا للمتابعة." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "لم يمكن قراءة هذه الصورة. قد تكون تالفة." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "هذا التثبيت مُدار بواسطة نظامك. حدّث {productName} من مركز البرامج أو مدير الحزم." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "لا يمكن أن يكون تاريخ الحد في المستقبل" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "صورة مصغرة لـ {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "شريط العنوان" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "منصة شريط العنوان" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "تشغيل الكاميرا أو إيقافها" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "تبديل عناصر التحكم" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "الطباعة" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "مكونات واجهة المستخدم" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "الموقع الجغرافي للمملكة المتحدة" @@ -37528,7 +37418,7 @@ msgstr "غير مصنف" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "حساب غير مُطالَب به" @@ -37689,7 +37579,7 @@ msgstr "خيار احتياطي شامل. أقل جودة، لكنه يعمل ف #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "غير معروف" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "دعوة غير معروفة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "نوع رسالة غير معروف" @@ -37893,10 +37783,10 @@ msgstr "إلغاء الكتم" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "إلغاء كتم الصوت" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "الرسائل المباشرة غير المقروءة فقط" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "عدد الهدايا غير المقروءة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "مخزون الهدايا غير المقروءة" @@ -38267,10 +38157,20 @@ msgstr "حدّث {productName} لعرض هذه الرسالة." msgid "Update app" msgstr "تحديث التطبيق" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "تحديث متاح" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "تحديث حالتي" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "تحديث الآن" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "سياسات محدّثة" msgid "Updated saved media" msgstr "تم تحديث الوسائط المحفوظة" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "حالة المُحدِّث" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "لا يمكن أن يحتوي عنوان URL المخصص إلا على أحرف وأرقام وواصلات داخلية." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "إخلاء مسؤولية عنوان URL المخصص" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "حواجز التحقق والعضوية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "حاجز التحقق" @@ -39438,7 +39333,7 @@ msgstr "حيوية الألوان" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "فيديو" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "معاينة الفيديو" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "تقدم الفيديو" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "إعدادات الفيديو" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "صورة مصغرة للفيديو" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "شارة Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "معرف شارة Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "تأكيد الاتصال الصوتي" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "تصحيح أخطاء الاتصال الصوتي" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "رسالة صوتية" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "مشغل الرسائل الصوتية" @@ -40500,11 +40395,6 @@ msgstr "بحث الويب" msgid "Web search provider" msgstr "مزود البحث على الويب" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "محدّث الويب جاهز" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "يا للهول، هذا كثير جدًا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "سيتم الإلغاء" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "مفتاح YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "تكبير/تصغير" diff --git a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json index 3c372c3d5..6c76ef05c 100644 --- a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json +++ b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json @@ -5749,6 +5749,12 @@ { "msgid": "Up to 720p at 30 FPS" }, + { + "msgid": "Update available" + }, + { + "msgid": "Update now" + }, { "msgid": "Update passkey" }, @@ -6802,6 +6808,9 @@ { "msgid": "{productName} cannot start a safe isolated route for this app's audio." }, + { + "msgid": "{productName} closes, installs the update and opens again." + }, { "msgid": "{productName} has moved to {host}. Add it to your Home Screen or Dock, then sign in with this app." }, diff --git a/fluxer_app/src/features/i18n/locales/bg/messages.po b/fluxer_app/src/features/i18n/locales/bg/messages.po index b29696459..f5aa70c72 100644 --- a/fluxer_app/src/features/i18n/locales/bg/messages.po +++ b/fluxer_app/src/features/i18n/locales/bg/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# канал следва} other {# канала с msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Намерена е # общност} other {Намерени са # общности}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# общност е временно недостъпна поради неизправност на флукс кондензатора.} other {# общности са временно недостъпни поради неизправност на флукс кондензатора.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} не може да стартира безопасен и msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} не може да използва хардуерен енкодер за това, затова ще използва процесора ти." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} ще се затвори, ще инсталира актуализацията и ще се отвори отново." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} не можа да се свърже с услугата за актуализации. Провери връзката си и опитай отново." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} не можа да се рестартира с изтеглената актуализация. Опитай отново от бутона за актуализация." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "име на хост, напр. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Налична е актуализация за настолното приложение на Linux. Избери формата на пакета за тази система и {productName} ще я запази локално." @@ -4597,11 +4597,6 @@ msgstr "Отговаряне на входящото повикване" msgid "Any key" msgstr "Произволен клавиш" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Някой актуализатор е готов" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Загуба на аудиопакети:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Аудиоплеър" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Обработка на аудио (фокусиран глас)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Напредък на аудиото" @@ -5551,7 +5546,7 @@ msgstr "AV1 (изисква активиране)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Налична" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Забрани" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Отброяване на бариера" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Плащане" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Платежен цикъл" @@ -6867,7 +6862,7 @@ msgstr "Тук не можеш да качваш файлове" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Затвори нишката" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Качване в облака" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Фокус на текстовото поле" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Компресиране" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Не успяхме да сменим цената ти" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Неуспешна проверка за актуализации" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Не успяхме да създадем вашия комплект за възстановяване. Можете да създадете такъв по-късно в настройките на профила си." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Изображението не можа да бъде изрязано" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Съобщенията ти не можаха да бъдат изтрити" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Неуспешно изтегляне на актуализацията за настолното приложение" @@ -10841,11 +10836,6 @@ msgstr "Неуспешно стартиране на плащането" msgid "Couldn't start the connection" msgstr "Връзката не можа да бъде стартирана" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Неуспешно стартиране на актуализацията на настолното приложение" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Изрязване на фона на поканата" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Преглед на изрязването" @@ -11343,12 +11333,12 @@ msgstr "Изрязване на банер на профил" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Изрязаното изображение е твърде голямо. Избери по-малка област или по-малък файл (макс. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Обработване на {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Звукът е изключен от модератори" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB пакет" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Настолно приложение" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Настолното приложение е актуално" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Стартиране с компютъра" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Налична е актуализация {version} за настолното приложение. Избери пакет за Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Налична е актуализация за настолното приложение" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Налична е актуализация за настолното приложение. Избери пакет за Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Актуализацията за настолното приложение е готова" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Версия {version} на настолното приложение е изтеглена. Рестартирай {productName}, за да завършиш инсталацията." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Режим за разработчици" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Опция за разработчици" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Инструментите за разработчици не са налични" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Развойна версия" @@ -13604,26 +13584,6 @@ msgstr "Бутон за изтегляне" msgid "Download desktop app" msgstr "Изтегляне на настолното приложение" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Изтегляне на актуализация за настолното приложение" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Изтегляне на актуализация за настолното приложение ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Изтегляне на актуализация за настолното приложение {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Изтегляне на актуализация за настолното приложение {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Изтегляне на експорт" @@ -13688,26 +13648,6 @@ msgstr "Изтегляне на изходни карти, така че про msgid "Download video" msgstr "Изтегляне на видео" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Изтегляне на актуализация за настолното приложение {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Изтегляне на актуализация за настолното приложение: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Изтегляне на актуализация за настолното приложение: {percent}% ({formatBytes} / {formatBytes2} при {formatBytes3}/сек)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Изтегляне на актуализация за настолното приложение…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Изисква се потвърждение на имейл" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Имейлът е потвърден" @@ -15966,7 +15906,7 @@ msgstr "Функцията е временно деактивирана" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Функции" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Принудително активирано" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Принудително неуспешно зареждане на съобщения" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Принудително неуспешно изпращане на съобщения" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Принудително зареждане на избора на GIF файлове" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Принудително показване на скелета за зареждане" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Принудително показване на медия за възрастни" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Принудително без разрешение за {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Принудително показване на предупреждение за данни от профила" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Принудително показване на скелети на профили" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Принудително показване" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Принудително показване на отказа от отговорност за персонализиран URL адрес" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Принудително показване на гласова връзка" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Принудително активиране на бавен режим" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Принудително неизвестен тип съобщение" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Принудително налична актуализация" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Препращане" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Превъртане напред с {defaultSeekAmount} секунди" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Генериране на код…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Наслагване на географско блокиране" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Опции за GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Зареждане на избора на GIF файлове" @@ -17226,14 +17161,14 @@ msgstr "Кодове за подаръци" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Продължителност на подаръка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Инвентар с подаръци" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Подаръкът не е намерен" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Подаръкът е осребрен" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Има" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Купувал е преди" @@ -17892,7 +17827,7 @@ msgstr "Сърце" msgid "Hebrew" msgstr "Иврит" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Височина" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Инсталирай новото приложение" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Инсталирана" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Инсталирана версия: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Инсталиране на актуализация {version} за настолното приложение…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Инсталиране на актуализация за настолното приложение…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Графика на латентността" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "По подразбиране за Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Пакет за Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Управление на абонамента" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Ръчно актуализиране на десктоп приложението" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Съдържание за възрастни и предупреждения за съдържание" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Ограничаване на канал заради съдържание за възрастни" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Проверките за съдържание за възрастни в момента са налични само в Обединеното кралство." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Ограничаване на медия заради съдържание за възрастни" @@ -22888,13 +22813,13 @@ msgstr "Заглушаване" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Изключване на звука" @@ -23316,16 +23241,6 @@ msgstr "Четене на глас" msgid "Native title bar" msgstr "Системна заглавна лента" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Напредък на нативната актуализация" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Нативната програма за актуализиране е готова" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Мрежова грешка" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Мрежа и производителност" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "В момента нови потребители не могат да се присъединят. Все пак можеш да създадеш акаунт или да влезеш, а след това опитай отново с този линк по-късно." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Нова версия" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Не" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Няма разрешение {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Няма разрешение {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Няма описание." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Няма налична актуализация за настолната версия." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Няма уебхукове" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Бездействие при сигнали в приложението" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Отваряне на календара" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Отваряне на изтеглянията за настолното приложение" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Отваряне на настройките" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Отваряне на софтуерния център" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Отваряне на потребителското меню за {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Отваряне на видеоклипа" @@ -26558,9 +26473,9 @@ msgstr "Пусни избраното" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Пусни видеото" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Премиум предимствата са деактивирани" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Премиум от дата" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Състоянието на премиум е нулирано в бекенда." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Премиум тип" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Премиум до дата" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Подготвяне" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Формуляр за персонализиране на профил" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Предупреждение за данни от профила" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Поверителност на профила" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Профилни скелети" @@ -28223,18 +28138,13 @@ msgstr "Презареждане" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Презареди {PRODUCT_NAME}, за да приложиш напълно смяната на модула. Превключването между проверката на правописа в приложението и системната изисква презареждане на рендърера, защото Electron не може да сменя доставчици, докато работи." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Презаредете {productName}, за да използвате актуализираните модули" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Презареди {productName}, за да използваш уеб актуализацията" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Презареди {productName}, за да използваш уеб актуализацията {version}" @@ -29142,7 +29052,7 @@ msgstr "Изпратено отново" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Нулиране" @@ -29475,26 +29385,11 @@ msgstr "Зачитане на намерението на изпращача, б msgid "Restart {appName}" msgstr "Рестартиране на {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Рестартиране на {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Рестартирай {productName}, за да влезе в сила тази промяна, тъй като работните среди в Linux не могат надеждно да добавят или премахват икони в системната област по време на работа." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Рестартирай {productName}, за да инсталираш актуализацията за настолното приложение" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Рестартирай {productName}, за да инсталираш актуализация {version} за настолното приложение" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Отменена забрана за {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Превъртане назад с {defaultSeekAmount} секунди" @@ -29866,7 +29761,7 @@ msgstr "Румънски" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Завъртане по часовниковата стрелка" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Редове на страница" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM пакет" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Настройка за самостоятелно хостване" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Режим на самостоятелно хостване" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Принудителен режим на самостоятелно хостване" @@ -32212,8 +32107,8 @@ msgstr "Показване на моя споделен екран" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Покажи ме като пишещ" @@ -32675,7 +32570,7 @@ msgstr "Пропусни" msgid "Skip \"Mark all as read\" confirmation" msgstr "Пропускане на потвърждението за „Маркирай всички като прочетени“" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Пропусни изрязването" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Пропускане на предупреждението за външни линкове за всички домейни" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Пропускане на мрежовата заявка при изпращане на сигнал в приложението. Процесът все още стига до екрана за успех, така че можеш да тестваш интерфейса, но нищо не се изпраща до екипа за безопасност." @@ -32752,8 +32647,8 @@ msgstr "Словения" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Бавно качване на прикачен файл" @@ -32769,29 +32664,29 @@ msgstr "По-бавно — изчакай малко, преди да опит #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Бавно редактиране на съобщение" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Бавно зареждане на съобщения" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Бавно изпращане на съобщения" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Бавно зареждане на профил" @@ -32807,7 +32702,7 @@ msgstr "Бавен режим · изчакай {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Бавният режим е активен" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Бавният режим е зададен на {durationLabel}. Изчакай, преди да изпратиш друго съобщение." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Остатък от бавния режим" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Системен трей" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Инсталация, управлявана от системата" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Докосни, за да добавиш бележка" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz архив" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Общността, която търсиш, може да е изтрита или да нямаш достъп до нея." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Актуализацията за настолното приложение не можа да бъде изтеглена. Опитай отново от бутона за актуализация, когато връзката ти е стабилна." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Актуализацията за настолното приложение е изтеглена. Рестартирай {productName}, за да завършиш инсталацията." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Изтегленият файл е запазен на компютъра ти. Инсталирай го с обичайния си мениджър на пакети." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Това действие не може да бъде отменено. Всички свързани данни, включително потребителят на бота, ще бъдат изтрити завинаги." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Анимацията е твърде дълга или твърде голяма, за да бъде изрязана. Опитайте с по-кратък или по-малък файл." @@ -35549,7 +35439,7 @@ msgstr "Този бот иска разрешението „Администр #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Този браузър не може да обработва анимирани {avifFormatLabel} файлове. Вместо това качете GIF или WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Тази конзола на браузъра е инструмент за разработчици." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "В този браузър WebAssembly е изключен, така че анимирани изображения не могат да бъдат изрязвани." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Този разговор вече не е наличен." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Тази версия на настолното приложение не може да инсталира актуализации в {productName}. Вместо това изтегли най-новия инсталатор." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Тази работна среда не поддържа системни клавишни комбинации. Клавишните комбинации пак работят, докато {productName} е на фокус." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Тази развойна версия не може да се актуализира сама. Изтегли инсталатор за настолното приложение, за да тестваш процеса на актуализация." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Този код за прехвърляне е изтекъл. Генерирай нов, за да продължиш." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Този образ не може да бъде прочетен. Може да е повреден." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Тази инсталация се управлява от системата ти. Актуализирай {productName} през софтуерния център или мениджъра на пакети." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Граничната дата не може да е в бъдещето" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Миниатюра за {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Заглавна лента" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Платформа на заглавната лента" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Включване/изключване на камерата" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Показване/скриване на контролите" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Типография" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Компоненти на интерфейса" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Географско местоположение на Обединеното кралство" @@ -37528,7 +37418,7 @@ msgstr "Без категория" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Незаявен акаунт" @@ -37689,7 +37579,7 @@ msgstr "Универсален вариант. Най-ниско качеств #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Неизвестен" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Неизвестна покана" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Неизвестен тип съобщение" @@ -37893,10 +37783,10 @@ msgstr "Включване на известията" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Включване на звука" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Само непрочетени DM" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Брой непрочетени подаръци" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Инвентар с непрочетени подаръци" @@ -38267,10 +38157,20 @@ msgstr "Актуализирай {productName}, за да видиш това с msgid "Update app" msgstr "Актуализиране на приложението" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Налична е актуализация" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Актуализиране на статуса ми" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Актуализирай сега" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Актуализирани правила" msgid "Updated saved media" msgstr "Запазената медия е актуализирана" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Състояние на актуализатора" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Персонализираният URL адрес може да съдържа само буквено-цифрови знаци и вътрешни тирета." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Отказ от отговорност за персонализиран URL адрес" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Бариери за потвърждение и членство" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Бариера за потвърждение" @@ -39438,7 +39333,7 @@ msgstr "Живост на цветовете" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Видео" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Преглед на видео" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Напредък на видеото" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Настройки на видеото" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Миниатюра на видеоклип" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Значка „Визионер“" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Идент. номер на значка „Визионер“" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Потвърждение на гласова връзка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Отстраняване на грешки при гласова връзка" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Гласово съобщение" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Плейър за гласови съобщения" @@ -40500,11 +40395,6 @@ msgstr "Уеб търсене" msgid "Web search provider" msgstr "Доставчик на уеб търсене" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Уеб актуализаторът е готов" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Уау, това е множко" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Предстои отмяна" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Мащабиране" diff --git a/fluxer_app/src/features/i18n/locales/cs/messages.po b/fluxer_app/src/features/i18n/locales/cs/messages.po index b105dcd43..79280dcd7 100644 --- a/fluxer_app/src/features/i18n/locales/cs/messages.po +++ b/fluxer_app/src/features/i18n/locales/cs/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanál ho sleduje} other {# kanálů ho sleduje}} msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Nalezena # komunita} few {Nalezeny # komunity} many {Nalezeno # komunity} other {Nalezeno # komunit}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# komunita je dočasně nedostupná kvůli poruše fluxkondenzátoru.} few {# komunity jsou dočasně nedostupné kvůli poruše fluxkondenzátoru.} many {# komunity je dočasně nedostupných kvůli poruše fluxkondenzátoru.} other {# komunit je dočasně nedostupných kvůli poruše fluxkondenzátoru.}}" @@ -1884,16 +1884,16 @@ msgstr "Aplikace {productName} nedokáže bezpečně spustit oddělené zachytá msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "Aplikace {productName} nemůže použít hardwarový enkodér, takže bude využívat váš procesor." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se zavře, nainstaluje aktualizaci a znovu se otevře." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "Aplikace {productName} se nemohla připojit ke službě pro aktualizace. Zkontrolujte své připojení a zkuste to znovu." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Aplikaci {productName} se nepodařilo restartovat do stažené aktualizace. Zkuste to znovu pomocí tlačítka pro aktualizaci." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "název hostitele, např. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Je k dispozici aktualizace desktopové aplikace pro Linux. Vyberte formát balíčku pro tento systém a aplikace {productName} jej uloží do počítače." @@ -4597,11 +4597,6 @@ msgstr "Přijmout příchozí hovor" msgid "Any key" msgstr "Libovolná klávesa" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Libovolný aktualizátor připraven" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Ztráta zvukových paketů:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Přehrávač zvuku" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Zpracování zvuku (hlas v popředí)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Průběh přehrávání zvuku" @@ -5551,7 +5546,7 @@ msgstr "AV1 (vyžaduje výslovné zapnutí)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "K dispozici" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Bany" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Odpočet bariéry" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Platby" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Fakturační cyklus" @@ -6867,7 +6862,7 @@ msgstr "Sem nelze nahrávat soubory" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Vlákno bylo uzavřeno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Nahrát na cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus v poli pro psaní zpráv" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimuji" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nepodařilo se změnit vaši cenu" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nepodařilo se zkontrolovat aktualizace" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nepodařilo se vytvořit váš záchranný balíček. Můžete si ho vytvořit později v nastavení účtu." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Obrázek se nepodařilo oříznout" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Zprávy se nepodařilo smazat" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nepodařilo se stáhnout aktualizaci desktopové aplikace" @@ -10841,11 +10836,6 @@ msgstr "Nepodařilo se spustit platbu" msgid "Couldn't start the connection" msgstr "Nepodařilo se zahájit propojení" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nepodařilo se spustit aktualizaci desktopové aplikace" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Oříznout pozadí pozvánky" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Náhled ořezu" @@ -11343,12 +11333,12 @@ msgstr "Oříznout banner profilu" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Oříznutý obrázek je příliš velký. Vyberte menší oblast nebo menší soubor (max. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Ořezávání {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Zvuk vypnutý moderátory" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Balíček DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Desktopová aplikace" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Desktopová aplikace je aktuální" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Spuštění na počítači" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Je k dispozici aktualizace desktopové aplikace {version}. Vyberte balíček pro Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Je k dispozici aktualizace desktopové aplikace" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Je k dispozici aktualizace desktopové aplikace. Vyberte balíček pro Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Aktualizace desktopové aplikace je připravena" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Verze desktopové aplikace {version} byla stažena. Pro dokončení instalace restartujte aplikaci {productName}." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Režim pro vývojáře" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Možnost pro vývojáře" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Nástroje pro vývojáře nejsou k dispozici" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Vývojová verze" @@ -13604,26 +13584,6 @@ msgstr "Tlačítko pro stažení" msgid "Download desktop app" msgstr "Stáhnout desktopovou aplikaci" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Stáhnout aktualizaci desktopové aplikace" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Stáhnout aktualizaci desktopové aplikace ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Stáhnout aktualizaci desktopové aplikace {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Stáhnout aktualizaci desktopové aplikace {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Stáhnout export" @@ -13688,26 +13648,6 @@ msgstr "Stáhnout zdrojové mapy, aby se zásobníkové výpisy a vývojářské msgid "Download video" msgstr "Stáhnout video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Stahování aktualizace desktopové aplikace {version}: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Stahování aktualizace desktopové aplikace: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Stahování aktualizace desktopové aplikace: {percent} % ({formatBytes} / {formatBytes2} rychlostí {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Stahování aktualizace desktopové aplikace…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Je potřeba ověřit e-mail" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail ověřen" @@ -15966,7 +15906,7 @@ msgstr "Funkce dočasně vypnuta" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funkce" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Vynuceně zapnuto" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Vynutit selhání načítání zpráv" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Vynutit selhání odesílání zpráv" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Vynutit načítání výběru GIFů" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Vynutit zástupný náhled načítání" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Vynutit označení médií jako určených pro dospělé" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Vynutit chybějící oprávnění „{permissionName}“" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Vynutit upozornění na data profilu" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Vynutit zástupné náhledy načítání profilů" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Vynutit zobrazení" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Vynutit zobrazení upozornění k vlastnímu odkazu na pozvánku" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Vždy zobrazit stav hlasového připojení" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Vynutit zapnutý pomalý režim" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Vynutit neznámý typ zprávy" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Vynutit připravenost aktualizace" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Přeposlat" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Přetočit o {defaultSeekAmount} sekund dopředu" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generování kódu…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Překryv s územním omezením" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Možnosti GIFu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Načítání výběru GIFů" @@ -17226,14 +17161,14 @@ msgstr "Dárkové kódy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Délka trvání dárku" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventář dárků" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Dárek nenalezen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Dárek uplatněn" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Má" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Má historii nákupů" @@ -17892,7 +17827,7 @@ msgstr "Srdce" msgid "Hebrew" msgstr "Hebrejština" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Výška" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Nainstalovat novou aplikaci" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Nainstalováno" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Nainstalovaná verze: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instaluje se aktualizace desktopové aplikace {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instaluje se aktualizace desktopové aplikace…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Graf latence" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Výchozí zařízení v systému Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Balíček pro Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Spravovat předplatné" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Ruční aktualizace desktopové aplikace" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Obsah pro dospělé a upozornění na obsah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Omezení přístupu ke kanálu pro dospělé" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Ověření věku pro obsah pro dospělé je momentálně dostupné pouze ve Spojeném království." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Omezení přístupu k médiím pro dospělé" @@ -22888,13 +22813,13 @@ msgstr "Ztlumit" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Vypnout zvuk" @@ -23316,16 +23241,6 @@ msgstr "Předčítání" msgid "Native title bar" msgstr "Nativní záhlaví okna" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Průběh nativní aktualizace" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Nativní aktualizace připravena" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Chyba sítě" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Síť a výkon" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Noví uživatelé se teď nemůžou připojit. Můžete si ale vytvořit účet nebo se přihlásit a zkusit tento odkaz znovu později." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nová verze" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Chybí oprávnění {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Chybí oprávnění {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Bez popisu." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Není k dispozici žádná aktualizace desktopové aplikace." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Žádné webhooky" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Nahlášení v aplikaci bez odeslání" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Otevřít výběr data" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Otevřít stránku pro stažení desktopové aplikace" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Otevřít nastavení" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Otevřít centrum softwaru" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Otevřít uživatelskou nabídku pro {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Otevřít video" @@ -26558,9 +26473,9 @@ msgstr "Přehrát výběr" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Přehrát video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Prémiové výhody vypnuty" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Datum začátku předplatného" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Stav Premium byl resetován na backendu." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Typ předplatného" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Datum konce předplatného" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Připravuji" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulář pro úpravu profilu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Upozornění na data profilu" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Soukromí profilu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Zástupné náhledy načítání profilů" @@ -28223,18 +28138,13 @@ msgstr "Znovu načíst" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Aby se změna nástroje pro kontrolu pravopisu plně projevila, znovu načtěte aplikaci {PRODUCT_NAME}. Přepínání mezi kontrolou pravopisu v aplikaci a systémovou kontrolou vyžaduje opětovné načtení vykreslovacího procesu, protože Electron nemůže měnit poskytovatele za běhu." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Znovu načíst {productName} pro použití aktualizovaných modulů" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Znovu načtěte aplikaci {productName}, aby se použila aktualizace webové aplikace" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Znovu načtěte aplikaci {productName}, aby se použila aktualizace webové aplikace na verzi {version}" @@ -29142,7 +29052,7 @@ msgstr "Znovu odesláno" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Resetovat" @@ -29475,26 +29385,11 @@ msgstr "Respektovat záměr odesílatele, bez upozornění při přepnutí zmín msgid "Restart {appName}" msgstr "Restartovat aplikaci {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Restartovat {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Aby se tato změna projevila, restartujte aplikaci {productName}. Desktopová prostředí Linuxu nedokážou za běhu spolehlivě přidávat nebo odebírat ikony v oznamovací oblasti." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Restartujte aplikaci {productName}, aby se nainstalovala aktualizace desktopové aplikace" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Restartujte aplikaci {productName}, aby se nainstalovala aktualizace desktopové aplikace na verzi {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Ban uživatele {0} byl zrušen" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Přetočit o {defaultSeekAmount, plural, one {# sekundu} few {# sekundy} many {# sekundy} other {# sekund}} zpět" @@ -29866,7 +29761,7 @@ msgstr "Rumunština" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Otočit po směru hodinových ručiček" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Řádků na stránku" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Balíček RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Nastavení vlastního hostování" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Režim vlastního hostování" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Přepsání režimu s vlastním hostováním" @@ -32212,8 +32107,8 @@ msgstr "Zobrazit sdílení mé obrazovky" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Zobrazit, že píšu" @@ -32675,7 +32570,7 @@ msgstr "Přeskočit" msgid "Skip \"Mark all as read\" confirmation" msgstr "Přeskočit potvrzení \"Označit vše jako přečtené\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Přeskočit oříznutí" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Přeskočit upozornění na externí odkaz pro všechny domény" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Přeskočit síťový požadavek při odeslání nahlášení v aplikaci. Postup i tak přejde na obrazovku úspěšného odeslání, abyste mohli vyzkoušet uživatelské rozhraní, ale bezpečnostnímu týmu se nic neodešle." @@ -32752,8 +32647,8 @@ msgstr "Slovinsko" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Pomalé nahrávání příloh" @@ -32769,29 +32664,29 @@ msgstr "Zpomalte – zkuste to znovu za chvíli." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Pomalá úprava zprávy" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Pomalé načítání zpráv" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Pomalé odesílání zpráv" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Pomalé načítání profilu" @@ -32807,7 +32702,7 @@ msgstr "Pomalý režim · čekejte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Pomalý režim aktivní" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Pomalý režim je nastaven na {durationLabel}. Před odesláním další zprávy počkejte." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Zbývající čas pomalého režimu" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Oznamovací oblast" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalace spravovaná systémem" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Klepnutím přidáte poznámku" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archiv tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Komunita, kterou hledáte, mohla být smazána nebo k ní nemáte přístup." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Aktualizaci desktopové aplikace se nepodařilo stáhnout. Až bude připojení stabilní, zkuste to znovu pomocí tlačítka aktualizace." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Aktualizace desktopové aplikace byla stažena. Restartujte aplikaci {productName}, aby se dokončila instalace." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Stažený soubor je uložen do vašeho počítače. Nainstalujte jej pomocí svého správce balíčků." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Tuto akci nelze vrátit zpět. Všechna související data, včetně uživatele bota, budou trvale smazána." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Tato animace je příliš dlouhá nebo příliš velká na oříznutí. Zkuste kratší nebo menší soubor." @@ -35549,7 +35439,7 @@ msgstr "Tento bot vyžaduje administrátorská oprávnění. Udělte mu je, pouz #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Tento prohlížeč neumí oříznout animované soubory {avifFormatLabel}. Nahrajte místo toho GIF nebo WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Tato konzole prohlížeče je nástroj pro vývojáře." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Ve vašem prohlížeči je vypnutá technologie WebAssembly, takže nelze oříznout animované obrázky." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Tato konverzace již není k dispozici." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Tato verze desktopové aplikace neumožňuje instalovat aktualizace přímo v aplikaci {productName}. Stáhněte si nejnovější instalátor desktopové aplikace." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Toto desktopové prostředí nenabízí zkratky pro celý systém. Klávesové zkratky dál fungují při aktivním okně aplikace {productName}." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Tato vývojová verze se nemůže sama aktualizovat. Stáhněte si desktopový instalátor a otestujte proces aktualizace." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Tento kód pro předání vypršel. Vygenerujte si nový, abyste mohli pokračovat." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Tento obrázek se nepodařilo přečíst. Může být poškozený." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Tato instalace je spravována vaším systémem. Aktualizujte aplikaci {productName} prostřednictvím vašeho softwarového centra nebo správce balíčků." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Datum zpřístupnění historie nemůže být v budoucnosti" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura pro {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Lišta s názvem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Platforma záhlaví" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Přepnout kameru" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Přepnout ovládání" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografie" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Komponenty UI" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Geolokace UK" @@ -37528,7 +37418,7 @@ msgstr "Nekategorizováno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Účet s nedokončenou registrací" @@ -37689,7 +37579,7 @@ msgstr "Univerzální záložní volba. Nejnižší kvalita, ale funguje všude. #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Neznámý" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Neznámá pozvánka" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Neznámý typ zprávy" @@ -37893,10 +37783,10 @@ msgstr "Zrušit ztlumení" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Zapnout zvuk" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Jen nepřečtené soukromé konverzace" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Počet nepřečtených dárků" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Nepřečtené dárky" @@ -38267,10 +38157,20 @@ msgstr "Aktualizujte aplikaci {productName}, abyste si mohli tuto zprávu prohl msgid "Update app" msgstr "Aktualizovat aplikaci" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Aktualizace je k dispozici" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Aktualizovat můj stav" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Aktualizovat nyní" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Aktualizované zásady" msgid "Updated saved media" msgstr "Uložená média aktualizována" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Stav aktualizátoru" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Kód vlastního odkazu na pozvánku může obsahovat pouze písmena, číslice a spojovníky, které nesmějí být na začátku ani na konci." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Upozornění k vlastnímu odkazu na pozvánku" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Ověření a bariéry členství" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Ověřovací bariéra" @@ -39438,7 +39333,7 @@ msgstr "Průsvitný efekt Vibrancy" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Náhled videa" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Průběh videa" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Nastavení videa" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura videa" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Odznak Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID odznaku Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Potvrzení hlasového připojení" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Ladění hlasového připojení" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Hlasová zpráva" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Přehrávač hlasových zpráv" @@ -40500,11 +40395,6 @@ msgstr "Hledání na webu" msgid "Web search provider" msgstr "Poskytovatel webového vyhledávání" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Webový aktualizátor připraven" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Jejda, to je nálož" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Zruší se" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Přiblížení" diff --git a/fluxer_app/src/features/i18n/locales/da/messages.po b/fluxer_app/src/features/i18n/locales/da/messages.po index b0e582c36..c126c1b48 100644 --- a/fluxer_app/src/features/i18n/locales/da/messages.po +++ b/fluxer_app/src/features/i18n/locales/da/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanal følger} other {# kanaler følger}} denne k msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# fællesskab fundet} other {# fællesskaber fundet}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# fællesskab er midlertidigt utilgængeligt på grund af en fejl i fluxkondensatoren.} other {# fællesskaber er midlertidigt utilgængelige på grund af en fejl i fluxkondensatoren.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} kan ikke starte en sikker optagelse af lyden fra denne app msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} kan ikke bruge en hardware-encoder til dette, så den vil bruge din CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} lukker, installerer opdateringen og åbner igen." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} kunne ikke oprette forbindelse til opdateringstjenesten. Kontroller din internetforbindelse, og prøv igen." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} kunne ikke genstarte og installere den downloadede opdatering. Prøv igen ved at klikke på knappen \"Opdater\"." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "et værtsnavn, f.eks. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "En opdatering til Linux-appen er tilgængelig. Vælg pakkeformatet for dette system, så gemmer {productName} det lokalt." @@ -4597,11 +4597,6 @@ msgstr "Besvar det indgående opkald" msgid "Any key" msgstr "En vilkårlig tast" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "En opdatering er klar" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Tab af lydpakker:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Lydafspiller" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Lydbehandling (fokuseret tale)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Afspilningsposition" @@ -5551,7 +5546,7 @@ msgstr "AV1 (kræver tilvalg)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Tilgængelig" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Udelukkelser" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Nedtælling til barriere" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Fakturering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Faktureringscyklus" @@ -6867,7 +6862,7 @@ msgstr "Kan ikke uploade filer her" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Lukket tråden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Cloud-upload" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus på skrivefelt" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimerer" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Kunne ikke ændre din pris" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Kunne ikke søge efter opdateringer" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Kunne ikke oprette dit gendannelsessæt. Du kan oprette et senere i dine kontoindstillinger." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Kunne ikke beskære billede" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Kunne ikke slette dine beskeder" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Kunne ikke downloade opdateringen til computerappen" @@ -10841,11 +10836,6 @@ msgstr "Kunne ikke starte betaling" msgid "Couldn't start the connection" msgstr "Kunne ikke starte forbindelsen" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Kunne ikke starte opdateringen til computerappen" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Beskær invitationens baggrund" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Beskæringsforhåndsvisning" @@ -11343,12 +11333,12 @@ msgstr "Beskær profilbanner" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Det beskårede billede er for stort. Vælg et mindre område eller en mindre fil (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Beskærer {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Lyden er slået fra af moderatorer" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-pakke" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Computerapp" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Computerappen er opdateret" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Opstart af computerapp" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Version {version} af computerappen er tilgængelig. Vælg en Linux-pakke." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Opdatering til computerappen tilgængelig" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Opdatering til computerappen tilgængelig. Vælg en Linux-pakke." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Opdatering til computerappen klar" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Version {version} af computerappen er downloadet. Genstart {productName} for at fuldføre installationen." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Udviklertilstand" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Udviklerindstilling" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Udviklerværktøjer er ikke tilgængelige" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Udviklingsversion" @@ -13604,26 +13584,6 @@ msgstr "Download-knap" msgid "Download desktop app" msgstr "Download computerappen" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Download opdatering til computerappen" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Download opdatering til computerappen ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Download version {version} af computerappen" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Download version {version} af computerappen ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Download eksport" @@ -13688,26 +13648,6 @@ msgstr "Download kildekort, så stack traces og udviklerværktøjer peger på de msgid "Download video" msgstr "Hent video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Downloader version {version} af computerappen: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Downloader opdatering til computerappen: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Downloader opdatering til computerappen: {percent}% ({formatBytes} / {formatBytes2} med {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Downloader opdatering til computerappen…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-mailbekræftelse påkrævet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mailadresse bekræftet" @@ -15966,7 +15906,7 @@ msgstr "Funktionen er midlertidigt deaktiveret" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funktioner" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Fremtving aktivering" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Fremtving fejl ved indlæsning af beskeder" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Fremtving fejl ved afsendelse af beskeder" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Fremtving indlæsningstilstand i GIF-vælgeren" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Fremtving indlæsningsskelet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Gennemtving mærkning som indhold for voksne" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Fremtving manglende tilladelse: {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Gennemtving advarsel om profildata" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Fremtving indlæsningsskeletter for profiler" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Gennemtving visning" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Vis altid advarslen om brugerdefinerede invitationslinks" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Vis altid taleforbindelsen" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Gennemtving aktiv langsom tilstand" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Gennemtving ukendt beskedtype" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Vis altid, at en opdatering er klar" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Videresend" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder frem" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Genererer kode…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geoblokerings-overlay" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-indstillinger" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-vælger indlæses" @@ -17226,14 +17161,14 @@ msgstr "Gavekoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gavevarighed" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gaveoversigt" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Gave ikke fundet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Gave indløst" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Har" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Har købt tidligere" @@ -17892,7 +17827,7 @@ msgstr "Hjerte" msgid "Hebrew" msgstr "Hebraisk" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Højde" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Installer den nye app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installeret" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installeret version: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installerer opdatering {version} til computerappen…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installerer opdatering til computerappen…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Latensgraf" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux-standard" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-pakke" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Administrer dit abonnement" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manuel opdatering af computerappen" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Indhold for voksne og indholdsadvarsler" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Adgangskontrol for kanaler med indhold for voksne" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Adgangsbekræftelse for indhold for voksne er i øjeblikket kun tilgængelig i Storbritannien." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Adgangskontrol for medier med indhold for voksne" @@ -22888,13 +22813,13 @@ msgstr "Sæt på lydløs" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Slå lyden fra" @@ -23316,16 +23241,6 @@ msgstr "Oplæsning" msgid "Native title bar" msgstr "Systemets titellinje" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Status for den indbyggede opdatering" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Indbygget opdatering klar" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Netværksfejl" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Netværk og ydeevne" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nye brugere kan ikke blive medlem lige nu. Du kan stadig oprette en konto eller logge ind og derefter prøve dette link igen senere." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Ny version" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nej" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Mangler tilladelsen {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Mangler tilladelsen {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Ingen beskrivelse." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Der er ingen opdatering til computerappen." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Ingen webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Simuler anmeldelser i appen uden at sende dem" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Åbn datovælger" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Åbn downloads til computer" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Åbn indstillinger" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Åbn softwarecenter" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Åbn brugermenu for {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Åbn video" @@ -26558,9 +26473,9 @@ msgstr "Afspil valgt" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Afspil video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premiumfordele deaktiveret" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium siden" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premium-status nulstillet på backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium-type" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium indtil dato" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Forbereder" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formular til profiltilpasning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Advarsel om profildata" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profilsynlighed" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Indlæsningspladsholdere for profiler" @@ -28223,18 +28138,13 @@ msgstr "Genindlæs" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Genindlæs {PRODUCT_NAME} for at anvende ændringen af stavekontrolmotor fuldt ud. Skift mellem stavekontrol i appen og systemets stavekontrol kræver, at brugerfladen genindlæses, fordi Electron ikke kan skifte udbyder under drift." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Genstart {productName} for at bruge de opdaterede moduler" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Genindlæs {productName} for at bruge webopdateringen" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Genindlæs {productName} for at bruge webopdateringen {version}" @@ -29142,7 +29052,7 @@ msgstr "Sendt igen" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Nulstil" @@ -29475,26 +29385,11 @@ msgstr "Respekter afsenderens hensigt, uden advarsel når de slår @-omtaler til msgid "Restart {appName}" msgstr "Genstart {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Genstart {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Genstart {productName}, så ændringen kan træde i kraft. Linux-skrivebordsmiljøer kan ikke pålideligt tilføje eller fjerne ikoner i systembakken, mens appen kører." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Genstart {productName} for at installere opdateringen til computerappen" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Genstart {productName} for at installere opdatering {version} til computerappen" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Ophævede udelukkelse for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder tilbage" @@ -29866,7 +29761,7 @@ msgstr "Rumænsk" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Roter med uret" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rækker pr. side" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-pakke" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Opsætning til selv-hosting" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Selvhostet tilstand" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Tvungen selvhostet tilstand" @@ -32212,8 +32107,8 @@ msgstr "Vis min skærmdeling" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Vis mig selv som skriver" @@ -32675,7 +32570,7 @@ msgstr "Spring over" msgid "Skip \"Mark all as read\" confirmation" msgstr "Spring \"Markér alle som læst\"-bekræftelse over" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Spring beskæring over" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Spring advarsel om eksternt link over for alle domæner" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Spring netværkskaldet over, når en anmeldelse indsendes i appen. Forløbet fortsætter til bekræftelsesskærmen, så du kan afprøve brugerfladen, men intet sendes til sikkerhedsteamet." @@ -32752,8 +32647,8 @@ msgstr "Slovenien" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Langsom upload af vedhæftede filer" @@ -32769,29 +32664,29 @@ msgstr "Sæt farten ned – vent et øjeblik, før du prøver igen." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Langsom redigering af besked" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Langsom indlæsning af beskeder" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Langsom afsendelse af beskeder" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Langsom indlæsning af profil" @@ -32807,7 +32702,7 @@ msgstr "Langsom tilstand · vent {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Langsom tilstand aktiv" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Langsom tilstand er sat til {durationLabel}. Vent, før du sender en ny besked." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Resterende ventetid i langsom tilstand" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Systembakke" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Systemadministreret installation" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tryk for at tilføje en note" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-arkiv" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Det fællesskab, du leder efter, er muligvis blevet slettet, eller også har du ikke adgang til det." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Opdateringen til computerappen kunne ikke downloades. Prøv igen via opdateringsknappen, når din forbindelse er stabil." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Opdateringen til computerappen er downloadet. Genstart {productName} for at fuldføre installationen." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Den downloadede fil gemmes på din computer. Installer den med din normale pakkehåndtering." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Denne handling kan ikke fortrydes. Alle tilknyttede data, inklusive botbrugeren, slettes permanent." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Denne animation er for lang eller for stor til at beskære. Prøv en kortere eller mindre fil." @@ -35549,7 +35439,7 @@ msgstr "Denne bot anmoder om administratorrettigheder. Giv kun adgang, hvis du h #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Denne browser kan ikke beskære animerede {avifFormatLabel}-filer. Upload en GIF eller WebP i stedet." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Denne browserkonsol er et udviklerværktøj." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Denne browser har WebAssembly slået fra, så animerede billeder kan ikke beskæres." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Denne samtale er ikke længere tilgængelig." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Denne version af computerappen kan ikke installere opdateringer i {productName}. Download den nyeste installationsfil til computerappen i stedet." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Dette skrivebord tilbyder ikke systemdækkende genveje. Genveje virker stadig, mens {productName} er i fokus." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Denne udviklingsversion kan ikke opdatere sig selv. Download en installationsfil til computerappen for at afprøve opdateringsforløbet." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Denne overdragelseskode er udløbet. Generer en ny for at fortsætte." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Dette billede kunne ikke læses. Det er muligvis beskadiget." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Denne installation administreres af dit system. Opdater {productName} via dit softwarecenter eller din pakkehåndtering." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Skæringsdatoen kan ikke ligge i fremtiden" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniaturebillede for {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Titellinje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Titellinjeplatform" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Slå kamera til/fra" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Vis/skjul kontroller" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografi" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI-komponenter" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Placering i Storbritannien" @@ -37528,7 +37418,7 @@ msgstr "Uden kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Kontooprettelse ikke fuldført" @@ -37689,7 +37579,7 @@ msgstr "Et alternativ, der virker overalt, men har den laveste kvalitet." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Ukendt" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Ukendt invitation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Ukendt beskedtype" @@ -37893,10 +37783,10 @@ msgstr "Slå lydløs fra" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Slå lyden til" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Kun ulæste DM'er" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Antal gaver, der ikke er set" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Ulæst gaveoversigt" @@ -38267,10 +38157,20 @@ msgstr "Opdater {productName} for at se denne besked." msgid "Update app" msgstr "Opdater app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Opdatering tilgængelig" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Opdater min status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Opdater nu" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Opdaterede politikker" msgid "Updated saved media" msgstr "Gemt medie opdateret" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Opdateringsprogrammets status" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Koden i det brugerdefinerede invitationslink må kun indeholde alfanumeriske tegn og bindestreger, som ikke står først eller sidst." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Vigtig information om brugerdefinerede invitationslinks" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Bekræftelse og medlemskabskrav" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Krav om bekræftelse" @@ -39438,7 +39333,7 @@ msgstr "Vibrancy-effekt" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videoforhåndsvisning" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videoens afspilningsposition" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videoindstillinger" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videominiature" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-badge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-badge-ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Bekræftelse af taleforbindelse" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Fejlfinding af taleforbindelse" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Talebesked" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Afspiller til talebeskeder" @@ -40500,11 +40395,6 @@ msgstr "Websøgning" msgid "Web search provider" msgstr "Søgemaskine til web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web-opdatering klar" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Wow, det var mange" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Opsigelse planlagt" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/de/messages.po b/fluxer_app/src/features/i18n/locales/de/messages.po index 79561c15b..ebc7c1c53 100644 --- a/fluxer_app/src/features/i18n/locales/de/messages.po +++ b/fluxer_app/src/features/i18n/locales/de/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# Kanal folgt} other {# Kanäle folgen}} diesem Kan msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# Community gefunden} other {# Communitys gefunden}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# Community ist aufgrund einer Fehlfunktion des Fluxkompensators vorübergehend nicht verfügbar.} other {# Communitys sind aufgrund einer Fehlfunktion des Fluxkompensators vorübergehend nicht verfügbar.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} kann den Ton dieser App hier nicht sicher getrennt aufnehm msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} kann hierfür keinen Hardware-Encoder verwenden und nutzt deshalb deine CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} wird geschlossen, das Update installiert und dann wieder geöffnet." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} konnte den Update-Dienst nicht erreichen. Bitte überprüfe deine Verbindung und versuche es noch einmal." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} konnte nicht neu gestartet werden, um das heruntergeladene Update zu installieren. Bitte versuche es erneut, indem du auf die Schaltfläche „Update“ klickst." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ein Hostname, z. B. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Ein Desktop-Update für Linux ist verfügbar. Wähle das Paketformat für dieses System und {productName} speichert es lokal." @@ -4597,11 +4597,6 @@ msgstr "Eingehenden Anruf annehmen" msgid "Any key" msgstr "Beliebige Taste" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Updater bereit" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Audio-Paketverlust:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Audioplayer" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Audioverarbeitung (Fokus auf Stimme)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Wiedergabefortschritt" @@ -5551,7 +5546,7 @@ msgstr "AV1 (erfordert Opt-in)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Verfügbar" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Gebannte Nutzer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Barriere-Countdown" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Abrechnung" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Abrechnungszeitraum" @@ -6867,7 +6862,7 @@ msgstr "Dateien können hier nicht hochgeladen werden" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Thread geschlossen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Cloud-Upload" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus auf Nachrichteneingabe" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimieren" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Preis konnte nicht geändert werden" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Suche nach Updates fehlgeschlagen" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Wiederherstellungsschlüssel konnte nicht erstellt werden. Du kannst ihn später in deinen Kontoeinstellungen erstellen." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Bild konnte nicht zugeschnitten werden" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nachrichten konnten nicht gelöscht werden" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Desktop-Update konnte nicht heruntergeladen werden" @@ -10841,11 +10836,6 @@ msgstr "Kauf konnte nicht gestartet werden" msgid "Couldn't start the connection" msgstr "Verbindung konnte nicht gestartet werden" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Desktop-Update konnte nicht gestartet werden" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Einladungshintergrund zuschneiden" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Vorschau zuschneiden" @@ -11343,12 +11333,12 @@ msgstr "Profilbanner zuschneiden" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Das zugeschnittene Bild ist zu groß. Wähle einen kleineren Bereich oder eine kleinere Datei (max. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Zuschneiden von {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Ton von Moderatoren ausgeschaltet" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-Paket" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Desktop-App" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Die Desktop-App ist auf dem neuesten Stand" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Desktop-Start" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Desktop-Update {version} verfügbar. Wähle ein Linux-Paket." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Desktop-Update verfügbar" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Desktop-Update verfügbar. Wähle ein Linux-Paket." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Desktop-Update bereit" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Die Desktop-Version {version} wurde heruntergeladen. Starte {productName} neu, um die Installation abzuschließen." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Entwicklermodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Entwickleroption" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Entwicklertools nicht verfügbar" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Entwicklungs-Build" @@ -13604,26 +13584,6 @@ msgstr "Herunterladen-Button" msgid "Download desktop app" msgstr "Desktop-App herunterladen" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Desktop-Update herunterladen" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Desktop-Update herunterladen ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Desktop-Update {version} herunterladen" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Desktop-Update {version} herunterladen ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Export herunterladen" @@ -13688,26 +13648,6 @@ msgstr "Download-Quellzuordnungsdateien, damit Stack-Traces und die Entwicklerto msgid "Download video" msgstr "Video herunterladen" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Desktop-Update {version} wird heruntergeladen: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Desktop-Update wird heruntergeladen: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Desktop-Update wird heruntergeladen: {percent}% ({formatBytes} / {formatBytes2} bei {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Desktop-Update wird heruntergeladen …" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-Mail-Verifizierung erforderlich" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-Mail verifiziert" @@ -15966,7 +15906,7 @@ msgstr "Funktion vorübergehend deaktiviert" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funktionen" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Erzwungen aktiviert" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Fehlerhaftes Laden von Nachrichten erzwingen" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Fehlgeschlagene Nachrichtenübermittlungen erzwingen" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Ladezustand der GIF-Auswahl erzwingen" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Ladeplatzhalter erzwingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Nicht jugendfreie Medien erzwingen" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Keine {permissionName}-Berechtigung erzwingen" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Profil-Datenwarnung erzwingen" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Ladeplatzhalter für Profile erzwingen" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Einblenden erzwingen" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Anzeige des Hinweises zur Vanity-URL erzwingen" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Anzeige der Sprachverbindung erzwingen" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Aktiven Slow-Modus erzwingen" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Unbekannten Nachrichtentyp erzwingen" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Status „Update bereit“ erzwingen" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Weiterleiten" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} Sekunden vorspulen" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Code wird generiert …" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geoblock-Overlay" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-Optionen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-Auswahl wird geladen" @@ -17226,14 +17161,14 @@ msgstr "Geschenkcodes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Geschenkdauer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Geschenkinventar" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Geschenk nicht gefunden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Geschenk eingelöst" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Enthält" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Hat jemals etwas gekauft" @@ -17892,7 +17827,7 @@ msgstr "Herz" msgid "Hebrew" msgstr "Hebräisch" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Höhe" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Neue App installieren" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installiert" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installierte Version: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Desktop-Update {version} wird installiert …" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Desktop-Update wird installiert …" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Latenz-Diagramm" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux-Standard" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-Paket" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Abo verwalten" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manuelles Desktop-Update" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Nicht jugendfreie Inhalte und Inhaltswarnungen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Bestätigung für Kanäle mit nicht jugendfreien Inhalten" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Altersprüfungen für nicht jugendfreie Inhalte sind derzeit nur im Vereinigten Königreich verfügbar." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Bestätigung für nicht jugendfreie Medien" @@ -22888,13 +22813,13 @@ msgstr "Stummschalten" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Ton ausschalten" @@ -23316,16 +23241,6 @@ msgstr "Vorlesefunktion" msgid "Native title bar" msgstr "Native Titelleiste" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Fortschritt des nativen Updates" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Nativer Updater bereit" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Netzwerkfehler" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Netzwerk und Leistung" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Neue Benutzer können im Moment nicht beitreten. Du kannst aber trotzdem einen Account erstellen oder dich anmelden und es später noch einmal mit diesem Link versuchen." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Neue Version" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nein" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Keine Berechtigung „{attachFilesPermission}“" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Keine Berechtigung \"{sendMessagesPermission}\"" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Keine Beschreibung." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Kein Desktop-Update verfügbar." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Keine Webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "In-App-Meldungen ohne Funktion" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Datumsauswahl öffnen" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Desktop-Downloads öffnen" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Einstellungen öffnen" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Softwarecenter öffnen" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Benutzermenü für {displayName} öffnen" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Video öffnen" @@ -26558,9 +26473,9 @@ msgstr "Auswahl abspielen" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Video abspielen" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premium-Vorteile deaktiviert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium seit Datum" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premium-Status im Backend zurückgesetzt." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium-Typ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium bis" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Vorbereiten" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formular zum Anpassen des Profils" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Warnung zu Profil-Daten" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profil-Datenschutz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Ladeplatzhalter für Profile" @@ -28223,18 +28138,13 @@ msgstr "Neu laden" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "{PRODUCT_NAME} neu laden, um die Engine-Änderung vollständig zu übernehmen. (Das Wechseln zwischen In-App- und System-Rechtschreibprüfung erfordert einen Renderer-Neustart, da Electron Anbieter nicht während des Betriebs austauschen kann.)" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Lade {productName} neu, um die aktualisierten Module zu verwenden" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Lade {productName} neu, um das Web-Update zu nutzen" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Lade {productName} neu, um das Web-Update {version} zu nutzen" @@ -29142,7 +29052,7 @@ msgstr "Erneut gesendet" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Zurücksetzen" @@ -29475,26 +29385,11 @@ msgstr "Absenderabsicht respektieren, keine Warnung beim Umschalten der @-Erwäh msgid "Restart {appName}" msgstr "{appName} neu starten" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Starte {productName} neu" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Starte {productName} neu, damit diese Änderung wirksam wird, da Linux-Desktops Symbole im Infobereich zur Laufzeit nicht zuverlässig hinzufügen oder entfernen können." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Starte {productName} neu, um das Desktop-Update zu installieren" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Starte {productName} neu, um das Desktop-Update {version} zu installieren" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Ban für {0} aufgehoben" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} Sekunden zurückspulen" @@ -29866,7 +29761,7 @@ msgstr "Rumänisch" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Im Uhrzeigersinn drehen" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Zeilen pro Seite" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-Paket" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Einrichtung für selbst gehostete Installationen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Self-Hosted-Modus" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Self-hosted-Modus überschreiben" @@ -32212,8 +32107,8 @@ msgstr "Eigene Bildschirmfreigabe anzeigen" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Mich als \"tippt …\" anzeigen" @@ -32675,7 +32570,7 @@ msgstr "Überspringen" msgid "Skip \"Mark all as read\" confirmation" msgstr "Bestätigung für \"Alle als gelesen markieren\" überspringen" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Zuschneiden überspringen" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Warnung für externe Links für alle Domains überspringen" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Überspringt den Netzwerkaufruf beim Absenden einer In-App-Meldung. Der Ablauf führt weiterhin zur Erfolgsseite, damit du die Oberfläche ausprobieren kannst. Es wird jedoch nichts an das Sicherheitsteam gesendet." @@ -32752,8 +32647,8 @@ msgstr "Slowenien" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Langsamer Anhang-Upload" @@ -32769,29 +32664,29 @@ msgstr "Langsamer – warte einen Moment, bevor du es erneut versuchst." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Langsames Bearbeiten von Nachrichten" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Langsames Laden von Nachrichten" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Langsamer Nachrichtenversand" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Langsames Laden des Profils" @@ -32807,7 +32702,7 @@ msgstr "Slow-Modus · warte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slow-Modus aktiv" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Der Slow-Modus ist auf {durationLabel} eingestellt. Warte, bevor du eine weitere Nachricht sendest." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Verbleibende Zeit im Slow-Modus" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Infobereich" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Systemverwaltete Installation" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tippen, um eine Notiz hinzuzufügen" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-Archiv" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Die gesuchte Community wurde möglicherweise gelöscht oder du hast keinen Zugriff darauf." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Das Desktop-Update konnte nicht heruntergeladen werden. Versuche es erneut über die Schaltfläche „Update“, wenn deine Verbindung stabil ist." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Das Desktop-Update wurde heruntergeladen. Starte {productName} neu, um die Installation abzuschließen." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Die heruntergeladene Datei ist auf deinem Computer gespeichert. Installiere sie mit deinem üblichen Paketmanager." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Alle zugehörigen Daten, einschließlich des Bot-Benutzers, werden dauerhaft gelöscht." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Diese Animation ist zu lang oder zu groß zum Zuschneiden. Versuche es mit einer kürzeren oder kleineren Datei." @@ -35549,7 +35439,7 @@ msgstr "Dieser Bot fordert die Administratorberechtigung an. Erteile sie nur, we #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Dieser Browser kann keine animierten {avifFormatLabel}-Dateien zuschneiden. Lade stattdessen eine GIF- oder WebP-Datei hoch." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Diese Browser-Konsole ist ein Entwickler-Tool." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "In diesem Browser ist WebAssembly deaktiviert, daher können animierte Bilder nicht zugeschnitten werden." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Diese Unterhaltung ist nicht mehr verfügbar." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Diese Desktop-Version kann keine Updates innerhalb von {productName} installieren. Bitte lade stattdessen die neueste Desktop-Installationsdatei herunter." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Dieser Desktop bietet keine systemweiten Tastenkombinationen. Tastenkombinationen funktionieren weiterhin, solange {productName} im Fokus ist." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Diese Entwicklungsversion kann sich nicht selbst updaten. Lade ein Desktop-Installationsprogramm herunter, um den Ablauf von Updates zu testen." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Dieser Übergabecode ist abgelaufen. Erstelle einen neuen, um fortzufahren." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Dieses Bild konnte nicht gelesen werden. Es ist möglicherweise beschädigt." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Diese Installation wird von deinem System verwaltet. Aktualisiere {productName} über dein Softwarecenter oder deinen Paketmanager." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Der Stichtag darf nicht in der Zukunft liegen" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniaturbild für \"{title}\"" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Titelleiste" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Titelleisten-Plattform" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Kamera umschalten" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Steuerung ein-/ausblenden" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografie" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI-Komponenten" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "UK-Region" @@ -37528,7 +37418,7 @@ msgstr "Nicht kategorisiert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Nicht beanspruchter Account" @@ -37689,7 +37579,7 @@ msgstr "Universeller Fallback. Geringste Qualität, funktioniert aber überall." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Unbekannt" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Unbekannte Einladung" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Unbekannter Nachrichtentyp" @@ -37893,10 +37783,10 @@ msgstr "Stummschaltung aufheben" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Ton einschalten" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Nur ungelesene DMs" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Anzahl ungelesener Geschenke" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Ungelesene Geschenke" @@ -38267,10 +38157,20 @@ msgstr "Aktualisiere {productName}, um diese Nachricht anzuzeigen." msgid "Update app" msgstr "App aktualisieren" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Update verfügbar" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Meinen Status aktualisieren" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Jetzt aktualisieren" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Aktualisierte Richtlinien" msgid "Updated saved media" msgstr "Gespeicherte Medien aktualisiert" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Updater-Status" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Vanity-URL darf nur alphanumerische Zeichen und interne Bindestriche enthalten." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Hinweis zur Vanity-URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verifizierung & Mitgliedschaftsbarrieren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verifizierungsbarriere" @@ -39438,7 +39333,7 @@ msgstr "Lebendigkeit" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videovorschau" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videofortschritt" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videoeinstellungen" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videovorschaubild" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-Abzeichen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-Abzeichen-ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Sprachverbindung bestätigen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Fehlerbehebung bei der Sprachverbindung" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Sprachnachricht" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Sprachnachricht-Player" @@ -40500,11 +40395,6 @@ msgstr "Websuche" msgid "Web search provider" msgstr "Websuchanbieter" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web-Updater bereit" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Uff, ganz schön viel" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Wird gekündigt" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoomen" diff --git a/fluxer_app/src/features/i18n/locales/el/messages.po b/fluxer_app/src/features/i18n/locales/el/messages.po index c5570b942..5fe6dc9e7 100644 --- a/fluxer_app/src/features/i18n/locales/el/messages.po +++ b/fluxer_app/src/features/i18n/locales/el/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# κανάλι ακολουθεί} other {# καν msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# κοινότητα βρέθηκε} other {# κοινότητες βρέθηκαν}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# κοινότητα είναι προσωρινά μη διαθέσιμη λόγω δυσλειτουργίας του πυκνωτή ροής.} other {# κοινότητες είναι προσωρινά μη διαθέσιμες λόγω δυσλειτουργίας του πυκνωτή ροής.}}" @@ -1884,16 +1884,16 @@ msgstr "Το {productName} δεν μπορεί να ξεκινήσει μια α msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "Το {productName} δεν μπορεί να χρησιμοποιήσει κωδικοποιητή υλικού για αυτό, οπότε θα χρησιμοποιήσει την CPU σας." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "Το {productName} κλείνει, εγκαθιστά την ενημέρωση και ανοίγει ξανά." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "Το {productName} δεν μπόρεσε να επικοινωνήσει με την υπηρεσία ενημερώσεων. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Το {productName} δεν μπόρεσε να επανεκκινήσει με την ενημέρωση που κατέβηκε. Δοκιμάστε ξανά από το κουμπί ενημέρωσης." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ένα όνομα κεντρικού υπολογιστή, π.χ. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Υπάρχει διαθέσιμη ενημέρωση της εφαρμογής για Linux. Επιλέξτε τη μορφή πακέτου για αυτό το σύστημα και το {productName} θα την αποθηκεύσει τοπικά." @@ -4597,11 +4597,6 @@ msgstr "Απάντηση στην εισερχόμενη κλήση" msgid "Any key" msgstr "Οποιοδήποτε πλήκτρο" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Οποιαδήποτε ενημέρωση είναι έτοιμη" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Απώλεια πακέτων ήχου:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Αναπαραγωγή ήχου" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Επεξεργασία ήχου (φωνή σε πρώτο πλάνο)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Πρόοδος ήχου" @@ -5551,7 +5546,7 @@ msgstr "AV1 (απαιτείται ενεργοποίηση)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Διαθέσιμο" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Αποκλεισμοί" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Αντίστροφη μέτρηση φραγμού" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Χρέωση" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Κύκλος χρέωσης" @@ -6867,7 +6862,7 @@ msgstr "Δεν μπορείτε να ανεβάσετε αρχεία εδώ" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Έκλεισε το νήμα" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Αποστολή στο cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Εστίαση στο πεδίο σύνταξης" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Συμπίεση" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Δεν ήταν δυνατή η αλλαγή της τιμής σας" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Δεν ήταν δυνατός ο έλεγχος για ενημερώσεις" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Δεν ήταν δυνατή η δημιουργία του κιτ ανάκτησής σας. Μπορείτε να δημιουργήσετε ένα αργότερα στις ρυθμίσεις του λογαριασμού σας." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Δεν ήταν δυνατή η περικοπή της εικόνας" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Δεν ήταν δυνατή η διαγραφή των μηνυμάτων σας" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Δεν ήταν δυνατή η λήψη της ενημέρωσης για υπολογιστές" @@ -10841,11 +10836,6 @@ msgstr "Δεν ήταν δυνατή η έναρξη της ολοκλήρωση msgid "Couldn't start the connection" msgstr "Δεν ήταν δυνατή η έναρξη της σύνδεσης" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Δεν ήταν δυνατή η έναρξη της ενημέρωσης για υπολογιστές" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Περικοπή φόντου πρόσκλησης" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Προεπισκόπηση περικοπής" @@ -11343,12 +11333,12 @@ msgstr "Περικοπή banner προφίλ" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Η περικομμένη εικόνα είναι πολύ μεγάλη. Επιλέξτε μια μικρότερη περιοχή ή ένα μικρότερο αρχείο (μέγ. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Κοπή {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Σε σίγαση ήχου από συντονιστές" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Πακέτο DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Εφαρμογή υπολογιστή" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Η εφαρμογή υπολογιστή είναι ενημερωμένη" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Εκκίνηση στην επιφάνεια εργασίας" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Διαθέσιμη ενημέρωση {version} για υπολογιστή. Επιλέξτε πακέτο Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Διαθέσιμη ενημέρωση για υπολογιστή" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Διαθέσιμη ενημέρωση για υπολογιστή. Επιλέξτε πακέτο Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Η ενημέρωση για υπολογιστή είναι έτοιμη" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Έγινε λήψη της έκδοσης {version} για υπολογιστή. Επανεκκινήστε το {productName} για να ολοκληρώσετε την εγκατάσταση." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Λειτουργία προγραμματιστή" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Επιλογή προγραμματιστή" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Τα εργαλεία προγραμματιστή δεν είναι διαθέσιμα" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Έκδοση ανάπτυξης" @@ -13604,26 +13584,6 @@ msgstr "Κουμπί λήψης" msgid "Download desktop app" msgstr "Λήψη εφαρμογής για υπολογιστή" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Λήψη ενημέρωσης για υπολογιστή" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Λήψη ενημέρωσης για υπολογιστή ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Λήψη ενημέρωσης για υπολογιστή {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Λήψη ενημέρωσης για υπολογιστή {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Λήψη εξαγωγής" @@ -13688,26 +13648,6 @@ msgstr "Λήψη χαρτών πηγών ώστε τα ίχνη στοίβας msgid "Download video" msgstr "Λήψη βίντεο" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Λήψη ενημέρωσης για υπολογιστή {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Λήψη ενημέρωσης για υπολογιστή: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Λήψη ενημέρωσης για υπολογιστή: {percent}% ({formatBytes} / {formatBytes2} με {formatBytes3}/δευτ.)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Λήψη ενημέρωσης για υπολογιστή…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Απαιτείται επαλήθευση email" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Το email επαληθεύτηκε" @@ -15966,7 +15906,7 @@ msgstr "Η λειτουργία έχει απενεργοποιηθεί προσ #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Λειτουργίες" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Αναγκαστική ενεργοποίηση" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Εξαναγκασμός αποτυχημένων φορτώσεων μηνυμάτων" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Εξαναγκασμός αποτυχημένων αποστολών μηνυμάτων" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Εξαναγκασμός φόρτωσης επιλογέα GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Εξαναγκασμός σκελετού φόρτωσης" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Εξαναγκασμός εμφάνισης περιεχομένου ενηλίκων" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Εξαναγκασμός έλλειψης δικαιώματος {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Να εμφανίζεται πάντα η προειδοποίηση δεδομένων προφίλ" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Εξαναγκασμός σκελετών προφίλ" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Αναγκαστική εμφάνιση" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Να εμφανίζεται πάντα η αποποίηση ευθύνης για προσαρμοσμένη διεύθυνση URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Να εμφανίζεται πάντα η κατάσταση σύνδεσης φωνής" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Ενεργοποίηση αργής λειτουργίας" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Εξαναγκασμός άγνωστου τύπου μηνύματος" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Εξαναγκασμός ετοιμότητας ενημέρωσης" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Προώθηση" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Προώθηση κατά {defaultSeekAmount} δευτερόλεπτα" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Δημιουργία κωδικού…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Επικάλυψη γεωγραφικού αποκλεισμού" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Επιλογές GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Φόρτωση επιλογέα GIF" @@ -17226,14 +17161,14 @@ msgstr "Κωδικοί δώρων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Διάρκεια δώρου" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Δώρα" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Το δώρο δεν βρέθηκε" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Το δώρο εξαργυρώθηκε" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Περιέχει" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Έχει κάνει ποτέ αγορά" @@ -17892,7 +17827,7 @@ msgstr "Καρδιά" msgid "Hebrew" msgstr "Εβραϊκά" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Ύψος" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Εγκατάσταση της νέας εφαρμογής" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Εγκατεστημένο" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Εγκατεστημένη έκδοση: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Εγκατάσταση ενημέρωσης για υπολογιστή {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Εγκατάσταση ενημέρωσης για υπολογιστή…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Γράφημα καθυστέρησης" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Προεπιλεγμένη συσκευή Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Πακέτο Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Διαχείριση συνδρομής" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Μη αυτόματη ενημέρωση εφαρμογής υπολογιστή" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Περιεχόμενο για ενήλικες και προειδοποιήσεις περιεχομένου" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Πύλη καναλιού περιεχομένου ενηλίκων" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Οι έλεγχοι περιεχομένου ενηλίκων είναι προς το παρόν διαθέσιμοι μόνο στο Ηνωμένο Βασίλειο." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Πύλη πολυμέσων με περιεχόμενο για ενήλικες" @@ -22888,13 +22813,13 @@ msgstr "Σίγαση" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Απενεργοποίηση ήχου" @@ -23316,16 +23241,6 @@ msgstr "Αφήγηση" msgid "Native title bar" msgstr "Εγγενής γραμμή τίτλου" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Πρόοδος εγγενούς ενημέρωσης" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Η εγγενής ενημέρωση είναι έτοιμη" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Σφάλμα δικτύου" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Δικτύωση και επιδόσεις" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Οι νέοι χρήστες δεν μπορούν να εγγραφούν αυτήν τη στιγμή. Μπορείτε να δημιουργήσετε έναν λογαριασμό ή να συνδεθείτε και να δοκιμάσετε ξανά αυτόν τον σύνδεσμο αργότερα." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Νέα έκδοση" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Όχι" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Δεν υπάρχει δικαίωμα {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Δεν υπάρχει δικαίωμα {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Χωρίς περιγραφή." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Δεν υπάρχει διαθέσιμη ενημέρωση για την εφαρμογή υπολογιστή." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Δεν υπάρχουν webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Αναφορές εντός εφαρμογής χωρίς λειτουργία" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Άνοιγμα επιλογέα ημερομηνίας" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Άνοιγμα λήψεων για υπολογιστή" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Άνοιγμα ρυθμίσεων" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Άνοιγμα κέντρου λογισμικού" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Άνοιγμα μενού χρήστη για τον/την {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Άνοιγμα βίντεο" @@ -26558,9 +26473,9 @@ msgstr "Αναπαραγωγή επιλογής" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Αναπαραγωγή βίντεο" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Τα προνόμια Premium είναι απενεργοποιημένα" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Ημερομηνία έναρξης Premium" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Η κατάσταση Premium επαναφέρθηκε στο backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Τύπος Premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Ημερομηνία λήξης Premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Ετοιμασία" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Φόρμα προσαρμογής προφίλ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Προειδοποίηση δεδομένων προφίλ" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Απόρρητο προφίλ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Σκελετοί προφίλ" @@ -28223,18 +28138,13 @@ msgstr "Επαναφόρτωση" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Επαναφορτώστε το {PRODUCT_NAME} για να εφαρμοστεί πλήρως η αλλαγή μηχανισμού. Η εναλλαγή μεταξύ του ορθογραφικού ελέγχου εντός εφαρμογής και εκείνου του συστήματος απαιτεί επαναφόρτωση του renderer, επειδή το Electron δεν μπορεί να αλλάξει παρόχους ενώ εκτελείται." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Επανεκκίνηση του {productName} για χρήση των ενημερωμένων ενοτήτων" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Επαναφορτώστε το {productName} για να χρησιμοποιήσετε την ενημέρωση ιστού" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Επαναφορτώστε το {productName} για να χρησιμοποιήσετε την ενημέρωση ιστού {version}" @@ -29142,7 +29052,7 @@ msgstr "Εστάλη ξανά" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Επαναφορά" @@ -29475,26 +29385,11 @@ msgstr "Σέβεται την πρόθεση του αποστολέα, χωρί msgid "Restart {appName}" msgstr "Επανεκκίνηση του {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Επανεκκίνηση του {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Επανεκκινήστε το {productName} για να εφαρμοστεί αυτή η αλλαγή, επειδή τα περιβάλλοντα εργασίας Linux δεν μπορούν να προσθέσουν ή να αφαιρέσουν αξιόπιστα εικονίδια δίσκου κατά την εκτέλεση." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Επανεκκινήστε το {productName} για να εγκαταστήσετε την ενημέρωση για υπολογιστή" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Επανεκκινήστε το {productName} για να εγκαταστήσετε την ενημέρωση {version} για υπολογιστή" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Ανακλήθηκε ο αποκλεισμός για {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Επιστροφή κατά {defaultSeekAmount} δευτερόλεπτα" @@ -29866,7 +29761,7 @@ msgstr "Ρουμανικά" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Περιστροφή δεξιόστροφα" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Σειρές ανά σελίδα" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Πακέτο RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Ρύθμιση αυτοφιλοξενίας" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Λειτουργία αυτοφιλοξενίας" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Παράκαμψη λειτουργίας αυτοφιλοξενίας" @@ -32212,8 +32107,8 @@ msgstr "Εμφάνιση της κοινής χρήσης οθόνης μου" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Εμφάνιση ότι πληκτρολογώ" @@ -32675,7 +32570,7 @@ msgstr "Παράλειψη" msgid "Skip \"Mark all as read\" confirmation" msgstr "Παράλειψη επιβεβαίωσης \"Επισήμανση όλων ως αναγνωσμένων\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Παράλειψη περικοπής" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Παράλειψη προειδοποίησης εξωτερικού συνδέσμου για όλους τους τομείς" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Παράλειψη της κλήσης δικτύου κατά την υποβολή αναφοράς εντός εφαρμογής. Η ροή προχωρά στην οθόνη επιτυχίας, ώστε να δοκιμάσετε το UI, αλλά δεν αποστέλλεται τίποτα στην ομάδα ασφαλείας." @@ -32752,8 +32647,8 @@ msgstr "Σλοβενία" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Αργή αποστολή συνημμένου" @@ -32769,29 +32664,29 @@ msgstr "Πιο αργά — περιμένετε μια στιγμή πριν π #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Αργή επεξεργασία μηνύματος" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Αργή φόρτωση μηνυμάτων" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Αργή αποστολή μηνυμάτων" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Αργή φόρτωση προφίλ" @@ -32807,7 +32702,7 @@ msgstr "Αργή λειτουργία · αναμονή {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Ενεργή αργή λειτουργία" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Η αργή λειτουργία έχει οριστεί σε {durationLabel}. Περιμένετε πριν στείλετε άλλο μήνυμα." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Υπόλοιπο αργής λειτουργίας" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Περιοχή ειδοποιήσεων" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Εγκατάσταση διαχειριζόμενη από το σύστημα" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Πατήστε για προσθήκη σημείωσης" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Αρχείο tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Η κοινότητα που ψάχνετε μπορεί να έχει διαγραφεί ή να μην έχετε πρόσβαση σε αυτήν." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Δεν ήταν δυνατή η λήψη της ενημέρωσης για την εφαρμογή υπολογιστή. Δοκιμάστε ξανά από το κουμπί ενημέρωσης όταν η σύνδεσή σας είναι σταθερή." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Η ενημέρωση για υπολογιστές έχει ληφθεί. Επανεκκινήστε το {productName} για να ολοκληρωθεί η εγκατάσταση." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Το αρχείο που κατεβάσατε έχει αποθηκευτεί στον υπολογιστή σας. Εγκαταστήστε το με τον συνηθισμένο διαχειριστή πακέτων σας." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Όλα τα σχετικά δεδομένα, συμπεριλαμβανομένου του χρήστη bot, θα διαγραφούν οριστικά." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Αυτό το κινούμενο σχέδιο είναι πολύ μεγάλο ή έχει πάρα πολλά καρέ για να γίνει περικοπή. Δοκιμάστε ένα μικρότερο αρχείο." @@ -35549,7 +35439,7 @@ msgstr "Αυτό το bot ζητά το δικαίωμα διαχειριστή. #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Αυτό το πρόγραμμα περιήγησης δεν μπορεί να περικόψει κινούμενα αρχεία {avifFormatLabel}. Ανεβάστε ένα αρχείο GIF ή WebP αντ' αυτού." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Αυτή η κονσόλα του προγράμματος περιήγησης είναι ένα εργαλείο προγραμματιστών." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Αυτός ο περιηγητής έχει απενεργοποιημένη τη WebAssembly, οπότε οι κινούμενες εικόνες δεν μπορούν να περικοπούν." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Αυτή η συνομιλία δεν είναι πλέον διαθέσιμη." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Αυτή η έκδοση για υπολογιστές δεν μπορεί να εγκαταστήσει ενημερώσεις μέσα από το {productName}. Κατεβάστε το πιο πρόσφατο πρόγραμμα εγκατάστασης για υπολογιστές." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Αυτή η επιφάνεια εργασίας δεν προσφέρει συντομεύσεις σε όλο το σύστημα. Οι συντομεύσεις εξακολουθούν να λειτουργούν όσο το {productName} έχει την εστίαση." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Αυτή η έκδοση ανάπτυξης δεν μπορεί να ενημερωθεί αυτόματα. Κατεβάστε ένα πρόγραμμα εγκατάστασης για υπολογιστές για να δοκιμάσετε τη ροή ενημέρωσης." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Αυτός ο κωδικός παράδοσης έχει λήξει. Δημιουργήστε έναν νέο για να συνεχίσετε." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Αυτή η εικόνα δεν διαβάστηκε. Μπορεί να είναι κατεστραμμένη." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Αυτή η εγκατάσταση ελέγχεται από το σύστημά σας. Ενημερώστε το {productName} από το κέντρο λογισμικού ή τον διαχειριστή πακέτων σας." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Η ημερομηνία ορίου δεν μπορεί να είναι στο μέλλον" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Μικρογραφία για {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Γραμμή τίτλου" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Πλατφόρμα γραμμής τίτλου" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Εναλλαγή κάμερας" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Εναλλαγή στοιχείων ελέγχου" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Τυπογραφία" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Στοιχεία διεπαφής χρήστη" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Γεωγραφική τοποθεσία Ηνωμένου Βασιλείου" @@ -37528,7 +37418,7 @@ msgstr "Χωρίς κατηγορία" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Μη διεκδικημένος λογαριασμός" @@ -37689,7 +37579,7 @@ msgstr "Καθολική εφεδρική επιλογή. Η χαμηλότερ #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Άγνωστο" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Άγνωστη πρόσκληση" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Άγνωστος τύπος μηνύματος" @@ -37893,10 +37783,10 @@ msgstr "Άρση σίγασης" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Ενεργοποίηση ήχου" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Μόνο μη αναγνωσμένα DM" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Αριθμός μη αναγνωσμένων δώρων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Μη αναγνωσμένα δώρα στο απόθεμα" @@ -38267,10 +38157,20 @@ msgstr "Ενημερώστε το {productName} για να δείτε αυτό msgid "Update app" msgstr "Ενημέρωση εφαρμογής" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Διαθέσιμη ενημέρωση" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Ενημέρωση της κατάστασής μου" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Ενημέρωση τώρα" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Ενημερωμένες πολιτικές" msgid "Updated saved media" msgstr "Ενημερώθηκαν τα αποθηκευμένα πολυμέσα" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Κατάσταση ενημερώσεων" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Το προσαρμοσμένο URL μπορεί να περιέχει μόνο αλφαριθμητικούς χαρακτήρες και εσωτερικές παύλες." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Αποποίηση ευθύνης για προσαρμοσμένο URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Εμπόδια επαλήθευσης και συμμετοχής" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Εμπόδιο επαλήθευσης" @@ -39438,7 +39333,7 @@ msgstr "Ζωντάνια" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Βίντεο" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Προεπισκόπηση βίντεο" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Πρόοδος βίντεο" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Ρυθμίσεις βίντεο" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Μικρογραφία βίντεο" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Σήμα Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Αναγνωριστικό σήματος Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Επιβεβαίωση σύνδεσης φωνής" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Αποσφαλμάτωση σύνδεσης φωνής" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Φωνητικό μήνυμα" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Αναπαραγωγή φωνητικού μηνύματος" @@ -40500,11 +40395,6 @@ msgstr "Αναζήτηση στο διαδίκτυο" msgid "Web search provider" msgstr "Πάροχος αναζήτησης ιστού" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Η ενημέρωση web είναι έτοιμη" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Πω πω, βαρύ πράγμα" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Θα ακυρωθεί" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Ζουμ" diff --git a/fluxer_app/src/features/i18n/locales/en-GB/messages.po b/fluxer_app/src/features/i18n/locales/en-GB/messages.po index 81da28001..89006c350 100644 --- a/fluxer_app/src/features/i18n/locales/en-GB/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-GB/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# channel follows} other {# channels follow}} this msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# community found} other {# communities found}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" @@ -1884,16 +1884,17 @@ msgstr "{productName} cannot start a safe isolated route for this app's audio." msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} cannot use a hardware encoder for this, so it will use your CPU." +# auto-i18n: reviewed unchanged +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} closes, installs the update and opens again." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} could not reach the update service. Check your connection and try again." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} could not restart into the downloaded update. Try again from the update button." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2730,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "a hostname, e.g. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." @@ -4597,11 +4598,6 @@ msgstr "Answer the incoming call" msgid "Any key" msgstr "Any key" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Any updater ready" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5164,7 @@ msgid "Audio packet loss:" msgstr "Audio packet loss:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Audio player" @@ -5208,7 +5204,7 @@ msgid "Audio processing (focused voice)" msgstr "Audio processing (focused voice)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Audio progress" @@ -5551,7 +5547,7 @@ msgstr "AV1 (requires opt-in)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Available" @@ -5905,7 +5901,7 @@ msgid "Bans" msgstr "Bans" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Barrier countdown" @@ -5979,7 +5975,7 @@ msgid "Billing" msgstr "Billing" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Billing cycle" @@ -6867,7 +6863,7 @@ msgstr "Can't upload files here" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8803,7 @@ msgid "Closed the thread" msgstr "Closed the thread" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Cloud upload" @@ -9385,7 +9381,7 @@ msgid "Composer focus" msgstr "Composer focus" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Compressing" @@ -10417,7 +10413,7 @@ msgid "Couldn't change your price" msgstr "Couldn't change your price" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Couldn't check for updates" @@ -10502,7 +10498,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Couldn't create your recovery kit. You can create one later in your account settings." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Couldn't crop image" @@ -10549,7 +10545,7 @@ msgid "Couldn't delete your messages" msgstr "Couldn't delete your messages" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Couldn't download the desktop update" @@ -10841,11 +10837,6 @@ msgstr "Couldn't start checkout" msgid "Couldn't start the connection" msgstr "Couldn't start the connection" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Couldn't start the desktop update" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11322,7 @@ msgid "Crop invite background" msgstr "Crop invite background" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Crop preview" @@ -11343,12 +11334,12 @@ msgstr "Crop profile banner" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Cropping {percent}%" @@ -11930,7 +11921,7 @@ msgid "Deafened by moderators" msgstr "Deafened by moderators" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB package" @@ -12588,7 +12579,7 @@ msgid "Desktop app" msgstr "Desktop app" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Desktop app is up to date" @@ -12642,7 +12633,7 @@ msgid "Desktop startup" msgstr "Desktop startup" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Desktop update {version} available. Choose a Linux package." @@ -12652,20 +12643,10 @@ msgid "Desktop update available" msgstr "Desktop update available" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Desktop update available. Choose a Linux package." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Desktop update ready" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Desktop version {version} has been downloaded. Restart {productName} to finish installing." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12717,7 @@ msgid "Developer mode" msgstr "Developer mode" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Developer option" @@ -12763,7 +12744,7 @@ msgid "Developer tools unavailable" msgstr "Developer tools unavailable" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Development build" @@ -13604,26 +13585,6 @@ msgstr "Download button" msgid "Download desktop app" msgstr "Download desktop app" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Download desktop update" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Download desktop update ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Download desktop update {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Download desktop update {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Download export" @@ -13688,26 +13649,6 @@ msgstr "Download source maps so stack traces and the developer tools point at re msgid "Download video" msgstr "Download video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Downloading desktop update {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Downloading desktop update: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Downloading desktop update…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14202,7 @@ msgid "Email verification required" msgstr "Email verification required" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Email verified" @@ -15966,7 +15907,7 @@ msgstr "Feature temporarily disabled" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Features" @@ -16460,17 +16401,17 @@ msgid "Force enabled" msgstr "Force enabled" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Force failed message loads" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Force failed message sends" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Force GIF picker loading" @@ -16487,7 +16428,7 @@ msgid "Force loading skeleton" msgstr "Force loading skeleton" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Force mature media" @@ -16502,12 +16443,12 @@ msgid "Force no {permissionName} permission" msgstr "Force no {permissionName} permission" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Force profile data warning" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Force profile skeletons" @@ -16522,12 +16463,12 @@ msgid "Force show" msgstr "Force show" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Force show vanity URL disclaimer" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Force show voice connection" @@ -16536,15 +16477,10 @@ msgid "Force slowmode active" msgstr "Force slowmode active" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Force unknown message type" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Force update ready" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16533,7 @@ msgid "Forward" msgstr "Forward" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Forward {defaultSeekAmount} seconds" @@ -17028,7 +16964,7 @@ msgid "Generating code…" msgstr "Generating code…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geo block overlay" @@ -17141,7 +17077,7 @@ msgid "GIF options" msgstr "GIF options" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF picker loading" @@ -17226,14 +17162,14 @@ msgstr "Gift codes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gift duration" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gift inventory" @@ -17266,7 +17202,7 @@ msgid "Gift not found" msgstr "Gift not found" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Gift redeemed" @@ -17809,7 +17745,7 @@ msgid "Has" msgstr "Has" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Has ever purchased" @@ -17892,7 +17828,7 @@ msgstr "Heart" msgid "Hebrew" msgstr "Hebrew" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Height" @@ -19223,25 +19159,15 @@ msgid "Install the new app" msgstr "Install the new app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installed" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installed version: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installing desktop update {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installing desktop update…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20079,7 +20005,6 @@ msgstr "Keep transmitting briefly after release." msgid "Keep window dimensions and placement between reloads" msgstr "Keep window dimensions and placement between reloads" -# auto-i18n: reviewed unchanged #. Heading of the closing call to action on the Plutonium page for members on gifted time who can subscribe. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:170 msgid "Keep your perks going" @@ -20256,7 +20181,7 @@ msgstr "Latency graph" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20797,7 +20722,7 @@ msgid "Linux default" msgstr "Linux default" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux package" @@ -21263,7 +21188,7 @@ msgid "Manage your subscription" msgstr "Manage your subscription" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manual desktop update" @@ -21475,7 +21400,7 @@ msgid "Mature content & content warnings" msgstr "Mature content & content warnings" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Mature content channel gate" @@ -21501,7 +21426,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Mature content checks are currently available only in the UK." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Mature content media gate" @@ -22889,13 +22814,13 @@ msgstr "Mute" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Mute" @@ -23317,16 +23242,6 @@ msgstr "Narration" msgid "Native title bar" msgstr "Native title bar" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Native update progress" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Native updater ready" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23403,7 +23318,7 @@ msgid "Network error" msgstr "Network error" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Networking and performance" @@ -23617,7 +23532,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "New users can't join right now. You can still create an account or sign in, then try this link again later." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "New version" @@ -23684,12 +23599,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "No {attachFilesPermission} permission" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" @@ -23873,7 +23788,7 @@ msgid "No description." msgstr "No description." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "No desktop update is available." @@ -24316,7 +24231,7 @@ msgid "No webhooks" msgstr "No webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "No-op in-app reports" @@ -25152,7 +25067,7 @@ msgid "Open date picker" msgstr "Open date picker" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Open desktop downloads" @@ -25349,7 +25264,7 @@ msgid "Open settings" msgstr "Open settings" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Open software centre" @@ -25449,7 +25364,7 @@ msgid "Open user menu for {displayName}" msgstr "Open user menu for {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Open video" @@ -26559,9 +26474,9 @@ msgstr "Play selection" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Play video" @@ -26815,7 +26730,7 @@ msgid "Premium perks disabled" msgstr "Premium perks disabled" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium since date" @@ -26825,17 +26740,17 @@ msgid "Premium state reset on the backend." msgstr "Premium state reset on the backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium type" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium until date" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparing" @@ -27216,7 +27131,7 @@ msgid "Profile customization form" msgstr "Profile customisation form" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Profile data warning" @@ -27264,7 +27179,7 @@ msgid "Profile privacy" msgstr "Profile privacy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profile skeletons" @@ -28224,18 +28139,13 @@ msgstr "Reload" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Reload {productName} to use the updated modules" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Reload {productName} to use web update" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Reload {productName} to use web update {version}" @@ -29143,7 +29053,7 @@ msgstr "Resent" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Reset" @@ -29476,26 +29386,11 @@ msgstr "Respect the sender's intent, with no warning when they toggle the @menti msgid "Restart {appName}" msgstr "Restart {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Restart {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Restart {productName} to install desktop update" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Restart {productName} to install desktop update {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29718,7 +29613,7 @@ msgid "Revoked ban for {0}" msgstr "Revoked ban for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rewind {defaultSeekAmount} seconds" @@ -29867,7 +29762,7 @@ msgstr "Romanian" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Rotate clockwise" @@ -29890,7 +29785,7 @@ msgid "Rows per page" msgstr "Rows per page" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM package" @@ -31063,12 +30958,12 @@ msgid "Self-host setup" msgstr "Self-host setup" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Self-hosted mode" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Self-hosted mode override" @@ -32213,8 +32108,8 @@ msgstr "Show my screen share" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Show myself typing" @@ -32676,7 +32571,7 @@ msgstr "Skip" msgid "Skip \"Mark all as read\" confirmation" msgstr "Skip \"Mark all as read\" confirmation" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Skip cropping" @@ -32691,7 +32586,7 @@ msgid "Skip the external link warning for all domains" msgstr "Skip the external link warning for all domains" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." @@ -32753,8 +32648,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Slow attachment upload" @@ -32770,29 +32665,29 @@ msgstr "Slow down — wait a moment before trying again." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Slow message edit" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Slow message load" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Slow message send" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Slow profile load" @@ -32808,7 +32703,7 @@ msgstr "Slowmode · wait {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmode active" @@ -32859,7 +32754,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmode is set to {durationLabel}. Wait before sending another message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Slowmode remaining" @@ -34192,7 +34087,6 @@ msgstr "Submitting" msgid "Subscribe" msgstr "Subscribe" -# auto-i18n: reviewed unchanged #. Body of the closing call to action on the Plutonium page for members on gifted time who can subscribe. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:174 msgid "Subscribe now. Your remaining gift time is added after your paid period." @@ -34657,7 +34551,7 @@ msgid "System tray" msgstr "System tray" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "System-managed install" @@ -34783,7 +34677,7 @@ msgid "Tap to add a note" msgstr "Tap to add a note" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz archive" @@ -35132,17 +35026,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "The community you're looking for may have been deleted or you may not have access to it." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "The desktop update could not be downloaded. Try again from the update button when your connection is stable." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "The desktop update has been downloaded. Restart {productName} to finish installing." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "The downloaded file is saved to your computer. Install it with your normal package manager." @@ -35525,7 +35414,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "This action cannot be undone. All associated data, including the bot user, will be permanently deleted." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "This animation is too long or too large to crop. Try a shorter or smaller file." @@ -35551,7 +35440,7 @@ msgstr "This bot requests the administrator permission. Only grant it if you ful #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." @@ -35561,7 +35450,7 @@ msgid "This browser console is a developer tool." msgstr "This browser console is a developer tool." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "This browser has WebAssembly turned off, so animated images can't be cropped." @@ -35757,7 +35646,7 @@ msgid "This conversation is no longer available." msgstr "This conversation is no longer available." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." @@ -35772,7 +35661,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "This desktop doesn't offer system-wide shortcuts. Shortcuts still work while {productName} is focused." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "This development build cannot update itself. Download a desktop installer to test the update flow." @@ -35879,12 +35768,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "This handoff code has expired. Generate a new one to continue." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "This image couldn't be read. It may be damaged." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "This install is managed by your system. Update {productName} from your software centre or package manager." @@ -36448,7 +36337,7 @@ msgid "Threshold date cannot be in the future" msgstr "Threshold date cannot be in the future" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Thumbnail for {title}" @@ -36561,7 +36450,7 @@ msgid "Title bar" msgstr "Title bar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Title bar platform" @@ -36622,7 +36511,7 @@ msgid "Toggle camera" msgstr "Toggle camera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Toggle controls" @@ -37389,12 +37278,12 @@ msgid "Typography" msgstr "Typography" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI components" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "UK geo" @@ -37530,7 +37419,7 @@ msgstr "Uncategorised" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Unclaimed account" @@ -37691,7 +37580,7 @@ msgstr "Universal fallback. Lowest quality, but it works everywhere." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Unknown" @@ -37759,7 +37648,7 @@ msgid "Unknown invite" msgstr "Unknown invite" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Unknown message type" @@ -37895,10 +37784,10 @@ msgstr "Unmute" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Unmute" @@ -38127,12 +38016,12 @@ msgid "Unread DMs only" msgstr "Unread DMs only" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Unread gift count" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Unread gift inventory" @@ -38269,10 +38158,21 @@ msgstr "Update {productName} to view this message." msgid "Update app" msgstr "Update app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Update available" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Update my status" +# auto-i18n: reviewed unchanged +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Update now" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38313,11 +38213,6 @@ msgstr "Updated policies" msgid "Updated saved media" msgstr "Updated saved media" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Updater state" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39209,7 +39104,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Vanity URL can only contain alphanumeric characters and internal hyphens." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Vanity URL disclaimer" @@ -39242,7 +39137,7 @@ msgid "Verification & membership barriers" msgstr "Verification & membership barriers" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verification barrier" @@ -39440,7 +39335,7 @@ msgstr "Vibrancy" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39510,7 +39405,7 @@ msgid "Video preview" msgstr "Video preview" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Video progress" @@ -39542,7 +39437,7 @@ msgid "Video settings" msgstr "Video settings" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Video thumbnail" @@ -39859,7 +39754,7 @@ msgid "Visionary badge" msgstr "Visionary badge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary badge ID" @@ -40030,7 +39925,7 @@ msgid "Voice connection confirmation" msgstr "Voice connection confirmation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Voice connection debug" @@ -40062,7 +39957,7 @@ msgid "Voice message" msgstr "Voice message" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Voice message player" @@ -40502,11 +40397,6 @@ msgstr "Web search" msgid "Web search provider" msgstr "Web search provider" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web updater ready" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40852,7 +40742,7 @@ msgid "Whoa, this is heavy" msgstr "Whoa, this is heavy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Will cancel" @@ -42449,7 +42339,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/en-US/messages.po b/fluxer_app/src/features/i18n/locales/en-US/messages.po index 991dea955..3714babd8 100644 --- a/fluxer_app/src/features/i18n/locales/en-US/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-US/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# channel follows} other {# channels follow}} this msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# community found} other {# communities found}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} cannot start a safe isolated route for this app's audio." msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} cannot use a hardware encoder for this, so it will use your CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} closes, installs the update and opens again." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} could not reach the update service. Check your connection and try again." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} could not restart into the downloaded update. Try again from the update button." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "a hostname, e.g. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." @@ -4597,11 +4597,6 @@ msgstr "Answer the incoming call" msgid "Any key" msgstr "Any key" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Any updater ready" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Audio packet loss:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Audio player" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Audio processing (focused voice)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Audio progress" @@ -5551,7 +5546,7 @@ msgstr "AV1 (requires opt-in)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Available" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Bans" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Barrier countdown" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Billing" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Billing cycle" @@ -6867,7 +6862,7 @@ msgstr "Can't upload files here" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Closed the thread" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Cloud upload" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Composer focus" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Compressing" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Couldn't change your price" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Couldn't check for updates" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Couldn't create your recovery kit. You can create one later in your account settings." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Couldn't crop image" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Couldn't delete your messages" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Couldn't download the desktop update" @@ -10841,11 +10836,6 @@ msgstr "Couldn't start checkout" msgid "Couldn't start the connection" msgstr "Couldn't start the connection" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Couldn't start the desktop update" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Crop invite background" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Crop preview" @@ -11343,12 +11333,12 @@ msgstr "Crop profile banner" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Cropping {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Deafened by moderators" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB package" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Desktop app" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Desktop app is up to date" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Desktop startup" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Desktop update {version} available. Choose a Linux package." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Desktop update available" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Desktop update available. Choose a Linux package." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Desktop update ready" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Desktop version {version} has been downloaded. Restart {productName} to finish installing." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Developer mode" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Developer option" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Developer tools unavailable" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Development build" @@ -13604,26 +13584,6 @@ msgstr "Download button" msgid "Download desktop app" msgstr "Download desktop app" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Download desktop update" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Download desktop update ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Download desktop update {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Download desktop update {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Download export" @@ -13688,26 +13648,6 @@ msgstr "Download source maps so stack traces and the developer tools point at re msgid "Download video" msgstr "Download video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Downloading desktop update {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Downloading desktop update: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Downloading desktop update…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Email verification required" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Email verified" @@ -15966,7 +15906,7 @@ msgstr "Feature temporarily disabled" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Features" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Force enabled" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Force failed message loads" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Force failed message sends" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Force GIF picker loading" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Force loading skeleton" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Force mature media" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Force no {permissionName} permission" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Force profile data warning" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Force profile skeletons" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Force show" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Force show vanity URL disclaimer" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Force show voice connection" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Force slowmode active" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Force unknown message type" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Force update ready" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Forward" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Forward {defaultSeekAmount} seconds" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generating code…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geo block overlay" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF options" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF picker loading" @@ -17226,14 +17161,14 @@ msgstr "Gift codes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gift duration" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gift inventory" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Gift not found" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Gift redeemed" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Has" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Has ever purchased" @@ -17892,7 +17827,7 @@ msgstr "Heart" msgid "Hebrew" msgstr "Hebrew" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Height" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Install the new app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installed" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installed version: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installing desktop update {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installing desktop update…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Latency graph" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux default" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux package" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Manage your subscription" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manual desktop update" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Mature content & content warnings" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Mature content channel gate" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Mature content checks are currently available only in the UK." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Mature content media gate" @@ -22888,13 +22813,13 @@ msgstr "Mute" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Mute" @@ -23316,16 +23241,6 @@ msgstr "Narration" msgid "Native title bar" msgstr "Native title bar" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Native update progress" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Native updater ready" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Network error" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Networking and performance" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "New users can't join right now. You can still create an account or sign in, then try this link again later." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "New version" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "No {attachFilesPermission} permission" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "No description." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "No desktop update is available." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "No webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "No-op in-app reports" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Open date picker" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Open desktop downloads" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Open settings" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Open software center" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Open user menu for {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Open video" @@ -26558,9 +26473,9 @@ msgstr "Play selection" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Play video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premium perks disabled" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium since date" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premium state reset on the backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium type" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium until date" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparing" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Profile customization form" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Profile data warning" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profile privacy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profile skeletons" @@ -28223,18 +28138,13 @@ msgstr "Reload" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Reload {productName} to use the updated modules" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Reload {productName} to use web update" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Reload {productName} to use web update {version}" @@ -29142,7 +29052,7 @@ msgstr "Resent" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Reset" @@ -29475,26 +29385,11 @@ msgstr "Respect the sender's intent, with no warning when they toggle the @menti msgid "Restart {appName}" msgstr "Restart {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Restart {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Restart {productName} to install desktop update" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Restart {productName} to install desktop update {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Revoked ban for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rewind {defaultSeekAmount} seconds" @@ -29866,7 +29761,7 @@ msgstr "Romanian" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Rotate clockwise" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rows per page" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM package" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Self-host setup" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Self-hosted mode" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Self-hosted mode override" @@ -32212,8 +32107,8 @@ msgstr "Show my screen share" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Show myself typing" @@ -32675,7 +32570,7 @@ msgstr "Skip" msgid "Skip \"Mark all as read\" confirmation" msgstr "Skip \"Mark all as read\" confirmation" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Skip cropping" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Skip the external link warning for all domains" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Slow attachment upload" @@ -32769,29 +32664,29 @@ msgstr "Slow down — wait a moment before trying again." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Slow message edit" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Slow message load" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Slow message send" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Slow profile load" @@ -32807,7 +32702,7 @@ msgstr "Slowmode · wait {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmode active" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmode is set to {durationLabel}. Wait before sending another message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Slowmode remaining" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "System tray" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "System-managed install" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tap to add a note" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz archive" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "The community you're looking for may have been deleted or you may not have access to it." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "The desktop update could not be downloaded. Try again from the update button when your connection is stable." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "The desktop update has been downloaded. Restart {productName} to finish installing." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "The downloaded file is saved to your computer. Install it with your normal package manager." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "This action cannot be undone. All associated data, including the bot user, will be permanently deleted." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "This animation is too long or too large to crop. Try a shorter or smaller file." @@ -35549,7 +35439,7 @@ msgstr "This bot requests the administrator permission. Only grant it if you ful #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "This browser console is a developer tool." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "This browser has WebAssembly turned off, so animated images can't be cropped." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "This conversation is no longer available." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "This desktop doesn't offer system-wide shortcuts. Shortcuts still work while {productName} is focused." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "This development build cannot update itself. Download a desktop installer to test the update flow." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "This handoff code has expired. Generate a new one to continue." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "This image couldn't be read. It may be damaged." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "This install is managed by your system. Update {productName} from your software center or package manager." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Threshold date cannot be in the future" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Thumbnail for {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Title bar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Title bar platform" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Toggle camera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Toggle controls" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typography" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI components" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "UK geo" @@ -37528,7 +37418,7 @@ msgstr "Uncategorized" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Unclaimed account" @@ -37689,7 +37579,7 @@ msgstr "Universal fallback. Lowest quality, but it works everywhere." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Unknown" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Unknown invite" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Unknown message type" @@ -37893,10 +37783,10 @@ msgstr "Unmute" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Unmute" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Unread DMs only" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Unread gift count" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Unread gift inventory" @@ -38267,10 +38157,20 @@ msgstr "Update {productName} to view this message." msgid "Update app" msgstr "Update app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Update available" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Update my status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Update now" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Updated policies" msgid "Updated saved media" msgstr "Updated saved media" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Updater state" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Vanity URL can only contain alphanumeric characters and internal hyphens." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Vanity URL disclaimer" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verification & membership barriers" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verification barrier" @@ -39438,7 +39333,7 @@ msgstr "Vibrancy" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Video preview" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Video progress" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Video settings" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Video thumbnail" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary badge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary badge ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Voice connection confirmation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Voice connection debug" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Voice message" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Voice message player" @@ -40500,11 +40395,6 @@ msgstr "Web search" msgid "Web search provider" msgstr "Web search provider" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web updater ready" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Whoa, this is heavy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Will cancel" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/es-419/messages.po b/fluxer_app/src/features/i18n/locales/es-419/messages.po index 31c5d35b2..48129b017 100644 --- a/fluxer_app/src/features/i18n/locales/es-419/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-419/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# canal lo sigue} other {# canales lo siguen}} en e msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# comunidad encontrada} other {# comunidades encontradas}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# comunidad no está disponible temporalmente debido a una falla en el condensador de flujo.} other {# comunidades no están disponibles temporalmente debido a una falla en el condensador de flujo.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} no puede iniciar una ruta segura y aislada para el audio d msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} no puede usar un codificador de hardware para esto, por lo que utilizará tu CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se cerrará, instalará la actualización y se volverá a abrir." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} no pudo contactar con el servicio de actualizaciones. Comprueba tu conexión e inténtalo de nuevo." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} no pudo reiniciarse para aplicar la actualización descargada. Inténtalo de nuevo desde el botón de actualización." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "un nombre de host, p. ej. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Hay una actualización de escritorio para Linux disponible. Elige el formato del paquete para este sistema y {productName} lo guardará localmente." @@ -4597,11 +4597,6 @@ msgstr "Responder la llamada entrante" msgid "Any key" msgstr "Cualquier tecla" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Cualquier actualizador listo" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Pérdida de paquetes de audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Reproductor de audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesamiento de audio (voz enfocada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progreso del audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (requiere activación)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponible" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Baneos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Cuenta regresiva de barrera" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Facturación" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Ciclo de facturación" @@ -6867,7 +6862,7 @@ msgstr "No se pueden subir archivos aquí" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Se cerró el hilo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Subir a la nube" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Foco del editor de mensajes" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Comprimiendo" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "No se pudo cambiar tu precio" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "No se pudieron buscar actualizaciones" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "No se pudo crear tu kit de recuperación. Puedes crear uno más tarde en la configuración de tu cuenta." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "No se pudo recortar la imagen" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "No se pudieron eliminar tus mensajes" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "No se pudo descargar la actualización de escritorio" @@ -10841,11 +10836,6 @@ msgstr "No se pudo iniciar el pago" msgid "Couldn't start the connection" msgstr "No se pudo iniciar la conexión" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "No se pudo iniciar la actualización de escritorio" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Recortar fondo de invitación" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Vista previa del recorte" @@ -11343,12 +11333,12 @@ msgstr "Recortar banner de perfil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "La imagen recortada es demasiado grande. Elige un área más pequeña o un archivo más pequeño (máx. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Recortando {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Sonido desactivado por los moderadores" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Paquete DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplicación de escritorio" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "La aplicación de escritorio está actualizada" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Inicio de la aplicación de escritorio" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Actualización de escritorio {version} disponible. Elige un paquete de Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Actualización de escritorio disponible" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Actualización de escritorio disponible. Elige un paquete de Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Actualización de escritorio lista" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "La versión de escritorio {version} se ha descargado. Reinicia {productName} para finalizar la instalación." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Modo desarrollador" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opción de desarrollador" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Herramientas de desarrollador no disponibles" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Versión de desarrollo" @@ -13604,26 +13584,6 @@ msgstr "Botón de descarga" msgid "Download desktop app" msgstr "Descargar la aplicación de escritorio" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Descargar actualización de escritorio" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Descargar actualización de escritorio ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Descargar actualización de escritorio {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Descargar actualización de escritorio {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Descargar exportación" @@ -13688,26 +13648,6 @@ msgstr "Descarga mapas de origen para que los rastreos de pila y las herramienta msgid "Download video" msgstr "Descargar video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Descargando actualización de escritorio {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Descargando actualización de escritorio: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Descargando actualización de escritorio: {percent}% ({formatBytes} / {formatBytes2} a {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Descargando actualización de escritorio…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Se requiere verificación de correo electrónico" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Correo electrónico verificado" @@ -15966,7 +15906,7 @@ msgstr "Función deshabilitada temporalmente" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funciones" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Forzar activación" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forzar fallos al cargar mensajes" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forzar fallos al enviar mensajes" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forzar estado de carga del selector de GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forzar esqueleto de carga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forzar contenido para adultos" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forzar sin el permiso {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forzar advertencia de datos de perfil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forzar esqueletos de carga del perfil" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forzar mostrar" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forzar la visualización del aviso de URL personalizada" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forzar la visualización de la conexión de voz" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Forzar modo lento activo" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forzar tipo de mensaje desconocido" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forzar actualización lista" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Reenviar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanzar {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generando código…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Superposición de bloqueo geográfico" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opciones de GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Cargando el selector de GIF" @@ -17226,14 +17161,14 @@ msgstr "Códigos de regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duración del regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario de regalos" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Regalo no encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Regalo canjeado" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Tiene" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ha comprado alguna vez" @@ -17892,7 +17827,7 @@ msgstr "Corazón" msgid "Hebrew" msgstr "Hebreo" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Altura" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instalar la nueva app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Instalado" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versión instalada: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instalando la actualización de escritorio {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instalando actualización de escritorio…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Gráfico de latencia" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Predeterminado de Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Paquete para Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Administra tu suscripción" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Actualización manual de la aplicación de escritorio" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Contenido para adultos y advertencias de contenido" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Restricción de acceso a canales para adultos" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Las verificaciones de contenido para adultos solo están disponibles en el Reino Unido." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Restricción de acceso a contenido multimedia para adultos" @@ -22888,13 +22813,13 @@ msgstr "Silenciar" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Silenciar audio" @@ -23316,16 +23241,6 @@ msgstr "Narración" msgid "Native title bar" msgstr "Barra de título nativa" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progreso de actualización nativa" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Actualizador nativo listo" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Error de red" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Red y rendimiento" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Los usuarios nuevos no pueden unirse en este momento. Puedes crear una cuenta o iniciar sesión y volver a intentar con este enlace más tarde." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nueva versión" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Sin permiso de {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Sin descripción." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "No hay actualizaciones disponibles para la aplicación de escritorio." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "No hay webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Simular reportes en la aplicación sin enviarlos" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Abrir selector de fecha" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Abrir descargas de escritorio" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Abrir configuración" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Abrir centro de software" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Abrir menú de usuario para {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Abrir video" @@ -26558,9 +26473,9 @@ msgstr "Reproducir selección" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Reproducir video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Beneficios premium desactivados" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Fecha de inicio de premium" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Estado premium restablecido en el backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Tipo de premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Fecha de fin de premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparando" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulario para personalizar el perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Advertencia de datos del perfil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privacidad del perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Esqueletos de perfil" @@ -28223,18 +28138,13 @@ msgstr "Recargar" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Recarga {PRODUCT_NAME} para aplicar por completo el cambio de motor. Cambiar entre el corrector ortográfico de la aplicación y el del sistema requiere recargar el proceso de renderizado, ya que Electron no puede cambiar de proveedor mientras se ejecuta." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Recargar {productName} para usar los módulos actualizados" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Recarga {productName} para aplicar la actualización de la versión web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Recarga {productName} para usar la actualización web {version}" @@ -29142,7 +29052,7 @@ msgstr "Reenviado" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Restablecer" @@ -29475,26 +29385,11 @@ msgstr "Respetar la intención del remitente, sin avisar cuando active o desacti msgid "Restart {appName}" msgstr "Reiniciar {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Reiniciar {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Reinicia {productName} para que este cambio surta efecto, ya que los escritorios de Linux no pueden añadir ni eliminar iconos de la bandeja de forma fiable en tiempo de ejecución." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Reinicia {productName} para instalar la actualización de escritorio" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Reinicia {productName} para instalar la actualización de escritorio {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Se revocó el baneo de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Retroceder {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -29866,7 +29761,7 @@ msgstr "Rumano" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Girar a la derecha" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Filas por página" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Paquete RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configuración de autoalojamiento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Modo autohospedado" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Forzar modo autohospedado" @@ -32212,8 +32107,8 @@ msgstr "Mostrar mi pantalla compartida" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Mostrarme escribiendo" @@ -32675,7 +32570,7 @@ msgstr "Omitir" msgid "Skip \"Mark all as read\" confirmation" msgstr "Omitir la confirmación de \"Marcar todo como leído\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Omitir recorte" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Omitir la advertencia de enlace externo para todos los dominios" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Omite la llamada de red cuando se envía un reporte en la aplicación. El flujo avanza a la pantalla de éxito para que puedas probar la interfaz de usuario, pero no se envía nada al equipo de seguridad." @@ -32752,8 +32647,8 @@ msgstr "Eslovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Carga lenta de archivos adjuntos" @@ -32769,29 +32664,29 @@ msgstr "Ve más despacio, espera un momento antes de volver a intentarlo." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Edición lenta de mensajes" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Carga lenta de mensajes" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Envío lento de mensajes" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Carga lenta de perfil" @@ -32807,7 +32702,7 @@ msgstr "Modo lento · espera {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento activado" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "El modo lento está configurado en {durationLabel}. Espera antes de enviar otro mensaje." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Tiempo restante del modo lento" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Bandeja del sistema" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalación gestionada por el sistema" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Toca para agregar una nota" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archivo tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Es posible que la comunidad que buscas haya sido eliminada o que no tengas acceso a ella." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "No se pudo descargar la actualización de escritorio. Intenta de nuevo desde el botón de actualización cuando tu conexión sea estable." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "La actualización de escritorio se ha descargado. Reinicia {productName} para finalizar la instalación." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "El archivo descargado se guarda en tu computadora. Instálalo con tu gestor de paquetes habitual." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Esta acción no se puede deshacer. Todos los datos asociados, incluyendo el bot, se eliminarán permanentemente." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Esta animación es demasiado larga o grande para recortarla. Intenta con un archivo más corto o pequeño." @@ -35549,7 +35439,7 @@ msgstr "Este bot solicita el permiso de administrador. Concédeselo solo si conf #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Este navegador no puede recortar archivos animados de {avifFormatLabel}. Sube un GIF o WebP en su lugar." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Esta consola del navegador es una herramienta para desarrolladores." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Este navegador tiene WebAssembly desactivado, por lo que no se pueden recortar imágenes animadas." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Esta conversación ya no está disponible." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Esta versión de escritorio no puede instalar actualizaciones dentro de {productName}. Descarga el instalador de escritorio más reciente en su lugar." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Este escritorio no ofrece atajos de todo el sistema. Los atajos siguen funcionando mientras {productName} tiene el foco." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versión de desarrollo no se puede actualizar automáticamente. Descarga un instalador de escritorio para probar el flujo de actualización." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Este código de transferencia ha expirado. Genera uno nuevo para continuar." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Esta imagen no se pudo leer. Podría estar dañada." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Esta instalación está gestionada por tu sistema. Actualiza {productName} desde tu centro de software o gestor de paquetes." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "La fecha de corte no puede estar en el futuro" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura de {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plataforma de la barra de título" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Activar/desactivar cámara" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Alternar controles" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografía" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Componentes de la interfaz de usuario" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Ubicación en el Reino Unido" @@ -37528,7 +37418,7 @@ msgstr "Sin categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cuenta con registro pendiente" @@ -37689,7 +37579,7 @@ msgstr "Alternativa universal. La calidad más baja, pero funciona en todas part #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Desconocido" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Invitación desconocida" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tipo de mensaje desconocido" @@ -37893,10 +37783,10 @@ msgstr "Quitar silencio" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Activar audio" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Solo MD sin leer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Recuento de regalos no leídos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventario de regalos no leídos" @@ -38267,10 +38157,20 @@ msgstr "Actualiza {productName} para ver este mensaje." msgid "Update app" msgstr "Actualizar la app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Actualización disponible" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizar mi estado" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Actualizar ahora" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Políticas actualizadas" msgid "Updated saved media" msgstr "Contenido multimedia guardado actualizado" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Estado del actualizador" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "La URL personalizada solo puede contener caracteres alfanuméricos y guiones internos." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Aviso legal de URL personalizada" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verificación y requisitos de acceso a comunidades" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Barrera de verificación" @@ -39438,7 +39333,7 @@ msgstr "Translucidez" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Vista previa del video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progreso del video" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Configuración de video" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura de video" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Insignia de Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID de la insignia de Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Confirmación de conexión de voz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Depurar conexión de voz" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Mensaje de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Reproductor de mensaje de voz" @@ -40500,11 +40395,6 @@ msgstr "Búsqueda web" msgid "Web search provider" msgstr "Proveedor de búsqueda web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Actualizador web listo" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Uhm, esto es demasiado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Se cancelará" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/es-ES/messages.po b/fluxer_app/src/features/i18n/locales/es-ES/messages.po index e42091cc1..e51c81f5c 100644 --- a/fluxer_app/src/features/i18n/locales/es-ES/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-ES/messages.po @@ -1093,7 +1093,7 @@ msgstr "Sigue este canal {count, plural, one {# canal} other {# canales}}. Conve msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# comunidad encontrada} other {# comunidades encontradas}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# comunidad no está disponible temporalmente debido a un fallo en el condensador de flujo.} other {# comunidades no están disponibles temporalmente debido a un fallo en el condensador de flujo.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} no puede iniciar una ruta segura y aislada para el audio d msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} no puede usar un codificador de hardware para esto, por lo que utilizará tu CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se cerrará, instalará la actualización y se volverá a abrir." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} no pudo contactar con el servicio de actualizaciones. Comprueba tu conexión e inténtalo de nuevo." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} no pudo reiniciarse para aplicar la actualización descargada. Inténtalo de nuevo desde el botón de actualización." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "un nombre de host, p. ej., {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Hay una actualización de escritorio para Linux disponible. Elige el formato del paquete para este sistema y {productName} lo guardará localmente." @@ -4597,11 +4597,6 @@ msgstr "Responder a la llamada entrante" msgid "Any key" msgstr "Cualquier tecla" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Cualquier actualizador listo" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Pérdida de paquetes de audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Reproductor de audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesamiento de audio (voz enfocada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progreso del audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (requiere activación)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponible" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Baneos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Cuenta atrás de la barrera" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Facturación" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Ciclo de facturación" @@ -6867,7 +6862,7 @@ msgstr "No se pueden subir archivos aquí" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Se cerró el hilo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Subida a la nube" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Foco del editor de mensajes" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Comprimiendo" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "No se pudo cambiar tu precio" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "No se han podido buscar actualizaciones" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "No se ha podido crear tu kit de recuperación. Puedes crear uno más tarde en la configuración de tu cuenta." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "No se pudo recortar la imagen" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "No se pudieron eliminar tus mensajes" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "No se ha podido descargar la actualización de escritorio" @@ -10841,11 +10836,6 @@ msgstr "No se pudo iniciar el pago" msgid "Couldn't start the connection" msgstr "No se pudo iniciar la conexión" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "No se pudo iniciar la actualización de escritorio" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Recortar fondo de invitación" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Vista previa del recorte" @@ -11343,12 +11333,12 @@ msgstr "Recortar el banner del perfil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "La imagen recortada es demasiado grande. Elige un área o un archivo más pequeño (máx. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Recortando {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Sonido desactivado por los moderadores" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Paquete DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplicación de escritorio" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "La aplicación de escritorio está actualizada" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Inicio de la aplicación de escritorio" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Actualización de escritorio {version} disponible. Elige un paquete de Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Actualización de escritorio disponible" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Actualización de escritorio disponible. Elige un paquete de Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Actualización de escritorio lista" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "La versión de escritorio {version} se ha descargado. Reinicia {productName} para finalizar la instalación." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Modo de desarrollador" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opción de desarrollador" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Herramientas de desarrollador no disponibles" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Versión de desarrollo" @@ -13604,26 +13584,6 @@ msgstr "Botón de descarga" msgid "Download desktop app" msgstr "Descargar aplicación de escritorio" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Descargar actualización de escritorio" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Descargar actualización de escritorio ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Descargar actualización de escritorio {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Descargar actualización de escritorio {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Descargar exportación" @@ -13688,26 +13648,6 @@ msgstr "Descarga mapas de origen para que las trazas de pila y las herramientas msgid "Download video" msgstr "Descargar vídeo" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Descargando la actualización de escritorio {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Descargando actualización de escritorio: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Descargando actualización de escritorio: {percent}% ({formatBytes} / {formatBytes2} a {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Descargando actualización de escritorio…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Verificación de correo electrónico requerida" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Correo electrónico verificado" @@ -15966,7 +15906,7 @@ msgstr "Función temporalmente desactivada" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funciones" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Forzar activación" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forzar fallos al cargar mensajes" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forzar fallos al enviar mensajes" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forzar estado de carga del selector de GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forzar esqueleto de carga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forzar contenido para adultos" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forzar la ausencia del permiso {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forzar advertencia de datos de perfil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forzar esqueletos de carga del perfil" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forzar mostrar" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forzar la visualización del aviso de URL personalizada" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forzar la visualización de la conexión de voz" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Forzar modo lento activo" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forzar tipo de mensaje desconocido" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forzar actualización lista" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Reenviar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanzar {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generando código…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Superposición de bloqueo geográfico" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opciones de GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Cargando el selector de GIF" @@ -17226,14 +17161,14 @@ msgstr "Códigos de regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duración del regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario de regalos" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Regalo no encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Regalo canjeado" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Tiene" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ha comprado alguna vez" @@ -17892,7 +17827,7 @@ msgstr "Corazón" msgid "Hebrew" msgstr "Hebreo" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Altura" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instalar la nueva app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Instalada" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versión instalada: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instalando la actualización de escritorio {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instalando actualización de escritorio…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Gráfico de latencia" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Predeterminado de Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Paquete de Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Gestionar tu suscripción" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Actualización manual de la aplicación de escritorio" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Contenido para adultos y advertencias de contenido" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Restricción de acceso a canales para adultos" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Las comprobaciones de contenido para adultos solo están disponibles actualmente en el Reino Unido." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Restricción de acceso a contenido multimedia para adultos" @@ -22888,13 +22813,13 @@ msgstr "Silenciar" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Silenciar audio" @@ -23316,16 +23241,6 @@ msgstr "Narración" msgid "Native title bar" msgstr "Barra de título nativa" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progreso de la actualización nativa" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Actualizador nativo listo" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Error de red" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Red y rendimiento" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Los usuarios nuevos no pueden unirse ahora mismo. Puedes crear una cuenta o iniciar sesión y volver a probar este enlace más tarde." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nueva versión" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Sin permiso de {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Sin descripción." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "No hay actualizaciones disponibles para la aplicación de escritorio." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Ningún webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Simular denuncias en la aplicación sin enviarlas" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Abrir selector de fecha" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Abrir descargas de escritorio" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Abrir ajustes" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Abrir centro de software" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Abrir el menú de usuario de {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Abrir vídeo" @@ -26558,9 +26473,9 @@ msgstr "Reproducir selección" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Reproducir vídeo" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Ventajas prémium desactivadas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Fecha de inicio de premium" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Estado prémium restablecido en el backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Tipo de premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Fecha de fin de premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparando" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulario de personalización del perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Aviso sobre los datos del perfil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privacidad del perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Esqueletos de perfil" @@ -28223,18 +28138,13 @@ msgstr "Recargar" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Recarga {PRODUCT_NAME} para aplicar por completo el cambio de motor. Cambiar entre el corrector ortográfico de la aplicación y el del sistema requiere recargar el proceso de renderizado, ya que Electron no puede cambiar de proveedor mientras se ejecuta." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Recarga {productName} para usar los módulos actualizados" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Recarga {productName} para aplicar la actualización de la versión web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Recarga {productName} para usar la actualización web {version}" @@ -29142,7 +29052,7 @@ msgstr "Reenviado" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Restablecer" @@ -29475,26 +29385,11 @@ msgstr "Respetar la intención del remitente, sin avisar cuando active o desacti msgid "Restart {appName}" msgstr "Reiniciar {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Reiniciar {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Reinicia {productName} para que este cambio surta efecto, ya que los escritorios de Linux no pueden añadir ni eliminar iconos de la bandeja de forma fiable en tiempo de ejecución." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Reinicia {productName} para instalar la actualización de escritorio" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Reinicia {productName} para instalar la actualización de escritorio {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Se revocó el baneo de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Retroceder {defaultSeekAmount, plural, one {# segundo} other {# segundos}}" @@ -29866,7 +29761,7 @@ msgstr "Rumano" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Girar a la derecha" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Filas por página" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Paquete RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configuración de autoalojamiento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Modo autoalojado" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Forzar modo autoalojado" @@ -32212,8 +32107,8 @@ msgstr "Mostrar mi pantalla compartida" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Mostrarme escribiendo" @@ -32675,7 +32570,7 @@ msgstr "Omitir" msgid "Skip \"Mark all as read\" confirmation" msgstr "Omitir la confirmación de \"Marcar todo como leído\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Omitir recorte" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Omitir la advertencia de enlace externo para todos los dominios" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Omite la llamada de red cuando se envía una denuncia en la aplicación. El flujo avanza a la pantalla de éxito para que puedas probar la interfaz de usuario, pero no se envía nada al equipo de seguridad." @@ -32752,8 +32647,8 @@ msgstr "Eslovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Subida lenta de archivos adjuntos" @@ -32769,29 +32664,29 @@ msgstr "Ve más despacio: espera un momento antes de volver a intentarlo." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Edición lenta de mensajes" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Carga lenta de mensajes" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Envío lento de mensajes" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Carga lenta del perfil" @@ -32807,7 +32702,7 @@ msgstr "Modo lento · espera {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento activo" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "El modo lento está configurado en {durationLabel}. Espera antes de enviar otro mensaje." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Tiempo restante del modo lento" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Bandeja del sistema" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalación gestionada por el sistema" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Toca para añadir una nota" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archivo tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Puede que la comunidad que buscas haya sido eliminada o que no tengas acceso a ella." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "No se pudo descargar la actualización de escritorio. Inténtalo de nuevo desde el botón de actualización cuando tu conexión sea estable." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "La actualización para escritorio se ha descargado. Reinicia {productName} para finalizar la instalación." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "El archivo descargado se guarda en tu ordenador. Instálalo con tu gestor de paquetes habitual." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Esta acción no se puede deshacer. Todos los datos asociados, incluido el usuario bot, se eliminarán permanentemente." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Esta animación es demasiado larga o grande para recortarla. Prueba con un archivo más corto o pequeño." @@ -35549,7 +35439,7 @@ msgstr "Este bot solicita permiso de administrador. Concédeselo solo si confía #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Este navegador no puede recortar archivos animados de {avifFormatLabel}. Sube un GIF o WebP en su lugar." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Esta consola del navegador es una herramienta para desarrolladores." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Este navegador tiene WebAssembly desactivado, por lo que no se pueden recortar imágenes animadas." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Esta conversación ya no está disponible." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Esta versión de escritorio no puede instalar actualizaciones dentro de {productName}. Descarga el instalador de escritorio más reciente en su lugar." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Este escritorio no ofrece atajos de todo el sistema. Los atajos siguen funcionando mientras {productName} tiene el foco." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versión de desarrollo no se puede actualizar automáticamente. Descarga un instalador de escritorio para probar el flujo de actualización." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Este código de transferencia ha caducado. Genera uno nuevo para continuar." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "No se ha podido leer esta imagen. Es posible que esté dañada." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Esta instalación está gestionada por tu sistema. Actualiza {productName} desde tu centro de software o gestor de paquetes." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "La fecha de corte no puede estar en el futuro" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura de {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plataforma de la barra de título" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Alternar cámara" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Alternar controles" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografía" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Componentes de la interfaz de usuario" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Ubicación en el Reino Unido" @@ -37528,7 +37418,7 @@ msgstr "Sin categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cuenta con registro pendiente" @@ -37689,7 +37579,7 @@ msgstr "Alternativa universal. La calidad más baja, pero funciona en todas part #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Desconocido" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Invitación desconocida" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tipo de mensaje desconocido" @@ -37893,10 +37783,10 @@ msgstr "Quitar silencio" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Activar audio" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Solo MD sin leer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Recuento de regalos no leídos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventario de regalos no leídos" @@ -38267,10 +38157,20 @@ msgstr "Actualiza {productName} para ver este mensaje." msgid "Update app" msgstr "Actualizar la aplicación" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Actualización disponible" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizar mi estado" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Actualizar ahora" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Políticas actualizadas" msgid "Updated saved media" msgstr "Contenido multimedia guardado actualizado" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Estado del actualizador" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "La URL personalizada solo puede contener caracteres alfanuméricos y guiones internos." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Aviso legal de URL personalizada" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verificación y requisitos de acceso a comunidades" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Barrera de verificación" @@ -39438,7 +39333,7 @@ msgstr "Translucidez" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Vídeo" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Previsualización del vídeo" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progreso del vídeo" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Ajustes de vídeo" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura de vídeo" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Insignia de Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID de la insignia de Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Confirmación de conexión de voz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Depurar conexión de voz" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Mensaje de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Reproductor de mensaje de voz" @@ -40500,11 +40395,6 @@ msgstr "Búsqueda web" msgid "Web search provider" msgstr "Proveedor de búsqueda web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Actualizador web listo" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Uf, esto es demasiado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Se cancelará" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/fi/messages.po b/fluxer_app/src/features/i18n/locales/fi/messages.po index b0299fc18..a85fde363 100644 --- a/fluxer_app/src/features/i18n/locales/fi/messages.po +++ b/fluxer_app/src/features/i18n/locales/fi/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanava seuraa} other {# kanavaa seuraa}} tämän msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# yhteisö löytyi} other {# yhteisöä löytyi}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# yhteisö on tilapäisesti pois käytöstä toimintahäiriön vuoksi.} other {# yhteisöä on tilapäisesti pois käytöstä toimintahäiriön vuoksi.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} ei voi aloittaa turvallista eristettyä reittiä tämän s msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} ei voi käyttää laitteistokooderia tässä tapauksessa, joten se käyttää prosessoriasi." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} sulkeutuu, asentaa päivityksen ja avautuu uudelleen." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} ei saanut yhteyttä päivityspalveluun. Tarkista internetyhteytesi ja yritä uudelleen." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} ei voinut käynnistyä uudelleen ladattuun päivitykseen. Yritä uudelleen päivityspainikkeesta." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "isäntänimi, esim. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Linux-työpöytäpäivitys on saatavilla. Valitse pakettimuoto tälle järjestelmälle, niin {productName} tallentaa sen paikallisesti." @@ -4597,11 +4597,6 @@ msgstr "Vastaa saapuvaan puheluun" msgid "Any key" msgstr "Mikä tahansa näppäin" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Jokin päivittäjä valmis" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Äänen pakettihäviö:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Äänisoitin" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Äänenkäsittely (kohdennettu ääni)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Äänen toiston edistyminen" @@ -5551,7 +5546,7 @@ msgstr "AV1 (vaatii käyttöönoton)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Saatavilla" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Porttikiellot" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Esteen lähtölaskenta" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Laskutus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Laskutuskausi" @@ -6867,7 +6862,7 @@ msgstr "Tiedostoja ei voi lähettää tähän" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Arkistoitu säie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Pilvilataus" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Viestikentän kohdistus" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Pakataan" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Hinnan muuttaminen epäonnistui" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Päivitysten tarkistus epäonnistui" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Et voitu luoda palautussarjaasi. Voit luoda sen myöhemmin tiliasetuksistasi." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Kuvan rajaus epäonnistui" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Viestejäsi ei voitu poistaa" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Työpöytäsovelluksen päivitystä ei voitu ladata" @@ -10841,11 +10836,6 @@ msgstr "Kassan avaaminen epäonnistui" msgid "Couldn't start the connection" msgstr "Yhteyden luominen epäonnistui" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Työpöytäsovelluksen päivitystä ei voitu aloittaa" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Rajaa kutsun taustakuva" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Rajauksen esikatselu" @@ -11343,12 +11333,12 @@ msgstr "Rajaa profiilibanneri" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Rajattu kuva on liian suuri. Valitse pienempi alue tai pienempi tiedosto (enintään {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Rajataan {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Moderaattorit mykistivät äänesi" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-paketti" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Työpöytäsovellus" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Työpöytäsovellus on ajan tasalla" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Käynnistys työpöydällä" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Työpöytäpäivitys {version} saatavilla. Valitse Linux-paketti." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Työpöytäsovelluksen päivitys saatavilla" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Työpöytäpäivitys saatavilla. Valitse Linux-paketti." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Työpöytäsovelluksen päivitys valmis" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Työpöytäversio {version} on ladattu. Käynnistä {productName} uudelleen asennuksen viimeistelemiseksi." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Kehittäjätila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Kehittäjäasetus" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Kehittäjän työkalut eivät ole käytettävissä" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Kehitysversio" @@ -13604,26 +13584,6 @@ msgstr "Lataa-painike" msgid "Download desktop app" msgstr "Lataa työpöytäsovellus" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Lataa työpöytäsovelluksen päivitys" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Lataa työpöytäsovelluksen päivitys ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Lataa työpöytäsovelluksen päivitys {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Lataa työpöytäsovelluksen päivitys {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Lataa vienti" @@ -13688,26 +13648,6 @@ msgstr "Lataa lähdekartat, jotta pinon jäljitykset ja kehittäjätyökalut oso msgid "Download video" msgstr "Lataa video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Ladataan työpöytäsovelluksen päivitystä {version}: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Ladataan työpöytäsovelluksen päivitystä: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Ladataan työpöytäsovelluksen päivitystä: {percent} % ({formatBytes} / {formatBytes2} nopeudella {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Ladataan työpöytäsovelluksen päivitystä…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Sähköpostin vahvistus vaaditaan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Sähköposti vahvistettu" @@ -15966,7 +15906,7 @@ msgstr "Ominaisuus tilapäisesti pois käytöstä" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Ominaisuudet" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Pakotettu käyttöön" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Pakota viestien lataus epäonnistumaan" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Pakota viestien lähetys epäonnistumaan" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Pakota GIF-valitsimen lataus" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Pakota latausluuranko" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Pakota aikuisille tarkoitettu media" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Pakota {permissionName}-käyttöoikeuden puuttuminen" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Pakota profiilitietovaroitus" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Pakota profiilirungot" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Pakota näkyviin" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Pakota mukautetun URL-osoitteen vastuuvapauslausekkeen näyttäminen" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Näytä aina puheyhteys" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Pakota hidas tila käyttöön" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Pakota tuntematon viestityyppi" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Pakota päivitys valmiiksi" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Välitä" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Kelaa eteenpäin {defaultSeekAmount} sekuntia" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Luodaan koodia…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Maantieteellisen eston peittokuva" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-asetukset" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-valitsin latautuu" @@ -17226,14 +17161,14 @@ msgstr "Lahjakoodit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Lahjan kesto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Lahjavarasto" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Lahjaa ei löydy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Lahja lunastettu" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Sisältää" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ostanut joskus" @@ -17892,7 +17827,7 @@ msgstr "Sydän" msgid "Hebrew" msgstr "heprea" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Korkeus" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Asenna uusi sovellus" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Asennettu" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Asennettu versio: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Asennetaan työpöytäpäivitystä {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Asennetaan työpöytäpäivitystä…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Viivekaavio" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linuxin oletusarvo" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-paketti" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Hallinnoi tilaustasi" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Työpöytäsovelluksen manuaalinen päivitys" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Aikuisille tarkoitettu sisältö ja sisältövaroitukset" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Aikuissisällön kanavaportti" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Aikuisille tarkoitetun sisällön tarkistukset ovat tällä hetkellä saatavilla vain Isossa-Britanniassa." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Aikuissisällön mediaportti" @@ -22888,13 +22813,13 @@ msgstr "Mykistä" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Mykistä ääni" @@ -23316,16 +23241,6 @@ msgstr "Ääneen luku" msgid "Native title bar" msgstr "Järjestelmän otsikkorivi" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Natiivipäivityksen edistyminen" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Natiivipäivittäjä valmis" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Verkkovirhe" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Verkko ja suorituskyky" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Uudet käyttäjät eivät voi liittyä juuri nyt. Voit silti luoda tilin tai kirjautua sisään ja yrittää tätä linkkiä uudelleen myöhemmin." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Uusi versio" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Ei" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Ei {attachFilesPermission}-käyttöoikeutta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Ei {sendMessagesPermission}-käyttöoikeutta" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Ei kuvausta." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Työpöytäversioon ei ole saatavilla päivitystä." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Ei webhookeja" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Ei-toimivat sovelluksen sisäiset ilmoitukset" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Avaa päivämäärävalitsin" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Avaa työpöytäversion lataussivu" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Avaa asetukset" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Avaa ohjelmistokeskus" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Avaa käyttäjän {displayName} valikko" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Avaa video" @@ -26558,9 +26473,9 @@ msgstr "Toista valinta" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Toista video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premium-edut poistettu käytöstä" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium-tilaus alkaen" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premium-tila nollattu taustajärjestelmässä." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium-tyyppi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium voimassa tähän asti" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Valmistellaan" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Profiilin muokkauslomake" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Profiilitietovaroitus" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profiilin yksityisyys" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profiilirungot" @@ -28223,18 +28138,13 @@ msgstr "Lataa uudelleen" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Lataa {PRODUCT_NAME} uudelleen, jotta moottorin vaihto tulee kokonaan voimaan. Sovelluksen sisäisen ja järjestelmän oikoluvun välillä vaihtaminen vaatii renderöijän uudelleenlatauksen, koska Electron ei voi vaihtaa palveluntarjoajaa käynnissä ollessaan." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Lataa {productName} uudelleen käyttääksesi päivitettyjä moduuleja" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Lataa {productName} uudelleen, jotta voit käyttää verkkopäivitystä" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Lataa {productName} uudelleen, jotta voit käyttää verkkopäivitystä {version}" @@ -29142,7 +29052,7 @@ msgstr "Lähetetty uudelleen" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Palauta" @@ -29475,26 +29385,11 @@ msgstr "Noudattaa lähettäjän valintaa, eikä varoita, kun hän muuttaa @-main msgid "Restart {appName}" msgstr "Käynnistä {appName} uudelleen" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Käynnistä {productName} uudelleen" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Käynnistä {productName} uudelleen, jotta muutos tulee voimaan. Linux-työpöydät eivät voi luotettavasti lisätä tai poistaa ilmaisinalueen kuvakkeita ajon aikana." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Käynnistä {productName} uudelleen asentaaksesi työpöytäpäivityksen" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Käynnistä {productName} uudelleen asentaaksesi työpöytäpäivityksen {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Käyttäjän {0} porttikielto kumottu" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Kelaa taaksepäin {defaultSeekAmount} sekuntia" @@ -29866,7 +29761,7 @@ msgstr "romania" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Kierrä myötäpäivään" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rivejä sivulla" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-paketti" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Itsehostauksen määritys" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Itsehostattu tila" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Itsehostatun tilan ohitus" @@ -32212,8 +32107,8 @@ msgstr "Näytä oma näytönjakoni" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Näytä itseni kirjoittamassa" @@ -32675,7 +32570,7 @@ msgstr "Ohita" msgid "Skip \"Mark all as read\" confirmation" msgstr "Ohita \"Merkitse kaikki luetuiksi\" -vahvistus" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Ohita rajaus" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Ohita ulkoisen linkin varoitus kaikille verkkotunnuksille" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Ohita verkkopyyntö, kun sovelluksen sisäinen ilmoitus lähetetään. Prosessi etenee silti onnistumisnäyttöön, jotta voit kokeilla käyttöliittymää, mutta mitään ei todellisuudessa lähetetä turvallisuustiimille." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Hidas liitteen lähetys" @@ -32769,29 +32664,29 @@ msgstr "Hidasta – odota hetki ennen kuin yrität uudelleen." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Hidas viestin muokkaus" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Hidas viestien lataus" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Hidas viestin lähetys" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Hidas profiilin lataus" @@ -32807,7 +32702,7 @@ msgstr "Hidas tila · odota {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Hidas tila käytössä" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Hitaan tilan viive on {durationLabel}. Odota ennen kuin lähetät uuden viestin." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Hitaan tilan aikaa jäljellä" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Ilmaisinalue" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Järjestelmän hallinnoima asennus" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Lisää muistiinpano napauttamalla" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-arkisto" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Etsimääsi yhteisöä ei ehkä enää ole tai sinulla ei ole siihen pääsyä." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Työpöytäpäivitystä ei voitu ladata. Yritä uudelleen päivityspainikkeesta, kun yhteytesi on vakaa." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Työpöytäpäivitys on ladattu. Käynnistä {productName} uudelleen asennuksen viimeistelemiseksi." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Ladattu tiedosto tallennetaan tietokoneellesi. Asenna se tavallisella pakettienhallintaohjelmallasi." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Tätä toimintoa ei voi kumota. Kaikki siihen liittyvät tiedot, mukaan lukien bottikäyttäjä, poistetaan pysyvästi." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Animaatio on liian pitkä tai liian suuri rajattavaksi. Kokeile lyhyempää tai pienempää tiedostoa." @@ -35549,7 +35439,7 @@ msgstr "Tämä botti pyytää ylläpitäjän käyttöoikeutta. Myönnä se vain, #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Selaimesi ei voi rajata animoituja {avifFormatLabel} -tiedostoja. Lataa sen sijaan GIF- tai WebP-tiedosto." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Tämä selaimen konsoli on kehittäjän työkalu." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Selaimesi WebAssembly-tuki on pois päältä, joten animoituja kuvia ei voi rajata." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Tämä keskustelu ei ole enää saatavilla." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Tätä työpöytäversiota ei voi päivittää suoraan {productName}-sovelluksessa. Lataa sen sijaan uusin työpöytäasennusohjelma." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Tämä työpöytä ei tue järjestelmänlaajuisia pikanäppäimiä. Pikanäppäimet toimivat silti, kun {productName} on aktiivisena." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Tämä kehitysversio ei voi päivittää itseään. Lataa työpöytäasennusohjelma, jos haluat testata päivityksen kulkua." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Tämä siirtokoodi on vanhentunut. Luo uusi jatkaaksesi." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Kuvan lukeminen epäonnistui. Se saattaa olla vioittunut." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Tämä asennus on järjestelmäsi hallinnoima. Päivitä {productName} ohjelmistokeskuksesta tai pakettienhallinnasta." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Kynnyspäivämäärä ei voi olla tulevaisuudessa" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Esikatselukuva kohteelle {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Otsikkorivi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Otsikkorivin alusta" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Kamera päälle tai pois" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Näytä tai piilota säätimet" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografia" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Käyttöliittymäkomponentit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Yhdistyneen kuningaskunnan sijainti" @@ -37528,7 +37418,7 @@ msgstr "Luokittelematon" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Lunastamaton tili" @@ -37689,7 +37579,7 @@ msgstr "Yleinen vararatkaisu. Huonoin laatu, mutta toimii kaikkialla." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Tuntematon" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Tuntematon kutsu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tuntematon viestityyppi" @@ -37893,10 +37783,10 @@ msgstr "Poista mykistys" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Palauta ääni" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Vain lukemattomat yksityisviestit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Lukemattomien lahjojen määrä" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Lukemattomat lahjat" @@ -38267,10 +38157,20 @@ msgstr "Päivitä {productName}, jotta voit tarkastella tätä viestiä." msgid "Update app" msgstr "Päivitä sovellus" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Päivitys saatavilla" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Päivitä tilani" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Päivitä nyt" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Päivitetyt käytännöt" msgid "Updated saved media" msgstr "Tallennettu media päivitetty" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Päivittäjän tila" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Mukautettu URL-osoite voi sisältää vain kirjaimia, numeroita ja väliviivoja muualla kuin alussa tai lopussa." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Mukautetun URL-osoitteen vastuuvapauslauseke" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Vahvistus- ja jäsenyysrajoitukset" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Vahvistuseste" @@ -39438,7 +39333,7 @@ msgstr "Värikylläisyys" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videon esikatselu" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videon edistyminen" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videoasetukset" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videon esikatselukuva" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-merkki" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-merkin tunnus" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Ääniyhteyden vahvistus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Ääniyhteyden virheenkorjaus" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Ääniviesti" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Ääniviestisoitin" @@ -40500,11 +40395,6 @@ msgstr "Verkkohaku" msgid "Web search provider" msgstr "Verkkohakujen tarjoaja" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Verkkopäivittäjä valmis" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Huh, onpa paljon" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Peruuntuu" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoomaus" diff --git a/fluxer_app/src/features/i18n/locales/fr/messages.po b/fluxer_app/src/features/i18n/locales/fr/messages.po index dcc241062..68329c781 100644 --- a/fluxer_app/src/features/i18n/locales/fr/messages.po +++ b/fluxer_app/src/features/i18n/locales/fr/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# canal suit} other {# canaux suivent}} ce canal. msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# communauté trouvée} other {# communautés trouvées}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# communauté est temporairement indisponible en raison d'un dysfonctionnement du condensateur de flux.} other {# communautés sont temporairement indisponibles en raison d'un dysfonctionnement du condensateur de flux.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} ne peut pas démarrer une capture audio garantissant que s msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} ne peut pas utiliser d’encodeur matériel pour cela et utilisera donc votre processeur." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se ferme, installe la mise à jour et se rouvre." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} n’a pas pu joindre le service de mise à jour. Vérifiez votre connexion et réessayez." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} n’a pas pu redémarrer pour lancer la mise à jour téléchargée. Veuillez réessayer en utilisant le bouton de mise à jour." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "un nom d'hôte, par exemple {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Une mise à jour de l’application pour Linux est disponible. Choisissez le format de paquet adapté à ce système et {productName} l’enregistrera sur votre ordinateur." @@ -4597,11 +4597,6 @@ msgstr "Répondre à l'appel entrant" msgid "Any key" msgstr "N’importe quelle touche" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Mise à jour prête" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Perte de paquets audio :" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Lecteur audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Traitement audio (voix isolée)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progression audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (nécessite une activation)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponible" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Bannissements" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Compte à rebours de la barrière" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Facturation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Cycle de facturation" @@ -6867,7 +6862,7 @@ msgstr "Impossible d’envoyer des fichiers ici" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Fermé le fil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Envoi vers le cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Focus de la zone de rédaction" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Compression en cours" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Impossible de changer votre tarif" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Impossible de rechercher les mises à jour" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Impossible de créer votre kit de récupération. Vous pourrez en créer un plus tard dans les paramètres de votre compte." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Impossible de recadrer l’image" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Impossible de supprimer vos messages" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Impossible de télécharger la mise à jour de l’application de bureau" @@ -10841,11 +10836,6 @@ msgstr "Impossible de démarrer le paiement" msgid "Couldn't start the connection" msgstr "Impossible de démarrer la connexion" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Impossible de démarrer la mise à jour de l’application de bureau" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Recadrer l'arrière-plan de l'invitation" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Aperçu du recadrage" @@ -11343,12 +11333,12 @@ msgstr "Recadrer la bannière de profil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "L'image recadrée est trop grande. Choisissez une zone plus petite ou un fichier plus petit (max. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Recadrage de {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Son désactivé par les modérateurs" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Paquet DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Application de bureau" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "L’application de bureau est à jour" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Démarrage sur ordinateur" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Mise à jour {version} de l’application de bureau disponible. Choisissez un paquet Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Mise à jour de l’application de bureau disponible" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Mise à jour de l’application disponible. Choisissez un paquet Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Mise à jour de l'application prête" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "La version de bureau {version} a été téléchargée. Redémarrez {productName} pour terminer l’installation." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Mode développeur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Option développeur" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Outils de développement indisponibles" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Version de développement" @@ -13604,26 +13584,6 @@ msgstr "Bouton de téléchargement" msgid "Download desktop app" msgstr "Télécharger l’application de bureau" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Télécharger la mise à jour de l’application de bureau" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Télécharger la mise à jour de l’application de bureau ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Télécharger la mise à jour {version} de l’application de bureau" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Télécharger la mise à jour {version} de l’application de bureau ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Télécharger l'export" @@ -13688,26 +13648,6 @@ msgstr "Télécharger les cartes sources pour que les traces de pile et les outi msgid "Download video" msgstr "Télécharger la vidéo" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Téléchargement de la mise à jour {version} de l’application de bureau : {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Téléchargement de la mise à jour de l’application de bureau : {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Téléchargement de la mise à jour de l’application de bureau : {percent} % ({formatBytes} / {formatBytes2} à {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Téléchargement de la mise à jour…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Vérification de l'adresse e-mail requise" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail vérifié" @@ -15966,7 +15906,7 @@ msgstr "Fonctionnalité temporairement désactivée" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Fonctionnalités" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Activé de force" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forcer l'échec du chargement des messages" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forcer l'échec de l'envoi des messages" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forcer le chargement du sélecteur de GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forcer l’affichage de l’espace réservé au chargement" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forcer les médias pour adultes" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forcer l’absence de la permission {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forcer l'avertissement sur les données de profil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forcer l’affichage des espaces réservés aux profils" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forcer l'affichage" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forcer l'affichage de l'avertissement sur l'URL personnalisée" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forcer l'affichage de la connexion vocale" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Forcer le mode lent" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forcer le type de message inconnu" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forcer la mise à jour prête" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Transférer" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avancer de {defaultSeekAmount} secondes" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Génération du code…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Superposition du blocage géographique" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Options GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Chargement du sélecteur de GIF" @@ -17226,14 +17161,14 @@ msgstr "Codes cadeaux" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durée du cadeau" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventaire des cadeaux" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Cadeau introuvable" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Cadeau utilisé" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Contient" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "A déjà effectué un achat" @@ -17892,7 +17827,7 @@ msgstr "Cœur" msgid "Hebrew" msgstr "Hébreu" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Hauteur" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Installer la nouvelle application" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installé" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Version installée : {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installation de la mise à jour {version} de l’application de bureau…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installation de la mise à jour de l’application de bureau…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Graphique de latence" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux (par défaut)" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Paquet Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Gérer votre abonnement" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Mise à jour manuelle de l’application de bureau" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Contenu pour adultes et avertissements" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Restriction d’accès aux salons pour adultes" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "La vérification d’accès aux contenus pour adultes est actuellement disponible uniquement au Royaume-Uni." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Restriction d’accès aux médias pour adultes" @@ -22888,13 +22813,13 @@ msgstr "Mettre en sourdine" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Couper le son" @@ -23316,16 +23241,6 @@ msgstr "Narration" msgid "Native title bar" msgstr "Barre de titre native" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progression de la mise à jour native" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Mise à jour native prête" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Erreur réseau" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Réseau et performances" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "De nouveaux membres ne peuvent pas rejoindre la communauté pour le moment. Vous pouvez tout de même créer un compte ou vous connecter, puis réessayer ce lien plus tard." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nouvelle version" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Non" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Permission {attachFilesPermission} manquante" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Permission {sendMessagesPermission} manquante" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Aucune description." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Aucune mise à jour de l’application de bureau n’est disponible." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Aucun webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Désactiver l’envoi réel des signalements dans l’application" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Ouvrir le sélecteur de date" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Ouvrir les téléchargements pour ordinateur" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Ouvrir les réglages" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Ouvrir le centre logiciel" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Ouvrir le menu utilisateur pour {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Ouvrir la vidéo" @@ -26558,9 +26473,9 @@ msgstr "Écouter la sélection" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Lire la vidéo" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Avantages premium désactivés" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium depuis le" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Statut premium réinitialisé côté serveur." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Type d'abonnement premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Date de fin Premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Préparation" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulaire de personnalisation du profil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Avertissement sur les données de profil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Confidentialité du profil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Espaces réservés aux profils" @@ -28223,18 +28138,13 @@ msgstr "Recharger" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Rechargez {PRODUCT_NAME} pour appliquer complètement le changement de moteur. Le passage entre la vérification orthographique intégrée et celle du système nécessite de recharger le moteur de rendu, car Electron ne peut pas changer de fournisseur pendant son exécution." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Recharger {productName} pour utiliser les modules mis à jour" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Rechargez {productName} pour appliquer la mise à jour du site web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Rechargez {productName} pour utiliser la mise à jour web {version}" @@ -29142,7 +29052,7 @@ msgstr "Renvoyé" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Réinitialiser" @@ -29475,26 +29385,11 @@ msgstr "Respecter l'intention de l'expéditeur, sans avertissement lorsqu'il act msgid "Restart {appName}" msgstr "Redémarrer {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Redémarrer {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Redémarrez {productName} pour appliquer cette modification, car les environnements de bureau Linux ne permettent pas d’ajouter ou de supprimer fiablement les icônes de la zone de notification pendant l’exécution." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Redémarrer {productName} pour installer la mise à jour de l’application de bureau" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Redémarrer {productName} pour installer la mise à jour {version} de l’application de bureau" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "A levé le bannissement de {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Rembobiner de {defaultSeekAmount} secondes" @@ -29866,7 +29761,7 @@ msgstr "Roumain" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Pivoter dans le sens des aiguilles d'une montre" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Lignes par page" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Paquet RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configuration auto-hébergée" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Mode auto-hébergé" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Forcer le mode auto-hébergé" @@ -32212,8 +32107,8 @@ msgstr "Afficher mon partage d'écran" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "M'afficher en train d'écrire" @@ -32675,7 +32570,7 @@ msgstr "Passer" msgid "Skip \"Mark all as read\" confirmation" msgstr "Passer la confirmation « Tout marquer comme lu »" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Ignorer le recadrage" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Ignorer l'avertissement de lien externe pour tous les domaines" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "N’effectue pas l’appel réseau lors de l’envoi d’un signalement depuis l’application. Le parcours continue jusqu’à l’écran de réussite pour permettre de vérifier l’interface, mais rien n’est envoyé à l’équipe de sécurité." @@ -32752,8 +32647,8 @@ msgstr "Slovénie" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Envoi lent des pièces jointes" @@ -32769,29 +32664,29 @@ msgstr "Du calme, attendez un instant avant de réessayer." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Modification lente des messages" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Chargement lent des messages" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Envoi lent des messages" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Chargement lent du profil" @@ -32807,7 +32702,7 @@ msgstr "Mode lent · attendez {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Mode lent activé" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Le mode lent est réglé sur {durationLabel}. Attendez avant d'envoyer un autre message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Délai restant du mode lent" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Zone de notification" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Installation gérée par le système" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Appuyer pour ajouter une note" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archive tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "La communauté que vous recherchez a peut-être été supprimée ou vous n'y avez peut-être pas accès." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Impossible de télécharger la mise à jour de l’application de bureau. Réessayez avec le bouton de mise à jour lorsque votre connexion sera stable." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "La mise à jour de la version pour ordinateur a été téléchargée. Redémarrez {productName} pour terminer l’installation." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Le fichier téléchargé est enregistré sur votre ordinateur. Installez-le avec votre gestionnaire de paquets habituel." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Cette action est irréversible. Toutes les données associées, y compris l'utilisateur du bot, seront définitivement supprimées." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Cette animation est trop longue ou trop volumineuse pour être rognée. Essayez un fichier plus court ou plus petit." @@ -35549,7 +35439,7 @@ msgstr "Ce bot demande la permission d'administrateur. Ne l'accordez que si vous #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Ce navigateur ne peut pas recadrer les fichiers {avifFormatLabel} animés. Téléchargez plutôt un GIF ou un WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Cette console de navigateur est un outil de développement." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Ce navigateur a WebAssembly désactivé, les images animées ne peuvent donc pas être recadrées." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Cette conversation n'est plus disponible." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Cette version de bureau ne peut pas installer les mises à jour directement dans {productName}. Téléchargez plutôt la dernière version du programme d’installation pour ordinateur." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Ce bureau ne propose pas de raccourcis système. Les raccourcis fonctionnent quand même lorsque {productName} est au premier plan." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Cette version de développement ne peut pas se mettre à jour. Téléchargez un programme d’installation pour tester le processus de mise à jour." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Ce code de transfert a expiré. Générez-en un nouveau pour continuer." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Cette image n'a pas pu être lue. Elle est peut-être endommagée." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Cette installation est gérée par votre système. Mettez à jour {productName} via votre centre logiciel ou votre gestionnaire de paquets." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "La date limite ne peut pas être dans le futur" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniature pour {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Barre de titre" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plateforme de la barre de titre" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Activer/désactiver la caméra" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Afficher/masquer les commandes" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typographie" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Composants de l'interface utilisateur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Zone géographique Royaume-Uni" @@ -37528,7 +37418,7 @@ msgstr "Non classé" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Compte non finalisé" @@ -37689,7 +37579,7 @@ msgstr "Solution de secours universelle. Qualité la plus basse, mais fonctionne #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Inconnu" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Invitation inconnue" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Type de message inconnu" @@ -37893,10 +37783,10 @@ msgstr "Annuler la mise en sourdine" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Réactiver le son" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "MP non lus uniquement" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Nombre de cadeaux non lus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventaire des cadeaux non lus" @@ -38267,10 +38157,20 @@ msgstr "Mettez à jour {productName} pour afficher ce message." msgid "Update app" msgstr "Mettre à jour l’application" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Mise à jour disponible" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Mettre à jour mon statut" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Mettre à jour maintenant" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Règles mises à jour" msgid "Updated saved media" msgstr "Média enregistré mis à jour" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "État du programme de mise à jour" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "L'URL personnalisée ne peut contenir que des caractères alphanumériques et des tirets internes." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Avertissement sur l'URL personnalisée" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Vérification et barrières d'adhésion" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Barrière de vérification" @@ -39438,7 +39333,7 @@ msgstr "Vibrance" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Vidéo" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Aperçu vidéo" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progression de la vidéo" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Paramètres vidéo" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniature vidéo" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Badge Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID du badge Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Confirmation de la connexion vocale" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Débogage de la connexion vocale" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Message vocal" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Lecteur de message vocal" @@ -40500,11 +40395,6 @@ msgstr "Recherche web" msgid "Web search provider" msgstr "Fournisseur de recherche web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Mise à jour web prête" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Ouh là, c'est lourd" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Résiliation programmée" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/he/messages.po b/fluxer_app/src/features/i18n/locales/he/messages.po index 51a2d952d..bbe225335 100644 --- a/fluxer_app/src/features/i18n/locales/he/messages.po +++ b/fluxer_app/src/features/i18n/locales/he/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# ערוץ עוקב} other {# ערוצים עוקב msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# קהילה נמצאה} other {# קהילות נמצאו}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# קהילה אינה זמינה באופן זמני עקב תקלה בקבל השטף.} other {# קהילות אינן זמינות באופן זמני עקב תקלה בקבל השטף.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} לא יכול להתחיל נתיב מבודד ובטוח msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} לא יכול להשתמש במקודד חומרה עבור פעולה זו, ולכן הוא ישתמש במעבד שלך." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} נסגר, מתקין את העדכון ונפתח מחדש." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "לא ניתן ליצור קשר עם שירות העדכונים של {productName}. בדוק את החיבור שלך ונסה שוב." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "לא ניתן להפעיל מחדש את {productName} עם העדכון שהורדת. נסה שוב באמצעות כפתור העדכון." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "שם מארח, לדוגמה {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "זמין עדכון לאפליקציית שולחן העבודה ללינוקס. בחר את פורמט החבילה עבור המערכת הזו, ו-{productName} ישמור אותו באופן מקומי." @@ -4597,11 +4597,6 @@ msgstr "מענה לשיחה הנכנסת" msgid "Any key" msgstr "כל מקש" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "מעדכן כלשהו מוכן" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "איבוד מנות שמע:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "נגן שמע" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "עיבוד שמע (קול ממוקד)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "התקדמות שמע" @@ -5551,7 +5546,7 @@ msgstr "AV1 (דורש אישור מראש)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "זמינה" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "חסימות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "ספירה לאחור של מחסום" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "חיוב" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "מחזור חיוב" @@ -6867,7 +6862,7 @@ msgstr "לא ניתן להעלות קבצים כאן" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "סגר את השרשור" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "העלאה לענן" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "מיקוד תיבת ההודעה" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "דוחס" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "לא ניתן היה לשנות את המחיר שלך" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "לא ניתן היה לבדוק עדכונים" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "לא הצלחנו ליצור את ערכת השחזור שלך. תוכל ליצור אחת מאוחר יותר בהגדרות החשבון שלך." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "לא ניתן לחתוך את התמונה" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "לא ניתן היה למחוק את ההודעות שלך" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "לא ניתן היה להוריד את עדכון שולחן העבודה" @@ -10841,11 +10836,6 @@ msgstr "לא ניתן להתחיל את התשלום" msgid "Couldn't start the connection" msgstr "לא ניתן היה להתחיל את החיבור" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "לא ניתן היה להתחיל את עדכון שולחן העבודה" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "חיתוך רקע ההזמנה" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "תצוגה מקדימה של חיתוך" @@ -11343,12 +11333,12 @@ msgstr "חיתוך באנר פרופיל" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "התמונה החתוכה גדולה מדי. בחר אזור קטן יותר או קובץ קטן יותר (מקסימום {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "חותך {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "השמע הושתק על ידי מנהלים" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "חבילת DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "אפליקציית המחשב" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "אפליקציית המחשב מעודכנת" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "הפעלה במחשב" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "עדכון {version} זמין לאפליקציית המחשב. בחר חבילת Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "עדכון זמין לאפליקציית המחשב" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "עדכון זמין לאפליקציית המחשב. בחר חבילת Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "עדכון אפליקציית המחשב מוכן" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "הורדת גרסה {version} של אפליקציית המחשב הושלמה. הפעל מחדש את {productName} כדי לסיים את ההתקנה." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "מצב מפתח" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "אפשרות מפתח" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "כלי מפתחים אינם זמינים" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "גרסת פיתוח" @@ -13604,26 +13584,6 @@ msgstr "כפתור הורדה" msgid "Download desktop app" msgstr "הורדת אפליקציית המחשב" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "הורד עדכון למחשב" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "הורד עדכון למחשב ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "הורד עדכון למחשב {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "הורד עדכון למחשב {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "הורד ייצוא" @@ -13688,26 +13648,6 @@ msgstr "הורד מפות מקור כדי שמעקבי מחסנית וכלי ה msgid "Download video" msgstr "הורד את הסרטון" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "מוריד עדכון למחשב {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "מוריד עדכון למחשב: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "מוריד עדכון למחשב: {percent}% ({formatBytes} / {formatBytes2} בקצב של {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "מוריד עדכון למחשב…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "נדרש אימות אימייל" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "אימייל אומת" @@ -15966,7 +15906,7 @@ msgstr "התכונה מושבתת זמנית" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "תכונות" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "מופעל בכפייה" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "כפה כישלון בטעינת הודעות" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "כפה כישלון בשליחת הודעות" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "כפה טעינת בורר GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "כפיית שלד טעינה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "כפיית מדיה למבוגרים" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "כפה היעדר הרשאת {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "הצג תמיד אזהרת נתוני פרופיל" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "הצג שלדי פרופיל בכפייה" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "הצגה בכפייה" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "הצג תמיד את אזהרת כתובת ה-URL המותאמת אישית" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "הצג תמיד את מצב החיבור הקולי" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "הפעלת מצב איטי בכפייה" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "הצג סוג הודעה לא ידוע" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "כפה עדכון זמין" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "העברה" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "קדימה ב-{defaultSeekAmount} שניות" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "יוצר קוד…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "שכבת-על של חסימה גאוגרפית" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "אפשרויות GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "טוען בורר GIF" @@ -17226,14 +17161,14 @@ msgstr "קודי מתנה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "משך המתנה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "מלאי מתנות" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "המתנה לא נמצאה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "המתנה מומשה" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "מכיל" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "רכש אי פעם" @@ -17892,7 +17827,7 @@ msgstr "לב" msgid "Hebrew" msgstr "עברית" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "גובה" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "התקן את האפליקציה החדשה" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "מותקן" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "הגרסה המותקנת: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "מתקין את עדכון שולחן העבודה {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "מתקין את עדכון שולחן העבודה…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "גרף השהיה" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "ברירת מחדל של לינוקס" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "חבילת לינוקס" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "ניהול המנוי שלך" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "עדכון ידני למחשב" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "תוכן למבוגרים ואזהרות תוכן" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "שער ערוץ תוכן למבוגרים" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "בדיקות תוכן למבוגרים זמינות כרגע רק בבריטניה." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "שער מדיה לתוכן למבוגרים" @@ -22888,13 +22813,13 @@ msgstr "השתק" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "השתק שמע" @@ -23316,16 +23241,6 @@ msgstr "קריינות" msgid "Native title bar" msgstr "שורת כותרת מקורית" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "התקדמות העדכון המובנה" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "המעדכן המובנה מוכן" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "שגיאת רשת" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "רשת וביצועים" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "משתמשים חדשים לא יכולים להצטרף כרגע. עדיין באפשרותך ליצור חשבון או להיכנס, ואז לנסות את הקישור הזה שוב מאוחר יותר." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "גרסה חדשה" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "לא" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "אין הרשאת {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "אין הרשאת {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "אין תיאור." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "אין עדכון זמין לאפליקציית המחשב." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "אין webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "דיווחים פנימיים לא פעילים" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "פתח בורר תאריכים" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "פתח הורדות למחשב" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "פתח הגדרות" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "פתח את מרכז התוכנה" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "פתח תפריט משתמש עבור {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "פתח סרטון" @@ -26558,9 +26473,9 @@ msgstr "הפעל קטע נבחר" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "הפעל סרטון" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "הטבות פרימיום מושבתות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "פרימיום מתאריך" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "מצב הפרימיום אופס בשרת." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "סוג פרימיום" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "פרימיום עד תאריך" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "מכין" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "טופס התאמה אישית של הפרופיל" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "אזהרת נתוני פרופיל" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "פרטיות הפרופיל" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "שלדי פרופיל" @@ -28223,18 +28138,13 @@ msgstr "טעינה מחדש" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "יש לטעון מחדש את {PRODUCT_NAME} כדי להחיל את שינוי המנוע במלואו. מעבר בין בדיקת איות בתוך האפליקציה לבדיקת איות של המערכת דורש טעינה מחדש של תהליך הרינדור, מכיוון ש-Electron אינו יכול להחליף ספקים תוך כדי פעולה." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "טען מחדש את {productName} כדי להשתמש במודולים המעודכנים" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "טען מחדש את {productName} כדי להשתמש בעדכון האינטרנט" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "טען מחדש את {productName} כדי להשתמש בעדכון האינטרנט {version}" @@ -29142,7 +29052,7 @@ msgstr "נשלח שוב" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "איפוס" @@ -29475,26 +29385,11 @@ msgstr "כיבוד כוונת השולח, ללא אזהרה כשהוא מפעי msgid "Restart {appName}" msgstr "הפעל מחדש את {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "הפעל מחדש את {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "יש להפעיל מחדש את {productName} כדי שהשינוי ייכנס לתוקף, מכיוון שסביבות שולחן העבודה בלינוקס אינן יכולות להוסיף או להסיר סמלי מגש באופן מהימן בזמן ריצה." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "הפעל מחדש את {productName} כדי להתקין את עדכון הגרסה השולחנית" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "הפעל מחדש את {productName} כדי להתקין את עדכון הגרסה השולחנית {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "החסימה של {0} בוטלה" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "הרץ אחורה ב-{defaultSeekAmount} שניות" @@ -29866,7 +29761,7 @@ msgstr "רומנית" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "סובב עם כיוון השעון" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "שורות לעמוד" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "חבילת RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "הגדרת אירוח עצמי" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "מצב אירוח עצמי" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "עקיפת מצב אירוח עצמי" @@ -32212,8 +32107,8 @@ msgstr "הצג את שיתוף המסך שלי" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "הצג אותי כמקליד/ה" @@ -32675,7 +32570,7 @@ msgstr "דלג" msgid "Skip \"Mark all as read\" confirmation" msgstr "דלג על אישור \"סמן הכל כנקרא\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "דלג על חיתוך" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "דלג על אזהרת הקישור החיצוני עבור כל הדומיינים" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "דלג על קריאת הרשת בעת שליחת דיווח מתוך האפליקציה. התהליך עדיין יתקדם למסך ההצלחה כדי שתוכל לבדוק את ממשק המשתמש, אך שום דבר לא יישלח בפועל לצוות הבטיחות." @@ -32752,8 +32647,8 @@ msgstr "סלובניה" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "העלאת קבצים איטית" @@ -32769,29 +32664,29 @@ msgstr "האט קצת — המתן רגע לפני שתנסה שוב." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "עריכת הודעה איטית" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "טעינת הודעות איטית" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "שליחת הודעות איטית" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "טעינת פרופיל איטית" @@ -32807,7 +32702,7 @@ msgstr "מצב איטי · המתן {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "מצב איטי פעיל" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "מצב איטי מוגדר ל-{durationLabel}. המתן לפני שליחת הודעה נוספת." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "זמן שנותר במצב איטי" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "מגש המערכת" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "התקנה מנוהלת על ידי המערכת" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "הקש כדי להוסיף הערה" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "ארכיון tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "ייתכן שהקהילה שחיפשת נמחקה או שאין לך גישה אליה." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "לא ניתן היה להוריד את עדכון שולחן העבודה. נסה שוב באמצעות כפתור העדכון כשהחיבור שלך יציב." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "העדכון לשולחן העבודה הורד. הפעל מחדש את {productName} כדי לסיים את ההתקנה." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "הקובץ שהורד נשמר במחשב שלך. התקן אותו באמצעות מנהל החבילות הרגיל שלך." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "לא ניתן לבטל פעולה זו. כל הנתונים המשויכים, כולל משתמש הבוט, יימחקו לצמיתות." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "האנימציה הזו ארוכה מדי או גדולה מדי לחיתוך. נסה קובץ קצר או קטן יותר." @@ -35549,7 +35439,7 @@ msgstr "הבוט הזה מבקש הרשאת מנהל מערכת. הענק אות #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "הדפדפן הזה לא יכול לחתוך קבצי {avifFormatLabel} מונפשים. העלה קובץ GIF או WebP במקום זאת." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "מסוף הדפדפן הזה הוא כלי למפתחים." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "בדפדפן שלך WebAssembly כבוי, לכן לא ניתן לחתוך תמונות מונפשות." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "שיחה זו אינה זמינה עוד." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "גרסת שולחן העבודה הזו לא יכולה להתקין עדכונים בתוך {productName}. במקום זאת, הורד את הגרסה האחרונה של תוכנת ההתקנה לשולחן העבודה." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "שולחן עבודה זה אינו תומך בקיצורי דרך כלל-מערכתיים. קיצורי הדרך עדיין פועלים כאשר {productName} ממוקד." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "גרסת פיתוח זו אינה יכולה לעדכן את עצמה. הורד תוכנת התקנה למחשב כדי לבדוק את תהליך העדכון." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "תוקף קוד ההעברה הזה פג. יש ליצור קוד חדש כדי להמשיך." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "לא ניתן היה לקרוא את התמונה. ייתכן שהיא פגומה." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "ההתקנה הזו מנוהלת על ידי המערכת שלך. עדכן את {productName} דרך מרכז התוכנה או מנהל החבילות שלך." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "תאריך הסף אינו יכול להיות בעתיד" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "תמונה ממוזערת עבור {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "שורת כותרת" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "פלטפורמת שורת הכותרת" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "הפעלה/כיבוי של המצלמה" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "הצגת/הסתרת הפקדים" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "טיפוגרפיה" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "רכיבי ממשק משתמש" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "מיקום בבריטניה" @@ -37528,7 +37418,7 @@ msgstr "ללא קטגוריה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "חשבון שלא נתבע" @@ -37689,7 +37579,7 @@ msgstr "חלופה אוניברסלית. האיכות הנמוכה ביותר, #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "לא ידוע" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "הזמנה לא ידועה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "סוג הודעה לא ידוע" @@ -37893,10 +37783,10 @@ msgstr "בטל השתקה" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "בטל השתקת שמע" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "הודעות פרטיות שלא נקראו בלבד" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "ספירת מתנות שלא נקראו" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "מלאי מתנות שלא נקראו" @@ -38267,10 +38157,20 @@ msgstr "עדכן את {productName} כדי להציג את ההודעה הזו." msgid "Update app" msgstr "עדכן את האפליקציה" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "עדכון זמין" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "עדכן את הסטטוס שלי" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "עדכן עכשיו" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "מדיניות מעודכנת" msgid "Updated saved media" msgstr "המדיה השמורה עודכנה" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "מצב עדכון" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "כתובת ה-URL המותאמת אישית יכולה להכיל רק תווים אלפאנומריים ומקפים פנימיים." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "הבהרה לגבי כתובת URL מותאמת אישית" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "מחסומי אימות וחברות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "מחסום אימות" @@ -39438,7 +39333,7 @@ msgstr "עוצמת צבע" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "וידאו" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "תצוגה מקדימה של וידאו" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "התקדמות הסרטון" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "הגדרות וידאו" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "תמונה ממוזערת של סרטון" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "תג Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "מזהה תג Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "אישור חיבור קולי" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "ניפוי באגים בחיבור קולי" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "הודעה קולית" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "נגן הודעה קולית" @@ -40500,11 +40395,6 @@ msgstr "חיפוש באינטרנט" msgid "Web search provider" msgstr "ספק חיפוש באינטרנט" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web updater מוכן" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "וואו, זה כבד" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "יבוטל" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "זום" diff --git a/fluxer_app/src/features/i18n/locales/hi/messages.po b/fluxer_app/src/features/i18n/locales/hi/messages.po index 011d1ddcf..501df9ea3 100644 --- a/fluxer_app/src/features/i18n/locales/hi/messages.po +++ b/fluxer_app/src/features/i18n/locales/hi/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# चैनल इसे फ़ॉलो करत msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# कम्युनिटी मिली} other {# कम्युनिटी मिलीं}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# कम्युनिटी फ्लक्स कैपेसिटर में खराबी के कारण अस्थायी रूप से अनुपलब्ध है।} other {# कम्युनिटी फ्लक्स कैपेसिटर में खराबी के कारण अस्थायी रूप से अनुपलब्ध हैं।}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} इस ऐप के ऑडियो के लिए अ msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} इसके लिए हार्डवेयर एन्कोडर का इस्तेमाल नहीं कर सकता, इसलिए वह आपके CPU का इस्तेमाल करेगा।" +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} बंद हो जाएगा, अपडेट इंस्टॉल करेगा और फिर से खुल जाएगा।" + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} अपडेट सेवा तक नहीं पहुँच सका। अपना कनेक्शन जाँचें और फिर से कोशिश करें।" -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} डाउनलोड किए गए अपडेट के साथ रीस्टार्ट नहीं हो सका। अपडेट बटन से फिर से कोशिश करें।" - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "एक होस्टनेम, जैसे {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "लिनक्स डेस्कटॉप के लिए एक अपडेट उपलब्ध है। इस सिस्टम के लिए पैकेज फ़ॉर्मैट चुनें और {productName} उसे आपके डिवाइस पर सेव कर लेगा।" @@ -4597,11 +4597,6 @@ msgstr "इनकमिंग कॉल का जवाब दें" msgid "Any key" msgstr "कोई भी कुंजी" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "कोई भी अपडेटर तैयार" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "ऑडियो पैकेट लॉस:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "ऑडियो प्लेयर" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "ऑडियो प्रोसेसिंग (फ़ोकस्ड वॉइस)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "ऑडियो प्रगति" @@ -5551,7 +5546,7 @@ msgstr "AV1 (ऑप्ट-इन आवश्यक)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "उपलब्ध" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "बैन" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "बैरियर काउंटडाउन" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "बिलिंग" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "बिलिंग साइकल" @@ -6867,7 +6862,7 @@ msgstr "यहां फ़ाइलें अपलोड नहीं की #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "थ्रेड बंद कर दिया" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "क्लाउड अपलोड" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "कंपोजर फ़ोकस" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "संपीड़ित हो रहा है" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "आपकी कीमत नहीं बदली जा सकी" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "अपडेट की जाँच नहीं की जा सकी" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "आपका रिकवरी किट नहीं बनाया जा सका। आप इसे बाद में अपनी खाता सेटिंग में बना सकते हैं।" #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "इमेज क्रॉप नहीं की जा सकी" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "आपके मैसेज मिटाए नहीं जा सके" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "डेस्कटॉप अपडेट डाउनलोड नहीं किया जा सका" @@ -10841,11 +10836,6 @@ msgstr "चेकआउट शुरू नहीं किया जा सक msgid "Couldn't start the connection" msgstr "कनेक्शन शुरू नहीं हो पाया" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "डेस्कटॉप अपडेट शुरू नहीं हो सका" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "इनवाइट बैकग्राउंड क्रॉप करें" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "क्रॉप का पूर्वावलोकन" @@ -11343,12 +11333,12 @@ msgstr "प्रोफ़ाइल बैनर क्रॉप करें" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "क्रॉप की गई इमेज बहुत बड़ी है। कोई छोटा हिस्सा या छोटी फ़ाइल चुनें (अधिकतम {maxSizeLabel})।" #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "{percent}% क्रॉप हो रहा है" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "मॉडरेटर ने डीफ़ेन किया" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB पैकेज" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "डेस्कटॉप ऐप" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "डेस्कटॉप ऐप अप-टू-डेट है" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "डेस्कटॉप स्टार्टअप" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "डेस्कटॉप अपडेट {version} उपलब्ध है। एक लिनक्स पैकेज चुनें।" @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "डेस्कटॉप अपडेट उपलब्ध है" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "डेस्कटॉप अपडेट उपलब्ध है। एक लिनक्स पैकेज चुनें।" -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "डेस्कटॉप अपडेट तैयार है" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "डेस्कटॉप संस्करण {version} डाउनलोड हो गया है। इंस्टॉलेशन पूरा करने के लिए {productName} को पुनरारंभ करें।" - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "डेवलपर मोड" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "डेवलपर विकल्प" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "डेवलपर टूल उपलब्ध नहीं हैं" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "डेवलपमेंट बिल्ड" @@ -13604,26 +13584,6 @@ msgstr "डाउनलोड बटन" msgid "Download desktop app" msgstr "डेस्कटॉप ऐप डाउनलोड करें" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "डेस्कटॉप अपडेट डाउनलोड करें" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "डेस्कटॉप अपडेट डाउनलोड करें ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "डेस्कटॉप अपडेट {version} डाउनलोड करें" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "डेस्कटॉप अपडेट {version} ({formatBytes}) डाउनलोड करें" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "निर्यात डाउनलोड करें" @@ -13688,26 +13648,6 @@ msgstr "डेवलपर टूल और स्टैक ट्रेस क msgid "Download video" msgstr "वीडियो डाउनलोड करें" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "डेस्कटॉप अपडेट {version} डाउनलोड हो रहा है: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "डेस्कटॉप अपडेट डाउनलोड हो रहा है: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "डेस्कटॉप अपडेट डाउनलोड हो रहा है: {percent}% ({formatBytes} / {formatBytes2} {formatBytes3}/सेकंड पर)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "डेस्कटॉप अपडेट डाउनलोड हो रहा है…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "ईमेल वेरिफ़िकेशन ज़रूरी है" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "ईमेल सत्यापित" @@ -15966,7 +15906,7 @@ msgstr "सुविधा अस्थायी रूप से बंद ह #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "सुविधाएँ" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "ज़बरदस्ती चालू किया गया" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "मैसेज लोड ज़बरदस्ती फ़ेल करें" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "मैसेज सेंड ज़बरदस्ती फ़ेल करें" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "GIF पिकर लोडिंग को फ़ोर्स करें" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "लोडिंग स्केलेटन फ़ोर्स करें" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "वयस्क मीडिया फ़ोर्स करें" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "{permissionName} अनुमति न होना फ़ोर्स करें" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "प्रोफ़ाइल डेटा चेतावनी ज़बरदस्ती दिखाएं" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "प्रोफ़ाइल स्केलेटन को फ़ोर्स करें" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "ज़बरदस्ती दिखाएं" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "वैनिटी यूआरएल अस्वीकरण ज़बरदस्ती दिखाएं" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "वॉइस कनेक्शन ज़बरदस्ती दिखाएं" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "स्लोमोड ज़बरदस्ती सक्रिय करें" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "अज्ञात मैसेज टाइप फ़ोर्स करें" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "अपडेट तैयार होना फ़ोर्स करें" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "फ़ॉरवर्ड करें" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} सेकंड आगे बढ़ाएं" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "कोड जनरेट हो रहा है…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "भू-ब्लॉक ओवरले" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF विकल्प" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF पिकर लोड हो रहा है" @@ -17226,14 +17161,14 @@ msgstr "उपहार कोड" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "उपहार की अवधि" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "उपहार इन्वेंट्री" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "उपहार नहीं मिला" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "उपहार रिडीम किया गया" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "कंटेंट" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "कभी खरीदा है" @@ -17892,7 +17827,7 @@ msgstr "दिल" msgid "Hebrew" msgstr "हिब्रू" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "ऊँचाई" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "नया ऐप इंस्टॉल करें" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "इंस्टॉल किया गया" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "इंस्टॉल किया गया वर्ज़न: {currentVersion}।" -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "डेस्कटॉप अपडेट {version} इंस्टॉल किया जा रहा है…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "डेस्कटॉप अपडेट इंस्टॉल हो रहा है…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "लेटेंसी ग्राफ़" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "लिनक्स डिफ़ॉल्ट" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "लिनक्स पैकेज" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "अपनी सदस्यता प्रबंधित करें" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "मैन्युअल डेस्कटॉप अपडेट" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "वयस्क सामग्री और सामग्री चेतावनियाँ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "वयस्क सामग्री चैनल गेट" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "वयस्क सामग्री की जाँच फ़िलहाल केवल यूके में उपलब्ध है।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "वयस्क सामग्री मीडिया गेट" @@ -22888,13 +22813,13 @@ msgstr "म्यूट करें" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "आवाज़ बंद करें" @@ -23316,16 +23241,6 @@ msgstr "वर्णन" msgid "Native title bar" msgstr "नेटिव टाइटल बार" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "नेटिव अपडेट की प्रगति" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "नेटिव अपडेटर तैयार है" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "नेटवर्क में गड़बड़ी" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "नेटवर्किंग और परफ़ॉर्मेंस" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "नए यूज़र अभी शामिल नहीं हो सकते। आप अभी भी अकाउंट बना सकते हैं या साइन इन कर सकते हैं, फिर बाद में इस लिंक को दोबारा आज़माएँ।" #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "नया वर्ज़न" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "नहीं" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} की अनुमति नहीं है" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} की अनुमति नहीं है" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "कोई विवरण नहीं।" #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "कोई डेस्कटॉप अपडेट उपलब्ध नहीं है।" @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "कोई वेबहुक नहीं" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "इन-ऐप रिपोर्ट को नो-ऑप करें" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "डेट पिकर खोलें" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "डेस्कटॉप डाउनलोड खोलें" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "सेटिंग्स खोलें" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "सॉफ़्टवेयर सेंटर खोलें" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "{displayName} के लिए यूज़र मेन्यू खोलें" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "वीडियो खोलें" @@ -26558,9 +26473,9 @@ msgstr "चुना गया हिस्सा चलाएं" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "वीडियो चलाएं" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "प्रीमियम पर्क बंद" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "प्रीमियम इस तारीख से" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "प्रीमियम स्थिति बैकएंड पर रीसेट हो गई।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "प्रीमियम प्रकार" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "इस तारीख तक प्रीमियम" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "तैयार हो रहा है" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "प्रोफ़ाइल कस्टमाइज़ेशन फ़ॉर्म" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "प्रोफ़ाइल डेटा चेतावनी" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "प्रोफ़ाइल गोपनीयता" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "प्रोफ़ाइल स्केलेटन" @@ -28223,18 +28138,13 @@ msgstr "फिर से लोड करें" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "इंजन बदलाव को पूरी तरह लागू करने के लिए {PRODUCT_NAME} को रीलोड करें। इन-ऐप और सिस्टम स्पेलचेक के बीच स्विच करने पर रेंडरर रीलोड ज़रूरी है, क्योंकि Electron चलते हुए प्रोवाइडर स्वैप नहीं कर सकता।" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "अपडेट किए गए मॉड्यूल का उपयोग करने के लिए {productName} को रीलोड करें" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "वेब अपडेट का उपयोग करने के लिए {productName} को रीलोड करें" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "{productName} को रीलोड करें ताकि वेब अपडेट {version} का उपयोग किया जा सके" @@ -29142,7 +29052,7 @@ msgstr "फिर से भेजा गया" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "रीसेट करें" @@ -29475,26 +29385,11 @@ msgstr "भेजने वाले की मर्ज़ी चलेगी, msgid "Restart {appName}" msgstr "{appName} को रीस्टार्ट करें" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "{productName} को रीस्टार्ट करें" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "इस बदलाव को प्रभावी करने के लिए {productName} को रीस्टार्ट करें, क्योंकि Linux डेस्कटॉप रनटाइम पर ट्रे आइकन को विश्वसनीय रूप से जोड़ या हटा नहीं सकते हैं।" -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "डेस्कटॉप अपडेट इंस्टॉल करने के लिए {productName} को रीस्टार्ट करें" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "डेस्कटॉप अपडेट {version} इंस्टॉल करने के लिए {productName} को रीस्टार्ट करें" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "{0} का बैन हटा दिया गया" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} सेकंड रिवाइंड करें" @@ -29866,7 +29761,7 @@ msgstr "रोमानियाई" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "घड़ी की दिशा में घुमाएँ" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "प्रति पेज पंक्तियाँ" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM पैकेज" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "सेल्फ़-होस्ट सेटअप" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "सेल्फ़-होस्टेड मोड" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "सेल्फ़-होस्टेड मोड ओवरराइड" @@ -32212,8 +32107,8 @@ msgstr "मेरी स्क्रीन शेयर दिखाएं" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "खुद को टाइप करते हुए दिखाएं" @@ -32675,7 +32570,7 @@ msgstr "छोड़ें" msgid "Skip \"Mark all as read\" confirmation" msgstr "\"सभी को पढ़ा गया मार्क करें\" की पुष्टि छोड़ें" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "क्रॉप करना छोड़ें" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "सभी डोमेन के लिए बाहरी लिंक चेतावनी को छोड़ें" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "इन-ऐप रिपोर्ट सबमिट होने पर नेटवर्क कॉल छोड़ दें। फ़्लो फिर भी सफलता स्क्रीन तक बढ़ता है ताकि आप UI आज़मा सकें, लेकिन सुरक्षा टीम को असल में कुछ नहीं भेजा जाता।" @@ -32752,8 +32647,8 @@ msgstr "स्लोवेनिया" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "अटैचमेंट अपलोड धीमा करें" @@ -32769,29 +32664,29 @@ msgstr "धीमे चलें — दोबारा कोशिश कर #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "मैसेज एडिट धीमा करें" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "मैसेज लोड धीमा करें" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "मैसेज भेजना धीमा करें" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "प्रोफ़ाइल लोड धीमा करें" @@ -32807,7 +32702,7 @@ msgstr "स्लोमोड · {remaining} इंतज़ार करें" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "स्लोमोड सक्रिय है" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "स्लोमोड {durationLabel} पर सेट है। दूसरा मैसेज भेजने से पहले इंतज़ार करें।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "स्लोमोड बाकी" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "सिस्टम ट्रे" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "सिस्टम-प्रबंधित इंस्टॉल" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "नोट जोड़ने के लिए टैप करें" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz आर्काइव" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "आप जिस कम्युनिटी को ढूंढ रहे हैं, हो सकता है उसे डिलीट कर दिया गया हो या आपके पास उसका एक्सेस न हो।" #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "डेस्कटॉप अपडेट डाउनलोड नहीं किया जा सका। जब आपका कनेक्शन स्थिर हो, तो अपडेट बटन से फिर से कोशिश करें।" -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "डेस्कटॉप अपडेट डाउनलोड हो गया है। इंस्टॉलेशन पूरा करने के लिए {productName} को रीस्टार्ट करें।" - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "डाउनलोड की गई फ़ाइल आपके कंप्यूटर पर सेव हो गई है। इसे अपने सामान्य पैकेज मैनेजर से इंस्टॉल करें।" @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "यह कार्रवाई पूर्ववत नहीं की जा सकती। बॉट यूज़र सहित सभी संबंधित डेटा स्थायी रूप से हटा दिया जाएगा।" #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "यह एनीमेशन क्रॉप करने के लिए बहुत लंबा या बहुत बड़ा है। एक छोटी या हल्की फ़ाइल आज़माएँ।" @@ -35549,7 +35439,7 @@ msgstr "यह बॉट एडमिनिस्ट्रेटर की अ #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "यह ब्राउज़र एनिमेटेड {avifFormatLabel} फ़ाइलों को क्रॉप नहीं कर सकता है। इसके बजाय GIF या WebP अपलोड करें।" @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "यह ब्राउज़र कंसोल एक डेवलपर टूल है।" #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "इस ब्राउज़र में वेबअसेंबली बंद है, इसलिए एनिमेटेड इमेज को क्रॉप नहीं किया जा सकता है।" @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "यह बातचीत अब उपलब्ध नहीं है।" #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "यह डेस्कटॉप बिल्ड {productName} के अंदर अपडेट इंस्टॉल नहीं कर सकता। इसके बजाय, नया डेस्कटॉप इंस्टॉलर डाउनलोड करें।" @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "यह डेस्कटॉप सिस्टम-व्यापी शॉर्टकट प्रदान नहीं करता है। {productName} फ़ोकस में होने पर शॉर्टकट अब भी काम करते हैं।" #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "यह डेवलपमेंट बिल्ड खुद को अपडेट नहीं कर सकता है। अपडेट फ़्लो का परीक्षण करने के लिए डेस्कटॉप इंस्टॉलर डाउनलोड करें।" @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "यह हैंडऑफ़ कोड समाप्त हो गया है। जारी रखने के लिए एक नया कोड जनरेट करें।" #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "यह इमेज पढ़ी नहीं जा सकी। यह खराब हो सकती है।" #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "यह इंस्टॉलेशन आपके सिस्टम द्वारा प्रबंधित किया जाता है। अपने सॉफ़्टवेयर सेंटर या पैकेज मैनेजर से {productName} को अपडेट करें।" @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "थ्रेशोल्ड की तारीख भविष्य की नहीं हो सकती" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title} का थंबनेल" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "टाइटल बार" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "टाइटल बार प्लेटफ़ॉर्म" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "कैमरा टॉगल करें" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "कंट्रोल टॉगल करें" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "टाइपोग्राफ़ी" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "यूआई कॉम्पोनेंट" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "यूके जियो" @@ -37528,7 +37418,7 @@ msgstr "बिना श्रेणी" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "क्लेम न किया गया अकाउंट" @@ -37689,7 +37579,7 @@ msgstr "यूनिवर्सल फ़ॉलबैक। सबसे कम #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "अज्ञात" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "अज्ञात इनवाइट" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "अज्ञात मैसेज प्रकार" @@ -37893,10 +37783,10 @@ msgstr "अनम्यूट करें" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "आवाज़ चालू करें" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "केवल अपठित DM" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "न पढ़े हुए उपहारों की संख्या" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "न पढ़े हुए उपहारों की इन्वेंट्री" @@ -38267,10 +38157,20 @@ msgstr "यह मैसेज देखने के लिए {productName} msgid "Update app" msgstr "ऐप अपडेट करें" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "अपडेट उपलब्ध है" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "अपना स्टेटस अपडेट करें" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "अभी अपडेट करें" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "अपडेट की गई नीतियाँ" msgid "Updated saved media" msgstr "सेव किया गया मीडिया अपडेट किया गया" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "अपडेटर स्थिति" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "वैनिटी यूआरएल में केवल अल्फ़ान्यूमेरिक वर्ण और आंतरिक हाइफ़न हो सकते हैं।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "वैनिटी यूआरएल अस्वीकरण" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "वेरिफ़िकेशन और सदस्यता बाधाएँ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "वेरिफ़िकेशन बाधा" @@ -39438,7 +39333,7 @@ msgstr "वाइब्रेंसी" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "वीडियो" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "वीडियो प्रीव्यू" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "वीडियो प्रगति" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "वीडियो सेटिंग्स" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "वीडियो थंबनेल" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "विजनरी बैज" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "विजनरी बैज आईडी" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "वॉइस कनेक्शन की पुष्टि" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "वॉइस कनेक्शन डीबग करें" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "वॉइस मैसेज" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "वॉइस मैसेज प्लेयर" @@ -40500,11 +40395,6 @@ msgstr "वेब खोज" msgid "Web search provider" msgstr "वेब सर्च प्रोवाइडर" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "वेब अपडेटर तैयार है" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "अरे, यह तो बहुत ज़्यादा है" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "रद्द होगा" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "ज़ूम" diff --git a/fluxer_app/src/features/i18n/locales/hr/messages.po b/fluxer_app/src/features/i18n/locales/hr/messages.po index 6748610ca..bf2da3073 100644 --- a/fluxer_app/src/features/i18n/locales/hr/messages.po +++ b/fluxer_app/src/features/i18n/locales/hr/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanal ga prati} other {# kanala ga prati}} ovu po msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# zajednica pronađena} few {# zajednice pronađene} other {# zajednica pronađeno}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# zajednica privremeno nije dostupna zbog kvara na protočnom kondenzatoru.} few {# zajednice privremeno nisu dostupne zbog kvara na protočnom kondenzatoru.} other {# zajednica privremeno nije dostupno zbog kvara na protočnom kondenzatoru.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} ne može pokrenuti sigurnu izoliranu rutu za zvuk ove apli msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} ne može koristiti hardverski enkoder za ovo, pa će umjesto toga koristiti vaš procesor." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se zatvara, instalira ažuriranje i ponovno otvara." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} nije uspio pristupiti servisu za ažuriranje. Provjerite svoju vezu i pokušajte ponovno." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} se nije uspio ponovno pokrenuti u preuzeto ažuriranje. Pokušajte ponovno pomoću gumba za ažuriranje." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "naziv hosta, npr. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Dostupno je ažuriranje aplikacije za Linux. Odaberite format paketa za ovaj sustav i {productName} će ga spremiti lokalno." @@ -4597,11 +4597,6 @@ msgstr "Javi se na dolazni poziv" msgid "Any key" msgstr "Bilo koja tipka" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Bilo koje ažuriranje spremno" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Gubitak audio paketa:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Reproduktor zvuka" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Obrada zvuka (fokusirani glas)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Napredak reprodukcije" @@ -5551,7 +5546,7 @@ msgstr "AV1 (zahtijeva uključivanje)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Dostupno" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Zabrane" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Odbrojavanje barijere" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Naplata" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Obračunsko razdoblje" @@ -6867,7 +6862,7 @@ msgstr "Ovdje nije moguće učitati datoteke" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Nit zatvorena" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Prijenos u oblak" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokusiranje sastavljača" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimiranje" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nije moguće promijeniti cijenu" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nije moguće provjeriti ažuriranja" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nismo mogli stvoriti vaš komplet za oporavak. Možete ga izraditi kasnije u postavkama računa." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Nije moguće obrezati sliku" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nije moguće izbrisati vaše poruke" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nije moguće preuzeti ažuriranje za stolno računalo" @@ -10841,11 +10836,6 @@ msgstr "Nije moguće pokrenuti naplatu" msgid "Couldn't start the connection" msgstr "Nije moguće uspostaviti vezu" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nije moguće pokrenuti ažuriranje za stolno računalo" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Obreži pozadinu pozivnice" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Pretpregled obrezivanja" @@ -11343,12 +11333,12 @@ msgstr "Obreži naslovnu sliku profila" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Obrezana slika je prevelika. Odaberite manje područje ili manju datoteku (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Obrezivanje {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Moderatori su vam isključili zvuk" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB paket" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplikacija za stolno računalo" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Aplikacija za stolno računalo je ažurna" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Pokretanje na računalu" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Dostupno je ažuriranje za stolno računalo {version}. Odaberite Linux paket." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Dostupno je ažuriranje za stolno računalo" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Dostupno je ažuriranje za stolno računalo. Odaberite Linux paket." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Ažuriranje za stolno računalo spremno" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Verzija za stolno računalo {version} je preuzeta. Ponovno pokrenite {productName} da biste dovršili instalaciju." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Način rada za razvojne programere" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opcija za razvojne programere" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Alati za razvojne programere nedostupni" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Razvojna verzija" @@ -13604,26 +13584,6 @@ msgstr "Gumb za preuzimanje" msgid "Download desktop app" msgstr "Preuzmi aplikaciju za stolno računalo" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Preuzmi ažuriranje za stolno računalo" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Preuzmi ažuriranje za stolno računalo ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Preuzmi ažuriranje za stolno računalo {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Preuzmi ažuriranje za stolno računalo {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Preuzmi izvoz" @@ -13688,26 +13648,6 @@ msgstr "Preuzmi izvorne mape kako bi tragovi steka i alati za razvoj upućivali msgid "Download video" msgstr "Preuzmi video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Preuzimanje ažuriranja za stolno računalo {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Preuzimanje ažuriranja za stolno računalo: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Preuzimanje ažuriranja za stolno računalo: {percent}% ({formatBytes} / {formatBytes2} pri {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Preuzimanje ažuriranja za stolno računalo…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Potrebna je provjera e-pošte" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-pošta potvrđena" @@ -15966,7 +15906,7 @@ msgstr "Značajka je privremeno onemogućena" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Značajke" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Prisilno omogućeno" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Prisilno neuspješno učitavanje poruka" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Prisilno neuspješno slanje poruka" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Prisilno učitavanje birača GIF-ova" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Prisilno prikaži kostur učitavanja" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Prisilno prikaži medije za odrasle" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Prisilno bez dopuštenja {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Uvijek prikaži upozorenje o podacima profila" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Prisilno prikaži kosture profila" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Prisilno prikaži" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Prisilno prikaži odricanje odgovornosti za prilagođeni URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Uvijek prikaži status glasovne veze" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Prisilno aktiviraj usporeni način rada" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Prisilno postavi nepoznatu vrstu poruke" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Prisilno označi ažuriranje spremnim" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Proslijedi" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Premotaj naprijed {defaultSeekAmount} sekundi" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generiranje koda…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Prekrivanje geo-blokade" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opcije GIF-a" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Učitavanje birača GIF-ova" @@ -17226,14 +17161,14 @@ msgstr "Kodovi poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Trajanje poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventar poklona" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Poklon nije pronađen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Poklon iskorišten" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Sadrži" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ikad kupio" @@ -17892,7 +17827,7 @@ msgstr "Srce" msgid "Hebrew" msgstr "Hebrejski" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Visina" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instaliraj novu aplikaciju" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Instalirano" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Instalirana verzija: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instaliranje ažuriranja za stolno računalo {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instaliranje ažuriranja za stolno računalo…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Grafikon latencije" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux – zadani uređaj" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux paket" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Upravljajte pretplatom" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Ručno ažuriranje stolne aplikacije" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Sadržaj za odrasle i upozorenja o sadržaju" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Ograničenje kanala za sadržaj za odrasle" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Provjere sadržaja za odrasle trenutačno su dostupne samo u Ujedinjenom Kraljevstvu." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Ograničenje medija za sadržaj za odrasle" @@ -22888,13 +22813,13 @@ msgstr "Utišaj" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Isključi zvuk" @@ -23316,16 +23241,6 @@ msgstr "Naracija" msgid "Native title bar" msgstr "Izvorna naslovna traka" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Napredak izvornog ažuriranja" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Izvorno ažuriranje spremno" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Mrežna pogreška" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Mreža i performanse" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Novi se korisnici trenutačno ne mogu pridružiti. I dalje možete stvoriti račun ili se prijaviti pa kasnije ponovno pokušati s ovom poveznicom." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nova verzija" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Nema dopuštenja {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Nema dopuštenja {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Nema opisa." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nema dostupnih ažuriranja za stolno računalo." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Nema webhookova" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Prijave u aplikaciji bez učinka" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Otvori birač datuma" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Otvori preuzimanja za stolna računala" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Otvori postavke" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Otvori centar za softver" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Otvori korisnički izbornik za {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Otvori videozapis" @@ -26558,9 +26473,9 @@ msgstr "Reproduciraj odabir" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Reproduciraj videozapis" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premium pogodnosti onemogućene" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium od datuma" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Stanje premium računa resetirano na pozadini." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Vrsta pretplate" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium do datuma" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Priprema" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Obrazac za prilagodbu profila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Upozorenje o podacima profila" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privatnost profila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Kosturi profila" @@ -28223,18 +28138,13 @@ msgstr "Ponovno učitaj" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Ponovno učitajte {PRODUCT_NAME} kako biste u potpunosti primijenili promjenu mehanizma. Prebacivanje između provjere pravopisa unutar aplikacije i sustava zahtijeva ponovno učitavanje renderera jer Electron ne može zamijeniti pružatelje usluga u hodu." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Ponovo učitaj {productName} da bi se koristili ažurirani moduli" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Ponovno učitajte {productName} da biste primijenili web-ažuriranje" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Ponovno učitajte {productName} da biste primijenili web-ažuriranje {version}" @@ -29142,7 +29052,7 @@ msgstr "Ponovno poslano" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Poništi" @@ -29475,26 +29385,11 @@ msgstr "Poštuje se namjera pošiljatelja, bez upozorenja kada uključi ili iskl msgid "Restart {appName}" msgstr "Ponovno pokreni {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Ponovno pokreni {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Ponovno pokrenite {productName} kako bi ova promjena stupila na snagu jer Linux radne površine ne mogu pouzdano dodavati ili uklanjati ikone u paleti sustava tijekom izvođenja." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Ponovno pokrenite {productName} da biste instalirali ažuriranje za stolno računalo" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Ponovno pokrenite {productName} da biste instalirali ažuriranje za stolno računalo {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Opozvana zabrana za {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Premotaj unatrag {defaultSeekAmount} sekundi" @@ -29866,7 +29761,7 @@ msgstr "Rumunjski" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Zakreni u smjeru kazaljke na satu" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Redaka po stranici" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM paket" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Postavljanje samostalnog hostinga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Samostalni način rada" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Nadjačavanje samostalnog načina rada" @@ -32212,8 +32107,8 @@ msgstr "Prikaži moje dijeljenje zaslona" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Prikaži da tipkam" @@ -32675,7 +32570,7 @@ msgstr "Preskoči" msgid "Skip \"Mark all as read\" confirmation" msgstr "Preskoči potvrdu za \"Označi sve kao pročitano\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Preskoči obrezivanje" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Preskoči upozorenje o vanjskim poveznicama za sve domene" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Preskoči mrežni poziv kada se pošalje prijava u aplikaciji. Tijek i dalje dolazi do zaslona uspjeha kako biste mogli isprobati sučelje, ali sigurnosnom timu zapravo se ništa ne šalje." @@ -32752,8 +32647,8 @@ msgstr "Slovenija" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Spori prijenos privitka" @@ -32769,29 +32664,29 @@ msgstr "Usporite — pričekajte trenutak prije nego što pokušate ponovno." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Sporo uređivanje poruke" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Sporo učitavanje poruka" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Sporo slanje poruka" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Sporo učitavanje profila" @@ -32807,7 +32702,7 @@ msgstr "Usporeni način rada · čekajte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Usporeni način rada aktivan" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Usporeni način rada je postavljen na {durationLabel}. Pričekajte prije nego što pošaljete drugu poruku." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Preostalo do kraja usporenog načina rada" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Traka sustava" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalacija kojom upravlja sustav" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Dodirnite za dodavanje bilješke" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz arhiva" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Zajednica koju tražite možda je izbrisana ili joj možda nemate pristup." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Ažuriranje za stolno računalo nije preuzeto. Pokušajte ponovno pomoću gumba za ažuriranje kada vaša veza bude stabilna." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Ažuriranje za stolno računalo je preuzeto. Ponovno pokrenite {productName} da biste dovršili instalaciju." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Preuzeta datoteka sprema se na vaše računalo. Instalirajte je pomoću uobičajenog upravitelja paketa." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Ova se radnja ne može poništiti. Svi povezani podaci, uključujući korisnika bota, bit će trajno izbrisani." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ova animacija je predugačka ili prevelika za obrezivanje. Isprobajte kraću ili manju datoteku." @@ -35549,7 +35439,7 @@ msgstr "Ovaj bot traži administratorsko dopuštenje. Dajte mu ga samo ako u pot #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Ovaj preglednik ne može obrezivati animirane {avifFormatLabel} datoteke. Umjesto toga, učitajte GIF ili WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Ova je konzola preglednika alat za razvojne programere." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Ovaj preglednik ima isključen WebAssembly, stoga se animirane slike ne mogu obrezivati." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Ovaj razgovor više nije dostupan." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Ova verzija za stolno računalo ne može instalirati ažuriranja unutar {productName}. Umjesto toga preuzmite najnoviji instalacijski program za stolno računalo." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Ovo radno okruženje ne nudi prečace za cijeli sustav. Prečaci i dalje rade dok je {productName} u fokusu." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ova razvojna verzija ne može se sama ažurirati. Preuzmite instalacijski program za stolna računala kako biste testirali tijek ažuriranja." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Ovaj je kod za prijenos istekao. Generirajte novi za nastavak." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Ovu sliku nije moguće pročitati. Možda je oštećena." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Ovom instalacijom upravlja vaš sustav. Ažurirajte {productName} putem centra za softver ili upravitelja paketa." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Granični datum ne može biti u budućnosti" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Sličica za {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Naslovna traka" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Platforma naslovne trake" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Uključi/isključi kameru" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Prikaži ili sakrij kontrole" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografija" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Komponente korisničkog sučelja" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "UK geolokacija" @@ -37528,7 +37418,7 @@ msgstr "Nekategorizirano" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Nepreuzet račun" @@ -37689,7 +37579,7 @@ msgstr "Univerzalna zamjena. Najniža kvaliteta, ali radi svugdje." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Nepoznato" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Nepoznata pozivnica" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Nepoznata vrsta poruke" @@ -37893,10 +37783,10 @@ msgstr "Poništi utišavanje" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Uključi zvuk" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Samo nepročitane izravne poruke" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Broj nepročitanih poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Nepročitani inventar poklona" @@ -38267,10 +38157,20 @@ msgstr "Ažurirajte {productName} da biste vidjeli ovu poruku." msgid "Update app" msgstr "Ažuriraj aplikaciju" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Dostupno je ažuriranje" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Ažuriraj moj status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Ažuriraj sada" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Ažurirana pravila" msgid "Updated saved media" msgstr "Ažurirani spremljeni mediji" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Stanje ažuriranja" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Prilagođeni URL može sadržavati samo alfanumeričke znakove i unutarnje crtice." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Odricanje od odgovornosti za prilagođeni URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Provjera i prepreke za članstvo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Prepreka za provjeru" @@ -39438,7 +39333,7 @@ msgstr "Živost" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Videozapis" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Pregled videozapisa" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Napredak videozapisa" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Postavke videa" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Sličica videozapisa" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Značka Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID značke Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Potvrda glasovne veze" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Otklanjanje pogrešaka glasovne veze" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Glasovna poruka" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Reproduktor glasovnih poruka" @@ -40500,11 +40395,6 @@ msgstr "Pretraživanje weba" msgid "Web search provider" msgstr "Davatelj web pretraživanja" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web-ažuriranje spremno" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Opa, ovo je previše" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Bit će otkazano" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zumiranje" diff --git a/fluxer_app/src/features/i18n/locales/hu/messages.po b/fluxer_app/src/features/i18n/locales/hu/messages.po index 42fdcba43..75f769ccf 100644 --- a/fluxer_app/src/features/i18n/locales/hu/messages.po +++ b/fluxer_app/src/features/i18n/locales/hu/messages.po @@ -1093,7 +1093,7 @@ msgstr "Ez a csatorna követőinek száma: {count, plural, one {# csatorna köve msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# közösség található} other {# közösség található}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# közösség átmenetileg nem elérhető egy „fluxuskondenzátor” meghibásodása miatt.} other {# közösség átmenetileg nem elérhető egy „fluxuskondenzátor” meghibásodása miatt.}}" @@ -1884,16 +1884,16 @@ msgstr "A(z) {productName} nem tudja biztonságosan elindítani ennek az alkalma msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "A(z) {productName} nem tud hardveres kódolót használni ehhez, ezért a processzorodat fogja használni." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "A(z) {productName} bezár, telepíti a frissítést, majd újra megnyílik." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "A(z) {productName} nem tudta elérni a frissítési szolgáltatást. Ellenőrizd a kapcsolatodat, és próbáld újra." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "A(z) {productName} nem tudott újraindulni a letöltött frissítéssel. Próbáld újra a frissítés gombbal." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "állomásnév, pl. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Elérhető egy frissítés az asztali Linux-alkalmazáshoz. Válaszd ki a rendszeredhez megfelelő csomagformátumot, és a(z) {productName} helyileg menti a csomagot." @@ -4597,11 +4597,6 @@ msgstr "Bejövő hívás fogadása" msgid "Any key" msgstr "Bármely billentyű" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Bármely frissítő készen áll" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Hangcsomagvesztés:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Hanglejátszó" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Hangfeldolgozás (beszédkiemelés)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Lejátszási pozíció" @@ -5551,7 +5546,7 @@ msgstr "AV1 (külön engedélyezést igényel)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Elérhető" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Kitiltások" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Korlát visszaszámlálás" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Számlázás" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Számlázási ciklus" @@ -6867,7 +6862,7 @@ msgstr "Ide nem tölthetsz fel fájlokat" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Lezárta a szálat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Feltöltés felhőbe" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Üzenetmező fókusza" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Tömörítés" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nem sikerült módosítani az árat" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nem sikerült frissítéseket keresni" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nem sikerült létrehozni a helyreállító csomagot. Később is létrehozhatsz egyet a fiókbeállításaidban." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Nem sikerült körbevágni a képet" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nem sikerült törölni az üzeneteket" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nem sikerült letölteni az asztali frissítést" @@ -10841,11 +10836,6 @@ msgstr "Nem sikerült elindítani a fizetést" msgid "Couldn't start the connection" msgstr "Nem sikerült elindítani a kapcsolatot" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nem sikerült elindítani az asztali frissítést" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Meghívó hátterének körbevágása" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Vágás előnézete" @@ -11343,12 +11333,12 @@ msgstr "Profil borítóképének körbevágása" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "A körbevágott kép túl nagy. Válassz kisebb területet vagy kisebb fájlt (max. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Kivágás {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "A moderátorok kikapcsolták a hangot" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB csomag" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Asztali alkalmazás" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Az asztali alkalmazás naprakész" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Asztali indítás" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Elérhető a(z) {version} asztali frissítés. Válassz Linux-csomagot." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Asztali frissítés érhető el" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Asztali frissítés érhető el. Válassz Linux-csomagot." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Asztali alkalmazás frissítése kész" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "A(z) {version} asztali verzió letöltődött. A telepítés befejezéséhez indítsd újra a(z) {productName} alkalmazást." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Fejlesztői mód" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Fejlesztői opció" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Fejlesztői eszközök nem érhetők el" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Fejlesztői build" @@ -13604,26 +13584,6 @@ msgstr "Letöltés gomb" msgid "Download desktop app" msgstr "Asztali alkalmazás letöltése" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Asztali frissítés letöltése" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Asztali frissítés letöltése ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Asztali frissítés letöltése ({version})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Asztali frissítés letöltése: {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Exportálás letöltése" @@ -13688,26 +13648,6 @@ msgstr "Töltsd le a forráskód-térképeket, hogy a híváskövetések és a f msgid "Download video" msgstr "Videó letöltése" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Asztali frissítés letöltése {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Asztali frissítés letöltése: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Asztali frissítés letöltése: {percent}% ({formatBytes} / {formatBytes2}, {formatBytes3}/mp)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Asztali frissítés letöltése…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-mail-cím ellenőrzése szükséges" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail-cím megerősítve" @@ -15966,7 +15906,7 @@ msgstr "Funkció átmenetileg letiltva" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funkciók" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Kényszerített engedélyezés" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Üzenetbetöltések hibájának kényszerítése" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Üzenetküldések sikertelenségének kényszerítése" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "GIF-választó betöltésének kényszerítése" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Betöltési váz kényszerített megjelenítése" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Média kezelése felnőtt tartalomként" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "{permissionName} jogosultság hiányának szimulálása" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Profiladat-figyelmeztetés kényszerítése" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Profilvázak kényszerítése" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Kényszerített megjelenítés" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Egyéni meghívólinkre vonatkozó figyelmeztetés kényszerített megjelenítése" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Hangkapcsolat kényszerített megjelenítése" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Lassú mód aktív állapotának kényszerítése" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Ismeretlen üzenettípus kényszerítése" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Frissítés kész állapotának kényszerítése" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Továbbítás" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Előre {defaultSeekAmount} másodperccel" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Kód generálása…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Földrajzi korlátozást jelző fedőréteg" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-beállítások" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-választó betöltése" @@ -17226,14 +17161,14 @@ msgstr "Ajándékkódok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Ajándék időtartama" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Ajándékok" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Az ajándék nem található" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Ajándék beváltva" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Tartalmazza" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Vásárolt már" @@ -17892,7 +17827,7 @@ msgstr "Szív" msgid "Hebrew" msgstr "Héber" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Magasság" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Telepítsd az új alkalmazást" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Telepítve" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Telepített verzió: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Asztali frissítés telepítése ({version})…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Asztali frissítés telepítése…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Késleltetési grafikon" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux alapértelmezett" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-csomag" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Előfizetés kezelése" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Asztali alkalmazás manuális frissítése" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Felnőtt tartalom és tartalmi figyelmeztetések" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Felnőtt tartalmú csatorna hozzáférési korlátozása" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "A felnőtt tartalomhoz való hozzáférés ellenőrzése jelenleg csak az Egyesült Királyságban érhető el." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Felnőtt médiatartalom hozzáférési korlátozása" @@ -22888,13 +22813,13 @@ msgstr "Némítás" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Hang némítása" @@ -23316,16 +23241,6 @@ msgstr "Felolvasás" msgid "Native title bar" msgstr "Natív címsor" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Natív frissítés állapota" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Natív frissítő készen áll" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Hálózati hiba" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Hálózat és teljesítmény" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Új felhasználók jelenleg nem tudnak csatlakozni. Fiókot továbbra is létrehozhatsz, vagy bejelentkezhetsz, majd később újra megnyithatod ezt a linket." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Új verzió" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Nincs {attachFilesPermission} jogosultság" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Nincs {sendMessagesPermission} jogosultság" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Nincs leírás." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nem érhető el asztali frissítés." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Nincsenek webhookok" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Alkalmazáson belüli bejelentések küldésének szimulálása" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Dátumválasztó megnyitása" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Asztali letöltések megnyitása" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Beállítások megnyitása" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Szoftverközpont megnyitása" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Felhasználói menü megnyitása ehhez: {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Videó megnyitása" @@ -26558,9 +26473,9 @@ msgstr "Kijelölt rész lejátszása" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Videó lejátszása" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Prémium előnyök letiltva" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Prémium tagság kezdete" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Prémium állapot visszaállítva a háttérrendszeren." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Prémium típus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Prémium eddig érvényes" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Előkészítés" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Profil testreszabási űrlap" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Profiladatokra vonatkozó figyelmeztetés" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profil adatvédelme" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profilvázak" @@ -28223,18 +28138,13 @@ msgstr "Újratöltés" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Töltsd újra a(z) {PRODUCT_NAME} alkalmazást a motorváltás teljes érvényesítéséhez. Az alkalmazáson belüli és a rendszer helyesírás-ellenőrzője közötti váltás megköveteli a megjelenítő újratöltését, mert az Electron futás közben nem tud szolgáltatót váltani." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Frissítsd a {productName} alkalmazást az új modulok használatához" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Töltsd újra a(z) {productName} alkalmazást a webes frissítés használatához" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Töltsd újra a(z) {productName} alkalmazást a(z) {version} webes frissítés használatához" @@ -29142,7 +29052,7 @@ msgstr "Újraküldve" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Visszaállítás" @@ -29475,26 +29385,11 @@ msgstr "A küldő szándékának tiszteletben tartása, figyelmeztetés nélkül msgid "Restart {appName}" msgstr "{appName} újraindítása" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "A(z) {productName} újraindítása" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Indítsd újra a(z) {productName} alkalmazást a módosítás érvényesítéséhez, mert a Linux asztali környezetei futás közben nem tudnak megbízhatóan ikonokat hozzáadni az értesítési területhez vagy eltávolítani onnan." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Indítsd újra a(z) {productName} alkalmazást az asztali frissítés telepítéséhez" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Indítsd újra a(z) {productName} alkalmazást a(z) {version} asztali frissítés telepítéséhez" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Visszavont kitiltás: {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Visszatekerés {defaultSeekAmount} másodperccel" @@ -29866,7 +29761,7 @@ msgstr "Román" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Forgatás az óramutató járásával megegyező irányba" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Sorok száma oldalanként" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM csomag" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Saját üzemeltetés beállítása" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Saját üzemeltetésű mód" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Saját üzemeltetésű mód felülbírálása" @@ -32212,8 +32107,8 @@ msgstr "Saját képernyőmegosztásom megjelenítése" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Saját gépelésjelzőm megjelenítése" @@ -32675,7 +32570,7 @@ msgstr "Kihagyás" msgid "Skip \"Mark all as read\" confirmation" msgstr "„Összes megjelölése olvasottként” megerősítés kihagyása" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Körbevágás kihagyása" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Külső linkre figyelmeztetés kihagyása minden domainhez" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Az alkalmazáson belüli bejelentés beküldésekor kihagyja a hálózati kérést. A folyamat így is a sikert jelző képernyőre lép, hogy kipróbálhasd a felületet, de valójában semmit sem küld el a biztonsági csapatnak." @@ -32752,8 +32647,8 @@ msgstr "Szlovénia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Lassú mellékletfeltöltés" @@ -32769,29 +32664,29 @@ msgstr "Lassíts – várj egy pillanatot, mielőtt újra megpróbálnád." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Lassú üzenetszerkesztés" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Lassú üzenetbetöltés" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Lassú üzenetküldés" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Lassú profilbetöltés" @@ -32807,7 +32702,7 @@ msgstr "Lassú mód · hátralévő várakozás: {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Lassú mód aktív" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "A lassú mód {durationLabel} értékre van állítva. Várj, mielőtt újabb üzenetet küldenél." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Lassú mód hátralévő ideje" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Értesítési terület" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Rendszer által kezelt telepítés" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Koppints jegyzet hozzáadásához" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz archívum" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Lehet, hogy a keresett közösséget törölték, vagy nincs hozzáférésed." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Nem sikerült letölteni az asztali frissítést. Próbáld újra a frissítés gombbal, ha stabil a kapcsolatod." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Az asztali frissítés letöltődött. A telepítés befejezéséhez indítsd újra a(z) {productName} alkalmazást." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "A letöltött fájl a számítógépedre mentve. Telepítsd a szokásos csomagkezelőddel." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Ez a művelet nem vonható vissza. Minden kapcsolódó adat, beleértve a bot felhasználót is, véglegesen törlődik." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ez az animáció túl hosszú vagy túl nagy a vágáshoz. Próbálkozz rövidebb vagy kisebb fájllal." @@ -35549,7 +35439,7 @@ msgstr "Ez a bot rendszergazdai jogosultságot kér. Csak akkor add meg, ha telj #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Ez a böngésző nem tud animált {avifFormatLabel} fájlokat vágni. Tölts fel inkább GIF vagy WebP fájlt." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Ez a böngészőkonzol egy fejlesztői eszköz." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "A böngészőben ki van kapcsolva a WebAssembly, ezért az animált képek nem vághatók le." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Ez a beszélgetés már nem elérhető." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Ebben az asztali kiadásban a(z) {productName} alkalmazáson belül nem telepíthetők frissítések. Töltsd le a legújabb asztali telepítőt." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Ez a grafikus környezet nem támogatja a rendszerszintű billentyűparancsokat. A billentyűparancsok továbbra is működnek, amíg a(z) {productName} fókuszban van." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ez a fejlesztői kiadás nem tudja frissíteni magát. Tölts le egy asztali telepítőt a frissítési folyamat kipróbálásához." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Ez az átadási kód lejárt. A folytatáshoz hozz létre újat." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "A kép nem olvasható be. Lehet, hogy sérült." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Ezt a telepítést a rendszered kezeli. Frissítsd a(z) {productName} alkalmazást a szoftverközpontból vagy a csomagkezelőből." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "A küszöb dátuma nem lehet a jövőben" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title} bélyegképe" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Címsor" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Címsor platform" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Kamera be/ki" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Vezérlők megjelenítése/elrejtése" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipográfia" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Felhasználói felület összetevői" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Egyesült Királyság (földrajzi)" @@ -37528,7 +37418,7 @@ msgstr "Besorolatlan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Befejezetlen regisztrációjú fiók" @@ -37689,7 +37579,7 @@ msgstr "Univerzális tartalék. Legalacsonyabb minőség, de mindenhol működik #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Ismeretlen" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Ismeretlen meghívó" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Ismeretlen üzenettípus" @@ -37893,10 +37783,10 @@ msgstr "Némítás feloldása" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Hang némításának feloldása" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Csak olvasatlan DM-ek" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Olvasatlan ajándékok száma" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Olvasatlan ajándékok" @@ -38267,10 +38157,20 @@ msgstr "Az üzenet megtekintéséhez frissítsd a(z) {productName} alkalmazást. msgid "Update app" msgstr "Alkalmazás frissítése" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Frissítés érhető el" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Állapotom frissítése" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Frissítés most" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Frissített szabályzatok" msgid "Updated saved media" msgstr "Mentett média frissítve" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Frissítő állapota" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Az egyéni meghívólink azonosítója csak betűket, számokat és belső kötőjeleket tartalmazhat." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Egyéni meghívólinkre vonatkozó tájékoztatás" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Ellenőrzés és tagsági korlátok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Ellenőrzési korlát" @@ -39438,7 +39333,7 @@ msgstr "Élénkség" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Videó" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videó előnézet" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videó előrehaladása" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videóbeállítások" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videó bélyegkép" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-jelvény" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary jelvényazonosító" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Hangkapcsolat megerősítése" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Hangkapcsolat hibakeresése" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Hangüzenet" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Hangüzenet-lejátszó" @@ -40500,11 +40395,6 @@ msgstr "Webes keresés" msgid "Web search provider" msgstr "Webes keresésszolgáltató" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Webes frissítő kész" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Hú, ez durva" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Lemondás ütemezve" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Nagyítás" diff --git a/fluxer_app/src/features/i18n/locales/id/messages.po b/fluxer_app/src/features/i18n/locales/id/messages.po index c66609233..d8e8f9c72 100644 --- a/fluxer_app/src/features/i18n/locales/id/messages.po +++ b/fluxer_app/src/features/i18n/locales/id/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanal mengikuti} other {# kanal mengikuti}} kanal msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# komunitas ditemukan} other {# komunitas ditemukan}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# komunitas sementara tidak tersedia karena kerusakan kapasitor fluks.} other {# komunitas sementara tidak tersedia karena kerusakan kapasitor fluks.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} tidak dapat memulai rute terisolasi yang aman untuk audio msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} tidak dapat menggunakan pengode perangkat keras untuk ini, jadi akan menggunakan CPU kamu." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} akan ditutup, menginstal pembaruan, dan terbuka kembali." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} tidak dapat terhubung ke layanan pembaruan. Periksa koneksimu dan coba lagi." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} tidak dapat memulai ulang ke pembaruan yang telah diunduh. Coba lagi dari tombol pembaruan." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "nama host, mis. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Pembaruan desktop untuk Linux tersedia. Pilih format paket untuk sistem ini dan {productName} akan menyimpannya secara lokal." @@ -4597,11 +4597,6 @@ msgstr "Jawab panggilan masuk" msgid "Any key" msgstr "Tombol apa saja" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Pembaruan apa pun siap" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Kehilangan paket audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Pemutar audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Pemrosesan audio (suara terfokus)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progres audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (perlu diaktifkan)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Tersedia" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Pemblokiran" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Hitung mundur pembatas" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Penagihan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Siklus penagihan" @@ -6867,7 +6862,7 @@ msgstr "Tidak bisa mengunggah file di sini" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Menutup utas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Unggah ke cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus kotak pesan" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Mengompres" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Tidak dapat mengubah hargamu" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Tidak dapat memeriksa pembaruan" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Tidak dapat membuat kit pemulihan Anda. Anda dapat membuatnya nanti di pengaturan akun Anda." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Tidak dapat memotong gambar" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Tidak dapat menghapus pesanmu" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Tidak dapat mengunduh pembaruan desktop" @@ -10841,11 +10836,6 @@ msgstr "Tidak dapat memulai pembayaran" msgid "Couldn't start the connection" msgstr "Tidak dapat memulai koneksi" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Tidak dapat memulai pembaruan desktop" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Pangkas latar belakang undangan" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Pratinjau pangkasan" @@ -11343,12 +11333,12 @@ msgstr "Pangkas banner profil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Gambar yang dipotong terlalu besar. Pilih area yang lebih kecil atau file yang lebih kecil (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Memotong {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Suara masuk dibisukan oleh moderator" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Paket DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplikasi desktop" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Aplikasi desktop sudah versi terbaru" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Mulai di desktop" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Pembaruan desktop {version} tersedia. Pilih paket Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Pembaruan desktop tersedia" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Pembaruan desktop tersedia. Pilih paket Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Pembaruan desktop siap" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Versi desktop {version} telah diunduh. Mulai ulang {productName} untuk menyelesaikan penginstalan." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Mode pengembang" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opsi pengembang" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Alat pengembang tidak tersedia" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Versi pengembangan" @@ -13604,26 +13584,6 @@ msgstr "Tombol unduh" msgid "Download desktop app" msgstr "Unduh aplikasi desktop" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Unduh pembaruan desktop" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Unduh pembaruan desktop ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Unduh pembaruan desktop {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Unduh pembaruan desktop {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Unduh ekspor" @@ -13688,26 +13648,6 @@ msgstr "Unduh peta sumber agar jejak tumpukan dan alat pengembang menunjuk ke su msgid "Download video" msgstr "Unduh video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Mengunduh pembaruan desktop {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Mengunduh pembaruan desktop: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Mengunduh pembaruan desktop: {percent}% ({formatBytes} / {formatBytes2} dengan {formatBytes3}/dtk)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Mengunduh pembaruan desktop…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Verifikasi email diperlukan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Email terverifikasi" @@ -15966,7 +15906,7 @@ msgstr "Fitur dinonaktifkan sementara" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Fitur" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Paksa diaktifkan" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Paksa pesan gagal dimuat" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Paksa pengiriman pesan gagal" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Paksa pemuatan pemilih GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Paksa kerangka pemuatan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Paksa media dewasa" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Paksa tidak ada izin {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Paksa peringatan data profil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Paksa kerangka profil" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Paksa tampilkan" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Paksa tampilkan penafian URL kustom" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Paksa tampilkan koneksi suara" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Paksa mode lambat aktif" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Paksa jenis pesan tidak dikenal" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Paksa pembaruan siap" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Teruskan" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Maju {defaultSeekAmount} detik" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Membuat kode…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Overlay blokir geo" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opsi GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Pemilih GIF sedang memuat" @@ -17226,14 +17161,14 @@ msgstr "Kode hadiah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durasi hadiah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventaris hadiah" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Hadiah tidak ditemukan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Hadiah ditukarkan" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Berisi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Pernah membeli" @@ -17892,7 +17827,7 @@ msgstr "Hati" msgid "Hebrew" msgstr "Ibrani" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Tinggi" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instal aplikasi baru" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Terinstal" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versi terinstal: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Menginstal pembaruan desktop {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Menginstal pembaruan desktop…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Grafik latensi" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Default Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Paket Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Kelola langgananmu" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Pembaruan desktop manual" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Konten dewasa & peringatan konten" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Gerbang saluran konten dewasa" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Pemeriksaan konten dewasa saat ini hanya tersedia di Inggris Raya." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Gerbang media konten dewasa" @@ -22888,13 +22813,13 @@ msgstr "Bisukan" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Matikan suara" @@ -23316,16 +23241,6 @@ msgstr "Narasi" msgid "Native title bar" msgstr "Bilah judul bawaan" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progres pembaruan native" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Pembaru native siap" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Kesalahan jaringan" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Jaringan dan performa" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Pengguna baru tidak dapat bergabung sekarang. Kamu masih bisa membuat akun atau masuk, lalu coba tautan ini lagi nanti." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Versi baru" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Tidak" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Tidak ada izin {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Tidak ada izin {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Tidak ada deskripsi." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Tidak ada pembaruan desktop yang tersedia." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Tidak ada webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Laporan dalam aplikasi no-op" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Buka pemilih tanggal" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Buka unduhan desktop" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Buka pengaturan" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Buka pusat perangkat lunak" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Buka menu pengguna untuk {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Buka video" @@ -26558,9 +26473,9 @@ msgstr "Putar bagian terpilih" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Putar video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Keuntungan premium dinonaktifkan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium sejak tanggal" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Status premium di-reset di backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Jenis premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium hingga tanggal" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Mempersiapkan" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulir kustomisasi profil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Peringatan data profil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privasi profil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Kerangka profil" @@ -28223,18 +28138,13 @@ msgstr "Muat ulang" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Muat ulang {PRODUCT_NAME} untuk menerapkan perubahan mesin sepenuhnya. Beralih antara pemeriksa ejaan dalam aplikasi dan sistem memerlukan pemuatan ulang perender karena Electron tidak dapat menukar penyedia saat sedang berjalan." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Muat ulang {productName} untuk menggunakan modul yang diperbarui" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Muat ulang {productName} untuk menggunakan pembaruan web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Muat ulang {productName} untuk menggunakan pembaruan web {version}" @@ -29142,7 +29052,7 @@ msgstr "Dikirim ulang" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Setel ulang" @@ -29475,26 +29385,11 @@ msgstr "Ikuti keinginan pengirim, tanpa peringatan saat mereka mengaktifkan atau msgid "Restart {appName}" msgstr "Mulai ulang {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Mulai ulang {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Mulai ulang {productName} agar perubahan ini diterapkan karena desktop Linux tidak dapat menambah atau menghapus ikon baki saat runtime secara andal." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Mulai ulang {productName} untuk memasang pembaruan desktop" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Mulai ulang {productName} untuk memasang pembaruan desktop {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Pemblokiran untuk {0} dicabut" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Mundur {defaultSeekAmount} detik" @@ -29866,7 +29761,7 @@ msgstr "Rumania" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Putar searah jarum jam" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Baris per halaman" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Paket RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Penyiapan hosting mandiri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Mode hosting mandiri" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Timpa mode hosting mandiri" @@ -32212,8 +32107,8 @@ msgstr "Tampilkan berbagi layar saya" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Tampilkan saya mengetik" @@ -32675,7 +32570,7 @@ msgstr "Lewati" msgid "Skip \"Mark all as read\" confirmation" msgstr "Lewati konfirmasi \"Tandai semua sudah dibaca\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Lewati pemotongan" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Lewati peringatan tautan eksternal untuk semua domain" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Lewati panggilan jaringan saat laporan dalam aplikasi dikirim. Alur tetap berlanjut ke layar sukses sehingga kamu dapat menguji UI, tetapi tidak ada yang benar-benar dikirim ke tim keamanan." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Unggah lampiran lambat" @@ -32769,29 +32664,29 @@ msgstr "Pelan-pelan — tunggu sebentar sebelum mencoba lagi." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Edit pesan lambat" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Muat pesan lambat" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Kirim pesan lambat" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Muat profil lambat" @@ -32807,7 +32702,7 @@ msgstr "Mode lambat · tunggu {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Mode lambat aktif" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Mode lambat diatur ke {durationLabel}. Tunggu sebelum mengirim pesan lagi." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Sisa mode lambat" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Baki sistem" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalasi yang dikelola sistem" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Ketuk untuk menambahkan catatan" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Arsip tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Komunitas yang kamu cari mungkin sudah dihapus atau kamu tidak punya akses ke sana." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Pembaruan desktop tidak dapat diunduh. Coba lagi dari tombol pembaruan saat koneksimu stabil." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Pembaruan desktop telah diunduh. Mulai ulang {productName} untuk menyelesaikan penginstalan." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "File yang diunduh disimpan di komputermu. Instal dengan manajer paket yang biasa kamu pakai." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Tindakan ini tidak dapat dibatalkan. Semua data terkait, termasuk pengguna bot, akan dihapus secara permanen." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Animasi ini terlalu panjang atau terlalu besar untuk dipotong. Coba file yang lebih pendek atau lebih kecil." @@ -35549,7 +35439,7 @@ msgstr "Bot ini meminta izin administrator. Berikan izin hanya jika kamu sepenuh #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Peramban ini tidak dapat memotong file {avifFormatLabel} animasi. Unggah GIF atau WebP sebagai gantinya." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Konsol browser ini adalah alat pengembang." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Peramban ini mematikan WebAssembly, sehingga gambar animasi tidak dapat dipotong." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Percakapan ini sudah tidak tersedia." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Versi desktop ini tidak dapat menginstal pembaruan di dalam {productName}. Unduh penginstal desktop terbaru sebagai gantinya." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Desktop ini tidak menyediakan pintasan di seluruh sistem. Pintasan tetap berfungsi saat {productName} dalam fokus." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Versi pengembangan ini tidak dapat memperbarui dirinya sendiri. Unduh penginstal desktop untuk menguji alur pembaruan." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Kode serah terima ini sudah kedaluwarsa. Buat yang baru untuk melanjutkan." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Gambar ini tidak dapat dibaca. Mungkin rusak." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Instalasi ini dikelola oleh sistemmu. Perbarui {productName} lewat pusat perangkat lunak atau manajer paket sistemmu." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Tanggal batas tidak boleh di masa mendatang" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Gambar mini untuk {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Bilah judul" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Platform bilah judul" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Alihkan kamera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Alihkan kontrol" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografi" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Komponen UI" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Geo Inggris Raya" @@ -37528,7 +37418,7 @@ msgstr "Tanpa kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Akun belum diklaim" @@ -37689,7 +37579,7 @@ msgstr "Cadangan universal. Kualitas terendah, tapi berfungsi di mana saja." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Tidak diketahui" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Undangan tidak dikenal" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Jenis pesan tidak diketahui" @@ -37893,10 +37783,10 @@ msgstr "Bunyikan" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Aktifkan suara" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Hanya DM belum dibaca" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Jumlah hadiah belum dibaca" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventaris hadiah belum dibaca" @@ -38267,10 +38157,20 @@ msgstr "Perbarui {productName} untuk melihat pesan ini." msgid "Update app" msgstr "Perbarui aplikasi" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Pembaruan tersedia" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Perbarui status saya" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Perbarui sekarang" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Kebijakan yang diperbarui" msgid "Updated saved media" msgstr "Media tersimpan diperbarui" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Status pembaru" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "URL kustom hanya dapat berisi karakter alfanumerik dan tanda hubung internal." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Penafian URL kustom" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Pembatas verifikasi & keanggotaan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Pembatas verifikasi" @@ -39438,7 +39333,7 @@ msgstr "Kecerahan warna" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Pratinjau video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progres video" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Pengaturan video" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Gambar mini video" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Lencana Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID lencana Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Konfirmasi koneksi suara" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Debug koneksi suara" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Pesan suara" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Pemutar pesan suara" @@ -40500,11 +40395,6 @@ msgstr "Pencarian web" msgid "Web search provider" msgstr "Penyedia pencarian web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Pembaruan web siap" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Wah, berat banget nih" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Akan dibatalkan" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/it/messages.po b/fluxer_app/src/features/i18n/locales/it/messages.po index 3a5b69c56..96b42a37c 100644 --- a/fluxer_app/src/features/i18n/locales/it/messages.po +++ b/fluxer_app/src/features/i18n/locales/it/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# canale segue} other {# canali seguono}} questo ca msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# community trovata} other {# community trovate}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# community è temporaneamente non disponibile a causa di un malfunzionamento del condensatore di flusso.} other {# community sono temporaneamente non disponibili a causa di un malfunzionamento del condensatore di flusso.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} non può avviare in modo sicuro l’acquisizione isolata d msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} non può utilizzare un codificatore hardware, quindi utilizzerà la tua CPU." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} si chiude, installa l'aggiornamento e si riapre." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} non è riuscito a connettersi al servizio di aggiornamento. Verifica la tua connessione e riprova." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} non è riuscito a riavviarsi per installare l'aggiornamento scaricato. Riprova dal pulsante di aggiornamento." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "un nome host, ad es. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "È disponibile un aggiornamento dell’app desktop per Linux. Scegli il formato del pacchetto per questo sistema e {productName} lo salverà localmente." @@ -4597,11 +4597,6 @@ msgstr "Rispondi alla chiamata in arrivo" msgid "Any key" msgstr "Qualsiasi tasto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Almeno un sistema di aggiornamento pronto" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Perdita pacchetti audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Lettore audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Elaborazione audio (voce in evidenza)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Avanzamento audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (richiede attivazione)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponibile" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Ban" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Conto alla rovescia barriera" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Fatturazione" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Ciclo di fatturazione" @@ -6867,7 +6862,7 @@ msgstr "Impossibile caricare file qui" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Thread chiuso" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Caricamento su cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Focus del campo di composizione" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Compressione" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Impossibile cambiare il tuo prezzo" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Impossibile verificare la disponibilità di aggiornamenti" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Impossibile creare il tuo kit di recupero. Potrai crearne uno in seguito nelle impostazioni del tuo account." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Impossibile ritagliare l'immagine" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Impossibile eliminare i tuoi messaggi" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Impossibile scaricare l'aggiornamento desktop" @@ -10841,11 +10836,6 @@ msgstr "Impossibile avviare il pagamento" msgid "Couldn't start the connection" msgstr "Impossibile avviare la connessione" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Impossibile avviare l'aggiornamento desktop" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Ritaglia sfondo invito" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Anteprima ritaglio" @@ -11343,12 +11333,12 @@ msgstr "Ritaglia banner del profilo" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "L'immagine ritagliata è troppo grande. Scegli un'area più piccola o un file più piccolo (max {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Ritagliando il {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Audio disattivato dai moderatori" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Pacchetto DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "App desktop" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "L'app desktop è aggiornata" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Avvio su desktop" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Aggiornamento desktop {version} disponibile. Scegli un pacchetto Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Aggiornamento desktop disponibile" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Aggiornamento desktop disponibile. Scegli un pacchetto Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Aggiornamento desktop pronto" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "È stata scaricata la versione desktop {version}. Riavvia {productName} per completare l'installazione." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Modalità sviluppatore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opzione sviluppatore" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Strumenti per sviluppatori non disponibili" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Build di sviluppo" @@ -13604,26 +13584,6 @@ msgstr "Pulsante di download" msgid "Download desktop app" msgstr "Scarica l'app desktop" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Scarica l'aggiornamento desktop" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Scarica l'aggiornamento desktop ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Scarica l'aggiornamento desktop {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Scarica l'aggiornamento desktop {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Scarica l'esportazione" @@ -13688,26 +13648,6 @@ msgstr "Scarica le mappe sorgente in modo che le tracce dello stack e gli strume msgid "Download video" msgstr "Scarica video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Download aggiornamento desktop {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Download aggiornamento desktop: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Download aggiornamento desktop: {percent}% ({formatBytes} / {formatBytes2} a {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Download aggiornamento desktop…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Verifica email richiesta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Email verificata" @@ -15966,7 +15906,7 @@ msgstr "Funzione temporaneamente disabilitata" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funzionalità" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Attivazione forzata" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forza errori nel caricamento dei messaggi" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forza errori nell’invio dei messaggi" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forza caricamento selettore GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forza il segnaposto di caricamento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forza la classificazione dei media come contenuti per adulti" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forza nessun permesso {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forza avviso dati profilo" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forza i segnaposto di caricamento del profilo" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forza visualizzazione" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forza la visualizzazione dell'avviso sull'URL personalizzato" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forza visualizzazione connessione vocale" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Modalità lenta forzata attiva" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forza tipo di messaggio sconosciuto" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forza aggiornamento pronto" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Inoltra" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avanti di {defaultSeekAmount} secondi" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generazione codice…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Sovrapposizione blocco geografico" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opzioni GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Caricamento del selettore GIF" @@ -17226,14 +17161,14 @@ msgstr "Codici regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durata regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario regali" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Regalo non trovato" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Regalo riscattato" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Contiene" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ha effettuato almeno un acquisto" @@ -17892,7 +17827,7 @@ msgstr "Cuore" msgid "Hebrew" msgstr "Ebraico" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Altezza" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Installa la nuova app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installata" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versione installata: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installazione aggiornamento desktop {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installazione aggiornamento desktop…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Grafico latenza" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux (predefinito)" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Pacchetto Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Gestisci il tuo abbonamento" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Aggiornamento manuale dell'app desktop" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Contenuti per adulti e avvisi sui contenuti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Blocco di accesso ai canali per adulti" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "I controlli dei contenuti per adulti sono attualmente disponibili solo nel Regno Unito." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Blocco di accesso ai media per adulti" @@ -22888,13 +22813,13 @@ msgstr "Silenzia" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Disattiva audio" @@ -23316,16 +23241,6 @@ msgstr "Narrazione" msgid "Native title bar" msgstr "Barra del titolo nativa" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Avanzamento aggiornamento nativo" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Sistema di aggiornamento nativo pronto" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Errore di rete" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Rete e prestazioni" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "I nuovi utenti non possono entrare nella community in questo momento. Puoi comunque creare un account o accedere, poi riprovare questo link più tardi." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nuova versione" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Nessun permesso {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Nessun permesso {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Nessuna descrizione." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nessun aggiornamento desktop disponibile." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Nessun webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Segnalazioni in-app senza effetto" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Apri selettore data" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Apri download desktop" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Apri impostazioni" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Apri il centro software" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Apri il menu utente per {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Apri video" @@ -26558,9 +26473,9 @@ msgstr "Riproduci selezione" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Riproduci video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Vantaggi Premium disabilitati" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium dal" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Stato Premium reimpostato sul backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Tipo di Premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium fino al" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparazione" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Modulo di personalizzazione del profilo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Avviso dati profilo" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privacy del profilo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Segnaposto di caricamento del profilo" @@ -28223,18 +28138,13 @@ msgstr "Ricarica" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Ricarica {PRODUCT_NAME} per applicare completamente il cambio di motore. Il passaggio tra il controllo ortografico in-app e quello di sistema richiede il ricaricamento del renderer, perché Electron non può cambiare provider durante l’esecuzione." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Ricarica {productName} per usare i moduli aggiornati" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Ricarica {productName} per applicare l'aggiornamento dal web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Ricarica {productName} per utilizzare l'aggiornamento web {version}" @@ -29142,7 +29052,7 @@ msgstr "Inviato di nuovo" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Reimposta" @@ -29475,26 +29385,11 @@ msgstr "Rispetta l'intenzione del mittente, senza avvisi quando attiva o disatti msgid "Restart {appName}" msgstr "Riavvia {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Riavvia {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Riavvia {productName} affinché questa modifica abbia effetto, perché i desktop Linux non possono aggiungere o rimuovere le icone dell’area di notifica in modo affidabile durante l’esecuzione." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Riavvia {productName} per installare l'aggiornamento per desktop" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Riavvia {productName} per installare l'aggiornamento per desktop {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Ban revocato per {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Riavvolgi di {defaultSeekAmount} secondi" @@ -29866,7 +29761,7 @@ msgstr "Rumeno" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Ruota in senso orario" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Righe per pagina" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Pacchetto RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configurazione self-hosted" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Modalità self-hosted" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Forza modalità self-hosted" @@ -32212,8 +32107,8 @@ msgstr "Mostra la mia condivisione schermo" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Mostra il mio indicatore di digitazione" @@ -32675,7 +32570,7 @@ msgstr "Salta" msgid "Skip \"Mark all as read\" confirmation" msgstr "Salta la conferma di \"Segna tutti come letti\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Salta ritaglio" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Salta l'avviso per i link esterni per tutti i domini" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Salta la chiamata di rete quando viene inviata una segnalazione in-app. Il flusso avanza comunque alla schermata di successo, così puoi testare l'interfaccia utente, ma nulla viene effettivamente inviato al team di sicurezza." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Caricamento lento allegati" @@ -32769,29 +32664,29 @@ msgstr "Rallenta: attendi un momento prima di riprovare." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Modifica messaggio lenta" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Caricamento lento dei messaggi" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Invio lento dei messaggi" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Caricamento lento del profilo" @@ -32807,7 +32702,7 @@ msgstr "Modalità lenta · attendi {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modalità lenta attiva" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "La modalità lenta è impostata a {durationLabel}. Attendi prima di inviare un altro messaggio." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Tempo rimanente per la modalità lenta" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Area di notifica" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Installazione gestita dal sistema" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tocca per aggiungere una nota" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archivio tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "La community che cerchi potrebbe essere stata eliminata o potresti non avere accesso." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Non è stato possibile scaricare l'aggiornamento desktop. Riprova dal pulsante di aggiornamento quando la tua connessione sarà stabile." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "L'aggiornamento per il desktop è stato scaricato. Riavvia {productName} per completare l'installazione." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Il file scaricato viene salvato sul tuo computer. Installalo con il tuo normale gestore di pacchetti." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Questa azione non può essere annullata. Tutti i dati associati, incluso l'utente bot, verranno eliminati definitivamente." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Questa animazione è troppo lunga o troppo grande per essere ritagliata. Prova un file più corto o più piccolo." @@ -35549,7 +35439,7 @@ msgstr "Questo bot richiede i permessi di amministratore. Concedili solo se ti f #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Questo browser non può ritagliare file animati {avifFormatLabel}. Carica invece una GIF o WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Questa console del browser è uno strumento per sviluppatori." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Il tuo browser ha disattivato WebAssembly, quindi le immagini animate non possono essere ritagliate." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Questa conversazione non è più disponibile." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Questa versione per desktop non può installare gli aggiornamenti all'interno di {productName}. Scarica invece l'ultima versione dell'installer per desktop." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Questo desktop non offre scorciatoie a livello di sistema. Le scorciatoie funzionano comunque quando {productName} è in primo piano." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Questa build di sviluppo non può aggiornarsi automaticamente. Scarica un programma di installazione desktop per testare il flusso di aggiornamento." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Questo codice di trasferimento è scaduto. Generane uno nuovo per continuare." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Impossibile leggere questa immagine. Potrebbe essere danneggiata." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Questa installazione è gestita dal tuo sistema. Aggiorna {productName} tramite il tuo store di applicazioni o gestore pacchetti." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "La data limite non può essere nel futuro" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura di {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Barra del titolo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Piattaforma della barra del titolo" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Attiva/disattiva fotocamera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Mostra/nascondi controlli" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografia" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Componenti dell'interfaccia utente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Geolocalizzazione Regno Unito" @@ -37528,7 +37418,7 @@ msgstr "Senza categoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Account con registrazione incompleta" @@ -37689,7 +37579,7 @@ msgstr "Fallback universale. Qualità più bassa, ma funziona ovunque." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Sconosciuto" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Invito sconosciuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tipo di messaggio sconosciuto" @@ -37893,10 +37783,10 @@ msgstr "Rimuovi silenziamento" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Riattiva audio" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Solo DM non letti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Numero di regali non visti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventario regali con elementi non visti" @@ -38267,10 +38157,20 @@ msgstr "Aggiorna {productName} per visualizzare questo messaggio." msgid "Update app" msgstr "Aggiorna l'app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Aggiornamento disponibile" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Aggiorna il mio stato" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Aggiorna ora" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Norme aggiornate" msgid "Updated saved media" msgstr "Media salvati aggiornati" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Stato aggiornamenti" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "L'URL personalizzato può contenere solo caratteri alfanumerici e trattini interni." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Disclaimer URL personalizzato" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verifica e barriere di accesso" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Blocco verifica" @@ -39438,7 +39333,7 @@ msgstr "Effetto di traslucenza" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Anteprima video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Avanzamento video" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Impostazioni video" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura video" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Badge Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID del badge Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Conferma connessione vocale" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Debug connessione vocale" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Messaggio vocale" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Lettore messaggio vocale" @@ -40500,11 +40395,6 @@ msgstr "Ricerca web" msgid "Web search provider" msgstr "Fornitore di ricerca web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Aggiornamento web pronto" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Uhm, è troppo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Disdetta programmata" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/ja/messages.po b/fluxer_app/src/features/i18n/locales/ja/messages.po index 8037ca159..b2cb6882e 100644 --- a/fluxer_app/src/features/i18n/locales/ja/messages.po +++ b/fluxer_app/src/features/i18n/locales/ja/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# チャンネルがフォローしています} ot msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {#件のコミュニティが見つかりました} other {#件のコミュニティが見つかりました}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {#件のコミュニティがフラックスキャパシタの不具合により一時的に利用できません。} other {#件のコミュニティがフラックスキャパシタの不具合により一時的に利用できません。}}" @@ -1884,16 +1884,16 @@ msgstr "{productName}は、このアプリの音声を安全に分離したル msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName}ではハードウェアエンコーダーを使用できないため、CPUが使用されます。" +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName}を終了し、アップデートをインストールしてから再度開きます。" + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName}はアップデートサービスに接続できませんでした。接続を確認して、もう一度お試しください。" -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName}はダウンロード済みのアップデートで再起動できませんでした。アップデートボタンからもう一度お試しください。" - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ホスト名(例: {exampleDomain})" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Linuxデスクトップ版のアップデートが利用可能です。このシステムで使用するパッケージ形式を選択すると、{productName}がファイルをローカルに保存します。" @@ -4597,11 +4597,6 @@ msgstr "着信に応答" msgid "Any key" msgstr "任意のキー" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "いずれかのアップデーターの準備ができました" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "音声パケット損失:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "音声プレーヤー" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "音声処理(話者にフォーカス)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "音声の再生状況" @@ -5551,7 +5546,7 @@ msgstr "AV1(オプトインが必要)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "利用可能" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "BAN" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "バリアカウントダウン" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "支払い" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "請求サイクル" @@ -6867,7 +6862,7 @@ msgstr "ここにファイルをアップロードできません" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "スレッドを閉じました" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "クラウドにアップロード" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "入力欄のフォーカス" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "圧縮中" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "価格を変更できませんでした" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "アップデートを確認できませんでした" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "リカバリーキットを作成できませんでした。後でアカウント設定から作成できます。" #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "画像の切り抜きに失敗しました" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "メッセージを削除できませんでした" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "デスクトップ版のアップデートをダウンロードできませんでした" @@ -10841,11 +10836,6 @@ msgstr "チェックアウトを開始できませんでした" msgid "Couldn't start the connection" msgstr "接続を開始できませんでした" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "デスクトップのアップデートを開始できませんでした" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "招待背景を切り抜き" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "プレビューを切り抜き" @@ -11343,12 +11333,12 @@ msgstr "プロフィールバナーを切り抜き" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "切り抜いた画像が大きすぎます。範囲を狭めるか、小さいファイルを選択してください(最大{maxSizeLabel})。" #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "{percent}%を切り抜き中" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "モデレーターによりスピーカーミュートされています" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEBパッケージ" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "デスクトップアプリ" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "デスクトップアプリは最新です" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "デスクトップ起動" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "デスクトップ版アップデート {version} が利用可能です。Linuxパッケージを選択してください。" @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "デスクトップ版のアップデートがあります" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "デスクトップ版のアップデートがあります。Linuxパッケージを選択してください。" -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "デスクトップ版のアップデートの準備ができました" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "デスクトップ版 {version} がダウンロードされました。{productName} を再起動してインストールを完了してください。" - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "開発者モード" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "開発者向けオプション" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "開発者ツールは利用できません" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "開発ビルド" @@ -13604,26 +13584,6 @@ msgstr "ダウンロードボタン" msgid "Download desktop app" msgstr "デスクトップ版アプリをダウンロード" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "デスクトップ版アップデートをダウンロード" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "デスクトップ版アップデートをダウンロード ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "デスクトップ版アップデート {version} をダウンロード" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "デスクトップ版アップデート {version} をダウンロード ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "エクスポートをダウンロード" @@ -13688,26 +13648,6 @@ msgstr "開発者ツールで実際のソースを指すように、ソースマ msgid "Download video" msgstr "動画をダウンロード" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "デスクトップ版アップデート {version} をダウンロード中: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "デスクトップ版アップデートをダウンロード中: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "デスクトップ版アップデートをダウンロード中: {percent}% ({formatBytes} / {formatBytes2}、{formatBytes3}/秒)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "デスクトップ版アップデートをダウンロード中…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "メールアドレスの認証が必要です" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "メール認証済み" @@ -15966,7 +15906,7 @@ msgstr "この機能は一時的に利用できません" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "機能" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "強制的に有効" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "メッセージの読み込み失敗を強制する" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "メッセージ送信の失敗を強制する" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "GIFピッカーの読み込みを強制する" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "ローディングスケルトンを強制表示" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "成人向けメディアを強制表示" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "{permissionName}の権限がない状態を強制する" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "プロフィールデータの警告を強制表示" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "プロフィールスケルトンを強制" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "強制的に表示" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "カスタムURLの免責事項を常に表示" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "音声接続を強制的に表示" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "スローモードを強制的に有効にする" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "不明なメッセージタイプを強制する" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "アップデートの準備完了を強制" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "転送" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}秒早送り" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "コードを生成中…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "ジオブロックオーバーレイ" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIFオプション" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIFピッカーを読み込み中" @@ -17226,14 +17161,14 @@ msgstr "ギフトコード" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "ギフト期間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "ギフトインベントリ" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "ギフトが見つかりません" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "ギフトを引き換えました" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "含む" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "購入履歴あり" @@ -17892,7 +17827,7 @@ msgstr "ハート" msgid "Hebrew" msgstr "ヘブライ語" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "高さ" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "新しいアプリをインストール" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "インストール済み" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "インストール済みのバージョン: {currentVersion}。" -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "デスクトップ版のアップデート{version}をインストール中…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "デスクトップ版をアップデート中…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "遅延グラフ" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux デフォルト" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linuxパッケージ" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "サブスクリプションを管理" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "デスクトップアプリを手動でアップデート" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "成人向けコンテンツとコンテンツ警告" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "成人向けコンテンツチャンネルゲート" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "成人向けコンテンツの確認は、現在英国でのみご利用いただけます。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "成人向けコンテンツのメディアゲート" @@ -22888,13 +22813,13 @@ msgstr "ミュート" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "音声をミュート" @@ -23316,16 +23241,6 @@ msgstr "ナレーション" msgid "Native title bar" msgstr "ネイティブタイトルバー" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "ネイティブアップデートの進捗" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "ネイティブアップデーターの準備ができました" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "ネットワークエラー" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "ネットワークとパフォーマンス" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "現在、新しいユーザーは参加できません。アカウントを作成するかサインインしてから、後でもう一度このリンクをお試しください。" #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "新しいバージョン" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "いいえ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission}の権限がありません" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission}の権限がありません" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "説明はありません。" #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "デスクトップ版のアップデートはありません。" @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "ウェブフックなし" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "アプリ内報告を無効化" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "日付ピッカーを開く" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "デスクトップ版のダウンロードページを開く" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "設定を開く" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "ソフトウェアセンターを開く" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "{displayName}さんのユーザーメニューを開く" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "動画を開く" @@ -26558,9 +26473,9 @@ msgstr "選択範囲を再生" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "動画を再生" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "プレミアム特典は無効です" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "プレミアム登録日" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "バックエンドでプレミアムステータスをリセットしました。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "プレミアムタイプ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "プレミアム有効期限" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "準備中" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "プロフィール編集フォーム" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "プロフィールデータの警告" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "プロフィールプライバシー" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "プロフィールスケルトン" @@ -28223,18 +28138,13 @@ msgstr "再読み込み" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "エンジンの変更を完全に適用するには、{PRODUCT_NAME}を再読み込みしてください。アプリ内スペルチェックとシステムスペルチェックの切り替えには、Electronが実行中にプロバイダーを切り替えられないため、レンダラーの再読み込みが必要です。" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "{productName} をリロードして、更新されたモジュールを使用してください" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "{productName}を再読み込みしてWebアップデートを適用してください" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "{productName}を再読み込みしてWebアップデート{version}を適用してください" @@ -29142,7 +29052,7 @@ msgstr "再送しました" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "リセット" @@ -29475,26 +29385,11 @@ msgstr "送信者の意図を尊重し、送信者が@メンションを切り msgid "Restart {appName}" msgstr "{appName}を再起動" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "{productName}を再起動" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Linuxデスクトップでは実行時にトレイアイコンを確実に追加または削除できないため、この変更を適用するには{productName}を再起動してください。" -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "デスクトップアップデートをインストールするには{productName}を再起動してください" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "デスクトップアップデート{version}をインストールするには{productName}を再起動してください" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "{0}のBANを解除しました" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}秒巻き戻し" @@ -29866,7 +29761,7 @@ msgstr "ルーマニア語" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "時計回りに回転" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "ページあたりの行数" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPMパッケージ" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "セルフホスト設定" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "セルフホストモード" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "セルフホストモードを強制" @@ -32212,8 +32107,8 @@ msgstr "自分の画面共有を表示" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "自分を「入力中」と表示" @@ -32675,7 +32570,7 @@ msgstr "スキップ" msgid "Skip \"Mark all as read\" confirmation" msgstr "「すべて既読にする」の確認をスキップ" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "トリミングをスキップ" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "すべてのドメインで外部リンクの警告をスキップ" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "アプリ内報告が送信されてもネットワーク呼び出しをスキップします。フローは成功画面に進むためUIを試すことはできますが、実際には安全チームには何も送信されません。" @@ -32752,8 +32647,8 @@ msgstr "スロベニア" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "添付ファイルのアップロードを遅くする" @@ -32769,29 +32664,29 @@ msgstr "ペースが速すぎます。少し時間をおいてからもう一度 #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "メッセージ編集を遅くする" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "メッセージの読み込みを遅くする" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "メッセージ送信を遅くする" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "プロフィールの読み込みを遅くする" @@ -32807,7 +32702,7 @@ msgstr "スローモード · 残り{remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "スローモードがオンです" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "スローモードが{durationLabel}に設定されています。次のメッセージを送信するまで少しお待ちください。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "スローモード残り時間" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "システムトレイ" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "システム管理のインストール" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "タップしてメモを追加" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gzアーカイブ" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "お探しのコミュニティは削除されたか、アクセス権がない可能性があります。" #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "デスクトップのアップデートをダウンロードできませんでした。インターネット接続が安定していることを確認し、アップデートボタンからもう一度お試しください。" -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "デスクトップアップデートがダウンロードされました。{productName}を再起動してインストールを完了してください。" - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "ダウンロードされたファイルはコンピューターに保存されます。通常のパッケージマネージャーでインストールしてください。" @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "この操作は元に戻せません。ボットユーザーを含むすべての関連データが完全に削除されます。" #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "このアニメーションは長すぎるか、大きすぎるため、トリミングできません。より短く、またはより小さいファイルをお試しください。" @@ -35549,7 +35439,7 @@ msgstr "このボットは管理者権限を要求しています。開発者を #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "このブラウザでは、アニメーションの{avifFormatLabel}ファイルをクロップできません。代わりにGIFまたはWebPをアップロードしてください。" @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "このブラウザのコンソールは開発者ツールです。" #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "このブラウザではWebAssemblyが無効になっているため、アニメーション画像を切り抜くことができません。" @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "この会話は利用できません。" #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "このデスクトップ版では、{productName} 内にアップデートをインストールできません。代わりに最新のデスクトップインストーラーをダウンロードしてください。" @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "このデスクトップはシステム全体のショートカットに対応していません。ショートカットは{productName}がフォーカスされている間は引き続き機能します。" #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "この開発ビルドは自動更新できません。更新フローをテストするには、デスクトップインストーラーをダウンロードしてください。" @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "この引き継ぎコードは有効期限が切れました。新しいコードを生成して続行してください。" #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "この画像を読み込めませんでした。破損している可能性があります。" #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "このインストールはシステムによって管理されています。ソフトウェアセンターまたはパッケージマネージャーから{productName}を更新してください。" @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "基準日を未来の日付に設定することはできません" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title}のサムネイル" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "タイトルバー" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "タイトルバープラットフォーム" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "カメラのオン/オフを切り替え" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "コントロールを切り替える" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "タイポグラフィ" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UIコンポーネント" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "英国の地域" @@ -37528,7 +37418,7 @@ msgstr "未分類" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未登録アカウント" @@ -37689,7 +37579,7 @@ msgstr "汎用フォールバック。品質は最も低いですが、どこで #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "不明" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "不明な招待" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "不明なメッセージタイプ" @@ -37893,10 +37783,10 @@ msgstr "ミュート解除" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "音声のミュートを解除" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "未読のDMのみ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "未読ギフト数" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "未読のギフトインベントリ" @@ -38267,10 +38157,20 @@ msgstr "このメッセージを表示するには、{productName}をアップ msgid "Update app" msgstr "アプリを更新" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "アップデートが利用可能です" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "ステータスを更新" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "今すぐアップデート" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "ポリシーを更新しました" msgid "Updated saved media" msgstr "保存済みメディアを更新しました" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "アップデーターの状態" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "カスタムURLには、半角英数字と半角ハイフンのみ使用できます。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "カスタムURLに関する注意" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "認証とメンバーシップの制限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "認証バリア" @@ -39438,7 +39333,7 @@ msgstr "鮮やかさ" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "ビデオ" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "動画プレビュー" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "動画の再生位置" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "ビデオ設定" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "動画のサムネイル" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionaryバッジ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "VisionaryバッジID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "音声接続の確認" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "音声接続デバッグ" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "音声メッセージ" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "音声メッセージプレーヤー" @@ -40500,11 +40395,6 @@ msgstr "ウェブ検索" msgid "Web search provider" msgstr "ウェブ検索プロバイダー" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Webアップデーターの準備ができました" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "ちょっと多すぎます" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "キャンセルされます" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "ズーム" diff --git a/fluxer_app/src/features/i18n/locales/ko/messages.po b/fluxer_app/src/features/i18n/locales/ko/messages.po index e7fc48974..539cab035 100644 --- a/fluxer_app/src/features/i18n/locales/ko/messages.po +++ b/fluxer_app/src/features/i18n/locales/ko/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {#개의 채널이 이 채널을 구독 중입니다 msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {#개 커뮤니티 찾음} other {#개 커뮤니티 찾음}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {#개 커뮤니티가 플럭스 캐패시터 오작동으로 인해 일시적으로 이용할 수 없습니다.} other {#개 커뮤니티가 플럭스 캐패시터 오작동으로 인해 일시적으로 이용할 수 없습니다.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName}에서 이 앱의 오디오에 대한 안전한 격리 경 msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName}은 하드웨어 인코더를 사용할 수 없으므로 CPU를 사용합니다." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName}을(를) 종료하고 업데이트를 설치한 후 다시 엽니다." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName}이 업데이트 서비스에 연결하지 못했습니다. 연결 상태를 확인하고 다시 시도해 주세요." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName}을(를) 다운로드한 업데이트로 다시 시작할 수 없습니다. 업데이트 버튼에서 다시 시도해 보세요." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "호스트 이름(예: {exampleDomain})" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Linux 데스크톱 업데이트가 있습니다. 이 시스템에 맞는 패키지 형식을 선택하면 {productName}이 파일을 로컬에 저장합니다." @@ -4597,11 +4597,6 @@ msgstr "걸려오는 전화 받기" msgid "Any key" msgstr "아무 키" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "업데이트 준비 완료" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "오디오 패킷 손실률:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "오디오 플레이어" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "오디오 처리(음성 포커스)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "오디오 진행률" @@ -5551,7 +5546,7 @@ msgstr "AV1 (옵트인 필요)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "사용 가능" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "차단된 사용자" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "장벽 카운트다운" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "결제" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "결제 주기" @@ -6867,7 +6862,7 @@ msgstr "여기에 파일을 올릴 수 없습니다" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "스레드를 닫았습니다" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "클라우드 업로드" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "입력창 자동 활성화" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "압축 중" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "가격을 변경할 수 없습니다" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "업데이트를 확인할 수 없습니다" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "복구 키트를 만들 수 없습니다. 나중에 계정 설정에서 만들 수 있습니다." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "이미지를 자를 수 없습니다" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "내 메시지를 삭제할 수 없습니다" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "데스크톱 업데이트를 다운로드할 수 없습니다" @@ -10841,11 +10836,6 @@ msgstr "결제를 시작할 수 없습니다" msgid "Couldn't start the connection" msgstr "연결을 시작할 수 없습니다" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "데스크톱 업데이트를 시작할 수 없습니다" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "초대 배경 자르기" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "자르기 미리보기" @@ -11343,12 +11333,12 @@ msgstr "프로필 배너 자르기" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "자른 이미지가 너무 큽니다. 더 작은 영역을 선택하거나 더 작은 파일을 선택하세요(최대 {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "{percent}% 잘라내는 중" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "모더레이터에 의해 소리 꺼짐" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB 패키지" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "데스크톱 앱" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "데스크톱 앱이 최신 버전입니다" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "데스크톱 시작" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "데스크톱 업데이트 {version}을(를) 사용할 수 있습니다. Linux 패키지를 선택하세요." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "데스크톱 업데이트 사용 가능" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "데스크톱 업데이트를 사용할 수 있습니다. Linux 패키지를 선택하세요." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "데스크톱 업데이트 준비 완료" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "데스크톱 버전 {version} 다운로드가 완료되었습니다. {productName}을(를) 다시 시작하여 설치를 완료하세요." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "개발자 모드" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "개발자 옵션" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "개발자 도구를 사용할 수 없음" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "개발 빌드" @@ -13604,26 +13584,6 @@ msgstr "다운로드 버튼" msgid "Download desktop app" msgstr "데스크톱 앱 다운로드" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "데스크톱 업데이트 다운로드" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "데스크톱 업데이트 다운로드({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "데스크톱 업데이트 {version} 다운로드" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "데스크톱 업데이트 {version} 다운로드({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "내보내기 다운로드" @@ -13688,26 +13648,6 @@ msgstr "개발자 도구에서 실제 소스 코드를 가리키도록 소스 msgid "Download video" msgstr "비디오 다운로드" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "데스크톱 업데이트 {version} 다운로드 중: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "데스크톱 업데이트 다운로드 중: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "데스크톱 업데이트 다운로드 중: {percent}% ({formatBytes} / {formatBytes2}, {formatBytes3}/초)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "데스크톱 업데이트 다운로드 중…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "이메일 인증 필요" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "이메일 인증됨" @@ -15966,7 +15906,7 @@ msgstr "일시적으로 비활성화된 기능" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "기능" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "강제 활성화됨" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "메시지 로드 실패 강제 실행" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "메시지 전송 실패 강제 실행" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "GIF 선택기 로딩 강제 실행" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "로딩 스켈레톤 강제 표시" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "성인용 미디어 강제 적용" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "{permissionName} 권한 없음 강제 적용" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "프로필 데이터 경고 강제 표시" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "프로필 스켈레톤 강제 적용" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "강제 표시" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "맞춤 URL 고지 사항 강제 표시" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "음성 연결 강제 표시" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "슬로우 모드 강제 활성화" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "알 수 없는 메시지 유형 강제 적용" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "업데이트 준비 강제 실행" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "전달" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}초 앞으로 감기" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "코드 생성 중…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "지역 차단 오버레이" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF 옵션" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF 선택기 로드 중" @@ -17226,14 +17161,14 @@ msgstr "선물 코드" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "선물 기간" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "선물함" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "선물을 찾을 수 없음" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "선물 사용 완료" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "포함" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "구매한 적 있음" @@ -17892,7 +17827,7 @@ msgstr "하트" msgid "Hebrew" msgstr "히브리어" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "높이" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "새 앱 설치" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "설치됨" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "설치된 버전: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "데스크톱 업데이트 {version} 설치 중…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "데스크톱 업데이트 설치 중…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "지연 시간 그래프" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux 기본값" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux 패키지" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "구독 관리" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "수동 데스크톱 업데이트" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "성인 콘텐츠 및 콘텐츠 경고" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "성인 콘텐츠 채널 게이트" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "성인 콘텐츠 확인 기능은 현재 영국에서만 이용할 수 있습니다." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "성인 콘텐츠 미디어 게이트" @@ -22888,13 +22813,13 @@ msgstr "알림 끄기" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "음소거" @@ -23316,16 +23241,6 @@ msgstr "내레이션" msgid "Native title bar" msgstr "기본 제목 표시줄" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "네이티브 업데이트 진행률" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "네이티브 업데이터 준비 완료" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "네트워크 오류" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "네트워킹 및 성능" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "지금은 새 사용자가 참여할 수 없습니다. 계정을 만들거나 로그인한 다음 나중에 이 링크를 다시 시도할 수 있습니다." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "새 버전" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "아니요" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} 권한 없음" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} 권한 없음" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "설명 없음." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "사용 가능한 데스크톱 업데이트가 없습니다." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "웹훅 없음" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "앱 내 신고 무효화" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "날짜 선택기 열기" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "데스크톱 다운로드 열기" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "설정 열기" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "소프트웨어 센터 열기" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "{displayName}님의 사용자 메뉴 열기" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "동영상 열기" @@ -26558,9 +26473,9 @@ msgstr "선택 영역 재생" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "동영상 재생" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "프리미엄 혜택 비활성화됨" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "프리미엄 시작일" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "백엔드에서 프리미엄 상태가 재설정되었습니다." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "프리미엄 유형" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "프리미엄 종료일" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "준비 중" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "프로필 맞춤 설정 양식" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "프로필 데이터 경고" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "프로필 공개 범위" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "프로필 스켈레톤" @@ -28223,18 +28138,13 @@ msgstr "새로고침" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "{PRODUCT_NAME}을(를) 다시 로드하여 엔진 변경 사항을 완전히 적용하세요. Electron은 실행 중에 공급자를 교체할 수 없으므로, 앱 내 맞춤법 검사와 시스템 맞춤법 검사를 전환하려면 렌더러를 다시 로드해야 합니다." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "{productName}을(를) 다시 로드하여 업데이트된 모듈을 사용하세요" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "웹 업데이트를 적용하려면 {productName}을(를) 다시 로드하세요" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "{version} 웹 업데이트를 적용하려면 {productName}을(를) 다시 로드하세요" @@ -29142,7 +29052,7 @@ msgstr "다시 보냄" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "초기화" @@ -29475,26 +29385,11 @@ msgstr "발신자의 선택을 그대로 따르고, @멘션을 켜거나 꺼도 msgid "Restart {appName}" msgstr "{appName} 재시작" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "{productName} 다시 시작" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Linux 데스크톱에서는 런타임에 트레이 아이콘을 안정적으로 추가하거나 제거할 수 없으므로 변경 사항을 적용하려면 {productName}을(를) 다시 시작하세요." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "{productName}을(를) 다시 시작하여 데스크톱 업데이트를 설치하세요" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "{productName}을(를) 다시 시작하여 데스크톱 업데이트 {version}을(를) 설치하세요" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "{0}님에 대한 차단이 해제되었습니다" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount}초 뒤로 감기" @@ -29866,7 +29761,7 @@ msgstr "루마니아어" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "시계 방향으로 회전" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "페이지당 행 수" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM 패키지" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "자체 호스팅 설정" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "자체 호스팅 모드" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "자체 호스팅 모드 재정의" @@ -32212,8 +32107,8 @@ msgstr "내 화면 공유 표시" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "내가 입력 중으로 표시" @@ -32675,7 +32570,7 @@ msgstr "건너뛰기" msgid "Skip \"Mark all as read\" confirmation" msgstr "\"모두 읽음\" 확인 건너뛰기" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "자르기 건너뛰기" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "모든 도메인에서 외부 링크 경고 건너뛰기" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "앱 내 신고 제출 시 네트워크 호출을 건너뜁니다. UI를 테스트할 수 있도록 성공 화면으로 계속 진행되지만, 안전팀에는 아무것도 전송되지 않습니다." @@ -32752,8 +32647,8 @@ msgstr "슬로베니아" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "첨부 파일 업로드 속도 저하" @@ -32769,29 +32664,29 @@ msgstr "요청이 너무 빠릅니다. 잠시 후 다시 시도해 주세요." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "메시지 편집 속도 저하" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "메시지 로드 속도 저하" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "메시지 전송 속도 저하" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "프로필 로드 속도 저하" @@ -32807,7 +32702,7 @@ msgstr "슬로우 모드 · {remaining} 대기" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "슬로우 모드 활성화됨" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "슬로우 모드가 {durationLabel}로 설정되어 있습니다. 다음 메시지를 보내기 전에 기다려 주세요." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "슬로우 모드 남은 시간" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "시스템 트레이" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "시스템 관리 설치" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "메모를 추가하려면 탭하세요" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz 아카이브" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "찾으시는 커뮤니티가 삭제되었거나 접근 권한이 없을 수 있습니다." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "데스크톱 업데이트를 다운로드할 수 없습니다. 연결이 안정적일 때 업데이트 버튼을 눌러 다시 시도해 주세요." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "데스크톱 업데이트가 다운로드되었습니다. {productName}을(를) 다시 시작하여 설치를 완료하세요." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "다운로드한 파일은 컴퓨터에 저장됩니다. 평소 사용하는 패키지 관리자로 설치하세요." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "이 작업은 되돌릴 수 없습니다. 봇 사용자를 포함한 모든 관련 데이터가 영구적으로 삭제됩니다." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "이 애니메이션은 너무 길거나 커서 자를 수 없습니다. 더 짧거나 작은 파일을 사용해 보세요." @@ -35549,7 +35439,7 @@ msgstr "이 봇은 관리자 권한을 요청합니다. 개발자를 완전히 #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "이 브라우저에서는 애니메이션 {avifFormatLabel} 파일을 편집할 수 없습니다. 대신 GIF 또는 WebP 파일을 업로드하세요." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "이 브라우저 콘솔은 개발자 도구입니다." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "이 브라우저에서는 WebAssembly가 꺼져 있어 애니메이션 이미지를 자를 수 없습니다." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "이 대화는 더 이상 이용할 수 없습니다." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "이 데스크톱 빌드는 {productName}에서 업데이트를 설치할 수 없습니다. 대신 최신 데스크톱 설치 파일을 다운로드하세요." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "이 데스크톱은 시스템 전체 단축키를 지원하지 않습니다. {productName}에 포커스가 있을 때는 단축키가 계속 작동합니다." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "이 개발 빌드는 자체적으로 업데이트할 수 없습니다. 업데이트 흐름을 테스트하려면 데스크톱 설치 프로그램을 다운로드하세요." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "이 핸드오프 코드가 만료되었습니다. 계속하려면 새 코드를 생성하세요." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "이 이미지를 읽을 수 없습니다. 손상되었을 수 있습니다." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "이 설치는 시스템에서 관리됩니다. 소프트웨어 센터 또는 패키지 관리자를 통해 {productName}을(를) 업데이트하세요." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "기준일은 미래일 수 없습니다" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title} 썸네일" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "제목 표시줄" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "제목 표시줄 플랫폼" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "카메라 켜기/끄기" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "컨트롤 표시/숨기기" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "타이포그래피" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI 구성 요소" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "영국 지역" @@ -37528,7 +37418,7 @@ msgstr "미분류" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "미등록 계정" @@ -37689,7 +37579,7 @@ msgstr "범용 대체 코덱. 화질은 가장 낮지만, 모든 환경에서 #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "알 수 없음" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "알 수 없는 초대" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "알 수 없는 메시지 유형" @@ -37893,10 +37783,10 @@ msgstr "알림 켜기" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "음소거 해제" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "읽지 않은 DM만" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "읽지 않은 선물 개수" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "읽지 않은 선물 인벤토리" @@ -38267,10 +38157,20 @@ msgstr "이 메시지를 보려면 {productName}을(를) 업데이트하세요." msgid "Update app" msgstr "앱 업데이트" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "업데이트를 사용할 수 있습니다" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "내 상태 업데이트" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "지금 업데이트" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "업데이트된 정책" msgid "Updated saved media" msgstr "저장된 미디어 업데이트됨" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "업데이터 상태" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "맞춤 URL은 영숫자와 내부 하이픈만 포함할 수 있습니다." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "맞춤 URL 고지 사항" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "인증 및 멤버십 장벽" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "인증 장벽" @@ -39438,7 +39333,7 @@ msgstr "선명도" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "비디오" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "동영상 미리보기" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "동영상 진행률" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "비디오 설정" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "동영상 썸네일" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary 배지" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary 배지 ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "음성 연결 확인" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "음성 연결 디버그" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "음성 메시지" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "음성 메시지 플레이어" @@ -40500,11 +40395,6 @@ msgstr "웹 검색" msgid "Web search provider" msgstr "웹 검색 공급자" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "웹 업데이터 준비 완료" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "우와, 너무 많은데요" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "취소 예정" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "유비키" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "확대/축소" diff --git a/fluxer_app/src/features/i18n/locales/lt/messages.po b/fluxer_app/src/features/i18n/locales/lt/messages.po index 93d8b3f3e..0fc3ae6fd 100644 --- a/fluxer_app/src/features/i18n/locales/lt/messages.po +++ b/fluxer_app/src/features/i18n/locales/lt/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanalas jį seka} other {# kanalai jį seka}} š msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Rasta # bendruomenė} few {Rastos # bendruomenės} other {Rasta # bendruomenių}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# bendruomenė laikinai nepasiekiama dėl srauto kondensatoriaus gedimo.} few {# bendruomenės laikinai nepasiekiamos dėl srauto kondensatoriaus gedimo.} other {# bendruomenių laikinai nepasiekiama dėl srauto kondensatoriaus gedimo.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} negali saugiai atskirti šios programos garso." msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "„{productName}“ tam negali naudoti aparatinio kodavimo įrenginio, todėl bus naudojamas jūsų procesorius." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} užsidarys, įdiegs naujinį ir vėl atsidarys." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "„{productName}“ nepavyko pasiekti atnaujinimų tarnybos. Patikrinkite interneto ryšį ir bandykite dar kartą." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "„{productName}“ nepavyko paleisti iš naujo su atsisiųstu atnaujinimu. Bandykite dar kartą paspaudę atnaujinimo mygtuką." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "pagrindinio kompiuterio pavadinimas, pvz., {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Prieinamas „Linux“ darbalaukio atnaujinimas. Pasirinkite šios sistemos paketų formatą, o programa „{productName}“ išsaugos jį jūsų įrenginyje." @@ -4597,11 +4597,6 @@ msgstr "Atsiliepti į gaunamą skambutį" msgid "Any key" msgstr "Bet kuris klavišas" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Atnaujintojas paruoštas" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Garso paketų praradimas:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Garso grotuvas" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Garso apdorojimas (fokusuotas balsas)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Garso įrašo eiga" @@ -5551,7 +5546,7 @@ msgstr "AV1 (reikia įjungti)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Pasiekiama" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Užblokuoti nariai" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Užtvaros atgalinis skaičiavimas" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Atsiskaitymas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Atsiskaitymo ciklas" @@ -6867,7 +6862,7 @@ msgstr "Čia negalima įkelti failų" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Uždaryta tema" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Įkelti į debesį" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Rašymo lauko fokusavimas" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Glaudinama" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nepavyko pakeisti jūsų kainos" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nepavyko patikrinti, ar yra naujinimų" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nepavyko sukurti jūsų atkūrimo rinkinio. Vėliau galėsite jį sukurti paskyros nustatymuose." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Nepavyko apkarpyti paveikslėlio" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nepavyko ištrinti jūsų žinučių" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nepavyko atsisiųsti darbalaukio naujinimo" @@ -10841,11 +10836,6 @@ msgstr "Nepavyko pradėti atsiskaitymo" msgid "Couldn't start the connection" msgstr "Nepavyko pradėti ryšio" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nepavyko paleisti darbalaukio naujinimo" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Apkarpyti kvietimo foną" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Apkarpymo peržiūra" @@ -11343,12 +11333,12 @@ msgstr "Apkarpyti profilio reklamjuostę" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Apkarpytas vaizdas per didelis. Pasirinkite mažesnį plotą arba mažesnį failą (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Apkarpyti {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Garsą išjungė moderatoriai" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB paketas" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Darbalaukio programa" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Darbalaukio programa yra naujausios versijos" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Darbalaukio paleidimas" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Galimas darbalaukio naujinimas {version}. Pasirinkite „Linux“ paketą." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Galimas darbalaukio naujinimas" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Galimas darbalaukio naujinimas. Pasirinkite „Linux“ paketą." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Darbalaukio naujinimas paruoštas" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Darbalaukio versija {version} atsisiųsta. Norėdami užbaigti diegimą, iš naujo paleiskite {productName}." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Kūrėjo režimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Kūrėjo parinktis" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Kūrėjo įrankiai nepasiekiami" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Kūrimo versija" @@ -13604,26 +13584,6 @@ msgstr "Atsisiuntimo mygtukas" msgid "Download desktop app" msgstr "Atsisiųsti darbalaukio programėlę" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Atsisiųsti darbalaukio naujinimą" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Atsisiųsti darbalaukio naujinimą ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Atsisiųsti darbalaukio naujinimą {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Atsisiųsti darbalaukio naujinimą {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Atsisiųsti eksportą" @@ -13688,26 +13648,6 @@ msgstr "Atsisiųskite šaltinio žemėlapius, kad krovimo sekos ir kūrėjo įra msgid "Download video" msgstr "Atsisiųsti vaizdo įrašą" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Atsisiunčiamas darbalaukio naujinimas {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Atsisiunčiamas darbalaukio naujinimas: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Atsisiunčiamas darbalaukio naujinimas: {percent}% ({formatBytes} / {formatBytes2}, {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Atsisiunčiamas darbalaukio naujinimas…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Reikalingas el. pašto patvirtinimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "El. paštas patvirtintas" @@ -15966,7 +15906,7 @@ msgstr "Funkcija laikinai išjungta" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funkcijos" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Priverstinai įjungta" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Imituoti nepavykusius žinučių įkėlimus" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Imituoti nepavykusius žinučių siuntimus" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Imituoti GIF parinkiklio įkėlimo būseną" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Priverstinai rodyti įkėlimo karkasą" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Priverstinai rodyti brandžią mediją" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Priverstinai netaikyti {permissionName} leidimo" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Visada rodyti profilio duomenų įspėjimą" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Priverstinai rodyti profilio karkasus" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Priverstinai rodyti" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Visada rodyti pasirinktinio URL įspėjimą" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Visada rodyti balso ryšį" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Priverstinai įjungti lėtąjį režimą" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Priverstinai nustatyti nežinomą žinutės tipą" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Priverstinai paruošti naujinimą" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Persiųsti" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Pirmyn {defaultSeekAmount} sekundžių" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generuojamas kodas…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geografinio blokavimo perdanga" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF parinktys" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Įkeliamas GIF parinkiklis" @@ -17226,14 +17161,14 @@ msgstr "Dovanų kodai" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Dovanos trukmė" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Dovanų inventorius" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Dovanos nerasta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Dovana išpirkta" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Turi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "kada nors pirko" @@ -17892,7 +17827,7 @@ msgstr "Širdelė" msgid "Hebrew" msgstr "hebrajų" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Aukštis" @@ -19224,25 +19159,15 @@ msgid "Install the new app" msgstr "Įdiegti naująją programėlę" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Įdiegta" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Įdiegta versija: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Diegiamas darbalaukio naujinimas {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Diegiamas darbalaukio naujinimas…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20256,7 +20181,7 @@ msgstr "Delsos grafikas" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20797,7 +20722,7 @@ msgid "Linux default" msgstr "„Linux“ numatytasis įrenginys" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "„Linux“ paketas" @@ -21263,7 +21188,7 @@ msgid "Manage your subscription" msgstr "Tvarkyti prenumeratą" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Rankinis darbalaukio naujinimas" @@ -21475,7 +21400,7 @@ msgid "Mature content & content warnings" msgstr "Brandus turinys ir įspėjimai apie turinį" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Brandaus turinio kanalo vartai" @@ -21501,7 +21426,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Brandaus turinio patikros šiuo metu galimos tik JK." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Brandaus turinio medijos vartai" @@ -22889,13 +22814,13 @@ msgstr "Nutildyti" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Išjungti garsą" @@ -23317,16 +23242,6 @@ msgstr "Įgarsinimas" msgid "Native title bar" msgstr "Vietinė pavadinimo juosta" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Vietinio atnaujinimo eiga" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Vietinis naujintojas paruoštas" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23403,7 +23318,7 @@ msgid "Network error" msgstr "Tinklo klaida" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Tinklas ir našumas" @@ -23617,7 +23532,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nauji naudotojai šiuo metu negali prisijungti. Vis tiek galite susikurti paskyrą arba prisijungti, o vėliau vėl pabandyti pasinaudoti šia nuoroda." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nauja versija" @@ -23684,12 +23599,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Nėra leidimo „{attachFilesPermission}“" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Nėra leidimo „{sendMessagesPermission}“" @@ -23873,7 +23788,7 @@ msgid "No description." msgstr "Aprašo nėra." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nėra galimų darbalaukio naujinimų." @@ -24316,7 +24231,7 @@ msgid "No webhooks" msgstr "Nėra webhookų" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Pranešimai programoje be poveikio" @@ -25152,7 +25067,7 @@ msgid "Open date picker" msgstr "Atidaryti datos parinkiklį" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Atidaryti darbalaukio programos atsisiuntimus" @@ -25349,7 +25264,7 @@ msgid "Open settings" msgstr "Atidaryti nustatymus" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Atidaryti programų centrą" @@ -25449,7 +25364,7 @@ msgid "Open user menu for {displayName}" msgstr "Atidaryti naudotojo „{displayName}“ meniu" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Atidaryti vaizdo įrašą" @@ -26559,9 +26474,9 @@ msgstr "Leisti pasirinktą dalį" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Leisti vaizdo įrašą" @@ -26815,7 +26730,7 @@ msgid "Premium perks disabled" msgstr "Išjungtos „Premium“ privilegijos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "„Premium“ narystė nuo datos" @@ -26825,17 +26740,17 @@ msgid "Premium state reset on the backend." msgstr "Premium būsena serveryje nustatyta iš naujo." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium tipas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium iki datos" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Ruošiama" @@ -27216,7 +27131,7 @@ msgid "Profile customization form" msgstr "Profilio tinkinimo forma" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Įspėjimas apie profilio duomenis" @@ -27264,7 +27179,7 @@ msgid "Profile privacy" msgstr "Profilio privatumas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profilio karkasai" @@ -28224,18 +28139,13 @@ msgstr "Įkelti iš naujo" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Įkelkite „{PRODUCT_NAME}“ iš naujo, kad variklio pakeitimas būtų visiškai pritaikytas. Perjungiant tarp programėlės ir sistemos rašybos tikrinimo reikia iš naujo įkelti atvaizdavimo variklį, nes „Electron“ negali pakeisti teikėjų veikimo metu." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Perkraukite {productName}, kad naudotumėte naujinius modulius" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Įkelkite „{productName}“ iš naujo, kad pritaikytumėte žiniatinklio atnaujinimą" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Įkelkite „{productName}“ iš naujo, kad pritaikytumėte žiniatinklio atnaujinimą {version}" @@ -29143,7 +29053,7 @@ msgstr "Išsiųsta iš naujo" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Atkurti" @@ -29476,26 +29386,11 @@ msgstr "Gerbti siuntėjo ketinimus, be įspėjimo, kai jis perjungia @paminėjim msgid "Restart {appName}" msgstr "Iš naujo paleisti „{appName}“" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Iš naujo paleisti {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Iš naujo paleiskite „{productName}“, kad šis pakeitimas įsigaliotų, nes „Linux“ darbalaukiai negali patikimai pridėti ar pašalinti dėklo piktogramų vykdymo metu." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Paleiskite „{productName}“ iš naujo, kad įdiegtumėte darbalaukio programos atnaujinimą" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Paleiskite „{productName}“ iš naujo, kad įdiegtumėte darbalaukio programos atnaujinimą {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29718,7 +29613,7 @@ msgid "Revoked ban for {0}" msgstr "Panaikintas {0} užblokavimas" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Atsukti atgal {defaultSeekAmount} sekundžių" @@ -29867,7 +29762,7 @@ msgstr "rumunų" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Pasukti pagal laikrodžio rodyklę" @@ -29890,7 +29785,7 @@ msgid "Rows per page" msgstr "Eilutės puslapyje" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM paketas" @@ -31063,12 +30958,12 @@ msgid "Self-host setup" msgstr "Savarankiško talpinimo sąranka" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Savarankiško talpinimo režimas" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Savarankiško talpinimo režimo nepaisymas" @@ -32213,8 +32108,8 @@ msgstr "Rodyti mano ekrano bendrinimą" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Rodyti, kad rašau" @@ -32676,7 +32571,7 @@ msgstr "Praleisti" msgid "Skip \"Mark all as read\" confirmation" msgstr "Praleisti patvirtinimą „Pažymėti visus kaip perskaitytus“" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Praleisti apkarpymą" @@ -32691,7 +32586,7 @@ msgid "Skip the external link warning for all domains" msgstr "Praleisti išorinių nuorodų įspėjimą visiems domenams" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Praleisti tinklo užklausą, kai programoje pateikiamas pranešimas. Eiga vis tiek pereina į sėkmės ekraną, kad galėtumėte išbandyti sąsają, bet saugos komandai iš tikrųjų nieko nesiunčiama." @@ -32753,8 +32648,8 @@ msgstr "Slovėnija" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Lėtas priedų įkėlimas" @@ -32770,29 +32665,29 @@ msgstr "Sulėtinkite tempą – prieš bandydami dar kartą palaukite." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Lėtas žinutės redagavimas" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Lėtas žinučių įkėlimas" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Lėtas žinučių siuntimas" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Lėtas profilio įkėlimas" @@ -32808,7 +32703,7 @@ msgstr "Lėtasis režimas · palaukite {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Lėtasis režimas aktyvus" @@ -32859,7 +32754,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Nustatytas lėtasis režimas – {durationLabel}. Palaukite prieš siųsdami kitą žinutę." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Lėtojo režimo likutis" @@ -34656,7 +34551,7 @@ msgid "System tray" msgstr "Sistemos dėklas" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Sistemos tvarkomas diegimas" @@ -34782,7 +34677,7 @@ msgid "Tap to add a note" msgstr "Palieskite, kad pridėtumėte pastabą" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz archyvas" @@ -35131,17 +35026,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Bendruomenė, kurios ieškote, galėjo būti ištrinta arba neturite prieigos prie jos." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Nepavyko atsisiųsti darbalaukio naujinimo. Bandykite dar kartą paspaudę naujinimo mygtuką, kai ryšys bus stabilus." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Darbalaukio naujinimas atsisiųstas. Norėdami užbaigti diegimą, iš naujo paleiskite {productName}." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Atsisiųstas failas išsaugotas jūsų kompiuteryje. Įdiekite jį naudodami įprastą paketų tvarkyklę." @@ -35524,7 +35414,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Šio veiksmo anuliuoti negalima. Visi susiję duomenys, įskaitant boto naudotoją, bus visam laikui ištrinti." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ši animacija yra per ilga arba per didelė, kad ją būtų galima apkarpyti. Pabandykite trumpesnį arba mažesnį failą." @@ -35550,7 +35440,7 @@ msgstr "Šis botas prašo administratoriaus leidimo. Suteikite jį tik tuo atvej #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Ši naršyklė negali apkarpyti animuotų {avifFormatLabel} failų. Įkelkite GIF arba WebP." @@ -35560,7 +35450,7 @@ msgid "This browser console is a developer tool." msgstr "Ši naršyklės konsolė yra kūrėjo įrankis." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Šioje naršyklėje išjungtas WebAssembly, todėl animuotų vaizdų negalima apkarpyti." @@ -35756,7 +35646,7 @@ msgid "This conversation is no longer available." msgstr "Šis pokalbis nebepasiekiamas." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Ši darbalaukio versija negali diegti naujinimų programoje {productName}. Vietoj to atsisiųskite naujausią darbalaukio diegimo programą." @@ -35771,7 +35661,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Šis darbalaukis nepalaiko sistemos sparčiųjų klavišų. Spartieji klavišai vis tiek veikia, kai {productName} yra aktyvus." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ši kūrimo versija negali atsinaujinti. Atsisiųskite darbalaukio diegimo programą, kad išbandytumėte naujinimo eigą." @@ -35878,12 +35768,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Šis perdavimo kodas nebegalioja. Norėdami tęsti, sugeneruokite naują." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Šio paveikslėlio nepavyko nuskaityti. Jis gali būti sugadintas." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Šią programą valdo jūsų sistema. Atnaujinkite „{productName}“ naudodami programų centrą arba paketų tvarkyklę." @@ -36447,7 +36337,7 @@ msgid "Threshold date cannot be in the future" msgstr "Ribinė data negali būti ateityje" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title} miniatiūra" @@ -36560,7 +36450,7 @@ msgid "Title bar" msgstr "Pavadinimo juosta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Pavadinimo juostos platforma" @@ -36621,7 +36511,7 @@ msgid "Toggle camera" msgstr "Perjungti kamerą" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Valdiklių perjungimas" @@ -37388,12 +37278,12 @@ msgid "Typography" msgstr "Tipografija" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI komponentai" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "JK geografinė vieta" @@ -37529,7 +37419,7 @@ msgstr "Nekategorizuota" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Neužregistruota paskyra" @@ -37690,7 +37580,7 @@ msgstr "Universalus atsarginis variantas. Žemiausia kokybė, bet veikia visur." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Nežinoma" @@ -37758,7 +37648,7 @@ msgid "Unknown invite" msgstr "Nežinomas kvietimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Nežinomas žinutės tipas" @@ -37894,10 +37784,10 @@ msgstr "Atšaukti nutildymą" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Įjungti garsą" @@ -38126,12 +38016,12 @@ msgid "Unread DMs only" msgstr "Tik neskaityti DM" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Neskaitytų dovanų skaičius" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Neperskaitytų dovanų inventorius" @@ -38268,10 +38158,20 @@ msgstr "Atnaujinkite „{productName}“, kad galėtumėte peržiūrėti šią msgid "Update app" msgstr "Atnaujinti programėlę" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Prieinamas naujinimas" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Atnaujinti mano būseną" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Atnaujinti dabar" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38312,11 +38212,6 @@ msgstr "Atnaujintos taisyklės" msgid "Updated saved media" msgstr "Išsaugota medija atnaujinta" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Atnaujintuvo būsena" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39208,7 +39103,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Pasirinktiniame URL gali būti tik raidės, skaičiai ir vidiniai brūkšneliai." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Pasirinktinio URL atsakomybės apribojimas" @@ -39241,7 +39136,7 @@ msgid "Verification & membership barriers" msgstr "Patvirtinimo ir narystės apribojimai" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Patvirtinimo barjeras" @@ -39439,7 +39334,7 @@ msgstr "Spalvingumas" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Vaizdo įrašas" @@ -39509,7 +39404,7 @@ msgid "Video preview" msgstr "Vaizdo įrašo peržiūra" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Vaizdo įrašo eiga" @@ -39541,7 +39436,7 @@ msgid "Video settings" msgstr "Vaizdo nustatymai" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Vaizdo įrašo miniatiūra" @@ -39858,7 +39753,7 @@ msgid "Visionary badge" msgstr "Visionary ženklelis" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary ženklelio ID" @@ -40029,7 +39924,7 @@ msgid "Voice connection confirmation" msgstr "Balso ryšio patvirtinimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Balso ryšio derinimas" @@ -40061,7 +39956,7 @@ msgid "Voice message" msgstr "Balso žinutė" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Balso žinutės grotuvas" @@ -40501,11 +40396,6 @@ msgstr "Žiniatinklio paieška" msgid "Web search provider" msgstr "Žiniatinklio paieškos teikėjas" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Žiniatinklio naujintojas paruoštas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40851,7 +40741,7 @@ msgid "Whoa, this is heavy" msgstr "Oho, čia tai kiekis" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Bus atšaukta" @@ -42448,7 +42338,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Priartinimas" diff --git a/fluxer_app/src/features/i18n/locales/nl/messages.po b/fluxer_app/src/features/i18n/locales/nl/messages.po index 06c265c41..3446b965a 100644 --- a/fluxer_app/src/features/i18n/locales/nl/messages.po +++ b/fluxer_app/src/features/i18n/locales/nl/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanaal volgt} other {# kanalen volgen}} dit kanaa msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# community gevonden} other {# communities gevonden}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# community is tijdelijk niet beschikbaar door een storing in de fluxcondensator.} other {# communities zijn tijdelijk niet beschikbaar door een storing in de fluxcondensator.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} kan geen veilige, geïsoleerde route starten voor de audio msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} kan geen hardware-encoder gebruiken, dus wordt de CPU gebruikt." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} sluit, installeert de update en opent opnieuw." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} kon geen verbinding maken met de updateservice. Controleer je internetverbinding en probeer het opnieuw." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} kon niet opnieuw worden gestart om de gedownloade update te installeren. Probeer het opnieuw via de knop 'Bijwerken'." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "een hostnaam, bijv. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Er is een Linux-desktopupdate beschikbaar. Kies het pakketformaat voor dit systeem, en {productName} zal het lokaal opslaan." @@ -4597,11 +4597,6 @@ msgstr "Inkomende oproep beantwoorden" msgid "Any key" msgstr "Willekeurige toets" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Een updater staat klaar" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Pakketverlies bij audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Audiospeler" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Audioverwerking (stemfocus)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Audiovoortgang" @@ -5551,7 +5546,7 @@ msgstr "AV1 (moet expliciet worden ingeschakeld)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Beschikbaar" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Verbanningen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Aftellen barrière" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Facturering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Factureringscyclus" @@ -6867,7 +6862,7 @@ msgstr "Kan hier geen bestanden uploaden" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "De thread gesloten" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Uploaden naar cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Focus op berichtinvoer" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Comprimeren" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Je prijs kon niet worden gewijzigd" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Kan niet controleren op updates" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Kon uw herstelkit niet aanmaken. U kunt er later een aanmaken in uw accountinstellingen." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Afbeelding bijsnijden mislukt" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Je berichten konden niet worden verwijderd" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Kon de desktopupdate niet downloaden" @@ -10841,11 +10836,6 @@ msgstr "Afrekenen kon niet worden gestart" msgid "Couldn't start the connection" msgstr "Verbinding kon niet worden gestart" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Kon de desktopupdate niet starten" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Achtergrond van uitnodiging bijsnijden" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Voorbeeld van bijgesneden afbeelding" @@ -11343,12 +11333,12 @@ msgstr "Profielbanner bijsnijden" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "De bijgesneden afbeelding is te groot. Kies een kleiner gebied of een kleiner bestand (max. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Bijsnijden {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Geluid uitgeschakeld door moderators" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-pakket" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Desktopapp" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "De desktopapp is up-to-date" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Desktopapp opstarten" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Desktopupdate {version} beschikbaar. Kies een Linux-pakket." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Desktopupdate beschikbaar" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Desktopupdate beschikbaar. Kies een Linux-pakket." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Desktopupdate klaar" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "De desktopversie {version} is gedownload. Herstart {productName} om de installatie te voltooien." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Ontwikkelaarsmodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Ontwikkelaarsoptie" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Ontwikkelaarstools niet beschikbaar" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Ontwikkelingsversie" @@ -13604,26 +13584,6 @@ msgstr "Downloadknop" msgid "Download desktop app" msgstr "Desktopapp downloaden" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Desktopupdate downloaden" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Desktopupdate downloaden ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Desktopupdate {version} downloaden" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Desktopupdate {version} downloaden ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Download export" @@ -13688,26 +13648,6 @@ msgstr "Download source maps zodat stack traces en de developer tools verwijzen msgid "Download video" msgstr "Video downloaden" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Desktopupdate {version} downloaden: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Desktopupdate downloaden: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Desktopupdate downloaden: {percent}% ({formatBytes} / {formatBytes2} met {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Desktopupdate downloaden…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-mailverificatie vereist" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail geverifieerd" @@ -15966,7 +15906,7 @@ msgstr "Functie tijdelijk uitgeschakeld" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Functies" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Geforceerd ingeschakeld" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Laden van berichten laten mislukken" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Mislukte berichtverzendingen forceren" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Laden van GIF-kiezer forceren" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Laadplaceholder forceren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Media forceren als volwassen" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Machtiging {permissionName} geforceerd uitschakelen" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Profielgegevenswaarschuwing forceren" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Laadplaceholders voor profielen forceren" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Tonen forceren" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Waarschuwing voor aangepaste URL altijd tonen" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Spraakverbinding geforceerd weergeven" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Actieve slowmodus forceren" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Onbekend berichttype forceren" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Status \"Update gereed\" forceren" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Doorsturen" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} seconden vooruitspoelen" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Code genereren…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Geoblokkeer-overlay" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-opties" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-kiezer laden" @@ -17226,14 +17161,14 @@ msgstr "Cadeaucodes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duur van cadeau" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Cadeau-inventaris" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Cadeau niet gevonden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Cadeau ingewisseld" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Heeft" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Heeft ooit een aankoop gedaan" @@ -17892,7 +17827,7 @@ msgstr "Hart" msgid "Hebrew" msgstr "Hebreeuws" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Hoogte" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Nieuwe app installeren" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Geïnstalleerd" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Geïnstalleerde versie: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Desktopupdate {version} installeren…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Desktopupdate installeren…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Latentiegrafiek" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Standaard van Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-pakket" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Abonnement beheren" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Handmatige desktopupdate" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Inhoud voor volwassenen en inhoudswaarschuwingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Toegangscontrole voor kanalen met inhoud voor volwassenen" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Controles voor inhoud voor volwassenen zijn momenteel alleen beschikbaar voor gebruikers in het Verenigd Koninkrijk." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Toegangscontrole voor media voor volwassenen" @@ -22888,13 +22813,13 @@ msgstr "Dempen" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Geluid dempen" @@ -23316,16 +23241,6 @@ msgstr "Voorlezen" msgid "Native title bar" msgstr "Systeemeigen titelbalk" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Voortgang van update van computerapp" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Updater van computerapp gereed" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Netwerkfout" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Netwerk en prestaties" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nieuwe gebruikers kunnen nu niet deelnemen. Je kunt nog steeds een account aanmaken of inloggen en deze link later opnieuw proberen." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nieuwe versie" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nee" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Geen {attachFilesPermission}-machtiging" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Geen {sendMessagesPermission}-machtiging" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Geen beschrijving." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Geen desktopupdate beschikbaar." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Geen webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "In-app-meldingen zonder verwerking" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Datumkiezer openen" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Downloads voor desktop openen" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Instellingen openen" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Open softwarecentrum" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Gebruikersmenu openen voor {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Video openen" @@ -26558,9 +26473,9 @@ msgstr "Selectie afspelen" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Video afspelen" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premiumvoordelen uitgeschakeld" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium sinds" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premiumstatus gereset in de backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premiumtype" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium tot datum" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Voorbereiden" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulier om je profiel aan te passen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Waarschuwing profielgegevens" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profielprivacy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Laadplaceholders voor profielen" @@ -28223,18 +28138,13 @@ msgstr "Opnieuw laden" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Laad {PRODUCT_NAME} opnieuw om de wijziging van de spellingscontrolemethode volledig toe te passen. Wisselen tussen spellingscontrole in de app en die van het systeem vereist dat de renderer opnieuw wordt geladen, omdat Electron tijdens gebruik niet van aanbieder kan wisselen." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Herlaad {productName} om de bijgewerkte modules te gebruiken" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Herlaad {productName} om de webupdate te gebruiken" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Herlaad {productName} om de webupdate {version} te gebruiken" @@ -29142,7 +29052,7 @@ msgstr "Opnieuw verzonden" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Opnieuw instellen" @@ -29475,26 +29385,11 @@ msgstr "Respecteer de intentie van de afzender, zonder waarschuwing wanneer die msgid "Restart {appName}" msgstr "Herstart {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Herstart {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Start {productName} opnieuw op om deze wijziging toe te passen, omdat Linux-desktopomgevingen tijdens gebruik niet betrouwbaar pictogrammen in het systeemvak kunnen toevoegen of verwijderen." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Start {productName} opnieuw op om de desktopupdate te installeren" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Start {productName} opnieuw op om de desktopupdate {version} te installeren" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Verbanning van {0} opgeheven" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} seconden terugspoelen" @@ -29866,7 +29761,7 @@ msgstr "Roemeens" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Rechtsom draaien" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rijen per pagina" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-pakket" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Zelf hosten instellen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Zelfgehoste modus" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Zelfgehoste modus forceren" @@ -32212,8 +32107,8 @@ msgstr "Mijn gedeelde scherm tonen" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Toon mezelf als typend" @@ -32675,7 +32570,7 @@ msgstr "Overslaan" msgid "Skip \"Mark all as read\" confirmation" msgstr "Bevestiging voor \"Alles als gelezen markeren\" overslaan" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Bijsnijden overslaan" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Externe linkwaarschuwing overslaan voor alle domeinen" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Sla de netwerkaanroep over wanneer een melding in de app wordt ingediend. Het proces gaat wel door naar het bevestigingsscherm, zodat je de interface kunt uitproberen, maar er wordt niets naar het veiligheidsteam verstuurd." @@ -32752,8 +32647,8 @@ msgstr "Slovenië" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Trage bijlage-upload" @@ -32769,29 +32664,29 @@ msgstr "Rustig aan — wacht even voordat je het opnieuw probeert." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Trage bewerking van bericht" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Berichten langzaam laden" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Berichten langzaam verzenden" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Langzaam profiel laden" @@ -32807,7 +32702,7 @@ msgstr "Slowmodus · wacht {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmodus actief" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmodus is ingesteld op {durationLabel}. Wacht voordat je nog een bericht verzendt." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Resterende tijd voor slowmodus" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Systeemvak" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Systeembeheerde installatie" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tik om een notitie toe te voegen" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-archief" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "De community die je zoekt is mogelijk verwijderd of je hebt er geen toegang toe." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "De desktopupdate kon niet worden gedownload. Probeer het opnieuw via de updateknop wanneer je verbinding stabiel is." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "De desktopupdate is gedownload. Herstart {productName} om de installatie te voltooien." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Het gedownloade bestand is opgeslagen op je computer. Installeer het met je normale pakketbeheerder." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Deze actie kan niet ongedaan worden gemaakt. Alle bijbehorende gegevens, inclusief de botgebruiker, worden permanent verwijderd." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Deze animatie is te lang of te groot om bij te snijden. Probeer een korter of kleiner bestand." @@ -35549,7 +35439,7 @@ msgstr "Deze bot vraagt om beheerdersrechten. Geef deze alleen als je de ontwikk #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Deze browser kan geen geanimeerde {avifFormatLabel}-bestanden bijsnijden. Upload in plaats daarvan een GIF of WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Deze browserconsole is een ontwikkelaarstool." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Deze browser heeft WebAssembly uitgeschakeld, dus geanimeerde afbeeldingen kunnen niet worden bijgesneden." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Dit gesprek is niet meer beschikbaar." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Deze computerapp kan geen updates binnen {productName} installeren. Download het nieuwste installatieprogramma voor de computer." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Deze desktop biedt geen systeembrede sneltoetsen. Sneltoetsen werken nog steeds als {productName} actief is." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Deze ontwikkelversie kan zichzelf niet bijwerken. Download een installatieprogramma voor de computer om het updateproces te controleren." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Deze overdrachtscode is verlopen. Genereer een nieuwe om verder te gaan." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Deze afbeelding kon niet worden gelezen. Mogelijk is deze beschadigd." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Deze installatie wordt beheerd door je systeem. Werk {productName} bij via je softwarecentrum of pakketbeheerder." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Drempeldatum kan niet in de toekomst liggen" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatuur voor {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Titelbalk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Titelbalkplatform" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Camera in- of uitschakelen" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Bedieningselementen tonen/verbergen" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografie" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI-componenten" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "VK-regio" @@ -37528,7 +37418,7 @@ msgstr "Ongecategoriseerd" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Account met onvoltooide registratie" @@ -37689,7 +37579,7 @@ msgstr "Universeel alternatief. Laagste kwaliteit, maar werkt overal." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Onbekend" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Onbekende uitnodiging" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Onbekend berichttype" @@ -37893,10 +37783,10 @@ msgstr "Dempen opheffen" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Geluid inschakelen" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Alleen ongelezen DM's" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Aantal ongelezen cadeaus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Ongelezen cadeaus" @@ -38267,10 +38157,20 @@ msgstr "Update {productName} om dit bericht te bekijken." msgid "Update app" msgstr "App bijwerken" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Update beschikbaar" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Mijn status bijwerken" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Nu updaten" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Beleid bijgewerkt" msgid "Updated saved media" msgstr "Opgeslagen media bijgewerkt" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Updaterstatus" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "De aangepaste URL mag alleen alfanumerieke tekens en koppeltekens bevatten. Koppeltekens mogen niet aan het begin of einde staan." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Opmerking over de aangepaste URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verificatie en lidmaatschapsbarrières" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verificatiebarrière" @@ -39438,7 +39333,7 @@ msgstr "Levendigheid" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videovoorbeeld" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videovoortgang" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Video-instellingen" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videominiatuur" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-badge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-badge-ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Bevestiging spraakverbinding" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Foutopsporing spraakverbinding" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Spraakbericht" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Speler voor spraakbericht" @@ -40500,11 +40395,6 @@ msgstr "Zoeken op internet" msgid "Web search provider" msgstr "Webzoekmachine" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web-updater gereed" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Oei, dit is te veel" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Wordt opgezegd" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoomen" diff --git a/fluxer_app/src/features/i18n/locales/no/messages.po b/fluxer_app/src/features/i18n/locales/no/messages.po index 6702287bc..d2d1ece46 100644 --- a/fluxer_app/src/features/i18n/locales/no/messages.po +++ b/fluxer_app/src/features/i18n/locales/no/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanal følger} other {# kanaler følger}} denne k msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# fellesskap funnet} other {# fellesskap funnet}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# fellesskap er midlertidig utilgjengelig på grunn av en feil i flukskondensatoren.} other {# fellesskap er midlertidig utilgjengelige på grunn av en feil i flukskondensatoren.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} kan ikke starte en trygg, isolert opptaksrute for lyden fr msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} kan ikke bruke en maskinvareenkoder til dette og vil derfor bruke prosessoren din." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} lukkes, installerer oppdateringen og åpnes igjen." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} kunne ikke kontakte oppdateringstjenesten. Sjekk tilkoblingen og prøv igjen." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} kunne ikke starte på nytt med den nedlastede oppdateringen. Prøv igjen med oppdateringsknappen." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "et vertsnavn, f.eks. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "En oppdatering av skrivebordsappen for Linux er tilgjengelig. Velg pakkeformatet for dette systemet, så lagrer {productName} det lokalt." @@ -4597,11 +4597,6 @@ msgstr "Svar på det innkommende anropet" msgid "Any key" msgstr "Valgfri tast" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Minst én oppdatering er klar" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Pakketap for lyd:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Lydavspiller" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Lydbehandling (fokusert tale)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Lydfremdrift" @@ -5551,7 +5546,7 @@ msgstr "AV1 (må aktiveres)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Tilgjengelig" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Utestengelser" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Nedtelling for barriere" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Fakturering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Faktureringssyklus" @@ -6867,7 +6862,7 @@ msgstr "Kan ikke laste opp filer her" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Lukket tråden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Skyopplasting" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus på skrivefeltet" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimerer" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Kunne ikke endre prisen din" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Kunne ikke se etter oppdateringer" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Kunne ikke opprette gjenopprettingssettet ditt. Du kan opprette et senere i kontoinnstillingene dine." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Kunne ikke beskjære bildet" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Kunne ikke slette meldingene dine" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Kunne ikke laste ned oppdateringen til skrivebordsappen" @@ -10841,11 +10836,6 @@ msgstr "Kunne ikke starte betaling" msgid "Couldn't start the connection" msgstr "Kunne ikke starte tilkoblingen" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Kunne ikke starte oppdateringen av skrivebordsappen" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Beskjær invitasjonsbakgrunn" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Forhåndsvisning av beskjæring" @@ -11343,12 +11333,12 @@ msgstr "Beskjær profilbanner" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Det beskårne bildet er for stort. Velg et mindre område eller en mindre fil (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Beskjærer {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Moderatorene har slått av lyden" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-pakke" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Skrivebordsapp" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Skrivebordsappen er oppdatert" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Oppstart på datamaskin" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Oppdatering {version} til skrivebordsappen er tilgjengelig. Velg en Linux-pakke." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Oppdatering til skrivebordsappen er tilgjengelig" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "En oppdatering til skrivebordsappen er tilgjengelig. Velg en Linux-pakke." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Oppdatering til skrivebordsappen er klar" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Versjon {version} av skrivebordsappen er lastet ned. Start {productName} på nytt for å fullføre installasjonen." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Utviklermodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Utvikleralternativ" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Utviklerverktøy er ikke tilgjengelige" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Utviklingsversjon" @@ -13604,26 +13584,6 @@ msgstr "Last ned-knapp" msgid "Download desktop app" msgstr "Last ned skrivebordsappen" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Last ned oppdatering til skrivebordsappen" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Last ned oppdatering til skrivebordsappen ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Last ned oppdatering {version} til skrivebordsappen" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Last ned oppdatering {version} til skrivebordsappen ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Last ned eksport" @@ -13688,26 +13648,6 @@ msgstr "Last ned kildekart for å få stakkspor og utviklerverktøy til å peke msgid "Download video" msgstr "Last ned video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Laster ned oppdatering {version} til skrivebordsappen: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Laster ned oppdatering til skrivebordsappen: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Laster ned oppdatering til skrivebordsappen: {percent} % ({formatBytes} / {formatBytes2} med {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Laster ned oppdatering til skrivebordsappen …" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-postverifisering kreves" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-post bekreftet" @@ -15966,7 +15906,7 @@ msgstr "Funksjonen er midlertidig deaktivert" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funksjoner" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Tvangsaktivert" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Fremtving mislykkede meldingsinnlastinger" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Fremtving mislykkede meldingssendinger" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Simuler innlasting av GIF-velgeren" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Fremtving plassholder ved innlasting" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Simuler voksent medieinnhold" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Fremtving manglende tillatelse for «{permissionName}»" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Tving advarsel om profildata" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Fremtving plassholdere for profiler" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Tving frem visning" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Fremtving varsel om egendefinert URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Vis alltid taletilkobling" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Fremtving aktiv sakte modus" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Tving ukjent meldingstype" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Simuler at en oppdatering er klar" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Videresend" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spol fremover {defaultSeekAmount} sekunder" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Genererer kode …" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Overlegg for geoblokkering" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-alternativer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-velgeren lastes inn" @@ -17226,14 +17161,14 @@ msgstr "Gavekoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gavevarighet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gavebeholdning" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Gaven ble ikke funnet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Gave innløst" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Har" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Har kjøpt tidligere" @@ -17892,7 +17827,7 @@ msgstr "Hjerte" msgid "Hebrew" msgstr "Hebraisk" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Høyde" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Installer den nye appen" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installert" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installert versjon: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installerer oppdatering {version} til skrivebordsappen …" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installerer oppdatering til skrivebordsappen …" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Forsinkelsesgraf" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux – standard" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-pakke" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Administrer abonnementet ditt" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manuell oppdatering av skrivebordsappen" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Voksent innhold og innholdsadvarsler" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Tilgangskontroll for kanaler med voksent innhold" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Kontroller for vokseninnhold er foreløpig bare tilgjengelige i Storbritannia." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Tilgangskontroll for voksent medieinnhold" @@ -22888,13 +22813,13 @@ msgstr "Demp" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Slå av lyden" @@ -23316,16 +23241,6 @@ msgstr "Opplesning" msgid "Native title bar" msgstr "Systemets tittellinje" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Fremdrift for oppdatering av skrivebordsappen" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Skrivebordsoppdatering klar" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Nettverksfeil" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Nettverk og ytelse" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nye brukere kan ikke bli med akkurat nå. Du kan fortsatt opprette en konto eller logge på, og deretter prøve denne lenken igjen senere." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Ny versjon" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nei" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Mangler tillatelsen «{attachFilesPermission}»" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Mangler tillatelsen «{sendMessagesPermission}»" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Ingen beskrivelse." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Ingen oppdatering av skrivebordsappen er tilgjengelig." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Ingen webhooker" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Simuler rapportering i appen uten å sende" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Åpne datovelger" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Åpne nedlastinger for datamaskin" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Åpne innstillinger" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Åpne programvaresenteret" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Åpne brukermeny for {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Åpne video" @@ -26558,9 +26473,9 @@ msgstr "Spill av valgt del" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Spill av video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premiumfordeler deaktivert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Startdato for Premium" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premiumstatus tilbakestilt på serveren." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premiumtype" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Sluttdato for Premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Forbereder" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Skjema for profiltilpasning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Advarsel om profildata" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profilsynlighet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Plassholdere for profiler" @@ -28223,18 +28138,13 @@ msgstr "Last inn på nytt" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Last inn {PRODUCT_NAME} på nytt for å ta den nye stavekontrollmotoren i bruk. Bytte mellom stavekontroll i appen og systemets stavekontroll krever at visningsprosessen lastes inn på nytt, fordi Electron ikke kan bytte leverandør mens den kjører." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Last ned {productName} på nytt for å bruke de oppdaterte modulene" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Last inn {productName} på nytt for å bruke oppdateringen fra nettet" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Last inn {productName} på nytt for å bruke nettoppdateringen {version}" @@ -29142,7 +29052,7 @@ msgstr "Sendt på nytt" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Tilbakestill" @@ -29475,26 +29385,11 @@ msgstr "Respekter avsenderens intensjon, uten advarsel når de slår @-omtalen a msgid "Restart {appName}" msgstr "Start {appName} på nytt" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Start {productName} på nytt" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Start {productName} på nytt for at denne endringen skal tre i kraft, fordi Linux-skrivebord ikke pålitelig kan legge til eller fjerne systemstatusfeltikoner under kjøring." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Start {productName} på nytt for å installere skrivebordsoppdateringen" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Start {productName} på nytt for å installere skrivebordsoppdateringen {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Opphevet utestengelse for {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spol {defaultSeekAmount} sekunder tilbake" @@ -29866,7 +29761,7 @@ msgstr "Rumensk" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Roter med klokken" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rader per side" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-pakke" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Oppsett av egen server" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Modus for egen server" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Overstyring av modus for egen server" @@ -32212,8 +32107,8 @@ msgstr "Vis skjermdelingen min" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Vis skriveindikator for meg selv" @@ -32675,7 +32570,7 @@ msgstr "Hopp over" msgid "Skip \"Mark all as read\" confirmation" msgstr "Hopp over bekreftelse for «Merk alle som lest»" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Hopp over beskjæring" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Hopp over advarsel om ekstern lenke for alle domener" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Hopp over nettverkskallet når en rapport i appen sendes inn. Flyten går fortsatt videre til bekreftelsesskjermen slik at du kan prøve brukergrensesnittet, men ingenting sendes til sikkerhetsteamet." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Treg opplasting av vedlegg" @@ -32769,29 +32664,29 @@ msgstr "Ta det litt roligere – vent et øyeblikk før du prøver igjen." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Treg meldingsredigering" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Treg meldingsinnlasting" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Treg sending av meldinger" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Treg profilinnlasting" @@ -32807,7 +32702,7 @@ msgstr "Sakte modus · vent {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Sakte modus er aktiv" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Sakte modus er satt til {durationLabel}. Vent før du sender en ny melding." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Gjenstående ventetid i sakte modus" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Systemstatusfelt" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Systemadministrert installasjon" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Trykk for å legge til et notat" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-arkiv" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Fellesskapet du leter etter kan ha blitt slettet, eller du har kanskje ikke tilgang til det." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Skrivebordsoppdateringen kunne ikke lastes ned. Prøv igjen fra oppdateringsknappen når tilkoblingen din er stabil." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Oppdateringen av skrivebordsappen er lastet ned. Start {productName} på nytt for å fullføre installasjonen." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Den nedlastede filen er lagret på datamaskinen din. Installer den med din vanlige pakkebehandler." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Denne handlingen kan ikke angres. Alle tilknyttede data, inkludert bot-brukeren, blir slettet permanent." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Denne animasjonen er for lang eller for stor til å beskjæres. Prøv en kortere eller mindre fil." @@ -35549,7 +35439,7 @@ msgstr "Denne boten ber om administratortillatelsen. Gi den bare denne tillatels #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Denne nettleseren kan ikke beskjære animerte {avifFormatLabel}-filer. Last opp en GIF eller WebP i stedet." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Denne nettleserkonsollen er et utviklerverktøy." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Nettleseren din har WebAssembly deaktivert, så animerte bilder kan ikke beskjæres." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Denne samtalen er ikke lenger tilgjengelig." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Denne skrivebordsversjonen kan ikke installere oppdateringer i {productName}. Last ned den nyeste installasjonspakken for skrivebordsappen i stedet." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Dette skrivebordsmiljøet tilbyr ikke systemomfattende snarveier. Snarveier fungerer fortsatt når {productName} er i fokus." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Denne utviklingsversjonen kan ikke oppdatere seg selv. Last ned en installasjonspakke for skrivebordsappen for å prøve oppdateringsflyten." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Denne overføringskoden har utløpt. Generer en ny for å fortsette." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Dette bildet kunne ikke leses. Det kan være skadet." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Denne installasjonen administreres av systemet ditt. Oppdater {productName} via programvaresenteret eller pakkebehandleren." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Grensedatoen kan ikke ligge i fremtiden" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatyrbilde for {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Tittellinje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plattform for tittellinje" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Slå kamera av/på" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Vis/skjul kontroller" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografi" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI-komponenter" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Plassering i Storbritannia" @@ -37528,7 +37418,7 @@ msgstr "Ukategorisert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Uregistrert konto" @@ -37689,7 +37579,7 @@ msgstr "Universelt reservealternativ. Lavest kvalitet, men fungerer overalt." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Ukjent" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Ukjent invitasjon" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Ukjent meldingstype" @@ -37893,10 +37783,10 @@ msgstr "Opphev demping" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Slå på lyden" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Kun uleste direktemeldinger" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Antall uleste gaver" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Uleste gaver i beholdningen" @@ -38267,10 +38157,20 @@ msgstr "Oppdater {productName} for å se denne meldingen." msgid "Update app" msgstr "Oppdater appen" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Oppdatering tilgjengelig" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Oppdater statusen min" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Oppdater nå" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Oppdaterte retningslinjer" msgid "Updated saved media" msgstr "Lagrede medier er oppdatert" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Oppdateringstilstand" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Den egendefinerte URL-en kan bare inneholde alfanumeriske tegn og bindestreker som ikke står først eller sist." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Ansvarsfraskrivelse for egendefinert URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verifiserings- og medlemskapsbarrierer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verifiseringsbarriere" @@ -39438,7 +39333,7 @@ msgstr "Fargestyrke" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Forhåndsvisning av video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videofremdrift" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videoinnstillinger" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videominiatyrbilde" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-merke" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-merke-ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Bekreftelse av taletilkobling" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Feilsøking av taletilkobling" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Talemelding" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Avspiller for talemelding" @@ -40500,11 +40395,6 @@ msgstr "Nettsøk" msgid "Web search provider" msgstr "Leverandør for nettsøk" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Oppdatering av nettappen klar" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Oi, dette var mye" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Vil avsluttes" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/pl/messages.po b/fluxer_app/src/features/i18n/locales/pl/messages.po index 6f6d273b8..3b5baaec5 100644 --- a/fluxer_app/src/features/i18n/locales/pl/messages.po +++ b/fluxer_app/src/features/i18n/locales/pl/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanał obserwuje} other {# kanałów obserwuje}} msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Znaleziono # społeczność} few {Znaleziono # społeczności} many {Znaleziono # społeczności} other {Znaleziono # społeczności}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# społeczność jest tymczasowo niedostępna z powodu awarii \"kondensatora strumienia\".} few {# społeczności są tymczasowo niedostępne z powodu awarii \"kondensatora strumienia\".} many {# społeczności jest tymczasowo niedostępnych z powodu awarii \"kondensatora strumienia\".} other {# społeczności są tymczasowo niedostępne z powodu awarii \"kondensatora strumienia\".}}" @@ -1884,16 +1884,16 @@ msgstr "Aplikacja {productName} nie może uruchomić bezpiecznego, odizolowanego msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} nie może użyć sprzętowego kodera, więc wykorzysta procesor." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} zamknie się, zainstaluje aktualizację i otworzy ponownie." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} nie mógł nawiązać połączenia z serwerem aktualizacji. Sprawdź połączenie i spróbuj ponownie." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Nie udało się uruchomić {productName} z pobraną aktualizacją. Spróbuj ponownie, klikając przycisk aktualizacji." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "nazwa hosta, np. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Dostępna jest aktualizacja aplikacji komputerowej dla systemu Linux. Wybierz format pakietu dla tego systemu, a {productName} zapisze go lokalnie." @@ -4597,11 +4597,6 @@ msgstr "Odbierz połączenie przychodzące" msgid "Any key" msgstr "Dowolny klawisz" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Dowolny mechanizm aktualizacji gotowy" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Utrata pakietów audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Odtwarzacz audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Przetwarzanie dźwięku (skupienie na głosie)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Postęp odtwarzania audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (wymaga włączenia)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Dostępne" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Zbanowani" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Odliczanie bariery" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Płatności" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Cykl rozliczeniowy" @@ -6867,7 +6862,7 @@ msgstr "Nie można tu przesyłać plików" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Zamknięto wątek" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Przesyłanie do chmury" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus edytora wiadomości" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Kompresowanie" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nie udało się zmienić ceny" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nie udało się sprawdzić dostępności aktualizacji" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nie udało się utworzyć zestawu odzyskiwania. Możesz go utworzyć później w ustawieniach konta." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Nie udało się przyciąć obrazu" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nie udało się usunąć Twoich wiadomości" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nie udało się pobrać aktualizacji aplikacji komputerowej" @@ -10841,11 +10836,6 @@ msgstr "Nie udało się rozpocząć płatności" msgid "Couldn't start the connection" msgstr "Nie udało się nawiązać połączenia" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nie udało się uruchomić aktualizacji aplikacji komputerowej" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Przytnij tło zaproszenia" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Podgląd kadrowania" @@ -11343,12 +11333,12 @@ msgstr "Przytnij baner profilowy" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Przycięty obraz jest za duży. Wybierz mniejszy obszar lub mniejszy plik (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Przycinanie {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Dźwięk wyłączony przez moderatorów" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Pakiet DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplikacja komputerowa" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Aplikacja komputerowa jest aktualna" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Uruchamianie z systemem" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Dostępna aktualizacja aplikacji komputerowej {version}. Wybierz pakiet dla systemu Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Dostępna aktualizacja aplikacji komputerowej" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Dostępna aktualizacja aplikacji. Wybierz pakiet dla systemu Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Aktualizacja aplikacji komputerowej jest gotowa" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Pobrano wersję {version} aplikacji komputerowej. Uruchom ponownie {productName}, aby dokończyć instalację." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Tryb programisty" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opcja dla programistów" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Narzędzia dla programistów niedostępne" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Kompilacja deweloperska" @@ -13604,26 +13584,6 @@ msgstr "Przycisk pobierania" msgid "Download desktop app" msgstr "Pobierz aplikację komputerową" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Pobierz aktualizację aplikacji komputerowej" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Pobierz aktualizację aplikacji komputerowej ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Pobierz aktualizację aplikacji komputerowej {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Pobierz aktualizację aplikacji komputerowej {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Pobierz eksport" @@ -13688,26 +13648,6 @@ msgstr "Pobierz mapy źródłowe, aby ślady stosu i narzędzia deweloperskie ws msgid "Download video" msgstr "Pobierz wideo" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Pobieranie aktualizacji aplikacji komputerowej {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Pobieranie aktualizacji aplikacji: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Pobieranie aktualizacji aplikacji: {percent}% ({formatBytes} / {formatBytes2} z prędkością {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Pobieranie aktualizacji aplikacji…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Wymagana weryfikacja e-maila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail zweryfikowany" @@ -15966,7 +15906,7 @@ msgstr "Funkcja tymczasowo wyłączona" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funkcje" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Wymuszone włączenie" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Wymuś błędy wczytywania wiadomości" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Wymuś błędy wysyłania wiadomości" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Wymuś ładowanie selektora GIF-ów" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Wymuś szkielet ładowania" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Wymuś oznaczenie multimediów jako treści dla dorosłych" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Wymuś brak uprawnienia {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Wymuś ostrzeżenie o danych profilu" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Wymuś szkielety profilu" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Wymuś pokazanie" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Wymuś wyświetlanie zastrzeżenia dotyczącego niestandardowego adresu URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Wymuś wyświetlanie połączenia głosowego" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Wymuś aktywny tryb wolny" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Wymuś nieznany typ wiadomości" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Wymuś gotowość aktualizacji" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Przekaż dalej" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Przewiń do przodu o {defaultSeekAmount} sekund" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Generowanie kodu…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Nakładka blokady geograficznej" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opcje GIF-a" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Ładowanie selektora GIF-ów" @@ -17226,14 +17161,14 @@ msgstr "Kody podarunkowe" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Czas trwania prezentu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Ekwipunek prezentów" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Nie znaleziono prezentu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Prezent odebrany" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Ma" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Ma historię zakupów" @@ -17892,7 +17827,7 @@ msgstr "Serce" msgid "Hebrew" msgstr "Hebrajski" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Wysokość" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Zainstaluj nową aplikację" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Zainstalowano" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Zainstalowana wersja: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instalowanie aktualizacji aplikacji komputerowej {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instalowanie aktualizacji aplikacji komputerowej…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Wykres opóźnień" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Domyślne urządzenie audio systemu Linux." #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Pakiet dla systemu Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Zarządzaj subskrypcją" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Ręczna aktualizacja aplikacji komputerowej" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Treści dla dorosłych i ostrzeżenia o treści" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Potwierdzenie dostępu do kanału z treściami dla dorosłych" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Weryfikacja dostępu do treści dla dorosłych jest obecnie dostępna tylko w Wielkiej Brytanii." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Potwierdzenie dostępu do multimediów dla dorosłych" @@ -22888,13 +22813,13 @@ msgstr "Wycisz" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Wycisz dźwięk" @@ -23316,16 +23241,6 @@ msgstr "Narracja" msgid "Native title bar" msgstr "Systemowy pasek tytułu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Postęp natywnego aktualizatora" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Natywny aktualizator gotowy" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Błąd sieci" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Sieć i wydajność" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nowi użytkownicy nie mogą teraz dołączyć. Nadal możesz utworzyć konto lub się zalogować, a później spróbować ponownie użyć tego linku." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nowa wersja" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Brak uprawnienia „{attachFilesPermission}”" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Brak uprawnienia „{sendMessagesPermission}”" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Brak opisu." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Brak dostępnej aktualizacji aplikacji komputerowej." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Brak webhooków" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Symuluj zgłoszenia w aplikacji bez ich wysyłania" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Otwórz selektor daty" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Otwórz stronę pobierania aplikacji komputerowej" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Otwórz ustawienia" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Otwórz centrum oprogramowania" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Otwórz menu użytkownika {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Otwórz wideo" @@ -26558,9 +26473,9 @@ msgstr "Odtwórz zaznaczenie" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Odtwórz wideo" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Korzyści Premium wyłączone" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium od" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Stan Premium zresetowany po stronie serwera." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Typ Premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium ważne do" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Przygotowywanie" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formularz dostosowywania profilu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Ostrzeżenie o danych profilowych" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Prywatność profilu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Szkielety profili" @@ -28223,18 +28138,13 @@ msgstr "Załaduj ponownie" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Przeładuj {PRODUCT_NAME}, aby w pełni zastosować zmianę silnika. Przełączanie między sprawdzaniem pisowni w aplikacji a sprawdzaniem systemowym wymaga przeładowania procesu renderującego, ponieważ Electron nie może zmieniać dostawców w trakcie działania." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Odśwież {productName}, aby użyć zaktualizowanych modułów" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Przeładuj {productName}, aby zastosować aktualizację wersji webowej" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Przeładuj {productName}, aby zastosować aktualizację wersji webowej {version}" @@ -29142,7 +29052,7 @@ msgstr "Wysłano ponownie" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Resetuj" @@ -29475,26 +29385,11 @@ msgstr "Uszanuj intencje nadawcy, bez ostrzeżenia, gdy włączy lub wyłączy w msgid "Restart {appName}" msgstr "Uruchom ponownie {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Uruchom ponownie {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Uruchom ponownie {productName}, aby zastosować tę zmianę, ponieważ środowiska graficzne systemu Linux nie zawsze poprawnie dodają i usuwają ikony zasobnika podczas działania aplikacji." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Uruchom ponownie {productName}, aby zainstalować aktualizację aplikacji komputerowej" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Uruchom ponownie {productName}, aby zainstalować aktualizację {version} aplikacji komputerowej" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Cofnięto bana dla {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Przewiń do tyłu o {defaultSeekAmount} sekund" @@ -29866,7 +29761,7 @@ msgstr "Rumuński" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Obróć zgodnie z ruchem wskazówek zegara" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Wiersze na stronę" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Pakiet RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Konfiguracja samodzielnego hostingu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Tryb samodzielnego hostowania" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Wymuszenie trybu samodzielnego hostowania" @@ -32212,8 +32107,8 @@ msgstr "Pokaż mój udostępniony ekran" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Pokaż, że piszę" @@ -32675,7 +32570,7 @@ msgstr "Pomiń" msgid "Skip \"Mark all as read\" confirmation" msgstr "Pomiń potwierdzenie „Oznacz wszystkie jako przeczytane”" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Pomiń kadrowanie" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Pomiń ostrzeżenie o linkach zewnętrznych dla wszystkich domen" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Pomiń żądanie sieciowe przy wysyłaniu zgłoszenia w aplikacji. Nadal pojawi się ekran powodzenia, aby umożliwić sprawdzenie interfejsu, ale nic nie zostanie wysłane do zespołu ds. bezpieczeństwa." @@ -32752,8 +32647,8 @@ msgstr "Słowenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Wolne wysyłanie załączników" @@ -32769,29 +32664,29 @@ msgstr "Zwolnij — poczekaj chwilę, zanim spróbujesz ponownie." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Wolna edycja wiadomości" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Wolne ładowanie wiadomości" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Wolne wysyłanie wiadomości" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Wolne ładowanie profilu" @@ -32807,7 +32702,7 @@ msgstr "Tryb wolny · czekaj {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Tryb wolny aktywny" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Tryb wolny jest ustawiony na {durationLabel}. Poczekaj przed wysłaniem kolejnej wiadomości." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Pozostały czas oczekiwania w trybie wolnym" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Zasobnik systemowy" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalacja zarządzana przez system" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Dotknij, aby dodać notatkę" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Archiwum tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Społeczność, której szukasz, mogła zostać usunięta lub możesz nie mieć do niej dostępu." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Nie udało się pobrać aktualizacji aplikacji komputerowej. Gdy połączenie będzie stabilne, spróbuj ponownie za pomocą przycisku aktualizacji." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Aktualizacja aplikacji na komputer została pobrana. Uruchom ponownie {productName}, aby dokończyć instalację." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Pobrany plik został zapisany na Twoim komputerze. Zainstaluj go za pomocą swojego menedżera pakietów." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Tej czynności nie można cofnąć. Wszystkie powiązane dane, w tym konto bota, zostaną trwale usunięte." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ten plik animacji jest za długi lub za duży, aby go przyciąć. Spróbuj użyć krótszego lub mniejszego pliku." @@ -35549,7 +35439,7 @@ msgstr "Ten bot prosi o uprawnienia administratora. Udziel ich tylko, jeśli w p #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Ta przeglądarka nie może przycinać animowanych plików {avifFormatLabel}. Zamiast tego prześlij plik GIF lub WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Ta konsola przeglądarki to narzędzie dla programistów." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Ta przeglądarka ma wyłączony WebAssembly, więc animowane obrazy nie mogą być przycinane." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Ta rozmowa jest już niedostępna." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Ta wersja aplikacji komputerowej nie pozwala instalować aktualizacji wewnątrz {productName}. Pobierz najnowszy instalator aplikacji komputerowej." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "To środowisko graficzne nie obsługuje skrótów globalnych. Skróty nadal działają, gdy okno {productName} jest aktywne." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ta kompilacja deweloperska nie może się zaktualizować. Pobierz instalator na komputer, aby przetestować proces aktualizacji." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Ten kod przekazania wygasł. Wygeneruj nowy, aby kontynuować." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Nie można odczytać tego obrazu. Może być uszkodzony." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Ta instalacja jest zarządzana przez Twój system. Zaktualizuj {productName} za pomocą centrum oprogramowania lub menedżera pakietów." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Data graniczna nie może być w przyszłości" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura: {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Pasek tytułowy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Platforma paska tytułu" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Przełącz kamerę" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Przełącz elementy sterujące" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografia" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Komponenty interfejsu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Lokalizacja w Wielkiej Brytanii" @@ -37528,7 +37418,7 @@ msgstr "Bez kategorii" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Konto z niedokończoną rejestracją" @@ -37689,7 +37579,7 @@ msgstr "Uniwersalna opcja awaryjna. Najniższa jakość, ale działa wszędzie." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Nieznany" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Nieznane zaproszenie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Nieznany typ wiadomości" @@ -37893,10 +37783,10 @@ msgstr "Cofnij wyciszenie" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Włącz dźwięk" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Tylko nieprzeczytane rozmowy prywatne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Liczba nieobejrzanych prezentów" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Nieobejrzane prezenty w ekwipunku" @@ -38267,10 +38157,20 @@ msgstr "Zaktualizuj {productName}, aby wyświetlić tę wiadomość." msgid "Update app" msgstr "Zaktualizuj aplikację" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Dostępna aktualizacja" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Zaktualizuj mój status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Zaktualizuj teraz" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Zaktualizowane zasady" msgid "Updated saved media" msgstr "Zaktualizowano zapisane multimedia" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Stan aktualizatora" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Niestandardowy adres URL może zawierać tylko litery, cyfry i łączniki, przy czym łączniki nie mogą być na początku ani na końcu." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Zastrzeżenie dotyczące niestandardowego adresu URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Weryfikacja i ograniczenia członkostwa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Blokada wymagająca weryfikacji" @@ -39438,7 +39333,7 @@ msgstr "Żywość" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Wideo" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Podgląd wideo" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Postęp wideo" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Ustawienia wideo" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura wideo" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Odznaka Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Identyfikator odznaki Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Potwierdzenie połączenia głosowego" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Debugowanie połączenia głosowego" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Wiadomość głosowa" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Odtwarzacz wiadomości głosowych" @@ -40500,11 +40395,6 @@ msgstr "Wyszukiwanie w sieci" msgid "Web search provider" msgstr "Dostawca wyszukiwania w sieci" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Aktualizacja wersji internetowej gotowa" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Ojej, to jest za dużo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Zaplanowane anulowanie" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Powiększenie" diff --git a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po index 95e07a585..0bd0c13a5 100644 --- a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po +++ b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# canal segue} other {# canais seguem}} este canal. msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, =0 {# comunidades encontradas} one {# comunidade encontrada} other {# comunidades encontradas}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, =0 {# comunidades estão temporariamente indisponíveis devido a um defeito no capacitor de fluxo.} one {# comunidade está temporariamente indisponível devido a um defeito no capacitor de fluxo.} other {# comunidades estão temporariamente indisponíveis devido a um defeito no capacitor de fluxo.}}" @@ -1884,16 +1884,16 @@ msgstr "O {productName} não pode iniciar uma rota isolada segura para o áudio msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "O {productName} não pode usar um codificador de hardware para isso e usará o seu processador." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} fecha, instala a atualização e abre novamente." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} não conseguiu acessar o serviço de atualização. Verifique sua conexão e tente novamente." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} não conseguiu reiniciar para a atualização baixada. Tente novamente no botão de atualização." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "um nome de host, por exemplo, {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Há uma atualização do aplicativo para Linux. Escolha o formato do pacote para este sistema e o {productName} salvará o arquivo localmente." @@ -4597,11 +4597,6 @@ msgstr "Atender a chamada recebida" msgid "Any key" msgstr "Qualquer tecla" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Qualquer atualizador pronto" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Perda de pacotes de áudio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Reprodutor de áudio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Processamento de áudio (voz focada)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progresso do áudio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (requer ativação)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponível" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Banimentos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Contagem regressiva da barreira" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Cobrança" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Ciclo de cobrança" @@ -6867,7 +6862,7 @@ msgstr "Não é possível enviar arquivos aqui" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Fechou a thread" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Envio para a nuvem" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Foco do editor de mensagens" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Comprimindo" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Não foi possível alterar seu preço" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Não foi possível buscar atualizações" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Não foi possível criar seu kit de recuperação. Você pode criar um mais tarde nas configurações da sua conta." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Não foi possível cortar a imagem" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Não foi possível excluir suas mensagens" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Não foi possível baixar a atualização para computador" @@ -10841,11 +10836,6 @@ msgstr "Não foi possível iniciar a compra" msgid "Couldn't start the connection" msgstr "Não foi possível iniciar a conexão" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Não foi possível iniciar a atualização do aplicativo para computador" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Recortar imagem de fundo do convite" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Prévia do corte" @@ -11343,12 +11333,12 @@ msgstr "Recortar banner do perfil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "A imagem cortada é muito grande. Escolha uma área menor ou um arquivo menor (máx. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Cortando {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Áudio desativado pelos moderadores" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Pacote DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplicativo para computador" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "O aplicativo para computador está atualizado" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Inicialização no computador" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Atualização {version} do aplicativo para computador disponível. Escolha um pacote Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Atualização do aplicativo para computador disponível" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Atualização para computador disponível. Escolha um pacote Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Atualização do aplicativo para computador pronta" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "A versão {version} do aplicativo para computador foi baixada. Reinicie o {productName} para concluir a instalação." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Modo desenvolvedor" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opção do desenvolvedor" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Ferramentas de desenvolvedor indisponíveis" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Versão de desenvolvimento" @@ -13604,26 +13584,6 @@ msgstr "Botão de download" msgid "Download desktop app" msgstr "Baixar app para computador" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Baixar atualização para computador" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Baixar atualização para computador ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Baixar atualização {version} para computador" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Baixar atualização {version} para computador ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Baixar exportação" @@ -13688,26 +13648,6 @@ msgstr "Baixar mapas de origem para que rastros de pilha e ferramentas de desenv msgid "Download video" msgstr "Baixar vídeo" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Baixando atualização para computador {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Baixando atualização para computador: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Baixando atualização do aplicativo: {percent}% ({formatBytes} / {formatBytes2} a {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Baixando atualização para computador…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Verificação de e-mail necessária" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail verificado" @@ -15966,7 +15906,7 @@ msgstr "Recurso temporariamente desativado" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Recursos" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Forçar ativação" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forçar falha no carregamento de mensagens" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forçar falha no envio de mensagens" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forçar carregamento do seletor de GIFs" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forçar esqueleto de carregamento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forçar mídia adulta" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forçar sem a permissão {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forçar aviso de dados do perfil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forçar esqueletos de perfil" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forçar exibição" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forçar exibição do aviso de URL personalizada" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forçar exibição da conexão de voz" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Forçar modo lento ativo" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forçar tipo de mensagem desconhecido" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forçar atualização pronta" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Encaminhar" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Avançar {defaultSeekAmount} segundos" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Gerando código…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Sobreposição de bloqueio geográfico" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opções de GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Carregando seletor de GIFs" @@ -17226,14 +17161,14 @@ msgstr "Códigos de presente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duração do presente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventário de presentes" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Presente não encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Presente resgatado" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Tem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Já comprou" @@ -17892,7 +17827,7 @@ msgstr "Coração" msgid "Hebrew" msgstr "Hebraico" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Altura" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instalar o novo app" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Instalado" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versão instalada: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Instalando atualização {version} do aplicativo para computador…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Instalando atualização do aplicativo…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Gráfico de latência" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Dispositivo de áudio padrão do Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Pacote Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Gerenciar sua assinatura" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Atualização manual do aplicativo para computador" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Conteúdo adulto e avisos de conteúdo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Bloqueio de canal com conteúdo adulto" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "A verificação de conteúdo adulto está disponível apenas no Reino Unido." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Bloqueio de mídia de conteúdo adulto" @@ -22888,13 +22813,13 @@ msgstr "Silenciar" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Desativar áudio" @@ -23316,16 +23241,6 @@ msgstr "Narração" msgid "Native title bar" msgstr "Barra de título nativa" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progresso da atualização nativa" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Atualizador nativo pronto" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Erro de rede" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Rede e desempenho" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Novos usuários não podem entrar agora. Você ainda pode criar uma conta ou fazer login e tentar este link novamente mais tarde." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Nova versão" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Não" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Sem a permissão {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Sem a permissão {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Sem descrição." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nenhuma atualização do aplicativo para computador está disponível." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Nenhum webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Simular denúncias no aplicativo sem enviá-las" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Abrir seletor de data" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Abrir downloads para computador" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Abrir configurações" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Abrir central de software" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Abrir menu do usuário para {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Abrir vídeo" @@ -26558,9 +26473,9 @@ msgstr "Reproduzir seleção" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Reproduzir vídeo" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Vantagens premium desativadas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium desde" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Status premium redefinido no servidor." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Tipo premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Data de fim do Premium" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Preparando" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulário de personalização do perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Aviso de dados do perfil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Privacidade do perfil" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Esqueletos de perfil" @@ -28223,18 +28138,13 @@ msgstr "Recarregar" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Recarregue o {PRODUCT_NAME} para aplicar a mudança de mecanismo. Alternar entre o corretor ortográfico do aplicativo e o do sistema exige recarregar o renderizador, pois o Electron não consegue trocar de provedor durante a execução." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Recarregar o {productName} para usar os módulos atualizados" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Recarregue o {productName} para usar a atualização da versão web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Recarregue o {productName} para usar a atualização da versão {version} na web" @@ -29142,7 +29052,7 @@ msgstr "Reenviado" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Redefinir" @@ -29475,26 +29385,11 @@ msgstr "Respeitar a intenção do remetente, sem aviso quando ele ativar ou desa msgid "Restart {appName}" msgstr "Reiniciar {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Reiniciar {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Reinicie o {productName} para aplicar esta alteração. Os ambientes gráficos do Linux nem sempre conseguem adicionar ou remover ícones da bandeja durante a execução." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Reinicie o {productName} para instalar a atualização do aplicativo para computador" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Reinicie o {productName} para instalar a atualização da versão {version} do aplicativo" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Banimento de {0} revogado" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Voltar {defaultSeekAmount} segundos" @@ -29866,7 +29761,7 @@ msgstr "Romeno" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Girar no sentido horário" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Linhas por página" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Pacote RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configuração de auto-hospedagem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Modo auto-hospedado" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Substituir modo auto-hospedado" @@ -32212,8 +32107,8 @@ msgstr "Mostrar minha tela" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Mostrar que estou digitando" @@ -32675,7 +32570,7 @@ msgstr "Pular" msgid "Skip \"Mark all as read\" confirmation" msgstr "Pular confirmação de \"Marcar tudo como lido\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Pular recorte" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Pular o aviso de link externo para todos os domínios" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Não faz a chamada de rede ao enviar uma denúncia pelo aplicativo. O fluxo ainda avança até a tela de sucesso para permitir testar a interface, mas nada é enviado à equipe de segurança." @@ -32752,8 +32647,8 @@ msgstr "Eslovênia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Upload lento de anexo" @@ -32769,29 +32664,29 @@ msgstr "Vá com calma — espere um momento antes de tentar novamente." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Edição lenta de mensagem" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Carregamento lento de mensagens" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Envio lento de mensagens" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Carregamento lento de perfil" @@ -32807,7 +32702,7 @@ msgstr "Modo lento · aguarde {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento ativado" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "O modo lento está definido como {durationLabel}. Aguarde antes de enviar outra mensagem." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Tempo restante do modo lento" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Bandeja do sistema" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalação gerenciada pelo sistema" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Toque para adicionar uma nota" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Arquivo tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "A comunidade que você procura pode ter sido excluída ou você não tem acesso a ela." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Não foi possível baixar a atualização para computador. Tente novamente no botão de atualização quando sua conexão estiver estável." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "A atualização do aplicativo para computador foi baixada. Reinicie o {productName} para concluir a instalação." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "O arquivo baixado é salvo no seu computador. Instale-o com seu gerenciador de pacotes normal." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Esta ação não poderá ser desfeita. Todos os dados associados, incluindo o bot, serão excluídos permanentemente." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Esta animação é muito longa ou grande para ser cortada. Tente um arquivo menor ou mais curto." @@ -35549,7 +35439,7 @@ msgstr "Este bot solicita permissão de administrador. Conceda-a apenas se você #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Este navegador não consegue cortar arquivos animados de {avifFormatLabel}. Envie um GIF ou WebP em vez disso." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Este console do navegador é uma ferramenta de desenvolvedor." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Este navegador está com o WebAssembly desativado, então imagens animadas não podem ser cortadas." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Esta conversa não está mais disponível." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Esta versão para computador não pode instalar atualizações dentro do {productName}. Baixe o instalador mais recente em vez disso." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Este ambiente gráfico não oferece atalhos globais. Os atalhos continuam funcionando enquanto o {productName} estiver em foco." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Esta versão de desenvolvimento não pode se atualizar. Baixe um instalador para computador para testar o fluxo de atualização." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Este código de transferência expirou. Gere um novo para continuar." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Esta imagem não pôde ser lida. Ela pode estar danificada." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Esta instalação é gerenciada pelo seu sistema. Atualize o {productName} a partir da sua central de softwares ou gerenciador de pacotes." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "A data de corte não pode ser no futuro" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatura de {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plataforma da barra de título" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Alternar câmera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Alternar controles" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografia" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Componentes da interface" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Localização no Reino Unido" @@ -37528,7 +37418,7 @@ msgstr "Não categorizado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Conta não reivindicada" @@ -37689,7 +37579,7 @@ msgstr "Alternativa universal. Qualidade mais baixa, mas funciona em qualquer lu #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Desconhecido" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Convite desconhecido" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tipo de mensagem desconhecido" @@ -37893,10 +37783,10 @@ msgstr "Remover silenciamento" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Reativar áudio" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Apenas mensagens diretas não lidas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Contagem de presentes não lidos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventário de presentes não lidos" @@ -38267,10 +38157,20 @@ msgstr "Atualize o {productName} para ver esta mensagem." msgid "Update app" msgstr "Atualizar app" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Atualização disponível" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Atualizar meu status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Atualizar agora" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Políticas atualizadas" msgid "Updated saved media" msgstr "Mídia salva atualizada" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Estado do atualizador" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "A URL personalizada pode conter apenas caracteres alfanuméricos e hífens internos." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Aviso de URL personalizada" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verificação e requisitos para participação" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Barreira de verificação" @@ -39438,7 +39333,7 @@ msgstr "Efeito translúcido (Vibrancy)" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Vídeo" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Prévia do vídeo" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progresso do vídeo" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Configurações de vídeo" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatura do vídeo" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Selo Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID do selo Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Confirmação de conexão de voz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Depurar conexão de voz" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Mensagem de voz" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Reprodutor de mensagem de voz" @@ -40500,11 +40395,6 @@ msgstr "Pesquisa na web" msgid "Web search provider" msgstr "Buscador na web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Atualizador web pronto" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Eita, é muita coisa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Vai cancelar" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/ro/messages.po b/fluxer_app/src/features/i18n/locales/ro/messages.po index 13c168257..9228c781a 100644 --- a/fluxer_app/src/features/i18n/locales/ro/messages.po +++ b/fluxer_app/src/features/i18n/locales/ro/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# canal urmărește} other {# canale urmăresc}} ac msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# comunitate găsită} few {# comunități găsite} other {# de comunități găsite}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# comunitate este temporar indisponibilă din cauza unei defecțiuni a condensatorului de flux.} few {# comunități sunt temporar indisponibile din cauza unei defecțiuni a condensatorului de flux.} other {# de comunități sunt temporar indisponibile din cauza unei defecțiuni a condensatorului de flux.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} nu poate porni o rută sigură și izolată pentru sunetul msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} nu poate utiliza un codificator hardware pentru aceasta, așa că va folosi procesorul." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} se va închide, va instala actualizarea și se va redeschide." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} nu a putut accesa serviciul de actualizare. Verifică conexiunea și încearcă din nou." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} nu a putut reporni pentru a aplica actualizarea descărcată. Încearcă din nou folosind butonul de actualizare." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "un nume de gazdă, de ex. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Este disponibilă o actualizare desktop pentru Linux. Alege formatul de pachet pentru acest sistem, iar {productName} îl va salva local." @@ -4597,11 +4597,6 @@ msgstr "Răspunde la apelul primit" msgid "Any key" msgstr "Orice tastă" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Orice actualizator gata de utilizare" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Pierdere pachete audio:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Player audio" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Procesare audio (voce focalizată)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Progres audio" @@ -5551,7 +5546,7 @@ msgstr "AV1 (necesită activare)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Disponibil" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Interdicții" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Numărătoare inversă barieră" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Facturare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Ciclu de facturare" @@ -6867,7 +6862,7 @@ msgstr "Nu se pot încărca fișiere aici" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "A închis firul" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Încărcare în cloud" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Focalizare pe editor" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Se comprimă" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Nu s-a putut schimba prețul" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Nu s-a putut verifica dacă există actualizări" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Nu am putut crea kitul de recuperare. Îl poți crea mai târziu în setările contului tău." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Nu s-a putut decupa imaginea" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Nu s-au putut șterge mesajele tale" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Nu s-a putut descărca actualizarea pentru desktop" @@ -10841,11 +10836,6 @@ msgstr "Nu s-a putut iniția plata" msgid "Couldn't start the connection" msgstr "Nu s-a putut iniția conexiunea" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Nu s-a putut porni actualizarea pentru desktop" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Decupează fundalul invitației" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Previzualizare decupare" @@ -11343,12 +11333,12 @@ msgstr "Decupează bannerul de profil" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Imaginea decupată este prea mare. Alege o zonă mai mică sau un fișier mai mic (maxim {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Se decupează {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Sunet dezactivat de moderatori" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Pachet DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Aplicația desktop" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Aplicația desktop este actualizată" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Pornire desktop" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Actualizare desktop {version} disponibilă. Alege un pachet Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Actualizare desktop disponibilă" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Actualizare desktop disponibilă. Alege un pachet Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Actualizare desktop pregătită" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Versiunea pentru desktop {version} a fost descărcată. Repornește {productName} pentru a finaliza instalarea." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Mod dezvoltator" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Opțiune pentru dezvoltatori" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Instrumente pentru dezvoltatori indisponibile" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Versiune de dezvoltare" @@ -13604,26 +13584,6 @@ msgstr "Buton de descărcare" msgid "Download desktop app" msgstr "Descarcă aplicația pentru desktop" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Descarcă actualizarea pentru desktop" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Descarcă actualizarea pentru desktop ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Descarcă actualizarea pentru desktop {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Descarcă actualizarea pentru desktop {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Descarcă export" @@ -13688,26 +13648,6 @@ msgstr "Descarcă hărți sursă pentru ca urmele de apeluri și instrumentele p msgid "Download video" msgstr "Descarcă video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Se descarcă actualizarea pentru desktop {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Se descarcă actualizarea pentru desktop: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Se descarcă actualizarea pentru desktop: {percent}% ({formatBytes} / {formatBytes2} la {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Se descarcă actualizarea pentru desktop…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Verificarea e-mailului este necesară" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-mail verificat" @@ -15966,7 +15906,7 @@ msgstr "Funcție dezactivată temporar" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funcții" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Activat forțat" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Forțează eșecul încărcării mesajelor" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Forțează eșecul trimiterii mesajelor" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Forțează încărcarea selectorului GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Forțează scheletul de încărcare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forțează conținut matur" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Forțează lipsa permisiunii {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Forțează avertismentul privind datele de profil" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Forțează scheletele de profil" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Forțează afișarea" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Forțează afișarea avertismentului privind URL-ul personalizat" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Forțează afișarea conexiunii vocale" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Forțează modul lent activ" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Forțează tipul de mesaj necunoscut" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Forțează actualizarea disponibilă" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Redirecționează" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Înainte cu {defaultSeekAmount} secunde" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Se generează codul…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Suprapunere blocare geografică" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Opțiuni GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Se încarcă selectorul de GIF-uri" @@ -17226,14 +17161,14 @@ msgstr "Coduri cadou" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durata cadoului" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventar de cadouri" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Cadoul nu a fost găsit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Cadou valorificat" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Conține" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "A cumpărat vreodată" @@ -17892,7 +17827,7 @@ msgstr "Inimă" msgid "Hebrew" msgstr "Ebraică" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Înălțime" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Instalează aplicația nouă" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Instalat" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Versiune instalată: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Se instalează actualizarea pentru desktop {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Se instalează actualizarea pentru desktop…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Grafic de latență" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Implicit Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Pachet Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Gestionează-ți abonamentul" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Actualizare manuală pentru desktop" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Conținut matur și avertismente de conținut" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Blocare canal cu conținut matur" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Verificările de conținut matur sunt disponibile momentan doar în Regatul Unit." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Blocare media cu conținut matur" @@ -22888,13 +22813,13 @@ msgstr "Pune pe silențios" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Dezactivează sunetul" @@ -23316,16 +23241,6 @@ msgstr "Narațiune" msgid "Native title bar" msgstr "Bară de titlu nativă" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Progresul actualizării native" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Actualizator nativ pregătit" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Eroare de rețea" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Rețea și performanță" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Utilizatorii noi nu se pot alătura momentan. Poți crea în continuare un cont sau te poți conecta, apoi încearcă din nou acest link mai târziu." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Versiune nouă" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Fără permisiunea {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Fără permisiunea {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Fără descriere." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Nicio actualizare pentru desktop nu este disponibilă." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Niciun webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Rapoarte în aplicație fără efect" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Deschide selectorul de dată" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Deschide descărcările pentru desktop" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Deschide setările" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Deschide centrul software" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Deschide meniul de utilizator pentru {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Deschide videoclipul" @@ -26558,9 +26473,9 @@ msgstr "Redă selecția" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Redă videoclipul" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Beneficiile Premium sunt dezactivate" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium de la data de" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Starea premium a fost resetată în backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Tip premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium până la data de" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Pregătire" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formular de personalizare a profilului" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Avertisment date profil" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Confidențialitatea profilului" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Schelete de profil" @@ -28223,18 +28138,13 @@ msgstr "Reîncarcă" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Reîncarcă {PRODUCT_NAME} pentru a aplica complet schimbarea motorului. Trecerea între verificarea ortografică din aplicație și cea a sistemului necesită reîncărcarea componentei de redare, deoarece Electron nu poate schimba furnizorii în timp ce rulează." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Reîncarcă {productName} pentru a folosi modulele actualizate" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Reîncarcă {productName} pentru a utiliza actualizarea web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Reîncarcă {productName} pentru a utiliza actualizarea web {version}" @@ -29142,7 +29052,7 @@ msgstr "Retrimis" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Resetare" @@ -29475,26 +29385,11 @@ msgstr "Respectă intenția expeditorului, fără avertisment când comută men msgid "Restart {appName}" msgstr "Repornește {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Repornește {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Repornește {productName} pentru ca această modificare să aibă efect, deoarece desktopurile Linux nu pot adăuga sau elimina în mod fiabil pictogramele din bara de sistem în timpul rulării." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Repornește {productName} pentru a instala actualizarea pentru desktop" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Repornește {productName} pentru a instala actualizarea pentru desktop {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Interdicție revocată pentru {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Derulează înapoi {defaultSeekAmount} secunde" @@ -29866,7 +29761,7 @@ msgstr "Română" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Rotește în sens orar" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rânduri pe pagină" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Pachet RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Configurare autogăzduire" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Mod autogăzduit" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Suprascriere mod autogăzduit" @@ -32212,8 +32107,8 @@ msgstr "Afișează-mi propria partajare de ecran" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Afișează-mă în indicatorul de tastare" @@ -32675,7 +32570,7 @@ msgstr "Omitere" msgid "Skip \"Mark all as read\" confirmation" msgstr "Omitere confirmare „Marchează tot ca citit”" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Omite decuparea" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Omite avertismentul de link extern pentru toate domeniile" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Omite apelul de rețea la trimiterea unui raport din aplicație. Fluxul avansează în continuare la ecranul de succes, ca să poți testa interfața, dar nu se trimite nimic echipei de siguranță." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Încărcare lentă atașament" @@ -32769,29 +32664,29 @@ msgstr "Mai încet — așteaptă un moment înainte de a încerca din nou." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Editare lentă mesaj" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Încărcare lentă mesaje" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Trimitere lentă mesaje" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Încărcare lentă profil" @@ -32807,7 +32702,7 @@ msgstr "Mod lent · așteaptă {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modul lent activ" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Modul lent este setat la {durationLabel}. Așteaptă înainte de a trimite un alt mesaj." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Timp rămas din modul lent" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Bară de sistem" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Instalare gestionată de sistem" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Atinge pentru a adăuga o notă" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Arhivă tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Comunitatea pe care o cauți ar fi putut fi ștearsă sau este posibil să nu ai acces la ea." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Actualizarea pentru desktop nu a putut fi descărcată. Încearcă din nou de la butonul de actualizare când conexiunea ta este stabilă." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Actualizarea pentru versiunea de desktop a fost descărcată. Repornește {productName} pentru a finaliza instalarea." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Fișierul descărcat este salvat pe computerul tău. Instalează-l cu managerul tău de pachete obișnuit." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Această acțiune nu poate fi anulată. Toate datele asociate, inclusiv utilizatorul bot, vor fi șterse definitiv." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Animația este prea lungă sau prea mare pentru a fi decupată. Încearcă un fișier mai scurt sau mai mic." @@ -35549,7 +35439,7 @@ msgstr "Acest bot solicită permisiunea de administrator. Acordă această permi #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Browserul tău nu poate decupa fișiere animate {avifFormatLabel}. Încarcă în schimb un GIF sau WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Această consolă de browser este un instrument pentru dezvoltatori." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Browserul tău are dezactivată funcția WebAssembly, așa că imaginile animate nu pot fi decupate." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Această conversație nu mai este disponibilă." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Această versiune pentru desktop nu poate instala actualizări în cadrul aplicației {productName}. Descarcă cea mai recentă versiune a programului de instalare pentru desktop." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Acest mediu desktop nu oferă comenzi rapide la nivel de sistem. Comenzile rapide funcționează în continuare cât timp {productName} este în prim-plan." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Această versiune de dezvoltare nu se poate actualiza singură. Descarcă un program de instalare pentru desktop pentru a testa fluxul de actualizare." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Acest cod de transfer a expirat. Generează unul nou pentru a continua." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Imaginea nu a putut fi citită. S-ar putea să fie coruptă." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Această instalare este gestionată de sistemul tău. Actualizează {productName} din centrul de software sau prin intermediul managerului de pachete." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Data limită nu poate fi în viitor" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatură pentru {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Bara de titlu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Platformă bară de titlu" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Comută camera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Comută comenzile" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografie" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Componente UI" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Regiunea geografică Marea Britanie" @@ -37528,7 +37418,7 @@ msgstr "Necategorizat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cont nerevendicat" @@ -37689,7 +37579,7 @@ msgstr "Soluție universală. Cea mai slabă calitate, dar funcționează peste #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Necunoscut" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Invitație necunoscută" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Tip de mesaj necunoscut" @@ -37893,10 +37783,10 @@ msgstr "Scoate de pe silențios" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Activează sunetul" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Doar DM-uri necitite" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Număr de cadouri necitite" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Inventar cadouri necitite" @@ -38267,10 +38157,20 @@ msgstr "Actualizează {productName} pentru a vedea acest mesaj." msgid "Update app" msgstr "Actualizează aplicația" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Actualizare disponibilă" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizează-mi starea" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Actualizează acum" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Politici actualizate" msgid "Updated saved media" msgstr "Media salvată a fost actualizată" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Stare actualizator" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Adresa URL personalizată poate conține doar caractere alfanumerice și cratime interne." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Declinarea responsabilității privind URL-ul personalizat" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verificare și bariere de membru" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Barieră de verificare" @@ -39438,7 +39333,7 @@ msgstr "Vibranță" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Previzualizare video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Progres video" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Setări video" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Miniatură video" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Insignă Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID-ul insignei Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Confirmare conexiune vocală" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Depanare conexiune vocală" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Mesaj vocal" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Player pentru mesaje vocale" @@ -40500,11 +40395,6 @@ msgstr "Căutare pe web" msgid "Web search provider" msgstr "Furnizor de căutare web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Actualizator web gata" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Uau, e prea mult" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Se va anula" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zoom" diff --git a/fluxer_app/src/features/i18n/locales/ru/messages.po b/fluxer_app/src/features/i18n/locales/ru/messages.po index 25d7d77e5..025d3a100 100644 --- a/fluxer_app/src/features/i18n/locales/ru/messages.po +++ b/fluxer_app/src/features/i18n/locales/ru/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# канал подписан} few {# канала msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Найдено # сообщество} few {Найдено # сообщества} many {Найдено # сообществ} other {Найдено # сообщества}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# сообщество временно недоступно из-за неисправности потокового накопителя.} few {# сообщества временно недоступны из-за неисправности потокового накопителя.} many {# сообществ временно недоступны из-за неисправности потокового накопителя.} other {# сообществ временно недоступны из-за неисправности потокового накопителя.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} не может создать безопасный изо msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} не может использовать для этого аппаратный кодировщик, поэтому будет задействован процессор." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} закроется, установит обновление и откроется снова." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} не удалось связаться со службой обновлений. Проверьте подключение к интернету и повторите попытку." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Не удалось перезапустить {productName} для установки загруженного обновления. Попробуйте ещё раз, нажав кнопку обновления." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "имя хоста, например {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Доступно обновление для Linux. Выберите формат пакета для этой системы, и {productName} сохранит его локально." @@ -4597,11 +4597,6 @@ msgstr "Ответить на входящий звонок" msgid "Any key" msgstr "Любая клавиша" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Любое обновление готово" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Потеря аудиопакетов:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Аудиоплеер" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Обработка аудио (фокусировка на голосе)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Прогресс аудио" @@ -5551,7 +5546,7 @@ msgstr "AV1 (требуется согласие)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Доступно" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Баны" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Обратный отсчет барьера" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Оплата" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Платежный цикл" @@ -6867,7 +6862,7 @@ msgstr "Сюда нельзя загружать файлы" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Закрыл(а) ветку" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Загрузка в облако" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Фокус на поле ввода" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Сжимаем" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Не удалось изменить вашу цену" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Не удалось проверить наличие обновлений" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Не удалось создать ваш комплект восстановления. Вы можете создать его позже в настройках аккаунта." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Не удалось обрезать изображение" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Не удалось удалить ваши сообщения" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Не удалось загрузить обновление для ПК" @@ -10841,11 +10836,6 @@ msgstr "Не удалось начать оформление заказа" msgid "Couldn't start the connection" msgstr "Не удалось начать подключение" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Не удалось запустить обновление для ПК" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Обрезать фон приглашения" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Предпросмотр обрезки" @@ -11343,12 +11333,12 @@ msgstr "Обрезать баннер профиля" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Обрезанное изображение слишком большое. Выберите меньшую область или файл меньшего размера (макс. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Обрезаем {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Звук отключён модераторами" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Пакет DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Приложение для ПК" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "У вас последняя версия приложения для ПК" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Автозапуск" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Доступно обновление для ПК {version}. Выберите пакет Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Доступно обновление для ПК" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Доступно обновление для ПК. Выберите пакет Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Обновление для ПК готово" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Версия для ПК {version} загружена. Перезапустите {productName}, чтобы завершить установку." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Режим разработчика" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Опция для разработчиков" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Инструменты разработчика недоступны" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Сборка для разработки" @@ -13604,26 +13584,6 @@ msgstr "Кнопка «Скачать»" msgid "Download desktop app" msgstr "Скачать приложение для компьютера" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Скачать обновление для ПК" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Скачать обновление для ПК ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Скачать обновление для ПК {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Скачать обновление для ПК {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Скачать экспорт" @@ -13688,26 +13648,6 @@ msgstr "Скачивайте исходные карты, чтобы трасс msgid "Download video" msgstr "Скачать видео" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Скачивание обновления для ПК {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Скачивание обновления для ПК: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Скачивание обновления для ПК: {percent}% ({formatBytes} / {formatBytes2} со скоростью {formatBytes3}/с)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Скачивание обновления для ПК…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Требуется подтверждение почты" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Эл. почта подтверждена" @@ -15966,7 +15906,7 @@ msgstr "Функция временно отключена" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Функции" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Принудительно включено" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Принудительный сбой загрузки сообщений" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Принудительный сбой отправки сообщений" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Принудительно показывать загрузку панели GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Принудительно показывать скелет загрузки" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Принудительно показывать медиа для взрослых" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Принудительно отключить разрешение «{permissionName}»" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Всегда показывать предупреждение о данных профиля" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Принудительно показывать скелеты профилей" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Принудительно показать" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Всегда показывать отказ от ответственности для пользовательских URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Принудительно показывать голосовое подключение" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Принудительно включить медленный режим" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Принудительно показывать неизвестный тип сообщения" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Принудительно показывать готовое обновление" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Переслать" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Вперёд на {defaultSeekAmount} секунд" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Генерируем код…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Наложение геоблокировки" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Настройки GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Загрузка GIF-файлов" @@ -17226,14 +17161,14 @@ msgstr "Подарочные коды" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Длительность подарка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Инвентарь подарков" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Подарок не найден" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Подарок активирован" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Содержит" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Когда-либо покупал" @@ -17892,7 +17827,7 @@ msgstr "Сердце" msgid "Hebrew" msgstr "Иврит" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Высота" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Установить новое приложение" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Установлено" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Установленная версия: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Установка обновления для ПК {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Установка обновления для ПК…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "График задержки" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux (устройство по умолчанию)" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Пакет для Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Управление подпиской" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Обновление десктопной версии вручную" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Контент для взрослых и предупреждения о контенте" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Блокировка канала с контентом для взрослых" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Проверка контента для взрослых в настоящее время доступна только в Великобритании." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Блокировка медиа с контентом для взрослых" @@ -22888,13 +22813,13 @@ msgstr "Без уведомлений" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Выключить звук" @@ -23316,16 +23241,6 @@ msgstr "Озвучивание" msgid "Native title bar" msgstr "Нативная строка заголовка" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Ход нативного обновления" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Нативное обновление готово" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Ошибка сети" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Сеть и производительность" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Новые пользователи пока не могут присоединиться. Вы можете создать аккаунт или войти, а затем попробовать эту ссылку позже." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Новая версия" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Нет" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Нет разрешения {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Нет разрешения {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Без описания." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Нет доступных обновлений для компьютера." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Вебхуков нет" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Жалобы в приложении без отправки" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Открыть выбор даты" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Открыть загрузки для ПК" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Открыть настройки" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Открыть центр приложений" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Открыть меню пользователя {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Открыть видео" @@ -26558,9 +26473,9 @@ msgstr "Воспроизвести выбранное" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Воспроизвести видео" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Премиум-привилегии отключены" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Дата начала премиума" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Премиум-статус сброшен на сервере." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Тип подписки" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Дата окончания премиума" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Подготовка" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Форма настройки профиля" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Предупреждение о данных профиля" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Конфиденциальность профиля" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Скелеты профилей" @@ -28223,18 +28138,13 @@ msgstr "Перезагрузить" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Перезагрузите {PRODUCT_NAME}, чтобы полностью применить смену движка. Переключение между встроенной и системной проверкой орфографии требует перезагрузки рендерера, потому что Electron не может менять поставщиков на лету." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Перезагрузите {productName}, чтобы использовать обновленные модули" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Перезагрузите {productName}, чтобы применить веб-обновление" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Перезагрузите {productName}, чтобы применить веб-обновление {version}" @@ -29142,7 +29052,7 @@ msgstr "Отправлено повторно" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Сбросить" @@ -29475,26 +29385,11 @@ msgstr "Следовать выбору отправителя, без пред msgid "Restart {appName}" msgstr "Перезапустить {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Перезапустить {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Перезапустите {productName}, чтобы это изменение вступило в силу, так как среды рабочего стола Linux не могут надёжно добавлять или удалять значки в трее во время работы." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Перезапустите {productName}, чтобы установить обновление для настольной версии" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Перезапустите {productName}, чтобы установить обновление {version} для настольной версии" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Бан для {0} снят" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Назад на {defaultSeekAmount} секунд" @@ -29866,7 +29761,7 @@ msgstr "Румынский" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Повернуть по часовой стрелке" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Строк на странице" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Пакет RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Настройка собственного сервера" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Режим самостоятельного хостинга" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Принудительный режим самостоятельного хостинга" @@ -32212,8 +32107,8 @@ msgstr "Показывать мою демонстрацию экрана" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Показывать, что я печатаю" @@ -32675,7 +32570,7 @@ msgstr "Пропустить" msgid "Skip \"Mark all as read\" confirmation" msgstr "Пропускать подтверждение «Отметить все как прочитанные»" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Пропустить обрезку" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Пропускать предупреждение о внешних ссылках для всех доменов" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Пропускать сетевой вызов при отправке жалобы из приложения. Процесс всё равно переходит на экран успешной отправки, чтобы вы могли протестировать интерфейс, но команде безопасности ничего не отправляется." @@ -32752,8 +32647,8 @@ msgstr "Словения" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Медленная загрузка вложений" @@ -32769,29 +32664,29 @@ msgstr "Притормозите — подождите немного, преж #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Медленное редактирование сообщений" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Медленная загрузка сообщений" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Медленная отправка сообщений" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Медленная загрузка профиля" @@ -32807,7 +32702,7 @@ msgstr "Медленный режим · ждать {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Медленный режим активен" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Медленный режим установлен на {durationLabel}. Подождите, прежде чем отправить следующее сообщение." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Медленный режим: осталось" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Область уведомлений" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Установка через системный менеджер" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Нажмите, чтобы добавить заметку" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Архив tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Возможно, сообщество, которое вы ищете, было удалено или у вас нет к нему доступа." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Не удалось загрузить обновление для ПК. Повторите попытку с помощью кнопки обновления, когда соединение станет стабильным." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Обновление для ПК загружено. Перезапустите {productName}, чтобы завершить установку." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Загруженный файл сохранен на вашем компьютере. Установите его с помощью обычного менеджера пакетов." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Это действие необратимо. Все связанные данные, включая пользователя-бота, будут удалены без возможности восстановления." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Этот анимированный файл слишком длинный или большой для обрезки. Попробуйте более короткий или меньший файл." @@ -35549,7 +35439,7 @@ msgstr "Этот бот запрашивает права администрат #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Этот браузер не может обрезать анимированные файлы {avifFormatLabel}. Загрузите вместо этого GIF или WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Консоль браузера — это инструмент разработчика." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "В этом браузере отключен WebAssembly, поэтому анимированные изображения нельзя обрезать." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Эта переписка больше недоступна." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Эта сборка для ПК не может устанавливать обновления внутри {productName}. Вместо этого скачайте последний установщик для ПК." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Это окружение рабочего стола не поддерживает системные сочетания клавиш. Сочетания клавиш по-прежнему работают, когда {productName} в фокусе." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Эта сборка для разработки не может обновиться сама. Загрузите установщик для ПК, чтобы протестировать процесс обновления." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Срок действия этого кода истёк. Создайте новый, чтобы продолжить." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Не удалось прочитать это изображение. Оно может быть повреждено." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Эта установка управляется вашей системой. Обновите {productName} через центр программного обеспечения или менеджер пакетов." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Дата не может быть в будущем" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Миниатюра для «{title}»" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Строка заголовка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Платформа строки заголовка" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Включить/выключить камеру" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Показать/скрыть элементы управления" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Типографика" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Компоненты интерфейса" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Геоданные Великобритании" @@ -37528,7 +37418,7 @@ msgstr "Без категории" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Неподтвержденный аккаунт" @@ -37689,7 +37579,7 @@ msgstr "Универсальный вариант. Низкое качество #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Неизвестно" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Неизвестное приглашение" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Неизвестный тип сообщения" @@ -37893,10 +37783,10 @@ msgstr "Включить уведомления" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Включить звук" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Только непрочитанные личные сообщения" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Количество непрочитанных подарков" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Непрочитанные подарки" @@ -38267,10 +38157,20 @@ msgstr "Обновите {productName}, чтобы просмотреть это msgid "Update app" msgstr "Обновить приложение" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Доступно обновление" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Обновить мой статус" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Обновить сейчас" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Обновлённые правила" msgid "Updated saved media" msgstr "Сохраненные медиа обновлены" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Состояние обновлений" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Короткая ссылка может содержать только буквы, цифры и дефисы, но не в начале и не в конце." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Отказ от ответственности для короткой ссылки" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Верификация и барьеры для вступления" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Барьер верификации" @@ -39438,7 +39333,7 @@ msgstr "Эффект прозрачности" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Видео" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Предпросмотр видео" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Прогресс видео" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Настройки видео" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Миниатюра видео" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Значок Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID значка Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Подтверждение голосового соединения" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Отладка голосового соединения" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Голосовое сообщение" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Плеер голосового сообщения" @@ -40500,11 +40395,6 @@ msgstr "Поиск в интернете" msgid "Web search provider" msgstr "Поисковая система" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Веб-обновление готово" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Ого, это слишком много" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Будет отменено" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Масштаб" diff --git a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po index 451688204..3eab88562 100644 --- a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po +++ b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kanal följer} other {# kanaler följer}} den hä msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# community hittades} other {# communities hittades}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# community är tillfälligt otillgänglig på grund av ett fel i flödeskondensatorn.} other {# communities är tillfälligt otillgängliga på grund av ett fel i flödeskondensatorn.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} kan inte säkert spela in den här appens ljud separat." msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} kan inte använda en hårdvarukodare för det här och använder därför din processor." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} stängs, installerar uppdateringen och öppnas igen." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} kunde inte ansluta till uppdateringstjänsten. Kontrollera din anslutning och försök igen." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} kunde inte starta om och installera den nedladdade uppdateringen. Försök igen via uppdateringsknappen." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ett värdnamn, t.ex. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "En uppdatering av datorappen för Linux är tillgänglig. Välj paketformatet för det här systemet så sparar {productName} paketet lokalt." @@ -4597,11 +4597,6 @@ msgstr "Svara på det inkommande samtalet" msgid "Any key" msgstr "Valfri tangent" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Uppdatering redo" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Förlorade ljudpaket:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Ljudspelare" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Ljudbehandling (fokuserat röstläge)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Ljudförlopp" @@ -5551,7 +5546,7 @@ msgstr "AV1 (kräver aktivering)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Tillgänglig" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Bannlysningar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Nedräkning för barriär" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Fakturering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Faktureringsperiod" @@ -6867,7 +6862,7 @@ msgstr "Kan inte ladda upp filer här" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Tråden stängdes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Molnuppladdning" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Fokus på skrivfältet" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Komprimerar" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Kunde inte ändra ditt pris" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Kunde inte söka efter uppdateringar" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Kunde inte skapa ditt återställningskit. Du kan skapa ett senare i dina kontoinställningar." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Kunde inte beskära bilden" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Kunde inte radera dina meddelanden" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Kunde inte ladda ner uppdateringen för datorappen" @@ -10841,11 +10836,6 @@ msgstr "Kunde inte starta betalning" msgid "Couldn't start the connection" msgstr "Kunde inte starta anslutningen" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Kunde inte starta uppdateringen för datorappen" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Beskär inbjudningsbakgrund" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Beskär förhandsvisning" @@ -11343,12 +11333,12 @@ msgstr "Beskär profilbanner" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Den beskurna bilden är för stor. Välj ett mindre område eller en mindre fil (max {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Beskärning {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Ljudet avstängt av moderatorer" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB-paket" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Datorapp" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Datorappen är uppdaterad" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Start av datorappen" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Uppdatering {version} för datorappen är tillgänglig. Välj ett Linux-paket." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Uppdatering för datorappen är tillgänglig" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Uppdatering för datorappen är tillgänglig. Välj ett Linux-paket." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Uppdateringen för datorappen är redo" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Version {version} av datorappen har laddats ner. Starta om {productName} för att slutföra installationen." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Utvecklarläge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Utvecklaralternativ" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Utvecklarverktyg är inte tillgängliga" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Utvecklingsversion" @@ -13604,26 +13584,6 @@ msgstr "Nedladdningsknapp" msgid "Download desktop app" msgstr "Ladda ner datorappen" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Ladda ner uppdatering för datorappen" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Ladda ner uppdatering för datorappen ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Ladda ner uppdatering {version} för datorappen" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Ladda ner uppdatering {version} för datorappen ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Ladda ner export" @@ -13688,26 +13648,6 @@ msgstr "Ladda ner källkartor så att stackspårningar och utvecklarverktyg peka msgid "Download video" msgstr "Ladda ner video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Laddar ner uppdatering {version} för datorappen: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Laddar ner uppdatering för datorappen: {percent} %" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Laddar ner uppdatering för datorappen: {percent} % ({formatBytes} / {formatBytes2} med {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Laddar ner uppdatering för datorappen…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-postverifiering krävs" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-post verifierad" @@ -15966,7 +15906,7 @@ msgstr "Funktionen är tillfälligt inaktiverad" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Funktioner" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Tvinga aktivering" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Simulera fel vid inläsning av meddelanden" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Simulera fel när meddelanden skickas" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Tvinga fram GIF-väljarens laddningsläge" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Tvinga fram laddningsplatshållare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Tvinga fram medier med vuxet innehåll" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Tvinga bort behörigheten {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Tvinga fram varning för profildata" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Tvinga fram laddningsplatshållare för profiler" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Visa alltid" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Tvinga fram visning av friskrivning för anpassad URL" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Visa röstanslutning alltid" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Tvinga fram aktivt långsamt läge" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Tvinga okänd meddelandetyp" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Simulera färdig uppdatering" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Vidarebefordra" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Spola framåt {defaultSeekAmount} sekunder" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Genererar kod…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Överlägg för geografisk blockering" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF-alternativ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF-väljaren laddas" @@ -17226,14 +17161,14 @@ msgstr "Presentkoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Presentens varaktighet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Presentlager" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Presenten hittades inte" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Presenten är inlöst" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Har" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Har köpt tidigare" @@ -17892,7 +17827,7 @@ msgstr "Hjärta" msgid "Hebrew" msgstr "Hebreiska" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Höjd" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Installera den nya appen" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Installerad" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Installerad version: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Installerar uppdatering {version} för datorappen…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Installerar uppdatering för datorappen…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Latensgraf" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Standard för Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux-paket" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Hantera ditt abonnemang" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manuell uppdatering av datorappen" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Vuxet innehåll och innehållsvarningar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Åtkomstkontroll för kanaler med vuxet innehåll" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Kontroller för vuxet innehåll är för närvarande bara tillgängliga i Storbritannien." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Åtkomstkontroll för medier med vuxet innehåll" @@ -22888,13 +22813,13 @@ msgstr "Tysta" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Stäng av ljudet" @@ -23316,16 +23241,6 @@ msgstr "Uppläsning" msgid "Native title bar" msgstr "Inbyggd namnlist" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Pågående uppdatering (inbyggd)" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Inbyggd uppdaterare redo" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Nätverksfel" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Nätverk och prestanda" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Nya användare kan inte gå med just nu. Du kan fortfarande skapa ett konto eller logga in och sedan försöka med den här länken igen senare." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Ny version" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Nej" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Ingen behörighet för {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Ingen behörighet för {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Ingen beskrivning." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Ingen uppdatering för datorappen är tillgänglig." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Inga webhooks" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Låt anmälningar i appen inte göra något" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Öppna datumväljaren" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Öppna nedladdningar för dator" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Öppna inställningar" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Öppna programcenter" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Öppna användarmenyn för {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Öppna video" @@ -26558,9 +26473,9 @@ msgstr "Spela upp markering" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Spela upp video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premiumförmåner inaktiverade" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium sedan datum" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Premiumstatus återställd på servern." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premiumtyp" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium till och med" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Förbereder" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Formulär för profilanpassning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Varning för profildata" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profilsekretess" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Laddningsplatshållare för profiler" @@ -28223,18 +28138,13 @@ msgstr "Ladda om" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Ladda om {PRODUCT_NAME} för att motorbytet ska börja gälla fullt ut. Att växla mellan stavningskontroll i appen och systemets stavningskontroll kräver att renderaren laddas om eftersom Electron inte kan byta leverantör under körning." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Ladda om {productName} för att använda de uppdaterade modulerna" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Ladda om {productName} för att använda webbuppdateringen" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Ladda om {productName} för att använda webbaserad uppdatering {version}" @@ -29142,7 +29052,7 @@ msgstr "Skickat igen" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Återställ" @@ -29475,26 +29385,11 @@ msgstr "Respektera avsändarens avsikt utan varning när @-omnämnandet ändras" msgid "Restart {appName}" msgstr "Starta om {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Starta om {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Starta om {productName} för att ändringen ska börja gälla. Linux-skrivbord kan inte tillförlitligt lägga till eller ta bort ikoner i meddelandefältet under körning." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Starta om {productName} för att installera uppdateringen för datorappen" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Starta om {productName} för att installera uppdatering {version} för datorappen" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Hävde bannlysningen för {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Spola tillbaka {defaultSeekAmount} sekunder" @@ -29866,7 +29761,7 @@ msgstr "Rumänska" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Rotera medurs" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Rader per sida" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM-paket" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Konfiguration för drift på egen server" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Läge för drift på egen server" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Åsidosätt läget för drift på egen server" @@ -32212,8 +32107,8 @@ msgstr "Visa min skärmdelning" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Visa min egen skrivindikator" @@ -32675,7 +32570,7 @@ msgstr "Hoppa över" msgid "Skip \"Mark all as read\" confirmation" msgstr "Hoppa över bekräftelse för \"Markera alla som lästa\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Hoppa över beskärning" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Hoppa över varningen för externa länkar för alla domäner" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Hoppa över nätverksanropet när en anmälan skickas i appen. Flödet går ändå vidare till bekräftelsen så att du kan prova gränssnittet, men inget skickas till säkerhetsteamet." @@ -32752,8 +32647,8 @@ msgstr "Slovenien" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Långsam bilageuppladdning" @@ -32769,29 +32664,29 @@ msgstr "Sakta ner – vänta ett ögonblick innan du försöker igen." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Långsam meddelanderedigering" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Långsam inläsning av meddelanden" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Långsam meddelandesändning" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Långsam profilinläsning" @@ -32807,7 +32702,7 @@ msgstr "Långsamt läge · vänta {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Långsamt läge aktivt" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Långsamt läge är inställt på {durationLabel}. Vänta innan du skickar ett nytt meddelande." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Återstående väntetid i långsamt läge" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Meddelandefältet" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Systemhanterad installation" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Tryck för att lägga till en anteckning" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz-arkiv" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Communityn du letar efter kan ha raderats eller så har du inte åtkomst till den." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Uppdateringen för datorappen kunde inte laddas ner. Försök igen via uppdateringsknappen när anslutningen är stabil." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Uppdateringen för datorappen har laddats ner. Starta om {productName} för att slutföra installationen." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Den nedladdade filen sparas på din dator. Installera den med din vanliga pakethanterare." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Den här åtgärden kan inte ångras. All tillhörande data, inklusive botanvändaren, kommer att raderas permanent." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Den här animeringen är för lång eller för stor för att beskära. Prova en kortare eller mindre fil." @@ -35549,7 +35439,7 @@ msgstr "Den här boten begär administratörsbehörighet. Ge den bara behörighe #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Webbläsaren kan inte beskära animerade {avifFormatLabel}-filer. Ladda upp en GIF eller WebP istället." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Den här webbläsarkonsolen är ett utvecklarverktyg." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "WebAssembly är avstängt i den här webbläsaren, så animerade bilder kan inte beskäras." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Den här konversationen är inte längre tillgänglig." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Den här versionen av datorappen kan inte installera uppdateringar inifrån {productName}. Ladda ner det senaste installationsprogrammet för datorappen i stället." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Den här skrivbordsmiljön har inte stöd för systemövergripande genvägar. Genvägar fungerar fortfarande när {productName} är i fokus." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Den här utvecklingsversionen kan inte uppdatera sig själv. Ladda ner ett installationsprogram för datorappen för att prova uppdateringsflödet." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Den här överlämningskoden har gått ut. Skapa en ny för att fortsätta." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Bilden kunde inte läsas. Den kan vara skadad." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Den här installationen hanteras av ditt system. Uppdatera {productName} via din programhanterare eller pakethanterare." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Gränsdatumet kan inte ligga i framtiden" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Miniatyrbild för {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Namnlist" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Plattform för namnlist" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Slå på eller av kameran" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Visa/dölj kontroller" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Typografi" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Gränssnittskomponenter" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Storbritannien (geo)" @@ -37528,7 +37418,7 @@ msgstr "Okategoriserade" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Osäkrat konto" @@ -37689,7 +37579,7 @@ msgstr "Universell reserv. Lägsta kvalitet, men fungerar överallt." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Okänt" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Okänd inbjudan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Okänd meddelandetyp" @@ -37893,10 +37783,10 @@ msgstr "Sluta tysta" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Slå på ljudet" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Endast olästa DM-konversationer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Antal olästa presenter" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Oläst presentlager" @@ -38267,10 +38157,20 @@ msgstr "Uppdatera {productName} för att se det här meddelandet." msgid "Update app" msgstr "Uppdatera appen" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Uppdatering tillgänglig" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Uppdatera min status" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Uppdatera nu" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Uppdaterade policyer" msgid "Updated saved media" msgstr "Sparat medieobjekt uppdaterat" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Uppdateringsstatus" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Den anpassade URL:en får bara innehålla alfanumeriska tecken och bindestreck mellan tecknen." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Friskrivning för anpassad URL" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Verifiering och medlemskapsbarriärer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Verifieringsspärr" @@ -39438,7 +39333,7 @@ msgstr "Vibrans" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Videoförhandsvisning" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Videoförlopp" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Videoinställningar" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Videominiatyr" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary-märke" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary-märkets ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Bekräftelse av röstanslutning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Felsökning av röstanslutning" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Röstmeddelande" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Röstmeddelandespelare" @@ -40500,11 +40395,6 @@ msgstr "Webbsökning" msgid "Web search provider" msgstr "Sökleverantör för webben" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Webbuppdateraren är redo" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Oj, det här var tungt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Kommer att avslutas" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Zooma" diff --git a/fluxer_app/src/features/i18n/locales/th/messages.po b/fluxer_app/src/features/i18n/locales/th/messages.po index a26e9fbb2..cccc46936 100644 --- a/fluxer_app/src/features/i18n/locales/th/messages.po +++ b/fluxer_app/src/features/i18n/locales/th/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# ช่องทางติดตาม} other {# msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {พบ # คอมมูนิตี้} other {พบ # คอมมูนิตี้}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# คอมมูนิตี้ไม่พร้อมใช้งานชั่วคราว เนื่องจากเครื่องฟลักซ์คาปาซิเตอร์ทำงานผิดปกติ} other {# คอมมูนิตี้ไม่พร้อมใช้งานชั่วคราว เนื่องจากเครื่องฟลักซ์คาปาซิเตอร์ทำงานผิดปกติ}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} ไม่สามารถเริ่มเส้นท msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} ไม่สามารถใช้ตัวเข้ารหัสฮาร์ดแวร์กับตัวเลือกนี้ได้ จึงจะใช้ CPU ของคุณแทน" +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} จะปิดเพื่อติดตั้งอัปเดต จากนั้นจะเปิดขึ้นมาใหม่" + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} ไม่สามารถเชื่อมต่อกับบริการอัปเดตได้ โปรดตรวจสอบการเชื่อมต่อของคุณและลองใหม่อีกครั้ง" -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} ไม่สามารถเริ่มต้นการทำงานใหม่เพื่อติดตั้งอัปเดตที่ดาวน์โหลดมาได้ โปรดลองใหม่อีกครั้งจากปุ่มอัปเดต" - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ชื่อโฮสต์ เช่น {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "มีการอัปเดตเดสก์ท็อปสำหรับ Linux แล้ว เลือกรูปแบบแพ็กเกจสำหรับระบบนี้ แล้ว {productName} จะบันทึกไฟล์ไว้ในเครื่อง" @@ -4597,11 +4597,6 @@ msgstr "รับสายเรียกเข้า" msgid "Any key" msgstr "ปุ่มใดก็ได้" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "มีโปรแกรมอัปเดตพร้อมใช้งาน" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "แพ็กเก็ตเสียงสูญหาย:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "เครื่องเล่นเสียง" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "การประมวลผลเสียง (เสียงที่เน้น)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "ความคืบหน้าของเสียง" @@ -5551,7 +5546,7 @@ msgstr "AV1 (ต้องเปิดใช้งานก่อน)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "พร้อมใช้งาน" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "การแบน" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "นับถอยหลังการยืนยันตัวตน" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "การเรียกเก็บเงิน" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "รอบบิล" @@ -6867,7 +6862,7 @@ msgstr "อัปโหลดไฟล์ที่นี่ไม่ได้" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "ปิดเธรดแล้ว" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "อัปโหลดขึ้นคลาวด์" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "โฟกัสช่องพิมพ์ข้อความ" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "กำลังบีบอัด" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "เปลี่ยนราคาของคุณไม่ได้" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "ตรวจสอบการอัปเดตไม่สำเร็จ" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "ไม่สามารถสร้างชุดกู้คืนของคุณได้ คุณสามารถสร้างได้ในภายหลังในการตั้งค่าบัญชีของคุณ" #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "ไม่สามารถครอบตัดรูปภาพได้" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "ลบข้อความของคุณไม่ได้" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อปไม่ได้" @@ -10841,11 +10836,6 @@ msgstr "ไม่สามารถเริ่มชำระเงินได msgid "Couldn't start the connection" msgstr "ไม่สามารถเริ่มการเชื่อมต่อได้" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "ไม่สามารถเริ่มอัปเดตเดสก์ท็อปได้" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "ครอบตัดพื้นหลังคำเชิญ" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "ตัวอย่างการครอบตัด" @@ -11343,12 +11333,12 @@ msgstr "ครอบตัดแบนเนอร์โปรไฟล์" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "รูปภาพที่ครอบตัดมีขนาดใหญ่เกินไป เลือกพื้นที่ที่เล็กลงหรือไฟล์ที่เล็กลง (สูงสุด {maxSizeLabel})" #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "กำลังครอบตัด {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "ปิดเสียงทั้งหมดโดยผู้ดูแล" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "แพ็กเกจ DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "แอปเดสก์ท็อป" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "แอปเดสก์ท็อปเป็นเวอร์ชันล่าสุดแล้ว" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "การเริ่มต้นบนเดสก์ท็อป" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "มีอัปเดตเดสก์ท็อป {version} ให้ใช้งาน เลือกแพ็กเกจ Linux" @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "มีอัปเดตสำหรับเดสก์ท็อป" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "มีการอัปเดตเดสก์ท็อป เลือกแพ็กเกจ Linux" -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "อัปเดตเดสก์ท็อปพร้อมใช้งานแล้ว" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "มีการดาวน์โหลดเวอร์ชันเดสก์ท็อป {version} แล้ว รีสตาร์ท {productName} เพื่อดำเนินการติดตั้งให้เสร็จสมบูรณ์" - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "โหมดนักพัฒนา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "ตัวเลือกสำหรับนักพัฒนา" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "เครื่องมือสำหรับนักพัฒนาไม่พร้อมใช้งาน" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "บิลด์สำหรับนักพัฒนา" @@ -13604,26 +13584,6 @@ msgstr "ปุ่มดาวน์โหลด" msgid "Download desktop app" msgstr "ดาวน์โหลดแอปเดสก์ท็อป" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อป" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อป ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อป {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อป {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "ดาวน์โหลดข้อมูลส่งออก" @@ -13688,26 +13648,6 @@ msgstr "ดาวน์โหลด source maps เพื่อให้ stack t msgid "Download video" msgstr "ดาวน์โหลดวิดีโอ" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "กำลังดาวน์โหลดการอัปเดตเดสก์ท็อป {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "กำลังดาวน์โหลดการอัปเดตเดสก์ท็อป: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "กำลังดาวน์โหลดการอัปเดตเดสก์ท็อป: {percent}% ({formatBytes} / {formatBytes2} ที่ {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "กำลังดาวน์โหลดการอัปเดตเดสก์ท็อป…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "ต้องยืนยันอีเมล" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "ยืนยันอีเมลแล้ว" @@ -15966,7 +15906,7 @@ msgstr "ปิดใช้งานฟีเจอร์ชั่วคราว #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "ฟีเจอร์" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "บังคับเปิดใช้งาน" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "บังคับโหลดข้อความไม่สำเร็จ" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "บังคับส่งข้อความไม่สำเร็จ" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "บังคับสถานะกำลังโหลดตัวเลือก GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "บังคับโครงร่างขณะโหลด" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "บังคับสื่อสำหรับผู้ใหญ่" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "บังคับไม่มีสิทธิ์ {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "บังคับแสดงคำเตือนข้อมูลโปรไฟล์" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "บังคับโครงร่างโปรไฟล์" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "บังคับแสดง" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "บังคับแสดงข้อจำกัดความรับผิดชอบ URL ที่กำหนดเอง" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "บังคับแสดงการเชื่อมต่อเสียง" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "บังคับเปิดโหมดจำกัดเวลา" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "บังคับให้เป็นประเภทข้อความที่ไม่รู้จัก" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "บังคับอัปเดตพร้อมใช้งาน" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "ส่งต่อ" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "กรอไปข้างหน้า {defaultSeekAmount} วินาที" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "กำลังสร้างรหัส…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "การบล็อกตามพื้นที่" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "ตัวเลือก GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "กำลังโหลดตัวเลือก GIF" @@ -17226,14 +17161,14 @@ msgstr "รหัสของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "ระยะเวลาของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "คลังของขวัญ" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "ไม่พบของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "แลกของขวัญแล้ว" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "มี" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "เคยซื้อ" @@ -17892,7 +17827,7 @@ msgstr "หัวใจ" msgid "Hebrew" msgstr "ฮีบรู" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "ความสูง" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "ติดตั้งแอปใหม่" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "ติดตั้งแล้ว" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "เวอร์ชันที่ติดตั้ง: {currentVersion}" -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "กำลังติดตั้งการอัปเดตเดสก์ท็อป {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "กำลังติดตั้งการอัปเดตเดสก์ท็อป…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "กราฟเวลาแฝง" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "ค่าเริ่มต้นของ Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "แพ็กเกจ Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "จัดการการสมัครสมาชิกของคุณ" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "อัปเดตเดสก์ท็อปด้วยตนเอง" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "เนื้อหาสำหรับผู้ใหญ่และคำเตือนเนื้อหา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "การคัดกรองช่องเนื้อหาสำหรับผู้ใหญ่" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "การตรวจสอบเนื้อหาสำหรับผู้ใหญ่มีให้บริการเฉพาะในสหราชอาณาจักรเท่านั้น" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "การคัดกรองสื่อเนื้อหาสำหรับผู้ใหญ่" @@ -22888,13 +22813,13 @@ msgstr "ปิดเสียง" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "ปิดเสียง" @@ -23316,16 +23241,6 @@ msgstr "การอ่านออกเสียง" msgid "Native title bar" msgstr "แถบชื่อเรื่องของระบบ" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "ความคืบหน้าการอัปเดตในเครื่อง" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "โปรแกรมอัปเดตพร้อมใช้งานแล้ว" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "ข้อผิดพลาดเครือข่าย" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "เครือข่ายและประสิทธิภาพ" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "ผู้ใช้ใหม่ไม่สามารถเข้าร่วมได้ในขณะนี้ คุณยังสามารถสร้างบัญชีหรือลงชื่อเข้าใช้ แล้วลองใช้ลิงก์นี้อีกครั้งในภายหลังได้" #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "เวอร์ชันใหม่" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "ไม่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "ไม่มีสิทธิ์ {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "ไม่มีสิทธิ์ {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "ไม่มีคำอธิบาย" #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "ไม่มีการอัปเดตเดสก์ท็อป" @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "ไม่มี webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "รายงานในแอปแบบไม่ดำเนินการ" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "เปิดปฏิทินเลือกวันที่" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "เปิดหน้าดาวน์โหลดสำหรับเดสก์ท็อป" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "เปิดการตั้งค่า" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "เปิดศูนย์ซอฟต์แวร์" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "เปิดเมนูผู้ใช้สำหรับ {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "เปิดวิดีโอ" @@ -26558,9 +26473,9 @@ msgstr "เล่นส่วนที่เลือก" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "เล่นวิดีโอ" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "ปิดสิทธิประโยชน์พรีเมียมแล้ว" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "พรีเมียมตั้งแต่วันที่" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "รีเซ็ตสถานะพรีเมียมในระบบหลังบ้านแล้ว" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "ประเภทพรีเมียม" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "พรีเมียมถึงวันที่" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "กำลังเตรียม" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "แบบฟอร์มปรับแต่งโปรไฟล์" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "คำเตือนข้อมูลโปรไฟล์" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "ความเป็นส่วนตัวของโปรไฟล์" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "โครงร่างโปรไฟล์" @@ -28223,18 +28138,13 @@ msgstr "โหลดใหม่" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "โหลด {PRODUCT_NAME} ใหม่เพื่อใช้การเปลี่ยนแปลงเอ็นจินอย่างสมบูรณ์ การสลับระหว่างการตรวจสอบการสะกดในแอปกับของระบบต้องโหลดตัวเรนเดอร์ใหม่ เนื่องจาก Electron ไม่สามารถสลับผู้ให้บริการขณะทำงานอยู่ได้" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "โหลด {productName} ใหม่เพื่อใช้โมดูลที่อัปเดตแล้ว" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "โหลด {productName} ใหม่เพื่อใช้การอัปเดตจากเว็บ" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "โหลด {productName} ใหม่เพื่อใช้การอัปเดตจากเว็บ {version}" @@ -29142,7 +29052,7 @@ msgstr "ส่งอีกครั้งแล้ว" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "รีเซ็ต" @@ -29475,26 +29385,11 @@ msgstr "ทำตามที่ผู้ส่งเลือก โดยไ msgid "Restart {appName}" msgstr "รีสตาร์ท {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "รีสตาร์ท {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "โปรดรีสตาร์ท {productName} เพื่อให้การเปลี่ยนแปลงนี้มีผล เนื่องจากเดสก์ท็อป Linux ไม่สามารถเพิ่มหรือลบไอคอนถาดระบบขณะรันไทม์ได้อย่างน่าเชื่อถือ" -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "รีสตาร์ท {productName} เพื่อติดตั้งอัปเดตบนเดสก์ท็อป" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "รีสตาร์ท {productName} เพื่อติดตั้งอัปเดตเดสก์ท็อปเวอร์ชัน {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "ยกเลิกการแบน {0} แล้ว" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "ย้อนกลับ {defaultSeekAmount} วินาที" @@ -29866,7 +29761,7 @@ msgstr "โรมาเนีย" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "หมุนตามเข็มนาฬิกา" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "จำนวนแถวต่อหน้า" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "แพ็กเกจ RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "ตั้งค่าโฮสต์เอง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "โหมดโฮสต์เอง" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "การแทนที่โหมดโฮสต์เอง" @@ -32212,8 +32107,8 @@ msgstr "แสดงการแชร์หน้าจอของฉัน" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "แสดงว่าฉันกำลังพิมพ์" @@ -32675,7 +32570,7 @@ msgstr "ข้าม" msgid "Skip \"Mark all as read\" confirmation" msgstr "ข้ามการยืนยัน \"ทำเครื่องหมายว่าอ่านแล้วทั้งหมด\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "ข้ามการครอบตัด" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "ข้ามคำเตือนลิงก์ภายนอกสำหรับทุกโดเมน" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "ข้ามการเรียกเครือข่ายเมื่อส่งรายงานในแอป โฟลว์จะยังคงดำเนินการต่อไปยังหน้าจอสำเร็จเพื่อให้คุณสามารถทดสอบ UI ได้ แต่จะไม่มีการส่งสิ่งใดไปยังทีมความปลอดภัยจริง" @@ -32752,8 +32647,8 @@ msgstr "สโลวีเนีย" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "อัปโหลดไฟล์แนบช้า" @@ -32769,29 +32664,29 @@ msgstr "ช้าลงหน่อย โปรดรอสักครู่ #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "แก้ไขข้อความช้า" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "โหลดข้อความช้า" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "ส่งข้อความช้า" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "โหลดโปรไฟล์ช้า" @@ -32807,7 +32702,7 @@ msgstr "โหมดจำกัดเวลา · รอ {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "โหมดจำกัดเวลาทำงานอยู่" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "โหมดจำกัดเวลาถูกตั้งเป็น {durationLabel} รอก่อนส่งข้อความถัดไป" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "เวลาที่เหลือของโหมดจำกัดเวลา" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "ถาดระบบ" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "ติดตั้งโดยระบบ" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "แตะเพื่อเพิ่มโน้ต" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "ไฟล์บีบอัด tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "คอมมูนิตี้ที่คุณกำลังมองหาอาจถูกลบไปแล้ว หรือคุณอาจไม่ได้รับสิทธิ์เข้าถึง" #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "ไม่สามารถดาวน์โหลดการอัปเดตเดสก์ท็อปได้ โปรดลองอีกครั้งจากปุ่มอัปเดตเมื่อการเชื่อมต่อของคุณเสถียร" -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "ดาวน์โหลดการอัปเดตเดสก์ท็อปเรียบร้อยแล้ว รีสตาร์ท {productName} เพื่อติดตั้งให้เสร็จสิ้น" - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "ไฟล์ที่ดาวน์โหลดจะถูกบันทึกลงในคอมพิวเตอร์ของคุณ ติดตั้งด้วยตัวจัดการแพ็กเกจปกติของคุณ" @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "การดำเนินการนี้ไม่สามารถเลิกทำได้ ข้อมูลที่เกี่ยวข้องทั้งหมด รวมถึงผู้ใช้บอท จะถูกลบอย่างถาวร" #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "ภาพเคลื่อนไหวนี้ยาวหรือใหญ่เกินไปที่จะครอบตัดได้ ลองใช้ไฟล์ที่สั้นกว่าหรือเล็กกว่า" @@ -35549,7 +35439,7 @@ msgstr "บอทนี้ขอสิทธิ์ผู้ดูแลระบ #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "เบราว์เซอร์นี้ไม่สามารถครอบตัดไฟล์ {avifFormatLabel} แบบเคลื่อนไหวได้ โปรดอัปโหลดไฟล์ GIF หรือ WebP แทน" @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "คอนโซลของเบราว์เซอร์นี้เป็นเครื่องมือสำหรับนักพัฒนา" #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "เบราว์เซอร์นี้ปิดใช้งาน WebAssembly อยู่ จึงไม่สามารถครอบตัดรูปภาพเคลื่อนไหวได้" @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "การสนทนานี้ไม่พร้อมใช้งานแล้ว" #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "บิลด์เดสก์ท็อปนี้ไม่สามารถติดตั้งการอัปเดตภายใน {productName} ได้ โปรดดาวน์โหลดตัวติดตั้งเดสก์ท็อปล่าสุดแทน" @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "เดสก์ท็อปนี้ไม่รองรับปุ่มลัดทั่วทั้งระบบ แต่ปุ่มลัดยังใช้งานได้เมื่อ {productName} อยู่ในโฟกัส" #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "บิลด์สำหรับนักพัฒนานี้ไม่สามารถอัปเดตตัวเองได้ ดาวน์โหลดตัวติดตั้งสำหรับเดสก์ท็อปเพื่อทดสอบขั้นตอนการอัปเดต" @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "รหัสส่งต่อนี้หมดอายุแล้ว สร้างรหัสใหม่เพื่อดำเนินการต่อ" #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "ไม่สามารถอ่านรูปภาพนี้ได้ รูปภาพอาจเสียหาย" #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "การติดตั้งนี้ได้รับการจัดการโดยระบบของคุณ อัปเดต {productName} จากศูนย์ซอฟต์แวร์หรือตัวจัดการแพ็กเกจของคุณ" @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "วันที่กำหนดไม่สามารถเป็นวันในอนาคตได้" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "ภาพขนาดย่อสำหรับ {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "แถบชื่อเรื่อง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "แพลตฟอร์มแถบชื่อเรื่อง" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "สลับกล้อง" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "สลับการควบคุม" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "ตัวอักษร" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "ส่วนประกอบ UI" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "ตำแหน่งในสหราชอาณาจักร" @@ -37528,7 +37418,7 @@ msgstr "ไม่ได้จัดหมวดหมู่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "บัญชีที่ยังไม่ได้ยืนยัน" @@ -37689,7 +37579,7 @@ msgstr "ตัวเลือกสำรองแบบครอบคลุม #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "ไม่ทราบ" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "คำเชิญที่ไม่รู้จัก" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "ประเภทข้อความที่ไม่รู้จัก" @@ -37893,10 +37783,10 @@ msgstr "เลิกปิดเสียง" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "เปิดเสียง" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "เฉพาะข้อความส่วนตัวที่ยังไม่ได้อ่าน" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "จำนวนของขวัญที่ยังไม่ได้อ่าน" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "คลังของขวัญที่ยังไม่ได้อ่าน" @@ -38267,10 +38157,20 @@ msgstr "อัปเดต {productName} เพื่อดูข้อควา msgid "Update app" msgstr "อัปเดตแอป" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "อัปเดตพร้อมใช้งาน" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "อัปเดตสถานะของฉัน" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "อัปเดตเลย" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "อัปเดตนโยบายแล้ว" msgid "Updated saved media" msgstr "อัปเดตสื่อที่บันทึกไว้แล้ว" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "สถานะตัวอัปเดต" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "URL ที่กำหนดเองสามารถใช้ได้เฉพาะตัวอักษรและตัวเลขภาษาอังกฤษ รวมถึงเครื่องหมายขีดกลางเท่านั้น" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "ข้อจำกัดความรับผิดชอบ URL ที่กำหนดเอง" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "การยืนยันและข้อจำกัดการเป็นสมาชิก" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "การยืนยันตัวตน" @@ -39438,7 +39333,7 @@ msgstr "ความสดของสี" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "วิดีโอ" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "ตัวอย่างวิดีโอ" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "ความคืบหน้าของวิดีโอ" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "การตั้งค่าวิดีโอ" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "รูปย่อวิดีโอ" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "ป้าย Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID ของป้าย Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "ยืนยันการเชื่อมต่อเสียง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "แก้ไขข้อผิดพลาดการเชื่อมต่อเสียง" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "ข้อความเสียง" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "เครื่องเล่นข้อความเสียง" @@ -40500,11 +40395,6 @@ msgstr "ค้นหาเว็บ" msgid "Web search provider" msgstr "ผู้ให้บริการค้นหาเว็บ" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "อัปเดตเว็บพร้อมแล้ว" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "โอ้โห หนักเลย" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "จะยกเลิก" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "ซูม" diff --git a/fluxer_app/src/features/i18n/locales/tr/messages.po b/fluxer_app/src/features/i18n/locales/tr/messages.po index 3d96f85f0..0b8d551a3 100644 --- a/fluxer_app/src/features/i18n/locales/tr/messages.po +++ b/fluxer_app/src/features/i18n/locales/tr/messages.po @@ -1093,7 +1093,7 @@ msgstr "Bu kanalı {count, plural, one {# kanal} other {# kanal}} takip ediyor. msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# topluluk bulundu} other {# topluluk bulundu}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# topluluk, flux kapasitörü arızası nedeniyle geçici olarak kullanılamıyor.} other {# topluluk, flux kapasitörü arızası nedeniyle geçici olarak kullanılamıyor.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName}, bu uygulamanın sesi için güvenli ve izole bir ses yolu msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} bunun için donanım kodlayıcı kullanamaz, bu nedenle işlemcinizi kullanacak." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} kapanır, güncellemeyi yükler ve tekrar açılır." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName}, güncelleme hizmetine bağlanamadı. Bağlantınızı kontrol edin ve tekrar deneyin." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName}, indirilen güncellemeyi yüklemek için yeniden başlatılamadı. Güncelleme düğmesinden tekrar deneyin." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "bir ana bilgisayar adı, örn. {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Linux masaüstü için bir güncelleme mevcut. Bu sistem için paket biçimini seçin ve {productName} uygulaması bunu yerel olarak kaydedecektir." @@ -4597,11 +4597,6 @@ msgstr "Gelen aramayı yanıtla" msgid "Any key" msgstr "Herhangi bir tuş" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Herhangi bir güncelleyici hazır" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Ses paketi kaybı:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Ses oynatıcısı" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Ses işleme (odaklanmış ses)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Ses ilerlemesi" @@ -5551,7 +5546,7 @@ msgstr "AV1 (etkinleştirilmesi gerekir)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Mevcut" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Yasaklamalar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Bariyer geri sayımı" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Faturalandırma" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Faturalandırma dönemi" @@ -6867,7 +6862,7 @@ msgstr "Buraya dosya yüklenemiyor" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Konu kapatıldı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Buluta yükle" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Yazma alanı odağı" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Sıkıştırılıyor" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Fiyatınız değiştirilemedi" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Güncellemeler kontrol edilemedi" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Kurtarma kitiniz oluşturulamadı. Daha sonra hesap ayarlarınızdan bir tane oluşturabilirsiniz." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Görsel kırpılamadı" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Mesajlarınız silinemedi" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Masaüstü güncellemesi indirilemedi" @@ -10841,11 +10836,6 @@ msgstr "Ödeme başlatılamadı" msgid "Couldn't start the connection" msgstr "Bağlantı başlatılamadı" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Masaüstü güncellemesi başlatılamadı" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Davet arka planını kırp" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Kırpma önizlemesi" @@ -11343,12 +11333,12 @@ msgstr "Profil banner'ını kırp" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Kırpılan görsel çok büyük. Daha küçük bir alan veya daha küçük bir dosya seçin (maks. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "{percent}% kırpılıyor" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Moderatörler tarafından sağırlaştırıldı" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB paketi" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Masaüstü uygulaması" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Masaüstü uygulaması güncel" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Masaüstü başlangıcı" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Masaüstü güncellemesi {version} mevcut. Bir Linux paketi seçin." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Masaüstü güncellemesi mevcut" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Masaüstü güncellemesi mevcut. Bir Linux paketi seçin." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Masaüstü güncellemesi hazır" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Masaüstü sürümü {version} indirildi. Kurulumu tamamlamak için {productName}'i yeniden başlatın." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Geliştirici modu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Geliştirici seçeneği" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Geliştirici araçları kullanılamıyor" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Geliştirme sürümü" @@ -13604,26 +13584,6 @@ msgstr "İndir düğmesi" msgid "Download desktop app" msgstr "Masaüstü uygulamasını indir" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Masaüstü güncellemesini indir" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Masaüstü güncellemesini indir ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Masaüstü güncellemesi {version} sürümünü indir" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Masaüstü güncellemesi {version} sürümünü indir ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Dışa aktarmayı indir" @@ -13688,26 +13648,6 @@ msgstr "Geliştirici araçlarının gerçek kaynaklara işaret etmesi için kayn msgid "Download video" msgstr "Videoyu indir" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Masaüstü güncellemesi {version} sürümü indiriliyor: %{percent}" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Masaüstü güncellemesi indiriliyor: %{percent}" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Masaüstü güncellemesi indiriliyor: %{percent} ({formatBytes} / {formatBytes2}, {formatBytes3}/sn)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Masaüstü güncellemesi indiriliyor…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "E-posta doğrulaması gerekli" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "E-posta doğrulandı" @@ -15966,7 +15906,7 @@ msgstr "Özellik geçici olarak devre dışı bırakıldı" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Özellikler" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Zorla etkin" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Mesaj yüklemelerinin başarısız olmasını zorla" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Mesaj göndermelerinin başarısız olmasını zorla" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "GIF seçici yüklemesini zorla" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Yükleme iskeletini zorla" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Yetişkin medyayı zorla" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "{permissionName} iznini zorla kaldır" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Profil verileri uyarısını zorla" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Profil iskeletlerini zorla" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Zorla göster" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Özel URL sorumluluk reddini her zaman göster" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Ses bağlantısını her zaman göster" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Yavaş modu zorla etkinleştir" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Bilinmeyen mesaj türünü zorla" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Güncellemeyi zorla hazır göster" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "İlet" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} saniye ileri sar" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Kod oluşturuluyor…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Coğrafi engelleme katmanı" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF seçenekleri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "GIF seçici yükleniyor" @@ -17226,14 +17161,14 @@ msgstr "Hediye kodları" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Hediye süresi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Hediye envanteri" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Hediye bulunamadı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Hediye kullanıldı" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "İçerir" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Daha önce satın aldı" @@ -17892,7 +17827,7 @@ msgstr "Kalp" msgid "Hebrew" msgstr "İbranice" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Yükseklik" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Yeni uygulamayı yükle" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Yüklü" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Yüklü sürüm: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Masaüstü güncellemesi {version} yükleniyor…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Masaüstü güncellemesi yükleniyor…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Gecikme grafiği" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux varsayılanı" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux paketi" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Aboneliğinizi yönetin" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Manuel masaüstü güncellemesi" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Yetişkinlere uygun içerik ve içerik uyarıları" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Yetişkin içeriği kanal geçidi" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Yetişkinlere yönelik içerik kontrolleri şu anda yalnızca Birleşik Krallık'ta mevcuttur." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Yetişkin içeriği medya geçidi" @@ -22888,13 +22813,13 @@ msgstr "Sessize al" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Sesi kapat" @@ -23316,16 +23241,6 @@ msgstr "Seslendirme" msgid "Native title bar" msgstr "Yerel başlık çubuğu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Yerel güncelleme ilerlemesi" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Yerel güncelleyici hazır" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Ağ hatası" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Ağ ve performans" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Yeni kullanıcılar şu anda katılamıyor. Yine de bir hesap oluşturabilir veya oturum açabilir, ardından bu bağlantıyı daha sonra tekrar deneyebilirsiniz." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Yeni sürüm" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Hayır" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} izni yok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} izni yok" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Açıklama yok." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Masaüstü güncellemesi mevcut değil." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Webhook yok" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Uygulama içi raporları atla" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Tarih seçiciyi aç" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Masaüstü indirmelerini aç" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Ayarları aç" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Yazılım merkezini aç" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "{displayName} için kullanıcı menüsünü aç" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Videoyu aç" @@ -26558,9 +26473,9 @@ msgstr "Seçimi oynat" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Videoyu oynat" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Premium avantajları devre dışı bırakıldı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium başlangıç tarihi" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Arka uçta premium durum sıfırlandı." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Premium türü" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium bitiş tarihi" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Hazırlanıyor" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Profil özelleştirme formu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Profil verileri uyarısı" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Profil gizliliği" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Profil iskeletleri" @@ -28223,18 +28138,13 @@ msgstr "Yeniden yükle" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Motor değişikliğini tamamen uygulamak için {PRODUCT_NAME} uygulamasını yeniden yükleyin. Uygulama içi ve sistem yazım denetimi arasında geçiş yapmak arayüzün yeniden yüklenmesini gerektirir çünkü Electron çalışırken sağlayıcı değiştiremez." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Güncellenmiş modülleri kullanmak için {productName} yeniden yükleyin" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Web güncellemesini kullanmak için {productName} uygulamasını yeniden yükleyin" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "{version} web güncellemesini kullanmak için {productName} uygulamasını yeniden yükleyin" @@ -29142,7 +29052,7 @@ msgstr "Tekrar gönderildi" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Sıfırla" @@ -29475,26 +29385,11 @@ msgstr "Gönderenin tercihine uyulur, @bahsetmeyi açıp kapattıklarında uyar msgid "Restart {appName}" msgstr "{appName} uygulamasını yeniden başlat" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "{productName}'i yeniden başlat" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Bu değişikliğin geçerli olması için {productName} uygulamasını yeniden başlatın çünkü Linux masaüstleri çalışma zamanında tepsi simgelerini güvenilir bir şekilde ekleyemez veya kaldıramaz." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "{productName}'i yeniden başlatarak masaüstü güncellemesini yükleyin" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "{productName}'i yeniden başlatarak {version} masaüstü güncellemesini yükleyin" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "{0} için yasaklama kaldırıldı" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "{defaultSeekAmount} saniye geri sar" @@ -29866,7 +29761,7 @@ msgstr "Romence" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Saat yönünde döndür" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Sayfa başına satır" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM paketi" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Kendi sunucunda barındırma kurulumu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Kendi sunucunda barındırma modu" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Kendi sunucunda barındırma modu geçersiz kılma" @@ -32212,8 +32107,8 @@ msgstr "Ekran paylaşımımı göster" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Kendimi yazıyor olarak göster" @@ -32675,7 +32570,7 @@ msgstr "Atla" msgid "Skip \"Mark all as read\" confirmation" msgstr "\"Tümünü okundu olarak işaretle\" onayını atla" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Kırpmayı atla" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Tüm alan adları için harici bağlantı uyarısını atla" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Uygulama içi bir rapor gönderildiğinde ağ çağrısını atla. Akış yine de başarı ekranına ilerler, böylece kullanıcı arayüzünü kullanabilirsiniz, ancak güvenlik ekibine hiçbir şey gönderilmez." @@ -32752,8 +32647,8 @@ msgstr "Slovenya" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Yavaş ek yükleme" @@ -32769,29 +32664,29 @@ msgstr "Yavaşlayın — tekrar denemeden önce biraz bekleyin." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Yavaş mesaj düzenleme" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Yavaş mesaj yüklemesi" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Yavaş mesaj gönderme" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Yavaş profil yüklemesi" @@ -32807,7 +32702,7 @@ msgstr "Yavaş mod · {remaining} bekleyin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Yavaş mod etkin" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Yavaş mod {durationLabel} olarak ayarlandı. Başka bir mesaj göndermeden önce bekleyin." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Yavaş modda kalan süre" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Sistem tepsisi" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Sistem tarafından yönetilen kurulum" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Not eklemek için dokun" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz arşivi" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Aradığınız topluluk silinmiş olabilir veya erişim izniniz olmayabilir." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Masaüstü güncellemesi indirilemedi. Bağlantınız kararlı olduğunda güncelleme düğmesinden tekrar deneyin." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Masaüstü güncellemesi indirildi. Kurulumu tamamlamak için {productName}'i yeniden başlatın." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "İndirilen dosya bilgisayarınıza kaydedildi. Normal paket yöneticinizle yükleyin." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Bu eylem geri alınamaz. Bot kullanıcısı dahil olmak üzere ilgili tüm veriler kalıcı olarak silinecek." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Bu animasyon kırpılamayacak kadar uzun veya büyük. Daha kısa veya daha küçük bir dosya deneyin." @@ -35549,7 +35439,7 @@ msgstr "Bu bot yönetici izni istiyor. Yalnızca geliştiriciye tamamen güveniy #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Bu tarayıcı animasyonlu {avifFormatLabel} dosyalarını kırpamaz. Bunun yerine GIF veya WebP yükleyin." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Bu tarayıcı konsolu bir geliştirici aracıdır." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Bu tarayıcıda WebAssembly kapalı olduğundan hareketli resimler kırpılamaz." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Bu sohbet artık kullanılamıyor." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Bu masaüstü sürümü, güncellemeleri {productName} içinde yükleyemiyor. Bunun yerine en son masaüstü kurulum dosyasını indirin." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Bu masaüstü sistem genelinde kısayolları desteklemiyor. Kısayollar {productName} odaklanmışken çalışmaya devam eder." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Bu geliştirme sürümü kendini güncelleyemez. Güncelleme akışını test etmek için bir masaüstü yükleyicisi indirin." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Bu aktarım kodunun süresi doldu. Devam etmek için yeni bir tane oluşturun." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Bu resim okunamadı. Bozuk olabilir." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Bu kurulum sisteminiz tarafından yönetiliyor. {productName} uygulamasını yazılım merkezinden veya paket yöneticisinden güncelleyin." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Eşik tarihi gelecekte olamaz" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title} için küçük resim" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Başlık çubuğu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Başlık çubuğu platformu" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Kamerayı aç/kapat" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Kontrolleri aç/kapat" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Tipografi" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Kullanıcı arayüzü bileşenleri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Birleşik Krallık coğrafyası" @@ -37528,7 +37418,7 @@ msgstr "Kategorisiz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Sahiplenilmemiş hesap" @@ -37689,7 +37579,7 @@ msgstr "Evrensel yedek. En düşük kalite, ancak her yerde çalışır." #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Bilinmiyor" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Bilinmeyen davet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Bilinmeyen mesaj türü" @@ -37893,10 +37783,10 @@ msgstr "Sessizden çıkar" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Sesi aç" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Yalnızca okunmamış DM'ler" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Okunmamış hediye sayısı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Okunmamış hediye envanteri" @@ -38267,10 +38157,20 @@ msgstr "Bu mesajı görüntülemek için {productName} uygulamasını güncelley msgid "Update app" msgstr "Uygulamayı güncelle" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Güncelleme mevcut" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Durumumu güncelle" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Şimdi güncelle" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Güncellenen politikalar" msgid "Updated saved media" msgstr "Kayıtlı medya güncellendi" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Güncelleyici durumu" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Özel URL yalnızca alfanümerik karakterler ve aradaki tireleri içerebilir." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Özel URL sorumluluk reddi" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Doğrulama ve üyelik engelleri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Doğrulama engeli" @@ -39438,7 +39333,7 @@ msgstr "Canlılık" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Video önizlemesi" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Video ilerlemesi" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Video ayarları" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Video küçük resmi" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary rozeti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary rozet kimliği" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Ses bağlantısı onayı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Ses bağlantısı hata ayıklaması" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Sesli mesaj" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Sesli mesaj oynatıcısı" @@ -40500,11 +40395,6 @@ msgstr "Web araması" msgid "Web search provider" msgstr "Web arama sağlayıcısı" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web güncelleyici hazır" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Vay canına, bu biraz fazla oldu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "İptal edilecek" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Yakınlaştır" diff --git a/fluxer_app/src/features/i18n/locales/uk/messages.po b/fluxer_app/src/features/i18n/locales/uk/messages.po index 17e42c0b1..153cf67e4 100644 --- a/fluxer_app/src/features/i18n/locales/uk/messages.po +++ b/fluxer_app/src/features/i18n/locales/uk/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# канал підписаний} few {# кана msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {Знайдено # спільноту} few {Знайдено # спільноти} many {Знайдено # спільнот} other {Знайдено # спільноти}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# спільнота тимчасово недоступна через несправність потокового конденсатора.} few {# спільноти тимчасово недоступні через несправність потокового конденсатора.} many {# спільнот тимчасово недоступні через несправність потокового конденсатора.} other {# спільнот тимчасово недоступні через несправність потокового конденсатора.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} не може налаштувати безпечний і msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} не може задіяти для цього апаратний кодер, тому використовуватиме ваш процесор." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} закриється, встановить оновлення та відкриється знову." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} не зміг підключитися до служби оновлень. Перевірте з'єднання та спробуйте ще раз." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Не вдалося перезапустити {productName}, щоб установити завантажене оновлення. Спробуйте ще раз через кнопку оновлення." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "ім'я хоста, наприклад, {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Доступне оновлення для комп'ютера в Linux. Оберіть формат пакета для цієї системи, і {productName} збереже його локально." @@ -4597,11 +4597,6 @@ msgstr "Відповісти на вхідний дзвінок" msgid "Any key" msgstr "Будь-яка клавіша" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Будь-який оновлювач готовий" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Втрата аудіопакетів:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Аудіоплеєр" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Обробка аудіо (фокусований голос)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Прогрес відтворення аудіо" @@ -5551,7 +5546,7 @@ msgstr "AV1 (потрібно увімкнути)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Доступно" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Блокування" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Відлік бар'єра" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Оплата" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Платіжний цикл" @@ -6867,7 +6862,7 @@ msgstr "Сюди не можна завантажити файли" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Закрито гілку" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Завантаження в хмару" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Фокус на полі введення" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Стискаємо" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Не вдалося змінити вашу ціну" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Не вдалося перевірити наявність оновлень" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Не вдалося створити ваш комплект відновлення. Ви можете створити його пізніше в налаштуваннях облікового запису." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Не вдалося обрізати зображення" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Не вдалося видалити ваші повідомлення" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Не вдалося завантажити оновлення для комп'ютера" @@ -10841,11 +10836,6 @@ msgstr "Не вдалося розпочати оформлення замовл msgid "Couldn't start the connection" msgstr "Не вдалося створити підключення" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Не вдалося запустити оновлення для комп'ютера" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Обрізати фон запрошення" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Попередній перегляд обрізання" @@ -11343,12 +11333,12 @@ msgstr "Обрізати банер профілю" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Обрізане зображення завелике. Виберіть меншу область або менший файл (макс. {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Обрізання {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Звук вимкнено модераторами" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Пакет DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Десктопний застосунок" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Десктопний застосунок має найновішу версію" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Запуск на комп'ютері" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Доступне оновлення для комп'ютера {version}. Виберіть пакет Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Доступне оновлення для комп'ютера" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Доступне оновлення для комп'ютера. Виберіть пакет Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Оновлення для комп'ютера готове" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Комп'ютерну версію {version} завантажено. Перезапустіть {productName}, щоб завершити встановлення." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Режим розробника" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Параметр розробника" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Інструменти розробника недоступні" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Розробницька збірка" @@ -13604,26 +13584,6 @@ msgstr "Кнопка завантаження" msgid "Download desktop app" msgstr "Завантажити десктопний застосунок" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Завантажити оновлення для комп'ютера" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Завантажити оновлення для комп'ютера ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Завантажити оновлення для комп'ютера {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Завантажити оновлення для комп'ютера {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Завантажити експорт" @@ -13688,26 +13648,6 @@ msgstr "Завантажувати вихідні карти, щоб трасу msgid "Download video" msgstr "Завантажити відео" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Завантаження оновлення для комп'ютера {version}: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Завантаження оновлення для комп'ютера: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Завантаження оновлення для комп'ютера: {percent}% ({formatBytes} / {formatBytes2} зі швидкістю {formatBytes3}/с)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Завантаження оновлення для комп'ютера…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Потрібне підтвердження електронної пошти" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Електронну пошту підтверджено" @@ -15966,7 +15906,7 @@ msgstr "Функцію тимчасово вимкнено" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Функції" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Примусово ввімкнено" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Примусові помилки завантаження повідомлень" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Примусові помилки надсилання повідомлень" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Примусово показувати завантаження добірки GIF" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Примусово показувати скелет завантаження" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Примусово показувати медіа для дорослих" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Примусово вимкнути дозвіл «{permissionName}»" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Примусово показувати попередження про дані профілю" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Примусово показувати скелети профілів" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Примусово показати" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Завжди показувати попередження про персоналізовану URL-адресу" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Завжди показувати голосове з'єднання" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Примусово ввімкнути повільний режим" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Примусово показувати невідомий тип повідомлення" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Примусово показувати готове оновлення" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Переслати" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Перемотати вперед на {defaultSeekAmount} секунд" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Генерування коду…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Накладання географічного блокування" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Параметри GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Завантаження добірки GIF" @@ -17226,14 +17161,14 @@ msgstr "Коди подарунків" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Тривалість подарунка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Інвентар подарунків" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Подарунок не знайдено" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Подарунок активовано" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Містить" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Коли-небудь купував" @@ -17892,7 +17827,7 @@ msgstr "Серце" msgid "Hebrew" msgstr "Іврит" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Висота" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Встановити новий застосунок" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Встановлено" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Встановлена версія: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Встановлення оновлення для комп'ютера {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Встановлення оновлення для комп'ютера…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Графік затримки" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Стандартний аудіопристрій Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Пакет для Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Керування підпискою" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Оновлення для комп'ютера вручну" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Контент для дорослих і попередження про вміст" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Блокування каналу з контентом для дорослих" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Перевірка контенту для дорослих наразі доступна лише у Великій Британії." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Блокування медіа з контентом для дорослих" @@ -22888,13 +22813,13 @@ msgstr "Вимкнути сповіщення" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Вимкнути звук" @@ -23316,16 +23241,6 @@ msgstr "Озвучення" msgid "Native title bar" msgstr "Стандартний рядок заголовка" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Прогрес оновлення застосунку" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Нативний оновлювач готовий" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Помилка мережі" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Мережа та продуктивність" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Нові користувачі зараз не можуть приєднатися. Ви все ще можете створити обліковий запис або ввійти, а потім скористатися цим посиланням пізніше." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Нова версія" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Ні" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Немає дозволу {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Немає дозволу {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Без опису." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Оновлення для комп'ютера недоступне." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Вебхуків немає" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Скарги в застосунку без дії" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Відкрити календар" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Відкрити завантаження для комп'ютера" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Відкрити налаштування" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Відкрити центр програм" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Відкрити меню користувача для {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Відкрити відео" @@ -26558,9 +26473,9 @@ msgstr "Відтворити виділене" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Відтворити відео" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Преміум-переваги вимкнено" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Дата початку преміуму" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Стан преміуму скинуто на бекенді." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Тип преміуму" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Дата завершення преміуму" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Підготовка" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Форма налаштування профілю" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Попередження про дані профілю" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Конфіденційність профілю" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Скелети профілів" @@ -28223,18 +28138,13 @@ msgstr "Перезавантажити" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Перезавантажте {PRODUCT_NAME}, щоб повністю застосувати зміну рушія. Перемикання між вбудованою та системною перевіркою орфографії потребує перезавантаження процесу візуалізації, оскільки Electron не може змінювати постачальників під час роботи." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Перезавантажте {productName}, щоб використати оновлені модулі" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Перезавантажте {productName}, щоб застосувати вебоновлення" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Перезавантажте {productName}, щоб застосувати вебоновлення {version}" @@ -29142,7 +29052,7 @@ msgstr "Надіслано повторно" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Скинути" @@ -29475,26 +29385,11 @@ msgstr "Враховувати намір відправника, без поп msgid "Restart {appName}" msgstr "Перезапустити {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Перезапустити {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Перезапустіть {productName}, щоб ця зміна набула чинності, оскільки робочі столи Linux не можуть надійно додавати або видаляти значки в треї під час роботи." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Перезапустіть {productName}, щоб установити оновлення для комп'ютера" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Перезапустіть {productName}, щоб установити оновлення для комп'ютера {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Скасовано блокування для {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Перемотати на {defaultSeekAmount} секунд назад" @@ -29866,7 +29761,7 @@ msgstr "Румунська" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Повернути за годинниковою стрілкою" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Рядків на сторінку" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Пакет RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Налаштування самостійного розміщення" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Режим самостійного розміщення" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Примусовий режим самостійного розміщення" @@ -32212,8 +32107,8 @@ msgstr "Показувати демонстрацію свого екрана" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Показувати, що я друкую" @@ -32675,7 +32570,7 @@ msgstr "Пропустити" msgid "Skip \"Mark all as read\" confirmation" msgstr "Пропускати підтвердження «Позначити всі як прочитані»" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Пропустити обрізання" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Пропускати попередження про зовнішні посилання для всіх доменів" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Пропускати мережевий виклик під час надсилання скарги в застосунку. Процес усе одно переходить до екрана успішного виконання, щоб ви могли перевірити інтерфейс, але команді безпеки нічого не надсилається." @@ -32752,8 +32647,8 @@ msgstr "Словенія" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Повільне завантаження вкладень" @@ -32769,29 +32664,29 @@ msgstr "Пригальмуйте. Зачекайте трохи, перш ніж #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Повільне редагування повідомлень" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Повільне завантаження повідомлень" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Повільне надсилання повідомлень" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Повільне завантаження профілю" @@ -32807,7 +32702,7 @@ msgstr "Повільний режим · зачекайте {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Повільний режим активний" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Встановлено повільний режим на {durationLabel}. Зачекайте, перш ніж надсилати наступне повідомлення." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Залишилось до кінця повільного режиму" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Системний трей" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Системна інсталяція" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Натисніть, щоб додати примітку" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Архів tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Спільноту, яку ви шукаєте, можливо, було видалено або у вас немає доступу до неї." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Не вдалося завантажити оновлення для комп'ютера. Спробуйте ще раз за допомогою кнопки оновлення, коли ваше з'єднання буде стабільним." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Оновлення для комп'ютера завантажено. Перезапустіть {productName}, щоб завершити встановлення." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Завантажений файл збережено на вашому комп'ютері. Установіть його за допомогою звичайного менеджера пакунків." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Цю дію не можна скасувати. Усі пов'язані дані, включно з користувачем-ботом, буде видалено назавжди." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ця анімація занадто довга або занадто велика для обрізання. Спробуйте коротший або менший файл." @@ -35549,7 +35439,7 @@ msgstr "Цей бот запитує дозвіл адміністратора. #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Цей браузер не може обрізати анімовані файли {avifFormatLabel}. Натомість завантажте GIF або WebP." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Консоль браузера — це інструмент розробника." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "У цьому браузері вимкнено WebAssembly, тому анімовані зображення не можна обрізати." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Ця розмова більше недоступна." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Ця збірка для комп'ютера не може встановлювати оновлення всередині {productName}. Натомість завантажте найновіший інсталятор для комп'ютера." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Це робоче середовище не підтримує загальносистемні комбінації клавіш. Комбінації клавіш і далі працюють, коли {productName} у фокусі." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Ця розробницька збірка не може оновити себе. Завантажте інсталятор для комп'ютера, щоб протестувати процес оновлення." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Термін дії цього коду передачі закінчився. Створіть новий, щоб продовжити." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Не вдалося прочитати це зображення. Можливо, воно пошкоджене." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Цією інсталяцією керує ваша система. Оновіть {productName} через центр програм або менеджер пакунків." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Порогова дата не може бути в майбутньому" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Мініатюра для {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Рядок заголовка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Платформа рядка заголовка" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Перемкнути камеру" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Перемкнути елементи керування" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Типографіка" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Компоненти інтерфейсу" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Геолокація Великої Британії" @@ -37528,7 +37418,7 @@ msgstr "Без категорії" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Незареєстрований обліковий запис" @@ -37689,7 +37579,7 @@ msgstr "Універсальний запасний варіант. Найниж #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Невідомо" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Невідоме запрошення" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Невідомий тип повідомлення" @@ -37893,10 +37783,10 @@ msgstr "Увімкнути сповіщення" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Увімкнути звук" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Лише непрочитані приватні чати" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Кількість непрочитаних подарунків" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Непрочитаний інвентар подарунків" @@ -38267,10 +38157,20 @@ msgstr "Оновіть {productName}, щоб переглянути це пов msgid "Update app" msgstr "Оновити застосунок" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Оновлення доступне" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Оновити мій статус" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Оновити зараз" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Оновлені правила" msgid "Updated saved media" msgstr "Оновлено збережені медіа" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Стан оновлення" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "Персоналізована URL-адреса може містити лише літери, цифри та внутрішні дефіси." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Попередження про персоналізовану URL-адресу" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Бар'єри перевірки та членства" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Бар'єр перевірки" @@ -39438,7 +39333,7 @@ msgstr "Яскравість" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Відео" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Попередній перегляд відео" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Прогрес відео" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Налаштування відео" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Мініатюра відео" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Значок Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID значка Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Підтвердження голосового з'єднання" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Налагодження голосового з'єднання" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Голосове повідомлення" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Програвач голосових повідомлень" @@ -40500,11 +40395,6 @@ msgstr "Вебпошук" msgid "Web search provider" msgstr "Постачальник вебпошуку" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Вебоновлювач готовий" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Ого, це забагато" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Буде скасовано" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Масштаб" diff --git a/fluxer_app/src/features/i18n/locales/vi/messages.po b/fluxer_app/src/features/i18n/locales/vi/messages.po index f110574d3..390e8a225 100644 --- a/fluxer_app/src/features/i18n/locales/vi/messages.po +++ b/fluxer_app/src/features/i18n/locales/vi/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# kênh khác đang theo dõi} other {# kênh khác msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {# cộng đồng được tìm thấy} other {# cộng đồng được tìm thấy}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# cộng đồng hiện không khả dụng do lỗi bộ biến đổi dòng chảy.} other {# cộng đồng hiện không khả dụng do lỗi bộ biến đổi dòng chảy.}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} không thể bắt đầu một tuyến âm thanh riêng b msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} không thể sử dụng bộ mã hóa phần cứng cho việc này, vì vậy ứng dụng sẽ sử dụng CPU của bạn." +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} sẽ đóng, cài đặt bản cập nhật và mở lại." + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} không thể kết nối đến dịch vụ cập nhật. Hãy kiểm tra kết nối và thử lại." -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "Không thể khởi động lại {productName} để cài đặt bản cập nhật đã tải xuống. Hãy thử lại từ nút cập nhật." - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "một tên máy chủ, ví dụ: {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Đã có bản cập nhật cho ứng dụng máy tính trên Linux. Chọn định dạng gói cho hệ thống này và {productName} sẽ lưu về máy." @@ -4597,11 +4597,6 @@ msgstr "Trả lời cuộc gọi đến" msgid "Any key" msgstr "Bất kỳ phím nào" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "Bất kỳ trình cập nhật nào đã sẵn sàng" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "Mất gói âm thanh:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "Trình phát âm thanh" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "Xử lý âm thanh (giọng nói tập trung)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "Tiến độ âm thanh" @@ -5551,7 +5546,7 @@ msgstr "AV1 (yêu cầu bật tùy chọn)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "Khả dụng" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "Danh sách cấm" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "Đếm ngược rào chắn" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "Thanh toán" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "Chu kỳ thanh toán" @@ -6867,7 +6862,7 @@ msgstr "Không thể tải tệp lên ở đây" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "Đã đóng luồng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "Tải lên đám mây" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "Tập trung vào trình soạn thảo" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "Đang nén" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "Không thể thay đổi mức giá của bạn" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "Không thể kiểm tra bản cập nhật" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "Không thể tạo bộ phục hồi của bạn. Bạn có thể tạo sau trong cài đặt tài khoản." #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "Không thể cắt ảnh" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "Không thể xóa tin nhắn của bạn" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "Không thể tải bản cập nhật ứng dụng máy tính" @@ -10841,11 +10836,6 @@ msgstr "Không thể bắt đầu thanh toán" msgid "Couldn't start the connection" msgstr "Không thể bắt đầu kết nối" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "Không thể bắt đầu cập nhật ứng dụng máy tính" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "Cắt ảnh nền lời mời" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "Xem trước vùng cắt" @@ -11343,12 +11333,12 @@ msgstr "Cắt ảnh bìa hồ sơ" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "Ảnh đã cắt quá lớn. Chọn vùng nhỏ hơn hoặc tệp nhỏ hơn (tối đa {maxSizeLabel})." #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "Đang cắt {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "Đã bị người điều hành tắt tiếng nghe" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "Gói DEB" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "Ứng dụng máy tính" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "Ứng dụng máy tính đã là phiên bản mới nhất" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "Khởi động cùng máy tính" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "Có bản cập nhật {version} cho ứng dụng máy tính. Chọn gói Linux." @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "Có bản cập nhật cho ứng dụng máy tính" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "Có bản cập nhật cho ứng dụng máy tính. Chọn gói Linux." -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "Bản cập nhật ứng dụng máy tính đã sẵn sàng" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "Đã tải xuống phiên bản {version} cho máy tính. Khởi động lại {productName} để hoàn tất cài đặt." - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "Chế độ nhà phát triển" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "Tùy chọn nhà phát triển" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "Công cụ nhà phát triển không khả dụng" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "Bản dựng phát triển" @@ -13604,26 +13584,6 @@ msgstr "Nút tải xuống" msgid "Download desktop app" msgstr "Tải ứng dụng máy tính" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "Tải bản cập nhật cho máy tính" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "Tải bản cập nhật cho máy tính ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "Tải bản cập nhật {version} cho máy tính để bàn" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "Tải bản cập nhật {version} cho máy tính ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "Tải xuống bản xuất" @@ -13688,26 +13648,6 @@ msgstr "Tải xuống bản đồ nguồn để dấu vết ngăn xếp và các msgid "Download video" msgstr "Tải video" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "Đang tải bản cập nhật {version} cho máy tính: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "Đang tải bản cập nhật cho máy tính: {percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "Đang tải bản cập nhật cho máy tính: {percent}% ({formatBytes} / {formatBytes2} với tốc độ {formatBytes3}/s)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "Đang tải bản cập nhật cho máy tính…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "Cần xác minh email" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "Email đã xác minh" @@ -15966,7 +15906,7 @@ msgstr "Tính năng tạm thời bị tắt" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "Tính năng" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "Buộc bật" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "Buộc tải tin nhắn thất bại" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "Buộc gửi tin nhắn thất bại" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "Buộc trình chọn GIF ở trạng thái đang tải" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "Buộc hiển thị khung tải" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Buộc hiển thị nội dung người lớn" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "Buộc không có quyền {permissionName}" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "Buộc hiển thị cảnh báo dữ liệu hồ sơ" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "Buộc hiển thị khung hồ sơ" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "Buộc hiển thị" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "Luôn hiển thị cảnh báo URL tùy chỉnh" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "Luôn hiển thị trạng thái kết nối thoại" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "Buộc bật chế độ chậm" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "Buộc loại tin nhắn không xác định" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "Buộc cập nhật sẵn sàng" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "Chuyển tiếp" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "Tua tới {defaultSeekAmount} giây" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "Đang tạo mã…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "Lớp phủ chặn địa lý" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "Tùy chọn GIF" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "Đang tải trình chọn GIF" @@ -17226,14 +17161,14 @@ msgstr "Mã quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Thời lượng quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Kho quà tặng" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "Không tìm thấy quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "Đã đổi quà" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "Có" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "Đã từng mua hàng" @@ -17892,7 +17827,7 @@ msgstr "Trái tim" msgid "Hebrew" msgstr "Tiếng Do Thái" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "Chiều cao" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "Cài đặt ứng dụng mới" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "Đã cài đặt" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "Phiên bản đã cài đặt: {currentVersion}." -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "Đang cài đặt bản cập nhật {version} cho máy tính…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "Đang cài đặt bản cập nhật cho máy tính…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "Biểu đồ độ trễ" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Mặc định của Linux" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Gói Linux" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "Quản lý gói đăng ký của bạn" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "Cập nhật thủ công ứng dụng máy tính" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "Nội dung người lớn & cảnh báo nội dung" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "Cổng kênh nội dung người lớn" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "Tính năng kiểm tra nội dung người lớn hiện chỉ có ở Vương quốc Anh." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "Cổng phương tiện nội dung người lớn" @@ -22888,13 +22813,13 @@ msgstr "Tắt thông báo" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "Tắt âm thanh" @@ -23316,16 +23241,6 @@ msgstr "Giọng đọc" msgid "Native title bar" msgstr "Thanh tiêu đề gốc" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "Tiến độ cập nhật gốc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "Trình cập nhật gốc đã sẵn sàng" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "Lỗi mạng" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "Mạng và hiệu suất" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "Người dùng mới hiện chưa thể tham gia. Bạn vẫn có thể tạo tài khoản hoặc đăng nhập, sau đó thử lại liên kết này sau." #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "Phiên bản mới" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "Không" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "Không có quyền {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "Không có quyền {sendMessagesPermission}" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "Không có mô tả." #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "Không có bản cập nhật nào cho ứng dụng máy tính." @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "Không có webhook nào" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "Bỏ qua gửi báo cáo trong ứng dụng" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "Mở bộ chọn ngày" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "Mở trang tải xuống cho máy tính" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "Mở cài đặt" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "Mở trung tâm phần mềm" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "Mở menu người dùng của {displayName}" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "Mở video" @@ -26558,9 +26473,9 @@ msgstr "Phát đoạn đã chọn" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "Phát video" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "Đặc quyền Premium đã tắt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "Premium từ ngày" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "Đã đặt lại trạng thái Premium ở backend." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "Loại Premium" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "Premium đến ngày" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "Đang chuẩn bị" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "Biểu mẫu tùy chỉnh hồ sơ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "Cảnh báo dữ liệu hồ sơ" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "Quyền riêng tư của hồ sơ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "Khung hồ sơ" @@ -28223,18 +28138,13 @@ msgstr "Tải lại" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "Tải lại {PRODUCT_NAME} để áp dụng đầy đủ thay đổi về công cụ. Việc chuyển đổi giữa kiểm tra chính tả trong ứng dụng và của hệ thống yêu cầu tải lại trình kết xuất vì Electron không thể hoán đổi nhà cung cấp khi đang chạy." -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "Tải lại {productName} để sử dụng các mô-đun đã cập nhật" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "Tải lại {productName} để sử dụng bản cập nhật web" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "Tải lại {productName} để sử dụng bản cập nhật web {version}" @@ -29142,7 +29052,7 @@ msgstr "Đã gửi lại" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "Đặt lại" @@ -29475,26 +29385,11 @@ msgstr "Tôn trọng ý định của người gửi, không cảnh báo khi h msgid "Restart {appName}" msgstr "Khởi động lại {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "Khởi động lại {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "Khởi động lại {productName} để thay đổi này có hiệu lực vì máy tính để bàn Linux không thể thêm hoặc xóa biểu tượng khay hệ thống một cách đáng tin cậy trong thời gian chạy." -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "Khởi động lại {productName} để cài đặt bản cập nhật cho máy tính" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "Khởi động lại {productName} để cài đặt bản cập nhật máy tính {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "Đã thu hồi lệnh cấm đối với {0}" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "Tua lại {defaultSeekAmount} giây" @@ -29866,7 +29761,7 @@ msgstr "Tiếng Romania" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "Xoay theo chiều kim đồng hồ" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "Số hàng mỗi trang" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "Gói RPM" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "Thiết lập tự lưu trữ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "Chế độ tự lưu trữ" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "Ghi đè chế độ tự lưu trữ" @@ -32212,8 +32107,8 @@ msgstr "Hiển thị chia sẻ màn hình của tôi" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "Hiển thị tôi đang nhập" @@ -32675,7 +32570,7 @@ msgstr "Bỏ qua" msgid "Skip \"Mark all as read\" confirmation" msgstr "Bỏ qua xác nhận \"Đánh dấu tất cả đã đọc\"" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "Bỏ qua cắt ảnh" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "Bỏ qua cảnh báo liên kết ngoài cho tất cả các miền" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "Bỏ qua lệnh gọi mạng khi gửi báo cáo trong ứng dụng. Luồng vẫn chuyển sang màn hình thành công để bạn thử giao diện, nhưng không có gì thực sự được gửi đến đội ngũ an toàn." @@ -32752,8 +32647,8 @@ msgstr "Slovenia" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "Tải tệp đính kèm chậm" @@ -32769,29 +32664,29 @@ msgstr "Chậm lại — đợi một lát trước khi thử lại." #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "Chỉnh sửa tin nhắn chậm" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "Tải tin nhắn chậm" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "Gửi tin nhắn chậm" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "Tải hồ sơ chậm" @@ -32807,7 +32702,7 @@ msgstr "Chế độ chậm · chờ {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Chế độ chậm đang bật" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Chế độ chậm được đặt thành {durationLabel}. Hãy đợi trước khi gửi tin nhắn khác." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "Chế độ chậm còn lại" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "Khay hệ thống" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "Cài đặt do hệ thống quản lý" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "Nhấn để thêm ghi chú" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "Tệp nén tar.gz" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "Cộng đồng bạn tìm kiếm có thể đã bị xóa hoặc bạn không có quyền truy cập." #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "Không thể tải bản cập nhật cho máy tính. Hãy thử lại bằng nút cập nhật khi kết nối của bạn ổn định." -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "Bản cập nhật cho máy tính đã được tải xuống. Khởi động lại {productName} để hoàn tất quá trình cài đặt." - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "Tệp đã tải xuống được lưu vào máy tính của bạn. Cài đặt bằng trình quản lý gói thông thường của bạn." @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "Thao tác này không thể hoàn tác. Toàn bộ dữ liệu liên quan, bao gồm cả người dùng bot, sẽ bị xóa vĩnh viễn." #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "Ảnh động này quá dài hoặc quá lớn để cắt. Hãy thử một tệp ngắn hơn hoặc nhỏ hơn." @@ -35549,7 +35439,7 @@ msgstr "Bot này yêu cầu quyền quản trị viên. Chỉ cấp quyền nế #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "Trình duyệt này không thể cắt tệp {avifFormatLabel} động. Vui lòng tải lên GIF hoặc WebP thay thế." @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "Bảng điều khiển trình duyệt này là công cụ dành cho nhà phát triển." #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "Trình duyệt này đã tắt WebAssembly, nên không thể cắt ảnh động." @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "Cuộc trò chuyện này không còn khả dụng." #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "Bản dựng máy tính này không thể cài đặt bản cập nhật bên trong {productName}. Thay vào đó, hãy tải trình cài đặt máy tính mới nhất." @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "Môi trường máy tính để bàn này không hỗ trợ phím tắt toàn hệ thống. Phím tắt vẫn hoạt động khi cửa sổ {productName} đang hoạt động." #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "Bản dựng phát triển này không thể tự cập nhật. Hãy tải trình cài đặt máy tính để thử quy trình cập nhật." @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "Mã chuyển giao này đã hết hạn. Tạo mã mới để tiếp tục." #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "Ảnh này không thể đọc được. Ảnh có thể đã bị hỏng." #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "Bản cài đặt này do hệ thống của bạn quản lý. Hãy cập nhật {productName} từ trung tâm phần mềm hoặc trình quản lý gói của bạn." @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "Ngày giới hạn không được ở trong tương lai" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "Hình thu nhỏ cho {title}" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "Thanh tiêu đề" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "Nền tảng thanh tiêu đề" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "Bật/tắt camera" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "Hiện/ẩn điều khiển" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "Kiểu chữ" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "Thành phần giao diện người dùng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "Vị trí địa lý Vương quốc Anh" @@ -37528,7 +37418,7 @@ msgstr "Chưa phân loại" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Tài khoản chưa xác nhận" @@ -37689,7 +37579,7 @@ msgstr "Dự phòng chung. Chất lượng thấp nhất nhưng dùng được #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "Không rõ" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "Lời mời không xác định" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "Loại tin nhắn không xác định" @@ -37893,10 +37783,10 @@ msgstr "Bật thông báo" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "Bật âm thanh" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "Chỉ tin nhắn trực tiếp chưa đọc" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "Số quà chưa đọc" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "Kho quà chưa đọc" @@ -38267,10 +38157,20 @@ msgstr "Cập nhật {productName} để xem tin nhắn này." msgid "Update app" msgstr "Cập nhật ứng dụng" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "Có bản cập nhật" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Cập nhật trạng thái của tôi" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "Cập nhật ngay" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "Chính sách đã cập nhật" msgid "Updated saved media" msgstr "Đã cập nhật media đã lưu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "Trạng thái trình cập nhật" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "URL tùy chỉnh chỉ có thể chứa các ký tự chữ và số cùng dấu gạch ngang bên trong." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "Tuyên bố từ chối trách nhiệm về URL tùy chỉnh" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "Rào cản xác minh & thành viên" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "Rào cản xác minh" @@ -39438,7 +39333,7 @@ msgstr "Độ rực rỡ" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "Video" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "Xem trước video" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "Tiến độ video" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "Cài đặt video" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "Hình thu nhỏ video" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Huy hiệu Visionary" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "ID huy hiệu Visionary" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "Xác nhận kết nối thoại" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "Gỡ lỗi kết nối thoại" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "Tin nhắn thoại" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "Trình phát tin nhắn thoại" @@ -40500,11 +40395,6 @@ msgstr "Tìm kiếm web" msgid "Web search provider" msgstr "Nhà cung cấp tìm kiếm web" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Trình cập nhật web đã sẵn sàng" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "Chà, nặng quá" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "Sẽ hủy" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "Thu phóng" diff --git a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po index bd20e54fe..3703cae37 100644 --- a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# 个频道关注此频道} other {# 个频道关 msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, other {# 个社区}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, other {# 个社区因时空穿梭器故障暂时不可用。}}" @@ -1884,16 +1884,16 @@ msgstr "{productName} 无法为该应用的音频启动安全的隔离路由。" msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} 无法为此使用硬件编码器,因此将使用你的 CPU。" +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} 将关闭,安装更新,然后重新打开。" + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} 无法连接到更新服务。请检查你的网络连接,然后重试。" -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} 无法重启到已下载的更新版本。请从“更新”按钮再次尝试。" - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "主机名,例如 {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "Linux 桌面端有可用更新。请选择适用于此系统的软件包格式,{productName} 会将其保存到本地。" @@ -4597,11 +4597,6 @@ msgstr "接听来电" msgid "Any key" msgstr "任意键" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "任一更新程序已就绪" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "音频丢包率:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "音频播放器" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "音频处理(聚焦语音)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "音频进度" @@ -5551,7 +5546,7 @@ msgstr "AV1(需要选择加入)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "可用版本" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "封禁" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "屏障倒计时" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "账单" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "结算周期" @@ -6867,7 +6862,7 @@ msgstr "无法在此上传文件" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "关闭了该帖子" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "云端上传" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "输入框聚焦" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "正在压缩" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "无法更改你的价格" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "无法检查更新" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "无法创建你的恢复工具包。你可以在稍后在账户设置中创建。" #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "无法裁剪图片" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "无法删除你的消息" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "无法下载桌面版更新" @@ -10841,11 +10836,6 @@ msgstr "无法开始结账" msgid "Couldn't start the connection" msgstr "无法开始连接" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "无法启动桌面版更新" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "裁剪邀请背景" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "裁剪预览" @@ -11343,12 +11333,12 @@ msgstr "裁剪个人资料横幅" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "裁剪后的图片过大。请选择较小的区域或文件(最大 {maxSizeLabel})。" #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "正在裁剪 {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "被管理员设为拒听" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB 软件包" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "桌面应用" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "桌面应用已是最新版本" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "桌面端启动" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "桌面版更新 {version} 已可用。请选择一个 Linux 软件包。" @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "有可用的桌面版更新" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "有可用的桌面版更新。请选择一个 Linux 软件包。" -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "桌面版更新已就绪" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "桌面版 {version} 已下载。重启 {productName} 以完成安装。" - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "开发者模式" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "开发者选项" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "开发者工具不可用" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "开发版本" @@ -13604,26 +13584,6 @@ msgstr "下载按钮" msgid "Download desktop app" msgstr "下载桌面应用" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "下载桌面版更新" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "下载桌面版更新({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "下载桌面版更新 {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "下载桌面版更新 {version}({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "下载导出" @@ -13688,26 +13648,6 @@ msgstr "下载源代码映射,以便堆栈跟踪和开发者工具指向真实 msgid "Download video" msgstr "下载视频" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "正在下载桌面版更新 {version}:{percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "正在下载桌面版更新:{percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "正在下载桌面版更新:{percent}%({formatBytes} / {formatBytes2},速度 {formatBytes3}/秒)" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "正在下载桌面版更新…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "需要验证邮箱" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "邮箱已验证" @@ -15966,7 +15906,7 @@ msgstr "功能暂时停用" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "功能" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "强制启用" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "强制消息加载失败" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "强制消息发送失败" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "强制 GIF 选择器加载中" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "强制显示加载骨架屏" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "强制成人媒体" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "强制无 {permissionName} 权限" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "强制显示个人资料数据警告" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "强制显示资料骨架屏" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "强制显示" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "强制显示自定义邀请链接免责声明" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "强制显示语音连接" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "强制慢速模式开启" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "强制显示未知消息类型" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "强制显示更新就绪" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "转发" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "快进 {defaultSeekAmount} 秒" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "正在生成验证码…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "地理封锁叠加层" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF 选项" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "正在加载 GIF 选择器" @@ -17226,14 +17161,14 @@ msgstr "礼品码" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "礼物时长" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "礼物库存" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "未找到礼物" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "礼物已兑换" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "包含" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "曾购买过" @@ -17892,7 +17827,7 @@ msgstr "心形" msgid "Hebrew" msgstr "希伯来语" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "高度" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "安装新应用" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "已安装" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "已安装版本:{currentVersion}。" -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "正在安装桌面版更新 {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "正在安装桌面版更新…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "延迟图表" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux 默认" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux 安装包" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "管理你的订阅" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "手动更新桌面版" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "成人内容和内容警告" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "成人内容频道门控" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "成人内容验证目前仅在英国可用。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "成人内容媒体门控" @@ -22888,13 +22813,13 @@ msgstr "静音" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "关闭声音" @@ -23316,16 +23241,6 @@ msgstr "语音朗读" msgid "Native title bar" msgstr "原生标题栏" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "原生更新进度" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "原生更新程序已就绪" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "网络错误" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "网络和性能" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "新用户暂时无法加入。你仍然可以创建账号或登录,稍后再次尝试此链接。" #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "新版本" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "否" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "无 {attachFilesPermission} 权限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "无 {sendMessagesPermission} 权限" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "暂无描述。" #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "没有可用的桌面更新。" @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "无 Webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "空操作应用内举报" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "打开日期选择器" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "打开桌面版下载页面" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "打开设置" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "打开软件中心" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "打开 {displayName} 的用户菜单" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "打开视频" @@ -26558,9 +26473,9 @@ msgstr "播放所选内容" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "播放视频" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "会员福利已禁用" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "会员开通日期" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "后端已重置会员状态。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "会员类型" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "会员到期日期" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "准备中" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "个人资料自定义表单" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "个人资料数据警告" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "个人资料隐私" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "个人资料骨架屏" @@ -28223,18 +28138,13 @@ msgstr "重新加载" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "重新加载 {PRODUCT_NAME} 以完全应用引擎更改。在应用内拼写检查和系统拼写检查之间切换需要重新加载渲染器,因为 Electron 无法在运行时切换提供程序。" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "重新加载 {productName} 以使用更新的模块" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "重新加载 {productName} 以使用网页版更新" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "重新加载 {productName} 以使用网页版更新 {version}" @@ -29142,7 +29052,7 @@ msgstr "已重新发送" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "重置" @@ -29475,26 +29385,11 @@ msgstr "尊重发送者的意图,发送者切换 @提及 时不提醒对方" msgid "Restart {appName}" msgstr "重启 {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "重启 {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "请重启 {productName} 以使此更改生效,因为 Linux 桌面无法在运行时可靠地添加或移除托盘图标。" -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "重启 {productName} 以安装桌面更新" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "重启 {productName} 以安装桌面更新 {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "已撤销对 {0} 的封禁" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "倒回 {defaultSeekAmount} 秒" @@ -29866,7 +29761,7 @@ msgstr "罗马尼亚语" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "顺时针旋转" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "每页行数" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM 软件包" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "自托管设置" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "自托管模式" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "自托管模式覆盖" @@ -32212,8 +32107,8 @@ msgstr "显示我的屏幕共享" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "显示我正在输入" @@ -32675,7 +32570,7 @@ msgstr "跳过" msgid "Skip \"Mark all as read\" confirmation" msgstr "跳过“全部标为已读”确认" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "跳过裁剪" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "跳过所有域名的外部链接警告" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "提交应用内举报时跳过网络请求。流程仍会进入成功界面,方便你测试 UI,但实际不会向安全团队发送任何内容。" @@ -32752,8 +32647,8 @@ msgstr "斯洛文尼亚" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "慢速上传附件" @@ -32769,29 +32664,29 @@ msgstr "慢一点,稍等片刻再重试。" #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "慢速编辑消息" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "慢速加载消息" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "慢速发送消息" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "慢速加载个人资料" @@ -32807,7 +32702,7 @@ msgstr "慢速模式 · 等待 {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "慢速模式已开启" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "慢速模式已设置为 {durationLabel}。请等待后再发送下一条消息。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "慢速模式剩余时间" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "系统托盘" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "由系统管理的安装" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "轻触添加备注" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz 压缩包" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "你要找的社区可能已被删除,或者你没有访问权限。" #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "桌面更新下载失败。请在网络连接稳定后通过更新按钮重试。" -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "桌面更新已下载。重启 {productName} 以完成安装。" - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "下载的文件已保存到你的电脑。请使用你的常规软件包管理器进行安装。" @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "此操作无法撤销。所有相关数据,包括机器人用户,都将被永久删除。" #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "此动画过长或过大,无法裁剪。请尝试使用更短或更小的文件。" @@ -35549,7 +35439,7 @@ msgstr "此机器人请求管理员权限。请仅在完全信任开发者的情 #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "此浏览器无法裁剪动态 {avifFormatLabel} 文件。请改用 GIF 或 WebP。" @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "此浏览器控制台是开发者工具。" #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "此浏览器已关闭 WebAssembly,因此无法裁剪动态图像。" @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "此对话已不可用。" #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "此桌面版本无法在 {productName} 中安装更新。请下载最新的桌面安装程序。" @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "此桌面环境不支持全局快捷键。快捷键在 {productName} 处于焦点时仍然可用。" #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "此开发版本无法自行更新。请下载桌面安装程序以测试更新流程。" @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "此切换码已过期。请生成新切换码以继续。" #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "无法读取此图片。它可能已损坏。" #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "此安装由你的系统管理。请从软件中心或包管理器更新 {productName}。" @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "阈值日期不能是未来日期" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "{title}的缩略图" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "标题栏" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "标题栏平台" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "切换摄像头" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "切换控件" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "排版" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "界面组件" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "英国地理位置" @@ -37528,7 +37418,7 @@ msgstr "未分类" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未认领账号" @@ -37689,7 +37579,7 @@ msgstr "通用回退。画质最低,但兼容所有设备。" #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "未知" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "未知邀请" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "未知消息类型" @@ -37893,10 +37783,10 @@ msgstr "取消静音" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "开启声音" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "仅未读私信" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "未读礼物数" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "未读礼物库存" @@ -38267,10 +38157,20 @@ msgstr "更新 {productName} 即可查看此消息。" msgid "Update app" msgstr "更新应用" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "有可用更新" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "更新我的状态" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "立即更新" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "政策更新" msgid "Updated saved media" msgstr "已保存媒体已更新" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "更新器状态" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "自定义邀请链接只能包含字母、数字和中间的连字符。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "自定义邀请链接免责声明" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "验证与成员门槛" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "验证门槛" @@ -39438,7 +39333,7 @@ msgstr "鲜艳度" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "视频" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "视频预览" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "视频进度" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "视频设置" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "视频缩略图" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "Visionary 徽章" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "Visionary 徽章 ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "语音连接确认" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "语音连接调试" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "语音消息" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "语音消息播放器" @@ -40500,11 +40395,6 @@ msgstr "网页搜索" msgid "Web search provider" msgstr "网页搜索提供方" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "Web 更新器已就绪" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "内容太多啦" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "将取消" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "缩放" diff --git a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po index ad4cb3162..3e2bfac34 100644 --- a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po @@ -1093,7 +1093,7 @@ msgstr "{count, plural, one {# 個頻道正在追蹤} other {# 個頻道正在 msgid "{count, plural, one {# community found} other {# communities found}}" msgstr "{count, plural, one {找到 # 個社群} other {找到 # 個社群}}" -#: src/features/app/components/layout/GuildsLayout.tsx:1952 +#: src/features/app/components/layout/GuildsLayout.tsx:1951 msgid "{count, plural, one {# community is temporarily unavailable due to a flux capacitor malfunction.} other {# communities are temporarily unavailable due to a flux capacitor malfunction.}}" msgstr "{count, plural, one {# 個社群} other {# 個社群}}因時空電容器故障,暫時無法使用。" @@ -1884,16 +1884,16 @@ msgstr "{productName} 無法為此應用程式的音訊啟動安全的獨立路 msgid "{productName} cannot use a hardware encoder for this, so it will use your CPU." msgstr "{productName} 無法為此使用硬體編碼器,因此會改用您的 CPU。" +#. Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name. +#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +msgid "{productName} closes, installs the update and opens again." +msgstr "{productName} 會關閉、安裝更新並重新開啟。" + #. Modal body shown when a user-initiated update check fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:108 +#: src/features/updater/commands/UpdaterModalCommands.tsx:100 msgid "{productName} could not reach the update service. Check your connection and try again." msgstr "{productName} 無法連線到更新服務。請檢查您的網路連線,然後再試一次。" -#. Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:125 -msgid "{productName} could not restart into the downloaded update. Try again from the update button." -msgstr "{productName} 無法重新啟動以安裝下載的更新。請從「更新」按鈕再次嘗試。" - #. Invite page notice shown when automated raid protection pauses invites. productName is the Fluxer product name. #: src/features/invite/utils/InviteMessageDescriptors.ts:17 msgid "{productName} detected a potential raid in this community, so invites are paused." @@ -2729,7 +2729,7 @@ msgid "a hostname, e.g. {exampleDomain}" msgstr "主機名稱,例如 {exampleDomain}" #. Linux desktop updater modal body shown before version details and package format selector. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:130 +#: src/features/updater/commands/UpdaterModalCommands.tsx:113 msgid "A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally." msgstr "有可用的 Linux 桌面版更新。請選擇此系統適用的套件格式,{productName} 會將檔案儲存在本機。" @@ -4597,11 +4597,6 @@ msgstr "接聽來電" msgid "Any key" msgstr "任何按鍵" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 -msgid "Any updater ready" -msgstr "任一更新程式已就緒" - #. Description for has:file. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:35 msgid "any uploaded attachment" @@ -5168,7 +5163,7 @@ msgid "Audio packet loss:" msgstr "音訊封包遺失:" #. Aria label for the inline audio attachment player container. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:35 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:36 msgid "Audio player" msgstr "音訊播放器" @@ -5208,7 +5203,7 @@ msgid "Audio processing (focused voice)" msgstr "音訊處理(語音聚焦)" #. Aria label on the playback progress slider in the inline audio attachment player. -#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:39 +#: src/features/voice/components/media_player/components/InlineAudioPlayer.tsx:40 msgid "Audio progress" msgstr "音訊播放進度" @@ -5551,7 +5546,7 @@ msgstr "AV1(需先啟用)" #. Label for the available desktop version in the Linux update modal. #. Screen reader text for a check mark in the Plutonium page comparison table. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:140 -#: src/features/updater/commands/UpdaterModalCommands.tsx:140 +#: src/features/updater/commands/UpdaterModalCommands.tsx:123 msgid "Available" msgstr "可用版本" @@ -5905,7 +5900,7 @@ msgid "Bans" msgstr "停權名單" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 msgid "Barrier countdown" msgstr "門檻倒數" @@ -5979,7 +5974,7 @@ msgid "Billing" msgstr "帳單" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 msgid "Billing cycle" msgstr "帳單週期" @@ -6867,7 +6862,7 @@ msgstr "無法在這裡上傳檔案" #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 #: src/features/messaging/components/modals/ForwardModal.tsx:603 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1025 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1026 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:266 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 @@ -8807,7 +8802,7 @@ msgid "Closed the thread" msgstr "封鎖了討論串" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 msgid "Cloud upload" msgstr "雲端上傳" @@ -9385,7 +9380,7 @@ msgid "Composer focus" msgstr "輸入框自動對焦" #. Progress label on the save button while a cropped animated image is compressed. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:67 +#: src/features/messaging/components/modals/ImageCropModal.tsx:68 msgid "Compressing" msgstr "壓縮中" @@ -10417,7 +10412,7 @@ msgid "Couldn't change your price" msgstr "無法變更您的價格" #. Modal title shown when a user-initiated update check fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:104 +#: src/features/updater/commands/UpdaterModalCommands.tsx:96 msgid "Couldn't check for updates" msgstr "無法檢查更新" @@ -10502,7 +10497,7 @@ msgid "Couldn't create your recovery kit. You can create one later in your accou msgstr "無法建立你的復原工具組。你之後可以在帳戶設定中建立。" #. Title of the error modal shown when image cropping fails. -#: src/features/messaging/components/modals/ImageCropModal.tsx:32 +#: src/features/messaging/components/modals/ImageCropModal.tsx:33 msgid "Couldn't crop image" msgstr "無法裁切圖片" @@ -10549,7 +10544,7 @@ msgid "Couldn't delete your messages" msgstr "無法刪除您的訊息" #. Modal title shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:112 +#: src/features/updater/commands/UpdaterModalCommands.tsx:104 msgid "Couldn't download the desktop update" msgstr "無法下載桌面版更新" @@ -10841,11 +10836,6 @@ msgstr "無法開始結帳" msgid "Couldn't start the connection" msgstr "無法建立連結" -#. Modal title shown when starting installation of a downloaded desktop update fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:121 -msgid "Couldn't start the desktop update" -msgstr "無法啟動桌面版更新" - #. Title of the generic fallback error modal shown when opening or creating a DM fails. #: src/features/app/components/alerts/DmActionErrorModal.tsx:68 msgid "Couldn't start this conversation" @@ -11331,7 +11321,7 @@ msgid "Crop invite background" msgstr "裁切邀請背景" #. Short label in the image crop modal. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:24 +#: src/features/messaging/components/modals/ImageCropModal.tsx:25 msgid "Crop preview" msgstr "裁切預覽" @@ -11343,12 +11333,12 @@ msgstr "裁切個人檔案橫幅" #. Error modal body shown when a cropped community image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #. Error modal body shown when a cropped image still exceeds the size limit. {maxSizeLabel} is a formatted file size. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/hooks/useGuildImageAssetField.tsx:47 -#: src/features/messaging/components/modals/ImageCropModal.tsx:36 +#: src/features/messaging/components/modals/ImageCropModal.tsx:37 msgid "Cropped image is too large. Choose a smaller area or a smaller file (max {maxSizeLabel})." msgstr "裁切後的圖片過大。請選擇較小的區域或較小的檔案(最大 {maxSizeLabel})。" #. Progress label on the save button while animated image frames are cropped. {percent} is a whole number. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:62 +#: src/features/messaging/components/modals/ImageCropModal.tsx:63 msgid "Cropping {percent}%" msgstr "正在裁切 {percent}%" @@ -11930,7 +11920,7 @@ msgid "Deafened by moderators" msgstr "遭管理員設為耳機靜音" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "DEB" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:160 +#: src/features/updater/commands/UpdaterModalCommands.tsx:143 msgid "DEB package" msgstr "DEB 套件" @@ -12588,7 +12578,7 @@ msgid "Desktop app" msgstr "桌面應用程式" #. Modal title shown after a manual desktop update check finds no update. -#: src/features/updater/commands/UpdaterModalCommands.tsx:41 +#: src/features/updater/commands/UpdaterModalCommands.tsx:50 msgid "Desktop app is up to date" msgstr "桌面版應用程式已是最新版本" @@ -12642,7 +12632,7 @@ msgid "Desktop startup" msgstr "桌面版啟動" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:58 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:20 msgid "Desktop update {version} available. Choose a Linux package." msgstr "桌面版更新 {version} 已推出。請選擇 Linux 套件。" @@ -12652,20 +12642,10 @@ msgid "Desktop update available" msgstr "有可用的桌面版更新" #. Tooltip on the updater icon for a Linux desktop update that requires choosing a package format and no version is known. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:62 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:24 msgid "Desktop update available. Choose a Linux package." msgstr "有可用的桌面版更新。請選擇 Linux 套件。" -#. Modal title shown when a desktop app update has finished downloading. -#: src/features/updater/commands/UpdaterModalCommands.tsx:87 -msgid "Desktop update ready" -msgstr "桌面版更新已就緒" - -#. Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:91 -msgid "Desktop version {version} has been downloaded. Restart {productName} to finish installing." -msgstr "桌面版 {version} 已下載完成。重新啟動 {productName} 以完成安裝。" - #. Desktop updater modal body. The version placeholder is the target app version; productName is the app name. #: src/features/updater/commands/UpdaterModalCommands.tsx:20 msgid "Desktop version {version} is available. Download the installer, then run it to update {productName}." @@ -12736,7 +12716,7 @@ msgid "Developer mode" msgstr "開發人員模式" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Developer option" msgstr "開發人員選項" @@ -12763,7 +12743,7 @@ msgid "Developer tools unavailable" msgstr "開發人員工具無法使用" #. Modal title when the desktop app is running unpackaged during development. -#: src/features/updater/commands/UpdaterModalCommands.tsx:57 +#: src/features/updater/commands/UpdaterModalCommands.tsx:66 msgid "Development build" msgstr "開發版本" @@ -13604,26 +13584,6 @@ msgstr "下載按鈕" msgid "Download desktop app" msgstr "下載桌面版應用程式" -#. Tooltip on the channel header updater icon prompting download of an update with no version or size info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:54 -msgid "Download desktop update" -msgstr "下載桌面版更新" - -#. Tooltip on the channel header updater icon prompting download of an update of known size but unknown version. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:45 -msgid "Download desktop update ({formatBytes})" -msgstr "下載桌面版更新 ({formatBytes})" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with unknown size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:50 -msgid "Download desktop update {version}" -msgstr "下載桌面版更新 {version}" - -#. Tooltip on the channel header updater icon prompting download of a versioned update with known size. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:41 -msgid "Download desktop update {version} ({formatBytes})" -msgstr "下載桌面版更新 {version} ({formatBytes})" - #: src/features/user/components/modals/tabs/privacy_safety_tab/DataExportTab.tsx:94 msgid "Download export" msgstr "下載匯出" @@ -13688,26 +13648,6 @@ msgstr "下載原始碼地圖,以便堆疊追蹤和開發人員工具能指向 msgid "Download video" msgstr "下載影片" -#. Tooltip on the channel header updater icon while downloading a versioned update without throughput info. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:33 -msgid "Downloading desktop update {version}: {percent}%" -msgstr "正在下載桌面版更新 {version}:{percent}%" - -#. Tooltip on the channel header updater icon while downloading an update with only percent available. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:37 -msgid "Downloading desktop update: {percent}%" -msgstr "正在下載桌面版更新:{percent}%" - -#. Tooltip on the channel header updater icon while downloading an update. Shows percent, bytes downloaded, total bytes, and bytes per second. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:28 -msgid "Downloading desktop update: {percent}% ({formatBytes} / {formatBytes2} at {formatBytes3}/s)" -msgstr "正在下載桌面版更新:{percent}%({formatBytes} / {formatBytes2},每秒 {formatBytes3})" - -#. Short desktop updater status label. -#: src/features/app/state/Updater.ts:56 -msgid "Downloading desktop update…" -msgstr "正在下載桌面版更新…" - #. IAR modal: rule description. #: src/features/moderation/components/report_modal/IARModalCopy.ts:290 msgid "Doxxing, exposed private info, or stalking." @@ -14261,7 +14201,7 @@ msgid "Email verification required" msgstr "需要驗證電子郵件" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:168 msgid "Email verified" msgstr "電子郵件已驗證" @@ -15966,7 +15906,7 @@ msgstr "功能暫時停用" #. Developer options group for feature behavior overrides. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:137 msgid "Features" msgstr "功能" @@ -16460,17 +16400,17 @@ msgid "Force enabled" msgstr "強制啟用" #. Developer option label for simulating failed message loads. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:119 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 msgid "Force failed message loads" msgstr "強制訊息載入失敗" #. Developer option label for simulating failed message sends. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:115 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 msgid "Force failed message sends" msgstr "強制訊息傳送失敗" #. Developer option label for simulating a loading GIF picker. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 msgid "Force GIF picker loading" msgstr "強制 GIF 選擇器顯示載入中" @@ -16487,7 +16427,7 @@ msgid "Force loading skeleton" msgstr "強制顯示載入骨架" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "強制成人媒體" @@ -16502,12 +16442,12 @@ msgid "Force no {permissionName} permission" msgstr "強制不授予「{permissionName}」權限" #. Developer option label for always showing profile data warnings. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:111 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 msgid "Force profile data warning" msgstr "強制顯示個人檔案資料警告" #. Developer option label for forcing user profile loading skeletons. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:107 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 msgid "Force profile skeletons" msgstr "強制顯示個人檔案骨架" @@ -16522,12 +16462,12 @@ msgid "Force show" msgstr "強制顯示" #. Developer option label for always showing a community settings warning. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:75 msgid "Force show vanity URL disclaimer" msgstr "強制顯示自訂網址免責聲明" #. Developer option label for always showing the voice connection status bar. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 msgid "Force show voice connection" msgstr "強制顯示語音連線" @@ -16536,15 +16476,10 @@ msgid "Force slowmode active" msgstr "強制啟用慢速模式" #. Developer option label for rendering messages as unknown message types. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:127 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:123 msgid "Force unknown message type" msgstr "強制顯示為未知訊息類型" -#. Developer option label for simulating an available update. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 -msgid "Force update ready" -msgstr "強制更新就緒" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:25 msgid "Forced off" @@ -16597,7 +16532,7 @@ msgid "Forward" msgstr "轉傳" #. Tooltip / aria label on the forward / fast-forward button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:32 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:33 msgid "Forward {defaultSeekAmount} seconds" msgstr "快轉 {defaultSeekAmount} 秒" @@ -17028,7 +16963,7 @@ msgid "Generating code…" msgstr "正在產生代碼…" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:200 msgid "Geo block overlay" msgstr "地理封鎖重疊畫面" @@ -17141,7 +17076,7 @@ msgid "GIF options" msgstr "GIF 選項" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 msgid "GIF picker loading" msgstr "正在載入 GIF 選擇器" @@ -17226,14 +17161,14 @@ msgstr "禮物代碼" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 #: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "禮物期限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:220 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "禮物庫存" @@ -17266,7 +17201,7 @@ msgid "Gift not found" msgstr "找不到禮物" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "Gift redeemed" msgstr "禮物已兌換" @@ -17809,7 +17744,7 @@ msgid "Has" msgstr "包含" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 msgid "Has ever purchased" msgstr "曾購買過" @@ -17892,7 +17827,7 @@ msgstr "愛心" msgid "Hebrew" msgstr "希伯來文" -#: src/features/messaging/components/modals/ImageCropModal.tsx:958 +#: src/features/messaging/components/modals/ImageCropModal.tsx:959 msgid "Height" msgstr "高度" @@ -19223,25 +19158,15 @@ msgid "Install the new app" msgstr "安裝新版應用程式" #. Label for the installed desktop version in the Linux update modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:136 +#: src/features/updater/commands/UpdaterModalCommands.tsx:119 msgid "Installed" msgstr "已安裝" #. Desktop updater modal body. The currentVersion placeholder is the installed app version. -#: src/features/updater/commands/UpdaterModalCommands.tsx:45 +#: src/features/updater/commands/UpdaterModalCommands.tsx:54 msgid "Installed version: {currentVersion}." msgstr "已安裝版本:{currentVersion}。" -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed. version is the target version. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:18 -msgid "Installing desktop update {version}…" -msgstr "正在安裝桌面版更新 {version}…" - -#. Tooltip on the channel header updater icon while a Fluxer Desktop update is being installed when version is not known. Trailing horizontal ellipsis is intentional. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:23 -msgid "Installing desktop update…" -msgstr "正在安裝桌面版更新…" - #. Label for the server address in the printed or downloaded recovery kit. #: src/features/auth/components/modals/RecoveryKitModal.tsx:76 msgid "Instance" @@ -20255,7 +20180,7 @@ msgstr "延遲圖表" #. Short label in the desktop settings tab. Keep it concise. #. Short label in the theme studio settings section. Keep it concise. #: src/features/theme_studio/sections/ThemeStudioSettingsSection.tsx:61 -#: src/features/updater/commands/UpdaterModalCommands.tsx:37 +#: src/features/updater/commands/UpdaterModalCommands.tsx:46 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedAccessibilityControls.tsx:51 #: src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedDesktopControls.tsx:74 #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:48 @@ -20796,7 +20721,7 @@ msgid "Linux default" msgstr "Linux 預設值" #. Select label for choosing the Linux desktop package format to download. -#: src/features/updater/commands/UpdaterModalCommands.tsx:152 +#: src/features/updater/commands/UpdaterModalCommands.tsx:135 msgid "Linux package" msgstr "Linux 套件" @@ -21262,7 +21187,7 @@ msgid "Manage your subscription" msgstr "管理您的訂閱" #. Modal title when automatic in-app desktop updates cannot be used. -#: src/features/updater/commands/UpdaterModalCommands.tsx:53 +#: src/features/updater/commands/UpdaterModalCommands.tsx:62 msgid "Manual desktop update" msgstr "手動更新桌面版" @@ -21474,7 +21399,7 @@ msgid "Mature content & content warnings" msgstr "成人內容與內容警告" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 msgid "Mature content channel gate" msgstr "成人內容頻道閘門" @@ -21500,7 +21425,7 @@ msgid "Mature content checks are currently available only in the UK." msgstr "成人內容檢查目前僅在英國提供。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:188 msgid "Mature content media gate" msgstr "成人內容媒體閘門" @@ -22888,13 +22813,13 @@ msgstr "靜音" #. Mute toggle button label in the mobile video viewer (currently unmuted). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Voice menu checkbox label. Locally mutes another participant only for the current user. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:73 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:74 #: src/features/ui/action_menu/items/voice_participant_menu_data/shared.ts:42 #: src/features/ui/action_menu/items/VoiceParticipantMenuItems.tsx:74 #: src/features/user/components/settings_utils/section_registry/NotificationsSections.ts:147 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:25 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:25 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:45 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:46 msgctxt "playback-control-action" msgid "Mute" msgstr "關閉聲音" @@ -23316,16 +23241,6 @@ msgstr "旁白" msgid "Native title bar" msgstr "原生標題列" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 -msgid "Native update progress" -msgstr "原生更新進度" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 -msgid "Native updater ready" -msgstr "原生更新程式已就緒" - #. Unicode emoji category label. #: src/features/expressions/utils/UnicodeEmojis.ts:26 msgid "Nature" @@ -23402,7 +23317,7 @@ msgid "Network error" msgstr "網路錯誤" #. Developer options group for simulated slow or failed operations. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:79 msgid "Networking and performance" msgstr "網路與效能" @@ -23616,7 +23531,7 @@ msgid "New users can't join right now. You can still create an account or sign i msgstr "新使用者目前無法加入。您仍然可以建立帳號或登入,稍後再試一次此連結。" #. Fallback version label when the available desktop version is unknown. -#: src/features/updater/commands/UpdaterModalCommands.tsx:148 +#: src/features/updater/commands/UpdaterModalCommands.tsx:131 msgid "New version" msgstr "新版本" @@ -23683,12 +23598,12 @@ msgid "No" msgstr "否" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:208 msgid "No {attachFilesPermission} permission" msgstr "沒有 {attachFilesPermission} 權限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:204 msgid "No {sendMessagesPermission} permission" msgstr "沒有 {sendMessagesPermission} 權限" @@ -23872,7 +23787,7 @@ msgid "No description." msgstr "沒有說明。" #. Desktop updater modal body when no installed version string is available. -#: src/features/updater/commands/UpdaterModalCommands.tsx:49 +#: src/features/updater/commands/UpdaterModalCommands.tsx:58 msgid "No desktop update is available." msgstr "沒有可用的桌面版更新。" @@ -24315,7 +24230,7 @@ msgid "No webhooks" msgstr "沒有 Webhook" #. Developer option label for short-circuiting the in-app reporting (IAR) flow. When enabled, submitting a report skips the network call. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:135 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:131 msgid "No-op in-app reports" msgstr "停用應用程式內檢舉" @@ -25151,7 +25066,7 @@ msgid "Open date picker" msgstr "開啟日期選擇器" #. Button label that opens the Fluxer desktop downloads page in a browser. -#: src/features/updater/commands/UpdaterModalCommands.tsx:83 +#: src/features/updater/commands/UpdaterModalCommands.tsx:92 msgid "Open desktop downloads" msgstr "開啟桌面版下載頁面" @@ -25348,7 +25263,7 @@ msgid "Open settings" msgstr "開啟設定" #. Button label that opens the software center via appstream protocol. -#: src/features/updater/commands/UpdaterModalCommands.tsx:79 +#: src/features/updater/commands/UpdaterModalCommands.tsx:88 msgid "Open software center" msgstr "開啟軟體中心" @@ -25448,7 +25363,7 @@ msgid "Open user menu for {displayName}" msgstr "開啟 {displayName} 的使用者選單" #. Button or menu action label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:51 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:52 msgid "Open video" msgstr "開啟影片" @@ -26558,9 +26473,9 @@ msgstr "播放選取範圍" #. Play-button label on the inline video player thumbnail before playback starts. #. Short label in the channel and chat embed video. Keep it concise. #. Short label in the channel and chat embed you tube. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:64 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:65 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:29 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:62 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:63 msgid "Play video" msgstr "播放影片" @@ -26814,7 +26729,7 @@ msgid "Premium perks disabled" msgstr "進階方案福利已停用" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 msgid "Premium since date" msgstr "進階方案開始日期" @@ -26824,17 +26739,17 @@ msgid "Premium state reset on the backend." msgstr "已在後端重設進階方案狀態。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:132 msgid "Premium type" msgstr "進階方案類型" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 msgid "Premium until date" msgstr "進階方案結束日期" #. Progress label on the save button while an animated image crop starts. Keep it concise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:58 +#: src/features/messaging/components/modals/ImageCropModal.tsx:59 msgid "Preparing" msgstr "準備中" @@ -27215,7 +27130,7 @@ msgid "Profile customization form" msgstr "個人檔案自訂表單" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 msgid "Profile data warning" msgstr "個人檔案資料警告" @@ -27263,7 +27178,7 @@ msgid "Profile privacy" msgstr "個人檔案隱私設定" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 msgid "Profile skeletons" msgstr "個人檔案骨架" @@ -28223,18 +28138,13 @@ msgstr "重新載入" msgid "Reload {PRODUCT_NAME} to fully apply the engine change. Switching between in-app and system spellcheck requires a renderer reload because Electron can't swap providers while running." msgstr "重新載入 {PRODUCT_NAME} 以完整套用引擎變更。在應用程式內建與系統拼字檢查之間切換需要重新載入轉譯器,因為 Electron 無法在執行期間切換提供者。" -#. Tooltip on the channel header updater icon prompting a reload to apply freshly downloaded desktop modules. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:77 -msgid "Reload {productName} to use the updated modules" -msgstr "重新載入 {productName} 以使用更新的模組" - #. Tooltip on the channel header updater icon prompting a web reload to apply an update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:87 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:34 msgid "Reload {productName} to use web update" msgstr "重新載入 {productName} 以使用網路更新" #. Tooltip on the channel header updater icon prompting a web reload to apply an in-place build update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:82 +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:29 msgid "Reload {productName} to use web update {version}" msgstr "重新載入 {productName} 以使用網路更新 {version}" @@ -29142,7 +29052,7 @@ msgstr "已重新傳送" #: src/features/app/components/dialogs/shared/UnsavedChangesBannerContent.tsx:51 #: src/features/app/components/floating/ColorPickerPopover.tsx:190 #: src/features/input/components/KeybindRecorder.tsx:499 -#: src/features/messaging/components/modals/ImageCropModal.tsx:1022 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1023 msgid "Reset" msgstr "重設" @@ -29475,26 +29385,11 @@ msgstr "尊重傳送者的意圖,當對方切換 @提及 設定時不顯示警 msgid "Restart {appName}" msgstr "重新啟動 {appName}" -#. Button label that restarts the app to apply a desktop update. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:100 -msgid "Restart {productName}" -msgstr "重新啟動 {productName}" - #. Desktop setting description shown when a tray-icon change on Linux requires restart. #: src/features/user/components/modals/tabs/DesktopSettingsTab.tsx:35 msgid "Restart {productName} for this change to take effect because Linux desktops can't reliably add or remove tray icons at runtime." msgstr "請重新啟動 {productName} 以讓此變更生效,因為 Linux 桌面環境無法在執行階段可靠地新增或移除系統匣圖示。" -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded update of unknown version. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:72 -msgid "Restart {productName} to install desktop update" -msgstr "重新啟動 {productName} 以安裝桌面更新" - -#. Tooltip on the channel header updater icon prompting a restart to apply a downloaded versioned update. productName is the app name. -#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:67 -msgid "Restart {productName} to install desktop update {version}" -msgstr "重新啟動 {productName} 以安裝桌面更新 {version}" - #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in advanced settings. Preserve {productName}; it is inserted by code. #. Confirmation prompt in the desktop settings tab. Preserve {productName}; it is inserted by code. @@ -29717,7 +29612,7 @@ msgid "Revoked ban for {0}" msgstr "已解除 {0} 的停權" #. Tooltip / aria label on the rewind button in the standalone audio player. {defaultSeekAmount} is an integer second count. -#: src/features/voice/components/media_player/components/AudioPlayer.tsx:27 +#: src/features/voice/components/media_player/components/AudioPlayer.tsx:28 msgid "Rewind {defaultSeekAmount} seconds" msgstr "倒轉 {defaultSeekAmount} 秒" @@ -29866,7 +29761,7 @@ msgstr "羅馬尼亞文" #. Short label in the image crop modal. Keep it concise. #. Tooltip on the media viewer button that rotates the current media item 90 degrees clockwise. -#: src/features/messaging/components/modals/ImageCropModal.tsx:28 +#: src/features/messaging/components/modals/ImageCropModal.tsx:29 #: src/features/messaging/components/modals/media_modal/shared.ts:93 msgid "Rotate clockwise" msgstr "順時針旋轉" @@ -29889,7 +29784,7 @@ msgid "Rows per page" msgstr "每頁列數" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "RPM" verbatim and translate only the word "package". -#: src/features/updater/commands/UpdaterModalCommands.tsx:165 +#: src/features/updater/commands/UpdaterModalCommands.tsx:148 msgid "RPM package" msgstr "RPM 套件" @@ -31062,12 +30957,12 @@ msgid "Self-host setup" msgstr "自託管設定" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:140 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:120 msgid "Self-hosted mode" msgstr "自託管模式" #. Developer option label for forcing self-hosted client mode. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 msgid "Self-hosted mode override" msgstr "自託管模式覆寫" @@ -32212,8 +32107,8 @@ msgstr "顯示我的螢幕分享" #. Developer option label for showing the current user as typing. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:63 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:76 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:59 msgid "Show myself typing" msgstr "顯示我正在輸入" @@ -32675,7 +32570,7 @@ msgstr "略過" msgid "Skip \"Mark all as read\" confirmation" msgstr "略過「全部標示為已讀」的確認步驟" -#: src/features/messaging/components/modals/ImageCropModal.tsx:1034 +#: src/features/messaging/components/modals/ImageCropModal.tsx:1035 msgid "Skip cropping" msgstr "略過裁切" @@ -32690,7 +32585,7 @@ msgid "Skip the external link warning for all domains" msgstr "略過所有網域的外部連結警告" #. Developer / debug surface — keep terse and technical. Tooltip / description for the no-op in-app reports toggle. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:140 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:136 msgid "Skip the network call when an in-app report is submitted. The flow still advances to the success screen so you can exercise the UI, but nothing is actually sent to the safety team." msgstr "提交應用程式內檢舉時,略過網路呼叫。流程仍會進展到成功畫面,讓您可以操作使用者介面,但實際上不會傳送任何內容給安全團隊。" @@ -32752,8 +32647,8 @@ msgstr "斯洛維尼亞" #. Developer option label for simulating slow file uploads. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:100 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:80 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 msgid "Slow attachment upload" msgstr "附件上傳緩慢" @@ -32769,29 +32664,29 @@ msgstr "慢一點,請稍候再試一次。" #. Developer option label for simulating slow message edits. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:112 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:95 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 msgid "Slow message edit" msgstr "訊息編輯緩慢" #. Developer option label for simulating slow message loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:104 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:84 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:83 msgid "Slow message load" msgstr "訊息載入緩慢" #. Developer option label for simulating slow message sending. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:108 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:91 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:87 msgid "Slow message send" msgstr "訊息傳送緩慢" #. Developer option label for simulating slow profile loading. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:103 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:96 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:99 msgid "Slow profile load" msgstr "個人檔案載入緩慢" @@ -32807,7 +32702,7 @@ msgstr "慢速模式 · 等待 {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "慢速模式進行中" @@ -32858,7 +32753,7 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "慢速模式設為 {durationLabel}。請稍候再傳送下一則訊息。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 msgid "Slowmode remaining" msgstr "慢速模式剩餘時間" @@ -34655,7 +34550,7 @@ msgid "System tray" msgstr "系統匣" #. Modal title when the desktop app is installed through a system package manager such as Flatpak. -#: src/features/updater/commands/UpdaterModalCommands.tsx:61 +#: src/features/updater/commands/UpdaterModalCommands.tsx:70 msgid "System-managed install" msgstr "由系統管理的安裝" @@ -34781,7 +34676,7 @@ msgid "Tap to add a note" msgstr "輕觸以新增記事" #. Option in the Linux package format dropdown of the desktop updater modal. Keep the format token "tar.gz" verbatim and translate only the word "archive". -#: src/features/updater/commands/UpdaterModalCommands.tsx:170 +#: src/features/updater/commands/UpdaterModalCommands.tsx:153 msgid "tar.gz archive" msgstr "tar.gz 封存檔" @@ -35130,17 +35025,12 @@ msgid "The community you're looking for may have been deleted or you may not hav msgstr "您要找的社群可能已被刪除,或是您沒有權限存取。" #. Modal body shown when a desktop update download fails. -#: src/features/updater/commands/UpdaterModalCommands.tsx:116 +#: src/features/updater/commands/UpdaterModalCommands.tsx:108 msgid "The desktop update could not be downloaded. Try again from the update button when your connection is stable." msgstr "無法下載桌面版更新。請在網路連線穩定後,從更新按鈕重試。" -#. Desktop updater modal body when the downloaded version is unknown. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:96 -msgid "The desktop update has been downloaded. Restart {productName} to finish installing." -msgstr "桌面更新已下載完成。重新啟動 {productName} 以完成安裝。" - #. Help text below the Linux package format selector in the desktop updater modal. -#: src/features/updater/commands/UpdaterModalCommands.tsx:156 +#: src/features/updater/commands/UpdaterModalCommands.tsx:139 msgid "The downloaded file is saved to your computer. Install it with your normal package manager." msgstr "下載的檔案已儲存到您的電腦。請使用您慣用的套件管理員進行安裝。" @@ -35523,7 +35413,7 @@ msgid "This action cannot be undone. All associated data, including the bot user msgstr "此動作無法復原。所有相關資料,包括機器人使用者,都將永久刪除。" #. Error modal body shown when an animated image has too many frames or pixels to crop in the browser. -#: src/features/messaging/components/modals/ImageCropModal.tsx:41 +#: src/features/messaging/components/modals/ImageCropModal.tsx:42 msgid "This animation is too long or too large to crop. Try a shorter or smaller file." msgstr "這段動畫太長或太大,無法裁切。請嘗試較短或較小的檔案。" @@ -35549,7 +35439,7 @@ msgstr "此機器人要求管理員權限。請只在您完全信任開發人員 #. Error modal body shown when the browser cannot decode animated AVIF for cropping. {avifFormatLabel} is the AVIF format name. #. Modal body shown when an animated AVIF upload is rejected because this browser cannot crop it. #: src/features/expressions/utils/AnimatedAvifModalUtils.tsx:14 -#: src/features/messaging/components/modals/ImageCropModal.tsx:49 +#: src/features/messaging/components/modals/ImageCropModal.tsx:50 msgid "This browser can't crop animated {avifFormatLabel} files. Upload a GIF or WebP instead." msgstr "這個瀏覽器無法裁切動態的 {avifFormatLabel} 檔案。請改為上傳 GIF 或 WebP 檔案。" @@ -35559,7 +35449,7 @@ msgid "This browser console is a developer tool." msgstr "這個瀏覽器主控台是開發人員工具。" #. Error modal body shown when WebAssembly is unavailable, which animated image cropping needs. -#: src/features/messaging/components/modals/ImageCropModal.tsx:54 +#: src/features/messaging/components/modals/ImageCropModal.tsx:55 msgid "This browser has WebAssembly turned off, so animated images can't be cropped." msgstr "這個瀏覽器已關閉 WebAssembly,因此無法裁切動態圖片。" @@ -35755,7 +35645,7 @@ msgid "This conversation is no longer available." msgstr "此對話已無法使用。" #. Desktop updater modal body for platforms that do not support in-app installation. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:69 +#: src/features/updater/commands/UpdaterModalCommands.tsx:78 msgid "This desktop build cannot install updates inside {productName}. Download the latest desktop installer instead." msgstr "這個桌面版本無法在 {productName} 內安裝更新。請改為下載最新的桌面安裝程式。" @@ -35770,7 +35660,7 @@ msgid "This desktop doesn't offer system-wide shortcuts. Shortcuts still work wh msgstr "此桌面環境不支援全系統快速鍵。快速鍵在 {productName} 處於焦點時仍可使用。" #. Desktop updater modal body for development or unpackaged builds. -#: src/features/updater/commands/UpdaterModalCommands.tsx:65 +#: src/features/updater/commands/UpdaterModalCommands.tsx:74 msgid "This development build cannot update itself. Download a desktop installer to test the update flow." msgstr "此開發版本無法自行更新。請下載桌面安裝程式以測試更新流程。" @@ -35877,12 +35767,12 @@ msgid "This handoff code has expired. Generate a new one to continue." msgstr "此交接碼已過期。請產生新的交接碼以繼續。" #. Error modal body shown when an animated image fails to decode during cropping. -#: src/features/messaging/components/modals/ImageCropModal.tsx:45 +#: src/features/messaging/components/modals/ImageCropModal.tsx:46 msgid "This image couldn't be read. It may be damaged." msgstr "這張圖片無法讀取,可能已損毀。" #. Desktop updater modal body for managed package builds such as Flatpak. productName is the app name. -#: src/features/updater/commands/UpdaterModalCommands.tsx:75 +#: src/features/updater/commands/UpdaterModalCommands.tsx:84 msgid "This install is managed by your system. Update {productName} from your software center or package manager." msgstr "這個安裝是由您的系統管理。請從您的軟體中心或套件管理器更新 {productName}。" @@ -36446,7 +36336,7 @@ msgid "Threshold date cannot be in the future" msgstr "門檻日期不能設定在未來" #. Short label in the channel and chat embed video. Keep it concise. Preserve {title}; it is inserted by code. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:55 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:56 msgid "Thumbnail for {title}" msgstr "「{title}」的縮圖" @@ -36559,7 +36449,7 @@ msgid "Title bar" msgstr "標題列" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 msgid "Title bar platform" msgstr "標題列平台" @@ -36620,7 +36510,7 @@ msgid "Toggle camera" msgstr "切換相機" #. Aria label on the tap-to-toggle area of the mobile video viewer. Shows or hides the playback controls. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:36 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:37 msgid "Toggle controls" msgstr "切換控制項" @@ -37387,12 +37277,12 @@ msgid "Typography" msgstr "字體排版" #. Developer options group for forcing UI component states. -#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:71 +#: src/features/devtools/components/DeveloperOptionsToggleGroups.ts:67 msgid "UI components" msgstr "UI 元件" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:216 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 msgid "UK geo" msgstr "英國地理位置" @@ -37528,7 +37418,7 @@ msgstr "未分類" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:15 -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 #: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未認領的帳號" @@ -37689,7 +37579,7 @@ msgstr "通用備用方案。畫質最低,但隨處可用。" #: src/features/i18n/utils/CommonMessageDescriptors.ts:770 #: src/features/invite/components/InviteListItem.tsx:36 #: src/features/moderation/components/modals/BanDetailsModal.tsx:115 -#: src/features/updater/commands/UpdaterModalCommands.tsx:144 +#: src/features/updater/commands/UpdaterModalCommands.tsx:127 msgid "Unknown" msgstr "不明" @@ -37757,7 +37647,7 @@ msgid "Unknown invite" msgstr "不明邀請" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:116 msgid "Unknown message type" msgstr "不明訊息類型" @@ -37893,10 +37783,10 @@ msgstr "解除靜音" #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the media player volume control (currently muted). #. Mute toggle button label in the mobile video viewer (currently muted). -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:68 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:69 #: src/features/voice/components/media_player/components/MediaVerticalVolumeControl.tsx:20 #: src/features/voice/components/media_player/components/MediaVolumeControl.tsx:20 -#: src/features/voice/components/modals/MobileVideoViewer.tsx:40 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:41 msgctxt "playback-control-action" msgid "Unmute" msgstr "開啟聲音" @@ -38125,12 +38015,12 @@ msgid "Unread DMs only" msgstr "只顯示未讀私訊" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:184 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:164 msgid "Unread gift count" msgstr "未讀禮物數量" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:180 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:160 msgid "Unread gift inventory" msgstr "未讀禮物庫存" @@ -38267,10 +38157,20 @@ msgstr "請更新 {productName} 以檢視此訊息。" msgid "Update app" msgstr "更新應用程式" +#. Tooltip and accessible label on the channel header updater icon in the desktop app. Clicking it closes the window and opens the updater, which downloads and installs the update. +#: src/features/channel/components/channel_header_components/UpdaterIcon.tsx:15 +msgid "Update available" +msgstr "有可用的更新" + #: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "更新我的狀態" +#. Button label that closes the desktop app and opens the updater to install an available update. +#: src/features/updater/commands/UpdaterModalCommands.tsx:42 +msgid "Update now" +msgstr "立即更新" + #. Primary button in the modal that saves an updated passkey. #: src/features/auth/passkey_migration/PasskeyUpdateModal.tsx:39 msgid "Update passkey" @@ -38311,11 +38211,6 @@ msgstr "政策更新" msgid "Updated saved media" msgstr "已更新已儲存的媒體" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:92 -msgid "Updater state" -msgstr "更新器狀態" - #. Heading of the dialog shown after the user follows an announcement channel. #: src/features/channel/components/modals/ChannelFollowSuccessModal.tsx:19 msgid "Updates are on their way!" @@ -39207,7 +39102,7 @@ msgid "Vanity URL can only contain alphanumeric characters and internal hyphens. msgstr "自訂網址只能包含英數字元和內部連字號。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:144 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:124 msgid "Vanity URL disclaimer" msgstr "自訂網址免責聲明" @@ -39240,7 +39135,7 @@ msgid "Verification & membership barriers" msgstr "驗證與成員資格門檻" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:196 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:176 msgid "Verification barrier" msgstr "驗證門檻" @@ -39438,7 +39333,7 @@ msgstr "鮮豔度" #: src/features/user/components/modals/tabs/VoiceVideoTab.tsx:15 #: src/features/user/components/settings_utils/search_index/AccessibilityIndex.ts:113 #: src/features/user/components/settings_utils/section_registry/VoiceVideoSections.ts:170 -#: src/features/voice/components/media_player/components/VideoPlayer.tsx:58 +#: src/features/voice/components/media_player/components/VideoPlayer.tsx:59 msgid "Video" msgstr "視訊" @@ -39508,7 +39403,7 @@ msgid "Video preview" msgstr "影片預覽" #. Aria label on the video scrubber / progress slider in the mobile video viewer. -#: src/features/voice/components/modals/MobileVideoViewer.tsx:50 +#: src/features/voice/components/modals/MobileVideoViewer.tsx:51 msgid "Video progress" msgstr "影片進度" @@ -39540,7 +39435,7 @@ msgid "Video settings" msgstr "視訊設定" #. Short label in the channel and chat embed video. Keep it concise. -#: src/features/channel/components/embeds/media/EmbedVideo.tsx:60 +#: src/features/channel/components/embeds/media/EmbedVideo.tsx:61 #: src/features/channel/components/embeds/media/EmbedYouTube.tsx:27 msgid "Video thumbnail" msgstr "影片縮圖" @@ -39857,7 +39752,7 @@ msgid "Visionary badge" msgstr "遠見者徽章" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:156 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:136 msgid "Visionary badge ID" msgstr "遠見者徽章 ID" @@ -40028,7 +39923,7 @@ msgid "Voice connection confirmation" msgstr "語音連線確認" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:148 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:128 msgid "Voice connection debug" msgstr "語音連線偵錯" @@ -40060,7 +39955,7 @@ msgid "Voice message" msgstr "語音訊息" #. Short label in the channel and chat voice message player. Keep it concise. -#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:31 +#: src/features/channel/components/embeds/media/VoiceMessagePlayer.tsx:32 msgid "Voice message player" msgstr "語音訊息播放器" @@ -40500,11 +40395,6 @@ msgstr "網路搜尋" msgid "Web search provider" msgstr "網路搜尋服務供應商" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:88 -msgid "Web updater ready" -msgstr "網頁更新程式已就緒" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:92 msgid "WebAuthn" @@ -40850,7 +40740,7 @@ msgid "Whoa, this is heavy" msgstr "哇,有點太多了" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:172 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:152 msgid "Will cancel" msgstr "即將取消" @@ -42447,7 +42337,7 @@ msgid "YubiKey" msgstr "YubiKey" #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/messaging/components/modals/ImageCropModal.tsx:917 +#: src/features/messaging/components/modals/ImageCropModal.tsx:918 #: src/features/user/components/settings_utils/section_registry/AppearanceSections.ts:182 msgid "Zoom" msgstr "縮放" diff --git a/fluxer_app/src/features/messaging/hooks/useTextareaDraftAndTyping.ts b/fluxer_app/src/features/messaging/hooks/useTextareaDraftAndTyping.ts index 6348aec87..4bac3c0be 100644 --- a/fluxer_app/src/features/messaging/hooks/useTextareaDraftAndTyping.ts +++ b/fluxer_app/src/features/messaging/hooks/useTextareaDraftAndTyping.ts @@ -163,14 +163,20 @@ export const useTextareaDraftAndTyping = ({ flushDraftRef.current(); }; }, [channelId, isEditingMessageInComposer]); - useEffect( - () => - onBeforeAppStorageScopeChange(() => { - flushDraftRef.current(); - flushPendingPersistWrites(); - }), - [], - ); + useEffect(() => { + const flushBeforeUnload = (): void => { + flushDraftRef.current(); + flushPendingPersistWrites(); + }; + const stopScopeChange = onBeforeAppStorageScopeChange(flushBeforeUnload); + window.addEventListener('pagehide', flushBeforeUnload); + window.addEventListener('beforeunload', flushBeforeUnload); + return () => { + stopScopeChange(); + window.removeEventListener('pagehide', flushBeforeUnload); + window.removeEventListener('beforeunload', flushBeforeUnload); + }; + }, []); useEffect(() => { const typingPreviousValue = typingPreviousValueRef.current; typingPreviousValueRef.current = {channelId, value}; diff --git a/fluxer_app/src/features/platform/types/Electron.ts b/fluxer_app/src/features/platform/types/Electron.ts index 1c79a7d70..58ca3981b 100644 --- a/fluxer_app/src/features/platform/types/Electron.ts +++ b/fluxer_app/src/features/platform/types/Electron.ts @@ -8,7 +8,7 @@ import type {DesktopKnownInstanceStorageAPI} from '@fluxer/desktop_ipc/src/Known import type {DesktopLegacyHarvest} from '@fluxer/desktop_ipc/src/LegacyHarvestContract'; import type {DesktopLocalAppUploadProgress} from '@fluxer/desktop_ipc/src/LocalAppRouteContract'; import type {DesktopRuntimeConfigAPI} from '@fluxer/desktop_ipc/src/LocalAppRuntimeContract'; -import type {DesktopModuleAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; +import type {DesktopModuleAPI, DesktopUpdateAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; import type {DesktopStorageAPI} from '@fluxer/desktop_ipc/src/StorageContract'; import type {VoiceEngineV2BridgeHardwareEncoderApi} from '@fluxer/voice_engine_v2/bridge'; import type { @@ -188,8 +188,6 @@ export type UpdaterEvent = type: 'available'; context: UpdaterContext; version: string | null; - downloadSize?: number | null; - downloadStarted: boolean; downloadUrl?: string; downloadOptions?: Array; } @@ -200,21 +198,11 @@ export type UpdaterEvent = | { type: 'downloaded'; context: UpdaterContext; - version: string | null; - } - | { - type: 'progress'; - context: UpdaterContext; - percent: number; - transferred: number; - total: number; - bytesPerSecond: number; } | { type: 'error'; context: UpdaterContext; message: string; - phase?: 'check' | 'download' | 'install'; } | { type: 'unsupported'; @@ -361,8 +349,8 @@ export interface ElectronAPI { deleteVoiceBackgroundMedia: (id: string) => Promise; onUpdaterEvent: (callback: (event: UpdaterEvent) => void) => () => void; updaterCheck: (context: UpdaterContext) => Promise; - updaterDownload: (context: UpdaterContext) => Promise; - updaterInstall: () => Promise; + updaterDownload?: (context: UpdaterContext) => Promise; + updaterInstall?: () => Promise; windowMinimize: () => void; windowMaximize: () => void; windowClose: () => void; @@ -481,6 +469,7 @@ export interface ElectronAPI { desktopRuntimeConfig?: DesktopRuntimeConfigAPI; voiceEngine?: VoiceEngineV2BridgeHardwareEncoderApi; desktopModules?: DesktopModuleAPI; + desktopUpdate?: DesktopUpdateAPI; desktopLegacyHarvest?: DesktopLegacyHarvestAPI; reportLastRoute?: (routePath: string) => void; notifyFirstContentPainted?: () => void; diff --git a/fluxer_app/src/features/updater/commands/UpdaterModalCommands.tsx b/fluxer_app/src/features/updater/commands/UpdaterModalCommands.tsx index f061d12d6..ef612ae00 100644 --- a/fluxer_app/src/features/updater/commands/UpdaterModalCommands.tsx +++ b/fluxer_app/src/features/updater/commands/UpdaterModalCommands.tsx @@ -34,6 +34,15 @@ const DOWNLOAD_PACKAGE_DESCRIPTOR = msg({ message: 'Download package', comment: 'Button label that downloads a selected Linux desktop update package.', }); +const DESKTOP_UPDATE_RESTARTS_APP_DESCRIPTOR = msg({ + message: '{productName} closes, installs the update and opens again.', + comment: + 'Desktop updater modal body after a manual update check finds an update. Confirming closes the app window and opens the updater. productName is the app name.', +}); +const UPDATE_NOW_DESCRIPTOR = msg({ + message: 'Update now', + comment: 'Button label that closes the desktop app and opens the updater to install an available update.', +}); const LATER_DESCRIPTOR = msg({ message: 'Later', comment: 'Button label that dismisses the update modal without taking action.', @@ -84,23 +93,6 @@ const OPEN_DESKTOP_DOWNLOADS_DESCRIPTOR = msg({ message: 'Open desktop downloads', comment: 'Button label that opens the Fluxer desktop downloads page in a browser.', }); -const DESKTOP_UPDATE_READY_DESCRIPTOR = msg({ - message: 'Desktop update ready', - comment: 'Modal title shown when a desktop app update has finished downloading.', -}); -export const DESKTOP_VERSION_HAS_BEEN_DOWNLOADED_DESCRIPTOR = msg({ - message: 'Desktop version {version} has been downloaded. Restart {productName} to finish installing.', - comment: - 'Desktop updater modal body. The version placeholder is the downloaded app version; productName is the app name.', -}); -export const THE_DESKTOP_UPDATE_HAS_BEEN_DOWNLOADED_DESCRIPTOR = msg({ - message: 'The desktop update has been downloaded. Restart {productName} to finish installing.', - comment: 'Desktop updater modal body when the downloaded version is unknown. productName is the app name.', -}); -export const RESTART_FLUXER_DESCRIPTOR = msg({ - message: 'Restart {productName}', - comment: 'Button label that restarts the app to apply a desktop update. productName is the app name.', -}); const UPDATE_CHECK_FAILED_DESCRIPTOR = msg({ message: "Couldn't check for updates", comment: 'Modal title shown when a user-initiated update check fails.', @@ -118,15 +110,6 @@ const DESKTOP_UPDATE_DOWNLOAD_FAILED_BODY_DESCRIPTOR = msg({ 'The desktop update could not be downloaded. Try again from the update button when your connection is stable.', comment: 'Modal body shown when a desktop update download fails.', }); -const DESKTOP_UPDATE_INSTALL_FAILED_DESCRIPTOR = msg({ - message: "Couldn't start the desktop update", - comment: 'Modal title shown when starting installation of a downloaded desktop update fails.', -}); -const DESKTOP_UPDATE_INSTALL_FAILED_BODY_DESCRIPTOR = msg({ - message: '{productName} could not restart into the downloaded update. Try again from the update button.', - comment: - 'Modal body shown when starting installation of a downloaded desktop update fails. productName is the app name.', -}); const LINUX_PACKAGE_UPDATE_INTRO_DESCRIPTOR = msg({ message: 'A Linux desktop update is available. Choose the package format for this system and {productName} will save it locally.', @@ -206,6 +189,24 @@ export function pushUpdateAvailableModal(version: string | null, onDownload: () ); } +export function pushDesktopUpdateAvailableModal(onUpdate: () => void | Promise): void { + ModalCommands.pushWithKey( + modal(() => ( + { + await onUpdate(); + }} + data-flx="updater.updater-modal-commands.push-desktop-update-available-modal.confirm-modal" + /> + )), + UPDATE_AVAILABLE_KEY, + ); +} + interface ManualUpdateAvailableModalProps { currentVersion: string | null; version: string | null; @@ -356,28 +357,6 @@ export function pushUnsupportedUpdateModal( ); } -export function pushUpdateReadyModal(version: string | null, onInstall: () => void | Promise): void { - ModalCommands.pushWithKey( - modal(() => ( - { - await onInstall(); - }} - data-flx="updater.updater-modal-commands.push-update-ready-modal.confirm-modal" - /> - )), - 'updater-ready', - ); -} - function pushUpdaterErrorModal(getTitle: () => string, getDescription: () => string): void { ModalCommands.pushWithKey( modal(() => ( @@ -405,10 +384,3 @@ export function pushDesktopUpdateDownloadFailedModal(): void { () => i18n._(DESKTOP_UPDATE_DOWNLOAD_FAILED_BODY_DESCRIPTOR), ); } - -export function pushDesktopUpdateInstallFailedModal(): void { - pushUpdaterErrorModal( - () => i18n._(DESKTOP_UPDATE_INSTALL_FAILED_DESCRIPTOR), - () => i18n._(DESKTOP_UPDATE_INSTALL_FAILED_BODY_DESCRIPTOR, {productName: PRODUCT_NAME}), - ); -} diff --git a/fluxer_app/src/features/updater/state/UpdaterStateMachine.ts b/fluxer_app/src/features/updater/state/UpdaterStateMachine.ts index 794c37a9a..37da07f78 100644 --- a/fluxer_app/src/features/updater/state/UpdaterStateMachine.ts +++ b/fluxer_app/src/features/updater/state/UpdaterStateMachine.ts @@ -8,18 +8,7 @@ export type UpdateType = 'native' | 'web' | 'both' | null; export interface NativeUpdateInfo { available: boolean; - downloaded: boolean; - downloading: boolean; - installing: boolean; version: string | null; - downloadSize: number | null; -} - -export interface NativeDownloadProgress { - percent: number; - transferred: number; - total: number; - bytesPerSecond: number; } export interface WebUpdateInfo { @@ -39,7 +28,6 @@ export interface NativeUnsupportedUpdate { export interface UpdaterMachineContext { updateInfo: UpdateInfo; - downloadProgress: NativeDownloadProgress | null; lastCheckedAt: number | null; isChecking: boolean; nativeCheckFailed: boolean; @@ -57,26 +45,17 @@ export type UpdaterMachineEvent = | { type: 'native.available'; version: string | null; - downloadSize: number | null; - downloadStarted: boolean; downloadUrl: string | null; downloadOptions: ReadonlyArray; } - | {type: 'native.hidden'; reason: 'platform'; downloadUrl: string | null; now: number} | {type: 'native.notAvailable'; now: number} | {type: 'native.error'} - | {type: 'native.downloaded'; version: string | null} - | {type: 'native.progress'; progress: NativeDownloadProgress} | { type: 'native.unsupported'; reason: 'platform' | 'unpackaged' | 'managed-package'; downloadUrl: string | null; now: number; } - | {type: 'native.download.started'; progressSupported: boolean; total: number | null} - | {type: 'native.download.failed'} - | {type: 'native.install.started'} - | {type: 'native.install.failed'} | {type: 'manualDownload.started'} | {type: 'manualDownload.finished'} | {type: 'reset'}; @@ -86,11 +65,7 @@ const EMPTY_DOWNLOAD_OPTIONS: ReadonlyArray = Object.free function createEmptyNativeUpdateInfo(): NativeUpdateInfo { return { available: false, - downloaded: false, - downloading: false, - installing: false, version: null, - downloadSize: null, }; } @@ -104,7 +79,6 @@ function createInitialUpdateInfo(): UpdateInfo { export function createInitialUpdaterContext(): UpdaterMachineContext { return { updateInfo: createInitialUpdateInfo(), - downloadProgress: null, lastCheckedAt: null, isChecking: false, nativeCheckFailed: false, @@ -126,7 +100,6 @@ function clearNativeUpdate(context: UpdaterMachineContext): UpdaterMachineContex ...context.updateInfo, native: createEmptyNativeUpdateInfo(), }, - downloadProgress: null, nativeManualDownloadUrl: null, nativeManualDownloadOptions: EMPTY_DOWNLOAD_OPTIONS, }; @@ -162,52 +135,22 @@ export const updaterStateMachine = setup({ }), applyNativeAvailable: assign(({context, event}) => { if (event.type !== 'native.available') return {}; - const currentNative = context.updateInfo.native; - if (currentNative.downloaded && (event.version == null || event.version === currentNative.version)) { - return { - isChecking: false, - nativeUnsupported: null, - }; - } return { updateInfo: { ...context.updateInfo, native: { available: true, - downloaded: false, - downloading: event.downloadStarted, - installing: false, version: event.version, - downloadSize: event.downloadSize, }, }, - downloadProgress: null, isChecking: false, nativeUnsupported: null, nativeManualDownloadUrl: event.downloadUrl, nativeManualDownloadOptions: [...event.downloadOptions], }; }), - hideNativeUpdate: assign(({context, event}) => { - if (event.type !== 'native.hidden') return {}; - return { - ...clearNativeUpdate(context), - lastCheckedAt: event.now, - isChecking: false, - nativeUnsupported: { - reason: event.reason, - downloadUrl: event.downloadUrl, - }, - }; - }), applyNativeNotAvailable: assign(({context, event}) => { if (event.type !== 'native.notAvailable') return {}; - if (context.updateInfo.native.downloaded) { - return { - lastCheckedAt: event.now, - isChecking: false, - }; - } return { ...clearNativeUpdate(context), lastCheckedAt: event.now, @@ -215,53 +158,10 @@ export const updaterStateMachine = setup({ nativeUnsupported: null, }; }), - applyNativeError: assign(({context}) => ({ - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - downloading: false, - installing: false, - }, - }, - downloadProgress: null, + applyNativeError: assign(() => ({ isChecking: false, nativeCheckFailed: true, })), - applyNativeDownloaded: assign(({context, event}) => { - if (event.type !== 'native.downloaded') return {}; - return { - updateInfo: { - ...context.updateInfo, - native: { - available: true, - downloaded: true, - downloading: false, - installing: false, - version: event.version ?? context.updateInfo.native.version, - downloadSize: context.updateInfo.native.downloadSize, - }, - }, - downloadProgress: null, - isChecking: false, - nativeUnsupported: null, - nativeManualDownloadUrl: null, - nativeManualDownloadOptions: EMPTY_DOWNLOAD_OPTIONS, - }; - }), - applyNativeProgress: assign(({context, event}) => { - if (event.type !== 'native.progress') return {}; - return { - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - downloading: true, - }, - }, - downloadProgress: event.progress, - }; - }), applyNativeUnsupported: assign(({context, event}) => { if (event.type !== 'native.unsupported') return {}; return { @@ -274,54 +174,6 @@ export const updaterStateMachine = setup({ }, }; }), - startNativeDownload: assign(({context, event}) => { - if (event.type !== 'native.download.started') return {}; - return { - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - downloading: true, - }, - }, - downloadProgress: event.progressSupported - ? { - percent: 0, - transferred: 0, - total: event.total ?? 0, - bytesPerSecond: 0, - } - : null, - }; - }), - failNativeDownload: assign(({context}) => ({ - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - downloading: false, - }, - }, - downloadProgress: null, - })), - startNativeInstall: assign(({context}) => ({ - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - installing: true, - }, - }, - })), - failNativeInstall: assign(({context}) => ({ - updateInfo: { - ...context.updateInfo, - native: { - ...context.updateInfo.native, - installing: false, - }, - }, - })), startManualDownload: assign(() => ({manualNativeDownloadInFlight: true})), finishManualDownload: assign(() => ({manualNativeDownloadInFlight: false})), }, @@ -343,16 +195,9 @@ export const updaterStateMachine = setup({ 'check.failed': {actions: 'markCheckFinished'}, 'web.checked': {actions: 'applyWebChecked'}, 'native.available': {actions: 'applyNativeAvailable'}, - 'native.hidden': {actions: 'hideNativeUpdate'}, 'native.notAvailable': {actions: 'applyNativeNotAvailable'}, 'native.error': {actions: 'applyNativeError'}, - 'native.downloaded': {actions: 'applyNativeDownloaded'}, - 'native.progress': {actions: 'applyNativeProgress'}, 'native.unsupported': {actions: 'applyNativeUnsupported'}, - 'native.download.started': {actions: 'startNativeDownload'}, - 'native.download.failed': {actions: 'failNativeDownload'}, - 'native.install.started': {actions: 'startNativeInstall'}, - 'native.install.failed': {actions: 'failNativeInstall'}, 'manualDownload.started': {actions: 'startManualDownload'}, 'manualDownload.finished': {actions: 'finishManualDownload'}, reset: {actions: 'reset'}, diff --git a/fluxer_app/src/types/electron.d.ts b/fluxer_app/src/types/electron.d.ts index a87037b98..65da8d5c2 100644 --- a/fluxer_app/src/types/electron.d.ts +++ b/fluxer_app/src/types/electron.d.ts @@ -8,7 +8,7 @@ import type {DesktopKnownInstanceStorageAPI} from '@fluxer/desktop_ipc/src/Known import type {DesktopLegacyHarvest} from '@fluxer/desktop_ipc/src/LegacyHarvestContract'; import type {DesktopLocalAppUploadProgress} from '@fluxer/desktop_ipc/src/LocalAppRouteContract'; import type {DesktopRuntimeConfigAPI} from '@fluxer/desktop_ipc/src/LocalAppRuntimeContract'; -import type {DesktopModuleAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; +import type {DesktopModuleAPI, DesktopUpdateAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; import type {DesktopStorageAPI} from '@fluxer/desktop_ipc/src/StorageContract'; import type {VoiceEngineV2BridgeHardwareEncoderApi} from '@fluxer/voice_engine_v2/bridge'; import type {AuthenticationResponseJSON, RegistrationResponseJSON} from '@simplewebauthn/browser'; @@ -372,17 +372,10 @@ export interface DisplayMediaRequestInfo { export type DisplayMediaPortalSurfacePreference = 'window' | 'monitor'; export interface UpdaterEvent { - type: 'checking' | 'available' | 'not-available' | 'error' | 'downloaded' | 'progress' | 'unsupported'; + type: 'checking' | 'available' | 'not-available' | 'downloaded' | 'progress' | 'error' | 'unsupported'; context?: 'user' | 'background' | 'focus'; version?: string | null; message?: string; - progress?: number; - percent?: number; - transferred?: number; - total?: number; - bytesPerSecond?: number; - downloadSize?: number | null; - downloadStarted?: boolean; reason?: 'platform' | 'unpackaged' | 'managed-package'; downloadUrl?: string; downloadOptions?: Array; @@ -487,8 +480,8 @@ export interface ElectronAPI { downloadFile(url: string, suggestedName: string, sha256?: string | null): Promise; onUpdaterEvent(callback: (event: UpdaterEvent) => void): () => void; updaterCheck(context: 'user' | 'background'): Promise; - updaterDownload(context: 'user' | 'background'): Promise; - updaterInstall(): Promise; + updaterDownload?(context: 'user' | 'background'): Promise; + updaterInstall?(): Promise; getDesktopSources( types: Array<'screen' | 'window'>, requestId?: string, @@ -636,6 +629,7 @@ export interface ElectronAPI { desktopRuntimeConfig?: DesktopRuntimeConfigAPI; desktopLegacyHarvest?: DesktopLegacyHarvestAPI; desktopModules?: DesktopModuleAPI; + desktopUpdate?: DesktopUpdateAPI; reportLastRoute?: (routePath: string) => void; notifyFirstContentPainted?: () => void; localAppUpload?: DesktopLocalAppUploadAPI; diff --git a/fluxer_desktop/electron-builder.config.cjs b/fluxer_desktop/electron-builder.config.cjs index ba79b8928..58b5727b5 100644 --- a/fluxer_desktop/electron-builder.config.cjs +++ b/fluxer_desktop/electron-builder.config.cjs @@ -405,10 +405,6 @@ const bundledDependencyExcludes = [ '!node_modules/xmlbuilder/**/*', ]; const platformNativeRuntimeExcludes = platformNativeExcludes(targetPlatform, targetNativeArch); -const platformRuntimeDependencyExcludes = - targetPlatform === 'darwin' - ? [] - : ['!node_modules/github-url-to-object/**/*', '!node_modules/ms/**/*', '!node_modules/update-electron-app/**/*']; const linuxDesktopEntry = { Name: productName, GenericName: 'Instant Messenger', @@ -1572,7 +1568,6 @@ module.exports = { ...packagedRuntimeArtifactExcludes, ...bundledDependencyExcludes, ...platformNativeRuntimeExcludes, - ...platformRuntimeDependencyExcludes, ], extraMetadata: { main: 'dist/main/index.js', diff --git a/fluxer_desktop/package.json b/fluxer_desktop/package.json index 4cc309502..b486011ea 100644 --- a/fluxer_desktop/package.json +++ b/fluxer_desktop/package.json @@ -25,7 +25,6 @@ "@simplewebauthn/browser": "14.0.0", "franc-min": "6.2.0", "hunspell-asm": "4.0.2", - "update-electron-app": "3.3.0", "velopack": "1.2.0" }, "devDependencies": { diff --git a/fluxer_desktop/scripts/build.mjs b/fluxer_desktop/scripts/build.mjs index f8c4fc802..25e27df76 100644 --- a/fluxer_desktop/scripts/build.mjs +++ b/fluxer_desktop/scripts/build.mjs @@ -52,7 +52,6 @@ const publicBuildDefines = { const electronExternals = [ 'electron', 'electron-log', - 'update-electron-app', 'velopack', '@fluxer/app-store', '@fluxer/gateway-socket', diff --git a/fluxer_desktop/src/common/Types.ts b/fluxer_desktop/src/common/Types.ts index a51f6b6a6..e6ccef166 100644 --- a/fluxer_desktop/src/common/Types.ts +++ b/fluxer_desktop/src/common/Types.ts @@ -6,7 +6,7 @@ import type {DesktopHandoffAPI} from '@fluxer/desktop_ipc/src/BrowserHandoffCont import type {DesktopCapabilityManifest} from '@fluxer/desktop_ipc/src/CapabilityManifest'; import type {NativeGatewayTransportAPI} from '@fluxer/desktop_ipc/src/GatewayTransportContract'; import type {DesktopKnownInstanceStorageAPI} from '@fluxer/desktop_ipc/src/KnownInstanceContract'; -import type {DesktopModuleAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; +import type {DesktopModuleAPI, DesktopUpdateAPI} from '@fluxer/desktop_ipc/src/ModuleContract'; import type {DesktopStorageAPI} from '@fluxer/desktop_ipc/src/StorageContract'; import type {VoiceEngineV2BridgeHardwareEncoderApi} from '@fluxer/voice_engine_v2/bridge'; import type { @@ -217,8 +217,6 @@ export type UpdaterEvent = type: 'available'; context: UpdaterContext; version: string | null; - downloadSize?: number | null; - downloadStarted: boolean; downloadUrl?: string; downloadOptions?: Array; } @@ -226,24 +224,10 @@ export type UpdaterEvent = type: 'not-available'; context: UpdaterContext; } - | { - type: 'downloaded'; - context: UpdaterContext; - version: string | null; - } - | { - type: 'progress'; - context: UpdaterContext; - percent: number; - transferred: number; - total: number; - bytesPerSecond: number; - } | { type: 'error'; context: UpdaterContext; message: string; - phase?: 'check' | 'download' | 'install'; } | { type: 'unsupported'; @@ -676,8 +660,6 @@ export interface ElectronAPI { popupHelpMenu: () => Promise; onUpdaterEvent: (callback: (event: UpdaterEvent) => void) => () => void; updaterCheck: (context: UpdaterContext) => Promise; - updaterDownload: (context: UpdaterContext) => Promise; - updaterInstall: () => Promise; windowMinimize: () => void; windowMaximize: () => void; windowClose: () => void; @@ -806,6 +788,7 @@ export interface ElectronAPI { getAppMetrics?: () => Promise; capabilities: DesktopCapabilityManifest; desktopModules: DesktopModuleAPI; + desktopUpdate: DesktopUpdateAPI; reportLastRoute: (routePath: string) => void; notifyFirstContentPainted: () => void; desktopAccounts: DesktopAccountStorageAPI; diff --git a/fluxer_desktop/src/main/Bootstrap.ts b/fluxer_desktop/src/main/Bootstrap.ts index c355c6183..21e6d0534 100644 --- a/fluxer_desktop/src/main/Bootstrap.ts +++ b/fluxer_desktop/src/main/Bootstrap.ts @@ -10,10 +10,10 @@ import { ModuleSystemLaunchDecision, resolveModuleSystemLaunch, } from '@electron/common/ModuleSystem'; +import {checkDesktopUpdateNow} from '@electron/main/DesktopUpdateGate'; +import {DesktopUpdateRun, type DesktopUpdateTakeover} from '@electron/main/DesktopUpdateRun'; import {armOpenUrlForwarding, observeRendererLaunchConfirmed} from '@electron/main/ModuleBootHandoff'; -import {watchModuleRendererReload} from '@electron/main/ModuleRendererReload'; import type {ModuleLaunchAttempt, ModuleStore as ModuleStoreInstance} from '@electron/main/ModuleStore'; -import {offerPendingModuleUpdate} from '@electron/main/ModuleUpdateGate'; import type { ModuleUpdater as ModuleUpdaterInstance, ModuleUpdaterOutcome, @@ -65,6 +65,9 @@ const MODULE_SYSTEM_LAUNCH = resolveModuleSystemLaunch({hasOfflineRenderer: HAS_ const MODULE_LAUNCH_PERMIT = Symbol('fluxer.desktop.moduleLaunchPermit'); +const UPDATE_TAKEOVER_SPLASH_WAIT_MS = 250; +const UPDATE_SPLASH_PRELOAD_DELAY_MS = 5000; + const UPDATE_SERVER_UNREACHABLE_MESSAGE = "Fluxer couldn't reach its update server to download app files. Check your internet connection, proxy or firewall. Fluxer keeps retrying."; @@ -124,125 +127,49 @@ async function launchMainApp(permit: ModuleLaunchPermit, logger: BootstrapLogger await import(MAIN_PROCESS_ENTRY_URL); } -function armModulePoll( - plan: ModulePollPlan, - updater: ModuleUpdaterInstance, - refreshModuleRoots: (modules: Readonly>) => Promise, - logger: BootstrapLogger, -): void { - let mainWindow: BrowserWindow | null = null; +function armModulePoll(plan: ModulePollPlan, logger: BootstrapLogger): void { let inFlight = false; let failing = false; - void import('@electron/main/ModuleBootHandoff').then(({observeMainWindow, onMainWindowReady}) => { - observeMainWindow((window) => { - mainWindow = window; - }); - onMainWindowReady(() => { - logger.info('Polling the module manifest', { - intervalMs: plan.intervalMs, - jitterRatio: plan.jitterRatio, - }); - const schedule = (): void => { - const timer = setTimeout(tick, nextModulePollDelay(plan)); - timer.unref(); - }; - const tick = (): void => { - const window = mainWindow; - if (inFlight || window == null || window.isDestroyed()) { - schedule(); - return; - } - inFlight = true; - void updater - .refreshInstalledModules() - .then(async (refresh) => { - if (failing) { - failing = false; - logger.info('The module poll recovered'); - } - if (refresh.status !== 'activated') { - return; - } - logger.info('A new module set landed, offering it to the renderer', {modules: refresh.modules}); - try { - if (window.isDestroyed()) { - throw new Error('the main window closed before the activated module set could be offered'); - } - const releasePendingLaunch = (): void => { - updater.abandonPendingLaunch(refresh.launchAttempt); - }; - const reloadRenderer = (): void => { - if (window.isDestroyed()) { - logger.warn('The main window closed before the activated module set could reload'); - releasePendingLaunch(); - return; - } - const webContents = window.webContents; - const markReloadSucceeded = (): void => { - void updater.markLaunchSucceeded(refresh.launchAttempt).catch((error: unknown) => { - logger.error('Failed to record a successful module reload', error); - }); - }; - void refreshModuleRoots(refresh.launchAttempt.committed).then( - () => { - if (window.isDestroyed()) { - logger.warn('The main window closed before the activated module set could reload'); - releasePendingLaunch(); - return; - } - const stopWatchingReload = watchModuleRendererReload({ - target: webContents, - observeLaunchConfirmed: observeRendererLaunchConfirmed, - onLoaded: markReloadSucceeded, - onAbandoned: (reason) => { - logger.warn('The renderer never confirmed the module reload, releasing the pending launch', { - reason, - }); - releasePendingLaunch(); - }, - }); - try { - webContents.reloadIgnoringCache(); - } catch (error) { - stopWatchingReload(); - releasePendingLaunch(); - logger.error('The activated module set could not reload the renderer', error); - } - }, - (error: unknown) => { - releasePendingLaunch(); - logger.error('The activated module set could not be served to the renderer', error); - }, - ); - }; - offerPendingModuleUpdate({ - update: {modules: refresh.modules}, - apply: reloadRenderer, - discard: releasePendingLaunch, - }); - } catch (error) { - updater.abandonPendingLaunch(refresh.launchAttempt); - throw error; - } - }) - .catch((error: unknown) => { - if (!failing) { - failing = true; - logger.warn('The module poll failed, staying quiet until it recovers', error); - } - }) - .finally(() => { - inFlight = false; - schedule(); - }); - }; - if (process.platform === 'linux') { - tick(); - } else { - schedule(); - } - }); + logger.info('Polling the module manifest', { + intervalMs: plan.intervalMs, + jitterRatio: plan.jitterRatio, }); + const schedule = (): void => { + const timer = setTimeout(tick, nextModulePollDelay(plan)); + timer.unref(); + }; + const tick = (): void => { + if (inFlight) { + schedule(); + return; + } + inFlight = true; + void checkDesktopUpdateNow() + .then((state) => { + if (failing) { + failing = false; + logger.info('The module poll recovered'); + } + if (state.available) { + logger.info('A desktop update is available, waiting for the user to start it'); + } + }) + .catch((error: unknown) => { + if (!failing) { + failing = true; + logger.warn('The module poll failed, staying quiet until it recovers', error); + } + }) + .finally(() => { + inFlight = false; + schedule(); + }); + }; + if (process.platform === 'linux') { + tick(); + } else { + schedule(); + } } async function refuseUnsupportedBuild(reason: string): Promise { @@ -275,12 +202,14 @@ async function runModuleBootstrap(): Promise { const {getDesktopLocalAppProtocol} = await import('@electron/main/LocalAppProtocol'); const { armSecondInstanceForwarding, + getMainWindowFactory, onMainWindowCreated, onMainWindowReady, setCommittedModuleFiles, setOnDemandModuleInstaller, setSecondInstanceSink, } = await import('@electron/main/ModuleBootHandoff'); + const {armDesktopUpdate, publishDesktopUpdateCheck} = await import('@electron/main/DesktopUpdateGate'); const {instanceTurnedModulesOff} = await import('@electron/main/InstanceModulePreference'); const {createOnDemandModuleInstaller} = await import('@electron/main/ModuleOnDemand'); const {getModuleStoreRoot, ModuleStore} = await import('@electron/main/ModuleStore'); @@ -300,9 +229,12 @@ async function runModuleBootstrap(): Promise { onSplashNetworkOnline, onSplashOpenLogs, onSplashQuit, + onSplashReady, onSplashRetry, openSplashWindow, + preloadSplashWindow, releaseSplashAffordance, + revealPreloadedSplashWindow, setSplashState, SplashAction, } = await import('@electron/main/SplashWindow'); @@ -363,23 +295,23 @@ async function runModuleBootstrap(): Promise { openSplashWindow(); } setSplashState({status: 'checking-for-updates'}); - onSplashQuit(() => { - logger.info('The splash requested a quit'); - app.quit(); - }); - onSplashRetry(() => { - logger.info('The splash requested a retry, relaunching'); - relaunchStableLaunchPath(); - app.exit(0); - }); const updateServerRetry = new UpdateServerRetry(); - onSplashNetworkOnline(() => { - logger.info('The splash reported the network is back'); - updateServerRetry.networkReturned(); - }); - const splashOpenedAt = Date.now(); + const shellUpdatePlan = resolveShellUpdatePlan(); + if (shellUpdatePlan.capability === ShellUpdateCapability.SELF_UPDATE && shellUpdatePlan.updater === 'appimage') { + const {sweepAbandonedAppImageUpdates} = await import('@electron/main/AppImageUpdate'); + try { + const reclaimed = sweepAbandonedAppImageUpdates(shellUpdatePlan.target); + if (reclaimed.length > 0) { + logger.info('Reclaimed abandoned AppImage staging directories', {count: reclaimed.length}); + } + } catch (error) { + logger.warn('Failed to reclaim abandoned AppImage staging directories', error); + } + } + + let splashOpenedAt = Date.now(); let diagnosticsSource: { readonly store: ModuleStoreInstance; readonly updater: ModuleUpdaterInstance; @@ -425,25 +357,58 @@ async function runModuleBootstrap(): Promise { lastErrorAt: updaterDiagnostics?.lastErrorAt ?? null, }); }; - onSplashOpenLogs(() => { - const logsPath = resolveLogsPath(); - if (logsPath == null) return; - void shell.openPath(logsPath).then((failure) => { - if (failure.length > 0) { - logger.warn('Failed to open the logs folder from the splash', {failure}); - } + const armSplashActions = (): void => { + onSplashQuit(() => { + logger.info('The splash requested a quit'); + app.quit(); }); - }); - onSplashCopyDiagnostics(() => { - void collectSplashDiagnostics() - .then((text) => { - clipboard.writeText(text); - logger.info('Copied updater diagnostics from the splash'); - }) - .catch((error: unknown) => { - logger.error('Failed to copy updater diagnostics', error); + onSplashRetry(() => { + logger.info('The splash requested a retry, relaunching'); + relaunchStableLaunchPath(); + app.exit(0); + }); + onSplashNetworkOnline(() => { + logger.info('The splash reported the network is back'); + updateServerRetry.networkReturned(); + }); + onSplashOpenLogs(() => { + const logsPath = resolveLogsPath(); + if (logsPath == null) return; + void shell.openPath(logsPath).then((failure) => { + if (failure.length > 0) { + logger.warn('Failed to open the logs folder from the splash', {failure}); + } }); - }); + }); + onSplashCopyDiagnostics(() => { + void collectSplashDiagnostics() + .then((text) => { + clipboard.writeText(text); + logger.info('Copied updater diagnostics from the splash'); + }) + .catch((error: unknown) => { + logger.error('Failed to copy updater diagnostics', error); + }); + }); + }; + armSplashActions(); + + const runShellSelfUpdateOnSplash = async ( + requiredSecurityUpdate: boolean, + ): Promise<{readonly reason: string; readonly detail: string | null}> => { + if (shellUpdatePlan.capability !== ShellUpdateCapability.SELF_UPDATE) { + return {reason: 'unsupported', detail: null}; + } + const {runShellSelfUpdate} = await import('@electron/main/ShellSelfUpdate'); + return await runShellSelfUpdate(shellUpdatePlan, { + onDownloading: (progress) => { + setSplashState({status: 'shell-update-downloading', requiredSecurityUpdate, progress}); + }, + onRestarting: () => { + setSplashState({status: 'shell-update-restarting', requiredSecurityUpdate}); + }, + }); + }; const showBlockedSplash = (status: SplashStatus, message: string | null = null): void => { openSplashWindow(); @@ -478,10 +443,25 @@ async function runModuleBootstrap(): Promise { }, }); + if (store.shellVersionChanged) { + logger.info('The shell version changed since the last boot, converging the modules before launch'); + } const updater = new ModuleUpdater({ store, shellVersion: app.getVersion(), hasOfflineRenderer: HAS_OFFLINE_RENDERER, + forceStartupUpdate: store.shellVersionChanged, + selfUpdateShellFirst: + shellUpdatePlan.capability === ShellUpdateCapability.SELF_UPDATE + ? async (latestVersion, requiredSecurityUpdate) => { + logger.info('A newer shell is available, updating it before the modules', {latestVersion}); + const result = await runShellSelfUpdateOnSplash(requiredSecurityUpdate); + logger.warn('The shell self update did not restart the app, converging the modules for this shell', { + latestVersion, + ...result, + }); + } + : undefined, fetch: moduleNetworkFetch, sleep: updateServerRetry.sleep, onState: (state) => { @@ -536,33 +516,17 @@ async function runModuleBootstrap(): Promise { launchAttempt: outcome.launchAttempt, }; case 'blocked-shell-update': { - const plan = resolveShellUpdatePlan(); logger.warn('A shell update is required before the modules can converge', { latestVersion: outcome.latestVersion, minimumVersion: outcome.minimumVersion, - capability: plan.capability, + capability: shellUpdatePlan.capability, }); - if (plan.capability === ShellUpdateCapability.SELF_UPDATE) { - const {runShellSelfUpdate} = await import('@electron/main/ShellSelfUpdate'); - const failure = await runShellSelfUpdate(plan, { - onDownloading: (progress) => { - setSplashState({ - status: 'shell-update-downloading', - requiredSecurityUpdate: outcome.requiredSecurityUpdate, - progress, - }); - }, - onRestarting: () => { - setSplashState({ - status: 'shell-update-restarting', - requiredSecurityUpdate: outcome.requiredSecurityUpdate, - }); - }, - }); + if (shellUpdatePlan.capability === ShellUpdateCapability.SELF_UPDATE) { + const failure = await runShellSelfUpdateOnSplash(outcome.requiredSecurityUpdate); logger.error('The shell self update failed, falling back to a manual download', failure); } openSplashWindow(); - armBlockedShellUpdate(plan, outcome.latestVersion, outcome.requiredSecurityUpdate); + armBlockedShellUpdate(shellUpdatePlan, outcome.latestVersion, outcome.requiredSecurityUpdate); setSecondInstanceSink(focusSplashWindow); return await new Promise(() => {}); } @@ -641,10 +605,131 @@ async function runModuleBootstrap(): Promise { closeSplashWindow(); return; } - window.once('closed', closeSplashWindow); + const closeSplashWithWindow = (): void => { + closeSplashWindow(); + }; + window.once('closed', closeSplashWithWindow); + onMainWindowReady(() => { + window.removeListener('closed', closeSplashWithWindow); + }); }); }; + const reopenMainWindow = (launchAttempt: ModuleLaunchAttempt | null): void => { + const createMainWindow = getMainWindowFactory(); + if (createMainWindow == null) { + logger.error('No main window factory is registered, relaunching to recover'); + relaunchStableLaunchPath(); + app.exit(0); + return; + } + if (launchAttempt != null) { + const stopObservingLaunch = observeRendererLaunchConfirmed(() => { + stopObservingLaunch(); + void updater.markLaunchSucceeded(launchAttempt).catch((error: unknown) => { + logger.error('Failed to record a successful module update launch', error); + }); + }); + } + setSplashState({status: 'launching'}); + const window = createMainWindow(); + window.once('show', () => { + logger.info('The updated main window is showing, closing the splash'); + closeSplashWindow(); + }); + window.once('closed', closeSplashWindow); + }; + + let takeoverWindows: typeof import('@electron/main/Window') | null = null; + let takeoverSplash: BrowserWindow | null = null; + let takeoverHidden: ReadonlyArray = []; + let takeoverActive = false; + const preloadUpdateSplash = (): void => { + const timer = setTimeout(() => { + if (takeoverActive) return; + void import('@electron/main/Window').then((windows) => { + takeoverWindows = windows; + if (!takeoverActive) preloadSplashWindow(); + }); + }, UPDATE_SPLASH_PRELOAD_DELAY_MS); + timer.unref(); + }; + const updateTakeover: DesktopUpdateTakeover = { + begin: async () => { + takeoverActive = true; + const windows = takeoverWindows ?? (await import('@electron/main/Window')); + takeoverWindows = windows; + splashOpenedAt = Date.now(); + setSplashState({status: 'checking-for-updates'}); + armSplashActions(); + const preloaded = revealPreloadedSplashWindow(); + if (preloaded != null) { + takeoverSplash = preloaded; + takeoverHidden = windows.hideAppWindowsForUpdate(preloaded); + windows.beginMainWindowTakeover(focusSplashWindow); + logger.info('Revealed the preloaded update splash and hid the app windows in the same tick'); + return; + } + const splash = openSplashWindow({darkThemeOnShow: true}); + takeoverSplash = splash; + windows.beginMainWindowTakeover(focusSplashWindow); + await new Promise((resolve) => { + let settled = false; + const takeOver = (): void => { + if (settled) return; + settled = true; + stopWaitingForSplash(); + clearTimeout(deadline); + focusSplashWindow(); + takeoverHidden = windows.hideAppWindowsForUpdate(splash); + resolve(); + }; + const stopWaitingForSplash = onSplashReady(takeOver); + const deadline = setTimeout(takeOver, UPDATE_TAKEOVER_SPLASH_WAIT_MS); + }); + }, + restore: () => { + takeoverWindows?.endMainWindowTakeover(); + takeoverWindows?.restoreAppWindowsAfterUpdate(takeoverHidden); + takeoverHidden = []; + closeSplashWindow(); + takeoverActive = false; + preloadUpdateSplash(); + }, + closeApp: async () => { + if (takeoverSplash != null) { + await takeoverWindows?.closeAppWindowsForUpdate(takeoverSplash); + } + takeoverHidden = []; + }, + reopen: (launchAttempt) => { + takeoverWindows?.endMainWindowTakeover(); + takeoverActive = false; + reopenMainWindow(launchAttempt); + preloadUpdateSplash(); + }, + }; + + const desktopUpdate = new DesktopUpdateRun({ + probe: () => updater.checkForUpdate(), + canSelfUpdateShell: shellUpdatePlan.capability === ShellUpdateCapability.SELF_UPDATE, + runShellSelfUpdate: () => runShellSelfUpdateOnSplash(false), + installModules: async () => { + const launchAttempt = await updater.installPending(); + if (launchAttempt != null) { + await refreshModuleRoots(launchAttempt.committed); + } + return launchAttempt; + }, + takeover: updateTakeover, + publish: publishDesktopUpdateCheck, + openDownloadsPage: async () => { + const {DOWNLOAD_PAGE_URL} = await import('@electron/main/UpdaterDownloads'); + await shell.openExternal(DOWNLOAD_PAGE_URL); + }, + logger, + }); + const permit = await runModuleUpdateLoop(); localNetworkHint.disarm(); await refreshModuleRoots(permit.launchAttempt.committed); @@ -658,8 +743,11 @@ async function runModuleBootstrap(): Promise { }), ); markSplashLaunching(); + armDesktopUpdate({check: () => desktopUpdate.check(), start: () => desktopUpdate.start()}); armMainWindowHandoff(updater, permit.launchAttempt, () => { - armModulePoll(resolveModulePollPlan(readDevModulePollInterval()), updater, refreshModuleRoots, logger); + desktopUpdate.markLaunchSettled(); + preloadUpdateSplash(); + armModulePoll(resolveModulePollPlan(readDevModulePollInterval()), logger); }); app.once('before-quit', () => { closeSplashWindow(); diff --git a/fluxer_desktop/src/main/BootstrapEntry.test.mjs b/fluxer_desktop/src/main/BootstrapEntry.test.mjs index 43690819f..def905c04 100644 --- a/fluxer_desktop/src/main/BootstrapEntry.test.mjs +++ b/fluxer_desktop/src/main/BootstrapEntry.test.mjs @@ -92,20 +92,21 @@ describe('Bootstrap entry point', () => { /blockUntilRelaunch\('blocked-shell-update'\)/, 'Relaunching runs the same binary, refetches the same manifest and blocks again. On Linux, portable and Flatpak the shell cannot self update at all, so a retry is an unescapable loop.', ); - assert.match(source, /const plan = resolveShellUpdatePlan\(\);/); - assert.match(source, /armBlockedShellUpdate\(plan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/); - }); - - test('a shell that can update itself tries to, and still falls through to the manual screen when it cannot', () => { - assert.match(source, /if \(plan\.capability === ShellUpdateCapability\.SELF_UPDATE\) \{/); - assert.match(source, /const failure = await runShellSelfUpdate\(plan, \{/); + assert.match(source, /const shellUpdatePlan = resolveShellUpdatePlan\(\);/); assert.match( source, - /logger\.error\('The shell self update failed, falling back to a manual download', failure\);\n\t{5}\}\n\t{5}openSplashWindow\(\);\n\t{5}armBlockedShellUpdate\(plan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/, + /armBlockedShellUpdate\(shellUpdatePlan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/, + ); + }); + test('a shell that can update itself tries to, and still falls through to the manual screen when it cannot', () => { + assert.match(source, /if \(shellUpdatePlan\.capability === ShellUpdateCapability\.SELF_UPDATE\) \{/); + assert.match(source, /return await runShellSelfUpdate\(shellUpdatePlan, \{/); + assert.match( + source, + /logger\.error\('The shell self update failed, falling back to a manual download', failure\);\n\t{5}\}\n\t{5}openSplashWindow\(\);\n\t{5}armBlockedShellUpdate\(shellUpdatePlan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/, 'The manual screen is the fallback, so arming it must sit after the self update attempt rather than inside its else branch.', ); }); - test('the self update is imported inside the update loop, never at the top level', () => { assert.doesNotMatch( source, @@ -116,16 +117,10 @@ describe('Bootstrap entry point', () => { }); test('the self update paints its own progress rather than leaving the checking screen up', () => { - assert.match( - source, - /status: 'shell-update-downloading',\n\t+requiredSecurityUpdate: outcome\.requiredSecurityUpdate,\n\t+progress,/, - ); - assert.match( - source, - /status: 'shell-update-restarting',\n\t+requiredSecurityUpdate: outcome\.requiredSecurityUpdate,/, - ); + assert.match(source, /setSplashState\(\{status: 'shell-update-downloading', requiredSecurityUpdate, progress\}\);/); + assert.match(source, /setSplashState\(\{status: 'shell-update-restarting', requiredSecurityUpdate\}\);/); + assert.match(source, /await runShellSelfUpdateOnSplash\(outcome\.requiredSecurityUpdate\)/); }); - test('the retry affordance still belongs to the module update block', () => { assert.match(source, /setSplashState\(\{status, action: SplashAction\.RETRY, message\}\);/); assert.match( @@ -138,11 +133,15 @@ describe('Bootstrap entry point', () => { assert.equal(source.split('\n').filter((line) => line.includes('onSplashRetry(')).length, 1); assert.match( source, - /onSplashQuit\(\(\) => \{\n\t\tlogger\.info\('The splash requested a quit'\);\n\t\tapp\.quit\(\);\n\t\}\);\n\tonSplashRetry\(/, + /onSplashQuit\(\(\) => \{\n\t\t\tlogger\.info\('The splash requested a quit'\);\n\t\t\tapp\.quit\(\);\n\t\t\}\);\n\t\tonSplashRetry\(/, 'Two reachable blockUntilRelaunch calls would otherwise register two listeners and one click would relaunch twice.', ); + assert.doesNotMatch( + source, + /const blockUntilRelaunch = [^\n]*\n[^\n]*armSplashActions\(\)/, + 'The splash forgets its listeners when it closes, so the update splash arms them again, but the block helper never does.', + ); }); - test('refusing to start never top level awaits either', () => { assert.doesNotMatch(source, /^await refuseUnsupportedBuild\(/m); assert.match(source, /void refuseUnsupportedBuild\(/); @@ -198,10 +197,9 @@ describe('Bootstrap entry point', () => { ); assert.match( source, - /armBlockedShellUpdate\(plan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);\n\t+setSecondInstanceSink\(focusSplashWindow\);/, + /armBlockedShellUpdate\(shellUpdatePlan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);\n\t+setSecondInstanceSink\(focusSplashWindow\);/, ); }); - test('an unreachable update server is retried in process instead of waiting for a click', () => { const bootstrap = source.slice(source.indexOf('async function runModuleBootstrap()')); assert.match( @@ -222,15 +220,19 @@ describe('Bootstrap entry point', () => { ); }); - test('the module poll tracks the live main window rather than the one the boot handoff latched', () => { - assert.doesNotMatch( - source, - /onMainWindowCreated\(\(window\) => \{\n\t\t\tmainWindow = window;/, - 'onMainWindowCreated is a one shot boot handoff. Closing the window and reopening it from the dock or the tray would leave the poll holding a destroyed window forever, so every later tick would short circuit and no module version would ever land again.', + test('the module poll only checks, it never downloads or reloads underneath the user', () => { + const poll = source.slice( + source.indexOf('function armModulePoll('), + source.indexOf('async function refuseUnsupportedBuild('), ); - assert.match(source, /observeMainWindow\(\(window\) => \{\n\t\t\tmainWindow = window;\n\t\t\}\);/); + assert.match(poll, /void checkDesktopUpdateNow\(\)/); + assert.doesNotMatch( + poll, + /installPending|reloadIgnoringCache|refreshModuleRoots|activateMergedForRendererReload/, + 'A background poll that downloads the renderer and commits it makes the update look like it already happened, then the click reloads in place while the shell update still waits. The poll only publishes whether an update exists.', + ); + assert.doesNotMatch(source, /reloadIgnoringCache/); }); - test('a module poll that went quiet says so when it comes back', () => { assert.match( source, @@ -239,60 +241,6 @@ describe('Bootstrap entry point', () => { ); }); - test('an activated module set that cannot reach the renderer releases the pending launch', () => { - assert.match( - source, - /\} catch \(error\) \{\n\t+updater\.abandonPendingLaunch\(refresh\.launchAttempt\);\n\t+throw error;/, - 'refreshInstalledModules holds a pending launch from the moment it activates. If refreshing the module roots, the closed window check or reloadIgnoringCache throws, the poll only logs, and every later poll returns awaiting-renderer for the rest of the session.', - ); - }); - - test('a reload the renderer never confirms releases the pending launch too', () => { - assert.doesNotMatch( - source, - /webContents\.once\('did-finish-load'/, - 'A bare one shot only settles when the load lands. Nothing throws when the window is destroyed mid reload, so the pending launch would stay held and every later poll would return awaiting-renderer for the rest of the session.', - ); - assert.match( - source, - /const stopWatchingReload = watchModuleRendererReload\(\{\n\t+target: webContents,\n\t+observeLaunchConfirmed: observeRendererLaunchConfirmed,\n\t+onLoaded: markReloadSucceeded,\n\t+onAbandoned: \(reason\) => \{/, - ); - assert.match(source, /releasePendingLaunch\(\);\n\t+\},\n\t+\}\);/); - assert.match( - source, - /\} catch \(error\) \{\n\t+stopWatchingReload\(\);\n\t+releasePendingLaunch\(\);/, - 'The reload runs from a user click, not from the poll, so nothing upstream is left to catch a rethrow. It has to release the pending launch itself or every later poll returns awaiting-renderer for the rest of the session.', - ); - }); - - test('an activated module set is offered to the renderer rather than reloaded underneath it', () => { - assert.match( - source, - /offerPendingModuleUpdate\(\{\n\t+update: \{modules: refresh\.modules\},\n\t+apply: reloadRenderer,\n\t+discard: releasePendingLaunch,\n\t+\}\);/, - 'A silent reloadIgnoringCache throws away whatever the user was typing. The poll hands the activated set to the gate and the renderer reloads when the user asks for it.', - ); - assert.doesNotMatch( - source, - /\}\);\n\t+webContents\.reloadIgnoringCache\(\);/, - 'reloadIgnoringCache belongs inside the applied callback, never on the poll path.', - ); - }); - - test('a superseded or discarded module update releases the pending launch', () => { - assert.match( - source, - /discard: releasePendingLaunch,/, - 'The gate holds at most one offer. Dropping one without releasing its launch attempt would leave refreshInstalledModules returning awaiting-renderer for the rest of the session.', - ); - }); - - test('a window that closed before the user applied the update does not reload a destroyed target', () => { - assert.match( - source, - /const reloadRenderer = \(\): void => \{\n\t+if \(window\.isDestroyed\(\)\) \{/, - 'The offer can sit unapplied for as long as the user leaves it. The window it captured may be gone by the time they click.', - ); - }); test('a minimized login launch converges the modules without flashing the splash', () => { const bootstrap = source.slice(source.indexOf('async function runModuleBootstrap()')); assert.match( @@ -317,10 +265,42 @@ describe('Bootstrap entry point', () => { ); assert.match( source, - /openSplashWindow\(\);\n\t+armBlockedShellUpdate\(plan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/, + /openSplashWindow\(\);\n\t+armBlockedShellUpdate\(shellUpdatePlan, outcome\.latestVersion, outcome\.requiredSecurityUpdate\);/, ); }); + test('a user check works from the first window, a click only after the renderer confirmed its launch', () => { + const bootstrap = source.slice(source.indexOf('async function runModuleBootstrap()')); + const arm = bootstrap.indexOf( + 'armDesktopUpdate({check: () => desktopUpdate.check(), start: () => desktopUpdate.start()});', + ); + assert.notEqual(arm, -1); + assert.ok(arm < bootstrap.indexOf('await launchMainApp(permit, logger);')); + assert.match(bootstrap, /\.finally\(onLaunchSettled\)/); + assert.match(bootstrap, /desktopUpdate\.markLaunchSettled\(\);/); + }); + + test('the update splash hides the app only once it is on screen, in its own theme', () => { + const bootstrap = source.slice(source.indexOf('async function runModuleBootstrap()')); + assert.match(bootstrap, /openSplashWindow\(\{darkThemeOnShow: true\}\)/); + assert.match( + bootstrap, + /focusSplashWindow\(\);\n\t+takeoverHidden = windows\.hideAppWindowsForUpdate\(splash\);/, + 'A deadline that wins before the splash preload reports ready would otherwise hide the app with nothing on screen.', + ); + assert.match( + bootstrap, + /splashOpenedAt = Date\.now\(\);/, + 'Copy diagnostics counts from the update, not from boot.', + ); + }); + + test('the main window that closes for an update never takes the update splash with it', () => { + assert.match( + source, + /window\.once\('closed', closeSplashWithWindow\);\n\t+onMainWindowReady\(\(\) => \{\n\t+window\.removeListener\('closed', closeSplashWithWindow\);/, + ); + }); test('the pre-ready Chromium configuration runs before the bootstrap waits for ready', () => { const configure = source.indexOf('applyPreReadyChromiumConfiguration(userDataConfig.channel, process.argv);'); const gpuWorkaround = source.indexOf('await appendWindowsGpuDriverWorkaroundSwitches();'); diff --git a/fluxer_desktop/src/main/DeepLinks.ts b/fluxer_desktop/src/main/DeepLinks.ts index 592f04a9e..ac380b5f4 100644 --- a/fluxer_desktop/src/main/DeepLinks.ts +++ b/fluxer_desktop/src/main/DeepLinks.ts @@ -3,7 +3,7 @@ import {APP_PROTOCOL} from '@electron/common/Constants'; import {parseJumpListTaskFromArgv} from '@electron/main/JumpList'; import {recordRecentDeepLink} from '@electron/main/RecentDocuments'; -import {getMainWindow, showWindow} from '@electron/main/Window'; +import {getMainWindow, isMainWindowTakenOver, onMainWindowTakeoverEnded, showWindow} from '@electron/main/Window'; import {app, ipcMain} from 'electron'; import log from 'electron-log'; @@ -125,6 +125,14 @@ export function initializeDeepLinks(): void { registerInitialDeepLinkHandler(); } +function deliverDeepLinkHeldByTakeover(): void { + const mainWindow = getMainWindow(); + if (initialDeepLink == null || mainWindow == null || mainWindow.isDestroyed()) return; + const url = initialDeepLink; + initialDeepLink = null; + mainWindow.webContents.send('deep-link', url); +} + function registerInitialDeepLinkHandler(): void { const deepLinkArg = extractDeepLinkFromArgv(process.argv); if (deepLinkArg) { @@ -134,6 +142,7 @@ function registerInitialDeepLinkHandler(): void { shouldSuppressAsDuplicate(normalized); } } + onMainWindowTakeoverEnded(deliverDeepLinkHeldByTakeover); ipcMain.handle('get-initial-deep-link', (): string | null => { const url = initialDeepLink; initialDeepLink = null; @@ -145,6 +154,11 @@ function dispatchDeepLink(url: string): void { const normalized = normalizeDeepLinkForRenderer(url); if (!normalized || shouldSuppressAsDuplicate(normalized)) return; recordRecentDeepLink(url); + if (isMainWindowTakenOver()) { + initialDeepLink = normalized; + showWindow(); + return; + } const mainWindow = getMainWindow(); if (mainWindow && !mainWindow.isDestroyed()) { mainWindow.webContents.send('deep-link', normalized); diff --git a/fluxer_desktop/src/main/DesktopTray.ts b/fluxer_desktop/src/main/DesktopTray.ts index af9e9b9cd..12849e122 100644 --- a/fluxer_desktop/src/main/DesktopTray.ts +++ b/fluxer_desktop/src/main/DesktopTray.ts @@ -33,6 +33,7 @@ const TRAY_POSITION_GUID = TRAY_POSITION_GUIDS[BUILD_CHANNEL]; interface DesktopTrayController { createWindow: () => BrowserWindow; getMainWindow: () => BrowserWindow | null; + isMainWindowTakenOver: () => boolean; hideWindow: () => void; setQuitting: (quitting: boolean) => void; showWindow: () => void; @@ -236,7 +237,7 @@ function createTrayIcon(): Electron.NativeImage | null { function ensureMainWindowVisible(): void { if (!controller) return; const mainWindow = controller.getMainWindow(); - if (!mainWindow || mainWindow.isDestroyed()) { + if ((!mainWindow || mainWindow.isDestroyed()) && !controller.isMainWindowTakenOver()) { controller.createWindow(); } controller.showWindow(); diff --git a/fluxer_desktop/src/main/DesktopUpdateGate.test.mjs b/fluxer_desktop/src/main/DesktopUpdateGate.test.mjs new file mode 100644 index 000000000..efbf6ea68 --- /dev/null +++ b/fluxer_desktop/src/main/DesktopUpdateGate.test.mjs @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import assert from 'node:assert/strict'; +import {describe, test} from 'node:test'; +import {installElectronStub} from './LocalAppTestSupport.test.mjs'; + +installElectronStub(); + +const { + armDesktopUpdate, + checkDesktopUpdateNow, + getDesktopUpdateState, + observeDesktopUpdateState, + publishDesktopUpdateCheck, + startDesktopUpdate, +} = await import('@electron/main/DesktopUpdateGate'); + +function deferred() { + let resolve; + const promise = new Promise((resolvePromise) => { + resolve = resolvePromise; + }); + return {promise, resolve}; +} + +describe('DesktopUpdateGate', () => { + test('nothing is available and nothing starts before the bootstrap arms the gate', async () => { + assert.deepEqual(getDesktopUpdateState(), {available: false}); + assert.deepEqual(await checkDesktopUpdateNow(), {available: false}); + assert.equal(startDesktopUpdate(), false); + }); + + test('a check publishes the update and one click runs it exactly once', async () => { + const states = []; + const stop = observeDesktopUpdateState((state) => states.push(state.available)); + const running = deferred(); + let starts = 0; + armDesktopUpdate({ + check: async () => ({shellNewer: false, modulesChanged: true}), + start: async () => { + starts += 1; + await running.promise; + publishDesktopUpdateCheck({shellNewer: false, modulesChanged: false}); + }, + }); + + assert.deepEqual(await checkDesktopUpdateNow(), {available: true}); + assert.equal(startDesktopUpdate(), true); + assert.equal(startDesktopUpdate(), false, 'a second click while the update runs is a no-op'); + assert.deepEqual(getDesktopUpdateState(), {available: false}, 'the affordance hides the moment it is clicked'); + assert.deepEqual(await checkDesktopUpdateNow(), {available: false}, 'a poll during the update changes nothing'); + + running.resolve(); + await new Promise((resolve) => setImmediate(resolve)); + + assert.equal(starts, 1); + assert.deepEqual(getDesktopUpdateState(), {available: false}); + assert.deepEqual(states, [true, false]); + stop(); + }); + + test('a shell update that could not finish stays available for the next click', async () => { + armDesktopUpdate({ + check: async () => ({shellNewer: true, modulesChanged: false}), + start: async () => { + publishDesktopUpdateCheck({shellNewer: true, modulesChanged: false}); + }, + }); + await checkDesktopUpdateNow(); + + assert.equal(startDesktopUpdate(), true); + await new Promise((resolve) => setImmediate(resolve)); + + assert.deepEqual(getDesktopUpdateState(), {available: true}); + assert.equal(startDesktopUpdate(), true); + }); +}); diff --git a/fluxer_desktop/src/main/DesktopUpdateGate.ts b/fluxer_desktop/src/main/DesktopUpdateGate.ts new file mode 100644 index 000000000..beceefc2c --- /dev/null +++ b/fluxer_desktop/src/main/DesktopUpdateGate.ts @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import {createChildLogger} from '@electron/common/Logger'; +import type {DesktopUpdateState} from '@fluxer/desktop_ipc/src/ModuleContract'; + +const logger = createChildLogger('DesktopUpdateGate'); + +export interface DesktopUpdateCheck { + readonly shellNewer: boolean; + readonly modulesChanged: boolean; +} + +interface DesktopUpdateController { + readonly check: () => Promise; + readonly start: () => Promise; +} + +type DesktopUpdateStateListener = (state: DesktopUpdateState) => void; + +interface DesktopUpdateGateState { + controller: DesktopUpdateController | null; + lastCheck: DesktopUpdateCheck | null; + running: Promise | null; + notifiedAvailable: boolean; + readonly listeners: Set; +} + +const gateState: DesktopUpdateGateState = { + controller: null, + lastCheck: null, + running: null, + notifiedAvailable: false, + listeners: new Set(), +}; + +function isAvailable(check: DesktopUpdateCheck | null): boolean { + return check != null && (check.shellNewer || check.modulesChanged); +} + +export function getDesktopUpdateState(): DesktopUpdateState { + return {available: gateState.running == null && isAvailable(gateState.lastCheck)}; +} + +function notify(): void { + const state = getDesktopUpdateState(); + if (state.available === gateState.notifiedAvailable) { + return; + } + gateState.notifiedAvailable = state.available; + for (const listener of Array.from(gateState.listeners)) { + try { + listener(state); + } catch (error) { + logger.error('A desktop update state listener threw', error); + } + } +} + +export function armDesktopUpdate(controller: DesktopUpdateController): void { + gateState.controller = controller; +} + +export function publishDesktopUpdateCheck(check: DesktopUpdateCheck): void { + gateState.lastCheck = check; + notify(); +} + +export async function checkDesktopUpdateNow(): Promise { + const controller = gateState.controller; + if (controller == null || gateState.running != null) { + return getDesktopUpdateState(); + } + const check = await controller.check(); + if (gateState.running == null) { + publishDesktopUpdateCheck(check); + } + return getDesktopUpdateState(); +} + +export function startDesktopUpdate(): boolean { + const controller = gateState.controller; + if (controller == null || gateState.running != null || !isAvailable(gateState.lastCheck)) { + return false; + } + const running = controller + .start() + .catch((error: unknown) => { + logger.error('The desktop update failed', error); + }) + .finally(() => { + if (gateState.running === running) { + gateState.running = null; + notify(); + } + }); + gateState.running = running; + notify(); + return true; +} + +export function observeDesktopUpdateState(listener: DesktopUpdateStateListener): () => void { + gateState.listeners.add(listener); + return () => { + gateState.listeners.delete(listener); + }; +} diff --git a/fluxer_desktop/src/main/DesktopUpdateRun.test.mjs b/fluxer_desktop/src/main/DesktopUpdateRun.test.mjs new file mode 100644 index 000000000..c23776558 --- /dev/null +++ b/fluxer_desktop/src/main/DesktopUpdateRun.test.mjs @@ -0,0 +1,197 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import assert from 'node:assert/strict'; +import {describe, test} from 'node:test'; +import {installElectronStub} from './LocalAppTestSupport.test.mjs'; + +installElectronStub(); + +const {DesktopUpdateRun} = await import('@electron/main/DesktopUpdateRun'); + +const LAUNCH_ATTEMPT = Object.freeze({committed: {fluxer_renderer: 'b'.repeat(64)}}); + +function harness({ + probes = [{shellLatestVersion: '2026.1008.2', shellNewer: false, modulesChanged: true}], + canSelfUpdateShell = true, + shellResults = [], + installFails = false, + settled = true, +} = {}) { + const steps = []; + const published = []; + let probeIndex = 0; + let shellIndex = 0; + const quiet = () => undefined; + const run = new DesktopUpdateRun({ + probe: async () => { + const next = probes[Math.min(probeIndex, probes.length - 1)]; + probeIndex += 1; + steps.push('probe'); + if (next instanceof Error) throw next; + return next; + }, + canSelfUpdateShell, + runShellSelfUpdate: async () => { + steps.push('shell-update'); + const result = shellResults[Math.min(shellIndex, shellResults.length - 1)]; + shellIndex += 1; + return result; + }, + installModules: async () => { + steps.push('install'); + if (installFails) throw new Error('disk full'); + return LAUNCH_ATTEMPT; + }, + takeover: { + begin: async () => { + steps.push('takeover'); + }, + restore: () => { + steps.push('restore'); + }, + closeApp: async () => { + steps.push('close'); + }, + reopen: (launchAttempt) => { + steps.push(launchAttempt == null ? 'reopen' : 'reopen-updated'); + }, + }, + publish: (check) => { + published.push(check); + }, + openDownloadsPage: async () => { + steps.push('downloads-page'); + }, + logger: {info: quiet, warn: quiet, error: quiet}, + }); + if (settled) run.markLaunchSettled(); + return {run, steps, published}; +} + +describe('DesktopUpdateRun', () => { + test('the background check only looks, it never downloads, closes or installs anything', async () => { + const {run, steps, published} = harness(); + + assert.deepEqual(await run.check(), {shellNewer: false, modulesChanged: true}); + + assert.deepEqual(steps, ['probe']); + assert.deepEqual(published, []); + }); + + test('a click takes the window over, checks, and only then closes the app and installs', async () => { + const {run, steps, published} = harness(); + + await run.start(); + + assert.deepEqual(steps, ['probe', 'takeover', 'close', 'install', 'reopen-updated']); + assert.deepEqual(published, [{shellNewer: false, modulesChanged: false}]); + }); + + test('a click while offline gives the same windows back instead of tearing the app down', async () => { + const {run, steps, published} = harness({probes: [new Error('offline')]}); + + await run.start(); + + assert.deepEqual(steps, ['probe', 'takeover', 'restore']); + assert.deepEqual(published, [], 'the icon stays so the next click can try again'); + }); + + test('a click after the update was withdrawn gives the windows back and hides the icon', async () => { + const {run, steps, published} = harness({ + probes: [{shellLatestVersion: '2026.1008.1', shellNewer: false, modulesChanged: false}], + }); + + await run.start(); + + assert.deepEqual(steps, ['probe', 'takeover', 'restore']); + assert.deepEqual(published, [{shellNewer: false, modulesChanged: false}]); + }); + + test('a shell update runs before any module download, and modules install only when the shell did not restart', async () => { + const {run, steps} = harness({ + probes: [{shellLatestVersion: '2026.1008.2', shellNewer: true, modulesChanged: true}], + shellResults: [{reason: 'install-failed', detail: 'nope'}], + }); + + await run.start(); + + assert.deepEqual(steps, ['probe', 'takeover', 'close', 'shell-update', 'install', 'reopen-updated']); + }); + + test('a shell feed that lags the manifest stops offering the shell until the manifest moves on', async () => { + const lagging = {shellLatestVersion: '2026.1008.2', shellNewer: true, modulesChanged: false}; + const {run, steps, published} = harness({ + probes: [lagging, lagging, {...lagging, shellLatestVersion: '2026.1008.3'}], + shellResults: [{reason: 'no-update', detail: null}], + }); + + await run.start(); + assert.deepEqual(published, [{shellNewer: false, modulesChanged: false}]); + + assert.deepEqual( + await run.check(), + {shellNewer: false, modulesChanged: false}, + 'the poll no longer shows the icon', + ); + assert.deepEqual(await run.check(), {shellNewer: true, modulesChanged: false}, 'a newer manifest shell does'); + assert.deepEqual(steps, ['probe', 'takeover', 'close', 'shell-update', 'reopen', 'probe', 'probe']); + }); + + test('a shell update that failed on the network is retried by the next click', async () => { + const shell = {shellLatestVersion: '2026.1008.2', shellNewer: true, modulesChanged: false}; + const {run, steps, published} = harness({ + probes: [shell], + shellResults: [ + {reason: 'timed-out', detail: 'slow link'}, + {reason: 'check-failed', detail: 'offline'}, + ], + }); + + await run.start(); + await run.start(); + + assert.deepEqual(published, [ + {shellNewer: true, modulesChanged: false}, + {shellNewer: true, modulesChanged: false}, + ]); + assert.equal(steps.filter((step) => step === 'shell-update').length, 2); + assert.equal(steps.includes('downloads-page'), false); + }); + + test('only a shell update that failed to install falls back to the downloads page', async () => { + const shell = {shellLatestVersion: '2026.1008.2', shellNewer: true, modulesChanged: false}; + const {run, steps} = harness({probes: [shell], shellResults: [{reason: 'install-failed', detail: 'apply'}]}); + + await run.start(); + steps.length = 0; + await run.start(); + + assert.deepEqual(steps, ['downloads-page']); + }); + + test('a shell that cannot update itself never offers the shell part', async () => { + const {run} = harness({ + canSelfUpdateShell: false, + probes: [{shellLatestVersion: '2026.1008.2', shellNewer: true, modulesChanged: false}], + }); + + assert.deepEqual(await run.check(), {shellNewer: false, modulesChanged: false}); + }); + + test('a failed module install reopens the app on the installed set and keeps the icon', async () => { + const {run, steps, published} = harness({installFails: true}); + + await run.start(); + + assert.deepEqual(steps, ['probe', 'takeover', 'close', 'install', 'reopen']); + assert.deepEqual(published, [{shellNewer: false, modulesChanged: true}]); + }); + + test('a click before the renderer confirmed its launch does nothing', async () => { + const {run, steps} = harness({settled: false}); + + await run.start(); + + assert.deepEqual(steps, []); + }); +}); diff --git a/fluxer_desktop/src/main/DesktopUpdateRun.ts b/fluxer_desktop/src/main/DesktopUpdateRun.ts new file mode 100644 index 000000000..394ff5ef3 --- /dev/null +++ b/fluxer_desktop/src/main/DesktopUpdateRun.ts @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import type {DesktopUpdateCheck} from '@electron/main/DesktopUpdateGate'; +import type {ModuleLaunchAttempt} from '@electron/main/ModuleStore'; + +export interface DesktopUpdateProbe { + readonly shellLatestVersion: string; + readonly shellNewer: boolean; + readonly modulesChanged: boolean; +} + +export interface ShellSelfUpdateResult { + readonly reason: string; + readonly detail: string | null; +} + +export interface DesktopUpdateTakeover { + readonly begin: () => Promise; + readonly restore: () => void; + readonly closeApp: () => Promise; + readonly reopen: (launchAttempt: ModuleLaunchAttempt | null) => void; +} + +interface DesktopUpdateLogger { + readonly info: (message: string, details?: unknown) => void; + readonly warn: (message: string, details?: unknown) => void; + readonly error: (message: string, details?: unknown) => void; +} + +interface DesktopUpdateRunOptions { + readonly probe: () => Promise; + readonly canSelfUpdateShell: boolean; + readonly runShellSelfUpdate: () => Promise; + readonly installModules: () => Promise; + readonly takeover: DesktopUpdateTakeover; + readonly publish: (check: DesktopUpdateCheck) => void; + readonly openDownloadsPage: () => Promise; + readonly logger: DesktopUpdateLogger; + readonly now?: () => number; +} + +interface FilteredProbe { + readonly check: DesktopUpdateCheck; + readonly shellLatestVersion: string; +} + +export class DesktopUpdateRun { + private readonly options: DesktopUpdateRunOptions; + private readonly now: () => number; + private launchSettled = false; + private shellFeedBehindVersion: string | null = null; + private shellInstallFailed = false; + private lastCheck: DesktopUpdateCheck | null = null; + + public constructor(options: DesktopUpdateRunOptions) { + this.options = options; + this.now = options.now ?? Date.now; + } + + public markLaunchSettled(): void { + this.launchSettled = true; + } + + public async check(): Promise { + return (await this.probe()).check; + } + + public async start(): Promise { + const {logger, takeover} = this.options; + const startedAt = this.now(); + if (!this.launchSettled) { + logger.warn('Ignoring a desktop update start before the renderer confirmed its launch'); + return; + } + if (this.shellInstallFailed && this.lastCheck?.modulesChanged !== true) { + logger.warn('The shell update failed to install this session, opening the downloads page instead'); + await this.options.openDownloadsPage(); + return; + } + logger.info('Starting the desktop update'); + const probing = this.probe(); + probing.catch(() => {}); + await takeover.begin(); + logger.info('The update splash took the app windows over', {elapsedMs: this.now() - startedAt}); + let probe: FilteredProbe; + try { + probe = await probing; + } catch (error) { + logger.warn('The desktop update check failed, giving the app windows back', error); + takeover.restore(); + return; + } + const {check} = probe; + logger.info('Checked for the desktop update', {...check, elapsedMs: this.now() - startedAt}); + if (!check.shellNewer && !check.modulesChanged) { + this.publish(check); + takeover.restore(); + return; + } + await takeover.closeApp(); + logger.info('Closed the app windows for the update', {elapsedMs: this.now() - startedAt}); + let launchAttempt: ModuleLaunchAttempt | null = null; + let remaining = check; + try { + if (check.shellNewer) { + remaining = await this.updateShell(probe); + } + if (check.modulesChanged) { + launchAttempt = await this.options.installModules(); + remaining = {shellNewer: remaining.shellNewer, modulesChanged: false}; + logger.info('Installed the module update', { + activated: launchAttempt != null, + elapsedMs: this.now() - startedAt, + }); + } + } catch (error) { + logger.error('The desktop update failed, reopening the app on the installed modules', error); + } finally { + this.publish(remaining); + takeover.reopen(launchAttempt); + } + } + + private async updateShell(probe: FilteredProbe): Promise { + const {logger} = this.options; + const result = await this.options.runShellSelfUpdate(); + logger.warn('The shell self update did not restart the app', result); + if (result.reason === 'no-update') { + this.shellFeedBehindVersion = probe.shellLatestVersion; + return {shellNewer: false, modulesChanged: probe.check.modulesChanged}; + } + if (result.reason === 'install-failed') { + this.shellInstallFailed = true; + } + return probe.check; + } + + private async probe(): Promise { + const probe = await this.options.probe(); + const check = { + shellNewer: + this.options.canSelfUpdateShell && probe.shellNewer && probe.shellLatestVersion !== this.shellFeedBehindVersion, + modulesChanged: probe.modulesChanged, + }; + this.lastCheck = check; + return {check, shellLatestVersion: probe.shellLatestVersion}; + } + + private publish(check: DesktopUpdateCheck): void { + this.lastCheck = check; + this.options.publish(check); + } +} diff --git a/fluxer_desktop/src/main/IpcHandlers.ts b/fluxer_desktop/src/main/IpcHandlers.ts index 42c2163af..c98e8472f 100644 --- a/fluxer_desktop/src/main/IpcHandlers.ts +++ b/fluxer_desktop/src/main/IpcHandlers.ts @@ -26,6 +26,7 @@ import { hasActiveDesktopTray, updateTrayRuntimeState, } from '@electron/main/DesktopTray'; +import {getDesktopUpdateState, observeDesktopUpdateState, startDesktopUpdate} from '@electron/main/DesktopUpdateGate'; import {DownloadChecksumError, downloadFile} from '@electron/main/FileDownloads'; import {getGatewayOriginRegistry} from '@electron/main/GatewayOriginRegistry'; import {retryBlockedGlobalShortcutHooks} from '@electron/main/GlobalShortcutsIpc'; @@ -40,11 +41,6 @@ import {setNativeStrings} from '@electron/main/MainI18n'; import {copyRemoteFileToClipboard, parseClipboardWriteFileOptions} from '@electron/main/MediaClipboard'; import {signalRendererLaunchConfirmed} from '@electron/main/ModuleBootHandoff'; import {ensureDesktopModule} from '@electron/main/ModuleOnDemand'; -import { - applyPendingModuleUpdate, - getPendingModuleUpdate, - observePendingModuleUpdate, -} from '@electron/main/ModuleUpdateGate'; import { createDesktopNativeGatewayTransport, type DesktopNativeGatewayTransport, @@ -101,7 +97,11 @@ import { import {flashWindowForAttention, stopFlashingWindow} from '@electron/main/WindowFlash'; import {setWindowsBadgeOverlay} from '@electron/main/WindowsBadge'; import {registerWindowsToastIpcHandlers} from '@electron/main/WindowsToast'; -import {DESKTOP_MODULE_CHANNELS, DESKTOP_MODULE_EVENTS} from '@fluxer/desktop_ipc/src/ModuleContract'; +import { + DESKTOP_MODULE_CHANNELS, + DESKTOP_UPDATE_CHANNELS, + DESKTOP_UPDATE_EVENTS, +} from '@fluxer/desktop_ipc/src/ModuleContract'; import {app, BrowserWindow, clipboard, dialog, ipcMain, powerMonitor, shell, systemPreferences} from 'electron'; import log from 'electron-log'; @@ -168,13 +168,13 @@ export function registerIpcHandlers(): void { requirePrivilegedRendererDocumentSender(event, DESKTOP_MODULE_CHANNELS.ensure); return ensureDesktopModule(moduleName); }); - ipcMain.handle(DESKTOP_MODULE_CHANNELS.pendingUpdate, (event) => { - requirePrivilegedRendererDocumentSender(event, DESKTOP_MODULE_CHANNELS.pendingUpdate); - return getPendingModuleUpdate(); + ipcMain.handle(DESKTOP_UPDATE_CHANNELS.state, (event) => { + requirePrivilegedRendererDocumentSender(event, DESKTOP_UPDATE_CHANNELS.state); + return getDesktopUpdateState(); }); - ipcMain.handle(DESKTOP_MODULE_CHANNELS.applyPendingUpdate, (event) => { - requirePrivilegedRendererDocumentSender(event, DESKTOP_MODULE_CHANNELS.applyPendingUpdate); - return applyPendingModuleUpdate(); + ipcMain.handle(DESKTOP_UPDATE_CHANNELS.start, (event) => { + requirePrivilegedRendererDocumentSender(event, DESKTOP_UPDATE_CHANNELS.start); + startDesktopUpdate(); }); ipcMain.handle(DESKTOP_MODULE_CHANNELS.confirmLaunch, (event) => { requirePrivilegedRendererDocumentSender(event, DESKTOP_MODULE_CHANNELS.confirmLaunch); @@ -189,12 +189,12 @@ export function registerIpcHandlers(): void { } signalRendererLaunchConfirmed(); }); - observePendingModuleUpdate((pending) => { + observeDesktopUpdateState((state) => { const mainWindow = getMainWindow(); if (mainWindow == null || mainWindow.isDestroyed()) { return; } - mainWindow.webContents.send(DESKTOP_MODULE_EVENTS.pendingUpdateChanged, pending); + mainWindow.webContents.send(DESKTOP_UPDATE_EVENTS.stateChanged, state); }); ipcMain.handle('get-desktop-info', () => getDesktopInfo()); ipcMain.handle('get-gpu-info', () => getGpuInfo()); diff --git a/fluxer_desktop/src/main/ModuleBootHandoff.ts b/fluxer_desktop/src/main/ModuleBootHandoff.ts index e66b647f8..295550abf 100644 --- a/fluxer_desktop/src/main/ModuleBootHandoff.ts +++ b/fluxer_desktop/src/main/ModuleBootHandoff.ts @@ -16,6 +16,8 @@ type SecondInstanceSink = (argv: Array) => void; type OpenUrlSink = (url: string) => void; +type MainWindowFactory = () => BrowserWindow; + interface CommittedModuleFileIndex { readonly root: string | null; readonly files: ReadonlyMap; @@ -30,6 +32,7 @@ interface ModuleBootHandoffState { mainWindow: BrowserWindow | null; liveMainWindow: BrowserWindow | null; onDemandModuleInstaller: OnDemandModuleInstaller | null; + mainWindowFactory: MainWindowFactory | null; secondInstanceForwarding: boolean; secondInstanceSink: SecondInstanceSink | null; readonly bufferedSecondInstances: Array>; @@ -49,6 +52,7 @@ const handoffState: ModuleBootHandoffState = { mainWindow: null, liveMainWindow: null, onDemandModuleInstaller: null, + mainWindowFactory: null, secondInstanceForwarding: false, secondInstanceSink: null, bufferedSecondInstances: [], @@ -165,6 +169,14 @@ export function getOnDemandModuleInstaller(): OnDemandModuleInstaller | null { return handoffState.onDemandModuleInstaller; } +export function setMainWindowFactory(factory: MainWindowFactory): void { + handoffState.mainWindowFactory = factory; +} + +export function getMainWindowFactory(): MainWindowFactory | null { + return handoffState.mainWindowFactory; +} + export function signalMainWindowCreated(window: BrowserWindow | null): void { handoffState.liveMainWindow = window; if (!handoffState.mainWindowSignalled) { diff --git a/fluxer_desktop/src/main/ModuleRendererReload.test.mjs b/fluxer_desktop/src/main/ModuleRendererReload.test.mjs deleted file mode 100644 index ef2cbdae1..000000000 --- a/fluxer_desktop/src/main/ModuleRendererReload.test.mjs +++ /dev/null @@ -1,132 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import assert from 'node:assert/strict'; -import {EventEmitter} from 'node:events'; -import {describe, test} from 'node:test'; -import './LocalAppTestSupport.test.mjs'; - -const {watchModuleRendererReload} = await import('@electron/main/ModuleRendererReload'); - -function createWatch({timeoutMs = 60_000} = {}) { - const target = new EventEmitter(); - const loaded = []; - const abandoned = []; - let announceAbandon = () => undefined; - const whenAbandoned = new Promise((resolve) => { - announceAbandon = resolve; - }); - const stop = watchModuleRendererReload({ - target, - observeLaunchConfirmed: (listener) => { - const handler = () => { - target.removeListener('launch-confirmed', handler); - listener(); - }; - target.on('launch-confirmed', handler); - return () => { - target.removeListener('launch-confirmed', handler); - }; - }, - timeoutMs, - onLoaded: () => { - loaded.push('loaded'); - }, - onAbandoned: (reason) => { - abandoned.push(reason); - announceAbandon(reason); - }, - }); - return {abandoned, loaded, stop, target, whenAbandoned}; -} - -function listenerCounts(target) { - return { - 'launch-confirmed': target.listenerCount('launch-confirmed'), - destroyed: target.listenerCount('destroyed'), - }; -} - -async function settle(milliseconds) { - await new Promise((resolve) => { - setTimeout(resolve, milliseconds); - }); -} - -async function waitForAbandon(watch) { - await Promise.race([watch.whenAbandoned, settle(1000)]); -} - -describe('watching a renderer reload for an activated module set', () => { - test('records the launch once the renderer confirms it booted', () => { - const watch = createWatch(); - - watch.target.emit('launch-confirmed'); - - assert.deepEqual(watch.loaded, ['loaded']); - assert.deepEqual(watch.abandoned, []); - assert.deepEqual(listenerCounts(watch.target), {'launch-confirmed': 0, destroyed: 0}); - }); - - test('a renderer destroyed after it loaded never turns the recorded launch into an abandoned one', () => { - const watch = createWatch(); - - watch.target.emit('launch-confirmed'); - watch.target.emit('destroyed'); - - assert.deepEqual(watch.loaded, ['loaded']); - assert.deepEqual(watch.abandoned, []); - }); - - test('releases the pending launch when the renderer is destroyed before it confirms the reload', () => { - const watch = createWatch(); - - watch.target.emit('destroyed'); - - assert.equal(watch.abandoned.length, 1); - assert.match(watch.abandoned[0], /destroyed/u); - assert.deepEqual(watch.loaded, []); - assert.deepEqual(listenerCounts(watch.target), {'launch-confirmed': 0, destroyed: 0}); - }); - - test('a launch confirmation that arrives from the wreckage of a destroyed renderer records nothing', () => { - const watch = createWatch(); - - watch.target.emit('destroyed'); - watch.target.emit('launch-confirmed'); - - assert.deepEqual(watch.loaded, []); - assert.equal(watch.abandoned.length, 1); - }); - - test('releases the pending launch when neither event ever arrives', async () => { - const watch = createWatch({timeoutMs: 5}); - - await waitForAbandon(watch); - - assert.equal(watch.abandoned.length, 1); - assert.deepEqual(watch.loaded, []); - }); - - test('a reload that lands after the deadline is still recorded rather than left as a failed boot attempt', async () => { - const watch = createWatch({timeoutMs: 5}); - - await waitForAbandon(watch); - watch.target.emit('launch-confirmed'); - - assert.deepEqual(watch.loaded, ['loaded']); - assert.equal(watch.abandoned.length, 1); - }); - - test('stopping the watch detaches every listener and disarms the deadline', async () => { - const watch = createWatch({timeoutMs: 5}); - - watch.stop(); - watch.target.emit('launch-confirmed'); - watch.target.emit('destroyed'); - await settle(30); - - assert.deepEqual(watch.loaded, []); - assert.deepEqual(watch.abandoned, []); - assert.deepEqual(listenerCounts(watch.target), {'launch-confirmed': 0, destroyed: 0}); - }); -}); diff --git a/fluxer_desktop/src/main/ModuleRendererReload.ts b/fluxer_desktop/src/main/ModuleRendererReload.ts deleted file mode 100644 index 95dbb32a4..000000000 --- a/fluxer_desktop/src/main/ModuleRendererReload.ts +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -const RENDERER_RELOAD_TIMEOUT_MS = 60_000; - -interface ModuleRendererReloadTarget { - once(event: 'destroyed', listener: () => void): void; - removeListener(event: 'destroyed', listener: () => void): void; -} - -interface ModuleRendererReloadWatch { - readonly target: ModuleRendererReloadTarget; - readonly observeLaunchConfirmed: (listener: () => void) => () => void; - readonly timeoutMs?: number; - readonly onLoaded: () => void; - readonly onAbandoned: (reason: string) => void; -} - -export function watchModuleRendererReload({ - target, - observeLaunchConfirmed, - timeoutMs = RENDERER_RELOAD_TIMEOUT_MS, - onLoaded, - onAbandoned, -}: ModuleRendererReloadWatch): () => void { - let abandoned = false; - let deadline: ReturnType | null = null; - let stopObservingConfirmation: (() => void) | null = null; - const clearDeadline = (): void => { - if (deadline != null) { - clearTimeout(deadline); - deadline = null; - } - }; - const stopConfirmation = (): void => { - const stop = stopObservingConfirmation; - stopObservingConfirmation = null; - stop?.(); - }; - const abandon = (reason: string): void => { - clearDeadline(); - if (abandoned) { - return; - } - abandoned = true; - onAbandoned(reason); - }; - const handleLoaded = (): void => { - clearDeadline(); - stopConfirmation(); - target.removeListener('destroyed', handleDestroyed); - onLoaded(); - }; - const handleDestroyed = (): void => { - stopConfirmation(); - abandon('the renderer was destroyed before it confirmed the reload'); - }; - stopObservingConfirmation = observeLaunchConfirmed(handleLoaded); - target.once('destroyed', handleDestroyed); - deadline = setTimeout(() => { - deadline = null; - abandon('the renderer did not confirm the reload in time'); - }, timeoutMs); - deadline.unref(); - return (): void => { - clearDeadline(); - stopConfirmation(); - target.removeListener('destroyed', handleDestroyed); - }; -} diff --git a/fluxer_desktop/src/main/ModuleStore.test.mjs b/fluxer_desktop/src/main/ModuleStore.test.mjs index 50daf463b..f358a71c1 100644 --- a/fluxer_desktop/src/main/ModuleStore.test.mjs +++ b/fluxer_desktop/src/main/ModuleStore.test.mjs @@ -215,6 +215,41 @@ describe('ModuleStore', () => { assert.equal(existsSync(path.join(userDataPath, 'desktop-app-store.sqlite3')), false); }); + test('says when the shell changed version since the store was last opened', async () => { + const userDataPath = createUserData(); + assert.equal((await openStore(userDataPath)).shellVersionChanged, false); + assert.equal((await openStore(userDataPath)).shellVersionChanged, false); + + const upgraded = await ModuleStore.open({ + root: getModuleStoreRoot(userDataPath), + shellVersion: '2026.824.1', + releaseChannel: RELEASE_CHANNEL, + }); + + assert.equal(upgraded.shellVersionChanged, true); + assert.notEqual( + readState(userDataPath).shell_version, + '2026.824.1', + 'a quit or crash before the modules converge has to force the update again on the next boot', + ); + const reopened = await ModuleStore.open({ + root: getModuleStoreRoot(userDataPath), + shellVersion: '2026.824.1', + releaseChannel: RELEASE_CHANNEL, + }); + assert.equal(reopened.shellVersionChanged, true); + + await reopened.recordShellVersionConverged(); + + assert.equal(readState(userDataPath).shell_version, '2026.824.1'); + const converged = await ModuleStore.open({ + root: getModuleStoreRoot(userDataPath), + shellVersion: '2026.824.1', + releaseChannel: RELEASE_CHANNEL, + }); + assert.equal(converged.shellVersionChanged, false); + }); + test('writes state.json atomically and leaves no temporary behind', async () => { const userDataPath = createUserData(); const store = await openStore(userDataPath); diff --git a/fluxer_desktop/src/main/ModuleStore.ts b/fluxer_desktop/src/main/ModuleStore.ts index 0bf02dd4a..36309591b 100644 --- a/fluxer_desktop/src/main/ModuleStore.ts +++ b/fluxer_desktop/src/main/ModuleStore.ts @@ -1178,6 +1178,7 @@ export class ModuleStore { public readonly incomingDownloadRoot: string; public readonly storeRoot: string; private state: ModuleStoreState; + private convergingShellVersion: string | null = null; private launchSucceeded = false; private activeLaunchAttempt: ModuleLaunchAttempt | null = null; private readonly installCoordinator = new ModuleInstallCoordinator(); @@ -1217,8 +1218,11 @@ export class ModuleStore { return store; } const store = new ModuleStore(resolved, stateFile.state); - if (stateFile.state.shell_version !== shellVersion || stateFile.state.release_channel !== releaseChannel) { - await store.writeState({...store.state, shell_version: shellVersion, release_channel: releaseChannel}); + if (stateFile.state.shell_version !== shellVersion) { + store.convergingShellVersion = shellVersion; + } + if (stateFile.state.release_channel !== releaseChannel) { + await store.writeState({...store.state, release_channel: releaseChannel}); } return store; } @@ -1265,6 +1269,22 @@ export class ModuleStore { } } + public get shellVersionChanged(): boolean { + return this.convergingShellVersion != null; + } + + public async recordShellVersionConverged(): Promise { + const shellVersion = this.convergingShellVersion; + if (shellVersion == null) { + return; + } + await this.withStateLock(async () => { + if (this.state.shell_version !== shellVersion) { + await this.writeState({...this.state, shell_version: shellVersion}); + } + }); + } + public getState(): ModuleStoreState { return this.state; } diff --git a/fluxer_desktop/src/main/ModuleUpdateGate.test.mjs b/fluxer_desktop/src/main/ModuleUpdateGate.test.mjs deleted file mode 100644 index 867bf2b90..000000000 --- a/fluxer_desktop/src/main/ModuleUpdateGate.test.mjs +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import assert from 'node:assert/strict'; -import {beforeEach, describe, test} from 'node:test'; -import {installElectronStub} from './LocalAppTestSupport.test.mjs'; - -installElectronStub(); - -const { - applyPendingModuleUpdate, - discardPendingModuleUpdate, - getPendingModuleUpdate, - observePendingModuleUpdate, - offerPendingModuleUpdate, -} = await import('@electron/main/ModuleUpdateGate'); - -function entry(modules, calls) { - return { - update: {modules}, - apply: () => calls.push(`apply:${modules.join(',')}`), - discard: () => calls.push(`discard:${modules.join(',')}`), - }; -} - -describe('ModuleUpdateGate', () => { - beforeEach(() => { - discardPendingModuleUpdate(); - }); - - test('there is no pending update until one is offered', () => { - assert.equal(getPendingModuleUpdate(), null); - assert.equal(applyPendingModuleUpdate(), false); - }); - - test('an offered update is readable and applies exactly once', () => { - const calls = []; - offerPendingModuleUpdate(entry(['fluxer_renderer'], calls)); - assert.deepEqual(getPendingModuleUpdate(), {modules: ['fluxer_renderer']}); - assert.equal(applyPendingModuleUpdate(), true); - assert.equal(applyPendingModuleUpdate(), false); - assert.deepEqual(calls, ['apply:fluxer_renderer']); - assert.equal(getPendingModuleUpdate(), null); - }); - - test('applying never discards the update it applied', () => { - const calls = []; - offerPendingModuleUpdate(entry(['fluxer_twemoji'], calls)); - applyPendingModuleUpdate(); - assert.deepEqual(calls, ['apply:fluxer_twemoji']); - }); - - test('discarding releases the pending update without applying it', () => { - const calls = []; - offerPendingModuleUpdate(entry(['fluxer_grammars'], calls)); - discardPendingModuleUpdate(); - assert.equal(getPendingModuleUpdate(), null); - assert.deepEqual(calls, ['discard:fluxer_grammars']); - }); - - test('a superseding offer discards the update it replaced', () => { - const calls = []; - offerPendingModuleUpdate(entry(['first'], calls)); - offerPendingModuleUpdate(entry(['second'], calls)); - assert.deepEqual(calls, ['discard:first']); - assert.deepEqual(getPendingModuleUpdate(), {modules: ['second']}); - applyPendingModuleUpdate(); - assert.deepEqual(calls, ['discard:first', 'apply:second']); - }); - - test('observers receive the current state on subscribe and on every change', () => { - const seen = []; - const stop = observePendingModuleUpdate((pending) => { - seen.push(pending == null ? null : pending.modules.join(',')); - }); - offerPendingModuleUpdate(entry(['fluxer_renderer'], [])); - applyPendingModuleUpdate(); - stop(); - offerPendingModuleUpdate(entry(['ignored'], [])); - assert.deepEqual(seen, [null, 'fluxer_renderer', null]); - }); - - test('a throwing observer does not stop the others', () => { - const seen = []; - observePendingModuleUpdate(() => { - throw new Error('this observer throws'); - }); - observePendingModuleUpdate((pending) => { - seen.push(pending == null ? null : pending.modules.join(',')); - }); - offerPendingModuleUpdate(entry(['fluxer_renderer'], [])); - assert.deepEqual(seen, [null, 'fluxer_renderer']); - }); -}); diff --git a/fluxer_desktop/src/main/ModuleUpdateGate.ts b/fluxer_desktop/src/main/ModuleUpdateGate.ts deleted file mode 100644 index e235d8483..000000000 --- a/fluxer_desktop/src/main/ModuleUpdateGate.ts +++ /dev/null @@ -1,80 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createChildLogger} from '@electron/common/Logger'; -import type {DesktopPendingModuleUpdate} from '@fluxer/desktop_ipc/src/ModuleContract'; - -const logger = createChildLogger('ModuleUpdateGate'); - -type PendingModuleUpdateListener = (pending: DesktopPendingModuleUpdate | null) => void; - -interface PendingModuleUpdateEntry { - readonly update: DesktopPendingModuleUpdate; - readonly apply: () => void; - readonly discard: () => void; -} - -interface ModuleUpdateGateState { - entry: PendingModuleUpdateEntry | null; - readonly listeners: Set; -} - -const gateState: ModuleUpdateGateState = { - entry: null, - listeners: new Set(), -}; - -function deliver(listener: PendingModuleUpdateListener, pending: DesktopPendingModuleUpdate | null): void { - try { - listener(pending); - } catch (error) { - logger.error('A pending module update listener threw', error); - } -} - -function notify(pending: DesktopPendingModuleUpdate | null): void { - for (const listener of Array.from(gateState.listeners)) { - deliver(listener, pending); - } -} - -export function offerPendingModuleUpdate(entry: PendingModuleUpdateEntry): void { - const superseded = gateState.entry; - gateState.entry = entry; - if (superseded != null) { - superseded.discard(); - } - notify(entry.update); -} - -export function getPendingModuleUpdate(): DesktopPendingModuleUpdate | null { - return gateState.entry?.update ?? null; -} - -export function applyPendingModuleUpdate(): boolean { - const entry = gateState.entry; - if (entry == null) { - return false; - } - gateState.entry = null; - notify(null); - entry.apply(); - return true; -} - -export function discardPendingModuleUpdate(): void { - const entry = gateState.entry; - if (entry == null) { - return; - } - gateState.entry = null; - notify(null); - entry.discard(); -} - -export function observePendingModuleUpdate(listener: PendingModuleUpdateListener): () => void { - gateState.listeners.add(listener); - deliver(listener, getPendingModuleUpdate()); - return () => { - gateState.listeners.delete(listener); - }; -} diff --git a/fluxer_desktop/src/main/ModuleUpdater.test.mjs b/fluxer_desktop/src/main/ModuleUpdater.test.mjs index 8f7e33555..933dd5b67 100644 --- a/fluxer_desktop/src/main/ModuleUpdater.test.mjs +++ b/fluxer_desktop/src/main/ModuleUpdater.test.mjs @@ -65,13 +65,20 @@ function installModuleOnDisk(storeRoot, moduleName, digest, entries) { function manifestBytes( modules, - {shellLatest = SHELL_VERSION, shellMinimum = SHELL_VERSION, required = null, bounds = {}, metadataVersion = 1} = {}, + { + shellLatest = SHELL_VERSION, + shellMinimum = SHELL_VERSION, + required = null, + bounds = {}, + metadataVersion = 1, + platform = PLATFORM, + } = {}, ) { return Buffer.from( JSON.stringify({ manifest_version: 1, release_channel: RELEASE_CHANNEL, - platform: PLATFORM, + platform, arch: ARCH, build_version: SHELL_VERSION, pub_date: '2026-08-23T00:00:00.000Z', @@ -111,10 +118,13 @@ function createUpdater(store, modules, options = {}) { store, shellVersion: SHELL_VERSION, releaseChannel: RELEASE_CHANNEL, - platform: PLATFORM, + platform: options.platform ?? PLATFORM, arch: ARCH, packageOrigin: PACKAGE_ORIGIN, hasOfflineRenderer: false, + forceStartupUpdate: options.forceStartupUpdate ?? false, + selfUpdateShellFirst: options.selfUpdateShellFirst, + onState: options.onState, fetch: async (url, init) => { requests.push(url); const response = options.respond == null ? null : await options.respond(url, init); @@ -218,6 +228,24 @@ function mergeDuringInstall(store, entries) { }); } +function recordInstalls(store, installs) { + return new Proxy(store, { + get(target, property) { + const value = Reflect.get(target, property, target); + if (typeof value !== 'function') { + return value; + } + if (property !== 'installModule') { + return value.bind(target); + } + return async (request) => { + installs.push(request.module); + return await value.call(target, request); + }; + }, + }); +} + function unreachableFeed() { return async () => { throw new Error('module feed is unreachable'); @@ -451,37 +479,86 @@ describe('ModuleUpdater.run', () => { }); }); -describe('ModuleUpdater.refreshInstalledModules', () => { - test('an activated set that never reaches the renderer strands the poll until the launch is abandoned', async () => { +describe('ModuleUpdater checks without downloading and installs only when asked', () => { + async function storeOnRenderer() { const userDataPath = createUserData(); const storeRoot = getModuleStoreRoot(userDataPath); const store = await openStore(userDataPath); installModuleOnDisk(storeRoot, 'fluxer_renderer', RENDERER_SHA, [['index.js', 'renderer']]); await store.commit({fluxer_renderer: RENDERER_SHA}); - installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); - seedCachedPackage(store, NEXT_RENDERER_SHA); - const {updater, requests} = createUpdater(store, {fluxer_renderer: NEXT_RENDERER_SHA}); + return {store, storeRoot}; + } - const activated = await updater.refreshInstalledModules(); - assert.equal(activated.status, 'activated'); - assert.deepEqual(activated.modules, ['fluxer_renderer']); - assert.equal(requests.length, 1); + test('a check reads only the manifest and leaves the committed set, the floor and the boot attempt alone', async () => { + const {store} = await storeOnRenderer(); + const before = store.getState(); + const installs = []; + const {updater, requests} = createUpdater(recordInstalls(store, installs), {fluxer_renderer: NEXT_RENDERER_SHA}); - assert.equal((await updater.refreshInstalledModules()).status, 'awaiting-renderer'); - assert.equal(requests.length, 1, 'a pending launch short circuits the poll before it even reaches the manifest'); + const check = await updater.checkForUpdate(); - updater.abandonPendingLaunch(activated.launchAttempt); - - assert.equal((await updater.refreshInstalledModules()).status, 'unchanged'); - assert.equal(requests.length, 2, 'abandoning the launch the renderer never took must let the poll run again'); + assert.deepEqual(check, {shellLatestVersion: SHELL_VERSION, shellNewer: false, modulesChanged: true}); + assert.deepEqual( + requests.map((url) => String(url).split('/').pop()), + ['modules.json'], + ); + assert.deepEqual(installs, []); + assert.deepEqual(store.getCommitted(), {fluxer_renderer: RENDERER_SHA}); + assert.equal(store.getState().boot_attempt, before.boot_attempt); + assert.deepEqual(store.getState().floor, before.floor); + assert.equal(store.getState().last_manifest_fetch, before.last_manifest_fetch); }); - test('keeps a module installed on demand while the poll was downloading', async () => { - const userDataPath = createUserData(); - const storeRoot = getModuleStoreRoot(userDataPath); - const store = await openStore(userDataPath); - installModuleOnDisk(storeRoot, 'fluxer_renderer', RENDERER_SHA, [['index.js', 'renderer']]); - await store.commit({fluxer_renderer: RENDERER_SHA}); + test('a check reports a newer shell and an unchanged module set', async () => { + const {store} = await storeOnRenderer(); + const {updater} = createUpdater(store, {fluxer_renderer: RENDERER_SHA}, {shellLatest: '2026.824.1'}); + + assert.deepEqual(await updater.checkForUpdate(), { + shellLatestVersion: '2026.824.1', + shellNewer: true, + modulesChanged: false, + }); + }); + + test('a module that needs the next shell reads as a shell update, not as a module update', async () => { + const {store} = await storeOnRenderer(); + const {updater} = createUpdater( + store, + {fluxer_renderer: NEXT_RENDERER_SHA}, + {shellLatest: '2026.824.1', bounds: {fluxer_renderer: {minimum_shell_version: '2026.824.1'}}}, + ); + + assert.deepEqual(await updater.checkForUpdate(), { + shellLatestVersion: '2026.824.1', + shellNewer: true, + modulesChanged: false, + }); + }); + + test('the click installs the new set, reports progress and arms a launch attempt for the next window', async () => { + const {store, storeRoot} = await storeOnRenderer(); + installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); + seedCachedPackage(store, NEXT_RENDERER_SHA); + const statuses = []; + const {updater} = createUpdater( + store, + {fluxer_renderer: NEXT_RENDERER_SHA}, + {onState: (state) => statuses.push(state.status)}, + ); + + const attempt = await updater.installPending(); + + assert.deepEqual(attempt?.committed, {fluxer_renderer: NEXT_RENDERER_SHA}); + assert.deepEqual(store.getCommitted(), {fluxer_renderer: NEXT_RENDERER_SHA}); + assert.equal(store.getState().boot_attempt, 1); + assert.equal(statuses[0], 'checking'); + assert.equal(statuses.at(-1), 'verifying'); + await updater.markLaunchSucceeded(attempt); + assert.equal(store.getState().boot_attempt, 0); + }); + + test('the click keeps a module installed on demand while it was downloading', async () => { + const {store, storeRoot} = await storeOnRenderer(); installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); installModuleOnDisk(storeRoot, 'fluxer_overlay', OVERLAY_SHA, [['index.js', 'overlay']]); seedCachedPackage(store, NEXT_RENDERER_SHA); @@ -489,35 +566,27 @@ describe('ModuleUpdater.refreshInstalledModules', () => { fluxer_renderer: NEXT_RENDERER_SHA, }); - const activated = await updater.refreshInstalledModules(); + const attempt = await updater.installPending(); - assert.equal(activated.status, 'activated'); - assert.deepEqual(activated.launchAttempt.committed, { - fluxer_overlay: OVERLAY_SHA, - fluxer_renderer: NEXT_RENDERER_SHA, - }); + assert.deepEqual(attempt?.committed, {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: NEXT_RENDERER_SHA}); assert.deepEqual(store.getCommitted(), {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: NEXT_RENDERER_SHA}); }); - test('abandoning an attempt that is not the pending one leaves the pending launch alone', async () => { - const userDataPath = createUserData(); - const storeRoot = getModuleStoreRoot(userDataPath); - const store = await openStore(userDataPath); - installModuleOnDisk(storeRoot, 'fluxer_renderer', RENDERER_SHA, [['index.js', 'renderer']]); - await store.commit({fluxer_renderer: RENDERER_SHA}); - installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); - seedCachedPackage(store, NEXT_RENDERER_SHA); - const {updater} = createUpdater(store, {fluxer_renderer: NEXT_RENDERER_SHA}); + test('the click installs nothing when the manifest now needs a newer shell', async () => { + const {store} = await storeOnRenderer(); + const installs = []; + const {updater} = createUpdater( + recordInstalls(store, installs), + {fluxer_renderer: NEXT_RENDERER_SHA}, + {shellLatest: '2026.824.1', shellMinimum: '2026.824.1'}, + ); - const activated = await updater.refreshInstalledModules(); - assert.equal(activated.status, 'activated'); - - updater.abandonPendingLaunch({...activated.launchAttempt}); - - assert.equal((await updater.refreshInstalledModules()).status, 'awaiting-renderer'); + assert.equal(await updater.installPending(), null); + assert.deepEqual(installs, []); + assert.deepEqual(store.getCommitted(), {fluxer_renderer: RENDERER_SHA}); }); - test('a module the manifest advertises but the CDN never got does not strand the rest of the poll', async () => { + test('a module the manifest advertises but the CDN never got does not strand the rest of the update', async () => { const userDataPath = createUserData(); const storeRoot = getModuleStoreRoot(userDataPath); const store = await openStore(userDataPath); @@ -536,11 +605,9 @@ describe('ModuleUpdater.refreshInstalledModules', () => { }, ); - const activated = await updater.refreshInstalledModules(); + const attempt = await updater.installPending(); - assert.equal(activated.status, 'activated'); - assert.deepEqual(activated.modules, ['fluxer_renderer']); - assert.deepEqual(store.getCommitted(), {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: NEXT_RENDERER_SHA}); + assert.deepEqual(attempt?.committed, {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: NEXT_RENDERER_SHA}); assert.deepEqual( [...new Set(reports.filter((report) => report.type === 'package-missing').map((report) => report.module))], ['fluxer_overlay'], @@ -566,14 +633,12 @@ describe('ModuleUpdater.refreshInstalledModules', () => { }, ); - const activated = await updater.refreshInstalledModules(); + await updater.installPending(); - assert.equal(activated.status, 'activated'); - assert.deepEqual(activated.modules, ['fluxer_renderer']); assert.deepEqual(store.getCommitted(), {fluxer_renderer: NEXT_RENDERER_SHA}); }); - test('a package failure with no deterministic cause still abandons the whole poll', async () => { + test('a package failure with no deterministic cause rejects the click and keeps the installed set', async () => { const userDataPath = createUserData(); const storeRoot = getModuleStoreRoot(userDataPath); const store = await openStore(userDataPath); @@ -592,12 +657,12 @@ describe('ModuleUpdater.refreshInstalledModules', () => { }, ); - await assert.rejects(updater.refreshInstalledModules(), /failed to download module fluxer_renderer/u); + await assert.rejects(updater.installPending(), /failed to download module fluxer_renderer/u); assert.deepEqual(store.getCommitted(), {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: RENDERER_SHA}); }); - test('a poll that runs out of disk space aborts instead of activating the part that fit', async () => { + test('a click that runs out of disk space aborts instead of activating the part that fit', async () => { const userDataPath = createUserData(); const storeRoot = getModuleStoreRoot(userDataPath); const store = await openStore(userDataPath); @@ -613,10 +678,100 @@ describe('ModuleUpdater.refreshInstalledModules', () => { {required: ['fluxer_renderer']}, ); - await assert.rejects(updater.refreshInstalledModules(), /no space left on device/u); + await assert.rejects(updater.installPending(), /no space left on device/u); assert.deepEqual(store.getCommitted(), {fluxer_overlay: OVERLAY_SHA, fluxer_renderer: RENDERER_SHA}); }); + + test('a boot with a newer shell updates the shell before downloading any module', async () => { + const {store, storeRoot} = await storeOnRenderer(); + installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); + seedCachedPackage(store, NEXT_RENDERER_SHA); + const steps = []; + const {updater} = createUpdater( + recordInstalls(store, steps), + {fluxer_renderer: NEXT_RENDERER_SHA}, + { + shellLatest: '2026.824.1', + forceStartupUpdate: true, + selfUpdateShellFirst: async (latestVersion) => { + steps.push(`shell ${latestVersion}`); + }, + }, + ); + + const outcome = await updater.run(); + + assert.equal(outcome.status, 'launching'); + assert.deepEqual(steps, ['shell 2026.824.1', 'fluxer_renderer']); + }); + + test('a boot with the newest shell never runs the shell update', async () => { + const {store, storeRoot} = await storeOnRenderer(); + installModuleOnDisk(storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); + seedCachedPackage(store, NEXT_RENDERER_SHA); + const steps = []; + const {updater} = createUpdater( + recordInstalls(store, steps), + {fluxer_renderer: NEXT_RENDERER_SHA}, + { + forceStartupUpdate: true, + selfUpdateShellFirst: async (latestVersion) => { + steps.push(`shell ${latestVersion}`); + }, + }, + ); + + await updater.run(); + + assert.deepEqual(steps, ['fluxer_renderer']); + }); + + test('a Linux boot right after a shell update fetches the modules instead of launching the old set', async () => { + const optional = await storeOnRenderer(); + const quiet = createUpdater(optional.store, {fluxer_renderer: NEXT_RENDERER_SHA}, {platform: 'linux'}); + const skipped = await quiet.updater.run(); + assert.equal(skipped.status, 'launching'); + assert.deepEqual(skipped.committed, {fluxer_renderer: RENDERER_SHA}); + assert.deepEqual(quiet.requests, []); + + const forced = await storeOnRenderer(); + installModuleOnDisk(forced.storeRoot, 'fluxer_renderer', NEXT_RENDERER_SHA, [['index.js', 'renderer-two']]); + seedCachedPackage(forced.store, NEXT_RENDERER_SHA); + const {updater, requests} = createUpdater( + forced.store, + {fluxer_renderer: NEXT_RENDERER_SHA}, + {platform: 'linux', forceStartupUpdate: true}, + ); + const outcome = await updater.run(); + + assert.equal(outcome.status, 'launching'); + assert.deepEqual(outcome.committed, {fluxer_renderer: NEXT_RENDERER_SHA}); + assert.ok(requests.some((url) => String(url).endsWith('/modules.json'))); + }); + + test('a Linux boot forced only by a shell change launches the installed set at once when the download fails', async () => { + const {store} = await storeOnRenderer(); + const {updater, sleeps} = createUpdater( + store, + {fluxer_renderer: NEXT_RENDERER_SHA}, + { + platform: 'linux', + forceStartupUpdate: true, + respond: async (url) => (String(url).endsWith('package.br') ? new Response('', {status: 503}) : null), + }, + ); + + const outcome = await updater.run(); + + assert.equal(outcome.status, 'unreachable-launch'); + assert.deepEqual(outcome.committed, {fluxer_renderer: RENDERER_SHA}); + assert.deepEqual( + sleeps, + [], + 'a package or deb upgrade never waits through the backoff for a module it can live without', + ); + }); }); describe('ModuleUpdater explains why a launch is blocked', () => { diff --git a/fluxer_desktop/src/main/ModuleUpdater.ts b/fluxer_desktop/src/main/ModuleUpdater.ts index e1ccc2ae3..2380b8b41 100644 --- a/fluxer_desktop/src/main/ModuleUpdater.ts +++ b/fluxer_desktop/src/main/ModuleUpdater.ts @@ -2,6 +2,7 @@ import {createHash} from 'node:crypto'; import {BUILD_CHANNEL} from '@electron/common/BuildChannel'; +import type {DesktopUpdateProbe} from '@electron/main/DesktopUpdateRun'; import {ModuleDownloadRate} from '@electron/main/ModuleDownloadRate'; import { blockingModuleNames, @@ -44,7 +45,7 @@ import { ModuleUpdatePlanner, ModuleUpdaterBlockReason, } from '@electron/main/ModuleUpdatePlanner'; -import {compareModuleVersions, parseModuleVersion} from '@electron/main/ModuleVersion'; +import {compareModuleVersions, type ModuleVersion, parseModuleVersion} from '@electron/main/ModuleVersion'; import {resolveDesktopPackageOrigin} from '@electron/main/ShellDownloadFormats'; import type {DesktopModuleEnsureResult} from '@fluxer/desktop_ipc/src/ModuleContract'; import {DesktopModuleEnsureStatus} from '@fluxer/desktop_ipc/src/ModuleContract'; @@ -71,21 +72,6 @@ export const ModuleUpdaterStatus = Object.freeze({ export type ModuleUpdaterStatus = (typeof ModuleUpdaterStatus)[keyof typeof ModuleUpdaterStatus]; -const ModuleRefreshStatus = Object.freeze({ - UNCHANGED: 'unchanged', - AWAITING_RENDERER: 'awaiting-renderer', - ACTIVATED: 'activated', -} as const); - -type ModuleRefreshResult = - | {readonly status: typeof ModuleRefreshStatus.UNCHANGED} - | {readonly status: typeof ModuleRefreshStatus.AWAITING_RENDERER} - | { - readonly status: typeof ModuleRefreshStatus.ACTIVATED; - readonly modules: ReadonlyArray; - readonly launchAttempt: ModuleLaunchAttempt; - }; - const ModuleUpdaterReportType = Object.freeze({ NETWORK_ERROR: 'network-error', MANIFEST_ROLLBACK: 'manifest-rollback', @@ -277,6 +263,8 @@ interface ModuleUpdaterOptions { readonly arch?: NodeJS.Architecture; readonly packageOrigin?: string; readonly hasOfflineRenderer?: boolean; + readonly forceStartupUpdate?: boolean; + readonly selfUpdateShellFirst?: (latestVersion: string, requiredSecurityUpdate: boolean) => Promise; readonly onState?: (state: ModuleUpdaterSplashState) => void; readonly report?: (report: ModuleUpdaterReport) => void; readonly fetch: typeof globalThis.fetch; @@ -292,6 +280,13 @@ function isRejectedManifestError(error: unknown): boolean { export class ModuleUpdater { public readonly store: ModuleStore; private readonly platform: string; + private readonly shellVersion: ModuleVersion; + private readonly hasOfflineRenderer: boolean; + private readonly forceStartupUpdate: boolean; + private readonly selfUpdateShellFirst: + | ((latestVersion: string, requiredSecurityUpdate: boolean) => Promise) + | null; + private readonly shellFirstAttempted = new Set(); private readonly manifestFeed: ModuleManifestFeedIdentity; private readonly manifestRepository: ModuleManifestRepository; private readonly planner: ModuleUpdatePlanner; @@ -311,18 +306,20 @@ export class ModuleUpdater { private startupUpdatePolicy: ModuleStartupUpdatePolicy; private manifestObservationTail: Promise = Promise.resolve(); private recordedManifestSha256: string | null = null; - private pendingRendererLaunch: ModuleLaunchAttempt | null = null; public constructor(options: ModuleUpdaterOptions) { this.store = options.store; - const shellVersion = parseModuleVersion(options.shellVersion, 'desktop shell version'); + this.shellVersion = parseModuleVersion(options.shellVersion, 'desktop shell version'); + this.hasOfflineRenderer = options.hasOfflineRenderer ?? false; + this.forceStartupUpdate = options.forceStartupUpdate ?? false; + this.selfUpdateShellFirst = options.selfUpdateShellFirst ?? null; const releaseChannel = options.releaseChannel ?? BUILD_CHANNEL; this.platform = options.platform ?? process.platform; const arch = resolveDesktopModuleArchitecture(options.arch ?? process.arch); this.manifestFeed = {releaseChannel, platform: this.platform, arch}; const packageOrigin = (options.packageOrigin ?? resolveDesktopPackageOrigin()).replace(/\/+$/u, ''); this.packageOrigin = packageOrigin; - this.planner = new ModuleUpdatePlanner(this.store, shellVersion, options.hasOfflineRenderer ?? false); + this.planner = new ModuleUpdatePlanner(this.store, this.shellVersion, this.hasOfflineRenderer); this.onState = options.onState ?? (() => {}); this.reporter = options.report ?? (() => {}); this.sleep = options.sleep ?? defaultSleep; @@ -427,6 +424,9 @@ export class ModuleUpdater { if (!startupUpdateRequired) { return await this.launchIfAtFloor(); } + if (this.planner.shellUpdateRequired(manifest) && (await this.onlyForcedByShellChange())) { + return await this.launchIfAtFloor(); + } if (this.planner.shellUpdateRequired(manifest)) { this.emit(ModuleUpdaterStatus.BLOCKED_SHELL_UPDATE); return { @@ -436,6 +436,9 @@ export class ModuleUpdater { requiredSecurityUpdate: this.isSecurityUpdateRequired(), }; } + if (await this.updateShellFirst(manifest)) { + this.emit(ModuleUpdaterStatus.CHECKING); + } const plan = await this.planner.plan(manifest); if (plan.items.length === 0) { await this.commitIfChanged(plan.base); @@ -469,14 +472,15 @@ export class ModuleUpdater { backoff.reset(); } const delayMs = backoff.fail(); - const exhausted = backoff.reachedCeiling || isRejectedManifestError(error); + const exhausted = + backoff.reachedCeiling || isRejectedManifestError(error) || (await this.onlyForcedByShellChange()); if (exhausted || !fetched) { const decision = await this.planner.evaluateUnreachableLaunch( this.isStartupUpdateEnforced(), this.isSecurityUpdateRequired(), ); if (decision.kind === ModuleUnreachableLaunchDecision.LAUNCH) { - const launchAttempt = await this.recordRendererLaunchAttempt(); + const launchAttempt = await this.store.recordLaunchAttempt(); this.emit(ModuleUpdaterStatus.UNREACHABLE_LAUNCH); return { status: ModuleUpdaterStatus.UNREACHABLE_LAUNCH, @@ -562,24 +566,67 @@ export class ModuleUpdater { return this.observeManifest(await this.manifestRepository.resolveMemoizedDocument()); } - public async refreshInstalledModules(): Promise { - if (this.pendingRendererLaunch != null) { - return {status: ModuleRefreshStatus.AWAITING_RENDERER}; + private async updateShellFirst(manifest: DesktopModuleUpdateManifest): Promise { + const latestVersion = manifest.shell.latestVersion.source; + if ( + this.selfUpdateShellFirst == null || + compareModuleVersions(manifest.shell.latestVersion, this.shellVersion) <= 0 || + this.shellFirstAttempted.has(latestVersion) + ) { + return false; } - this.manifestRepository.clearMemo(); - const manifest = await this.observeManifest(await this.manifestRepository.fetchLatest()); + this.shellFirstAttempted.add(latestVersion); + await this.selfUpdateShellFirst(latestVersion, this.isSecurityUpdateRequired()); + return true; + } + + public async checkForUpdate(): Promise { + const manifest = await this.fetchFreshManifest(ModuleManifestObservationMode.READ_ONLY); + const shellLatestVersion = manifest.shell.latestVersion.source; + const shellNewer = compareModuleVersions(manifest.shell.latestVersion, this.shellVersion) > 0; if (this.planner.shellUpdateRequired(manifest)) { - return {status: ModuleRefreshStatus.UNCHANGED}; + return {shellLatestVersion, shellNewer, modulesChanged: false}; } + return { + shellLatestVersion, + shellNewer, + modulesChanged: (await this.collectPendingItems(manifest, this.planner)).length > 0, + }; + } + + public async installPending(): Promise { + this.emit(ModuleUpdaterStatus.CHECKING); + this.downloadRate.reset(); + const manifest = await this.fetchFreshManifest(ModuleManifestObservationMode.RECORD_FETCH); + if (this.planner.shellUpdateRequired(manifest)) { + return null; + } + const items = await this.collectPendingItems(manifest, this.planner); + const {installed, unresolved} = await this.installItems(items); + if (Object.keys(installed).length > 0) { + this.emit(ModuleUpdaterStatus.VERIFYING, {current: items.length, total: items.length}); + } + return await this.store.activateMergedForRendererReload(installed, unresolved); + } + + private async fetchFreshManifest(mode: ModuleManifestObservationMode): Promise { + this.manifestRepository.clearMemo(); + return await this.observeManifest(await this.manifestRepository.fetchLatest(), mode); + } + + private async collectPendingItems( + manifest: DesktopModuleUpdateManifest, + planner: ModuleUpdatePlanner, + ): Promise> { const committed = this.store.getCommitted(); const names = new Set([...Object.keys(committed), ...blockingModuleNames(manifest)]); const wanted: Array = []; for (const moduleName of Array.from(names).sort()) { const entry = manifest.modules[moduleName]; - if (entry == null || !this.planner.isShellCompatible(entry)) { + if (entry == null || !planner.isShellCompatible(entry)) { continue; } - if (committed[moduleName] === entry.sha256 && (await this.planner.isInstalled(moduleName, entry.sha256))) { + if (committed[moduleName] === entry.sha256 && (await planner.isInstalled(moduleName, entry.sha256))) { continue; } if (this.store.isRejected(moduleName, entry.sha256)) { @@ -587,15 +634,19 @@ export class ModuleUpdater { } wanted.push({module: moduleName, entry, requirement: ModulePlanItemRequirement.OPTIONAL}); } - if (wanted.length === 0) { - return {status: ModuleRefreshStatus.UNCHANGED}; - } + return wanted; + } + + private async installItems( + items: ReadonlyArray, + ): Promise<{readonly installed: Readonly>; readonly unresolved: ReadonlySet}> { + const committed = this.store.getCommitted(); const installed: Record = {}; const unresolved = new Set(); - for (let index = 0; index < wanted.length; index += 1) { - const item = wanted[index]; + for (let index = 0; index < items.length; index += 1) { + const item = items[index]; try { - await this.packageInstaller.install(item, index + 1, wanted.length); + await this.packageInstaller.install(item, index + 1, items.length); } catch (error) { if (isStorageFullError(error) || !isDeterministicPackageFailure(error)) { throw error; @@ -614,34 +665,16 @@ export class ModuleUpdater { } installed[item.module] = item.entry.sha256; } - const activated = await this.store.activateMergedForRendererReload(installed, unresolved); - if (activated == null) { - return {status: ModuleRefreshStatus.UNCHANGED}; - } - this.pendingRendererLaunch = activated; - return { - status: ModuleRefreshStatus.ACTIVATED, - modules: Object.keys(installed), - launchAttempt: activated, - }; + return {installed, unresolved}; } public async markLaunchSucceeded(attempt: ModuleLaunchAttempt): Promise { if (!(await this.store.markLaunchAttemptSucceeded(attempt))) { return; } - if (this.pendingRendererLaunch === attempt) { - this.pendingRendererLaunch = null; - } await this.store.collectGarbage({now: this.now()}); } - public abandonPendingLaunch(attempt: ModuleLaunchAttempt): void { - if (this.pendingRendererLaunch === attempt) { - this.pendingRendererLaunch = null; - } - } - public async canLaunchWhileUnreachable(): Promise { return ( (await this.planner.evaluateUnreachableLaunch(this.isStartupUpdateEnforced(), this.isSecurityUpdateRequired())) @@ -672,7 +705,8 @@ export class ModuleUpdater { 'no module is committed and this build carries no offline renderer', ); } - const launchAttempt = await this.recordRendererLaunchAttempt(); + await this.store.recordShellVersionConverged(); + const launchAttempt = await this.store.recordLaunchAttempt(); this.emit(ModuleUpdaterStatus.LAUNCHING); return { status: ModuleUpdaterStatus.LAUNCHING, @@ -705,7 +739,7 @@ export class ModuleUpdater { message: `launching the reverted set below the persisted floor for ${belowFloor.join(', ')}, because recovering a bricked install outranks enforcing the forced update`, }); } - const launchAttempt = await this.recordRendererLaunchAttempt(); + const launchAttempt = await this.store.recordLaunchAttempt(); this.emit(ModuleUpdaterStatus.LAUNCHING); return { status: ModuleUpdaterStatus.LAUNCHING, @@ -844,8 +878,16 @@ export class ModuleUpdater { return observed; } + private async onlyForcedByShellChange(): Promise { + return ( + this.forceStartupUpdate && !this.isStartupUpdateEnforced() && (await this.planner.canLaunchCommittedModules()) + ); + } + private async startupUpdateRequired(): Promise { - return this.isStartupUpdateEnforced() || !(await this.planner.canLaunchCommittedModules()); + return ( + this.forceStartupUpdate || this.isStartupUpdateEnforced() || !(await this.planner.canLaunchCommittedModules()) + ); } private async execute(plan: ModulePlan): Promise { @@ -884,15 +926,6 @@ export class ModuleUpdater { return {desired, installed, blocked, blockedError}; } - private async recordRendererLaunchAttempt(): Promise { - if (this.pendingRendererLaunch != null) { - throw new Error('cannot begin a module renderer launch while another launch is awaiting readiness'); - } - const launchAttempt = await this.store.recordLaunchAttempt(); - this.pendingRendererLaunch = launchAttempt; - return launchAttempt; - } - private async persistManifest( document: ModuleManifestDocument, manifest: DesktopModuleUpdateManifest, diff --git a/fluxer_desktop/src/main/ShellSelfUpdate.test.mjs b/fluxer_desktop/src/main/ShellSelfUpdate.test.mjs index 3d32eee21..1c1d660dc 100644 --- a/fluxer_desktop/src/main/ShellSelfUpdate.test.mjs +++ b/fluxer_desktop/src/main/ShellSelfUpdate.test.mjs @@ -129,7 +129,7 @@ class FakeAutoUpdater { } const autoUpdater = new FakeAutoUpdater(); -const exitCodes = []; +const quits = []; const userDataPath = mkdtempSync(path.join(tmpdir(), 'fluxer-shell-self-update-')); const applyStatePath = path.join(userDataPath, 'update-apply-state.json'); process.on('exit', () => { @@ -140,8 +140,8 @@ installElectronStub({ app: { getVersion: () => '2026.800.0', getPath: () => userDataPath, - exit: (code) => { - exitCodes.push(code); + quit: () => { + quits.push('quit'); }, }, autoUpdater, @@ -247,7 +247,7 @@ beforeEach(() => { autoUpdater.installs = 0; autoUpdater.checkError = null; autoUpdater.installError = null; - exitCodes.length = 0; + quits.length = 0; }); describe('velopack self update', () => { @@ -322,7 +322,11 @@ describe('velopack self update', () => { 'downloadUpdateAsync', 'waitExitThenApplyUpdate:v2:true:true', ]); - assert.deepEqual(exitCodes, [0]); + assert.deepEqual( + quits, + ['quit'], + 'the restart goes through app.quit so the will-quit cleanup checkpoints the app store', + ); }, ); @@ -346,7 +350,7 @@ describe('velopack self update', () => { }); assert.deepEqual(calls, []); assert.deepEqual(velopack.calls, []); - assert.deepEqual(exitCodes, []); + assert.deepEqual(quits, []); }); selfUpdateTest('an apply that landed is forgotten and the next one is recorded', async ({start, stillPending}) => { @@ -370,7 +374,7 @@ describe('velopack self update', () => { reason: 'install-failed', detail: 'the updater binary is missing', }); - assert.deepEqual(exitCodes, []); + assert.deepEqual(quits, []); }, ); diff --git a/fluxer_desktop/src/main/ShellSelfUpdate.ts b/fluxer_desktop/src/main/ShellSelfUpdate.ts index af64c03d9..277e847f0 100644 --- a/fluxer_desktop/src/main/ShellSelfUpdate.ts +++ b/fluxer_desktop/src/main/ShellSelfUpdate.ts @@ -143,9 +143,7 @@ async function runVelopackSelfUpdate(control: SelfUpdateControl, hooks: ShellSel control.settle({reason: 'install-failed', detail: errorDetail(error)}); return; } - setImmediate(() => { - app.exit(0); - }); + app.quit(); } async function fetchPublishedAppImage(): Promise<{version: string; sha256: string | null}> { @@ -222,9 +220,7 @@ async function runAppImageSelfUpdate( return; } relaunchStableLaunchPath(); - setImmediate(() => { - app.exit(0); - }); + app.quit(); } function runElectronSelfUpdate(control: SelfUpdateControl, hooks: ShellSelfUpdateHooks): void { diff --git a/fluxer_desktop/src/main/Spellcheck.ts b/fluxer_desktop/src/main/Spellcheck.ts index 7cceaf4fa..874af213e 100644 --- a/fluxer_desktop/src/main/Spellcheck.ts +++ b/fluxer_desktop/src/main/Spellcheck.ts @@ -1041,6 +1041,8 @@ const shouldHandleContextMenu = (webContents: WebContents, params: Electron.Cont const isTextLike = inputFieldType === 'plainText' || inputFieldType === 'textarea' || inputFieldType === undefined; return Boolean((targetRecent && target.isTextarea) || isTextLike); }; +let rendererSpellcheckHandlersRegistered = false; + export const registerSpellcheck = (webContents: WebContents): void => { ensureSharedIpc(); if (!launchModeLogged) { @@ -1074,7 +1076,8 @@ export const registerSpellcheck = (webContents: WebContents): void => { webContents.on('did-finish-load', () => { void applyStateToWebContents(webContents, sessionState.get(session) ?? state, {broadcastResolved: true}); }); - if (!ipcMain.eventNames().includes('spellcheck-get-state')) { + if (!rendererSpellcheckHandlersRegistered) { + rendererSpellcheckHandlersRegistered = true; ipcMain.handle('spellcheck-get-state', (event) => { const targetSession = event.sender.session; const next = applyLaunchSpellcheckMode(sessionState.get(targetSession) ?? {...defaultState}); diff --git a/fluxer_desktop/src/main/SplashWindow.test.mjs b/fluxer_desktop/src/main/SplashWindow.test.mjs index d7e14c59b..f1ef5e212 100644 --- a/fluxer_desktop/src/main/SplashWindow.test.mjs +++ b/fluxer_desktop/src/main/SplashWindow.test.mjs @@ -58,7 +58,10 @@ class FakeWebContents { } class FakeBrowserWindow { + static last = null; + constructor(options) { + FakeBrowserWindow.last = this; this.options = options; this.webContents = new FakeWebContents(); this.listeners = new Map(); @@ -393,6 +396,25 @@ describe('splash window configuration', () => { assert.equal(window.shownInactive, 1); }); + test('a preloaded splash loads hidden, stays hidden once ready, and reveals on demand', async () => { + const {preloadSplashWindow, revealPreloadedSplashWindow} = await loadSplashWindow('preload'); + + const {timers} = withPlatformTimers('darwin', () => preloadSplashWindow()); + const splash = FakeBrowserWindow.last; + assert.equal(timers.length, 0); + assert.equal(splash.visible, false); + assert.equal(splash.skipTaskbar, true); + assert.equal(revealPreloadedSplashWindow(), null); + + emitIpc('desktop-splash:ready', {sender: splash.webContents}); + assert.equal(splash.visible, false); + + assert.equal(revealPreloadedSplashWindow(), splash); + assert.equal(splash.visible, true); + assert.equal(splash.skipTaskbar, false); + assert.equal(revealPreloadedSplashWindow(), null); + }); + test('a preload that never reports ready still gets shown by the watchdog', async () => { const {openSplashWindow, SPLASH_READY_WATCHDOG_MS} = await loadSplashWindow('show-watchdog'); @@ -1094,7 +1116,7 @@ class StubNode { } } -function createPreloadHarness() { +function createPreloadHarness(options = {}) { const sent = []; const ipcListeners = new Map(); const windowListeners = new Map(); @@ -1151,6 +1173,7 @@ function createPreloadHarness() { } }, window: { + location: {search: options.search ?? ''}, addEventListener: (eventName, listener) => { windowListeners.set(eventName, listener); }, @@ -1176,6 +1199,7 @@ function createPreloadHarness() { select.dispatch('change'); }, sendState: (payload) => ipcListeners.get('desktop-splash:state')({}, payload), + reveal: () => ipcListeners.get('desktop-splash:revealed')({}), sent, channels: () => sent.map((entry) => entry.channel), frames, @@ -1207,6 +1231,21 @@ function styleRule(selector) { } describe('splash preload rendering', () => { + test('a held splash waits for its reveal before timing the diagnostics links', async () => { + const diagnosticsTimers = (harness) => + harness.timeouts.filter((timer) => timer.delayMs === 30000 && !timer.cleared); + const shown = createPreloadHarness(); + await shown.start(); + assert.equal(diagnosticsTimers(shown).length, 1); + + const held = createPreloadHarness({search: '?held=1'}); + await held.start(); + assert.equal(diagnosticsTimers(held).length, 0); + + held.reveal(); + assert.equal(diagnosticsTimers(held).length, 1); + }); + test('renders before it reports ready, so the first paint is never a blank frame', async () => { const harness = createPreloadHarness(); diff --git a/fluxer_desktop/src/main/SplashWindow.ts b/fluxer_desktop/src/main/SplashWindow.ts index c66c61924..931590694 100644 --- a/fluxer_desktop/src/main/SplashWindow.ts +++ b/fluxer_desktop/src/main/SplashWindow.ts @@ -22,6 +22,7 @@ export const SPLASH_READY_WATCHDOG_MS = 3000; export const SPLASH_CLOSE_DELAY_MS = 100; export const DESKTOP_SPLASH_STATE_CHANNEL = 'desktop-splash:state'; +export const DESKTOP_SPLASH_REVEALED_CHANNEL = 'desktop-splash:revealed'; export const DESKTOP_SPLASH_READY_CHANNEL = 'desktop-splash:ready'; export const DESKTOP_SPLASH_RETRY_NOW_CHANNEL = 'desktop-splash:retry-now'; export const DESKTOP_SPLASH_QUIT_CHANNEL = 'desktop-splash:quit'; @@ -142,6 +143,9 @@ let affordanceLatched = false; let lastSerializedState: SerializedSplashState | null = null; let readyWatchdog: NodeJS.Timeout | null = null; let themeSourceBeforeSplash: typeof nativeTheme.themeSource | null = null; +let darkThemePendingShow = false; +let splashHeldHidden = false; +let splashDocumentReady = false; function toSplashCount(value: number | null | undefined): number | null { if (typeof value !== 'number' || !Number.isFinite(value)) return null; @@ -273,11 +277,13 @@ function showSplashWindow(reason: 'ready' | 'watchdog'): void { clearTimeout(readyWatchdog); readyWatchdog = null; } + if (splashHeldHidden) return; const window = splashWindow; if (window == null || window.isDestroyed() || window.isVisible()) return; if (reason === 'watchdog') { logger.warn('The splash preload never reported ready, showing the window anyway'); } + applySplashTheme(); window.showInactive(); } @@ -286,6 +292,7 @@ function registerSplashIpc(): void { splashIpcRegistered = true; ipcMain.on(DESKTOP_SPLASH_READY_CHANNEL, (event) => { if (!isSplashSender(event)) return; + splashDocumentReady = true; showSplashWindow('ready'); if (lastSerializedState != null) { event.sender.send(DESKTOP_SPLASH_STATE_CHANNEL, lastSerializedState); @@ -334,11 +341,42 @@ function registerSplashDiagnostics(window: BrowserWindow): void { }); } -export function openSplashWindow(): BrowserWindow { - if (splashWindow != null && !splashWindow.isDestroyed()) return splashWindow; +export function openSplashWindow(options: {readonly darkThemeOnShow?: boolean} = {}): BrowserWindow { + const existing = splashWindow; + if (existing != null && !existing.isDestroyed()) { + if (splashHeldHidden) { + splashHeldHidden = false; + existing.setSkipTaskbar(false); + if (splashDocumentReady) showSplashWindow('ready'); + } + return existing; + } + return createSplashWindow(options.darkThemeOnShow === true, false); +} + +export function preloadSplashWindow(): void { + if (splashWindow != null && !splashWindow.isDestroyed()) return; + createSplashWindow(true, true); +} + +export function revealPreloadedSplashWindow(): BrowserWindow | null { + const window = splashWindow; + if (!splashHeldHidden || !splashDocumentReady || window == null || window.isDestroyed()) return null; + splashHeldHidden = false; + window.setSkipTaskbar(false); + window.webContents.send(DESKTOP_SPLASH_REVEALED_CHANNEL); + applySplashTheme(); + window.show(); + window.focus(); + return window; +} + +function createSplashWindow(darkThemeOnShow: boolean, heldHidden: boolean): BrowserWindow { registerSplashIpc(); - if (themeSourceBeforeSplash == null) themeSourceBeforeSplash = nativeTheme.themeSource; - nativeTheme.themeSource = 'dark'; + darkThemePendingShow = true; + splashHeldHidden = heldHidden; + splashDocumentReady = false; + if (!darkThemeOnShow) applySplashTheme(); const window = new BrowserWindow({ width: SPLASH_WINDOW_WIDTH, height: getSplashWindowHeight(process.platform), @@ -368,19 +406,26 @@ export function openSplashWindow(): BrowserWindow { window.on('closed', () => { if (splashWindow === window) { splashWindow = null; + splashHeldHidden = false; + splashDocumentReady = false; } restoreThemeSource(); if (!shouldQuitOnSplashClosed(process.platform, launchLatched)) return; logger.info('The splash window closed before launch, quitting'); app.quit(); }); - readyWatchdog = setTimeout(() => { - readyWatchdog = null; - showSplashWindow('watchdog'); - }, SPLASH_READY_WATCHDOG_MS); - readyWatchdog.unref(); - const documentUrl = pathToFileURL(getDesktopDistributionPath('splash', 'index.html')).href; - window.loadURL(documentUrl).catch((error) => { + if (heldHidden) { + window.setSkipTaskbar(true); + } else { + readyWatchdog = setTimeout(() => { + readyWatchdog = null; + showSplashWindow('watchdog'); + }, SPLASH_READY_WATCHDOG_MS); + readyWatchdog.unref(); + } + const documentUrl = pathToFileURL(getDesktopDistributionPath('splash', 'index.html')); + if (heldHidden) documentUrl.searchParams.set('held', '1'); + window.loadURL(documentUrl.href).catch((error) => { logger.error('Failed to load the splash document', error); }); return window; @@ -392,11 +437,20 @@ export function focusSplashWindow(): void { if (window.isMinimized()) { window.restore(); } + applySplashTheme(); window.show(); window.focus(); } +function applySplashTheme(): void { + if (!darkThemePendingShow) return; + darkThemePendingShow = false; + if (themeSourceBeforeSplash == null) themeSourceBeforeSplash = nativeTheme.themeSource; + nativeTheme.themeSource = 'dark'; +} + function restoreThemeSource(): void { + darkThemePendingShow = false; if (themeSourceBeforeSplash == null) return; nativeTheme.themeSource = themeSourceBeforeSplash; themeSourceBeforeSplash = null; @@ -405,6 +459,8 @@ function restoreThemeSource(): void { export function closeSplashWindow(): void { const window = splashWindow; splashWindow = null; + splashHeldHidden = false; + splashDocumentReady = false; restoreThemeSource(); lastSerializedState = null; affordanceLatched = false; diff --git a/fluxer_desktop/src/main/Updater.test.mjs b/fluxer_desktop/src/main/Updater.test.mjs index 594aa6c88..973938828 100644 --- a/fluxer_desktop/src/main/Updater.test.mjs +++ b/fluxer_desktop/src/main/Updater.test.mjs @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import {createHash} from 'node:crypto'; -import {chmodSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, writeFileSync} from 'node:fs'; +import {mkdirSync, mkdtempSync, readdirSync, readFileSync, writeFileSync} from 'node:fs'; import {createServer} from 'node:http'; import {createRequire} from 'node:module'; import {tmpdir} from 'node:os'; @@ -34,14 +34,6 @@ const shellDownloadFormatsSource = transform('ShellDownloadFormats.ts'); const shellUpdateCapabilitySource = transform('ShellUpdateCapability.ts'); const updaterDownloadsSource = transform('UpdaterDownloads.ts'); const updaterSource = transform('Updater.ts'); -const updaterPlatformUtilsSource = transform('../../../fluxer_app/src/features/app/utils/UpdaterPlatformUtils.ts'); - -function loadUpdaterPlatformUtils() { - const module = {exports: {}}; - const context = vm.createContext({module, exports: module.exports, require}); - vm.runInContext(updaterPlatformUtilsSource.code, context, {filename: updaterPlatformUtilsSource.path}); - return module.exports; -} const INSTALLED_NAME = 'My Fluxer.AppImage'; const CURRENT_VERSION = '2026.903.231208'; @@ -52,9 +44,7 @@ const NEW_SHA256 = createHash('sha256').update(NEW_BYTES).digest('hex'); let server; let baseUrl; -let serveCorruptBytes = false; let appImageRequests = 0; -let failAppImageRequests = 0; before(async () => { server = createServer((request, response) => { @@ -75,15 +65,8 @@ before(async () => { } if (request.url === `/${PUBLISHED_VERSION}/appimage`) { appImageRequests += 1; - if (failAppImageRequests > 0) { - failAppImageRequests -= 1; - response.writeHead(503); - response.end('try again'); - return; - } - const body = serveCorruptBytes ? Buffer.concat([Buffer.from([0]), NEW_BYTES.subarray(1)]) : NEW_BYTES; - response.writeHead(200, {'content-type': 'application/octet-stream', 'content-length': body.length}); - response.end(body); + response.writeHead(200, {'content-type': 'application/octet-stream', 'content-length': NEW_BYTES.length}); + response.end(NEW_BYTES); return; } response.writeHead(404); @@ -97,74 +80,38 @@ after(async () => { await new Promise((resolve) => server.close(resolve)); }); -function createInstall() { - const root = mkdtempSync(join(tmpdir(), 'fluxer-updater-test-')); - const applications = join(root, 'Applications'); - mkdirSync(applications); - const mount = join(root, '.mount_Fluxer'); - mkdirSync(mount); - writeFileSync(join(mount, 'AppRun'), '#!/usr/bin/env bash\n', {mode: 0o755}); - const installedPath = join(applications, INSTALLED_NAME); - writeFileSync(installedPath, OLD_BYTES, {mode: 0o755}); - return {applications, installedPath, mount}; -} - function loadUpdater({ appImagePath, version = CURRENT_VERSION, appDir, - execPath, - stagingErrno, platform = 'linux', arch = 'arm64', - velopack, - applyAttempt = null, + packaged = true, + flatpak = false, + gateCheck = async () => ({available: true}), }) { const events = []; const handlers = new Map(); - const appEvents = new Map(); - const state = {relaunched: false, electronRelaunched: false}; - const applyState = {attempt: applyAttempt, recorded: [], cleared: 0}; + const gate = {checks: 0}; const module = {exports: {}}; const stubs = { - '@electron/main/UpdaterApplyState': { - readVelopackApplyAttempt: () => applyState.attempt, - recordVelopackApplyAttempt: (recordedVersion) => { - applyState.recorded.push(recordedVersion); - applyState.attempt = {version: recordedVersion, attemptedAt: 0}; - }, - clearVelopackApplyAttempt: () => { - applyState.cleared += 1; - applyState.attempt = null; - }, - }, '@electron/common/BuildChannel': {BUILD_CHANNEL: 'canary'}, '@electron/common/Constants': {DOWNLOAD_PAGE_URLS: {canary: 'https://canary.fluxer.app/download'}}, '@electron/common/DesktopIdentity': {DESKTOP_ARTIFACT_PRODUCT_NAME: 'Fluxer-Canary'}, '@electron/common/UserDataPath': {isPortableMode: () => false}, - '@electron/main/DesktopTray': {destroyDesktopTray() {}}, - '@electron/main/ModuleNetworkFetch': {moduleNetworkFetch: (input, init) => sandbox.fetch(input, init)}, - '@electron/main/LinuxSandbox': {isFlatpakRuntime: () => false}, - '@electron/main/Troubleshooting': { - relaunchAndExit() { - state.relaunched = true; + '@electron/main/DesktopUpdateGate': { + checkDesktopUpdateNow: async () => { + gate.checks += 1; + return await gateCheck(); }, }, - '@electron/main/Window': {setQuitting() {}}, + '@electron/main/LinuxSandbox': {isFlatpakRuntime: () => flatpak}, 'electron-log': {info() {}, warn() {}, error() {}, debug() {}}, electron: { app: { - isPackaged: true, + isPackaged: packaged, getVersion: () => version, - on(event, handler) { - appEvents.set(event, handler); - }, - relaunch() { - state.electronRelaunched = true; - }, - exit() {}, }, - autoUpdater: {on() {}}, net: {fetch: (input, init) => sandbox.fetch(input, init)}, ipcMain: { handle(channel, handler) { @@ -176,11 +123,12 @@ function loadUpdater({ const sandbox = { console, Buffer, + URL, process: { ...process, platform, arch, - execPath: execPath ?? (appDir ? join(appDir, 'fluxer-canary') : process.execPath), + execPath: appDir ? join(appDir, 'fluxer-canary') : process.execPath, env: { ...(appImagePath ? {APPIMAGE: appImagePath} : {}), ...(appDir ? {APPDIR: appDir} : {}), @@ -193,56 +141,21 @@ function loadUpdater({ const url = String(input).replace(/https:\/\/pkgs\.fluxer\.com\/desktop\/canary\/[^/]+\/[^/]+/, baseUrl); return fetch(url, init); }, - require: (specifier) => { - if (specifier === 'node:module' && velopack) { - return { - ...require('node:module'), - createRequire: () => (name) => (name === 'velopack' ? velopack : require(name)), - }; - } - if (specifier === 'node:fs/promises' && stagingErrno) { - return { - ...require(specifier), - open: async () => { - const error = new Error(`${stagingErrno}: staging refused`); - error.code = stagingErrno; - throw error; - }, - }; - } - return stubs[specifier] ?? require(specifier); - }, + require: (specifier) => stubs[specifier] ?? require(specifier), }; const context = vm.createContext(sandbox); - - const appImageModule = {exports: {}}; - sandbox.module = appImageModule; - sandbox.exports = appImageModule.exports; - sandbox.__filename = appImageUpdateSource.path; - vm.runInContext(appImageUpdateSource.code, context, {filename: appImageUpdateSource.path}); - stubs['@electron/main/AppImageUpdate'] = appImageModule.exports; - - const shellUpdateCapabilityModule = {exports: {}}; - sandbox.module = shellUpdateCapabilityModule; - sandbox.exports = shellUpdateCapabilityModule.exports; - sandbox.__filename = shellUpdateCapabilitySource.path; - vm.runInContext(shellUpdateCapabilitySource.code, context, {filename: shellUpdateCapabilitySource.path}); - stubs['@electron/main/ShellUpdateCapability'] = shellUpdateCapabilityModule.exports; - - const shellDownloadFormatsModule = {exports: {}}; - sandbox.module = shellDownloadFormatsModule; - sandbox.exports = shellDownloadFormatsModule.exports; - sandbox.__filename = shellDownloadFormatsSource.path; - vm.runInContext(shellDownloadFormatsSource.code, context, {filename: shellDownloadFormatsSource.path}); - stubs['@electron/main/ShellDownloadFormats'] = shellDownloadFormatsModule.exports; - - const updaterDownloadsModule = {exports: {}}; - sandbox.module = updaterDownloadsModule; - sandbox.exports = updaterDownloadsModule.exports; - sandbox.__filename = updaterDownloadsSource.path; - vm.runInContext(updaterDownloadsSource.code, context, {filename: updaterDownloadsSource.path}); - stubs['@electron/main/UpdaterDownloads'] = updaterDownloadsModule.exports; - + const load = (source, specifier) => { + const loaded = {exports: {}}; + sandbox.module = loaded; + sandbox.exports = loaded.exports; + sandbox.__filename = source.path; + vm.runInContext(source.code, context, {filename: source.path}); + stubs[specifier] = loaded.exports; + }; + load(appImageUpdateSource, '@electron/main/AppImageUpdate'); + load(shellUpdateCapabilitySource, '@electron/main/ShellUpdateCapability'); + load(shellDownloadFormatsSource, '@electron/main/ShellDownloadFormats'); + load(updaterDownloadsSource, '@electron/main/UpdaterDownloads'); sandbox.module = module; sandbox.exports = module.exports; sandbox.__filename = updaterSource.path; @@ -250,12 +163,10 @@ function loadUpdater({ module.exports.registerUpdater(() => ({webContents: {send: (_channel, event) => events.push(event)}})); return { - applyState, events, - state, - check: () => handlers.get('updater-check')({}, 'user'), - install: () => handlers.get('updater-install')({}), - quit: () => appEvents.get('will-quit')?.(), + gate, + channels: () => [...handlers.keys()], + check: (context = 'user') => handlers.get('updater-check')({}, context), }; } @@ -263,359 +174,113 @@ function types(events) { return events.map((event) => event.type); } -function stagingLeftovers(directory) { - return readdirSync(directory).filter((entry) => entry.startsWith('.fluxer-update-')); +function createInstall() { + const root = mkdtempSync(join(tmpdir(), 'fluxer-updater-test-')); + const applications = join(root, 'Applications'); + mkdirSync(applications); + const mount = join(root, '.mount_Fluxer'); + mkdirSync(mount); + writeFileSync(join(mount, 'AppRun'), '#!/usr/bin/env bash\n', {mode: 0o755}); + const installedPath = join(applications, INSTALLED_NAME); + writeFileSync(installedPath, OLD_BYTES, {mode: 0o755}); + return {applications, installedPath, mount}; } -describe('Updater AppImage lifecycle', () => { - test('downloads on check, reports the macOS lifecycle, and swaps in place', async () => { +describe('Updater on a shell that updates itself', () => { + test('registers only the check, never a download or an install channel', () => { const install = createInstall(); const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - await updater.check(); - - const available = updater.events.find((event) => event.type === 'available'); - assert.equal(available.downloadStarted, true); - assert.equal(available.version, PUBLISHED_VERSION); - assert.equal(available.downloadUrl, undefined); - assert.equal(available.downloadOptions, undefined); - const progress = updater.events.filter((event) => event.type === 'progress'); - assert.ok(progress.length > 0); - assert.equal(progress.at(-1).total, NEW_BYTES.length); - assert.equal(progress.at(-1).transferred, NEW_BYTES.length); - assert.equal(progress.at(-1).percent, 100); - const downloaded = updater.events.find((event) => event.type === 'downloaded'); - assert.equal(downloaded.version, PUBLISHED_VERSION); - assert.deepEqual( - types(updater.events).filter((type) => type !== 'progress'), - ['checking', 'available', 'downloaded'], - ); - assert.equal(readFileSync(install.installedPath).equals(OLD_BYTES), true); - - await updater.install(); - - assert.equal(updater.state.relaunched, true); - assert.equal( - updater.state.electronRelaunched, - false, - "app.relaunch cannot start an AppImage: Electron's relauncher runs under PR_SET_NO_NEW_PRIVS and the setuid fusermount the AppImage runtime needs fails with EPERM", - ); - assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); - assert.equal(readFileSync(install.installedPath).equals(NEW_BYTES), true); + assert.deepEqual(updater.channels(), ['updater-check']); }); - test('refuses to swap when the download does not match the published sha256', async () => { + test('a background check downloads nothing and leaves the poll to the bootstrap', async () => { const install = createInstall(); const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - serveCorruptBytes = true; - try { - await updater.check(); - } finally { - serveCorruptBytes = false; - } + appImageRequests = 0; - assert.deepEqual( - types(updater.events).filter((type) => type !== 'progress'), - ['checking', 'available', 'error', 'available'], - ); - const failure = updater.events.find((event) => event.type === 'error'); - assert.equal(failure.phase, 'download'); - assert.match(failure.message, /checksum mismatch/); - const fallback = updater.events.at(-1); - assert.equal(fallback.downloadStarted, false); - assert.ok(fallback.downloadOptions.length > 0); + await updater.check('background'); + await updater.check('focus'); + + assert.equal(updater.gate.checks, 0); + assert.deepEqual(updater.events, []); + assert.equal(appImageRequests, 0); + assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); assert.equal(readFileSync(install.installedPath).equals(OLD_BYTES), true); - assert.deepEqual(stagingLeftovers(install.applications), []); - await assert.rejects(updater.install(), /No AppImage update is ready to install/); }); - test('offers the manual download when the install directory is not writable', { - skip: process.getuid?.() === 0, - }, async () => { + test('a user check asks the manifest and leaves the update itself to the click', async () => { const install = createInstall(); - chmodSync(install.applications, 0o500); - try { - const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); + const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); + appImageRequests = 0; - await updater.check(); + await updater.check('user'); - assert.deepEqual(types(updater.events), ['checking', 'available']); - const available = updater.events.at(-1); - assert.equal(available.downloadStarted, false); - assert.equal(available.version, PUBLISHED_VERSION); - assert.ok(available.downloadOptions.length > 0); - assert.equal(available.downloadOptions[0].format, 'appimage'); - assert.equal( - available.downloadOptions[0].suggestedName, - `Fluxer-Canary-${PUBLISHED_VERSION}-linux-arm64.AppImage`, - ); - } finally { - chmodSync(install.applications, 0o755); - } - assert.equal(readFileSync(install.installedPath).equals(OLD_BYTES), true); + assert.equal(updater.gate.checks, 1); + assert.deepEqual(types(updater.events), ['not-available']); + assert.equal(appImageRequests, 0); assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); }); - test('falls back to the manual updater when APPIMAGE is unset', async () => { + test('a user check that cannot reach the manifest says so', async () => { + const install = createInstall(); + const updater = loadUpdater({ + appImagePath: install.installedPath, + appDir: install.mount, + gateCheck: async () => { + throw new Error('manifest unreachable'); + }, + }); + + await updater.check('user'); + + assert.deepEqual(types(updater.events), ['error']); + assert.match(updater.events[0].message, /manifest unreachable/); + }); + + test('macOS and Windows go through the same check', async () => { + for (const platform of ['darwin', 'win32']) { + const updater = loadUpdater({platform, arch: 'x64'}); + + await updater.check('user'); + + assert.equal(updater.gate.checks, 1, platform); + assert.deepEqual(updater.channels(), ['updater-check'], platform); + } + }); +}); + +describe('Updater on a shell that cannot update itself', () => { + test('a Linux package install offers the newer package for manual download', async () => { const updater = loadUpdater({appImagePath: null}); - await updater.check(); + await updater.check('user'); + assert.equal(updater.gate.checks, 1, 'the renderer module can update even when the shell cannot'); assert.deepEqual(types(updater.events), ['checking', 'available']); - assert.equal(updater.events.at(-1).downloadStarted, false); - await assert.rejects(updater.install(), /In-app updates are not supported on this platform/); + const available = updater.events.at(-1); + assert.equal(available.version, PUBLISHED_VERSION); + assert.equal(Object.hasOwn(available, 'downloadStarted'), false); + assert.ok(available.downloadOptions.some((option) => option.format === 'deb')); }); - test('never rewrites an inherited APPIMAGE that this process did not come from', async () => { - const install = createInstall(); - const victim = join(install.applications, 'Kdenlive-24.12.AppImage'); - writeFileSync(victim, OLD_BYTES, {mode: 0o755}); - const optDir = mkdtempSync(join(tmpdir(), 'fluxer-opt-test-')); - const updater = loadUpdater({appImagePath: victim, execPath: join(optDir, 'fluxer')}); + test('a Linux package install that is current reports no update', async () => { + const updater = loadUpdater({appImagePath: null, version: PUBLISHED_VERSION}); - await updater.check(); + await updater.check('user'); - assert.deepEqual(types(updater.events), ['checking', 'available']); - assert.equal(updater.events.at(-1).downloadStarted, false); - assert.equal(readFileSync(victim).equals(OLD_BYTES), true); - assert.deepEqual(stagingLeftovers(install.applications), []); - await assert.rejects(updater.install(), /In-app updates are not supported on this platform/); - }); - - test('never rewrites the AppImage that only the shell around this process came from', async () => { - const install = createInstall(); - const victim = join(install.applications, 'Kdenlive-24.12.AppImage'); - writeFileSync(victim, OLD_BYTES, {mode: 0o755}); - const extracted = join(mkdtempSync(join(tmpdir(), 'fluxer-extracted-test-')), 'squashfs-root'); - mkdirSync(extracted); - writeFileSync(join(extracted, 'AppRun'), '#!/usr/bin/env bash\n', {mode: 0o755}); - const updater = loadUpdater({ - appImagePath: victim, - appDir: install.mount, - execPath: join(extracted, 'fluxer-canary'), - }); - - await updater.check(); - - assert.deepEqual(types(updater.events), ['checking', 'available']); - assert.equal(updater.events.at(-1).downloadStarted, false); - assert.equal(readFileSync(victim).equals(OLD_BYTES), true); - assert.deepEqual(stagingLeftovers(install.applications), []); - await assert.rejects(updater.install(), /In-app updates are not supported on this platform/); - }); - - test('gives up on a local write failure instead of downloading the AppImage again', async () => { - const install = createInstall(); - const updater = loadUpdater({ - appImagePath: install.installedPath, - appDir: install.mount, - stagingErrno: 'ENOSPC', - }); - const before = appImageRequests; - - await updater.check(); - - assert.equal(appImageRequests - before, 1, 'a full disk must not pull the whole AppImage down five more times'); - const failure = updater.events.find((event) => event.type === 'error'); - assert.equal(failure.phase, 'download'); - assert.match(failure.message, /ENOSPC/); - assert.equal(updater.events.at(-1).type, 'available'); - assert.equal(updater.events.at(-1).downloadStarted, false); - assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); - }); - - test('downloads the AppImage again after a transient server failure', async () => { - const install = createInstall(); - const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - const before = appImageRequests; - failAppImageRequests = 1; - - try { - await updater.check(); - } finally { - failAppImageRequests = 0; - } - - assert.equal(appImageRequests - before, 2); - assert.equal(updater.events.at(-1).type, 'downloaded'); - - await updater.install(); - - assert.equal(readFileSync(install.installedPath).equals(NEW_BYTES), true); - }); - - test('reports no update when the published version is not newer', async () => { - const install = createInstall(); - const updater = loadUpdater({ - appImagePath: install.installedPath, - appDir: install.mount, - version: PUBLISHED_VERSION, - }); - - await updater.check(); - - assert.deepEqual(types(updater.events), ['checking', 'not-available']); - assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); - }); - - test('reclaims a staged update abandoned by a process that never reached will-quit', async () => { - const install = createInstall(); - const abandoned = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - - await abandoned.check(); - assert.equal(stagingLeftovers(install.applications).length, 1); - - loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - - assert.deepEqual(stagingLeftovers(install.applications), []); - assert.deepEqual(readdirSync(install.applications), [INSTALLED_NAME]); - assert.equal(readFileSync(install.installedPath).equals(OLD_BYTES), true); - }); - - test('shows the renderer the download progress the main process reports', async () => { - const install = createInstall(); - const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - const {shouldShowNativeDesktopUpdateDownloadProgress} = loadUpdaterPlatformUtils(); - - await updater.check(); - - const reportsProgress = updater.events.some((event) => event.type === 'progress'); - assert.equal(reportsProgress, true); - assert.equal(shouldShowNativeDesktopUpdateDownloadProgress('linux'), reportsProgress); - }); - - test('discards a staged update that the user never installed', async () => { - const install = createInstall(); - const updater = loadUpdater({appImagePath: install.installedPath, appDir: install.mount}); - - await updater.check(); - assert.equal(stagingLeftovers(install.applications).length, 1); - - updater.quit(); - - assert.deepEqual(stagingLeftovers(install.applications), []); - assert.equal(readFileSync(install.installedPath).equals(OLD_BYTES), true); - }); -}); - -function createVelopackStub({installedVersion, pendingRestart = null, remoteUpdate = null}) { - const applied = []; - class UpdateManager { - getCurrentVersion() { - return installedVersion; - } - getUpdatePendingRestart() { - return pendingRestart; - } - checkForUpdatesAsync() { - return Promise.resolve(remoteUpdate); - } - downloadUpdateAsync() { - return Promise.resolve(); - } - waitExitThenApplyUpdate(update) { - applied.push(update); - } - } - return {applied, module: {UpdateManager}}; -} - -function loadWindowsUpdater({installedVersion, pendingRestart, remoteUpdate, applyAttempt = null}) { - const velopack = createVelopackStub({installedVersion, pendingRestart, remoteUpdate}); - const updater = loadUpdater({ - platform: 'win32', - arch: 'x64', - velopack: velopack.module, - applyAttempt, - }); - return {...updater, applied: velopack.applied}; -} - -describe('Updater Windows apply failures', () => { - test('offers the installer when a downloaded update never applied', async () => { - const updater = loadWindowsUpdater({ - installedVersion: CURRENT_VERSION, - pendingRestart: {Version: PUBLISHED_VERSION, Size: 100}, - applyAttempt: {version: PUBLISHED_VERSION, attemptedAt: 0}, - }); - - await updater.check(); - - assert.deepEqual(types(updater.events), ['checking', 'error', 'available']); - assert.equal(updater.events[1].phase, 'install'); - assert.ok(updater.events[1].message.includes(PUBLISHED_VERSION)); - assert.equal(updater.events[2].downloadStarted, false); - assert.equal(updater.events[2].downloadUrl, `${baseUrl}/setup`); - assert.equal(updater.applyState.attempt.version, PUBLISHED_VERSION); - }); - - test('keeps offering the installer when no newer release than the failed one is out', async () => { - const updater = loadWindowsUpdater({ - installedVersion: CURRENT_VERSION, - remoteUpdate: {Version: PUBLISHED_VERSION, Size: 100}, - applyAttempt: {version: PUBLISHED_VERSION, attemptedAt: 0}, - }); - - await updater.check(); - - assert.deepEqual(types(updater.events), ['checking', 'error', 'available']); - assert.equal(updater.events[2].downloadStarted, false); - assert.equal(updater.applyState.cleared, 0); - }); - - test('retries the in-app update when a newer release than the failed one is out', async () => { - const newerVersion = '2026.905.101010'; - const updater = loadWindowsUpdater({ - installedVersion: CURRENT_VERSION, - pendingRestart: {Version: PUBLISHED_VERSION, Size: 100}, - remoteUpdate: {Version: newerVersion, Size: 200}, - applyAttempt: {version: PUBLISHED_VERSION, attemptedAt: 0}, - }); - - await updater.check(); - - assert.equal(updater.applyState.cleared, 1); - assert.equal(updater.applyState.attempt, null); - assert.deepEqual(types(updater.events), ['checking', 'available']); - assert.equal(updater.events[1].version, newerVersion); - assert.equal(updater.events[1].downloadUrl, undefined); - }); - - test('resumes normal updates once the installed version catches up', async () => { - const updater = loadWindowsUpdater({ - installedVersion: PUBLISHED_VERSION, - applyAttempt: {version: PUBLISHED_VERSION, attemptedAt: 0}, - }); - - await updater.check(); - - assert.equal(updater.applyState.cleared, 1); - assert.equal(updater.applyState.attempt, null); assert.deepEqual(types(updater.events), ['checking', 'not-available']); }); - test('records the version it hands to the updater before quitting', async () => { - const updater = loadWindowsUpdater({ - installedVersion: CURRENT_VERSION, - pendingRestart: {Version: PUBLISHED_VERSION, Size: 100}, - }); + test('Flatpak and development builds point at their own update path', async () => { + const flatpak = loadUpdater({appImagePath: null, flatpak: true}); + await flatpak.check('user'); + assert.deepEqual(JSON.parse(JSON.stringify(flatpak.events)), [ + {type: 'unsupported', context: 'user', reason: 'managed-package'}, + ]); - await updater.install(); - - assert.deepEqual(updater.applyState.recorded, [PUBLISHED_VERSION]); - assert.deepEqual(updater.applied, [{Version: PUBLISHED_VERSION, Size: 100}]); - }); - - test('refuses to re-apply a version that already failed to install', async () => { - const updater = loadWindowsUpdater({ - installedVersion: CURRENT_VERSION, - pendingRestart: {Version: PUBLISHED_VERSION, Size: 100}, - applyAttempt: {version: PUBLISHED_VERSION, attemptedAt: 0}, - }); - - await assert.rejects(() => updater.install(), /Download the installer/); - - assert.deepEqual(updater.applied, []); - assert.deepEqual(updater.applyState.recorded, []); + const unpackaged = loadUpdater({appImagePath: null, packaged: false}); + await unpackaged.check('user'); + assert.equal(unpackaged.events[0].reason, 'unpackaged'); }); }); diff --git a/fluxer_desktop/src/main/Updater.ts b/fluxer_desktop/src/main/Updater.ts index eedf753dc..aed8a13eb 100644 --- a/fluxer_desktop/src/main/Updater.ts +++ b/fluxer_desktop/src/main/Updater.ts @@ -1,30 +1,9 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import {createRequire} from 'node:module'; -import { - AppImageChecksumError, - AppImageStagingError, - type AppImageTarget, - applyStagedAppImageUpdate, - discardStagedAppImageUpdate, - resolveAppImageTarget, - type StagedAppImageUpdate, - stageAppImageUpdate, - sweepAbandonedAppImageUpdates, -} from '@electron/main/AppImageUpdate'; -import {destroyDesktopTray} from '@electron/main/DesktopTray'; -import {moduleNetworkFetch} from '@electron/main/ModuleNetworkFetch'; +import {checkDesktopUpdateNow} from '@electron/main/DesktopUpdateGate'; import {MANUAL_DESKTOP_FORMATS, type ManualDesktopFormat} from '@electron/main/ShellDownloadFormats'; import {resolveShellUpdatePlan, ShellUpdateCapability} from '@electron/main/ShellUpdateCapability'; -import {relaunchAndExit} from '@electron/main/Troubleshooting'; import { - clearVelopackApplyAttempt, - readVelopackApplyAttempt, - recordVelopackApplyAttempt, - type VelopackApplyAttempt, -} from '@electron/main/UpdaterApplyState'; -import { - buildManualVersionDownloadUrl, DOWNLOAD_PAGE_URL, getManualDownloadOptions, getManualDownloadUrl, @@ -33,10 +12,8 @@ import { UPDATE_BASE_URL, type UpdaterDownloadOption, } from '@electron/main/UpdaterDownloads'; -import {setQuitting} from '@electron/main/Window'; -import {app, autoUpdater, type BrowserWindow, ipcMain, net} from 'electron'; +import {app, type BrowserWindow, ipcMain, net} from 'electron'; import log from 'electron-log'; -import type {UpdateInfo, VelopackAsset} from 'velopack'; type UpdaterContext = 'user' | 'background' | 'focus'; type UpdaterEvent = @@ -48,8 +25,6 @@ type UpdaterEvent = type: 'available'; context: UpdaterContext; version?: string | null; - downloadSize?: number | null; - downloadStarted: boolean; downloadUrl?: string; downloadOptions?: Array; } @@ -57,24 +32,10 @@ type UpdaterEvent = type: 'not-available'; context: UpdaterContext; } - | { - type: 'downloaded'; - context: UpdaterContext; - version?: string | null; - } - | { - type: 'progress'; - context: UpdaterContext; - percent: number; - transferred: number; - total: number; - bytesPerSecond: number; - } | { type: 'error'; context: UpdaterContext; message: string; - phase?: 'check' | 'download' | 'install'; } | { type: 'unsupported'; @@ -83,27 +44,6 @@ type UpdaterEvent = downloadUrl?: string; }; -const requireModule = createRequire(import.meta.url); - -let lastContext: UpdaterContext = 'background'; -type VelopackUpdate = UpdateInfo | VelopackAsset; - -let pendingVelopackUpdate: VelopackUpdate | null = null; -let velopackCheckPromise: Promise | null = null; -let velopackDownloadPromise: Promise | null = null; -let velopackInstallStarted = false; -let pendingAppImageUpdate: PendingAppImageUpdate | null = null; -let appImageUpdatePromise: Promise | null = null; -let appImageInstallStarted = false; - -const UPDATE_DOWNLOAD_MAX_ATTEMPTS = 5; -const UPDATE_DOWNLOAD_RETRY_BASE_DELAY_MS = 3000; -const UPDATE_DOWNLOAD_RETRY_MAX_DELAY_MS = 60000; -const ELECTRON_DOWNLOAD_MAX_RETRIES = 4; -const UPDATE_PROGRESS_SAMPLE_INTERVAL_MS = 500; - -type PendingAppImageUpdate = {version: string; target: AppImageTarget; staged: StagedAppImageUpdate}; - function send(win: BrowserWindow | null, event: UpdaterEvent) { win?.webContents.send('updater-event', event); } @@ -119,387 +59,6 @@ function getErrorMessage(error: unknown): string { return String(error); } -function sleep(ms: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, ms); - }); -} - -function backoffDelay(attempt: number): number { - const exponential = UPDATE_DOWNLOAD_RETRY_BASE_DELAY_MS * 2 ** Math.max(0, attempt - 1); - const capped = Math.min(exponential, UPDATE_DOWNLOAD_RETRY_MAX_DELAY_MS); - return Math.round(capped * (0.5 + Math.random() * 0.5)); -} - -function getVelopackAsset(update: VelopackUpdate): VelopackAsset { - return 'TargetFullRelease' in update ? update.TargetFullRelease : update; -} - -function getVelopackUpdateVersion(update: VelopackUpdate): string | null { - return getVelopackAsset(update).Version ?? null; -} - -function getVelopackUpdateSize(update: VelopackUpdate): number | null { - const raw = getVelopackAsset(update).Size; - if (raw == null) return null; - if (typeof raw === 'bigint') { - return Number(raw); - } - return Number(raw); -} - -function createVelopackUpdateManager() { - const {UpdateManager} = requireModule('velopack') as typeof import('velopack'); - return new UpdateManager(UPDATE_BASE_URL); -} - -type VelopackUpdateManager = ReturnType; - -function getInstalledVelopackVersion(updateManager: VelopackUpdateManager): string | null { - try { - const version = updateManager.getCurrentVersion(); - return typeof version === 'string' && version.length > 0 ? version : null; - } catch (error) { - log.warn('Failed to read the installed Velopack version', error); - return null; - } -} - -function resolveFailedVelopackApply(updateManager: VelopackUpdateManager): VelopackApplyAttempt | null { - const attempt = readVelopackApplyAttempt(); - if (!attempt) { - return null; - } - const installedVersion = getInstalledVelopackVersion(updateManager) ?? app.getVersion(); - if (compareVersions(installedVersion, attempt.version) >= 0) { - clearVelopackApplyAttempt(); - return null; - } - return attempt; -} - -async function sendVelopackApplyFailure( - context: UpdaterContext, - getMainWindow: () => BrowserWindow | null, - attempt: VelopackApplyAttempt, -): Promise { - log.error('A downloaded update was never applied, so the installer is offered instead.', attempt); - send(getMainWindow(), { - type: 'error', - context, - phase: 'install', - message: `Fluxer could not finish installing version ${attempt.version}.`, - }); - try { - const latest = await fetchManualLatest({forceRefresh: true}); - sendManualUpdateAvailable(getMainWindow, context, latest); - return; - } catch (error) { - log.warn('Failed to resolve the installer download after a failed update apply', error); - } - send(getMainWindow(), { - type: 'available', - context, - version: attempt.version, - downloadSize: null, - downloadStarted: false, - downloadUrl: buildManualVersionDownloadUrl(attempt.version, 'setup'), - }); -} - -async function checkVelopackForUpdates( - context: UpdaterContext, - getMainWindow: () => BrowserWindow | null, -): Promise { - if (velopackCheckPromise) { - return velopackCheckPromise; - } - velopackCheckPromise = (async () => { - try { - send(getMainWindow(), {type: 'checking', context}); - const updateManager = createVelopackUpdateManager(); - const failedApply = resolveFailedVelopackApply(updateManager); - let update: Awaited>; - try { - update = await updateManager.checkForUpdatesAsync(); - } catch (error) { - if (!failedApply) throw error; - await sendVelopackApplyFailure(context, getMainWindow, failedApply); - return; - } - if (failedApply) { - const updateVersion = update ? getVelopackUpdateVersion(update) : null; - if (!updateVersion || compareVersions(updateVersion, failedApply.version) <= 0) { - await sendVelopackApplyFailure(context, getMainWindow, failedApply); - return; - } - log.info('A release newer than the update that failed to apply is out, retrying the in-app update', { - failedVersion: failedApply.version, - updateVersion, - }); - clearVelopackApplyAttempt(); - } - const pendingUpdate = failedApply ? null : updateManager.getUpdatePendingRestart(); - if (!update) { - if (pendingUpdate) { - pendingVelopackUpdate = pendingUpdate; - send(getMainWindow(), { - type: 'downloaded', - context, - version: getVelopackUpdateVersion(pendingUpdate), - }); - return; - } - pendingVelopackUpdate = null; - send(getMainWindow(), {type: 'not-available', context}); - return; - } - if (pendingUpdate) { - const pendingVersion = getVelopackUpdateVersion(pendingUpdate); - const updateVersion = getVelopackUpdateVersion(update); - if (pendingVersion && updateVersion && compareVersions(updateVersion, pendingVersion) <= 0) { - pendingVelopackUpdate = pendingUpdate; - send(getMainWindow(), { - type: 'downloaded', - context, - version: pendingVersion, - }); - return; - } - log.info('Newer Velopack update found while another update is pending restart.', { - pendingVersion, - updateVersion, - }); - } - pendingVelopackUpdate = update; - send(getMainWindow(), { - type: 'available', - context, - version: getVelopackUpdateVersion(update), - downloadSize: getVelopackUpdateSize(update), - downloadStarted: false, - }); - } catch (error) { - send(getMainWindow(), {type: 'error', context, phase: 'check', message: getErrorMessage(error)}); - } - })().finally(() => { - velopackCheckPromise = null; - }); - return velopackCheckPromise; -} - -async function downloadVelopackUpdate( - context: UpdaterContext, - getMainWindow: () => BrowserWindow | null, -): Promise { - if (velopackDownloadPromise) { - return velopackDownloadPromise; - } - const update = pendingVelopackUpdate; - if (!update) { - send(getMainWindow(), { - type: 'error', - context, - phase: 'download', - message: 'No update available to download. Please check for updates first.', - }); - return; - } - if (!('TargetFullRelease' in update)) { - send(getMainWindow(), {type: 'downloaded', context, version: getVelopackUpdateVersion(update)}); - return; - } - velopackDownloadPromise = (async () => { - const total = getVelopackUpdateSize(update) ?? 0; - let lastError: unknown; - for (let attempt = 1; attempt <= UPDATE_DOWNLOAD_MAX_ATTEMPTS; attempt += 1) { - let lastSampleAt = Date.now(); - let lastSampleTransferred = 0; - let smoothedBytesPerSecond = 0; - try { - const updateManager = createVelopackUpdateManager(); - await updateManager.downloadUpdateAsync(update, (percent) => { - const transferred = total > 0 ? Math.round((total * percent) / 100) : 0; - const now = Date.now(); - const dtMs = now - lastSampleAt; - if (dtMs >= 500 || percent >= 100) { - if (dtMs > 0 && transferred >= lastSampleTransferred) { - const instant = ((transferred - lastSampleTransferred) * 1000) / dtMs; - smoothedBytesPerSecond = - smoothedBytesPerSecond === 0 ? instant : smoothedBytesPerSecond * 0.7 + instant * 0.3; - } - lastSampleAt = now; - lastSampleTransferred = transferred; - send(getMainWindow(), { - type: 'progress', - context, - percent, - transferred, - total, - bytesPerSecond: Math.round(smoothedBytesPerSecond), - }); - } - }); - send(getMainWindow(), { - type: 'downloaded', - context, - version: getVelopackUpdateVersion(update), - }); - return; - } catch (error) { - lastError = error; - if (attempt >= UPDATE_DOWNLOAD_MAX_ATTEMPTS) { - break; - } - const delay = backoffDelay(attempt); - const reason = getErrorMessage(error); - const waitSeconds = Math.round(delay / 1000); - log.warn( - `Velopack update download attempt ${attempt}/${UPDATE_DOWNLOAD_MAX_ATTEMPTS} failed (${reason}); retrying in ${waitSeconds}s`, - ); - await sleep(delay); - } - } - log.error('Velopack update download failed after retries', lastError); - send(getMainWindow(), {type: 'error', context, phase: 'download', message: getErrorMessage(lastError)}); - })().finally(() => { - velopackDownloadPromise = null; - }); - return velopackDownloadPromise; -} - -function installVelopackUpdate(): void { - if (velopackInstallStarted) { - log.warn('Velopack install already in progress; ignoring duplicate request.'); - return; - } - const updateManager = createVelopackUpdateManager(); - const update = pendingVelopackUpdate ?? updateManager.getUpdatePendingRestart(); - if (!update) { - throw new Error('No Velopack update is ready to install.'); - } - if (resolveFailedVelopackApply(updateManager)) { - throw new Error('The last update could not be installed. Download the installer to update.'); - } - const updateVersion = getVelopackUpdateVersion(update); - if (updateVersion) { - recordVelopackApplyAttempt(updateVersion); - } - velopackInstallStarted = true; - setQuitting(true); - destroyDesktopTray(); - updateManager.waitExitThenApplyUpdate(update); - setImmediate(() => app.exit(0)); -} - -function registerVelopackUpdater(getMainWindow: () => BrowserWindow | null): void { - ipcMain.handle('updater-check', async (_e, context: UpdaterContext) => { - lastContext = context; - await checkVelopackForUpdates(context, getMainWindow); - }); - ipcMain.handle('updater-download', async (_e, context: UpdaterContext) => { - lastContext = context; - await downloadVelopackUpdate(context, getMainWindow); - }); - ipcMain.handle('updater-install', async () => { - installVelopackUpdate(); - }); -} - -function registerElectronUpdater(getMainWindow: () => BrowserWindow | null): void { - let electronUpdateDownloading = false; - let electronDownloadRetries = 0; - let electronUpdateDownloaded = false; - let electronDownloadedVersion: string | null = null; - const {UpdateSourceType, updateElectronApp} = requireModule( - 'update-electron-app', - ) as typeof import('update-electron-app'); - updateElectronApp({ - updateSource: { - type: UpdateSourceType.StaticStorage, - baseUrl: UPDATE_BASE_URL, - }, - updateInterval: '12 hours', - logger: log, - notifyUser: false, - }); - autoUpdater.on('checking-for-update', () => { - send(getMainWindow(), {type: 'checking', context: lastContext}); - }); - const sendPendingRestart = () => { - send(getMainWindow(), {type: 'downloaded', context: lastContext, version: electronDownloadedVersion}); - }; - autoUpdater.on('update-available', () => { - if (electronUpdateDownloaded) { - sendPendingRestart(); - return; - } - electronUpdateDownloading = true; - send(getMainWindow(), { - type: 'available', - context: lastContext, - version: null, - downloadSize: null, - downloadStarted: true, - }); - }); - autoUpdater.on('update-not-available', () => { - if (electronUpdateDownloaded) { - sendPendingRestart(); - return; - } - send(getMainWindow(), {type: 'not-available', context: lastContext}); - }); - autoUpdater.on('update-downloaded', (_event, _releaseNotes, releaseName) => { - electronUpdateDownloading = false; - electronUpdateDownloaded = true; - if (releaseName) { - electronDownloadedVersion = releaseName; - } - sendPendingRestart(); - }); - autoUpdater.on('error', (err: Error) => { - const message = err?.message ?? String(err); - const phase: 'check' | 'download' = electronUpdateDownloading ? 'download' : 'check'; - if (electronUpdateDownloading && electronDownloadRetries < ELECTRON_DOWNLOAD_MAX_RETRIES) { - electronDownloadRetries += 1; - electronUpdateDownloading = false; - const delay = backoffDelay(electronDownloadRetries); - const waitSeconds = Math.round(delay / 1000); - log.warn( - `Update download failed (attempt ${electronDownloadRetries}/${ELECTRON_DOWNLOAD_MAX_RETRIES}); retrying in ${waitSeconds}s: ${message}`, - ); - setTimeout(() => { - try { - autoUpdater.checkForUpdates(); - } catch (retryError) { - log.warn('Update retry check failed', retryError); - } - }, delay); - return; - } - electronUpdateDownloading = false; - if (electronUpdateDownloaded) { - sendPendingRestart(); - return; - } - send(getMainWindow(), {type: 'error', context: lastContext, phase, message}); - }); - ipcMain.handle('updater-check', async (_e, context: UpdaterContext) => { - lastContext = context; - try { - autoUpdater.checkForUpdates(); - } catch (error) { - send(getMainWindow(), {type: 'error', context, phase: 'check', message: getErrorMessage(error)}); - } - }); - ipcMain.handle('updater-download', async () => {}); - ipcMain.handle('updater-install', async () => { - setQuitting(true); - autoUpdater.quitAndInstall(); - }); -} - let manualLatestCache: {at: number; info: ManualLatestInfo} | null = null; const MANUAL_CACHE_TTL_MS = 5 * 60 * 1000; @@ -587,8 +146,6 @@ function sendManualUpdateAvailable( type: 'available', context, version: latest.version, - downloadSize: null, - downloadStarted: false, downloadUrl: getManualDownloadUrl(latest), ...(downloadOptions.length > 0 ? {downloadOptions} : {}), }); @@ -606,185 +163,22 @@ async function checkManualUpdate(context: UpdaterContext, getMainWindow: () => B } } catch (error) { log.warn('Manual update check failed', error); - send(getMainWindow(), {type: 'error', context, phase: 'check', message: getErrorMessage(error)}); + send(getMainWindow(), {type: 'error', context, message: getErrorMessage(error)}); } } -async function downloadAppImageUpdate( - context: UpdaterContext, - getMainWindow: () => BrowserWindow | null, - latest: ManualLatestInfo, - target: AppImageTarget, - expectedSha256: string, -): Promise { - const version = latest.version; - const url = buildManualVersionDownloadUrl(version, 'appimage'); - let lastError: unknown; - for (let attempt = 1; attempt <= UPDATE_DOWNLOAD_MAX_ATTEMPTS; attempt += 1) { - let lastSampleAt = Date.now(); - let lastSampleTransferred = 0; - let smoothedBytesPerSecond = 0; - try { - const staged = await stageAppImageUpdate({ - target, - url, - expectedSha256, - fetchImpl: moduleNetworkFetch, - onProgress: ({transferred, total}) => { - const now = Date.now(); - const dtMs = now - lastSampleAt; - const complete = total > 0 && transferred >= total; - if (dtMs < UPDATE_PROGRESS_SAMPLE_INTERVAL_MS && !complete) { - return; - } - if (dtMs > 0 && transferred >= lastSampleTransferred) { - const instant = ((transferred - lastSampleTransferred) * 1000) / dtMs; - smoothedBytesPerSecond = - smoothedBytesPerSecond === 0 ? instant : smoothedBytesPerSecond * 0.7 + instant * 0.3; - } - lastSampleAt = now; - lastSampleTransferred = transferred; - send(getMainWindow(), { - type: 'progress', - context, - percent: total > 0 ? Math.min(100, (transferred / total) * 100) : 0, - transferred, - total, - bytesPerSecond: Math.round(smoothedBytesPerSecond), - }); - }, - }); - if (pendingAppImageUpdate) { - discardStagedAppImageUpdate(pendingAppImageUpdate.staged); - } - pendingAppImageUpdate = {version, target, staged}; - send(getMainWindow(), {type: 'downloaded', context, version}); - return; - } catch (error) { - lastError = error; - if ( - error instanceof AppImageChecksumError || - error instanceof AppImageStagingError || - attempt >= UPDATE_DOWNLOAD_MAX_ATTEMPTS - ) { - break; - } - const delay = backoffDelay(attempt); - const reason = getErrorMessage(error); - const waitSeconds = Math.round(delay / 1000); - log.warn( - `AppImage update download attempt ${attempt}/${UPDATE_DOWNLOAD_MAX_ATTEMPTS} failed (${reason}), retrying in ${waitSeconds}s`, - ); - await sleep(delay); - } - } - log.error('AppImage update download failed', lastError); - send(getMainWindow(), {type: 'error', context, phase: 'download', message: getErrorMessage(lastError)}); - sendManualUpdateAvailable(getMainWindow, context, latest); -} - -async function checkAppImageUpdate( - context: UpdaterContext, - getMainWindow: () => BrowserWindow | null, - target: AppImageTarget, -): Promise { - if (appImageUpdatePromise) { - return appImageUpdatePromise; - } - appImageUpdatePromise = (async () => { - send(getMainWindow(), {type: 'checking', context}); - let latest: ManualLatestInfo; - try { - latest = await fetchManualLatest({forceRefresh: context === 'user'}); - } catch (error) { - log.warn('AppImage update check failed', error); - send(getMainWindow(), {type: 'error', context, phase: 'check', message: getErrorMessage(error)}); - return; - } - if (pendingAppImageUpdate && compareVersions(latest.version, pendingAppImageUpdate.version) <= 0) { - send(getMainWindow(), {type: 'downloaded', context, version: pendingAppImageUpdate.version}); - return; - } - if (compareVersions(latest.version, app.getVersion()) <= 0) { - send(getMainWindow(), {type: 'not-available', context}); - return; - } - const published = latest.files.appimage; - const resolved = resolveAppImageTarget(target.installedPath); - if (!resolved.ok || !published?.sha256) { - log.info('AppImage cannot be replaced in place, so the manual download is offered instead.', { - reason: resolved.ok ? 'published-checksum-missing' : resolved.reason, - }); - sendManualUpdateAvailable(getMainWindow, context, latest); - return; - } - send(getMainWindow(), { - type: 'available', - context, - version: latest.version, - downloadSize: null, - downloadStarted: true, - }); - await downloadAppImageUpdate(context, getMainWindow, latest, resolved.target, published.sha256); - })().finally(() => { - appImageUpdatePromise = null; - }); - return appImageUpdatePromise; -} - -function installAppImageUpdate(getMainWindow: () => BrowserWindow | null): void { - if (appImageInstallStarted) { - log.warn('AppImage install already in progress, ignoring the duplicate request.'); - return; - } - const pending = pendingAppImageUpdate; - if (!pending) { - throw new Error('No AppImage update is ready to install.'); - } - try { - applyStagedAppImageUpdate(pending.target, pending.staged); - } catch (error) { - log.error('AppImage update install failed', error); - pendingAppImageUpdate = null; - send(getMainWindow(), {type: 'error', context: lastContext, phase: 'install', message: getErrorMessage(error)}); - return; - } - appImageInstallStarted = true; - pendingAppImageUpdate = null; - log.info(`Replaced ${pending.target.installedPath} with ${pending.version}, relaunching now.`); - relaunchAndExit(); -} - -function reclaimAbandonedAppImageUpdates(target: AppImageTarget): void { - try { - const reclaimed = sweepAbandonedAppImageUpdates(target); - if (reclaimed.length > 0) { - log.info(`Reclaimed ${reclaimed.length} abandoned AppImage staging directories in ${target.directory}.`); - } - } catch (error) { - log.warn('Failed to reclaim abandoned AppImage staging directories', error); - } -} - -function registerAppImageUpdater(getMainWindow: () => BrowserWindow | null, target: AppImageTarget): void { - reclaimAbandonedAppImageUpdates(target); - app.on('will-quit', () => { - if (!pendingAppImageUpdate || appImageInstallStarted) { - return; - } - discardStagedAppImageUpdate(pendingAppImageUpdate.staged); - pendingAppImageUpdate = null; - }); +function registerSelfUpdater(getMainWindow: () => BrowserWindow | null): void { ipcMain.handle('updater-check', async (_e, context: UpdaterContext) => { - lastContext = context; - await checkAppImageUpdate(context, getMainWindow, target); - }); - ipcMain.handle('updater-download', async (_e, context: UpdaterContext) => { - lastContext = context; - await checkAppImageUpdate(context, getMainWindow, target); - }); - ipcMain.handle('updater-install', async () => { - installAppImageUpdate(getMainWindow); + if (context !== 'user') { + return; + } + try { + await checkDesktopUpdateNow(); + send(getMainWindow(), {type: 'not-available', context}); + } catch (error) { + log.warn('Desktop update check failed', error); + send(getMainWindow(), {type: 'error', context, message: getErrorMessage(error)}); + } }); } @@ -793,6 +187,13 @@ function registerManualUpdater( reason: 'platform' | 'unpackaged' | 'managed-package', ): void { ipcMain.handle('updater-check', async (_e, context: UpdaterContext) => { + if (context === 'user') { + try { + await checkDesktopUpdateNow(); + } catch (error) { + log.warn('Desktop module update check failed', error); + } + } if (reason !== 'platform') { send(getMainWindow(), { type: 'unsupported', @@ -804,32 +205,13 @@ function registerManualUpdater( } await checkManualUpdate(context, getMainWindow); }); - ipcMain.handle('updater-download', async (_e, context: UpdaterContext) => { - send(getMainWindow(), { - type: 'unsupported', - context, - reason, - ...(reason === 'managed-package' ? {} : {downloadUrl: DOWNLOAD_PAGE_URL}), - }); - }); - ipcMain.handle('updater-install', async () => { - throw new Error('In-app updates are not supported on this platform.'); - }); } export function registerUpdater(getMainWindow: () => BrowserWindow | null) { const plan = resolveShellUpdatePlan(); switch (plan.capability) { case ShellUpdateCapability.SELF_UPDATE: - if (plan.updater === 'velopack') { - registerVelopackUpdater(getMainWindow); - return; - } - if (plan.updater === 'appimage') { - registerAppImageUpdater(getMainWindow, plan.target); - return; - } - registerElectronUpdater(getMainWindow); + registerSelfUpdater(getMainWindow); return; case ShellUpdateCapability.MANAGED_PACKAGE: registerManualUpdater(getMainWindow, 'managed-package'); diff --git a/fluxer_desktop/src/main/Window.ts b/fluxer_desktop/src/main/Window.ts index a4ce7a5f1..6e7d539a9 100644 --- a/fluxer_desktop/src/main/Window.ts +++ b/fluxer_desktop/src/main/Window.ts @@ -47,6 +47,7 @@ const runtimeSecurity = new DesktopRuntimeSecurity({ const LIVE_RESIZE_IDLE_MS = 400; const VISIBILITY_MARGIN = 32; const RENDERER_GONE_REPEAT_WINDOW_MS = 30000; +const CLOSE_FOR_UPDATE_TIMEOUT_MS = 5000; const THEME_WINDOW_BACKGROUND_COLORS: Readonly> = Object.freeze({ dark: '#1a181e', light: '#ebecef', @@ -153,6 +154,9 @@ let initialAllowTransparency: boolean | null = null; let themeStudioPopoutWindow: BrowserWindow | null = null; let lastRestorableMainWindowMaximized = false; let mainWindowRendererGone = false; +let closingMainWindowForUpdate = false; +let mainWindowTakeover: (() => void) | null = null; +const takeoverEndedListeners = new Set<() => void>(); let pendingMainWindowReveal: {readonly window: BrowserWindow; readonly requestShow: () => void} | null = null; const maximizeChangeForwarders = new WeakSet(); @@ -863,7 +867,7 @@ export function createWindow(options: CreateWindowOptions = {}): BrowserWindow { if (saveTimeout) clearTimeout(saveTimeout); endLiveResize(); saveWindowBounds(); - if (!isQuitting && shouldHideMainWindowOnClose()) { + if (!isQuitting && !closingMainWindowForUpdate && shouldHideMainWindowOnClose()) { event.preventDefault(); logger.info( process.platform === 'darwin' @@ -1127,6 +1131,10 @@ export function createWindow(options: CreateWindowOptions = {}): BrowserWindow { } export function showWindow(): void { + if (mainWindowTakeover != null) { + mainWindowTakeover(); + return; + } if (mainWindow && pendingMainWindowReveal?.window === mainWindow && !mainWindow.isVisible()) { pendingMainWindowReveal.requestShow(); return; @@ -1179,3 +1187,80 @@ export function hideWindow(): void { export function setQuitting(quitting: boolean): void { isQuitting = quitting; } + +export function beginMainWindowTakeover(focus: () => void): void { + mainWindowTakeover = focus; +} + +export function endMainWindowTakeover(): void { + if (mainWindowTakeover == null) return; + mainWindowTakeover = null; + for (const listener of Array.from(takeoverEndedListeners)) { + try { + listener(); + } catch (error) { + logger.error('A main window takeover listener threw', error); + } + } +} + +export function onMainWindowTakeoverEnded(listener: () => void): () => void { + takeoverEndedListeners.add(listener); + return () => { + takeoverEndedListeners.delete(listener); + }; +} + +export function isMainWindowTakenOver(): boolean { + return mainWindowTakeover != null; +} + +export function hideAppWindowsForUpdate(keep: BrowserWindow): ReadonlyArray { + const hidden: Array = []; + for (const window of BrowserWindow.getAllWindows()) { + if (window === keep || window.isDestroyed() || !window.isVisible()) continue; + window.hide(); + hidden.push(window); + } + return hidden; +} + +export function restoreAppWindowsAfterUpdate(hidden: ReadonlyArray): void { + for (const window of hidden) { + if (window.isDestroyed()) continue; + window.show(); + } +} + +export async function closeAppWindowsForUpdate(keep: BrowserWindow): Promise { + const closing = BrowserWindow.getAllWindows().filter((window) => window !== keep && !window.isDestroyed()); + closingMainWindowForUpdate = true; + try { + await Promise.all( + closing.map( + (window) => + new Promise((resolve) => { + let deadline: NodeJS.Timeout | null = null; + window.once('closed', () => { + if (deadline != null) clearTimeout(deadline); + resolve(); + }); + if (!window.isClosable()) { + window.destroy(); + return; + } + deadline = setTimeout(() => { + logger.warn('A window did not close for the update in time, destroying it'); + if (!window.isDestroyed()) window.destroy(); + }, CLOSE_FOR_UPDATE_TIMEOUT_MS); + window.webContents.once('will-prevent-unload', (event) => { + event.preventDefault(); + }); + window.close(); + }), + ), + ); + } finally { + closingMainWindowForUpdate = false; + } +} diff --git a/fluxer_desktop/src/main/WindowUpdateTakeover.test.mjs b/fluxer_desktop/src/main/WindowUpdateTakeover.test.mjs new file mode 100644 index 000000000..85deb1d8d --- /dev/null +++ b/fluxer_desktop/src/main/WindowUpdateTakeover.test.mjs @@ -0,0 +1,252 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import assert from 'node:assert/strict'; +import {readFileSync} from 'node:fs'; +import {describe, test} from 'node:test'; +import {installElectronStub} from './LocalAppTestSupport.test.mjs'; + +const openWindows = []; + +class FakeWindow { + constructor(name, {vetoUnload = false, closable = true} = {}) { + this.name = name; + this.vetoUnload = vetoUnload; + this.closable = closable; + this.visible = true; + this.destroyed = false; + this.listeners = new Map(); + this.unloadListeners = []; + this.webContents = { + once: (event, listener) => { + if (event === 'will-prevent-unload') this.unloadListeners.push(listener); + }, + }; + openWindows.push(this); + } + + once(event, listener) { + this.listeners.set(event, listener); + } + + isDestroyed() { + return this.destroyed; + } + + isVisible() { + return this.visible; + } + + isClosable() { + return this.closable; + } + + hide() { + this.visible = false; + } + + show() { + this.visible = true; + } + + close() { + if (!this.closable) return; + if (this.vetoUnload) { + let prevented = false; + for (const listener of this.unloadListeners) { + listener({preventDefault: () => (prevented = true)}); + } + if (!prevented) return; + } + this.destroy(); + } + + destroy() { + this.destroyed = true; + this.visible = false; + this.listeners.get('closed')?.(); + } +} + +const noop = () => undefined; +const ipcHandlers = new Map(); + +class ElectronEmitterStub { + on() { + return this; + } + + once() { + return this; + } + + off() { + return this; + } + + removeListener() { + return this; + } + + removeAllListeners() { + return this; + } + + emit() { + return false; + } +} + +installElectronStub({ + app: Object.assign(new ElectronEmitterStub(), { + isReady: () => true, + isPackaged: false, + getPath: () => '/tmp/fluxer-desktop-test', + getAppPath: () => '/tmp/fluxer-desktop-test', + getVersion: () => '0.0.0', + getLocale: () => 'en-US', + setPath: noop, + exit: noop, + quit: noop, + whenReady: () => Promise.resolve(), + commandLine: {appendSwitch: noop, appendArgument: noop}, + }), + BrowserWindow: class extends ElectronEmitterStub { + static fromWebContents() { + return null; + } + + static getAllWindows() { + return openWindows.filter((window) => !window.isDestroyed()); + } + + static getFocusedWindow() { + return null; + } + }, + Menu: {buildFromTemplate: () => ({}), setApplicationMenu: noop}, + Notification: Object.assign(class extends ElectronEmitterStub {}, {isSupported: () => false}), + clipboard: {}, + desktopCapturer: {}, + dialog: {showMessageBoxSync: () => 0, showErrorBox: noop}, + globalShortcut: {}, + ipcMain: Object.assign(new ElectronEmitterStub(), { + handle: (channel, handler) => { + ipcHandlers.set(channel, handler); + }, + removeHandler: noop, + }), + nativeImage: {createFromPath: () => ({isEmpty: () => true})}, + nativeTheme: new ElectronEmitterStub(), + net: {fetch: () => Promise.reject(new Error('outbound network is not available in tests'))}, + powerMonitor: new ElectronEmitterStub(), + powerSaveBlocker: {start: () => 0, stop: noop, isStarted: () => false}, + protocol: {registerSchemesAsPrivileged: noop, handle: noop, unhandle: noop, isProtocolHandled: () => false}, + safeStorage: {isEncryptionAvailable: () => false}, + screen: Object.assign(new ElectronEmitterStub(), { + getPrimaryDisplay: () => ({workAreaSize: {width: 1920, height: 1080}}), + getAllDisplays: () => [], + }), + session: {defaultSession: {}}, + shell: {openExternal: noop, showItemInFolder: noop}, + systemPreferences: {}, +}); + +const { + beginMainWindowTakeover, + closeAppWindowsForUpdate, + endMainWindowTakeover, + hideAppWindowsForUpdate, + onMainWindowTakeoverEnded, + restoreAppWindowsAfterUpdate, + isMainWindowTakenOver, + showWindow, +} = await import('@electron/main/Window'); + +describe('the update takes the app windows over', () => { + test('the windows hide at once and only the splash stays on screen', () => { + openWindows.length = 0; + const splash = new FakeWindow('splash'); + const main = new FakeWindow('main'); + const popout = new FakeWindow('voice popout'); + + hideAppWindowsForUpdate(splash); + + assert.equal(splash.isVisible(), true); + assert.equal(main.isVisible(), false); + assert.equal(popout.isVisible(), false); + }); + + test('a check that finds nothing gives back exactly the windows it hid', () => { + openWindows.length = 0; + const splash = new FakeWindow('splash'); + const main = new FakeWindow('main'); + const trayHidden = new FakeWindow('hidden popout'); + trayHidden.hide(); + + const hidden = hideAppWindowsForUpdate(splash); + restoreAppWindowsAfterUpdate(hidden); + + assert.deepEqual(hidden, [main]); + assert.equal(main.isVisible(), true); + assert.equal(trayHidden.isVisible(), false, 'a window the user had hidden stays hidden'); + }); + + test('a window that cannot be closed is destroyed at once instead of holding the update back', async () => { + openWindows.length = 0; + const splash = new FakeWindow('splash'); + const guard = new FakeWindow('screen capture guard', {closable: false}); + const startedAt = Date.now(); + + await closeAppWindowsForUpdate(splash); + + assert.equal(guard.isDestroyed(), true); + assert.ok(Date.now() - startedAt < 1000, 'the 5 second close deadline never came into it'); + }); + + test('ending the takeover tells its listeners once', () => { + let ended = 0; + const stop = onMainWindowTakeoverEnded(() => { + ended += 1; + }); + beginMainWindowTakeover(() => undefined); + endMainWindowTakeover(); + endMainWindowTakeover(); + stop(); + + assert.equal(ended, 1); + }); + + test('the windows really close, past a renderer that would veto the unload', async () => { + openWindows.length = 0; + const splash = new FakeWindow('splash'); + const main = new FakeWindow('main', {vetoUnload: true}); + const popout = new FakeWindow('theme studio'); + + await closeAppWindowsForUpdate(splash); + + assert.equal(main.isDestroyed(), true); + assert.equal(popout.isDestroyed(), true); + assert.equal(splash.isDestroyed(), false); + }); + + test('showing the app during the update raises the splash instead of a window that is gone', () => { + let focused = 0; + beginMainWindowTakeover(() => { + focused += 1; + }); + assert.equal(isMainWindowTakenOver(), true); + + showWindow(); + + assert.equal(focused, 1); + endMainWindowTakeover(); + assert.equal(isMainWindowTakenOver(), false); + showWindow(); + assert.equal(focused, 1); + }); + + test('close to hide never swallows the close the update asks for', () => { + const source = readFileSync(new URL('./Window.ts', import.meta.url), 'utf8'); + assert.match(source, /if \(!isQuitting && !closingMainWindowForUpdate && shouldHideMainWindowOnClose\(\)\) \{/); + }); +}); diff --git a/fluxer_desktop/src/main/index.ts b/fluxer_desktop/src/main/index.ts index dcc315d97..7d8b494ea 100644 --- a/fluxer_desktop/src/main/index.ts +++ b/fluxer_desktop/src/main/index.ts @@ -82,6 +82,7 @@ import {createApplicationMenu} from '@electron/main/Menu'; import { armOpenUrlForwarding, armSecondInstanceForwarding, + setMainWindowFactory, setOpenUrlSink, setSecondInstanceSink, } from '@electron/main/ModuleBootHandoff'; @@ -100,6 +101,7 @@ import { createWindow, getMainWindow, hideWindow, + isMainWindowTakenOver, setQuitting, showWindow, } from '@electron/main/Window'; @@ -374,6 +376,7 @@ if (launchConfigurationError) { }); armSecondInstanceForwarding(); setSecondInstanceSink(handleSecondInstance); + setMainWindowFactory(() => createWindow()); app.on('child-process-gone', (_event, details) => { log.error('Child process gone', details); }); @@ -591,6 +594,7 @@ if (launchConfigurationError) { initializeDesktopTray({ createWindow, getMainWindow, + isMainWindowTakenOver, hideWindow, setQuitting, showWindow, @@ -602,7 +606,7 @@ if (launchConfigurationError) { } app.on('activate', () => { const mainWindow = getMainWindow(); - if (mainWindow === null || mainWindow.isDestroyed()) { + if ((mainWindow === null || mainWindow.isDestroyed()) && !isMainWindowTakenOver()) { createWindow(); } else { showWindow(); @@ -619,6 +623,10 @@ if (launchConfigurationError) { log.info('[Shutdown] All windows closed before startup created the main window, keeping app alive'); return; } + if (isMainWindowTakenOver()) { + log.info('[Shutdown] The update splash closed mid update, keeping app alive to reopen the main window'); + return; + } const settings = getDesktopWindowBehaviorSettings(); if (process.platform !== 'darwin' && !(hasActiveDesktopTray() && settings.showTrayIcon && settings.closeToTray)) { app.quit(); diff --git a/fluxer_desktop/src/preload/LocalAppPreload.ts b/fluxer_desktop/src/preload/LocalAppPreload.ts index b8a7900d8..334b0f74a 100644 --- a/fluxer_desktop/src/preload/LocalAppPreload.ts +++ b/fluxer_desktop/src/preload/LocalAppPreload.ts @@ -25,9 +25,14 @@ import {DESKTOP_RUNTIME_CONFIG_CHANNELS} from '@fluxer/desktop_ipc/src/LocalAppR import type { DesktopModuleAPI, DesktopModuleEnsureResult, - DesktopPendingModuleUpdate, + DesktopUpdateAPI, + DesktopUpdateState, +} from '@fluxer/desktop_ipc/src/ModuleContract'; +import { + DESKTOP_MODULE_CHANNELS, + DESKTOP_UPDATE_CHANNELS, + DESKTOP_UPDATE_EVENTS, } from '@fluxer/desktop_ipc/src/ModuleContract'; -import {DESKTOP_MODULE_CHANNELS, DESKTOP_MODULE_EVENTS} from '@fluxer/desktop_ipc/src/ModuleContract'; interface LocalAppPreloadRenderer { invoke: (channel: string, ...args: Array) => Promise; @@ -49,6 +54,7 @@ interface DesktopLocalAppUploadPreloadAPI { interface LocalAppPreloadAPI { readonly desktopLegacyHarvest: DesktopLegacyHarvestPreloadAPI; readonly desktopModules: DesktopModuleAPI; + readonly desktopUpdate: DesktopUpdateAPI; readonly desktopRuntimeConfig: DesktopRuntimeConfigAPI; readonly localAppUpload: DesktopLocalAppUploadPreloadAPI; } @@ -64,16 +70,14 @@ export function createLocalAppPreloadAPI(renderer: LocalAppPreloadRenderer): Loc }), desktopModules: Object.freeze({ ensure: (moduleName: string) => invoke(DESKTOP_MODULE_CHANNELS.ensure, moduleName), - pendingUpdate: () => invoke(DESKTOP_MODULE_CHANNELS.pendingUpdate), - applyPendingUpdate: () => invoke(DESKTOP_MODULE_CHANNELS.applyPendingUpdate), - onPendingUpdateChanged: (listener: (pending: DesktopPendingModuleUpdate | null) => void) => - subscribeToChannel( - renderer, - DESKTOP_MODULE_EVENTS.pendingUpdateChanged, - listener, - ), confirmLaunch: () => invoke(DESKTOP_MODULE_CHANNELS.confirmLaunch), }), + desktopUpdate: Object.freeze({ + state: () => invoke(DESKTOP_UPDATE_CHANNELS.state), + start: () => invoke(DESKTOP_UPDATE_CHANNELS.start), + onStateChanged: (listener: (state: DesktopUpdateState) => void) => + subscribeToChannel(renderer, DESKTOP_UPDATE_EVENTS.stateChanged, listener), + }), desktopRuntimeConfig: Object.freeze({ initialInput: () => invoke(DESKTOP_RUNTIME_CONFIG_CHANNELS.initialInput), resolve: (request: DesktopRuntimeResolveRequest) => diff --git a/fluxer_desktop/src/preload/index.ts b/fluxer_desktop/src/preload/index.ts index 9d5953749..c1450566b 100644 --- a/fluxer_desktop/src/preload/index.ts +++ b/fluxer_desktop/src/preload/index.ts @@ -463,8 +463,6 @@ const api: ElectronAPI = { return () => ipcRenderer.removeListener('updater-event', handler); }, updaterCheck: (context: UpdaterContext): Promise => ipcRenderer.invoke('updater-check', context), - updaterDownload: (context: UpdaterContext): Promise => ipcRenderer.invoke('updater-download', context), - updaterInstall: () => ipcRenderer.invoke('updater-install'), windowMinimize: (): void => { ipcRenderer.send('window-minimize'); }, diff --git a/fluxer_desktop/src/preload/splash.cjs b/fluxer_desktop/src/preload/splash.cjs index ad0ee566e..dec246bbd 100644 --- a/fluxer_desktop/src/preload/splash.cjs +++ b/fluxer_desktop/src/preload/splash.cjs @@ -3,6 +3,7 @@ const {ipcRenderer} = require('electron'); const SPLASH_STATE_CHANNEL = 'desktop-splash:state'; +const SPLASH_REVEALED_CHANNEL = 'desktop-splash:revealed'; const SPLASH_READY_CHANNEL = 'desktop-splash:ready'; const SPLASH_RETRY_CHANNEL = 'desktop-splash:retry-now'; const SPLASH_QUIT_CHANNEL = 'desktop-splash:quit'; @@ -87,7 +88,7 @@ let renderedLayout = null; let renderedManualSignature = null; let countdownTimer = null; let selectedOption = null; -let splashStartedAt = Date.now(); +let splashStartedAt = Number.POSITIVE_INFINITY; let diagnosticsRevealTimer = null; let diagnosticsCopiedTimer = null; @@ -592,12 +593,24 @@ function afterNextPaint(callback) { }); } -window.addEventListener('DOMContentLoaded', () => { +function restartDiagnosticsReveal() { splashStartedAt = Date.now(); + if (diagnosticsRevealTimer != null) clearTimeout(diagnosticsRevealTimer); diagnosticsRevealTimer = setTimeout(() => { diagnosticsRevealTimer = null; render(); }, DIAGNOSTICS_REVEAL_MS); +} + +ipcRenderer.on(SPLASH_REVEALED_CHANNEL, () => { + restartDiagnosticsReveal(); + render(); +}); + +window.addEventListener('DOMContentLoaded', () => { + if (!/(?:^|[?&])held=1(?:&|$)/.test(window.location?.search ?? '')) { + restartDiagnosticsReveal(); + } render(); const mount = document.getElementById(SPLASH_MOUNT_ID); const branded = mount == null ? Promise.resolve() : waitForBranding(mount); diff --git a/packages/desktop_ipc/src/ModuleContract.ts b/packages/desktop_ipc/src/ModuleContract.ts index 4abf83a1f..00b72679e 100644 --- a/packages/desktop_ipc/src/ModuleContract.ts +++ b/packages/desktop_ipc/src/ModuleContract.ts @@ -2,13 +2,16 @@ export const DESKTOP_MODULE_CHANNELS = Object.freeze({ ensure: 'desktop-modules:ensure', - pendingUpdate: 'desktop-modules:pending-update', - applyPendingUpdate: 'desktop-modules:apply-pending-update', confirmLaunch: 'desktop-modules:confirm-launch', } as const); -export const DESKTOP_MODULE_EVENTS = Object.freeze({ - pendingUpdateChanged: 'desktop-modules:pending-update-changed', +export const DESKTOP_UPDATE_CHANNELS = Object.freeze({ + state: 'desktop-update:state', + start: 'desktop-update:start', +} as const); + +export const DESKTOP_UPDATE_EVENTS = Object.freeze({ + stateChanged: 'desktop-update:state-changed', } as const); const DESKTOP_MODULE_NAME_PATTERN = /^[a-z][a-z0-9_]{0,63}$/u; @@ -55,6 +58,16 @@ export interface DesktopModuleAPI { confirmLaunch?: () => Promise; } +export interface DesktopUpdateState { + readonly available: boolean; +} + +export interface DesktopUpdateAPI { + state: () => Promise; + start: () => Promise; + onStateChanged: (listener: (state: DesktopUpdateState) => void) => () => void; +} + export function isDesktopModuleName(value: unknown): value is string { return typeof value === 'string' && DESKTOP_MODULE_NAME_PATTERN.test(value); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7252d9e22..d7728ec2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1764,9 +1764,6 @@ importers: hunspell-asm: specifier: 4.0.2 version: 4.0.2(patch_hash=594ff55f398ab3a575ba1b4d090c4838a26e4251a2f1d65ba0f02d5b098d02ae) - update-electron-app: - specifier: 3.3.0 - version: 3.3.0 velopack: specifier: 1.2.0 version: 1.2.0 @@ -8134,9 +8131,6 @@ packages: github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - github-url-to-object@4.0.6: - resolution: {integrity: sha512-NaqbYHMUAlPcmWFdrAB7bcxrNIiiJWJe8s/2+iOc9vlcHlwHqSGrPk+Yi3nu6ebTwgsZEa7igz+NH2vEq3gYwQ==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -8454,9 +8448,6 @@ packages: is-unsafe@2.0.2: resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==} - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -10772,9 +10763,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-electron-app@3.3.0: - resolution: {integrity: sha512-5s73OcyNhAvogjxzAy8pbephY+bP6aXpXFv68OT1dNiEbcUpIUCv/ZZPalqGclnXUgx3oyn+yVdAIIVUpn/C1g==} - upng-js@2.1.0: resolution: {integrity: sha512-d3xzZzpMP64YkjP5pr8gNyvBt7dLk/uGI67EctzDuVp4lCZyVMo0aJO6l/VDlgbInJYDY6cnClLoBp29eKWI6g==} @@ -17191,10 +17179,6 @@ snapshots: github-slugger@2.0.0: {} - github-url-to-object@4.0.6: - dependencies: - is-url: 1.2.4 - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -17620,8 +17604,6 @@ snapshots: is-unsafe@2.0.2: {} - is-url@1.2.4: {} - isarray@1.0.0: {} isbinaryfile@4.0.10: {} @@ -20379,11 +20361,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-electron-app@3.3.0: - dependencies: - github-url-to-object: 4.0.6 - ms: 2.1.3 - upng-js@2.1.0(patch_hash=34ef83d86b7cdf910a393193e3321a239470e7c5e5c7755fd14c30e30db4ea8e): dependencies: pako: 1.0.11