diff --git a/src/assertUnreachable.ts b/src/assertUnreachable.ts new file mode 100644 index 0000000..3c66afa --- /dev/null +++ b/src/assertUnreachable.ts @@ -0,0 +1,3 @@ +export default function assertUnreachable(value: never): never { + throw new Error(`This value is unsupported ${value}`); +} diff --git a/src/translation/index.ts b/src/translation/index.ts index 1bcbddb..a85a0f6 100644 --- a/src/translation/index.ts +++ b/src/translation/index.ts @@ -1,4 +1,6 @@ -const SUPPORTED_LANGUAGES = ["en", "ru"] as const; +import assertUnreachable from "../assertUnreachable"; + +const SUPPORTED_LANGUAGES = ["en", "ru", "uk"] as const; const DEFAULT_LANGUAGE = "en"; const PREFERRED_LANGUAGES = window.navigator.languages.map((lang) => @@ -28,8 +30,11 @@ switch (path) { case "./ru": data = await import("./ru"); break; + case "./uk": + data = await import("./uk"); + break; default: - throw new Error("Language not supported"); + assertUnreachable(path); } export const { diff --git a/src/translation/uk.ts b/src/translation/uk.ts new file mode 100644 index 0000000..bf05709 --- /dev/null +++ b/src/translation/uk.ts @@ -0,0 +1,11 @@ +import type { Temporal } from "temporal-polyfill"; + +export const AGE = "Вік"; +export const SOURCE_CODE = "вихідний код"; +export const COPY_LABEL = "Натисніть, щоб скопіювати вік у буфер обміну"; +export const BIRTH_DAY_FORMAT = (birthDay: Temporal.PlainDate) => + `День народження: ${birthDay.toLocaleString()}`; +export const AGE_COPIED = "Вік скопійовано в буфер обміну!"; +export const AGE_COPY_FAILED = "Не вдалося скопіювати вік у буфер обміну!"; +export const ENTER_BIRTHDAY = "Введіть свій день народження"; +export const MOTIVATE = "Мотивуйте";