mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 08:13:50 +00:00
fix: show a live sample on every date format and region option
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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": "شهر/يوم/سنة"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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": "Сар/Өдөр/Жил"
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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": "月/日/年"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user