Working with v7 (without account theme)

This commit is contained in:
garronej 2023-03-21 02:55:32 +01:00
parent 93780a9702
commit df76640100
70 changed files with 637 additions and 1583 deletions

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("emailTestBodyHtml",realmName))?no_esc}
</@layout.emailLayout>

View file

@ -1,5 +0,0 @@
<html>
<body>
${kcSanitize(msg("emailUpdateConfirmationBodyHtml",link, newEmail, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</body>
</html>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("emailVerificationBodyCodeHtml",code))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("emailVerificationBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("eventLoginErrorBodyHtml",event.date,event.ipAddress))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress))?no_esc}
</@layout.emailLayout>

View file

@ -1,8 +0,0 @@
<#outputformat "plainText">
<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#sep></#items></#list></#if></#assign>
</#outputformat>
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("executeActionsBodyHtml",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration)))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("identityProviderLinkBodyHtml", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration)))?no_esc}
</@layout.emailLayout>

View file

@ -1,4 +0,0 @@
<#import "template.ftl" as layout>
<@layout.emailLayout>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</@layout.emailLayout>

View file

@ -1,7 +0,0 @@
<#macro emailLayout>
<html>
<body>
<#nested>
</body>
</html>
</#macro>

View file

@ -1,21 +0,0 @@
emailVerificationSubject=Verificaci\u00F3 d''email
emailVerificationBody=Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge.
emailVerificationBodyHtml=<p>Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.</p><p><a href=\"{0}\">{0}</a></p><p> Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.</p><p> Si tu no has creat aquest compte, simplement ignora aquest missatge.</p>
passwordResetSubject=Reinicia contrasenya
passwordResetBody=Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.
passwordResetBodyHtml=<p>Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.</p><p>Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.</p>
executeActionsSubject=Actualitza el teu compte
executeActionsBody=L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minutes.\n\nSi no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.
executeActionsBodyHtml=<p>L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.</p><p><a href=\"{0}\">{0}</a></p><p>Aquest enlla\u00E7 expirar\u00E0 en {1} minutes.</p><p>Si no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.</p>
eventLoginErrorSubject=Fallada en l''inici de sessi\u00F3
eventLoginErrorBody=S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
eventLoginErrorBodyHtml=<p>S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>
eventRemoveTotpSubject=Esborrat OTP
eventRemoveTotpBody=OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador.
eventRemoveTotpBodyHtml=<p>OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. </ P>
eventUpdatePasswordSubject=Actualitzaci\u00F3 de contrasenya
eventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
eventUpdatePasswordBodyHtml=<p>La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>
eventUpdateTotpSubject=Actualitzaci\u00F3 de OTP
eventUpdateTotpBody=OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.
eventUpdateTotpBodyHtml=<p>OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>

View file

@ -1,60 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Ověření e-mailu
emailVerificationBody=Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \n\n{0}\n\nTento odkaz vyprší za {3}.\n\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.
emailVerificationBodyHtml=<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href="{0}">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {3}.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>
emailTestSubject=[KEYCLOAK] - testovací zpráva
emailTestBody=Toto je testovací zpráva
emailTestBodyHtml=<p>Toto je testovací zpráva </p>
identityProviderLinkSubject=Odkaz {0}
identityProviderLinkBody=Někdo chce propojit váš účet "{1}" s účtem "{0}" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \n\n{3}\n\nPlatnost tohoto odkazu je {5}.\n\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.
identityProviderLinkBodyHtml=<p>Někdo chce propojit váš účet <b>{1}</b> s účtem <b>{0}</b> uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty.</p><p><a href="{3}">Odkaz na propojení účtů.</a></p><p> Platnost tohoto odkazu je {5}. </p><p> Pokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.</p>
passwordResetSubject=Zapomenuté heslo
passwordResetBody=Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\n\n{0}\n\nPlatnost tohoto odkazu je {3}.\n\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.
passwordResetBodyHtml=<p>Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href="{0}">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {3}.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>
executeActionsSubject=Aktualizujte svůj účet
executeActionsBody=Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\n\n{0}\n\nPlatnost tohoto odkazu je {4}.\n\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.
executeActionsBodyHtml=<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href="{0}">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>
eventLoginErrorSubject=Chyba přihlášení
eventLoginErrorBody=Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
eventLoginErrorBodyHtml=<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
eventRemoveTotpSubject=Odebrat TOTP
eventRemoveTotpBody=V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
eventRemoveTotpBodyHtml=<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
eventUpdatePasswordSubject=Aktualizace hesla
eventUpdatePasswordBody=V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
eventUpdatePasswordBodyHtml=<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
eventUpdateTotpSubject=Aktualizace OTP
eventUpdateTotpBody=V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
eventUpdateTotpBodyHtml=<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
requiredAction.CONFIGURE_TOTP=Konfigurace OTP
requiredAction.terms_and_conditions=Smluvní podmínky
requiredAction.UPDATE_PASSWORD=Aktualizace hesla
requiredAction.UPDATE_PROFILE=Aktualizace profilu
requiredAction.VERIFY_EMAIL=Ověření e-mailu
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=sekund
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
linkExpirationFormatter.timePeriodUnit.seconds.2=sekundy
linkExpirationFormatter.timePeriodUnit.seconds.3=sekundy
linkExpirationFormatter.timePeriodUnit.seconds.4=sekundy
linkExpirationFormatter.timePeriodUnit.minutes=minut
linkExpirationFormatter.timePeriodUnit.minutes.1=minuta
linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=hodin
linkExpirationFormatter.timePeriodUnit.hours.1=hodina
linkExpirationFormatter.timePeriodUnit.hours.2=hodiny
linkExpirationFormatter.timePeriodUnit.hours.3=hodiny
linkExpirationFormatter.timePeriodUnit.hours.4=hodiny
linkExpirationFormatter.timePeriodUnit.days=dní
linkExpirationFormatter.timePeriodUnit.days.1=den
linkExpirationFormatter.timePeriodUnit.days.2=dny
linkExpirationFormatter.timePeriodUnit.days.3=dny
linkExpirationFormatter.timePeriodUnit.days.4=dny
emailVerificationBodyCode=Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.</p><p><b>{0}</b></p>

View file

@ -1,47 +0,0 @@
# encoding: UTF-8
emailVerificationSubject=Verificer email
emailVerificationBody=Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse \n\n{0}\n\nDette link vil udløbe inden for {3}.\n\nHvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.
emailVerificationBodyHtml=<p>Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse</p><p><a href="{0}">Link til email verificering</a></p><p>Dette link vil udløbe inden for {3}.</p><p>Hvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.</p>
emailTestSubject=[KEYCLOAK] - SMTP test besked
emailTestBody=Dette er en test besked
emailTestBodyHtml=<p>Dette er en test besked</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Nogen vil forbinde din "{1}" konto med "{0}" kontoen som er tilknyttet brugeren {2}. Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti\n\n{3}\n\nDette link vil udløbe efter {5}.\n\nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
identityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2} . Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti</p><p><a href="{3}">Bekræft</a></p><p>Dette link vil udløbe efter {5}.</p><p>nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
passwordResetSubject=Gendan adgangskode
passwordResetBody=Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.\n\n{0}\n\nDette link og kode vil udløbe efter {3}.\n\nHvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.
passwordResetBodyHtml=<p>Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.</p><p><a href="{0}">Nulstil adgangskode</a></p><p>Dette link og kode vil udløbe efter {3}.</p><p>Hvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.</p>
executeActionsSubject=Opdater din konto
executeActionsBody=Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.\n\n{0}\n\nDette link udløber efter {4}.\n\nHvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.
executeActionsBodyHtml=<p>Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.</p><p><a href="{0}">Opdater konto</a></p><p>Dette link udløber efter {4}.</p><p>Hvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.</p>
eventLoginErrorSubject=Logind fejl
eventLoginErrorBody=Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
eventLoginErrorBodyHtml=<p>Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
eventRemoveTotpSubject=Fjern OTP
eventRemoveTotpBody=OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
eventRemoveTotpBodyHtml=<p>OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
eventUpdatePasswordSubject=Opdater adgangskode
eventUpdatePasswordBody=Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
eventUpdatePasswordBodyHtml=<p>Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
eventUpdateTotpSubject=Opdater OTP
eventUpdateTotpBody=OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
eventUpdateTotpBodyHtml=<p>OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
requiredAction.CONFIGURE_TOTP=Konfigurer OTP
requiredAction.terms_and_conditions=Vilkår og Betingelser
requiredAction.UPDATE_PASSWORD=Opdater Adgangskode
requiredAction.UPDATE_PROFILE=Opdater Profil
requiredAction.VERIFY_EMAIL=Verificer Email
# units for link expiration timeout formatting
forbindexpirationFormatter.timePeriodUnit.seconds=sekunder
forbindexpirationFormatter.timePeriodUnit.seconds.1=sekund
forbindexpirationFormatter.timePeriodUnit.minutes=minutter
forbindexpirationFormatter.timePeriodUnit.minutes.1=minut
forbindexpirationFormatter.timePeriodUnit.hours=timer
forbindexpirationFormatter.timePeriodUnit.hours.1=time
forbindexpirationFormatter.timePeriodUnit.days=dage
forbindexpirationFormatter.timePeriodUnit.days.1=dag
emailVerificationBodyCode=Verificer din email adresse ved at indtaste følgende kode.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Verificer din email adresse ved at indtaste følgende kode.</p><p><b>{0}</b></p>

View file

@ -1,43 +0,0 @@
emailVerificationSubject=E-Mail verifizieren
emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.
emailVerificationBodyHtml=<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href="{0}">Link zur Best\u00E4tigung der E-Mail-Adresse</a></p><p>Dieser Link wird in {1} Minuten ablaufen.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.
identityProviderLinkBodyHtml=<p>Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{3}">Link zur Best\u00E4tigung der Kontoverkn\u00FCpfung</a></p><p>Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.</p>
passwordResetSubject=Passwort zur\u00FCcksetzen
passwordResetBody=Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.
passwordResetBodyHtml=<p>Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{0}">Link zum Zur\u00FCcksetzen von Anmeldeinformationen</a></p><p>Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.</p>
executeActionsSubject=Aktualisieren Sie Ihr Konto
executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.
executeActionsBodyHtml=<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href="{0}">Link zum Account-Update</a></p><p>Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.</p>
eventLoginErrorSubject=Fehlgeschlagene Anmeldung
eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
eventLoginErrorBodyHtml=<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
eventRemoveTotpSubject=OTP Entfernt
eventRemoveTotpBody=OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
eventRemoveTotpBodyHtml=<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
eventUpdatePasswordSubject=Passwort Aktualisiert
eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
eventUpdatePasswordBodyHtml=<p>Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
eventUpdateTotpSubject=OTP Aktualisiert
eventUpdateTotpBody=OTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
eventUpdateTotpBodyHtml=<p>OTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
requiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren
requiredAction.terms_and_conditions=Bedingungen und Konditionen
requiredAction.UPDATE_PASSWORD=Passwort aktualisieren
requiredAction.UPDATE_PROFILE=Profil aktualisieren
requiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=Sekunden
linkExpirationFormatter.timePeriodUnit.seconds.1=Sekunde
linkExpirationFormatter.timePeriodUnit.minutes=Minuten
linkExpirationFormatter.timePeriodUnit.minutes.1=Minute
linkExpirationFormatter.timePeriodUnit.hours=Stunden
linkExpirationFormatter.timePeriodUnit.hours.1=Stunde
linkExpirationFormatter.timePeriodUnit.days=Tage
linkExpirationFormatter.timePeriodUnit.days.1=Tag
emailVerificationBodyCode=Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.</p><p><b>{0}</b></p>

View file

