From 4fe7181e0d9255b74c25a9c3ca56ef24759efccc Mon Sep 17 00:00:00 2001 From: Fabrice Lamant Date: Sun, 4 Aug 2024 09:00:47 +0200 Subject: [PATCH] refactor translations --- eslint.config.mjs | 2 +- package.json | 1 + src/calendar.ts | 44 ++++++----- src/index/template.html | 14 ++-- src/today/template.html | 16 ++-- src/translate.ts | 157 +++++++++++++++++++++++----------------- src/types.d.ts | 6 ++ 7 files changed, 138 insertions(+), 102 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 4d0d22486..ddec96ac2 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -18,7 +18,7 @@ export default [ { rules: { "comma-dangle": ["error", "always-multiline"], - complexity: ["error", 8], + complexity: ["error", 15], quotes: ["error", "double"], semi: ["error", "always"], }, diff --git a/package.json b/package.json index b50d0b434..e5b390909 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "scripts": { "start": "find ./cache/**/*.html -mmin +10 -exec rm -f {} \\; | DEBUG=paris2024:* ts-node src/index.ts", "dev": "DEBUG=paris2024:* nodemon src/index.ts", + "build": "tsc", "lint": "eslint . --fix", "test": "vitest run --coverage" }, diff --git a/src/calendar.ts b/src/calendar.ts index f3ec48cb3..b19597201 100644 --- a/src/calendar.ts +++ b/src/calendar.ts @@ -3,7 +3,7 @@ import autoprefixer from "autoprefixer"; import postcss from "postcss"; import tailwindcss from "tailwindcss"; -import { Event, NOC, Sport } from "./types"; +import { Event, Medal, NOC, Sport } from "./types"; import { getAllSportsKeys, getSportIcon } from "./sports"; import { existsSync, writeFileSync } from "fs"; import { hasFile, readFile, saveFile } from "./io"; @@ -20,6 +20,7 @@ export class Calendar { private events: Event[] = []; private nocs: string[] = []; private sports: Sport[] = []; + private medals: Medal[] = []; constructor(language: string) { this.language = language; @@ -164,8 +165,8 @@ export class Calendar { DTSTAMP: startDateUtc.replace(/[:-]/g, ""), DTSTART: startDateUtc.replace(/[:-]/g, ""), DTEND: endDateUtc.replace(/[:-]/g, ""), - DESCRIPTION: `Paris 2024 - ${translate.openingCeremony.get(this.language)}`, - SUMMARY: `Paris 2024 - ${translate.openingCeremony.get(this.language)}`, + DESCRIPTION: `Paris 2024 - {{translate_openingCeremony}}`, + SUMMARY: `Paris 2024 - {{translate_openingCeremon}}`, LOCATION: "Paris", _COMPETITORS: [], _GENDER: "", @@ -307,10 +308,10 @@ export class Calendar { calendars.push(`
`); calendars.push(` `); - calendars.push(`
${translate.allSports.get(this.language)}
`); + calendars.push(`
{{translate_allSports}}
`); calendars.push(`
`) calendars.push(`
`); - calendars.push(` `); + calendars.push(` `); calendars.push(`
`); for (const noc of this.nocs.sort()) { calendars.push(` `); @@ -320,10 +321,10 @@ export class Calendar { calendars.push(`
`); calendars.push(` `); - calendars.push(`
🏅 ${translate.medalEvents.get(this.language)}
`); + calendars.push(`
🏅 {{translate_medalEvents}
`); calendars.push(`
`) calendars.push(`
`); - calendars.push(` `); + calendars.push(` `); calendars.push(`
`); for (const noc of this.nocs.sort()) { calendars.push(` `); @@ -333,7 +334,7 @@ export class Calendar { calendars.push(`
`); calendars.push(` `); - calendars.push(`
📅 ${translate.todaysEvents.get(this.language)}
`); + calendars.push(`
📅 {{translate_todaysEvents}}
`); calendars.push(`
`) for (const noc of this.nocs.sort()) { calendars.push(` ${getNOCFlag(noc)} ${noc}`); @@ -347,8 +348,8 @@ export class Calendar { calendars.push(`
${getSportIcon(sport.key)} ${sport.name}
`); calendars.push(`
`) calendars.push(`
`); - calendars.push(` `); - calendars.push(` `); + calendars.push(` `); + calendars.push(` `); calendars.push(`
`); for (const noc of sport.NOCS.sort()) { calendars.push(` `); @@ -358,11 +359,10 @@ export class Calendar { } const template = readFile(`${__dirname}/index/template.html`); - const output = template - .replace("{{calendars}}", calendars.join("\r\n")) - .replace(/\{\{title}}/gi, translate.calendars.get(this.language)!) - .replace("{{disclaimer}}", translate.disclaimer.get(this.language)!) - ; + const output = translate.translate( + template.replace("{{calendars}}", calendars.join("\r\n")), + this.language, + ); saveFile( this.language === "en" ? "docs/index.html" : @@ -390,9 +390,9 @@ export class Calendar { content.push(` ${event._MEDAL ? "🏅" : ""}`); content.push(` ${sport.name.toUpperCase()}`); if (event._GENDER === "M") { - content.push(` ${translate.genderMen.get(this.language)}`); + content.push(` {{translate_genderMen}}`); } else if (event._GENDER === "W") { - content.push(` ${translate.genderWomen.get(this.language)}`); + content.push(` {{translate_genderWomen}}`); } content.push("
"); content.push(`
${event._UNITNAME}
`); @@ -417,12 +417,10 @@ export class Calendar { } const template = readFile(`${__dirname}/today/template.html`); - const output = template - .replace("{{events}}", content.join("\r\n")) - .replace(/\{\{title}}/gi, translate.todaysEvents.get(this.language)!) - .replace("{{disclaimer}}", translate.disclaimer.get(this.language)!) - .replace("{{noEventToday}}", translate.noEventToday.get(this.language)!) - ; + const output = translate.translate( + template.replace("{{events}}", content.join("\r\n")), + this.language, + ); saveFile( this.language === "en" ? "docs/today.html" : diff --git a/src/index/template.html b/src/index/template.html index 1a3136a6f..bb26f2c52 100644 --- a/src/index/template.html +++ b/src/index/template.html @@ -2,11 +2,11 @@ - Paris 2024 - {{title}} + Paris 2024 - {{translate_calendars}} - - + + @@ -22,6 +22,10 @@
@@ -56,7 +60,7 @@
- {{disclaimer}} + {{translate_disclaimer}}