Allow to lazily load therms
This commit is contained in:
parent
ed7d5eabcb
commit
1bb19f65a2
@ -49,7 +49,7 @@ crawl(".").forEach(filePath => {
|
|||||||
|
|
||||||
child_process.execSync(`rm -r ${tmpDirPath}`);
|
child_process.execSync(`rm -r ${tmpDirPath}`);
|
||||||
|
|
||||||
const targetDirPath = pathJoin(getProjectRoot(), "src", "lib", "i18n", "generated_messages");
|
const targetDirPath = pathJoin(getProjectRoot(), "src", "lib", "i18n", "generated_kcMessages");
|
||||||
|
|
||||||
fs.mkdirSync(targetDirPath, { "recursive": true });
|
fs.mkdirSync(targetDirPath, { "recursive": true });
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ Object.keys(record).forEach(pageType => {
|
|||||||
'//PLEASE DO NOT EDIT MANUALLY',
|
'//PLEASE DO NOT EDIT MANUALLY',
|
||||||
'',
|
'',
|
||||||
'/* spell-checker: disable */',
|
'/* spell-checker: disable */',
|
||||||
`export const messages= ${JSON.stringify(record[pageType], null, 2)};`,
|
`export const kcMessages= ${JSON.stringify(record[pageType], null, 2)};`,
|
||||||
'/* spell-checker: enable */'
|
'/* spell-checker: enable */'
|
||||||
].join("\n"), "utf8")
|
].join("\n"), "utf8")
|
||||||
);
|
);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
||||||
import { messages } from "./generated_messages/login";
|
import { kcMessages } from "./kcMessages/login";
|
||||||
|
|
||||||
export type KcLanguageTag = keyof typeof messages;
|
export type KcLanguageTag = keyof typeof kcMessages;
|
||||||
|
|
||||||
export type LanguageLabel =
|
export type LanguageLabel =
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
@ -40,7 +40,7 @@ export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const availableLanguages = objectKeys(messages);
|
const availableLanguages = objectKeys(kcMessages);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//PLEASE DO NOT EDIT MANUALLY
|
//PLEASE DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
export const messages= {
|
export const kcMessages= {
|
||||||
"ca": {
|
"ca": {
|
||||||
"doSave": "Desa",
|
"doSave": "Desa",
|
||||||
"doCancel": "Cancel·la",
|
"doCancel": "Cancel·la",
|
@ -2,7 +2,7 @@
|
|||||||
//PLEASE DO NOT EDIT MANUALLY
|
//PLEASE DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
export const messages= {
|
export const kcMessages= {
|
||||||
"ca": {
|
"ca": {
|
||||||
"invalidPasswordHistoryMessage": "Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes.",
|
"invalidPasswordHistoryMessage": "Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes.",
|
||||||
"invalidPasswordMinDigitsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.",
|
"invalidPasswordMinDigitsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.",
|
@ -2,7 +2,7 @@
|
|||||||
//PLEASE DO NOT EDIT MANUALLY
|
//PLEASE DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
export const messages= {
|
export const kcMessages= {
|
||||||
"ca": {
|
"ca": {
|
||||||
"emailVerificationSubject": "Verificació d'email",
|
"emailVerificationSubject": "Verificació d'email",
|
||||||
"emailVerificationBody": "Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.",
|
"emailVerificationBody": "Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si has estat tu, fes clic a l'enllaç següent per verificar la teva adreça de correu electrònic.\n\n{0}\n\nAquest enllaç expirarà en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.",
|
@ -2,7 +2,7 @@
|
|||||||
//PLEASE DO NOT EDIT MANUALLY
|
//PLEASE DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
export const messages= {
|
export const kcMessages= {
|
||||||
"ca": {
|
"ca": {
|
||||||
"doLogIn": "Inicia sessió",
|
"doLogIn": "Inicia sessió",
|
||||||
"doRegister": "Registra't",
|
"doRegister": "Registra't",
|
33
src/lib/i18n/kcMessages/login.ts
Normal file
33
src/lib/i18n/kcMessages/login.ts
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
import { kcMessages } from "../generated_kcMessages/login";
|
||||||
|
import { Evt } from "evt";
|
||||||
|
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
||||||
|
|
||||||
|
export const evtTermsUpdated = Evt.asNonPostable(Evt.create<void>());
|
||||||
|
|
||||||
|
objectKeys(kcMessages).forEach(kcLanguage =>
|
||||||
|
Object.defineProperty(
|
||||||
|
kcMessages[kcLanguage],
|
||||||
|
"termsText",
|
||||||
|
(() => {
|
||||||
|
|
||||||
|
let value = kcMessages[kcLanguage].termsText;
|
||||||
|
|
||||||
|
return {
|
||||||
|
"enumerable": true,
|
||||||
|
"get": () => value,
|
||||||
|
"set": (newValue: string) => {
|
||||||
|
|
||||||
|
Evt.asPostable(evtTermsUpdated).post();
|
||||||
|
|
||||||
|
value = newValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
})()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
export { kcMessages };
|
||||||
|
|
@ -1,21 +1,26 @@
|
|||||||
|
|
||||||
import { useCallback } from "react";
|
import { useCallback, useReducer } from "react";
|
||||||
import { useKcLanguageTag } from "./useKcLanguageTag";
|
import { useKcLanguageTag } from "./useKcLanguageTag";
|
||||||
import { messages } from "./generated_messages/login";
|
import { kcMessages, evtTermsUpdated } from "./kcMessages/login";
|
||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
|
import { useEvt } from "evt/hooks";
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
import * as markdown from "markdown";
|
import * as markdown from "markdown";
|
||||||
|
|
||||||
export type MessageKey = keyof typeof messages["en"];
|
export type MessageKey = keyof typeof kcMessages["en"];
|
||||||
|
|
||||||
export function useKcMessage() {
|
export function useKcMessage() {
|
||||||
|
|
||||||
const { kcLanguageTag } = useKcLanguageTag();
|
const { kcLanguageTag } = useKcLanguageTag();
|
||||||
|
|
||||||
|
const [trigger, forceUpdate] = useReducer((counter: number) => counter + 1, 0);
|
||||||
|
|
||||||
|
useEvt(ctx => evtTermsUpdated.attach(ctx, forceUpdate), []);
|
||||||
|
|
||||||
const msgStr = useCallback(
|
const msgStr = useCallback(
|
||||||
(key: MessageKey, ...args: (string | undefined)[]): string => {
|
(key: MessageKey, ...args: (string | undefined)[]): string => {
|
||||||
|
|
||||||
let str: string = messages[kcLanguageTag as any as "en"][key] ?? messages["en"][key];
|
let str: string = kcMessages[kcLanguageTag as any as "en"][key] ?? kcMessages["en"][key];
|
||||||
|
|
||||||
args.forEach((arg, i) => {
|
args.forEach((arg, i) => {
|
||||||
|
|
||||||
@ -30,7 +35,7 @@ export function useKcMessage() {
|
|||||||
return str;
|
return str;
|
||||||
|
|
||||||
},
|
},
|
||||||
[kcLanguageTag]
|
[kcLanguageTag, trigger]
|
||||||
);
|
);
|
||||||
|
|
||||||
const msg = useCallback<(...args: Parameters<typeof msgStr>) => ReactNode>(
|
const msg = useCallback<(...args: Parameters<typeof msgStr>) => ReactNode>(
|
||||||
@ -43,7 +48,7 @@ export function useKcMessage() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
,
|
,
|
||||||
[kcLanguageTag]
|
[kcLanguageTag, trigger]
|
||||||
);
|
);
|
||||||
|
|
||||||
return { msg, msgStr };
|
return { msg, msgStr };
|
||||||
|
@ -3,6 +3,7 @@ export * from "./KcContext";
|
|||||||
export * from "./i18n/KcLanguageTag";
|
export * from "./i18n/KcLanguageTag";
|
||||||
export * from "./i18n/useKcLanguageTag";
|
export * from "./i18n/useKcLanguageTag";
|
||||||
export * from "./i18n/useKcMessage";
|
export * from "./i18n/useKcMessage";
|
||||||
|
export * from "./i18n/kcMessages/login";
|
||||||
|
|
||||||
export * from "./components/KcProps";
|
export * from "./components/KcProps";
|
||||||
export * from "./components/Login";
|
export * from "./components/Login";
|
||||||
@ -16,4 +17,5 @@ export * from "./keycloakJsAdapter";
|
|||||||
|
|
||||||
export * from "./tools/assert";
|
export * from "./tools/assert";
|
||||||
|
|
||||||
|
|
||||||
export * as kcContextMocks from "./kcContextMocks";
|
export * as kcContextMocks from "./kcContextMocks";
|
Loading…
x
Reference in New Issue
Block a user