fix: show a live sample on every date format and region option

This commit is contained in:
Linus Rath
2026-10-11 17:09:55 +02:00
parent efefbd1358
commit 93969a1371
30 changed files with 150 additions and 131 deletions
+25 -23
View File
@@ -58,25 +58,27 @@ export function LanguageSettings() {
today: formatDate(today),
thisWeek: formatDate(thisWeek),
older: formatDate(older),
// Every dropdown option carries a sample of what it renders, so the
// choices read alike instead of mixing names, hints and patterns.
dateFormat: {
smart: formatDate(thisWeek, { dateFormat: 'smart' }),
relative: formatDate(thisWeek, { dateFormat: 'relative' }),
full: formatDate(older, { dateFormat: 'full' }),
},
dateLocale: {
auto: formatDate(older, { dateFormat: 'smart', dateLocale: 'auto' }),
iso: formatDate(older, { dateFormat: 'smart', dateLocale: 'iso' }),
'en-GB': formatDate(older, { dateFormat: 'smart', dateLocale: 'en-GB' }),
'en-US': formatDate(older, { dateFormat: 'smart', dateLocale: 'en-US' }),
},
};
}, [locale, dateFormat, dateLocale, timeFormat, timeZone]);
// Today's date in the UI language's numeric order, so "Automatic" names
// the format it resolves to instead of a vague "match language".
const autoDateExample = useMemo(() => {
void locale; void timeZone;
const uiLocale = getEffectiveLocale();
try {
return new Date().toLocaleDateString(uiLocale === 'en' ? 'en-US' : uiLocale, {
timeZone: getEffectiveTimeZone(),
year: 'numeric',
month: '2-digit',
day: '2-digit',
});
} catch {
return '';
}
}, [locale, timeZone]);
// CJK labels use full-width parentheses.
const withExample = (label: string, example: string) => {
if (!example) return label;
return /^(zh|ja)/.test(getEffectiveLocale()) ? `${label}(${example})` : `${label} (${example})`;
};
// Current wall-clock in the effective zone so a pick can be sanity-checked.
const timeZonePreview = useMemo(() => {
@@ -106,9 +108,9 @@ export function LanguageSettings() {
value={dateFormat}
onChange={(value) => updateSetting('dateFormat', value as DateFormat)}
options={[
{ value: 'smart', label: t('date_format.smart') },
{ value: 'relative', label: t('date_format.relative') },
{ value: 'full', label: t('date_format.full') },
{ value: 'smart', label: withExample(t('date_format.smart'), preview.dateFormat.smart) },
{ value: 'relative', label: withExample(t('date_format.relative'), preview.dateFormat.relative) },
{ value: 'full', label: withExample(t('date_format.full'), preview.dateFormat.full) },
]}
/>
<div className="text-xs text-muted-foreground text-end space-y-0.5 font-mono">
@@ -133,10 +135,10 @@ export function LanguageSettings() {
value={dateLocale}
onChange={(value) => updateSetting('dateLocale', value as DateLocale)}
options={[
{ value: 'auto', label: t('date_locale.auto', { example: autoDateExample }) },
{ value: 'iso', label: t('date_locale.iso') },
{ value: 'en-GB', label: t('date_locale.dmy') },
{ value: 'en-US', label: t('date_locale.mdy') },
{ value: 'auto', label: withExample(t('date_locale.auto'), preview.dateLocale.auto) },
{ value: 'iso', label: withExample(t('date_locale.iso'), preview.dateLocale.iso) },
{ value: 'en-GB', label: withExample(t('date_locale.dmy'), preview.dateLocale['en-GB']) },
{ value: 'en-US', label: withExample(t('date_locale.mdy'), preview.dateLocale['en-US']) },
]}
/>
</SettingItem>
+13
View File
@@ -190,4 +190,17 @@ describe('mail timestamp formatting honours the override', () => {
expect(formatDate(new Date('nope'))).toBe('');
expect(formatDate(undefined as unknown as string)).toBe('');
});
it('formatDate overrides preview other options without touching the store', () => {
vi.useFakeTimers();
vi.setSystemTime(new Date('2026-07-01T16:00:00Z'));
const older = new Date('2026-05-01T15:31:00Z');
useSettingsStore.setState({ dateFormat: 'smart', dateLocale: 'en-US' });
expect(formatDate(older)).toBe('05/01/2026');
expect(formatDate(older, { dateLocale: 'iso' })).toBe('2026-05-01');
expect(formatDate(older, { dateLocale: 'en-GB' })).toBe('01/05/2026');
expect(formatDate(older, { dateFormat: 'full', dateLocale: 'iso' })).toContain('15:31');
expect(useSettingsStore.getState()).toMatchObject({ dateFormat: 'smart', dateLocale: 'en-US' });
});
});
+7 -3
View File
@@ -5,7 +5,7 @@ import type { UnifiedMailboxRole } from "./jmap/types";
import { debug } from "./debug";
import { getEffectiveLocale } from '@/i18n/detect-locale';
import { useSettingsStore } from "@/stores/settings-store";
import type { DateLocale } from "@/stores/settings-store";
import type { DateFormat, DateLocale } from "@/stores/settings-store";
import { getEffectiveTimeZone, getWallClock } from "./timezone";
export function cn(...inputs: ClassValue[]) {
@@ -94,7 +94,11 @@ function resolveDateLocale<T extends string | undefined>(
* bucketing - a browser pinned to UTC for anti-fingerprinting must not
* roll a 00:30 local mail into "yesterday" (#755).
*/
export function formatDate(date: Date | string): string {
export function formatDate(
date: Date | string,
// Settings preview: render as if these were picked, without saving them.
overrides?: { dateFormat?: DateFormat; dateLocale?: DateLocale },
): string {
const d = typeof date === "string" ? new Date(date) : date;
// An unparsable receivedAt (e.g. a 5-digit year) makes Intl throw
// "RangeError: Invalid time value" and takes the whole list down with it.
@@ -107,7 +111,7 @@ export function formatDate(date: Date | string): string {
// en-US in Intl; everything else uses the language subtag as-is and lets
// the runtime pick a sensible default region.
const uiLocale = locale === "en" ? "en-US" : locale;
const { dateFormat, dateLocale, timeFormat } = useSettingsStore.getState();
const { dateFormat, dateLocale, timeFormat } = { ...useSettingsStore.getState(), ...overrides };
// Numeric dates additionally honour the regional `dateLocale` override
// (defaults to `auto` = the UI language, preserving prior behaviour). (#456)
const numericLocale = resolveDateLocale(dateLocale, uiLocale);
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "تنسيق التاريخ",
"description": "كيفية عرض التواريخ في قائمة البريد",
"smart": "ذكي (يراعي اللغة المحلية)",
"relative": "نسبي (قبل ساعة، قبل يومين)",
"smart": "ذكي",
"relative": "نسبي",
"full": "التاريخ الكامل دائمًا",
"preview_today": "اليوم:",
"preview_this_week": "هذا الأسبوع:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "منطقة تنسيق التاريخ",
"description": "كيفية ترتيب التاريخ الرقمي (يوم، شهر، سنة)",
"auto": "تلقائي ({example})",
"iso": "ISO 8601 (سنة-شهر-يوم)",
"auto": "تلقائي",
"iso": "ISO 8601",
"dmy": "يوم/شهر/سنة",
"mdy": "شهر/يوم/سنة"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Format de data",
"description": "Com es mostren les dates a la llista de correus",
"smart": "Intel·ligent (segons l'idioma)",
"relative": "Relatiu (fa 1 h, fa 2 d)",
"smart": "Intel·ligent",
"relative": "Relatiu",
"full": "Sempre la data completa",
"preview_today": "Avui:",
"preview_this_week": "Aquesta setmana:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Regió del format de data",
"description": "Com s'ordenen les dates numèriques (dia, mes, any)",
"auto": "Automàtic ({example})",
"iso": "ISO 8601 (AAAA-MM-DD)",
"auto": "Automàtic",
"iso": "ISO 8601",
"dmy": "Dia/Mes/Any",
"mdy": "Mes/Dia/Any"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Formát data",
"description": "Jak se zobrazují data v seznamu e-mailů",
"smart": "Chytrý (regionální)",
"relative": "Relativní (před 1 h, před 2 d)",
"smart": "Chytrý",
"relative": "Relativní",
"full": "Vždy úplné datum",
"preview_today": "Dnes:",
"preview_this_week": "Tento týden:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Region formátu data",
"description": "Pořadí částí číselného data (den, měsíc, rok)",
"auto": "Automaticky ({example})",
"iso": "ISO 8601 (RRRR-MM-DD)",
"auto": "Automaticky",
"iso": "ISO 8601",
"dmy": "Den/měsíc/rok",
"mdy": "Měsíc/den/rok"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Datoformat",
"description": "Sådan vises datoer på e-mail-listen",
"smart": "Smart (regionalt)",
"relative": "Relativ (for 1 t siden, for 2 d siden)",
"smart": "Smart",
"relative": "Relativ",
"full": "Altid fuld dato",
"preview_today": "I dag:",
"preview_this_week": "Denne uge:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Datumsformat",
"description": "Wie Daten in der E-Mail-Liste angezeigt werden",
"smart": "Intelligent (gebietsschemaabhängig)",
"relative": "Relativ (vor 1 Std., vor 2 Tagen)",
"smart": "Intelligent",
"relative": "Relativ",
"full": "Immer vollständiges Datum",
"preview_today": "Heute:",
"preview_this_week": "Diese Woche:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Region für Datumsformat",
"description": "Legt fest, in welcher Reihenfolge numerische Datumsangaben angezeigt werden (Tag, Monat, Jahr).",
"auto": "Automatisch ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatisch",
"iso": "ISO 8601",
"dmy": "Tag/Monat/Jahr",
"mdy": "Monat/Tag/Jahr"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Date Format",
"description": "How dates are shown in the email list",
"smart": "Smart (locale-aware)",
"relative": "Relative (1h ago, 2d ago)",
"smart": "Smart",
"relative": "Relative",
"full": "Always full date",
"preview_today": "Today:",
"preview_this_week": "This week:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Formato de Fecha",
"description": "Cómo se muestran las fechas en la lista de correos",
"smart": "Inteligente (según región)",
"relative": "Relativo (hace 1 h, hace 2 d)",
"smart": "Inteligente",
"relative": "Relativo",
"full": "Fecha completa siempre",
"preview_today": "Hoy:",
"preview_this_week": "Esta semana:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+2 -2
View File
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Format de date",
"description": "Comment les dates apparaissent dans la liste des e-mails",
"smart": "Intelligent (adapté à la région)",
"relative": "Relatif (il y a 1 h, il y a 2 j)",
"smart": "Intelligent",
"relative": "Relatif",
"full": "Toujours la date complète",
"preview_today": "Aujourd'hui :",
"preview_this_week": "Cette semaine :",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1281,8 +1281,8 @@
"date_format": {
"label": "פורמט תאריך",
"description": "כיצד יש להציג תאריכים",
"smart": "חכם (מותאם לאזור)",
"relative": "יחסית (לפני שעה, לפני יומיים)",
"smart": "חכם",
"relative": "יחסית",
"full": "תמיד תאריך מלא",
"preview_today": "היום:",
"preview_this_week": "השבוע הזה:",
@@ -1291,8 +1291,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Dátum formátum",
"description": "Hogyan jelenjenek meg a dátumok az e-mail listában",
"smart": "Intelligens (nyelvfüggő)",
"relative": "Relatív (1 órája, 2 napja)",
"smart": "Intelligens",
"relative": "Relatív",
"full": "Mindig teljes dátum",
"preview_today": "Ma:",
"preview_this_week": "Ezen a héten:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Formato data",
"description": "Come vengono visualizzate le date nell'elenco delle e-mail",
"smart": "Intelligente (in base alla regione)",
"relative": "Relativo (1 h fa, 2 g fa)",
"smart": "Intelligente",
"relative": "Relativo",
"full": "Sempre data completa",
"preview_today": "Oggi:",
"preview_this_week": "Questa settimana:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "日付形式",
"description": "メール一覧での日付の表示方法",
"smart": "スマート(地域に合わせる)",
"relative": "相対表示(1時間前、2日前)",
"smart": "スマート",
"relative": "相対表示",
"full": "常に完全な日付",
"preview_today": "今日:",
"preview_this_week": "今週:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "날짜 형식",
"description": "이메일 목록에 날짜가 표시되는 방식",
"smart": "스마트 (지역에 맞춤)",
"relative": "상대 시간 (1시간 전, 2일 전)",
"smart": "스마트",
"relative": "상대 시간",
"full": "항상 전체 날짜",
"preview_today": "오늘:",
"preview_this_week": "이번 주:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Datuma formāts",
"description": "Kā datumi tiek attēloti e-pasta sarakstā",
"smart": "Gudrs (atbilstoši reģionam)",
"relative": "Relatīvs (pirms 1 st., pirms 2 d.)",
"smart": "Gudrs",
"relative": "Relatīvs",
"full": "Vienmēr pilns datums",
"preview_today": "Šodien:",
"preview_this_week": "Šajā nedēļā:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+3 -3
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Огнооны формат",
"description": "Имэйл жагсаалтад огноог хэрхэн харуулах вэ",
"smart": "Ухаалаг (орон нутгийн онцлог шинж чанартай)",
"relative": "Харилцан (1 цагийн өмнө, 2 өдрийн өмнө)",
"smart": "Ухаалаг",
"relative": "Харилцан",
"full": "Үргэлж бүтэн болзоо",
"preview_today": "Өнөөдөр:",
"preview_this_week": "Энэ долоо хоногт:",
@@ -1329,7 +1329,7 @@
"date_locale": {
"label": "Огнооны форматын бүс",
"description": "Тоон огноог хэрхэн эрэмбэлэх вэ (өдөр, сар, жил)",
"auto": "Автомат ({example})",
"auto": "Автомат",
"iso": "ISO",
"dmy": "Өдөр/Сар/Жил",
"mdy": "Сар/Өдөр/Жил"
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Datoformat",
"description": "Hvordan datoer vises i e-postlisten",
"smart": "Automatisk (tilpasset språk og region)",
"relative": "Relativ (1 t siden, 2 d siden)",
"smart": "Automatisk",
"relative": "Relativ",
"full": "Alltid fullstendig dato",
"preview_today": "I dag:",
"preview_this_week": "Denne uken:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Regionalt datoformat",
"description": "Rekkefølgen i numeriske datoer (dag, måned og år)",
"auto": "Automatisk ({example})",
"iso": "ISO 8601 (ÅÅÅÅ-MM-DD)",
"auto": "Automatisk",
"iso": "ISO 8601",
"dmy": "Dag/måned/år",
"mdy": "Måned/dag/år"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Datumnotatie",
"description": "Hoe datums worden weergegeven in de e-maillijst",
"smart": "Slim (regionaal)",
"relative": "Relatief (1 u geleden, 2 d geleden)",
"smart": "Slim",
"relative": "Relatief",
"full": "Altijd volledige datum",
"preview_today": "Vandaag:",
"preview_this_week": "Deze week:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Format daty",
"description": "Jak daty są wyświetlane na liście e-maili",
"smart": "Inteligentny (regionalny)",
"relative": "Względny (1 g temu, 2 d temu)",
"smart": "Inteligentny",
"relative": "Względny",
"full": "Zawsze pełna data",
"preview_today": "Dzisiaj:",
"preview_this_week": "W tym tygodniu:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Formato de Data",
"description": "Como as datas são mostradas na lista de e-mails",
"smart": "Inteligente (regional)",
"relative": "Relativo (há 1 h, há 2 d)",
"smart": "Inteligente",
"relative": "Relativo",
"full": "Sempre data completa",
"preview_today": "Hoje:",
"preview_this_week": "Esta semana:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Formato de data da região",
"description": "Como as datas numéricas são ordenadas (dia, mês, ano)",
"auto": "Automático ({example})",
"iso": "ISO 8601 (AAAA-MM-DD)",
"auto": "Automático",
"iso": "ISO 8601",
"dmy": "Dia/Mês/Ano",
"mdy": "Mês/Dia/Ano"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Formatul datei",
"description": "Modul în care sunt afișate datele în lista de e-mailuri",
"smart": "Inteligent (adaptat la setările locale)",
"relative": "Relativ (acum 1 oră, acum 2 zile)",
"smart": "Inteligent",
"relative": "Relativ",
"full": "Întotdeauna data completă",
"preview_today": "Astăzi:",
"preview_this_week": "În această săptămână:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Формат даты",
"description": "Как отображаются даты в списке писем",
"smart": "Умный (по региону)",
"relative": "Относительный (1 ч назад, 2 д назад)",
"smart": "Умный",
"relative": "Относительный",
"full": "Всегда полная дата",
"preview_today": "Сегодня:",
"preview_this_week": "На этой неделе:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "Formát dátumu",
"description": "Ako sa zobrazujú dátumy v zozname e-mailov",
"smart": "Inteligentný (regionálny)",
"relative": "Relatívny (pred 1 h, pred 2 d)",
"smart": "Inteligentný",
"relative": "Relatívny",
"full": "Vždy úplný dátum",
"preview_today": "Dnes:",
"preview_this_week": "Tento týždeň:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Tarih Biçimi",
"description": "Tarihlerin e-posta listesinde nasıl gösterileceği",
"smart": "Akıllı (bölgeye duyarlı)",
"relative": "Göreceli (1 sa önce, 2 g önce)",
"smart": "Akıllı",
"relative": "Göreceli",
"full": "Her zaman tam tarih",
"preview_today": "Bugün:",
"preview_this_week": "Bu hafta:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "Формат дати",
"description": "Як відображаються дати у списку листів",
"smart": "Розумний (за регіоном)",
"relative": "Відносний (1 год тому, 2 дн тому)",
"smart": "Розумний",
"relative": "Відносний",
"full": "Завжди повна дата",
"preview_today": "Сьогодні:",
"preview_this_week": "Цього тижня:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},
+4 -4
View File
@@ -1319,8 +1319,8 @@
"date_format": {
"label": "日期格式",
"description": "電子郵件清單中日期的顯示方式",
"smart": "智慧(依地區設定)",
"relative": "相對時間(1 小時前、2 天前)",
"smart": "智慧",
"relative": "相對時間",
"full": "一律顯示完整日期",
"preview_today": "今天:",
"preview_this_week": "本週:",
@@ -1329,8 +1329,8 @@
"date_locale": {
"label": "日期格式地區",
"description": "數字日期的排列順序(日、月、年)",
"auto": "自動({example})",
"iso": "ISO 8601(YYYY-MM-DD)",
"auto": "自動",
"iso": "ISO 8601",
"dmy": "日/月/年",
"mdy": "月/日/年"
},
+4 -4
View File
@@ -1316,8 +1316,8 @@
"date_format": {
"label": "日期格式",
"description": "电子邮件列表中日期的显示方式",
"smart": "智能(按地区)",
"relative": "相对时间(1 小时前、2 天前)",
"smart": "智能",
"relative": "相对时间",
"full": "始终完整日期",
"preview_today": "今天:",
"preview_this_week": "本周:",
@@ -1326,8 +1326,8 @@
"date_locale": {
"label": "Date format region",
"description": "How numeric dates are ordered (day, month, year)",
"auto": "Automatic ({example})",
"iso": "ISO 8601 (YYYY-MM-DD)",
"auto": "Automatic",
"iso": "ISO 8601",
"dmy": "Day/Month/Year",
"mdy": "Month/Day/Year"
},