keycloakify 10.0.0-rc.108 → 10.0.0-rc.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/account/KcContext/KcContext.d.ts +4 -1
- package/account/KcContext/KcContext.js.map +1 -1
- package/account/KcContext/kcContextMocks.js +4 -1
- package/account/KcContext/kcContextMocks.js.map +1 -1
- package/account/i18n/GenericI18n.d.ts +6 -0
- package/account/i18n/GenericI18n.js +2 -0
- package/account/i18n/GenericI18n.js.map +1 -0
- package/account/i18n/i18n.d.ts +24 -30
- package/account/i18n/i18n.js +47 -67
- package/account/i18n/i18n.js.map +1 -1
- package/account/i18n/index.d.ts +4 -3
- package/account/i18n/index.js.map +1 -1
- package/account/i18n/messages_defaultSet/ar.js.map +1 -0
- package/account/i18n/messages_defaultSet/ca.js.map +1 -0
- package/account/i18n/messages_defaultSet/cs.js.map +1 -0
- package/account/i18n/messages_defaultSet/da.js.map +1 -0
- package/account/i18n/messages_defaultSet/de.js.map +1 -0
- package/account/i18n/messages_defaultSet/el.js.map +1 -0
- package/account/i18n/messages_defaultSet/en.js.map +1 -0
- package/account/i18n/messages_defaultSet/es.js.map +1 -0
- package/account/i18n/messages_defaultSet/fa.js.map +1 -0
- package/account/i18n/messages_defaultSet/fi.js.map +1 -0
- package/account/i18n/messages_defaultSet/fr.js.map +1 -0
- package/account/i18n/messages_defaultSet/hu.js.map +1 -0
- package/account/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
- package/account/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
- package/account/i18n/messages_defaultSet/index.js.map +1 -0
- package/account/i18n/messages_defaultSet/it.js.map +1 -0
- package/account/i18n/messages_defaultSet/ja.js.map +1 -0
- package/account/i18n/messages_defaultSet/lt.js.map +1 -0
- package/account/i18n/messages_defaultSet/lv.js.map +1 -0
- package/account/i18n/messages_defaultSet/nl.js.map +1 -0
- package/account/i18n/messages_defaultSet/no.js.map +1 -0
- package/account/i18n/messages_defaultSet/pl.js.map +1 -0
- package/account/i18n/messages_defaultSet/pt-BR.js.map +1 -0
- package/account/i18n/messages_defaultSet/ru.js.map +1 -0
- package/account/i18n/messages_defaultSet/sk.js.map +1 -0
- package/account/i18n/messages_defaultSet/sv.js.map +1 -0
- package/account/i18n/messages_defaultSet/th.js.map +1 -0
- package/account/i18n/messages_defaultSet/tr.js.map +1 -0
- package/account/i18n/messages_defaultSet/uk.js.map +1 -0
- package/account/i18n/messages_defaultSet/zh-CN.js.map +1 -0
- package/account/i18n/useI18n.d.ts +6 -5
- package/account/i18n/useI18n.js +24 -2
- package/account/i18n/useI18n.js.map +1 -1
- package/bin/440.index.js +8 -9
- package/login/KcContext/KcContext.d.ts +1 -0
- package/login/KcContext/KcContext.js.map +1 -1
- package/login/i18n/GenericI18n.d.ts +6 -0
- package/login/i18n/GenericI18n.js +2 -0
- package/login/i18n/GenericI18n.js.map +1 -0
- package/login/i18n/i18n.d.ts +21 -30
- package/login/i18n/i18n.js +44 -93
- package/login/i18n/i18n.js.map +1 -1
- package/login/i18n/index.d.ts +4 -3
- package/login/i18n/index.js.map +1 -1
- package/login/i18n/messages_defaultSet/ar.js.map +1 -0
- package/login/i18n/messages_defaultSet/ca.js.map +1 -0
- package/login/i18n/messages_defaultSet/cs.js.map +1 -0
- package/login/i18n/messages_defaultSet/da.js.map +1 -0
- package/login/i18n/messages_defaultSet/de.js.map +1 -0
- package/login/i18n/messages_defaultSet/el.js.map +1 -0
- package/login/i18n/messages_defaultSet/en.js.map +1 -0
- package/login/i18n/messages_defaultSet/es.js.map +1 -0
- package/login/i18n/messages_defaultSet/fa.js.map +1 -0
- package/login/i18n/messages_defaultSet/fi.js.map +1 -0
- package/login/i18n/messages_defaultSet/fr.js.map +1 -0
- package/login/i18n/messages_defaultSet/hu.js.map +1 -0
- package/login/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
- package/login/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
- package/login/i18n/messages_defaultSet/index.js.map +1 -0
- package/login/i18n/messages_defaultSet/it.js.map +1 -0
- package/login/i18n/messages_defaultSet/ja.js.map +1 -0
- package/login/i18n/messages_defaultSet/lt.js.map +1 -0
- package/login/i18n/messages_defaultSet/lv.js.map +1 -0
- package/login/i18n/messages_defaultSet/nl.js.map +1 -0
- package/login/i18n/messages_defaultSet/no.js.map +1 -0
- package/login/i18n/messages_defaultSet/pl.js.map +1 -0
- package/login/i18n/messages_defaultSet/pt-BR.js.map +1 -0
- package/login/i18n/messages_defaultSet/ru.js.map +1 -0
- package/login/i18n/messages_defaultSet/sk.js.map +1 -0
- package/login/i18n/messages_defaultSet/sv.js.map +1 -0
- package/login/i18n/messages_defaultSet/th.js.map +1 -0
- package/login/i18n/messages_defaultSet/tr.js.map +1 -0
- package/login/i18n/messages_defaultSet/uk.js.map +1 -0
- package/login/i18n/messages_defaultSet/zh-CN.js.map +1 -0
- package/login/i18n/useI18n.d.ts +6 -5
- package/login/i18n/useI18n.js +33 -2
- package/login/i18n/useI18n.js.map +1 -1
- package/login/lib/useUserProfileForm.js +4 -3
- package/login/lib/useUserProfileForm.js.map +1 -1
- package/login/pages/Info.js +1 -1
- package/login/pages/Info.js.map +1 -1
- package/package.json +235 -227
- package/src/account/KcContext/KcContext.ts +4 -1
- package/src/account/KcContext/kcContextMocks.ts +4 -1
- package/src/account/i18n/GenericI18n.tsx +6 -0
- package/src/account/i18n/i18n.tsx +88 -126
- package/src/account/i18n/index.ts +4 -3
- package/src/account/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
- package/src/account/i18n/useI18n.tsx +81 -0
- package/src/bin/keycloakify/buildJars/buildJar.ts +10 -14
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +100 -88
- package/src/bin/keycloakify/generateResources/generateMessageProperties.ts +1 -1
- package/src/login/KcContext/KcContext.ts +1 -0
- package/src/login/i18n/GenericI18n.tsx +6 -0
- package/src/login/i18n/i18n.tsx +82 -165
- package/src/login/i18n/index.ts +4 -3
- package/src/login/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
- package/src/login/i18n/useI18n.tsx +90 -0
- package/src/login/lib/useUserProfileForm.tsx +13 -12
- package/src/login/pages/Info.tsx +1 -1
- package/stories/login/pages/Register.stories.tsx +6 -6
- package/stories/login/pages/SelectAuthenticator.stories.tsx +19 -4
- package/account/i18n/baseMessages/ar.js.map +0 -1
- package/account/i18n/baseMessages/ca.js.map +0 -1
- package/account/i18n/baseMessages/cs.js.map +0 -1
- package/account/i18n/baseMessages/da.js.map +0 -1
- package/account/i18n/baseMessages/de.js.map +0 -1
- package/account/i18n/baseMessages/el.js.map +0 -1
- package/account/i18n/baseMessages/en.js.map +0 -1
- package/account/i18n/baseMessages/es.js.map +0 -1
- package/account/i18n/baseMessages/fa.js.map +0 -1
- package/account/i18n/baseMessages/fi.js.map +0 -1
- package/account/i18n/baseMessages/fr.js.map +0 -1
- package/account/i18n/baseMessages/hu.js.map +0 -1
- package/account/i18n/baseMessages/index.js.map +0 -1
- package/account/i18n/baseMessages/it.js.map +0 -1
- package/account/i18n/baseMessages/ja.js.map +0 -1
- package/account/i18n/baseMessages/lt.js.map +0 -1
- package/account/i18n/baseMessages/lv.js.map +0 -1
- package/account/i18n/baseMessages/nl.js.map +0 -1
- package/account/i18n/baseMessages/no.js.map +0 -1
- package/account/i18n/baseMessages/pl.js.map +0 -1
- package/account/i18n/baseMessages/pt-BR.js.map +0 -1
- package/account/i18n/baseMessages/ru.js.map +0 -1
- package/account/i18n/baseMessages/sk.js.map +0 -1
- package/account/i18n/baseMessages/sv.js.map +0 -1
- package/account/i18n/baseMessages/th.js.map +0 -1
- package/account/i18n/baseMessages/tr.js.map +0 -1
- package/account/i18n/baseMessages/uk.js.map +0 -1
- package/account/i18n/baseMessages/zh-CN.js.map +0 -1
- package/login/i18n/baseMessages/ar.js.map +0 -1
- package/login/i18n/baseMessages/ca.js.map +0 -1
- package/login/i18n/baseMessages/cs.js.map +0 -1
- package/login/i18n/baseMessages/da.js.map +0 -1
- package/login/i18n/baseMessages/de.js.map +0 -1
- package/login/i18n/baseMessages/el.js.map +0 -1
- package/login/i18n/baseMessages/en.js.map +0 -1
- package/login/i18n/baseMessages/es.js.map +0 -1
- package/login/i18n/baseMessages/fa.js.map +0 -1
- package/login/i18n/baseMessages/fi.js.map +0 -1
- package/login/i18n/baseMessages/fr.js.map +0 -1
- package/login/i18n/baseMessages/hu.js.map +0 -1
- package/login/i18n/baseMessages/index.js.map +0 -1
- package/login/i18n/baseMessages/it.js.map +0 -1
- package/login/i18n/baseMessages/ja.js.map +0 -1
- package/login/i18n/baseMessages/lt.js.map +0 -1
- package/login/i18n/baseMessages/lv.js.map +0 -1
- package/login/i18n/baseMessages/nl.js.map +0 -1
- package/login/i18n/baseMessages/no.js.map +0 -1
- package/login/i18n/baseMessages/pl.js.map +0 -1
- package/login/i18n/baseMessages/pt-BR.js.map +0 -1
- package/login/i18n/baseMessages/ru.js.map +0 -1
- package/login/i18n/baseMessages/sk.js.map +0 -1
- package/login/i18n/baseMessages/sv.js.map +0 -1
- package/login/i18n/baseMessages/th.js.map +0 -1
- package/login/i18n/baseMessages/tr.js.map +0 -1
- package/login/i18n/baseMessages/uk.js.map +0 -1
- package/login/i18n/baseMessages/zh-CN.js.map +0 -1
- package/src/account/i18n/useI18n.ts +0 -44
- package/src/login/i18n/useI18n.ts +0 -44
- /package/account/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
- /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
- /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
- /package/src/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
- /package/src/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
@@ -1,6 +1,24 @@
|
|
1
1
|
<#assign pageId="PAGE_ID_xIgLsPgGId9D8e">
|
2
2
|
<#assign themeType="KEYCLOAKIFY_THEME_TYPE_dExKd3xEdr">
|
3
|
+
<#assign xKeycloakifyMessages = {}>
|
4
|
+
<#assign debugMessage="">
|
5
|
+
|
3
6
|
const kcContext = ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
|
7
|
+
|
8
|
+
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
|
9
|
+
|
10
|
+
console.log(`${debugMessage}`);
|
11
|
+
|
12
|
+
kcContext["x-keycloakify"] = {};
|
13
|
+
|
14
|
+
{
|
15
|
+
var messages = {};
|
16
|
+
<#list xKeycloakifyMessages as key, resolvedMsg>
|
17
|
+
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
|
18
|
+
</#list>
|
19
|
+
kcContext["x-keycloakify"].messages = messages;
|
20
|
+
}
|
21
|
+
|
4
22
|
if( kcContext.messagesPerField ){
|
5
23
|
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
|
6
24
|
kcContext.messagesPerField.existsError = function (){
|
@@ -42,93 +60,7 @@ if( kcContext.resourceUrl && !kcContext.url ){
|
|
42
60
|
enumerable: false
|
43
61
|
});
|
44
62
|
}
|
45
|
-
|
46
|
-
messages: {}
|
47
|
-
};
|
48
|
-
<#if profile?? && profile.attributes??>
|
49
|
-
{
|
50
|
-
var messages = {
|
51
|
-
<#list profile.attributes as attribute>
|
52
|
-
<#if attribute.displayName??>
|
53
|
-
"${attribute.displayName}": decodeHtmlEntities("${advancedMsg(attribute.displayName)?js_string}"),
|
54
|
-
</#if>
|
55
|
-
<#if attribute.group??>
|
56
|
-
<#if attribute.group.displayDescription??>
|
57
|
-
"${attribute.group.displayDescription}": decodeHtmlEntities("${advancedMsg(attribute.group.displayDescription)?js_string}"),
|
58
|
-
</#if>
|
59
|
-
<#if attribute.group.displayHeader??>
|
60
|
-
"${attribute.group.displayHeader}": decodeHtmlEntities("${advancedMsg(attribute.group.displayHeader)?js_string}"),
|
61
|
-
</#if>
|
62
|
-
</#if>
|
63
|
-
<#if attribute.annotations??>
|
64
|
-
<#if attribute.annotations.inputHelperTextBefore??>
|
65
|
-
"${attribute.annotations.inputHelperTextBefore}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputHelperTextBefore)?js_string}"),
|
66
|
-
</#if>
|
67
|
-
<#if attribute.annotations.inputHelperTextAfter??>
|
68
|
-
"${attribute.annotations.inputHelperTextAfter}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputHelperTextAfter)?js_string}"),
|
69
|
-
</#if>
|
70
|
-
<#if attribute.annotations.inputTypePlaceholder??>
|
71
|
-
"${attribute.annotations.inputTypePlaceholder}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputTypePlaceholder)?js_string}"),
|
72
|
-
</#if>
|
73
|
-
<!-- Loop through the options that are in attribute.validators.options.options -->
|
74
|
-
<#if (
|
75
|
-
attribute.annotations.inputOptionLabelsI18nPrefix?? &&
|
76
|
-
attribute.validators?? &&
|
77
|
-
attribute.validators.options??
|
78
|
-
)>
|
79
|
-
<#list attribute.validators.options.options as option>
|
80
|
-
"${attribute.annotations.inputOptionLabelsI18nPrefix}.${option}": decodeHtmlEntities("${msg(attribute.annotations.inputOptionLabelsI18nPrefix + "." + option)?js_string}"),
|
81
|
-
</#list>
|
82
|
-
</#if>
|
83
|
-
</#if>
|
84
|
-
</#list>
|
85
|
-
};
|
86
|
-
Object.assign(kcContext["x-keycloakify"].messages, messages);
|
87
|
-
}
|
88
|
-
</#if>
|
89
|
-
<#if pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
|
90
|
-
kcContext["x-keycloakify"].messages["termsText"]= decodeHtmlEntities("${msg("termsText")?js_string}");
|
91
|
-
</#if>
|
92
|
-
<#if auth?? && auth.authenticationSelections??>
|
93
|
-
{
|
94
|
-
var messages = {
|
95
|
-
<#list auth.authenticationSelections as authenticationSelection>
|
96
|
-
<#if authenticationSelection.displayName??>
|
97
|
-
"${authenticationSelection.displayName}": decodeHtmlEntities("${advancedMsg(authenticationSelection.displayName)?js_string}"),
|
98
|
-
</#if>
|
99
|
-
<#if authenticationSelection.helpText??>
|
100
|
-
"${authenticationSelection.helpText}": decodeHtmlEntities("${advancedMsg(authenticationSelection.helpText)?js_string}"),
|
101
|
-
</#if>
|
102
|
-
</#list>
|
103
|
-
};
|
104
|
-
Object.assign(kcContext["x-keycloakify"].messages, messages);
|
105
|
-
}
|
106
|
-
</#if>
|
107
|
-
<#if themeType == "login" && pageId == "info.ftl" && requiredActions??>
|
108
|
-
{
|
109
|
-
var messages = {
|
110
|
-
<#list requiredActions as requiredAction>
|
111
|
-
"requiredAction.${requiredAction}": decodeHtmlEntities("${advancedMsg("requiredAction." + requiredAction)?js_string}"),
|
112
|
-
</#list>
|
113
|
-
};
|
114
|
-
Object.assign(kcContext["x-keycloakify"].messages, messages);
|
115
|
-
}
|
116
|
-
</#if>
|
117
|
-
<#if authenticators?? && authenticators.authenticators??>
|
118
|
-
{
|
119
|
-
var messages = {
|
120
|
-
<#list authenticators.authenticators as authenticator>
|
121
|
-
"${authenticator.label}": decodeHtmlEntities("${advancedMsg(authenticator.label)?js_string}"),
|
122
|
-
<#if authenticator.transports?? && authenticator.transports.displayNameProperties??>
|
123
|
-
<#list authenticator.transports.displayNameProperties as displayNameProperty>
|
124
|
-
"${displayNameProperty}": decodeHtmlEntities("${advancedMsg(displayNameProperty)?js_string}"),
|
125
|
-
</#list>
|
126
|
-
</#if>
|
127
|
-
</#list>
|
128
|
-
};
|
129
|
-
Object.assign(kcContext["x-keycloakify"].messages, messages);
|
130
|
-
}
|
131
|
-
</#if>
|
63
|
+
|
132
64
|
attributes_to_attributesByName: {
|
133
65
|
if( !kcContext.profile ){
|
134
66
|
break attributes_to_attributesByName;
|
@@ -579,6 +511,17 @@ function decodeHtmlEntities(htmlStr){
|
|
579
511
|
<#return object?c>
|
580
512
|
</#if>
|
581
513
|
|
514
|
+
<#local isString = "">
|
515
|
+
<#attempt>
|
516
|
+
<#local isString = object?is_string>
|
517
|
+
<#recover>
|
518
|
+
<#return "ABORT: Can't test if it's a string">
|
519
|
+
</#attempt>
|
520
|
+
|
521
|
+
<#if isString>
|
522
|
+
<@addToXKeycloakifyMessagesIfMessageKey str=object />
|
523
|
+
</#if>
|
524
|
+
|
582
525
|
<#attempt>
|
583
526
|
<#return '"' + object?js_string + '"'>;
|
584
527
|
<#recover>
|
@@ -629,4 +572,73 @@ function decodeHtmlEntities(htmlStr){
|
|
629
572
|
|
630
573
|
<#function are_same_path path searchedPath>
|
631
574
|
<#return path?size == searchedPath?size && is_subpath(path, searchedPath)>
|
632
|
-
</#function>
|
575
|
+
</#function>
|
576
|
+
|
577
|
+
<#macro addToXKeycloakifyMessagesIfMessageKey str>
|
578
|
+
<#if !msg?? || !msg?is_method>
|
579
|
+
<#return>
|
580
|
+
</#if>
|
581
|
+
<#if (str?length > 200)>
|
582
|
+
<#return>
|
583
|
+
</#if>
|
584
|
+
<#local key=removeBrackets(str)>
|
585
|
+
<#if key?length==0>
|
586
|
+
<#return>
|
587
|
+
</#if>
|
588
|
+
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
|
589
|
+
<#return>
|
590
|
+
</#if>
|
591
|
+
<#local resolvedMsg=msg(key)>
|
592
|
+
<#if resolvedMsg==key>
|
593
|
+
<#return>
|
594
|
+
</#if>
|
595
|
+
<#assign xKeycloakifyMessages = xKeycloakifyMessages + { "${key}": resolvedMsg }>
|
596
|
+
</#macro>
|
597
|
+
|
598
|
+
<#function removeBrackets str>
|
599
|
+
<#if str?starts_with("${") && str?ends_with("}")>
|
600
|
+
<#return str[2..(str?length-2)]>
|
601
|
+
<#else>
|
602
|
+
<#return str>
|
603
|
+
</#if>
|
604
|
+
</#function>
|
605
|
+
|
606
|
+
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
|
607
|
+
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
|
608
|
+
<#list profile.attributes as attribute>
|
609
|
+
<#if !(
|
610
|
+
attribute.annotations?? && attribute.annotations?is_hash &&
|
611
|
+
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
|
612
|
+
)>
|
613
|
+
<#continue>
|
614
|
+
</#if>
|
615
|
+
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
|
616
|
+
<#if !(
|
617
|
+
attribute.validators?? && attribute.validators?is_hash &&
|
618
|
+
attribute.validators.options?? && attribute.validators.options?is_hash &&
|
619
|
+
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
|
620
|
+
)>
|
621
|
+
<#continue>
|
622
|
+
</#if>
|
623
|
+
<#list attribute.validators.options.options as option>
|
624
|
+
<#if !option?is_string>
|
625
|
+
<#continue>
|
626
|
+
</#if>
|
627
|
+
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
|
628
|
+
</#list>
|
629
|
+
</#list>
|
630
|
+
</#if>
|
631
|
+
<#if pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
|
632
|
+
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
|
633
|
+
</#if>
|
634
|
+
<#if requiredActions?? && requiredActions?is_enumerable>
|
635
|
+
<#list requiredActions as requiredAction>
|
636
|
+
<#if !requiredAction?is_string>
|
637
|
+
<#continue>
|
638
|
+
</#if>
|
639
|
+
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
|
640
|
+
</#list>
|
641
|
+
</#if>
|
642
|
+
</#macro>
|
643
|
+
|
644
|
+
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { GenericI18n_noJsx } from "./i18n";
|
2
|
+
|
3
|
+
export type GenericI18n<MessageKey extends string> = GenericI18n_noJsx<MessageKey> & {
|
4
|
+
msg: (key: MessageKey, ...args: (string | undefined)[]) => JSX.Element;
|
5
|
+
advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
|
6
|
+
};
|
package/src/login/i18n/i18n.tsx
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
import "keycloakify/tools/Object.fromEntries";
|
2
2
|
import { assert } from "tsafe/assert";
|
3
|
-
import
|
4
|
-
import {
|
3
|
+
import messages_defaultSet_fallbackLanguage from "./messages_defaultSet/en";
|
4
|
+
import { fetchMessages_defaultSet } from "./messages_defaultSet";
|
5
5
|
import type { KcContext } from "../KcContext";
|
6
6
|
import { fallbackLanguageTag } from "keycloakify/bin/shared/constants";
|
7
|
+
import { id } from "tsafe/id";
|
7
8
|
|
8
9
|
export type KcContextLike = {
|
9
10
|
locale?: {
|
@@ -17,9 +18,7 @@ export type KcContextLike = {
|
|
17
18
|
|
18
19
|
assert<KcContext extends KcContextLike ? true : false>();
|
19
20
|
|
20
|
-
export type MessageKey
|
21
|
-
|
22
|
-
export type GenericI18n<MessageKey extends string> = {
|
21
|
+
export type GenericI18n_noJsx<MessageKey extends string> = {
|
23
22
|
/**
|
24
23
|
* e.g: "en", "fr", "zh-CN"
|
25
24
|
*
|
@@ -39,16 +38,21 @@ export type GenericI18n<MessageKey extends string> = {
|
|
39
38
|
* */
|
40
39
|
labelBySupportedLanguageTag: Record<string, string>;
|
41
40
|
/**
|
41
|
+
*
|
42
42
|
* Examples assuming currentLanguageTag === "en"
|
43
|
+
* {
|
44
|
+
* en: {
|
45
|
+
* "access-denied": "Access denied",
|
46
|
+
* "impersonateTitleHtml": "<strong>{0}</strong> Impersonate User",
|
47
|
+
* "bar": "Bar {0}"
|
48
|
+
* }
|
49
|
+
* }
|
43
50
|
*
|
44
|
-
*
|
45
|
-
*
|
46
|
-
*/
|
47
|
-
msg: (key: MessageKey, ...args: (string | undefined)[]) => JSX.Element;
|
48
|
-
/**
|
49
|
-
* It's the same thing as msg() but instead of returning a JSX.Element it returns a string.
|
50
|
-
* It can be more convenient to manipulate strings but if there are HTML tags it wont render.
|
51
|
+
* msgStr("access-denied") === "Access denied"
|
52
|
+
* msgStr("not-a-message-key") Throws an error
|
51
53
|
* msgStr("impersonateTitleHtml", "Foo") === "<strong>Foo</strong> Impersonate User"
|
54
|
+
* msgStr("${bar}", "<strong>c</strong>") === "Bar <strong>XXX</strong>"
|
55
|
+
* The html in the arg is partially escaped for security reasons, it might come from an untrusted source, it's not safe to render it as html.
|
52
56
|
*/
|
53
57
|
msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
|
54
58
|
/**
|
@@ -59,24 +63,11 @@ export type GenericI18n<MessageKey extends string> = {
|
|
59
63
|
* {
|
60
64
|
* en: {
|
61
65
|
* "access-denied": "Access denied",
|
62
|
-
* "foo": "Foo {0} {1}",
|
63
|
-
* "bar": "Bar {0}"
|
64
66
|
* }
|
65
67
|
* }
|
66
68
|
*
|
67
|
-
*
|
68
|
-
*
|
69
|
-
* advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
|
70
|
-
* advancedMsg("${bar}", "<strong>c</strong>")
|
71
|
-
* === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
|
72
|
-
* === <span>Bar <strong>XXX</strong></span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
|
73
|
-
* advancedMsg("${foo} xx ${bar}", "a", "b", "c")
|
74
|
-
* === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
|
75
|
-
* === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
|
76
|
-
*/
|
77
|
-
advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
|
78
|
-
/**
|
79
|
-
* See advancedMsg() but instead of returning a JSX.Element it returns a string.
|
69
|
+
* advancedMsgStr("${access-denied}") === advancedMsgStr("access-denied") === msgStr("access-denied") === "Access denied"
|
70
|
+
* advancedMsgStr("${not-a-message-key}") === advancedMsgStr("not-a-message-key") === "not-a-message-key"
|
80
71
|
*/
|
81
72
|
advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
|
82
73
|
|
@@ -88,10 +79,12 @@ export type GenericI18n<MessageKey extends string> = {
|
|
88
79
|
isFetchingTranslations: boolean;
|
89
80
|
};
|
90
81
|
|
91
|
-
export
|
92
|
-
|
82
|
+
export type MessageKey_defaultSet = keyof typeof messages_defaultSet_fallbackLanguage;
|
83
|
+
|
84
|
+
export function createGetI18n<MessageKey_themeDefined extends string = never>(messagesByLanguageTag_themeDefined: {
|
85
|
+
[languageTag: string]: { [key in MessageKey_themeDefined]: string };
|
93
86
|
}) {
|
94
|
-
type I18n =
|
87
|
+
type I18n = GenericI18n_noJsx<MessageKey_defaultSet | MessageKey_themeDefined>;
|
95
88
|
|
96
89
|
type Result = { i18n: I18n; prI18n_currentLanguage: Promise<I18n> | undefined };
|
97
90
|
|
@@ -126,11 +119,18 @@ export function createGetI18n<ExtraMessageKey extends string = never>(messageBun
|
|
126
119
|
labelBySupportedLanguageTag: Object.fromEntries((kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label]))
|
127
120
|
};
|
128
121
|
|
129
|
-
const { createI18nTranslationFunctions } = createI18nTranslationFunctionsFactory<
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
122
|
+
const { createI18nTranslationFunctions } = createI18nTranslationFunctionsFactory<MessageKey_themeDefined>({
|
123
|
+
messages_themeDefined:
|
124
|
+
messagesByLanguageTag_themeDefined[partialI18n.currentLanguageTag] ??
|
125
|
+
messagesByLanguageTag_themeDefined[fallbackLanguageTag] ??
|
126
|
+
(() => {
|
127
|
+
const firstLanguageTag = Object.keys(messagesByLanguageTag_themeDefined)[0];
|
128
|
+
if (firstLanguageTag === undefined) {
|
129
|
+
return undefined;
|
130
|
+
}
|
131
|
+
return messagesByLanguageTag_themeDefined[firstLanguageTag];
|
132
|
+
})(),
|
133
|
+
messages_fromKcServer: kcContext["x-keycloakify"].messages
|
134
134
|
});
|
135
135
|
|
136
136
|
const isCurrentLanguageFallbackLanguage = partialI18n.currentLanguageTag === fallbackLanguageTag;
|
@@ -139,18 +139,18 @@ export function createGetI18n<ExtraMessageKey extends string = never>(messageBun
|
|
139
139
|
i18n: {
|
140
140
|
...partialI18n,
|
141
141
|
...createI18nTranslationFunctions({
|
142
|
-
|
142
|
+
messages_defaultSet_currentLanguage: isCurrentLanguageFallbackLanguage ? messages_defaultSet_fallbackLanguage : undefined
|
143
143
|
}),
|
144
144
|
isFetchingTranslations: !isCurrentLanguageFallbackLanguage
|
145
145
|
},
|
146
146
|
prI18n_currentLanguage: isCurrentLanguageFallbackLanguage
|
147
147
|
? undefined
|
148
148
|
: (async () => {
|
149
|
-
const
|
149
|
+
const messages_defaultSet_currentLanguage = await fetchMessages_defaultSet(partialI18n.currentLanguageTag);
|
150
150
|
|
151
151
|
const i18n_currentLanguage: I18n = {
|
152
152
|
...partialI18n,
|
153
|
-
...createI18nTranslationFunctions({
|
153
|
+
...createI18nTranslationFunctions({ messages_defaultSet_currentLanguage }),
|
154
154
|
isFetchingTranslations: false
|
155
155
|
};
|
156
156
|
|
@@ -173,155 +173,72 @@ export function createGetI18n<ExtraMessageKey extends string = never>(messageBun
|
|
173
173
|
return { getI18n };
|
174
174
|
}
|
175
175
|
|
176
|
-
function createI18nTranslationFunctionsFactory<
|
177
|
-
|
178
|
-
|
179
|
-
messageBundle_currentLanguage: Partial<Record<ExtraMessageKey, string>> | undefined;
|
180
|
-
messageBundle_realm: Record<string, string>;
|
176
|
+
function createI18nTranslationFunctionsFactory<MessageKey_themeDefined extends string>(params: {
|
177
|
+
messages_themeDefined: Record<MessageKey_themeDefined, string> | undefined;
|
178
|
+
messages_fromKcServer: Record<string, string>;
|
181
179
|
}) {
|
182
|
-
const {
|
183
|
-
|
184
|
-
const messages_fallbackLanguage = {
|
185
|
-
...params.messages_fallbackLanguage,
|
186
|
-
...params.messageBundle_fallbackLanguage
|
187
|
-
};
|
180
|
+
const { messages_themeDefined, messages_fromKcServer } = params;
|
188
181
|
|
189
182
|
function createI18nTranslationFunctions(params: {
|
190
|
-
|
191
|
-
}): Pick<
|
192
|
-
const
|
193
|
-
...params.messages_currentLanguage,
|
194
|
-
...messageBundle_currentLanguage
|
195
|
-
};
|
183
|
+
messages_defaultSet_currentLanguage: Partial<Record<MessageKey_defaultSet, string>> | undefined;
|
184
|
+
}): Pick<GenericI18n_noJsx<MessageKey_defaultSet | MessageKey_themeDefined>, "msgStr" | "advancedMsgStr"> {
|
185
|
+
const { messages_defaultSet_currentLanguage } = params;
|
196
186
|
|
197
|
-
function resolveMsg(props: { key: string; args: (string | undefined)[]
|
198
|
-
const { key, args
|
199
|
-
|
200
|
-
const messageOrUndefined: string | undefined = (() => {
|
201
|
-
terms_text: {
|
202
|
-
if (key !== "termsText") {
|
203
|
-
break terms_text;
|
204
|
-
}
|
205
|
-
const termsTextMessage = messageBundle_realm[key];
|
206
|
-
|
207
|
-
if (termsTextMessage === undefined) {
|
208
|
-
break terms_text;
|
209
|
-
}
|
210
|
-
|
211
|
-
return termsTextMessage;
|
212
|
-
}
|
187
|
+
function resolveMsg(props: { key: string; args: (string | undefined)[] }): string | undefined {
|
188
|
+
const { key, args } = props;
|
213
189
|
|
214
|
-
|
190
|
+
const message =
|
191
|
+
id<Record<string, string | undefined>>(messages_fromKcServer)[key] ??
|
192
|
+
id<Record<string, string | undefined> | undefined>(messages_themeDefined)?.[key] ??
|
193
|
+
id<Record<string, string | undefined> | undefined>(messages_defaultSet_currentLanguage)?.[key] ??
|
194
|
+
id<Record<string, string | undefined>>(messages_defaultSet_fallbackLanguage)[key];
|
215
195
|
|
216
|
-
|
217
|
-
})();
|
218
|
-
|
219
|
-
if (messageOrUndefined === undefined) {
|
196
|
+
if (message === undefined) {
|
220
197
|
return undefined;
|
221
198
|
}
|
222
199
|
|
223
|
-
const
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
?.map(g => g.match(/{([0-9]+)}/)![1])
|
229
|
-
.map(indexStr => parseInt(indexStr))
|
230
|
-
.sort((a, b) => a - b)[0];
|
231
|
-
|
232
|
-
if (startIndex === undefined) {
|
233
|
-
// No {0} in message (no arguments expected)
|
234
|
-
return message;
|
235
|
-
}
|
236
|
-
|
237
|
-
let messageWithArgsInjected = message;
|
238
|
-
|
239
|
-
args.forEach((arg, i) => {
|
240
|
-
if (arg === undefined) {
|
241
|
-
return;
|
242
|
-
}
|
243
|
-
|
244
|
-
messageWithArgsInjected = messageWithArgsInjected.replace(
|
245
|
-
new RegExp(`\\{${i + startIndex}\\}`, "g"),
|
246
|
-
arg.replace(/</g, "<").replace(/>/g, ">")
|
247
|
-
);
|
248
|
-
});
|
249
|
-
|
250
|
-
return messageWithArgsInjected;
|
251
|
-
})();
|
252
|
-
|
253
|
-
return doRenderAsHtml ? (
|
254
|
-
<span
|
255
|
-
// NOTE: The message is trusted. The arguments are not but are escaped.
|
256
|
-
dangerouslySetInnerHTML={{
|
257
|
-
__html: messageWithArgsInjectedIfAny
|
258
|
-
}}
|
259
|
-
/>
|
260
|
-
) : (
|
261
|
-
messageWithArgsInjectedIfAny
|
262
|
-
);
|
263
|
-
}
|
200
|
+
const startIndex = message
|
201
|
+
.match(/{[0-9]+}/g)
|
202
|
+
?.map(g => g.match(/{([0-9]+)}/)![1])
|
203
|
+
.map(indexStr => parseInt(indexStr))
|
204
|
+
.sort((a, b) => a - b)[0];
|
264
205
|
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
realm_messages: {
|
269
|
-
const resolvedMessage = messageBundle_realm[key] ?? messageBundle_realm["${" + key + "}"];
|
270
|
-
|
271
|
-
if (resolvedMessage === undefined) {
|
272
|
-
break realm_messages;
|
273
|
-
}
|
274
|
-
|
275
|
-
return doRenderAsHtml ? (
|
276
|
-
<span
|
277
|
-
// NOTE: The message is trusted. The arguments are not but are escaped.
|
278
|
-
dangerouslySetInnerHTML={{
|
279
|
-
__html: resolvedMessage
|
280
|
-
}}
|
281
|
-
/>
|
282
|
-
) : (
|
283
|
-
resolvedMessage
|
284
|
-
);
|
206
|
+
if (startIndex === undefined) {
|
207
|
+
// No {0} in message (no arguments expected)
|
208
|
+
return message;
|
285
209
|
}
|
286
210
|
|
287
|
-
|
288
|
-
const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
|
211
|
+
let messageWithArgsInjected = message;
|
289
212
|
|
290
|
-
|
291
|
-
|
213
|
+
args.forEach((arg, i) => {
|
214
|
+
if (arg === undefined) {
|
215
|
+
return;
|
292
216
|
}
|
293
217
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
218
|
+
messageWithArgsInjected = messageWithArgsInjected.replace(
|
219
|
+
new RegExp(`\\{${i + startIndex}\\}`, "g"),
|
220
|
+
arg.replace(/</g, "<").replace(/>/g, ">")
|
221
|
+
);
|
222
|
+
});
|
298
223
|
|
299
|
-
|
300
|
-
|
224
|
+
return messageWithArgsInjected;
|
225
|
+
}
|
301
226
|
|
302
|
-
|
227
|
+
function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[] }): string {
|
228
|
+
const { key, args } = props;
|
303
229
|
|
304
|
-
|
305
|
-
});
|
230
|
+
const match = key.match(/^\$\{(.+)\}$/);
|
306
231
|
|
307
|
-
return
|
232
|
+
return resolveMsg({ key: match !== null ? match[1] : key, args }) ?? key;
|
308
233
|
}
|
309
234
|
|
310
235
|
return {
|
311
|
-
msgStr: (key, ...args) =>
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
doRenderAsHtml: true
|
318
|
-
}) as JSX.Element,
|
319
|
-
advancedMsgStr: (key, ...args) =>
|
320
|
-
resolveMsgAdvanced({
|
321
|
-
key,
|
322
|
-
args,
|
323
|
-
doRenderAsHtml: false
|
324
|
-
}) as string
|
236
|
+
msgStr: (key, ...args) => {
|
237
|
+
const resolvedMessage = resolveMsg({ key, args });
|
238
|
+
assert(resolvedMessage !== undefined, `Message with key "${key}" not found`);
|
239
|
+
return resolvedMessage;
|
240
|
+
},
|
241
|
+
advancedMsgStr: (key, ...args) => resolveMsgAdvanced({ key, args })
|
325
242
|
};
|
326
243
|
}
|
327
244
|
|
package/src/login/i18n/index.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import type { GenericI18n
|
2
|
-
|
3
|
-
export type
|
1
|
+
import type { GenericI18n } from "./GenericI18n";
|
2
|
+
import type { MessageKey_defaultSet, KcContextLike } from "./i18n";
|
3
|
+
export type { MessageKey_defaultSet, KcContextLike };
|
4
|
+
export type I18n = GenericI18n<MessageKey_defaultSet>;
|
4
5
|
export { createUseI18n } from "./useI18n";
|
@@ -2,8 +2,8 @@
|
|
2
2
|
//PLEASE DO NOT EDIT MANUALLY
|
3
3
|
import * as en from "./en";
|
4
4
|
|
5
|
-
export async function
|
6
|
-
const { default:
|
5
|
+
export async function fetchMessages_defaultSet(currentLanguageTag: string) {
|
6
|
+
const { default: messages_defaultSet } = await (() => {
|
7
7
|
switch (currentLanguageTag) {
|
8
8
|
case "en": return en;
|
9
9
|
case "ar": return import("./ar");
|
@@ -35,5 +35,5 @@ export async function getMessages(currentLanguageTag: string) {
|
|
35
35
|
default: return { "default": {} };
|
36
36
|
}
|
37
37
|
})();
|
38
|
-
return
|
38
|
+
return messages_defaultSet;
|
39
39
|
}
|