diff --git a/src/client/index.tsx b/src/client/index.tsx index 44d39d0b..1b7dde85 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -1,9 +1,8 @@ -import { initializeSite } from "@utils/app"; -import setDefaultOptions from "date-fns/setDefaultOptions"; +import { initializeSite, setupI18Next as setupDateFns } from "@utils/app"; import { hydrate } from "inferno-hydrate"; import { Router } from "inferno-router"; import { App } from "../shared/components/app/app"; -import { HistoryService, I18NextService } from "../shared/services"; +import { HistoryService } from "../shared/services"; import "bootstrap/js/dist/collapse"; import "bootstrap/js/dist/dropdown"; @@ -11,17 +10,7 @@ import "bootstrap/js/dist/dropdown"; async function startClient() { initializeSite(window.isoData.site_res); - const lang = I18NextService.i18n.language; - const locale = ( - await import( - /* webpackExclude: /\.js\.flow$/ */ - `date-fns/locale/${lang}` - ) - ).default; - - setDefaultOptions({ - locale, - }); + await setupDateFns(); const wrapper = ( diff --git a/src/server/index.tsx b/src/server/index.tsx index aecd78bb..8135e650 100644 --- a/src/server/index.tsx +++ b/src/server/index.tsx @@ -1,8 +1,7 @@ -import setDefaultOptions from "date-fns/setDefaultOptions"; +import { setupI18Next as setupDateFns } from "@utils/app"; import express from "express"; import path from "path"; import process from "process"; -import { I18NextService } from "../shared/services"; import CatchAllHandler from "./handlers/catch-all-handler"; import ManifestHandler from "./handlers/manifest-handler"; import RobotsHandler from "./handlers/robots-handler"; @@ -33,20 +32,11 @@ server.get("/css/themelist", ThemesListHandler); server.get("/*", CatchAllHandler); server.listen(Number(port), hostname, () => { + setupDateFns(); console.log(`http://${hostname}:${port}`); }); -process.on("SIGINT", async () => { - const lang = I18NextService.i18n.language; - const locale = ( - await import( - /* webpackExclude: /\.js\.flow$/ */ - `date-fns/locale/${lang}` - ) - ).default; - setDefaultOptions({ - locale, - }); +process.on("SIGINT", () => { console.info("Interrupted"); process.exit(0); }); diff --git a/src/shared/utils/app/index.ts b/src/shared/utils/app/index.ts index cdae2677..378ebb75 100644 --- a/src/shared/utils/app/index.ts +++ b/src/shared/utils/app/index.ts @@ -46,6 +46,7 @@ import searchCommentTree from "./search-comment-tree"; import selectableLanguages from "./selectable-languages"; import setIsoData from "./set-iso-data"; import setTheme from "./set-theme"; +import setupI18Next from "./setup-date-fns"; import showAvatars from "./show-avatars"; import showLocal from "./show-local"; import showScores from "./show-scores"; @@ -102,6 +103,7 @@ export { selectableLanguages, setIsoData, setTheme, + setupI18Next, showAvatars, showLocal, showScores, diff --git a/src/shared/utils/app/setup-date-fns.ts b/src/shared/utils/app/setup-date-fns.ts new file mode 100644 index 00000000..fe957205 --- /dev/null +++ b/src/shared/utils/app/setup-date-fns.ts @@ -0,0 +1,19 @@ +import setDefaultOptions from "date-fns/setDefaultOptions"; +import { I18NextService } from "../../services"; + +export default async function () { + let lang = I18NextService.i18n.language; + if (lang === "en") { + lang = "en-US"; + } + + const locale = ( + await import( + /* webpackExclude: /\.js\.flow$/ */ + `date-fns/locale/${lang}` + ) + ).default; + setDefaultOptions({ + locale, + }); +}