summaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
authorINOUE Daisuke <inoue.daisuke@gmail.com>2025-03-22 21:03:25 +0900
committerINOUE Daisuke <inoue.daisuke@gmail.com>2025-04-08 22:20:36 +0900
commit2449234e28aab435ffe28d567ece8c651d45d2b3 (patch)
tree0ef057eebb01821da25dc23a972e03c492830f16 /src/routes
parentf2ee19f15a78125a1dc2ba8b9c175dd9831e5700 (diff)
DateTime format, and some translation fix
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/frontend.ts91
1 files changed, 58 insertions, 33 deletions
diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts
index 40b5393..6f9e00a 100644
--- a/src/routes/frontend.ts
+++ b/src/routes/frontend.ts
@@ -71,7 +71,7 @@ router.get("/new/:magicLinkToken", async (req: Request, res: Response) => {
...frontendConfig(res),
message: {
type: "danger",
- text: "This magic link is invalid or has expired. Please request a new one here.",
+ text: i18next.t("magiclink-invalid"),
},
});
}
@@ -92,6 +92,7 @@ router.get("/events", async (_: Request, res: Response) => {
.lean()
.sort("start");
const updatedEvents: EventListEvent[] = events.map((event) => {
+ moment.locale(i18next.language);
const startMoment = moment.tz(event.start, event.timezone);
const endMoment = moment.tz(event.end, event.timezone);
const isSameDay = startMoment.isSame(endMoment, "day");
@@ -101,9 +102,9 @@ router.get("/events", async (_: Request, res: Response) => {
name: event.name,
location: event.location,
displayDate: isSameDay
- ? startMoment.format("D MMM YYYY")
- : `${startMoment.format("D MMM YYYY")} - ${endMoment.format(
- "D MMM YYYY",
+ ? startMoment.format("LL")
+ : `${startMoment.format("LL")} - ${endMoment.format(
+ "LL",
)}`,
eventHasConcluded: endMoment.isBefore(moment.tz(event.timezone)),
eventGroup: event.eventGroup as any as IEventGroup,
@@ -133,7 +134,7 @@ router.get("/events", async (_: Request, res: Response) => {
});
res.render("publicEventList", {
- title: "Public events",
+ title: i18next.t("frontend.publicevents"),
upcomingEvents: upcomingEventsInMonthBuckets,
pastEvents: pastEventsInMonthBuckets,
eventGroups: updatedEventGroups,
@@ -155,31 +156,57 @@ router.get("/:eventID", async (req: Request, res: Response) => {
}
const parsedLocation = event.location.replace(/\s+/g, "+");
let displayDate;
+ moment.locale(i18next.language);
+ const dateformat = i18next.t("frontend.dateformat");
+ const timeformat = i18next.t('frontend.timeformat');
if (moment.tz(event.end, event.timezone).isSame(event.start, "day")) {
// Happening during one day
- displayDate =
- moment
- .tz(event.start, event.timezone)
- .format(
- 'dddd D MMMM YYYY [<span class="text-muted">from</span>] h:mm a',
- ) +
- moment
- .tz(event.end, event.timezone)
- .format(
- ' [<span class="text-muted">to</span>] h:mm a [<span class="text-muted">](z)[</span>]',
- );
+ displayDate = i18next.t("frontend.displaydate-sameday",
+ {
+ startdate:
+ moment
+ .tz(event.start, event.timezone)
+ .format(dateformat),
+ starttime:
+ moment
+ .tz(event.start, event.timezone)
+ .format(timeformat),
+ endtime:
+ moment
+ .tz(event.end, event.timezone)
+ .format(timeformat),
+ timezone:
+ i18next.t('frontend.sameday.timezone',
+ { tz:
+ moment
+ .tz(event.end, event.timezone)
+ .format('(z)',)
+ } )
+ });
} else {
- displayDate =
- moment
- .tz(event.start, event.timezone)
- .format(
- 'dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a',
- ) +
- moment
- .tz(event.end, event.timezone)
- .format(
- ' [<span class="text-muted">–</span>] dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a [<span class="text-muted">](z)[</span>]',
- );
+ displayDate = i18next.t("frontend.displaydate-days",
+ {
+ startdate:
+ moment
+ .tz(event.start, event.timezone)
+ .format(dateformat),
+ starttime:
+ moment
+ .tz(event.start, event.timezone)
+ .format(timeformat),
+ enddate:
+ moment
+ .tz(event.end, event.timezone)
+ .format(dateformat),
+ endtime:
+ moment
+ .tz(event.end, event.timezone)
+ .format(timeformat),
+ timezone:
+ moment
+ .tz(event.end, event.timezone)
+ .format('(z)',)
+ });
}
let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString();
let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString();
@@ -430,8 +457,8 @@ router.get("/group/:eventGroupID", async (req: Request, res: Response) => {
.sort("start");
const updatedEvents: EventListEvent[] = events.map((event) => {
- const startMoment = moment.tz(event.start, event.timezone);
- const endMoment = moment.tz(event.end, event.timezone);
+ const startMoment = moment.tz(event.start, event.timezone).locale(i18next.language);
+ const endMoment = moment.tz(event.end, event.timezone).locale(i18next.language);
const isSameDay = startMoment.isSame(endMoment, "day");
return {
@@ -439,10 +466,8 @@ router.get("/group/:eventGroupID", async (req: Request, res: Response) => {
name: event.name,
location: event.location,
displayDate: isSameDay
- ? startMoment.format("D MMM YYYY")
- : `${startMoment.format("D MMM YYYY")} - ${endMoment.format(
- "D MMM YYYY",
- )}`,
+ ? startMoment.format("LL")
+ : `${startMoment.format("LL")} - ${endMoment.format("LL")}`,
eventHasConcluded: endMoment.isBefore(
moment.tz(event.timezone),
),