@ -1,55 +0,0 @@
emailVerificationSubject=Verify email
emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {3}.\n\nIf you didn''t create this account, just ignore this message.
emailVerificationBodyHtml=<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href="{0}">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn''t create this account, just ignore this message.</p>
emailUpdateConfirmationSubject=Verify new email
emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
emailUpdateConfirmationBodyHtml=<p>To update your {2} account with email address {1}, click the link below</p><p><a href="{0}">{0}</a></p><p>This link will expire within {3}.</p><p>If you don''t want to proceed with this modification, just ignore this message.</p>
emailTestSubject=[KEYCLOAK] - SMTP test message
emailTestBody=This is a test message
emailTestBodyHtml=<p>This is a test message</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
identityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2}. If this was you, click the link below to link accounts</p><p><a href="{3}">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>
passwordResetSubject=Reset password
passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed.
passwordResetBodyHtml=<p>Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.</p><p><a href="{0}">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don''t want to reset your credentials, just ignore this message and nothing will be changed.</p>
executeActionsSubject=Update Your Account
executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
executeActionsBodyHtml=<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href="{0}">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>
eventLoginErrorSubject=Login error
eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
eventLoginErrorBodyHtml=<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>
eventRemoveTotpSubject=Remove OTP
eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
eventRemoveTotpBodyHtml=<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>
eventUpdatePasswordSubject=Update password
eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
eventUpdatePasswordBodyHtml=<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>
eventUpdateTotpSubject=Update OTP
eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
eventUpdateTotpBodyHtml=<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>
requiredAction.CONFIGURE_TOTP=Configure OTP
requiredAction.terms_and_conditions=Terms and Conditions
requiredAction.UPDATE_PASSWORD=Update Password
requiredAction.UPDATE_PROFILE=Update Profile
requiredAction.VERIFY_EMAIL=Verify Email
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=seconds
linkExpirationFormatter.timePeriodUnit.seconds.1=second
linkExpirationFormatter.timePeriodUnit.minutes=minutes
linkExpirationFormatter.timePeriodUnit.minutes.1=minute
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=hours
linkExpirationFormatter.timePeriodUnit.hours.1=hour
linkExpirationFormatter.timePeriodUnit.days=days
linkExpirationFormatter.timePeriodUnit.days.1=day
emailVerificationBodyCode=Please verify your email address by entering in the following code.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>

View file

@ -1,21 +0,0 @@
emailVerificationSubject=Verificaci\u00F3n de email
emailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.
emailVerificationBodyHtml=<p>Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.</p><p><a href=\"{0}\">Enlace de verficaci\u00F3n de direcci\u00F3n de email</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.</p>
passwordResetSubject=Reiniciar contrase\u00F1a
passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.
passwordResetBodyHtml=<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.</p>
executeActionsSubject=Actualiza tu cuenta
executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.
executeActionsBodyHtml=<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirar\u00E1 en {1} minutos.</p><p>Si no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.</p>
eventLoginErrorSubject=Fallo en el inicio de sesi\u00F3n
eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
eventLoginErrorBodyHtml=<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
eventRemoveTotpSubject=Borrado OTP
eventRemoveTotpBody=OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
eventRemoveTotpBodyHtml=<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
eventUpdatePasswordSubject=Actualizaci\u00F3n de contrase\u00F1a
eventUpdatePasswordBody=Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
eventUpdatePasswordBodyHtml=<p>Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>
eventUpdateTotpSubject=Actualizaci\u00F3n de OTP
eventUpdateTotpBody=OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.
eventUpdateTotpBodyHtml=<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.</p>

View file

@ -1,46 +0,0 @@
# encoding: UTF-8
emailVerificationSubject=Vahvista sähköposti
emailVerificationBody=Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi\n\n{0}\n\nLinkin vanhenemisaika: {3}.\n\nJos et luonut tätä tiliä, jätä viesti huomiotta.
emailVerificationBodyHtml=<p>Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi</p><p><a href="{0}">Linkki vahvistamiseen</a></p><p>Linkin vanhenemisaika: {3}.</p><p>Jos et luonut tätä tiliä, jätä viesti huomiotta.</p>
emailTestSubject=[KEYCLOAK] - SMTP testiviesti
emailTestBody=Tämä on testiviesti
emailTestBodyHtml=<p>Tämä on testiviesti</p>
identityProviderLinkSubject=Linkki {0}
identityProviderLinkBody=Saimme pyynnön linkittää "{1}"-tilin "{0}"-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi\n\n{3}\n\nLinkin vanhenemisaika: {5}.\n\nJos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.
identityProviderLinkBodyHtml=<p>Saimme pyynnön linkittää <b>{1}</b>-tilin <b>{0}</b>-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi</p><p><a href="{3}">Vahvista tilien linkitys</a></p><p>Linkin vanhenemisaika: {5}.</p><p>Jos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.</p>
passwordResetSubject=Salasanan nollaus
passwordResetBody=Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:\n\n{0}\n\nLinkin vanhenemisaika: {3} .\n\nJos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.
passwordResetBodyHtml=<p>Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:</p><p><a href="{0}">Linkki salasanan vaihtoon</a></p><p>Linkin vanhenemisaika: <strong>{3}</strong>.</p><p>Jos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.</p>
executeActionsSubject=Päivitä tilisi
executeActionsBody=Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.\n\n{0}\n\nLinkin vanhenemisaika: {4}.\n\nJos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.
executeActionsBodyHtml=<p>Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.</p><p><a href="{0}">Linkki tilin päivittämiseen</a></p><p>Linkin vanhenemisaika: {4}.</p><p>Jos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.</p>
eventLoginErrorSubject=Kirjautuminen epäonnistui
eventLoginErrorBody=Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.
eventLoginErrorBodyHtml=<p>Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.</p>
eventRemoveTotpSubject=Poista OTP
eventRemoveTotpBody=OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
eventRemoveTotpBodyHtml=<p>OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
eventUpdatePasswordSubject=Päivitä salasana
eventUpdatePasswordBody=Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan..
eventUpdatePasswordBodyHtml=<p>Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
eventUpdateTotpSubject=Päivitä OTP
eventUpdateTotpBody=OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
eventUpdateTotpBodyHtml=<p>OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
requiredAction.CONFIGURE_TOTP=Konfiguroi OTP
requiredAction.terms_and_conditions=Käyttöehdot
requiredAction.UPDATE_PASSWORD=Päivitä salasana
requiredAction.UPDATE_PROFILE=Päivitä profiili
requiredAction.VERIFY_EMAIL=Vahvista sähköposti
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=sekuntia
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunti
linkExpirationFormatter.timePeriodUnit.minutes=minuuttia
linkExpirationFormatter.timePeriodUnit.minutes.1=minuutti
linkExpirationFormatter.timePeriodUnit.hours=tuntia
linkExpirationFormatter.timePeriodUnit.hours.1=tunti
linkExpirationFormatter.timePeriodUnit.days=päivää
linkExpirationFormatter.timePeriodUnit.days.1=päivä
emailVerificationBodyCode=Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.</p><p><b>{0}</b></p>

View file

@ -1,46 +0,0 @@
emailVerificationSubject=V\u00e9rification du courriel
emailVerificationBody=Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
emailVerificationBodyHtml=<p>Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
emailUpdateConfirmationSubject=V\u00e9rification du nouveau courriel
emailUpdateConfirmationBody=Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
emailUpdateConfirmationBodyHtml=<p>Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous</p><p><a href="{0}">{0}</a></p><p>Ce lien expirera dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
identityProviderLinkSubject=Lien {0}
identityProviderLinkBody=Quelqu''un souhaite lier votre compte "{1}" au compte "{0}" de l''utilisateur {2} . Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour lier les comptes\n\n{3}\n\nCe lien expire dans {5}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. Si vous liez les comptes, vous pourrez vous connecter \u00e0 {1} via {0}.
identityProviderLinkBodyHtml=<p>Quelqu''un souhaite lier votre compte <b>{1}</b> au compte <b>{0}</b> de l''utilisateur {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour lier les comptes</p><p><a href="{3}">Lien pour confirmer la liaison des comptes</a></p><p>Ce lien expire dans {5}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. Si vous liez les comptes, vous pourrez vous connecter \u00e0 {1} via {0}.</p>
passwordResetSubject=R\u00e9initialiser le mot de passe
passwordResetBody=Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.
passwordResetBodyHtml=<p>Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.</p><p><a href="{0}">Lien pour r\u00e9initialiser votre mot de passe</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.</p>
executeActionsSubject=Mettre \u00e0 jour votre compte
executeActionsBody=Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2} pour r\u00e9aliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {4}.\n\nSi vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.
executeActionsBodyHtml=<p>Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2} pour r\u00e9aliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {4}.</p><p>Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.</p>
eventLoginErrorSubject=Erreur de connexion
eventLoginErrorBody=Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
eventLoginErrorBodyHtml=<p>Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
eventRemoveTotpSubject=Suppression du OTP
eventRemoveTotpBody=Le OTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
eventRemoveTotpBodyHtml=<p>Le OTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
eventUpdatePasswordSubject=Mise \u00e0 jour du mot de passe
eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
eventUpdatePasswordBodyHtml=<p>Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
eventUpdateTotpSubject=Mise \u00e0 jour du OTP
eventUpdateTotpBody=Le OTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.
eventUpdateTotpBodyHtml=<p>Le OTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.</p>
requiredAction.CONFIGURE_TOTP=Configurer un OTP
requiredAction.terms_and_conditions=Conditions g\u00e9n\u00e9rale d''utilisation
requiredAction.UPDATE_PASSWORD=Mise \u00e0 jour du mot de passe
requiredAction.UPDATE_PROFILE=Mise \u00e0 jour du profile
requiredAction.VERIFY_EMAIL=V\u00e9rification de l''adresse courriel
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=secondes
linkExpirationFormatter.timePeriodUnit.seconds.1=seconde
linkExpirationFormatter.timePeriodUnit.minutes=minutes
linkExpirationFormatter.timePeriodUnit.minutes.1=minute
linkExpirationFormatter.timePeriodUnit.hours=heures
linkExpirationFormatter.timePeriodUnit.hours.1=heure
linkExpirationFormatter.timePeriodUnit.days=jours
linkExpirationFormatter.timePeriodUnit.days.1=jour
emailVerificationBodyCode=Veuillez v\u00e9rifier votre adresse de courriel en saisissant le code suivant.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Veuillez v\u00e9rifier votre adresse de courriel en saisissant le code suivant.</p><p><b>{0}</b></p>

View file

@ -1,47 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Email cím megerősítése
emailVerificationBody=Ezzel az email címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az email címet.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön hozta létre a felhasználói fiókot, akkor kérem hagyja figyelmen kívül ezt az üzenetet.
emailVerificationBodyHtml=<p>Ezzel az email címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az email címet.</p><p><a href="{0}">Hivatkozás a fiók és az email cím megerősítéséhez</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön hozta létre a felhasználói fiókot, akkor kérem hagyja figyelmen kívül ezt az üzenetet.</p>
emailTestSubject=[KEYCLOAK] - SMTP teszt üzenet
emailTestBody=Ez egy KEYCLOAK teszt üzenet.
emailTestBodyHtml=<p>Ez egy KEYCLOAK teszt üzenet.</p>
identityProviderLinkSubject={0} összekötés
identityProviderLinkBody=Valaki össze kívánja kötni az Ön "{1}" tartományi fiókját a(z) "{0}" személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem kattintson a lenti hivatkozásra, hogy összekösse fiókjait.\n\n{3}\n\nA hivatkozás érvényét veszti {5} múlva.\n\nHa nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem hagyja figyelmen kívül ezt az üzenetet.\n\nHa összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.
identityProviderLinkBodyHtml=<p>Valaki össze kívánja kötni az Ön <b>{1}</b> tartomány fiókját a(z) <b>{0}</b> személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem kattintson a lenti hivatkozásra, hogy összekösse fiókjait.</p><p><a href="{3}">Hivatkozás a fiók összekötés megerősítéshez</a></p><p>A hivatkozás érvényét veszti {5} múlva.</p><p>Ha nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem hagyja figyelmen kívül ezt az üzenetet.</p><p>Ha összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.</p>
passwordResetSubject=Jelszó visszaállítás
passwordResetBody=Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem kattintson a lenti hivatkozásra a jelszava megváltoztatásához.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön kérte a jelszó visszaállítást, akkor kérem hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.
passwordResetBodyHtml=<p>Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem kattintson a lenti hivatkozásra a jelszava megváltoztatásához.</p><p><a href="{0}">Hivatkozás a jelszó visszaállításhoz</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön kérte a jelszó visszaállítást, akkor kérem hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.</p>
executeActionsSubject=Felhasználói fiók adatok módosítása
executeActionsBody=Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.\n\n{0}\n\nA hivatkozás érvényét veszti {4} múlva.\n\nHa nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.
executeActionsBodyHtml=<p>Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.</p><p><a href="{0}">Hivatkozás a felhasználói fiók adatok módosításához</a></p><p>A hivatkozás érvényét veszti {4} múlva.</p><p>Ha nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.</p>
eventLoginErrorSubject=Belépési hiba
eventLoginErrorBody=Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön próbált meg belépni.
eventLoginErrorBodyHtml=<p>Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön próbált meg belépni.</p>
eventRemoveTotpSubject=Egyszer használatos jelszó (OTP) eltávolítása
eventRemoveTotpBody=Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP eltávolítását.
eventRemoveTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP eltávolítását.</p>
eventUpdatePasswordSubject=Jelszó csere
eventUpdatePasswordBody=Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte a jelszó cserét.
eventUpdatePasswordBodyHtml=<p>Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte a jelszó cserét.</p>
eventUpdateTotpSubject=Egyszer használatos jelszó (OTP) csere
eventUpdateTotpBody=Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP beállítások módosítását.
eventUpdateTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorral amennyiben nem ön igényelte az OTP beállítások módosítását.</p>
requiredAction.CONFIGURE_TOTP=Egyszer használatos jelszó (OTP) beállítása
requiredAction.terms_and_conditions=Felhasználási feltételek
requiredAction.UPDATE_PASSWORD=Jelszó csere
requiredAction.UPDATE_PROFILE=Fiók adatok módosítása
requiredAction.VERIFY_EMAIL=Email cím megerősítése
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=másodperc
linkExpirationFormatter.timePeriodUnit.seconds.1=másodperc
linkExpirationFormatter.timePeriodUnit.minutes=perc
linkExpirationFormatter.timePeriodUnit.minutes.1=perc
linkExpirationFormatter.timePeriodUnit.hours=óra
linkExpirationFormatter.timePeriodUnit.hours.1=óra
linkExpirationFormatter.timePeriodUnit.days=nap
linkExpirationFormatter.timePeriodUnit.days.1=nap
emailVerificationBodyCode=Kérem erősítse meg az email címét a következő kód megadásával.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Kérem erősítse meg az email címét a következő kód megadásával.</p><p><b>{0}</b></p>

