From 34902b54e49d451a99698e503d56e014c6dc4879 Mon Sep 17 00:00:00 2001 From: Joseph Garrone Date: Mon, 1 Mar 2021 13:55:58 +0100 Subject: [PATCH] Handle formatting in translation function --- src/lib/Template.tsx | 126 ++++++++++++++++++++++++ src/lib/i18n/useKeycloakTranslation.ts | 28 ------ src/lib/i18n/useKeycloakTranslation.tsx | 30 ++++++ 3 files changed, 156 insertions(+), 28 deletions(-) create mode 100644 src/lib/Template.tsx delete mode 100644 src/lib/i18n/useKeycloakTranslation.ts create mode 100644 src/lib/i18n/useKeycloakTranslation.tsx diff --git a/src/lib/Template.tsx b/src/lib/Template.tsx new file mode 100644 index 00000000..e292a1a1 --- /dev/null +++ b/src/lib/Template.tsx @@ -0,0 +1,126 @@ + + +/* +export function Template() { + return ( +
+
+
+ ${kcSanitize(msg("loginTitleHtml", (realm.displayNameHtml!'')))?no_esc} +
+
+
+
+ <#if realm.internationalizationEnabled && locale.supported?size gt 1> +
+
+
+ ${locale.current} +
    + <#list locale.supported as l> +
  • ${l.label}
  • + +
+
+
+
+ + <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())> + <#if displayRequiredFields> +
+
+ * ${msg("requiredFields")} +
+
+

<#nested "header">

+
+
+ <#else> +

<#nested "header">

+ + <#else> + <#if displayRequiredFields> +
+
+ * ${msg("requiredFields")} +
+
+ <#nested "show-username"> +
+
+ + + + +
+
+
+
+ <#else> + <#nested "show-username"> +
+
+ + + + +
+
+ + +
+
+
+ + <#-- App-initiated actions should not see warning messages about the need to complete the action --> + <#-- during login. --> + <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)> +
+ <#if message. + <#if message. + <#if message. + <#if message. + +
+ + + <#nested "form" > + + <#if auth?has_content && auth.showTryAnotherWayLink() && showAnotherWayIfPresent > +
class="${properties.kcContentWrapperClass!}" > +
class="${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}" > + +
+
+ + + <#if displayInfo> +
+
+ <#nested "info"> +
+
+ +
+
+ +
+
+ + + + ); + +} +*/ + +export {}; \ No newline at end of file diff --git a/src/lib/i18n/useKeycloakTranslation.ts b/src/lib/i18n/useKeycloakTranslation.ts deleted file mode 100644 index d8cef27e..00000000 --- a/src/lib/i18n/useKeycloakTranslation.ts +++ /dev/null @@ -1,28 +0,0 @@ - -import { useKeycloakLanguage } from "./useKeycloakLanguage"; -import { messages } from "./generated_messages/login"; -import { useConstCallback } from "powerhooks"; - -export type MessageKey = keyof typeof messages["en"] - -export function useKeycloakThemeTranslation() { - - const { keycloakLanguage } = useKeycloakLanguage(); - - const t = useConstCallback( - (key: MessageKey): string => { - - const out: string | undefined = messages[keycloakLanguage as any as "en"][key]; - - if (out !== undefined) { - return out; - } - - return messages["en"][key]; - - } - ); - - return { t }; - -} \ No newline at end of file diff --git a/src/lib/i18n/useKeycloakTranslation.tsx b/src/lib/i18n/useKeycloakTranslation.tsx new file mode 100644 index 00000000..93e88647 --- /dev/null +++ b/src/lib/i18n/useKeycloakTranslation.tsx @@ -0,0 +1,30 @@ + +import { useKeycloakLanguage } from "./useKeycloakLanguage"; +import { messages } from "./generated_messages/login"; +import { useConstCallback } from "powerhooks"; +import type { ReactNode } from "react"; + +export type MessageKey = keyof typeof messages["en"] + + +export function useKeycloakThemeTranslation() { + + const { keycloakLanguage } = useKeycloakLanguage(); + + const t = useConstCallback( + (key: MessageKey, ...args: string[]): ReactNode => { + + let out: string = messages[keycloakLanguage as any as "en"][key] ?? messages["en"][key]; + + args.forEach((arg, i)=> + out= out.replace(new RegExp(`\\{${i}\\}`, "g"), arg) + ); + + return ; + + } + ); + + return { t }; + +} \ No newline at end of file