Improve i18n api typing
This commit is contained in:
parent
c323b94a8c
commit
60a9b5a693
@ -1,11 +1,9 @@
|
|||||||
import { i18nBuilder } from "keycloakify/account";
|
import { i18nBuilder } from "keycloakify/account";
|
||||||
import type { ThemeName } from "../kc.gen";
|
import type { ThemeName } from "../kc.gen";
|
||||||
|
|
||||||
const { useI18n, ofTypeI18n } = i18nBuilder
|
/** @see: https://docs.keycloakify.dev/i18n */
|
||||||
.withThemeName<ThemeName>()
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
.withExtraLanguages({})
|
const { useI18n, ofTypeI18n } = i18nBuilder.withThemeName<ThemeName>().build();
|
||||||
.withCustomTranslations({})
|
|
||||||
.build();
|
|
||||||
|
|
||||||
type I18n = typeof ofTypeI18n;
|
type I18n = typeof ofTypeI18n;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ export type I18nBuilder<
|
|||||||
}>
|
}>
|
||||||
) => I18nBuilder<
|
) => I18nBuilder<
|
||||||
ThemeName,
|
ThemeName,
|
||||||
MessageKey_themeDefined,
|
string extends MessageKey_themeDefined ? never : MessageKey_themeDefined,
|
||||||
LanguageTag_notInDefaultSet,
|
LanguageTag_notInDefaultSet,
|
||||||
ExcludedMethod | "withCustomTranslations"
|
ExcludedMethod | "withCustomTranslations"
|
||||||
>;
|
>;
|
||||||
|
@ -62,3 +62,65 @@ type I18n = typeof ofTypeI18n;
|
|||||||
|
|
||||||
assert<Equals<typeof node, JSX.Element>>;
|
assert<Equals<typeof node, JSX.Element>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const i18n = Reflect<I18n>();
|
||||||
|
|
||||||
|
i18n.msg("passwordConfirm");
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const i18n = Reflect<I18n>();
|
||||||
|
|
||||||
|
// @ts-expect-error
|
||||||
|
i18n.msg("iDoNotExist");
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const { ofTypeI18n } = i18nBuilder
|
||||||
|
.withThemeName<"keycloakify-starter">()
|
||||||
|
.withCustomTranslations({})
|
||||||
|
.build();
|
||||||
|
|
||||||
|
type I18n = typeof ofTypeI18n;
|
||||||
|
|
||||||
|
{
|
||||||
|
const i18n = Reflect<I18n>();
|
||||||
|
|
||||||
|
// @ts-expect-error
|
||||||
|
const node = i18n.msg("iDoNotExist");
|
||||||
|
|
||||||
|
assert<Equals<typeof node, JSX.Element>>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i18nBuilder.withThemeName<"my-theme-1" | "my-theme-2">().withCustomTranslations({
|
||||||
|
en: {
|
||||||
|
myCustomKey1: "my-custom-key-1-en",
|
||||||
|
// @ts-expect-error
|
||||||
|
myCustomKey2: {
|
||||||
|
"my-theme-1": "my-theme-1-en"
|
||||||
|
//"my-theme-2": "my-theme-2-en"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
i18nBuilder
|
||||||
|
.withThemeName<"my-theme-1" | "my-theme-2">()
|
||||||
|
.withExtraLanguages({
|
||||||
|
he: {
|
||||||
|
label: "עברית",
|
||||||
|
getMessages: () => import("./he")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.withCustomTranslations({
|
||||||
|
en: {
|
||||||
|
myCustomKey1: "my-custom-key-1-en",
|
||||||
|
myCustomKey2: "my-custom-key-2-en"
|
||||||
|
},
|
||||||
|
// @ts-expect-error
|
||||||
|
he: {
|
||||||
|
myCustomKey1: "my-custom-key-1-he"
|
||||||
|
//myCustomKey2: "my-custom-key-2-he"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user