From a9af7e4a09567943cc28de4d8e621ade85fb85af Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Fri, 2 Dec 2022 16:16:06 +0800 Subject: [PATCH] feat: short time ago --- components/status/StatusCard.vue | 2 +- composables/time.ts | 24 +++++++++--------- locales/en-US.json | 42 +++++++++++++++++++++----------- locales/es-ES.json | 28 ++++++++++----------- 4 files changed, 56 insertions(+), 40 deletions(-) diff --git a/components/status/StatusCard.vue b/components/status/StatusCard.vue index 36585e96..af0a4850 100644 --- a/components/status/StatusCard.vue +++ b/components/status/StatusCard.vue @@ -41,7 +41,7 @@ function go(evt: MouseEvent | KeyboardEvent) { } const createdAt = useFormattedDateTime(status.createdAt) -const timeAgoOptions = useTimeAgoOptions() +const timeAgoOptions = useTimeAgoOptions(true) const timeago = useTimeAgo(() => status.createdAt, timeAgoOptions) diff --git a/composables/time.ts b/composables/time.ts index 0a9cbc5e..89bcc891 100644 --- a/composables/time.ts +++ b/composables/time.ts @@ -12,28 +12,30 @@ export const useFormattedDateTime = ( }) } -export const useTimeAgoOptions = (): UseTimeAgoOptions => { +export const useTimeAgoOptions = (short = false): UseTimeAgoOptions => { const { d, t } = useI18n() + const prefix = short ? 'short_' : '' return { - showSecond: true, - updateInterval: 1_000, + showSecond: !short, + updateInterval: short ? 60_000 : 1_000, messages: { justNow: t('time_ago_options.just_now'), // just return the value past: n => n, // just return the value future: n => n, - second: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_second`, n), - minute: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_minute`, n), - hour: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_hour`, n), - day: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_day`, n), - week: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_week`, n), - month: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_month`, n), - year: (n, p) => t(`time_ago_options.${p ? 'past' : 'future'}_year`, n), + second: (n, p) => t(`time_ago_options.${prefix}second_${p ? 'past' : 'future'}`, n), + minute: (n, p) => t(`time_ago_options.${prefix}minute_${p ? 'past' : 'future'}`, n), + hour: (n, p) => t(`time_ago_options.${prefix}hour_${p ? 'past' : 'future'}`, n), + day: (n, p) => t(`time_ago_options.${prefix}day_${p ? 'past' : 'future'}`, n), + week: (n, p) => t(`time_ago_options.${prefix}week_${p ? 'past' : 'future'}`, n), + month: (n, p) => t(`time_ago_options.${prefix}month_${p ? 'past' : 'future'}`, n), + year: (n, p) => t(`time_ago_options.${prefix}year_${p ? 'past' : 'future'}`, n), }, fullDateFormatter(date) { - return d(date, 'long') + return d(date, short ? 'short' : 'long') }, } } + diff --git a/locales/en-US.json b/locales/en-US.json index 11d7f4e6..9dda5b9d 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -142,20 +142,34 @@ }, "time_ago_options": { "just_now": "just now", - "past_second": "just now|{n} second ago|{n} seconds ago", - "future_second": "just now|in {n} second|in {n} seconds", - "past_minute": "0 minutes ago|1 minute ago|{n} minutes ago", - "future_minute": "in 0 minutes|in 1 minute|in {n} minutes", - "past_hour": "0 hours ago|1 hour ago|{n} hours ago", - "future_hour": "in 0 hours|in 1 hour|in {n} hours", - "past_day": "0 days ago|yesterday|{n} days ago", - "future_day": "in 0 days|tomorrow|in {n} days", - "past_week": "0 weeks ago|last week|{n} weeks ago", - "future_week": "in 0 weeks|next week|in {n} weeks", - "past_month": "0 months ago|last month|{n} months ago", - "future_month": "in 0 months|next month|in {n} months", - "past_year": "0 years ago|last year|{n} years ago", - "future_year": "in 0 years|next year|in {n} years" + "second_past": "just now|{n} second ago|{n} seconds ago", + "second_future": "just now|in {n} second|in {n} seconds", + "minute_past": "0 minutes ago|1 minute ago|{n} minutes ago", + "minute_future": "in 0 minutes|in 1 minute|in {n} minutes", + "hour_past": "0 hours ago|1 hour ago|{n} hours ago", + "hour_future": "in 0 hours|in 1 hour|in {n} hours", + "day_past": "0 days ago|yesterday|{n} days ago", + "day_future": "in 0 days|tomorrow|in {n} days", + "week_past": "0 weeks ago|last week|{n} weeks ago", + "week_future": "in 0 weeks|next week|in {n} weeks", + "month_past": "0 months ago|last month|{n} months ago", + "month_future": "in 0 months|next month|in {n} months", + "year_past": "0 years ago|last year|{n} years ago", + "year_future": "in 0 years|next year|in {n} years", + "short_second_past": "{n}s", + "short_second_future": "in {n}s", + "short_minute_past": "{n}min", + "short_minute_future": "in {n}min", + "short_hour_past": "{n}h", + "short_hour_future": "in {n}h", + "short_day_past": "{n}d", + "short_day_future": "in {n}d", + "short_week_past": "{n}w", + "short_week_future": "in {n}w", + "short_month_past": "{n}mo", + "short_month_future": "in {n}mo", + "short_year_past": "{n}y", + "short_year_future": "in {n}y" }, "timeline": { "show_new_items": "Show {n} new items" diff --git a/locales/es-ES.json b/locales/es-ES.json index fe2a4a5e..06454762 100644 --- a/locales/es-ES.json +++ b/locales/es-ES.json @@ -126,20 +126,20 @@ }, "time_ago_options": { "just_now": "ahora mismo", - "past_second": "hace 0 segundos|hace {n} segundo|hace {n} segundos", - "future_second": "dentro de 0 segundos|dentro de {n} segundo|dentro de {n} segundos", - "past_minute": "hace 0 minutos|hace 1 minuto|hace {n} minutos", - "future_minute": "dentro de 0 minutos|dentro de 1 minuto|dentro de {n} minutos", - "past_hour": "hace 0 horas|hace 1 hora|hace {n} horas", - "future_hour": "dentro de 0 horas|dentro de 1 hora|dentro {n} horas", - "past_day": "hace 0 días|ayer|hace {n} días", - "future_day": "dentro de 0 días|mañana|dentro de {n} días", - "past_week": "hace 0 semanas|la semana pasada|hace {n} semanas", - "future_week": "dentro de 0 semanas|la próxima semana|dentro de {n} semanas", - "past_month": "hace 0 meses|el mes pasado|hace {n} meses", - "future_month": "dentro de 0 meses|el próximo mes|dentro de {n} meses", - "past_year": "hace 0 años|el año pasado|hace {n} años", - "future_year": "dentro de 0 años|el próximo año|dentro de {n} años", + "second_past": "hace 0 segundos|hace {n} segundo|hace {n} segundos", + "second_future": "dentro de 0 segundos|dentro de {n} segundo|dentro de {n} segundos", + "minute_past": "hace 0 minutos|hace 1 minuto|hace {n} minutos", + "minute_future": "dentro de 0 minutos|dentro de 1 minuto|dentro de {n} minutos", + "hour_past": "hace 0 horas|hace 1 hora|hace {n} horas", + "hour_future": "dentro de 0 horas|dentro de 1 hora|dentro {n} horas", + "day_past": "hace 0 días|ayer|hace {n} días", + "day_future": "dentro de 0 días|mañana|dentro de {n} días", + "week_past": "hace 0 semanas|la semana pasada|hace {n} semanas", + "week_future": "dentro de 0 semanas|la próxima semana|dentro de {n} semanas", + "month_past": "hace 0 meses|el mes pasado|hace {n} meses", + "month_future": "dentro de 0 meses|el próximo mes|dentro de {n} meses", + "year_past": "hace 0 años|el año pasado|hace {n} años", + "year_future": "dentro de 0 años|el próximo año|dentro de {n} años", "tomorrow": "mañana", "yesterday": "ayer" },