import { __, sprintf } from '@wordpress/i18n'; import type { Counts, Scan } from '../../shared/api/types/status'; import { formatNumber } from '../../shared/lib/numbers'; import { linksPhrase } from '../../shared/text/countedPhrases'; import { timeAgo } from '../../shared/lib/timeAgo'; import { SECONDS_PER_MINUTE } from '../../shared/lib/timeUnits'; const SECONDS_SHOWN_BELOW = 90; export function scanTimeLeftText( scan: Scan ): string { if ( scan.state === 'paused' || scan.eta_seconds === null ) { return __( 'Waiting', 'aiplaz-link-checkup' ); } if ( scan.eta_seconds < SECONDS_SHOWN_BELOW ) { return sprintf( /* translators: %s: number of seconds */ __( 'About %s s left', 'aiplaz-link-checkup' ), formatNumber( scan.eta_seconds ) ); } return sprintf( /* translators: %s: number of minutes */ __( 'About %s min left', 'aiplaz-link-checkup' ), formatNumber( Math.round( scan.eta_seconds / SECONDS_PER_MINUTE ) ) ); } export function scanActivitySentence( scan: Scan ): string { if ( scan.phase === 'reading' ) { return __( 'Reading your posts and pages.', 'aiplaz-link-checkup' ); } return sprintf( /* translators: %s: number of links, for example "3 links" */ __( 'Checking %s at a time. You can close this page.', 'aiplaz-link-checkup' ), linksPhrase( scan.parallel ) ); } export function lastScanText( scan: Scan, counts: Counts, now: number ): string { if ( scan.finished_at === null || scan.finished_at === '' ) { return __( 'No full scan has finished yet.', 'aiplaz-link-checkup' ); } return sprintf( /* translators: 1: when the scan finished, for example "2 hours ago", 2: number of links, 3: number of posts and pages */ __( 'Last full scan finished %1$s. It checked %2$s links in %3$s posts and pages.', 'aiplaz-link-checkup' ), timeAgo( scan.finished_at, now ), formatNumber( counts.total ), formatNumber( scan.posts_count ) ); }