diff --git a/src/components/forms/EditUserUIDataForm/EditUserUIDataForm.js b/src/components/forms/EditUserUIDataForm/EditUserUIDataForm.js
index 421267037..dc067caf0 100644
--- a/src/components/forms/EditUserUIDataForm/EditUserUIDataForm.js
+++ b/src/components/forms/EditUserUIDataForm/EditUserUIDataForm.js
@@ -32,6 +32,11 @@ const getDefaultPages = defaultMemoize(formatMessage =>
}))
);
+const dateFormatOverrideOptions = [
+ { key: 'cs', name: 'Český formát (d. m. yyyy)' },
+ { key: 'en', name: 'English format (m/d/yyyy)' },
+];
+
export const EDITOR_FONT_SIZE_MIN = 5;
export const EDITOR_FONT_SIZE_MAX = 50;
export const EDITOR_FONT_SIZE_DEFAULT = 16;
@@ -81,6 +86,19 @@ const EditUserUIDataForm = ({
label={}
/>
+
+ }
+ />
+
+
+
{
return unixTime * 1000 < Date.now();
};
+const getLocalizedIntlDateFormatter = defaultMemoize(locale =>
+ locale && knownLocales.includes(locale) ? new Intl.DateTimeFormat(locale) : null
+);
+
const dateTime = ({
unixts,
isDeadline = false,
@@ -42,7 +49,16 @@ const dateTime = ({
className={classnames({
'text-nowrap': true,
})}>
-
+
+ {({ dateFormatOverride = null }) =>
+ getLocalizedIntlDateFormatter(dateFormatOverride) ? (
+ getLocalizedIntlDateFormatter(dateFormatOverride).format(unixts * 1000)
+ ) : (
+
+ )
+ }
+
+
{(showTime || showRelative) && }
)}
diff --git a/src/locales/cs.json b/src/locales/cs.json
index 2960e8544..9225e97e0 100644
--- a/src/locales/cs.json
+++ b/src/locales/cs.json
@@ -606,6 +606,7 @@
"app.editUserSettings.submissionEvaluatedEmails": "Řešení vyhodnoceno (pokud trvalo delší dobu)",
"app.editUserSettings.title": "Uživatelské nastavení",
"app.editUserUIData.darkTheme": "Použít tmavý motiv pro editor zdrojového kódu",
+ "app.editUserUIData.dateFormatOverride": "Explicitní nastavení formátu data (pokud není formát nastaven, určí se podle aktuálního jazyka):",
"app.editUserUIData.defaultPage": "Výchozí stránka (po přihlášení):",
"app.editUserUIData.defaultPage.dashboard": "Přehled",
"app.editUserUIData.defaultPage.home": "Domovská stránka (o ReCodExu)",
diff --git a/src/locales/en.json b/src/locales/en.json
index f4796f0db..f0a1e8e83 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -606,6 +606,7 @@
"app.editUserSettings.submissionEvaluatedEmails": "Submission evaluation (when taking a long time)",
"app.editUserSettings.title": "User Settings",
"app.editUserUIData.darkTheme": "Use a dark theme for the source code viewers and editors",
+ "app.editUserUIData.dateFormatOverride": "Date format override (if not set, date is formatted according to selected language):",
"app.editUserUIData.defaultPage": "Default page (after login):",
"app.editUserUIData.defaultPage.dashboard": "Dashboard",
"app.editUserUIData.defaultPage.home": "Home page (about)",
diff --git a/src/pages/EditUser/EditUser.js b/src/pages/EditUser/EditUser.js
index 59199928a..e52dd499e 100644
--- a/src/pages/EditUser/EditUser.js
+++ b/src/pages/EditUser/EditUser.js
@@ -51,6 +51,7 @@ const prepareUserUIDataInitialValues = defaultMemoize(
openedSidebar = true,
useGravatar = true,
defaultPage = null,
+ dateFormatOverride = null,
editorFontSize = EDITOR_FONT_SIZE_DEFAULT,
}) => ({
darkTheme,
@@ -58,6 +59,7 @@ const prepareUserUIDataInitialValues = defaultMemoize(
openedSidebar,
useGravatar,
defaultPage: defaultPage || '',
+ dateFormatOverride: dateFormatOverride || '',
editorFontSize: prepareNumber(editorFontSize, EDITOR_FONT_SIZE_MIN, EDITOR_FONT_SIZE_MAX, EDITOR_FONT_SIZE_DEFAULT),
})
);