View file

@ -1,50 +0,0 @@
emailVerificationSubject=Verifica l''email
emailVerificationBody=Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadr\u00e0 in {3}.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio.
emailVerificationBodyHtml=<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href="{0}">Link per verificare l''indirizzo email</a></p><p>Questo link scadr\u00e0 in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>
emailTestSubject=[KEYCLOAK] - messaggio di test SMTP
emailTestBody=Questo \u00e8 un messaggio di test
emailTestBodyHtml=<p>Questo \u00e8 un messaggio di test</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Qualcuno vuole associare il tuo account "{1}" con l''account "{0}" dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\n\n{3}\n\nQuesto link scadr\u00e0 in {5}.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.
identityProviderLinkBodyHtml=<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l''account <b>{0}</b> dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href="{3}">{3}</a></p><p>Questo link scadr\u00e0 in {5}.</p><p>Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>
passwordResetSubject=Reimposta la password
passwordResetBody=Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {3}.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.
passwordResetBodyHtml=<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href="{0}">{0}</a></p><p>Questo link scadr\u00e0 in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.</p>
executeActionsSubject=Aggiorna il tuo account
executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadr\u00e0 in {4}.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.
executeActionsBodyHtml=<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href="{0}">Link to account update</a></p><p>Questo link scadr\u00e0 in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.</p>
eventLoginErrorSubject=Errore di accesso
eventLoginErrorBody=\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
eventLoginErrorBodyHtml=<p>\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
eventRemoveTotpSubject=Rimozione OTP (password temporanea valida una volta sola)
eventRemoveTotpBody=La OTP (password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
eventRemoveTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
eventUpdatePasswordSubject=Aggiornamento password
eventUpdatePasswordBody=La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
eventUpdatePasswordBodyHtml=<p>La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
eventUpdateTotpSubject=Aggiornamento OTP (password temporanea valida una volta sola)
eventUpdateTotpBody=La OTP (password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
eventUpdateTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
requiredAction.CONFIGURE_TOTP=Configurazione OTP
requiredAction.terms_and_conditions=Termini e condizioni
requiredAction.UPDATE_PASSWORD=Aggiornamento password
requiredAction.UPDATE_PROFILE=Aggiornamento profilo
requiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=secondi
linkExpirationFormatter.timePeriodUnit.seconds.1=secondo
linkExpirationFormatter.timePeriodUnit.minutes=minuti
linkExpirationFormatter.timePeriodUnit.minutes.1=minuto
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=ore
linkExpirationFormatter.timePeriodUnit.hours.1=ora
linkExpirationFormatter.timePeriodUnit.days=giorni
linkExpirationFormatter.timePeriodUnit.days.1=giorno
emailVerificationBodyCode=Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>

View file

@ -1,52 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Eメールの確認
emailVerificationBody=このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。
emailVerificationBodyHtml=<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href="{0}">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>
emailTestSubject=[KEYCLOAK] - SMTPテストメッセージ
emailTestBody=これはテストメッセージです
emailTestBodyHtml=<p>これはテストメッセージです</p>
identityProviderLinkSubject=リンク {0}
identityProviderLinkBody=あなたの"{1}"アカウントと{2}ユーザーの"{0}"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは{5}だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。
identityProviderLinkBodyHtml=<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href="{3}">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>
passwordResetSubject=パスワードのリセット
passwordResetBody=あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。
passwordResetBodyHtml=<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href="{0}">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>
executeActionsSubject=アカウントの更新
executeActionsBody=次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは{4}だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。
executeActionsBodyHtml=<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href="{0}">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>
eventLoginErrorSubject=ログインエラー
eventLoginErrorBody={0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。
eventLoginErrorBodyHtml=<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>
eventRemoveTotpSubject=OTPの削除
eventRemoveTotpBody={0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。
eventRemoveTotpBodyHtml=<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>
eventUpdatePasswordSubject=パスワードの更新
eventUpdatePasswordBody={0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。
eventUpdatePasswordBodyHtml=<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>
eventUpdateTotpSubject=OTPの更新
eventUpdateTotpBody={0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。
eventUpdateTotpBodyHtml=<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>
requiredAction.CONFIGURE_TOTP=OTPの設定
requiredAction.terms_and_conditions=利用規約
requiredAction.UPDATE_PASSWORD=パスワードの更新
requiredAction.UPDATE_PROFILE=プロファイルの更新
requiredAction.VERIFY_EMAIL=Eメールの確認
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=
linkExpirationFormatter.timePeriodUnit.seconds.1=
linkExpirationFormatter.timePeriodUnit.minutes=
linkExpirationFormatter.timePeriodUnit.minutes.1=
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=時間
linkExpirationFormatter.timePeriodUnit.hours.1=時間
linkExpirationFormatter.timePeriodUnit.days=
linkExpirationFormatter.timePeriodUnit.days.1=
emailVerificationBodyCode=次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>

View file

@ -1,25 +0,0 @@
# encoding: utf-8
emailVerificationSubject=El. pašto patvirtinimas
emailVerificationBody=Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.
emailVerificationBodyHtml=<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>
identityProviderLinkSubject=Sąsaja {0}
identityProviderLinkBody=Kažas pageidauja susieti Jūsų "{1}" paskyrą su "{0}" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\n\n{3}\n\nŠi nuoroda galioja {4} min.\n\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.
identityProviderLinkBodyHtml=<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT"{3}">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>
passwordResetSubject=Slaptažodžio atkūrimas
passwordResetBody=Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\n\n{0}\n\nŠi nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
passwordResetBodyHtml=<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
executeActionsSubject=Atnaujinkite savo paskyrą
executeActionsBody=Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
executeActionsBodyHtml=<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
eventLoginErrorSubject=Nesėkmingas bandymas prisijungti prie jūsų paskyros
eventLoginErrorBody=Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi
eventLoginErrorBodyHtml=<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>
eventRemoveTotpSubject=OTP pašalinimas
eventRemoveTotpBody=Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
eventRemoveTotpBodyHtml=<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>
eventUpdatePasswordSubject=Slaptažodžio atnaujinimas
eventUpdatePasswordBody={1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi
eventUpdatePasswordBodyHtml=<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>
eventUpdateTotpSubject=OTP atnaujinimas
eventUpdateTotpBody=OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
eventUpdateTotpBodyHtml=<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>

View file

@ -1,38 +0,0 @@
emailVerificationSubject=Bevestig e-mailadres
emailVerificationBody=Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \n\n{0}\n\nDeze koppeling zal binnen {3} vervallen.\n\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.
emailVerificationBodyHtml=<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href="{0}">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>
emailTestSubject=[KEYCLOAK] - SMTP testbericht
emailTestBody=Dit is een testbericht
emailTestBodyHtml=<p>Dit is een testbericht</p>
identityProviderLinkSubject=Koppel {0}
identityProviderLinkBody=Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\n\n{3}\n\nDeze link zal over {5} vervallen.\n\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.
identityProviderLinkBodyHtml=<p>Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href="{3}">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>
passwordResetSubject=Wijzig wachtwoord
passwordResetBody=Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\n\n{0}\n\nDe link en de code zullen binnen {3} vervallen.\n\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.
passwordResetBodyHtml=<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href="{0}">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>
executeActionsSubject=Wijzig uw account
executeActionsBody=Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \n\n{0}\n\nDeze link zal over {4} vervallen. \n\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.
executeActionsBodyHtml=<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href="{0}">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>
eventLoginErrorSubject=Inlogfout
eventLoginErrorBody=Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.
eventLoginErrorBodyHtml=<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>
eventRemoveTotpSubject=OTP verwijderd
eventRemoveTotpBody=OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.
eventRemoveTotpBodyHtml=<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
eventUpdatePasswordSubject=Wachtwoord gewijzigd
eventUpdatePasswordBody=Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
eventUpdatePasswordBodyHtml=<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
eventUpdateTotpSubject=OTP gewijzigd
eventUpdateTotpBody=OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
eventUpdateTotpBodyHtml=<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=seconden
linkExpirationFormatter.timePeriodUnit.seconds.1=seconde
linkExpirationFormatter.timePeriodUnit.minutes=minuten
linkExpirationFormatter.timePeriodUnit.minutes.1=minuut
linkExpirationFormatter.timePeriodUnit.hours=uur
linkExpirationFormatter.timePeriodUnit.hours.1=uur
linkExpirationFormatter.timePeriodUnit.days=dagen
linkExpirationFormatter.timePeriodUnit.days.1=dag

View file

@ -1,24 +0,0 @@
emailVerificationSubject=Bekreft e-postadresse
emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.
emailVerificationBodyHtml=<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>
identityProviderLinkSubject=Lenke {0}
identityProviderLinkBody=Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.
identityProviderLinkBodyHtml=<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.</p><p><a href="{3}">{3}</a></p><p>Denne lenken vil utl\u00F8pe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>
passwordResetSubject=Tilbakestill passord
passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.
passwordResetBodyHtml=<p>Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>
executeActionsSubject=Oppdater kontoen din
executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.
executeActionsBodyHtml=<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utl\u00F8pe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>
eventLoginErrorSubject=Innlogging feilet
eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
eventLoginErrorBodyHtml=<p>Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
eventRemoveTotpSubject=Fjern engangskode
eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
eventRemoveTotpBodyHtml=<p>Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
eventUpdatePasswordSubject=Oppdater passord
eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
eventUpdatePasswordBodyHtml=<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
eventUpdateTotpSubject=Oppdater engangskode
eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
eventUpdateTotpBodyHtml=<p>Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>

View file

@ -1,56 +0,0 @@
# encoding: UTF-8
emailVerificationSubject=Zweryfikuj email
emailVerificationBody=Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij poniższy link, aby zweryfikować swój adres e-mail \n\n{0}\n\nLink ten wygaśnie w ciągu {3}.\n\nJeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.
emailVerificationBodyHtml=<p>Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij <a href="{0}">ten link</a> aby zweryfikować swój adres e-mail</p><p>Link ten wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.</p>
emailTestSubject=[KEYCLOAK] - wiadomość testowa SMTP
emailTestBody=To jest wiadomość testowa
emailTestBodyHtml=<p>To jest wiadomość testowa</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Ktoś chce połączyć Twoje konto "{1}" z kontem "{0}" użytkownika {2}. Jeśli to Ty, kliknij poniższy link by połączyć konta\n\n{3}\n\nTen link wygaśnie w ciągu {5}.\n\nJeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.
identityProviderLinkBodyHtml=<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij <a href="{3}">ten link</a> by połączyć konta.</p><p>Ten link wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.</p>
passwordResetSubject=Zresetuj hasło
passwordResetBody=Ktoś właśnie poprosił o zmianę danych logowania Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.\n\n{0}\n\nTen link i kod stracą ważność w ciągu {3}.\n\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.
passwordResetBodyHtml=<p>Ktoś właśnie poprosił o zmianę poświadczeń Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.</p><p><a href="{0}">Link do resetowania poświadczeń</a></p><p>Ten link wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
executeActionsSubject=Zaktualizuj swoje konto
executeActionsBody=Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy link, aby rozpocząć ten proces.\n\n{0}\n\nTen link wygaśnie w ciągu {4}.\n\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.
executeActionsBodyHtml=<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij <a href="{0}">ten link</a>, aby rozpocząć proces.</p><p>Link ten wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
eventLoginErrorSubject=Błąd logowania
eventLoginErrorBody=Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
eventLoginErrorBodyHtml=<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
eventRemoveTotpSubject=Usuń hasło jednorazowe (OTP)
eventRemoveTotpBody=Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
eventRemoveTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
eventUpdatePasswordSubject=Aktualizuj hasło
eventUpdatePasswordBody=Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
eventUpdatePasswordBodyHtml=<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
eventUpdateTotpSubject=Aktualizuj hasło jednorazowe (OTP)
eventUpdateTotpBody=Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
eventUpdateTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
requiredAction.CONFIGURE_TOTP=Konfiguracja hasła jednorazowego (OTP)
requiredAction.terms_and_conditions=Regulamin
requiredAction.UPDATE_PASSWORD=Aktualizacja hasła
requiredAction.UPDATE_PROFILE=Aktualizacja profilu
requiredAction.VERIFY_EMAIL=Weryfikacja adresu e-mail
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=sekund
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
linkExpirationFormatter.timePeriodUnit.seconds.2=sekundy
linkExpirationFormatter.timePeriodUnit.seconds.3=sekundy
linkExpirationFormatter.timePeriodUnit.seconds.4=sekundy
linkExpirationFormatter.timePeriodUnit.minutes=minut
linkExpirationFormatter.timePeriodUnit.minutes.1=minuta
linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=godzin
linkExpirationFormatter.timePeriodUnit.hours.1=godzina
linkExpirationFormatter.timePeriodUnit.hours.2=godziny
linkExpirationFormatter.timePeriodUnit.hours.3=godziny
linkExpirationFormatter.timePeriodUnit.hours.4=godziny
linkExpirationFormatter.timePeriodUnit.days=dni
linkExpirationFormatter.timePeriodUnit.days.1=dzień
emailVerificationBodyCode=Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>

View file

@ -1,51 +0,0 @@
emailVerificationSubject=Verifica\u00E7\u00E3o de endere\u00e7o de e-mail
emailVerificationBody=Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email.\n\n{0}\n\nEste link ir\u00E1 expirar dentro de {3}.\n\nSe n\u00E3o foi voc\u00EA quem criou esta conta, basta ignorar esta mensagem.
emailVerificationBodyHtml=<p>Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email.</p><p><a href="{0}">Link para verifica\u00e7\u00e3o de endere\u00e7o de e-mail</a></p><p>Este link ir\u00E1 expirar dentro de {3}.</p><p>Se n\u00E3o foi voc\u00EA quem criou esta conta, basta ignorar esta mensagem.</p>
emailTestSubject=[KEYCLOAK] - Mensagem de teste SMTP
emailTestBody=Esta \u00E9 uma mensagem de teste
emailTestBodyHtml=<p>Esta \u00E9 uma mensagem de teste</p>
identityProviderLinkSubject=Vincular {0}
identityProviderLinkBody=Algu\u00E9m quer vincular a sua conta "{1}" com a conta "{0}" do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link ir\u00E1 expirar em {5}.\n\nSe voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} fazendo login em {0}.
identityProviderLinkBodyHtml=<p>Algu\u00E9m quer vincular a sua conta <b>{1}</b> com a conta <b>{0}</b> do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.</p><p><a href="{3}">Link para confirmar vincula\u00e7\u00e3o de contas</a></p><p>Este link ir\u00E1 expirar em {5}.</p><p>Se voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} fazendo login em {0}.</p>
passwordResetSubject=Redefini\u00E7\u00E3o de senha
passwordResetBody=Algu\u00E9m solicitou uma altera\u00E7\u00E3o de senha da sua conta {2}. Se foi voc\u00EA, clique no link abaixo para redefini-la.\n\n{0}\n\nEste link e c\u00F3digo expiram em {3}.\n\nSe voc\u00EA n\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\u00E1 alterado.
passwordResetBodyHtml=<p>Algu\u00E9m solicitou uma altera\u00E7\u00E3o de senha da sua conta {2}. Se foi voc\u00EA, clique no link abaixo para redefini-la.</p><p><a href="{0}">Link para redefinir a senha</a></p><p>Este link ir\u00E1 expirar em {3}.</p><p>Se voc\u00EA n\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\u00E1 alterado.</p>
executeActionsSubject=Atualiza\u00E7\u00E3o de conta
executeActionsBody=Um administrador solicitou que voc\u00EA atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.\n\n{0}\n\nEste link ir\u00E1 expirar em {4}.\n\nSe voc\u00EA n\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\u00E1 alterado.
executeActionsBodyHtml=<p>Um administrador solicitou que voc\u00EA atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href="{0}">Link para atualizar a conta</a></p><p>Este link ir\u00E1 expirar em {4}.</p><p>Se voc\u00EA n\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\u00E1 alterado.</p>
eventLoginErrorSubject=Erro de login
eventLoginErrorBody=Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
eventLoginErrorBodyHtml=<p>Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
eventRemoveTotpSubject=Remover autentica\u00e7\u00e3o de dois fatores
eventRemoveTotpBody=A autentica\u00e7\u00e3o de dois fatores foi removida da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
eventRemoveTotpBodyHtml=<p>A autentica\u00e7\u00e3o de dois fatores foi removida da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
eventUpdatePasswordSubject=Atualiza\u00E7\u00E3o de senha
eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
eventUpdatePasswordBodyHtml=<p>Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
eventUpdateTotpSubject=Atualiza\u00E7\u00E3o de autentica\u00e7\u00e3o de dois fatores
eventUpdateTotpBody=A autentica\u00e7\u00e3o de dois fatores foi atualizada para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.
eventUpdateTotpBodyHtml=<p>A autentica\u00e7\u00e3o de dois fatores foi atualizada para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.</p>
requiredAction.CONFIGURE_TOTP=Configurar Autentica\u00e7\u00e3o de Dois Fatores
requiredAction.terms_and_conditions=Termos e Condi\u00E7\u00F5es
requiredAction.UPDATE_PASSWORD=Atualizar Senha
requiredAction.UPDATE_PROFILE=Atualizar Perfil
requiredAction.VERIFY_EMAIL=Verificar Endere\u00e7o de E-mail
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=segundos
linkExpirationFormatter.timePeriodUnit.seconds.1=segundo
linkExpirationFormatter.timePeriodUnit.minutes=minutos
linkExpirationFormatter.timePeriodUnit.minutes.1=minuto
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=horas
linkExpirationFormatter.timePeriodUnit.hours.1=hora
linkExpirationFormatter.timePeriodUnit.days=dias
linkExpirationFormatter.timePeriodUnit.days.1=dia
emailVerificationBodyCode=Verifique o seu endere\u00E7o de e-mail inserindo o seguinte c\u00F3digo.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>Verifique o seu endere\u00E7o de e-mail inserindo o seguinte c\u00F3digo.</p><p><b>{0}</b></p>

View file

@ -1,25 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Подтверждение E-mail
emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.
emailVerificationBodyHtml=<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>
identityProviderLinkSubject=Ссылка {0}
identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.
identityProviderLinkBodyHtml=<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href="{3}">{3}</a></p><p>Эта ссылка устареет через {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.</p>
passwordResetSubject=Сброс пароля
passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.
passwordResetBodyHtml=<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>
executeActionsSubject=Обновление Вашей учетной записи
executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.
executeActionsBodyHtml=<p>Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>
eventLoginErrorSubject=Ошибка входа
eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
eventLoginErrorBodyHtml=<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
eventRemoveTotpSubject=Удалить OTP
eventRemoveTotpBody=OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
eventRemoveTotpBodyHtml=<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
eventUpdatePasswordSubject=Обновление пароля
eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
eventUpdatePasswordBodyHtml=<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
eventUpdateTotpSubject=Обновление OTP
eventUpdateTotpBody=OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
eventUpdateTotpBodyHtml=<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>

View file

@ -1,48 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Overenie e-mailu
emailVerificationBody=Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \n\n{0}\n\nTento odkaz uplynie do {1} minút.\n\nAk ste tento účet nevytvorili, ignorujte túto správu.
emailVerificationBodyHtml=<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href="{0}"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>
emailTestSubject=[KEYCLOAK] - Testovacia správa SMTP
emailTestBody=Toto je skúšobná správa
emailTestBodyHtml=<p>Toto je skúšobná správa</p>
identityProviderLinkSubject=Odkaz {0}
identityProviderLinkBody=Niekto chce prepojiť váš účet "{1}" s účtom {0}"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \n\n{3}\n\nTento odkaz uplynie do {4} minút.\n\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.
identityProviderLinkBodyHtml=<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href="{3}">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>
passwordResetSubject=Obnovenie hesla
passwordResetBody=Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\n\n{0}\n\nTento odkaz a kód uplynie do {1} minút.\n\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.
passwordResetBodyHtml=<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href="{0}">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>
executeActionsSubject=Aktualizujte svoj účet
executeActionsBody=Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\n\n{0}\n\nTento odkaz vyprší za {1} minúty.\n\nAk si nie ste vedomý, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.
executeActionsBodyHtml=<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href="{0}"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu uplynie do {1} minúty.</p><p> Ak si nie ste vedomí, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>
eventLoginErrorSubject=Chyba prihlásenia
eventLoginErrorBody=Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
eventLoginErrorBodyHtml=<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
eventRemoveTotpSubject=Odstrániť TOTP
eventRemoveTotpBody=OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
eventRemoveTotpBodyHtml=<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
eventUpdatePasswordSubject=Aktualizovať heslo
eventUpdatePasswordBody=Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
eventUpdatePasswordBodyHtml=<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
eventUpdateTotpSubject=Aktualizácia TOTP
eventUpdateTotpBody=TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
eventUpdateTotpBodyHtml=<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
requiredAction.CONFIGURE_TOTP=Konfigurácia OTP
requiredAction.terms_and_conditions=Zmluvné podmienky
requiredAction.UPDATE_PASSWORD=Aktualizovať heslo
requiredAction.UPDATE_PROFILE=Aktualizovať profil
requiredAction.VERIFY_EMAIL=Overiť e-mail
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=sekundy
linkExpirationFormatter.timePeriodUnit.seconds.1=sekunda
linkExpirationFormatter.timePeriodUnit.minutes=minuty
linkExpirationFormatter.timePeriodUnit.minutes.1=minúta
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minutu
linkExpirationFormatter.timePeriodUnit.hours=hodiny
linkExpirationFormatter.timePeriodUnit.hours.1=hodina
linkExpirationFormatter.timePeriodUnit.days=dni
linkExpirationFormatter.timePeriodUnit.days.1=deň

View file

@ -1,25 +0,0 @@
# encoding: utf-8
emailVerificationSubject=Verifiera e-post
emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.
emailVerificationBodyHtml=<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>
identityProviderLinkSubject=Länk {0}
identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.
identityProviderLinkBodyHtml=<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href="{3}">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>
passwordResetSubject=Återställ lösenord
passwordResetBody=Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.
passwordResetBodyHtml=<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href="{0}">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
executeActionsSubject=Uppdatera ditt konto
executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.
executeActionsBodyHtml=<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
eventLoginErrorSubject=Inloggningsfel
eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
eventLoginErrorBodyHtml=<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
eventRemoveTotpSubject=Ta bort OTP
eventRemoveTotpBody=OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
eventRemoveTotpBodyHtml=<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
eventUpdatePasswordSubject=Uppdatera lösenord
eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
eventUpdatePasswordBodyHtml=<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
eventUpdateTotpSubject=Uppdatera OTP
eventUpdateTotpBody=OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
eventUpdateTotpBodyHtml=<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>

View file

@ -1,51 +0,0 @@
emailVerificationSubject=E-postay\u0131 do\u011Frula
emailVerificationBody=Birisi bu e-posta adresiyle bir {2} hesap olu\u015Fturdu. Bu sizseniz, e-posta adresinizi do\u011Frulamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131ya t\u0131klay\u0131n\n\n{0}\n\nBu ba\u011Flant\u0131 {3} i\u00E7inde sona erecek.\n\nBu hesab\u0131 olu\u015Fturmad\u0131ysan\u0131z, sadece bu iletiyi yoksay\u0131n\u0131z.
emailVerificationBodyHtml=<p>Birisi bu e-posta adresiyle bir {2} hesap olu\u015Fturdu. Bu sizseniz, e-posta adresinizi do\u011Frulamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n.</p><p><a href="{0}">E-posta adresi do\u011Frulama adresi</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {3} i\u00E7erisinde sona erecek.</p><p>Bu hesab\u0131 siz olu\u015Fturmad\u0131ysan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin.</p>
emailTestSubject=[KEYCLOAK] - SMTP test mesaj\u0131
emailTestBody=Bu bir test mesaj\u0131
emailTestBodyHtml=<p>Bu bir test mesaj\u0131</p>
identityProviderLinkSubject=Link {0}
identityProviderLinkBody=Birisi "{1}" hesab\u0131n\u0131z\u0131 "{0}" kullan\u0131c\u0131 hesab\u0131 {2} ile ba\u011Flamak istiyor. Bu sizseniz, hesaplar\u0131 ba\u011Flamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n:\n\n{3}\n\nBu ba\u011Flant\u0131 {5} i\u00E7inde sona erecek.\n\nHesab\u0131n\u0131z\u0131 ba\u011Flamak istemiyorsan\u0131z bu mesaj\u0131 g\u00F6z ard\u0131 edin. Hesaplar\u0131 ba\u011Flarsan\u0131z, {1} ile {0} aras\u0131nda oturum a\u00E7abilirsiniz.
identityProviderLinkBodyHtml=<p>Birisi <b> {1} </ b> hesab\u0131n\u0131z\u0131 {2} kullan\u0131c\u0131s\u0131 <b> {0} </ b> hesab\u0131na ba\u011Flamak istiyor. Bu sizseniz, ba\u011Flant\u0131 vermek i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n</p><p><a href="{3}">Hesap ba\u011Flant\u0131s\u0131n\u0131 onaylamak i\u00E7in ba\u011Flant\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {5} i\u00E7erisinde sona erecek.</p><p>Hesab\u0131 ba\u011Flamak istemiyorsan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin. Hesaplar\u0131 ba\u011Flarsan\u0131z, {1} ile {0} aras\u0131nda oturum a\u00E7abilirsiniz.</p>
passwordResetSubject=\u015Eifreyi s\u0131f\u0131rla
passwordResetBody=Birisi, {2} hesab\u0131n\u0131z\u0131n kimlik bilgilerini de\u011Fi\u015Ftirmeyi istedi.Bu sizseniz, s\u0131f\u0131rlamak i\u00E7in a\u015Fa\u011F\u0131daki ba\u011Flant\u0131y\u0131 t\u0131klay\u0131n.\n\n{0}\n\nBu ba\u011Flant\u0131 ve kod {3} i\u00E7inde sona erecek.\n\nFakat bilgilerinizi s\u0131f\u0131rlamak istemiyorsan\u0131z, Sadece bu mesaj\u0131 g\u00F6rmezden gelin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmeyecek.
passwordResetBodyHtml=<p>Birisi, {2} hesab\u0131n\u0131z\u0131n kimlik bilgilerini de\u011Fi\u015Ftirmeyi istedi. Sizseniz, s\u0131f\u0131rlamak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n\u0131z.</p><p><a href="{0}">Kimlik bilgilerini s\u0131f\u0131rlamak i\u00E7in ba\u011Flant\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {3} i\u00E7erisinde sona erecek.</p><p>Kimlik bilgilerinizi s\u0131f\u0131rlamak istemiyorsan\u0131z, bu mesaj\u0131 g\u00F6z ard\u0131 edin.</p>
executeActionsSubject=Hesab\u0131n\u0131z\u0131 G\u00FCncelleyin
executeActionsBody=Y\u00F6neticiniz a\u015Fa\u011F\u0131daki i\u015Flemleri ger\u00E7ekle\u015Ftirerek {2} hesab\u0131n\u0131z\u0131 g\u00FCncelledi: {3}. Bu i\u015Flemi ba\u015Flatmak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n.\n\n{0}\n\nBu ba\u011Flant\u0131n\u0131n s\u00FCresi {4} i\u00E7erisinde sona erecek.\n\nY\u00F6neticinizin bunu istedi\u011Finden habersizseniz, bu mesaj\u0131 g\u00F6z ard\u0131 edin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmez.
executeActionsBodyHtml=<p>Y\u00F6neticiniz a\u015Fa\u011F\u0131daki i\u015Flemleri ger\u00E7ekle\u015Ftirerek {2} hesab\u0131n\u0131z\u0131 g\u00FCncelledi: {3}. Bu i\u015Flemi ba\u015Flatmak i\u00E7in a\u015Fa\u011F\u0131daki linke t\u0131klay\u0131n.</p><p><a href="{0}">Hesap g\u00FCncelleme ba\u011Flant\u0131s\u0131</a></p><p>Bu ba\u011Flant\u0131n\u0131n s\u00FCresi {4} i\u00E7erisinde sona erecek.</p><p>Y\u00F6neticinizin bunu istedi\u011Finden habersizseniz, bu mesaj\u0131 g\u00F6z ard\u0131 edin ve hi\u00E7bir \u015Fey de\u011Fi\u015Fmez.</p>
eventLoginErrorSubject=Giri\u015F hatas\u0131
eventLoginErrorBody={1} ''den {0} tarihinde ba\u015Far\u0131s\u0131z bir giri\u015F denemesi yap\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
eventLoginErrorBodyHtml=<p>{1} ''den {0} tarihinde ba\u015Far\u0131s\u0131z bir giri\u015F denemesi yap\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
eventRemoveTotpSubject=OTP''yi kald\u0131r
eventRemoveTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131zdan kald\u0131r\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
eventRemoveTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131zdan kald\u0131r\u0131ld\u0131. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
eventUpdatePasswordSubject=\u015Eifreyi g\u00FCncelle
eventUpdatePasswordBody=\u015Eifreniz {0} tarihinde {0} tarihinde de\u011Fi\u015Ftirildi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
eventUpdatePasswordBodyHtml=<p>\u015Eifreniz {0} tarihinde {0} tarihinde de\u011Fi\u015Ftirildi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
eventUpdateTotpSubject=OTP''yi G\u00FCncelle
eventUpdateTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131z i\u00E7in g\u00FCncellendi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
eventUpdateTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\u0131n\u0131z i\u00E7in g\u00FCncellendi. Bu siz de\u011Filseniz, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.</p>
requiredAction.CONFIGURE_TOTP=OTP''yi yap\u0131land\u0131r
requiredAction.terms_and_conditions=\u015Eartlar ve Ko\u015Fullar
requiredAction.UPDATE_PASSWORD=\u015Eifre G\u00FCncelleme
requiredAction.UPDATE_PROFILE=Profilleri g\u00FCncelle
requiredAction.VERIFY_EMAIL=E-mail do\u011Frula
# units for link expiration timeout formatting
linkExpirationFormatter.timePeriodUnit.seconds=saniye
linkExpirationFormatter.timePeriodUnit.seconds.1=saniye
linkExpirationFormatter.timePeriodUnit.minutes=dakika
linkExpirationFormatter.timePeriodUnit.minutes.1=dakika
#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:
#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty
#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty
linkExpirationFormatter.timePeriodUnit.hours=saat
linkExpirationFormatter.timePeriodUnit.hours.1=saat
linkExpirationFormatter.timePeriodUnit.days=g\u00FCn
linkExpirationFormatter.timePeriodUnit.days.1=g\u00FCn
emailVerificationBodyCode=L\u00FCtfen a\u015Fa\u011F\u0131daki kodu girerek e-posta adresinizi do\u011Frulay\u0131n.\n\n{0}\n\n.
emailVerificationBodyCodeHtml=<p>L\u00FCtfen a\u015Fa\u011F\u0131daki kodu girerek e-posta adresinizi do\u011Frulay\u0131n.</p><p><b>{0}</b></p>

View file

@ -1,25 +0,0 @@
# encoding: utf-8
emailVerificationSubject=验证电子邮件
emailVerificationBody=用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您没有注册用户请忽略这条消息。
emailVerificationBodyHtml=<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户,请忽略这条消息。</p>
identityProviderLinkSubject=链接 {0}
identityProviderLinkBody=有用户想要将账户 "{1}" 与用户{2}的账户"{0}" 做链接 . 如果是本人操作,请点击以下链接完成链接请求\n\n{3}\n\n这个链接会在 {4} 分钟后过期.\n\n如非本人操作请忽略这条消息。如果您链接账户您将可以通过{0}登录账户 {1}.
identityProviderLinkBodyHtml=<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b> 做链接 . 如果是本人操作,请点击以下链接完成链接请求</p><p><a href="{3}">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.</p>
passwordResetSubject=重置密码
passwordResetBody=有用户要求修改账户 {2} 的密码.如是本人操作,请点击下面链接进行重置.\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您不想重置您的密码请忽略这条消息密码不会改变。
passwordResetBodyHtml=<p>有用户要求修改账户 {2} 的密码如是本人操作,请点击下面链接进行重置.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码,请忽略这条消息,密码不会改变。</p>
executeActionsSubject=更新您的账户
executeActionsBody=您的管理员要求您更新账户 {2}. 点击以下链接开始更新\n\n{0}\n\n这个链接会在 {1} 分钟后失效.\n\n如果您不知道管理员要求更新账户信息请忽略这条消息。账户信息不会修改。
executeActionsBodyHtml=<p>您的管理员要求您更新账户{2}. 点击以下链接开始更新.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。</p>
eventLoginErrorSubject=登录错误
eventLoginErrorBody=在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.
eventLoginErrorBodyHtml=<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.</p>
eventRemoveTotpSubject=删除 OTP
eventRemoveTotpBody=OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员
eventRemoveTotpBodyHtml=<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员。</p>
eventUpdatePasswordSubject=更新密码
eventUpdatePasswordBody=您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员
eventUpdatePasswordBodyHtml=<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>
eventUpdateTotpSubject=更新 OTP
eventUpdateTotpBody=您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。
eventUpdateTotpBodyHtml=<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("emailTestBody", realmName)}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("emailUpdateConfirmationBody",link, newEmail, realmName, linkExpirationFormatter(linkExpiration))}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("emailVerificationBodyCode",code)}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("emailVerificationBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("eventLoginErrorBody",event.date,event.ipAddress)}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("eventRemoveTotpBody",event.date, event.ipAddress)}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("eventUpdatePasswordBody",event.date, event.ipAddress)}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("eventUpdateTotpBody",event.date, event.ipAddress)}

View file

@ -1,4 +0,0 @@
<#ftl output_format="plainText">
<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#items></#list><#else></#if></#assign>
${msg("executeActionsBody",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration))}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("identityProviderLinkBody", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration))}

View file

@ -1,2 +0,0 @@
<#ftl output_format="plainText">
${msg("passwordResetBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}

View file

@ -1 +0,0 @@
locales=ca,cs,da,de,en,es,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN

View file

@ -11,12 +11,13 @@
"start": "react-scripts start",
"build": "react-scripts build",
"build-keycloak-theme": "yarn build && keycloakify",
"eject-keycloak-page": "eject-keycloak-page",
"download-builtin-keycloak-theme": "download-builtin-keycloak-theme",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook"
},
"keycloakify": {
"extraPages": [
"extraLoginPages": [
"my-extra-page-1.ftl",
"my-extra-page-2.ftl"
]
@ -28,7 +29,7 @@
"evt": "^2.4.15",
"jwt-decode": "^3.1.2",
"keycloak-js": "^21.0.1",
"keycloakify": "^6.13.1",
"keycloakify": "7.0.0-rc.6",
"powerhooks": "^0.26.2",
"react": "18.1.0",
"react-dom": "18.1.0",
@ -48,8 +49,8 @@
"@types/node": "^15.3.1",
"@types/react": "18.0.9",
"@types/react-dom": "18.0.4",
"react-scripts": "5.0.0",
"typescript": "~4.8.0"
"react-scripts": "5.0.1",
"typescript": "~4.7.0"
},
"eslintConfig": {
"extends": [

View file

@ -2,7 +2,7 @@ import "./App.css";
import logo from "./logo.svg";
import myimg from "./myimg.png";
import { createOidcClientProvider, useOidcClient } from "./oidc";
import { addFooToQueryParams, addBarToQueryParams } from "../keycloak-theme/valuesTransferredOverUrl";
import { addFooToQueryParams, addBarToQueryParams } from "../keycloak-theme/login/valuesTransferredOverUrl";
import jwt_decode from "jwt-decode";
const { OidcClientProvider } = createOidcClientProvider({
@ -29,7 +29,6 @@ export default function App() {
<ContextualizedApp />
</OidcClientProvider>
);
}
function ContextualizedApp() {

View file

@ -23,7 +23,7 @@ export declare namespace OidcClient {
export type LoggedIn = {
isUserLoggedIn: true;
getAccessToken: ()=> string;
getAccessToken: () => string;
logout: (params: { redirectTo: "home" | "current page" }) => Promise<never>;
//If we have sent a API request to change user's email for example
//and we want that jwt_decode(oidcClient.getAccessToken()).email be the new email
@ -36,8 +36,8 @@ type Params = {
url: string;
realm: string;
clientId: string;
transformUrlBeforeRedirect: (url: string) => string;
getUiLocales: () => string;
transformUrlBeforeRedirect?: (url: string) => string;
getUiLocales?: () => string;
log?: typeof console.log;
};
@ -65,14 +65,19 @@ async function createKeycloakOidcClient(params: Params): Promise<OidcClient> {
checkLoginIframe: false,
adapter: createKeycloakAdapter({
transformUrlBeforeRedirect: url =>
[url].map(transformUrlBeforeRedirect).map(
[url]
.map(transformUrlBeforeRedirect ?? (url => url))
.map(
getUiLocales === undefined ?
(url => url) :
url =>
addParamToUrl({
url,
"name": "ui_locales",
"value": getUiLocales()
}).newUrl
)[0],
)
[0],
keycloakInstance,
getRedirectMethod: () => redirectMethod
})
@ -103,11 +108,11 @@ async function createKeycloakOidcClient(params: Params): Promise<OidcClient> {
});
}
let currentAccessToken= keycloakInstance.token!;
let currentAccessToken = keycloakInstance.token!;
const oidcClient = id<OidcClient.LoggedIn>({
"isUserLoggedIn": true,
"getAccessToken": ()=> currentAccessToken,
"getAccessToken": () => currentAccessToken,
"logout": async ({ redirectTo }) => {
await keycloakInstance.logout({
"redirectUri": (() => {

View file

@ -1,17 +1,22 @@
import { createRoot } from "react-dom/client";
import { StrictMode, lazy, Suspense } from "react";
import { kcContext } from "./keycloak-theme/kcContext";
import { kcContext as kcLoginThemeContext } from "./keycloak-theme/login/kcContext";
const App = lazy(() => import("./App"));
const KcApp = lazy(() => import("./keycloak-theme/KcApp"));
const KcLoginThemeApp = lazy(() => import("./keycloak-theme/login/KcApp"));
createRoot(document.getElementById("root")!).render(
<StrictMode>
<Suspense>
{kcContext === undefined ?
<App /> :
<KcApp kcContext={kcContext} />
{(()=>{
if( kcLoginThemeContext !== undefined ){
return <KcLoginThemeApp kcContext={kcLoginThemeContext} />;
}
return <App />;
})()}
</Suspense>
</StrictMode>
);

View file

@ -1,11 +1,11 @@
import "./KcApp.css";
import { lazy, Suspense } from "react";
import Fallback, { type PageProps } from "keycloakify/login";
import type { KcContext } from "./kcContext";
import { useI18n } from "./i18n";
import Fallback, { type PageProps } from "keycloakify";
const Template = lazy(() => import("./Template"));
const DefaultTemplate = lazy(() => import("keycloakify/Template"));
const DefaultTemplate = lazy(() => import("keycloakify/login/Template"));
// You can uncomment this to see the values passed by the main app before redirecting.
//import { foo, bar } from "./valuesTransferredOverUrl";
@ -18,7 +18,7 @@ const RegisterUserProfile = lazy(() => import("./pages/RegisterUserProfile"));
const Terms = lazy(() => import("./pages/Terms"));
const MyExtraPage1 = lazy(() => import("./pages/MyExtraPage1"));
const MyExtraPage2 = lazy(() => import("./pages/MyExtraPage2"));
const Info = lazy(() => import("keycloakify/pages/Info"));
const Info = lazy(() => import("keycloakify/login/pages/Info"));
// This is like adding classes to theme.properties
// https://github.com/keycloak/keycloak/blob/11.0.3/themes/src/main/resources/theme/keycloak/login/theme.properties
@ -49,15 +49,15 @@ export default function App(props: { kcContext: KcContext; }) {
<Suspense>
{(() => {
switch (kcContext.pageId) {
case "login.ftl": return <Login {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />;
case "register.ftl": return <Register {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />;
case "register-user-profile.ftl": return <RegisterUserProfile {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />
case "terms.ftl": return <Terms {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />;
case "my-extra-page-1.ftl": return <MyExtraPage1 {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />;
case "my-extra-page-2.ftl": return <MyExtraPage2 {...{ kcContext, i18n, Template, classes, "doUseDefaultCss": true }} />;
case "login.ftl": return <Login {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />;
case "register.ftl": return <Register {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />;
case "register-user-profile.ftl": return <RegisterUserProfile {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />
case "terms.ftl": return <Terms {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />;
case "my-extra-page-1.ftl": return <MyExtraPage1 {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />;
case "my-extra-page-2.ftl": return <MyExtraPage2 {...{ kcContext, i18n, Template, classes }} doUseDefaultCss={true} />;
// We choose to use the default Template for the Info page and to download the theme resources.
case "info.ftl": return <Info {...{ kcContext, i18n, "Template": DefaultTemplate, classes, "doUseDefaultCss": true }} />;
default: return <Fallback {...{ kcContext, i18n, "Template": DefaultTemplate, classes, "doUseDefaultCss": true }} />;
case "info.ftl": return <Info {...{ kcContext, i18n, classes }} Template={DefaultTemplate} doUseDefaultCss={true} />;
default: return <Fallback {...{ kcContext, i18n, classes }} Template={DefaultTemplate} doUseDefaultCss={true} />;
}
})()}
</Suspense>

View file

@ -2,7 +2,7 @@
import { assert } from "keycloakify/tools/assert";
import { clsx } from "keycloakify/tools/clsx";
import { usePrepareTemplate } from "keycloakify/lib/usePrepareTemplate";
import { type TemplateProps, defaultTemplateClasses } from "keycloakify/TemplateProps";
import { type TemplateProps, defaultTemplateClasses } from "keycloakify/login/TemplateProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "./kcContext";
import type { I18n } from "./i18n";
@ -16,12 +16,12 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
showAnotherWayIfPresent = true,
headerNode,
showUsernameNode = null,
formNode,
infoNode = null,
kcContext,
i18n,
doUseDefaultCss,
classes
classes,
children
} = props;
const { getClassName } = useGetClassName({
@ -42,7 +42,8 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
"lib/zocial/zocial.css"
],
"styles": ["css/login.css"],
"htmlClassName": getClassName("kcHtmlClass")
"htmlClassName": getClassName("kcHtmlClass"),
"bodyClassName": undefined
});
if (!isReady) {
@ -153,7 +154,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
/>
</div>
)}
{formNode}
{children}
{auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && (
<form
id="kc-select-try-another-way-form"

View file

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -1,4 +1,4 @@
import { createUseI18n } from "keycloakify";
import { createUseI18n } from "keycloakify/login";
export const { useI18n } = createUseI18n({
// NOTE: Here you can override the default i18n messages

View file

@ -1,4 +1,4 @@
import { getKcContext } from "keycloakify";
import { getKcContext } from "keycloakify/login";
export type KcContextExtension =
// NOTE: A 'keycloakify' field must be added

View file

@ -0,0 +1,201 @@
import { useState, type FormEventHandler } from "react";
import { clsx } from "keycloakify/tools/clsx";
import { useConstCallback } from "keycloakify/tools/useConstCallback";
import { type PageProps, defaultClasses } from "keycloakify/login/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Login(props: PageProps<Extract<KcContext, { pageId: "login.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { social, realm, url, usernameEditDisabled, login, auth, registrationDisabled } = kcContext;
const { msg, msgStr } = i18n;
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
const onSubmit = useConstCallback<FormEventHandler<HTMLFormElement>>(e => {
e.preventDefault();
setIsLoginButtonDisabled(true);
const formElement = e.target as HTMLFormElement;
//NOTE: Even if we login with email Keycloak expect username and password in
//the POST request.
formElement.querySelector("input[name='email']")?.setAttribute("name", "username");
formElement.submit();
});
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayInfo={social.displayInfo}
displayWide={realm.password && social.providers !== undefined}
headerNode={msg("doLogIn")}
infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
>
<div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}>
<div
id="kc-form-wrapper"
className={clsx(
realm.password &&
social.providers && [getClassName("kcFormSocialAccountContentClass"), getClassName("kcFormSocialAccountClass")]
)}
>
{realm.password && (
<form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post">
<div className={getClassName("kcFormGroupClass")}>
{(() => {
const label = !realm.loginWithEmailAllowed
? "username"
: realm.registrationEmailAsUsername
? "email"
: "usernameOrEmail";
const autoCompleteHelper: typeof label = label === "usernameOrEmail" ? "username" : label;
return (
<>
<label htmlFor={autoCompleteHelper} className={getClassName("kcLabelClass")}>
{msg(label)}
</label>
<input
tabIndex={1}
id={autoCompleteHelper}
className={getClassName("kcInputClass")}
//NOTE: This is used by Google Chrome auto fill so we use it to tell
//the browser how to pre fill the form but before submit we put it back
//to username because it is what keycloak expects.
name={autoCompleteHelper}
defaultValue={login.username ?? ""}
type="text"
{...(usernameEditDisabled
? { "disabled": true }
: {
"autoFocus": true,
"autoComplete": "off"
})}
/>
</>
);
})()}
</div>
<div className={getClassName("kcFormGroupClass")}>
<label htmlFor="password" className={getClassName("kcLabelClass")}>
{msg("password")}
</label>
<input
tabIndex={2}
id="password"
className={getClassName("kcInputClass")}
name="password"
type="password"
autoComplete="off"
/>
</div>
<div className={clsx(getClassName("kcFormGroupClass"), getClassName("kcFormSettingClass"))}>
<div id="kc-form-options">
{realm.rememberMe && !usernameEditDisabled && (
<div className="checkbox">
<label>
<input
tabIndex={3}
id="rememberMe"
name="rememberMe"
type="checkbox"
{...(login.rememberMe
? {
"checked": true
}
: {})}
/>
{msg("rememberMe")}
</label>
</div>
)}
</div>
<div className={getClassName("kcFormOptionsWrapperClass")}>
{realm.resetPasswordAllowed && (
<span>
<a tabIndex={5} href={url.loginResetCredentialsUrl}>
{msg("doForgotPassword")}
</a>
</span>
)}
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormGroupClass")}>
<input
type="hidden"
id="id-hidden-input"
name="credentialId"
{...(auth?.selectedCredential !== undefined
? {
"value": auth.selectedCredential
}
: {})}
/>
<input
tabIndex={4}
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
name="login"
id="kc-login"
type="submit"
value={msgStr("doLogIn")}
disabled={isLoginButtonDisabled}
/>
</div>
</form>
)}
</div>
{realm.password && social.providers !== undefined && (
<div
id="kc-social-providers"
className={clsx(getClassName("kcFormSocialAccountContentClass"), getClassName("kcFormSocialAccountClass"))}
>
<ul
className={clsx(
getClassName("kcFormSocialAccountListClass"),
social.providers.length > 4 && getClassName("kcFormSocialAccountDoubleListClass")
)}
>
{social.providers.map(p => (
<li key={p.providerId} className={getClassName("kcFormSocialAccountListLinkClass")}>
<a href={p.loginUrl} id={`zocial-${p.alias}`} className={clsx("zocial", p.providerId)}>
<span>{p.displayName}</span>
</a>
</li>
))}
</ul>
</div>
)}
</div>
</Template>
);
}

View file

@ -1,4 +1,4 @@
import type { PageProps } from "keycloakify/pages/PageProps";
import type { PageProps } from "keycloakify/login/pages/PageProps";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
@ -10,13 +10,12 @@ export default function MyExtraPage1(props: PageProps<Extract<KcContext, { pageI
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={<>Header <i>text</i></>}
formNode={
infoNode={<span>footer</span>}
>
<form>
{/*...*/}
</form>
}
infoNode={<span>footer</span>}
/>
</Template>
);
}

View file

@ -1,4 +1,4 @@
import type { PageProps } from "keycloakify/pages/PageProps";
import type { PageProps } from "keycloakify/login/pages/PageProps";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
@ -13,13 +13,13 @@ export default function MyExtraPage1(props: PageProps<Extract<KcContext, { pageI
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={<>Header <i>text</i></>}
formNode={
infoNode={<span>footer</span>}
>
<form>
{/*...*/}
</form>
}
infoNode={<span>footer</span> }
/>
</Template>
);
}

View file

@ -0,0 +1,182 @@
import { clsx } from "keycloakify/tools/clsx";
import { type PageProps, defaultClasses } from "keycloakify/login/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Register(props: PageProps<Extract<KcContext, { pageId: "register.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { url, messagesPerField, register, realm, passwordRequired, recaptchaRequired, recaptchaSiteKey } = kcContext;
const { msg, msgStr } = i18n;
return (
<Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("registerTitle")}>
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("firstName", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="firstName" className={getClassName("kcLabelClass")}>
{msg("firstName")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="firstName"
className={getClassName("kcInputClass")}
name="firstName"
defaultValue={register.formData.firstName ?? ""}
/>
</div>
</div>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("lastName", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="lastName" className={getClassName("kcLabelClass")}>
{msg("lastName")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="lastName"
className={getClassName("kcInputClass")}
name="lastName"
defaultValue={register.formData.lastName ?? ""}
/>
</div>
</div>
<div
className={clsx(getClassName("kcFormGroupClass"), messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass")))}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="email" className={getClassName("kcLabelClass")}>
{msg("email")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="email"
className={getClassName("kcInputClass")}
name="email"
defaultValue={register.formData.email ?? ""}
autoComplete="email"
/>
</div>
</div>
{!realm.registrationEmailAsUsername && (
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("username", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="username" className={getClassName("kcLabelClass")}>
{msg("username")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="username"
className={getClassName("kcInputClass")}
name="username"
defaultValue={register.formData.username ?? ""}
autoComplete="username"
/>
</div>
</div>
)}
{passwordRequired && (
<>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("password", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="password" className={getClassName("kcLabelClass")}>
{msg("password")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="password"
id="password"
className={getClassName("kcInputClass")}
name="password"
autoComplete="new-password"
/>
</div>
</div>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("password-confirm", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="password-confirm" className={getClassName("kcLabelClass")}>
{msg("passwordConfirm")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input type="password" id="password-confirm" className={getClassName("kcInputClass")} name="password-confirm" />
</div>
</div>
</>
)}
{recaptchaRequired && (
<div className="form-group">
<div className={getClassName("kcInputWrapperClass")}>
<div className="g-recaptcha" data-size="compact" data-sitekey={recaptchaSiteKey}></div>
</div>
</div>
)}
<div className={getClassName("kcFormGroupClass")}>
<div id="kc-form-options" className={getClassName("kcFormOptionsClass")}>
<div className={getClassName("kcFormOptionsWrapperClass")}>
<span>
<a href={url.loginUrl}>{msg("backToLogin")}</a>
</span>
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormButtonsClass")}>
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
type="submit"
value={msgStr("doRegister")}
/>
</div>
</div>
</form>
</Template>
);
}

View file

@ -0,0 +1,70 @@
import { useState } from "react";
import { clsx } from "keycloakify/tools/clsx";
import { UserProfileFormFields } from "./shared/UserProfileCommons";
import { type PageProps, defaultClasses } from "keycloakify/login/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function RegisterUserProfile(props: PageProps<Extract<KcContext, { pageId: "register-user-profile.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { url, messagesPerField, recaptchaRequired, recaptchaSiteKey } = kcContext;
const { msg, msgStr } = i18n;
const [isFomSubmittable, setIsFomSubmittable] = useState(false);
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={messagesPerField.exists("global")}
displayRequiredFields={true}
headerNode={msg("registerTitle")}
>
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<UserProfileFormFields
kcContext={kcContext}
onIsFormSubmittableValueChange={setIsFomSubmittable}
i18n={i18n}
getClassName={getClassName}
/>
{recaptchaRequired && (
<div className="form-group">
<div className={getClassName("kcInputWrapperClass")}>
<div className="g-recaptcha" data-size="compact" data-sitekey={recaptchaSiteKey} />
</div>
</div>
)}
<div className={getClassName("kcFormGroupClass")} style={{ "marginBottom": 30 }}>
<div id="kc-form-options" className={getClassName("kcFormOptionsClass")}>
<div className={getClassName("kcFormOptionsWrapperClass")}>
<span>
<a href={url.loginUrl}>{msg("backToLogin")}</a>
</span>
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormButtonsClass")}>
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
type="submit"
value={msgStr("doRegister")}
disabled={!isFomSubmittable}
/>
</div>
</div>
</form>
</Template>
);
}

View file

@ -0,0 +1,56 @@
import { clsx } from "keycloakify/tools/clsx";
import { useRerenderOnStateChange } from "evt/hooks";
import { Markdown } from "keycloakify/tools/Markdown";
import { type PageProps, defaultClasses } from "keycloakify/login/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import { evtTermMarkdown } from "keycloakify/login/lib/useDownloadTerms";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Terms(props: PageProps<Extract<KcContext, { pageId: "terms.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { msg, msgStr } = i18n;
useRerenderOnStateChange(evtTermMarkdown);
const { url } = kcContext;
if (evtTermMarkdown.state === undefined) {
return null;
}
return (
<Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("termsTitle")}>
<div id="kc-terms-text">{evtTermMarkdown.state && <Markdown>{evtTermMarkdown.state}</Markdown>}</div>
<form className="form-actions" action={url.loginAction} method="POST">
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonClass"),
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonLargeClass")
)}
name="accept"
id="kc-accept"
type="submit"
value={msgStr("doAccept")}
/>
<input
className={clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"))}
name="cancel"
id="kc-decline"
type="submit"
value={msgStr("doDecline")}
/>
</form>
<div className="clearfix" />
</Template>
);
}

View file

@ -1,28 +1,22 @@
//NOTE: Copy pasted from: https://github.com/InseeFrLab/keycloakify/blob/main/src/lib/pages/shared/UserProfileCommons.tsx
import { useEffect, Fragment } from "react";
import type { KcProps } from "keycloakify/lib/KcProps";
import { clsx } from "keycloakify/lib/tools/clsx";
import type { I18nBase } from "keycloakify/lib/i18n";
import type { Attribute } from "keycloakify/lib/getKcContext";
import { useFormValidation } from "keycloakify/lib/pages/shared/UserProfileCommons";
import type { ClassKey } from "keycloakify/login/pages/PageProps";
import { clsx } from "keycloakify/tools/clsx";
import { useFormValidation } from "keycloakify/login/lib/useFormValidation";
import type { Attribute } from "keycloakify/login/kcContext/KcContext";
import type { I18n } from "../../i18n";
export type UserProfileFormFieldsProps = {
kcContext: Parameters<typeof useFormValidation>[0]["kcContext"];
i18n: I18nBase;
} & KcProps &
Partial<Record<"BeforeField" | "AfterField", (props: { attribute: Attribute }) => JSX.Element | null>> & {
i18n: I18n;
getClassName: (classKey: ClassKey) => string;
onIsFormSubmittableValueChange: (isFormSubmittable: boolean) => void;
};
BeforeField?: (props: { attribute: Attribute }) => JSX.Element | null;
AfterField?: (props: { attribute: Attribute }) => JSX.Element | null;
};
export function UserProfileFormFields(props: UserProfileFormFieldsProps) {
const { kcContext, onIsFormSubmittableValueChange, i18n, getClassName, BeforeField, AfterField } = props;
export function UserProfileFormFields({
kcContext,
onIsFormSubmittableValueChange,
i18n,
BeforeField,
AfterField,
...props
}: UserProfileFormFieldsProps) {
const { advancedMsg } = i18n;
const {
@ -47,20 +41,23 @@ export function UserProfileFormFields({
const { value, displayableErrors } = fieldStateByAttributeName[attribute.name];
const formGroupClassName = clsx(props.kcFormGroupClass, displayableErrors.length !== 0 && props.kcFormGroupErrorClass);
const formGroupClassName = clsx(
getClassName("kcFormGroupClass"),
displayableErrors.length !== 0 && getClassName("kcFormGroupErrorClass")
);
return (
<Fragment key={i}>
{group !== currentGroup && (currentGroup = group) !== "" && (
<div className={formGroupClassName}>
<div className={clsx(props.kcContentWrapperClass)}>
<label id={`header-${group}`} className={clsx(props.kcFormGroupHeader)}>
<div className={getClassName("kcContentWrapperClass")}>
<label id={`header-${group}`} className={getClassName("kcFormGroupHeader")}>
{advancedMsg(groupDisplayHeader) || currentGroup}
</label>
</div>
{groupDisplayDescription !== "" && (
<div className={clsx(props.kcLabelWrapperClass)}>
<label id={`description-${group}`} className={`${clsx(props.kcLabelClass)}`}>
<div className={getClassName("kcLabelWrapperClass")}>
<label id={`description-${group}`} className={getClassName("kcLabelClass")}>
{advancedMsg(groupDisplayDescription)}
</label>
</div>
@ -71,13 +68,13 @@ export function UserProfileFormFields({
{BeforeField && <BeforeField attribute={attribute} />}
<div className={formGroupClassName}>
<div className={clsx(props.kcLabelWrapperClass)}>
<label htmlFor={attribute.name} className={clsx(props.kcLabelClass)}>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor={attribute.name} className={getClassName("kcLabelClass")}>
{advancedMsg(attribute.displayName ?? "")}
</label>
{attribute.required && <>*</>}
</div>
<div className={clsx(props.kcInputWrapperClass)}>
<div className={getClassName("kcInputWrapperClass")}>
{(() => {
const { options } = attribute.validators;
@ -137,7 +134,7 @@ export function UserProfileFormFields({
"name": attribute.name
})
}
className={clsx(props.kcInputClass)}
className={getClassName("kcInputClass")}
aria-invalid={displayableErrors.length !== 0}
disabled={attribute.readOnly}
autoComplete={attribute.autocomplete}
@ -153,7 +150,7 @@ export function UserProfileFormFields({
<style>{`#${divId} > span: { display: block; }`}</style>
<span
id={divId}
className={clsx(props.kcInputErrorMessageClass)}
className={getClassName("kcInputErrorMessageClass")}
style={{
"position": displayableErrors.length === 1 ? "absolute" : undefined
}}
@ -173,4 +170,3 @@ export function UserProfileFormFields({
</>
);
}

View file

@ -1,204 +0,0 @@
// Copy pasted from: https://github.com/InseeFrLab/keycloakify/blob/main/src/pages/Login.tsx
import { useState, type FormEventHandler } from "react";
import { clsx } from "keycloakify/tools/clsx";
import { useConstCallback } from "keycloakify/tools/useConstCallback";
import { type PageProps, defaultClasses } from "keycloakify/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Login(props: PageProps<Extract<KcContext, { pageId: "login.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { social, realm, url, usernameEditDisabled, login, auth, registrationDisabled } = kcContext;
const { msg, msgStr } = i18n;
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
const onSubmit = useConstCallback<FormEventHandler<HTMLFormElement>>(e => {
e.preventDefault();
setIsLoginButtonDisabled(true);
const formElement = e.target as HTMLFormElement;
//NOTE: Even if we login with email Keycloak expect username and password in
//the POST request.
formElement.querySelector("input[name='email']")?.setAttribute("name", "username");
formElement.submit();
});
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayInfo={social.displayInfo}
displayWide={realm.password && social.providers !== undefined}
headerNode={msg("doLogIn")}
formNode={
<div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}>
<div
id="kc-form-wrapper"
className={clsx(
realm.password &&
social.providers && [getClassName("kcFormSocialAccountContentClass"), getClassName("kcFormSocialAccountClass")]
)}
>
{realm.password && (
<form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post">
<div className={getClassName("kcFormGroupClass")}>
{(() => {
const label = !realm.loginWithEmailAllowed
? "username"
: realm.registrationEmailAsUsername
? "email"
: "usernameOrEmail";
const autoCompleteHelper: typeof label = label === "usernameOrEmail" ? "username" : label;
return (
<>
<label htmlFor={autoCompleteHelper} className={getClassName("kcLabelClass")}>
{msg(label)}
</label>
<input
tabIndex={1}
id={autoCompleteHelper}
className={getClassName("kcInputClass")}
//NOTE: This is used by Google Chrome auto fill so we use it to tell
//the browser how to pre fill the form but before submit we put it back
//to username because it is what keycloak expects.
name={autoCompleteHelper}
defaultValue={login.username ?? ""}
type="text"
{...(usernameEditDisabled
? { "disabled": true }
: {
"autoFocus": true,
"autoComplete": "off"
})}
/>
</>
);
})()}
</div>
<div className={getClassName("kcFormGroupClass")}>
<label htmlFor="password" className={getClassName("kcLabelClass")}>
{msg("password")}
</label>
<input
tabIndex={2}
id="password"
className={getClassName("kcInputClass")}
name="password"
type="password"
autoComplete="off"
/>
</div>
<div className={clsx(getClassName("kcFormGroupClass"), getClassName("kcFormSettingClass"))}>
<div id="kc-form-options">
{realm.rememberMe && !usernameEditDisabled && (
<div className="checkbox">
<label>
<input
tabIndex={3}
id="rememberMe"
name="rememberMe"
type="checkbox"
{...(login.rememberMe
? {
"checked": true
}
: {})}
/>
{msg("rememberMe")}
</label>
</div>
)}
</div>
<div className={getClassName("kcFormOptionsWrapperClass")}>
{realm.resetPasswordAllowed && (
<span>
<a tabIndex={5} href={url.loginResetCredentialsUrl}>
{msg("doForgotPassword")}
</a>
</span>
)}
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormGroupClass")}>
<input
type="hidden"
id="id-hidden-input"
name="credentialId"
{...(auth?.selectedCredential !== undefined
? {
"value": auth.selectedCredential
}
: {})}
/>
<input
tabIndex={4}
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
name="login"
id="kc-login"
type="submit"
value={msgStr("doLogIn")}
disabled={isLoginButtonDisabled}
/>
</div>
</form>
)}
</div>
{realm.password && social.providers !== undefined && (
<div
id="kc-social-providers"
className={clsx(getClassName("kcFormSocialAccountContentClass"), getClassName("kcFormSocialAccountClass"))}
>
<ul
className={clsx(
getClassName("kcFormSocialAccountListClass"),
social.providers.length > 4 && getClassName("kcFormSocialAccountDoubleListClass")
)}
>
{social.providers.map(p => (
<li key={p.providerId} className={getClassName("kcFormSocialAccountListLinkClass")}>
<a href={p.loginUrl} id={`zocial-${p.alias}`} className={clsx("zocial", p.providerId)}>
<span>{p.displayName}</span>
</a>
</li>
))}
</ul>
</div>
)}
</div>
}
infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
/>
);
}

View file

@ -1,191 +0,0 @@
// Copy pasted from: https://github.com/InseeFrLab/keycloakify/blob/main/src/pages/Register.tsx
import { clsx } from "keycloakify/tools/clsx";
import { type PageProps, defaultClasses } from "keycloakify/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Register(props: PageProps<Extract<KcContext, { pageId: "register.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { url, messagesPerField, register, realm, passwordRequired, recaptchaRequired, recaptchaSiteKey } = kcContext;
const { msg, msgStr } = i18n;
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("registerTitle")}
formNode={
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("firstName", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="firstName" className={getClassName("kcLabelClass")}>
{msg("firstName")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="firstName"
className={getClassName("kcInputClass")}
name="firstName"
defaultValue={register.formData.firstName ?? ""}
/>
</div>
</div>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("lastName", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="lastName" className={getClassName("kcLabelClass")}>
{msg("lastName")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="lastName"
className={getClassName("kcInputClass")}
name="lastName"
defaultValue={register.formData.lastName ?? ""}
/>
</div>
</div>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="email" className={getClassName("kcLabelClass")}>
{msg("email")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="email"
className={getClassName("kcInputClass")}
name="email"
defaultValue={register.formData.email ?? ""}
autoComplete="email"
/>
</div>
</div>
{!realm.registrationEmailAsUsername && (
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("username", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="username" className={getClassName("kcLabelClass")}>
{msg("username")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="text"
id="username"
className={getClassName("kcInputClass")}
name="username"
defaultValue={register.formData.username ?? ""}
autoComplete="username"
/>
</div>
</div>
)}
{passwordRequired && (
<>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("password", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="password" className={getClassName("kcLabelClass")}>
{msg("password")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input
type="password"
id="password"
className={getClassName("kcInputClass")}
name="password"
autoComplete="new-password"
/>
</div>
</div>
<div
className={clsx(
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("password-confirm", getClassName("kcFormGroupErrorClass"))
)}
>
<div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="password-confirm" className={getClassName("kcLabelClass")}>
{msg("passwordConfirm")}
</label>
</div>
<div className={getClassName("kcInputWrapperClass")}>
<input type="password" id="password-confirm" className={getClassName("kcInputClass")} name="password-confirm" />
</div>
</div>
</>
)}
{recaptchaRequired && (
<div className="form-group">
<div className={getClassName("kcInputWrapperClass")}>
<div className="g-recaptcha" data-size="compact" data-sitekey={recaptchaSiteKey}></div>
</div>
</div>
)}
<div className={getClassName("kcFormGroupClass")}>
<div id="kc-form-options" className={getClassName("kcFormOptionsClass")}>
<div className={getClassName("kcFormOptionsWrapperClass")}>
<span>
<a href={url.loginUrl}>{msg("backToLogin")}</a>
</span>
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormButtonsClass")}>
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
type="submit"
value={msgStr("doRegister")}
/>
</div>
</div>
</form>
}
/>
);
}

View file

@ -1,73 +0,0 @@
// Copy pasted from: https://github.com/InseeFrLab/keycloakify/blob/main/src/pages/RegisterUserProfile.tsx
import { useState } from "react";
import { clsx } from "keycloakify/tools/clsx";
import { UserProfileFormFields } from "./shared/UserProfileCommons";
import { type PageProps, defaultClasses } from "keycloakify/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function RegisterUserProfile(props: PageProps<Extract<KcContext, { pageId: "register-user-profile.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { url, messagesPerField, recaptchaRequired, recaptchaSiteKey } = kcContext;
const { msg, msgStr } = i18n;
const [isFomSubmittable, setIsFomSubmittable] = useState(false);
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={messagesPerField.exists("global")}
displayRequiredFields={true}
headerNode={msg("registerTitle")}
formNode={
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<UserProfileFormFields
kcContext={kcContext}
onIsFormSubmittableValueChange={setIsFomSubmittable}
i18n={i18n}
getClassName={getClassName}
/>
{recaptchaRequired && (
<div className="form-group">
<div className={getClassName("kcInputWrapperClass")}>
<div className="g-recaptcha" data-size="compact" data-sitekey={recaptchaSiteKey} />
</div>
</div>
)}
<div className={getClassName("kcFormGroupClass")} style={{ "marginBottom": 30 }}>
<div id="kc-form-options" className={getClassName("kcFormOptionsClass")}>
<div className={getClassName("kcFormOptionsWrapperClass")}>
<span>
<a href={url.loginUrl}>{msg("backToLogin")}</a>
</span>
</div>
</div>
<div id="kc-form-buttons" className={getClassName("kcFormButtonsClass")}>
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonBlockClass"),
getClassName("kcButtonLargeClass")
)}
type="submit"
value={msgStr("doRegister")}
disabled={!isFomSubmittable}
/>
</div>
</div>
</form>
}
/>
);
}

View file

@ -1,70 +0,0 @@
/**
* NOTE: You do not need to do all this to put your own Terms and conditions
* this is if you want component level customization.
* If the default works for you, you can just use the useDownloadTerms hook
* in the KcApp.tsx
* Example: https://github.com/garronej/keycloakify-starter/blob/a20c21b2aae7c6dc6dbea294f3d321955ddf9355/src/KcApp/KcApp.tsx#L14-L30
*/
import { clsx } from "keycloakify/tools/clsx";
import { useRerenderOnStateChange } from "evt/hooks";
import { Markdown } from "keycloakify/tools/Markdown";
import { type PageProps, defaultClasses } from "keycloakify/pages/PageProps";
import { useGetClassName } from "keycloakify/lib/useGetClassName";
import { evtTermMarkdown } from "keycloakify/lib/useDownloadTerms";
import type { KcContext } from "../kcContext";
import type { I18n } from "../i18n";
export default function Terms(props: PageProps<Extract<KcContext, { pageId: "terms.ftl" }>, I18n>) {
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
const { getClassName } = useGetClassName({
"defaultClasses": !doUseDefaultCss ? undefined : defaultClasses,
classes
});
const { msg, msgStr } = i18n;
useRerenderOnStateChange(evtTermMarkdown);
const { url } = kcContext;
if (evtTermMarkdown.state === undefined) {
return null;
}
return (
<Template
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("termsTitle")}
formNode={
<>
<div id="kc-terms-text">{evtTermMarkdown.state && <Markdown>{evtTermMarkdown.state}</Markdown>}</div>
<form className="form-actions" action={url.loginAction} method="POST">
<input
className={clsx(
getClassName("kcButtonClass"),
getClassName("kcButtonClass"),
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonLargeClass")
)}
name="accept"
id="kc-accept"
type="submit"
value={msgStr("doAccept")}
/>
<input
className={clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"))}
name="cancel"
id="kc-decline"
type="submit"
value={msgStr("doDecline")}
/>
</form>
<div className="clearfix" />
</>
}
/>
);
}

View file

@ -7415,7 +7415,7 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
eslint-config-react-app@^7.0.0:
eslint-config-react-app@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4"
integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==
@ -7739,6 +7739,15 @@ evt@^2.4.15:
run-exclusive "^2.2.18"
tsafe "^1.4.3"
evt@^2.4.18:
version "2.4.18"
resolved "https://registry.yarnpkg.com/evt/-/evt-2.4.18.tgz#931012610dcd3bc7c0877d61018a704e9e5511db"
integrity sha512-kMYW3DPrUWvFsOUf3cN1NMdg0MEFYLMLqC7hPSasNs8TOZCOBsDgazr6nXda2iUur/2L6BtRu0oCl2++oGYZxA==
dependencies:
minimal-polyfills "^2.2.2"
run-exclusive "^2.2.18"
tsafe "^1.6.0"
exec-sh@^0.3.2:
version "0.3.6"
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
@ -10432,22 +10441,22 @@ keycloak-js@^21.0.1:
base64-js "^1.5.1"
js-sha256 "^0.9.0"
keycloakify@^6.13.1:
version "6.13.1"
resolved "https://registry.yarnpkg.com/keycloakify/-/keycloakify-6.13.1.tgz#258a6b0d55f7e520bcfec8616aa9f38783c674e8"
integrity sha512-bLrWYomKUodEFWdI0p/Y30FBh4j/LRFUM7di5pxnF/GDC2WGT6QXntid5QK55tkLTUY/GNTWdWN8of2KxdwBjw==
keycloakify@7.0.0-rc.6:
version "7.0.0-rc.6"
resolved "https://registry.yarnpkg.com/keycloakify/-/keycloakify-7.0.0-rc.6.tgz#3bd53be93588b14b6b23b1f01cb12cfb16b73ab3"
integrity sha512-vjMM3fdW1mVemuwCzfEgqKSMMMVfTH8Ti+tI1cq/26L1/G3tv2V0hGrCf9PqOOPSVIxdjQPNeAkOCrPX70h+CQ==
dependencies:
"@octokit/rest" "^18.12.0"
cheerio "^1.0.0-rc.5"
cli-select "^1.1.2"
evt "^2.4.15"
evt "^2.4.18"
make-fetch-happen "^11.0.3"
minimal-polyfills "^2.2.2"
minimist "^1.2.6"
path-browserify "^1.0.1"
react-markdown "^5.0.3"
rfc4648 "^1.5.2"
tsafe "^1.4.3"
tsafe "^1.6.0"
zod "^3.17.10"
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
@ -13076,7 +13085,7 @@ react-app-polyfill@^3.0.0:
regenerator-runtime "^0.13.9"
whatwg-fetch "^3.6.2"
react-dev-utils@^12.0.0:
react-dev-utils@^12.0.1:
version "12.0.1"
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73"
integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==
@ -13199,10 +13208,10 @@ react-refresh@^0.11.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
react-scripts@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.0.tgz#6547a6d7f8b64364ef95273767466cc577cb4b60"
integrity sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==
react-scripts@5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003"
integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==
dependencies:
"@babel/core" "^7.16.0"
"@pmmmwh/react-refresh-webpack-plugin" "^0.5.3"
@ -13220,7 +13229,7 @@ react-scripts@5.0.0:
dotenv "^10.0.0"
dotenv-expand "^5.1.0"
eslint "^8.3.0"
eslint-config-react-app "^7.0.0"
eslint-config-react-app "^7.0.1"
eslint-webpack-plugin "^3.1.1"
file-loader "^6.2.0"
fs-extra "^10.0.0"
@ -13237,7 +13246,7 @@ react-scripts@5.0.0:
postcss-preset-env "^7.0.1"
prompts "^2.4.2"
react-app-polyfill "^3.0.0"
react-dev-utils "^12.0.0"
react-dev-utils "^12.0.1"
react-refresh "^0.11.0"
resolve "^1.20.0"
resolve-url-loader "^4.0.0"
@ -15103,6 +15112,11 @@ tsafe@^1.4.3:
resolved "https://registry.yarnpkg.com/tsafe/-/tsafe-1.4.3.tgz#a98ce83616f0d9c01e3c6167a2ead45ba455b2ae"
integrity sha512-KjCdgjIqsbKW9oeJGSMVC23jhWm/VXJwkaZ7jffo/WaTioLGTHJqliHe9dECEVzIACNVNs/fwtKwU8wWK4jY4g==
tsafe@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/tsafe/-/tsafe-1.6.0.tgz#48a9bd0a4c43df43d289bdfc1d89f0d7fffbd612"
integrity sha512-wlUeRBnyN3EN2chXznpLm7vBEvJLEOziDU+MN6NRlD99AkwmXgtChNQhp+V97VyRa3Bp05IaL4Cocsc7JlyEUg==
tsconfig-paths@^3.14.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
@ -15223,10 +15237,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
typescript@~4.8.0:
version "4.8.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
typescript@~4.7.0:
version "4.7.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
uglify-js@^3.1.4:
version "3.17.4"