diff --git a/src/tools/eta-calculator/eta-calculator.service.ts b/src/tools/eta-calculator/eta-calculator.service.ts index 6c061a9d..f5f63c88 100644 --- a/src/tools/eta-calculator/eta-calculator.service.ts +++ b/src/tools/eta-calculator/eta-calculator.service.ts @@ -1,6 +1,7 @@ import { formatDuration } from 'date-fns'; +import type { Locale } from 'date-fns'; -export function formatMsDuration(duration: number) { +export function formatMsDuration(duration: number, locale: Locale) { const ms = Math.floor(duration % 1000); const secs = Math.floor(((duration - ms) / 1000) % 60); const mins = Math.floor((((duration - ms) / 1000 - secs) / 60) % 60); @@ -11,6 +12,6 @@ export function formatMsDuration(duration: number) { hours: hrs, minutes: mins, seconds: secs, - }) + (ms > 0 ? ` ${ms} ms` : '') + }, { locale }) + (ms > 0 ? ` ${ms} ms` : '') ); } diff --git a/src/tools/eta-calculator/eta-calculator.vue b/src/tools/eta-calculator/eta-calculator.vue index e1c36a62..f8071f45 100644 --- a/src/tools/eta-calculator/eta-calculator.vue +++ b/src/tools/eta-calculator/eta-calculator.vue @@ -3,57 +3,58 @@ import { addMilliseconds, formatRelative } from 'date-fns'; -import { enGB } from 'date-fns/locale'; +import { enGB, zhCN } from 'date-fns/locale'; import { formatMsDuration } from './eta-calculator.service'; +const { t, locale } = useI18n(); const unitCount = ref(3 * 62); const unitPerTimeSpan = ref(3); const timeSpan = ref(5); const timeSpanUnitMultiplier = ref(60000); const startedAt = ref(Date.now()); +const localeLang = computed(() => locale.value === 'zh' ? zhCN : enGB); const durationMs = computed(() => { const timeSpanMs = timeSpan.value * timeSpanUnitMultiplier.value; return unitCount.value / (unitPerTimeSpan.value / timeSpanMs); }); const endAt = computed(() => - formatRelative(addMilliseconds(startedAt.value, durationMs.value), Date.now(), { locale: enGB }), + formatRelative(addMilliseconds(startedAt.value, durationMs.value), Date.now(), { locale: localeLang.value }), );