From ef5b01956a7927cf14f37e1ba73bc3d6ed58471e Mon Sep 17 00:00:00 2001 From: garronej Date: Tue, 12 Oct 2021 00:24:08 +0200 Subject: [PATCH] Make kcMessage more easily hackable --- src/lib/i18n/KcLanguageTag.ts | 95 ++++++++++------------------------- src/lib/i18n/useKcMessage.tsx | 2 + 2 files changed, 29 insertions(+), 68 deletions(-) diff --git a/src/lib/i18n/KcLanguageTag.ts b/src/lib/i18n/KcLanguageTag.ts index af59200b..ea6484ca 100644 --- a/src/lib/i18n/KcLanguageTag.ts +++ b/src/lib/i18n/KcLanguageTag.ts @@ -3,77 +3,36 @@ import { kcMessages } from "./kcMessages/login"; export type KcLanguageTag = keyof typeof kcMessages; -export type LanguageLabel = +const kcLanguageByTagLabel = { /* spell-checker: disable */ - | "Deutsch" - | "Norsk" - | "Русский" - | "Svenska" - | "Português (Brasil)" - | "Lietuvių" - | "English" - | "Italiano" - | "Français" - | "中文简体" - | "Español" - | "Čeština" - | "日本語" - | "Slovenčina" - | "Polski" - | "Català" - | "Nederlands" - | "Türkçe" - | "Dansk" - | "Magyar"; -/* spell-checker: enable */ + "es": "Español", + "it": "Italiano", + "fr": "Français", + "ca": "Català", + "en": "English", + "de": "Deutsch", + "no": "Norsk", + "pt-BR": "Português (Brasil)", + "ru": "Русский", + "sk": "Slovenčina", + "ja": "日本語", + "pl": "Polski", + "zh-CN": "中文简体", + "sv": "Svenska", + "lt": "Lietuvių", + "cs": "Čeština", + "nl": "Nederlands", + "tr": "Türkçe", + "da": "Dansk", + "hu": "Magyar", + /* spell-checker: enable */ +} as const; + +export type LanguageLabel = + typeof kcLanguageByTagLabel[keyof typeof kcLanguageByTagLabel]; export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel { - switch (language) { - /* spell-checker: disable */ - case "es": - return "Español"; - case "it": - return "Italiano"; - case "fr": - return "Français"; - case "ca": - return "Català"; - case "en": - return "English"; - case "de": - return "Deutsch"; - case "no": - return "Norsk"; - case "pt-BR": - return "Português (Brasil)"; - case "ru": - return "Русский"; - case "sk": - return "Slovenčina"; - case "ja": - return "日本語"; - case "pl": - return "Polski"; - case "zh-CN": - return "中文简体"; - case "sv": - return "Svenska"; - case "lt": - return "Lietuvių"; - case "cs": - return "Čeština"; - case "nl": - return "Nederlands"; - case "tr": - return "Türkçe"; - case "da": - return "Dansk"; - case "hu": - return "Magyar"; - /* spell-checker: enable */ - } - - return language; + return kcLanguageByTagLabel[language] ?? language; } const availableLanguages = objectKeys(kcMessages); diff --git a/src/lib/i18n/useKcMessage.tsx b/src/lib/i18n/useKcMessage.tsx index c87cf2ad..245470cd 100644 --- a/src/lib/i18n/useKcMessage.tsx +++ b/src/lib/i18n/useKcMessage.tsx @@ -6,6 +6,8 @@ import { useEvt } from "evt/hooks"; import ReactMarkdown from "react-markdown"; import { id } from "tsafe/id"; +export { kcMessages }; + export type MessageKey = keyof typeof kcMessages["en"]; /**